Skip to content

Repository files navigation

NEXT

⚠ Pre-alpha — do not use with funds you cannot afford to lose. Not audited. Mainnet support exists but has not been independently reviewed. Test on Nile first. See SECURITY.md + docs/security-model.md for the honest threat model.

   ███╗   ██╗ ███████╗ ██╗  ██╗ ████████╗
   ████╗  ██║ ██╔════╝ ╚██╗██╔╝ ╚══██╔══╝
   ██╔██╗ ██║ █████╗    ╚███╔╝     ██║
   ██║╚██╗██║ ██╔══╝    ██╔██╗     ██║
   ██║ ╚████║ ███████╗ ██╔╝ ██╗    ██║
   ╚═╝  ╚═══╝ ╚══════╝ ╚═╝  ╚═╝    ╚═╝
   the wallet for terminal natives

A terminal-native crypto wallet. Black aesthetic, vim-keyed, single binary, no Electron. Built for DeFi power users, on-chain analysts, and contract developers who'd rather live in a TTY than click through a browser extension.

Status: v0.10.0 — pre-1.0. Tron mainnet + Nile testnet. Stake 2.0, SR voting, multi-wallet, multi-token portfolio, market screen, watch-only, themes. See docs/ROADMAP.md for the path to v1.0.0.

Do not use with significant funds yet. Audit the keystore yourself. Hardware wallet support lands in v0.12.


Why

mainstream wallets NEXT
Interface Electron / browser ext / mobile terminal (TUI + CLI)
Binary size 100-300 MB ~12 MB
Memory zeroize usually no yes (Zeroizing<Vec<u8>> everywhere)
Bandwidth/energy preview "estimated gas" exact ALL-OR-NOTHING burn calc
Cross-network detection none auto-probe other network on empty wallet
Theme dark mode toggle runtime TOML themes (4 built-in)
dApp browser yes no (intentional — sign tx via WC instead, v0.13)
Vim keys no yes

If those tradeoffs sound right to you, read on.


Quickstart

git clone <repo> && cd next-wallet
cargo build --release
sudo cp target/release/nxt /usr/local/bin/   # or just symlink

First time:

nxt import --name main      # paste your existing 12/24-word mnemonic
                            # OR
nxt init --name main        # generate a fresh wallet (writes mnemonic to terminal)

nxt --network nile balance  # quick connectivity check on testnet
nxt                         # launch the TUI

Daily use:

nxt                         # TUI — most things live here
nxt balance --json          # one-shot CLI for scripting
nxt send 50 USDT TXxxx... --dry-run
nxt vote witnesses --active
nxt watch add justin TR7N... --network mainnet  # tracking a 3rd-party address

For the full subcommand reference, see docs/cli.md.


What's in v0.10.0

Core wallet ops — init / import / send / receive / history / address book

Multi-token portfolio

  • 6 curated mainnet TRC20 (USDT/USDD/USDC/JST/WIN/BTT/SUN)
  • Custom tokens via [[tokens.custom]] in ~/.config/next/config.toml
  • Live USD valuation for stablecoins + fetchable assets

Multi-wallet

  • Each wallet in its own encrypted keystores/{name}.toml
  • Picker at launch when 2+ wallets exist; switch any time via ^p
  • Per-wallet preferred network (Nile-test wallet auto-loads on Nile, etc)

Stake 2.0

  • Freeze/unfreeze TRX into bandwidth or energy pools
  • 14-day cooldown countdown with auto-detect of testnet shorter cooldown
  • Withdraw expired unstakes
  • ALL-OR-NOTHING fee preview (no other wallet shows this correctly)

SR voting

  • Distribute TP across SRs, claim accumulated rewards
  • Auto-prune stale on-chain votes (deactivated SRs)
  • 27-active filter on the witness list

Market

  • 15 symbols tracked (Tron ecosystem + BTC/ETH/SOL/BNB/XRP/DOGE/ADA/AVAX/LINK/DOT)
  • Sortable full table (m key)
  • Configurable dashboard rows

Themes — 4 built-in (default / matrix / phosphor / cyber) + user TOML themes

Watch-only — track external addresses without holding their keys

Security — Argon2id KDF, XChaCha20-Poly1305 with AAD, HMAC body checksum, zeroized password / mnemonic / seed buffers throughout. See docs/security-model.md for the threat model.


Keymap

GLOBAL
  ^p       command palette (fuzzy-search anything)
  ^c       quit

DASHBOARD
  s        send                 m  market screen
  r        receive              z  stake
  t        history              V  voting
  ?        help                 R  refresh all
  n / x    cross-network banner: switch / dismiss

LISTS (history, voting, market, contacts, picker)
  j / k    navigate             g / G  jump first / last
  enter    select / open

TUI ONLY
  esc      back / cancel
  tab      switch wallet (from unlock screen)

Layout

~/.config/next/
├── config.toml           network, RPC URLs, theme, dashboard symbols
├── contacts.toml         address book (shared across wallets)
├── watch.toml            watch-only entries
├── keystores/
│   ├── main.toml         your real wallet (encrypted)
│   └── test-nile.toml    nile testnet wallet
└── themes/
    ├── matrix-bright.toml
    └── ...

~/.local/state/next/
└── next.log              tracing log (TUI mode never writes to stdout)

Architecture (one paragraph)

Single Rust crate, single nxt binary. core/ has chain-agnostic primitives (secret/keystore/mnemonic/hd/account/config). tron/ implements the Chain trait against TronGrid REST. cli/ and tui/ share the same handler layer through cli::dispatch::execute. The TUI runs on tokio::current_thread with a select! loop over keyboard / fetch-channel / animation tick. RPC calls spawn as detached tasks that report back via mpsc::UnboundedChannel — the event loop never blocks. Argon2id runs on spawn_blocking so the spinner stays alive during unlock. Full module graph in docs/architecture.md.


Roadmap to v1.0.0

Version Theme Days
0.10.1 polish + docs (this) 2
0.11 JustSwap (DEX) 4-5
0.12 Hardware wallet (Ledger) 4
0.13 WalletConnect v2 7
0.14 Multi-chain (EVM) 7
0.15 NFT + approvals manager 4-5
0.16 1.0 prep 3
1.0.0 stable

Detailed deliverables per version: docs/ROADMAP.md.


Building

Requires Rust 1.85+ (edition 2024).

cargo build --release
cargo test --lib --tests          # 49 tests, all offline
cargo audit                       # 1 transitive CVE in time crate, not exploitable
                                  # in our usage path — see docs/security-model.md

Contributing

The code style is documented in AGENTS.md. Key conventions:

  • Feature flags / backwards-compat shims forbidden — change the code instead
  • Comments document why, not what — well-named identifiers do that
  • No tests for things that can't go wrong (trust internal types and framework guarantees)
  • One-liner Cargo features instead of cfg-gated code paths

License

Dual-licensed under MIT or Apache-2.0.

About

Terminal-native crypto wallet for Tron — TUI + CLI, multi-wallet, Stake 2.0, SR voting, themes, glitch animations. Rust + ratatui.

Topics

Resources

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages