Tenzro
Custody and wallet

Wallet.

Multi-asset wallet for TNZO, USDC, USDT, ETH, SOL, BTC. History, address book, nonce management, state sync.
STATUS
Testnet
CRATE
tenzro-wallet
STABILITY
Stable
TYPE
Component
01

Operations

tenzro wallet create
tenzro wallet balance --address 0x...
tenzro wallet send --to 0x... --amount 10
tenzro wallet list
02

Self-custody

The node never holds the secret. A local sealed key holds the Ed25519 + ML-DSA-65 keypair; the raw 32-byte Ed25519 public key is the account address. wallet send builds the canonical transaction hash locally, signs both legs, and submits the pre-signed transaction — the node verifies the Ed25519 and ML-DSA-65 signatures and rejects a submit that omits either.

tenzro wallet create-local
tenzro wallet import-local <ed25519-secret-hex>
tenzro wallet send <to> <amount> --self-custody
03

Transaction builder

Type-safe builder with auto gas estimation per transaction type. Per-address sequential nonces with replay protection.

04

History

Full lifecycle: Created → Pending → Confirmed → Finalized / Failed / Dropped. Filtering and pagination.

05

Address book

Contact management with name resolution, tag filtering, persistent JSON storage.

06

USD pricing

A priced portfolio reads USD values from the node's oracle rather than a third-party price API, so the figures match what the network settles against. tenzro_getPrice returns the oracle price for a token; the wallet multiplies it by the on-chain balance to build the portfolio total.

tenzro_getPrice({ symbol: "TNZO" })
// -> { symbol, price_usd, decimals, updated_at, source }
07

Canton holdings

Canton is provided by the RPC operator, not the protocol: it exists only when the operator's node has a Canton validator bound. tenzro_canton_health is public and is the gate — it reports whether Canton is available on the node at all.

Holdings are tenant-scoped by an operator-issued API key. The operator provisions a per-tenant Canton party and binds it to the key; the wallet presents the key in the X-Tenzro-Api-Key header and reads the party's Canton Coin (CIP-56) balance and Amulet contracts.

# public gate  no key
tenzro_canton_health()
// -> { alive, ready, ready_detail, version }

# tenant-scoped  X-Tenzro-Api-Key header
tenzro_canton_coinBalance()
// -> { party, amulet_count, total_initial_amount, token_standard }
tenzro_listDamlContracts({
  template_ids: ["#splice-amulet:Splice.Amulet:Amulet"]
})
Related
← All docs