账户
账户(account)是绑定到钱包单一种子内某条BIP32派生路径的标签。钱包可持有任意数量的账户,钱包初始化时即存在一个名为default的账户。
该记录包含两个字段:标签和父派生路径(libwallet/src/types.rs:992)。标签是存储键(impls/src/backends/lmdb.rs:823),因此创建后不可更改。钱包存储的所有币相关数据均以路径为键。
账户包含的内容
| 仅限单个账户 | 整个钱包共享 |
|---|---|
| 输出及由此计算的余额 | 种子文件与恢复助记词 |
| 交易日志条目,每个账户从0开始编号 | 密码 |
| 下一个子派生索引 | saved_txs/中已最终确认的交易 |
| 最后确认的区块高度 | 飞行中的slate缓存 |
| epicbox与支付证明地址 | 最后扫描的区块高度 |
余额摘要、输出(output)列表和交易列表均读取单个账户(libwallet/src/internal/updater.rs:479)。交易日志id在每个账户内从0重新计数(impls/src/backends/lmdb.rs:721),因此id仅在持有它的账户内唯一。
epic-wallet address打印单个账户的标识符,每个账户有其自己的(controller/src/command.rs:1360)。参见地址。
派生路径
default是一个深度为2、所有子索引均为零的标识符。账户n取当前最高的第一级索引加一(libwallet/src/internal/keys.rs:81),因此路径按创建顺序分配且不会复用。
accounts方法以十六进制返回标签和路径标识符,格式为一个深度字节后跟四个大端序子索引:
[
{
"label": "default",
"path": "0200000000000000000000000000000000"
}
]
采集自2026-08-26运行4.0.0的钱包。第二个创建的账户返回
0200000001000000000000000000000000
(api/src/owner_rpc_s.rs:99).
每条账户路径下挂有两个分支。输出(output)键为m/<n>/0/<index>,地址键为m/<n>/1/<index>,通过blake2b哈希为secp256k1机密(libwallet/src/address.rs:31)。持有种子的工具无需钱包数据库即可为任意账户派生两者。标签是数据库独有的唯一信息。
命令行操作
epic-wallet account # 列出每个标签及其派生路径
epic-wallet account -c savings # 创建一个
epic-wallet -a savings info # 对其执行任意命令
-a默认值为default(src/cmd/wallet_args.rs:81),在钱包打开时生效,因此它为该次调用选定账户。列表打印两列:名称和父BIP-32派生路径(controller/src/display.rs:431)。
转账使用的账户
发送从已选定的账户-a花费。在Owner API上,InitTxArgs中的src_acct_name为单次调用指定账户,不在accounts中的标签解析为活跃账户(libwallet/src/api_impl/owner.rs:383)。传入accounts方法返回的标签。
通过文件或http接收将资金记入已选定的账户-a。Foreign API通过receive_tx上的dest_acct_name接受该参数。
通过epicbox接收将资金记入监听器打开钱包时处于活跃状态的账户(impls/src/adapters/epicbox.rs:513)。该监听器使用该账户的地址订阅,因此一个进程服务于一个账户。
在同一钱包的两个账户之间转移资金使用self传输方式,其中-d指定目标账户:
epic-wallet -a savings send -m self -d default 1.5
参见传输方式。
刷新与扫描
refresh_from_node更新活跃账户(libwallet/src/internal/updater.rs:245)。scan遍历所有账户,因为它通过每个账户携带的派生路径恢复输出(libwallet/src/internal/scan.rs:376)。扫描游标是全钱包范围的,而最后确认高度是按账户记录的,因此扫描完成后每个账户的高度由其自身的输出设定。
恢复后操作
从助记词恢复的钱包只恢复派生路径,不恢复标签。default保留其名称,其他所有发现的路径按发现顺序依次标记为account_1、account_2等(libwallet/src/internal/scan.rs:512)。资金落入其派生所在的分支。
参见恢复不会带回的内容。