Accounts
The job: one place that answers “what is my address on Base” and “give me something that can sign on Solana”, for every account the user has.
In the kit:
| Package | Role |
|---|---|
wallet-* |
One package per chain family. Its manager derives accounts and knows how to read, build, sign and send on that chain |
kit |
The Wallet object: register the chains you support, then getAccount('eip155:8453'). Policies wrap every account it hands out |
keyring |
Several accounts from one seed, plus imported seeds and keys, in one list across chains (guide) |
Chains are named by CAIP-2 ids: eip155:1 for Ethereum,
solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp for Solana, and so on. Register every EVM network
under its exact id with its own RPC (eip155:1, eip155:8453, …): an EVM manager talks to the
network of its RPC only, so one eip155 registration would send Base transactions to Ethereum
(Chain ids). Non-EVM chains have one network each
and register by namespace (solana, ton, tron, bip122, near).
Start with the Quickstart: it creates accounts on seven chains in about twenty lines.
Decisions you make:
- Which chains you register. Each
wallet-*package you install adds bundle size and needs its own data sources (Networks and RPC). - How many accounts you show. Most wallets show account 0 and let the user add more. Recovering a wallet means scanning accounts 0, 1, 2… until one has no history.
- Read-only accounts. A watched address (no key) is useful for portfolios and for a “watch wallet” feature. Protocol reads like balances and approvals work on it; writes do not.
- Dispose. Call
wallet.dispose()when the user locks the app: it wipes the seed from the wallet and from every manager, and the wallet refuses any later call. Build a new one on unlock.