跳到主要内容

账户

账户是绑定到钱包单一种子内某个BIP32派生路径的标签。钱包可持有任意数量的账户,钱包初始化时即存在一个名为default的账户。

该记录包含两个字段:标签和父派生路径(libwallet/src/types.rs:997)。标签是存储键(impls/src/backends/lmdb.rs:830),因此创建后不可更改。钱包存储的所有币相关数据均以路径为键。

账户包含的内容​

仅限单个账户整个钱包共享
输出及由此计算的余额种子文件与恢复助记词
交易日志条目,每个账户从0开始编号密码
下一个子派生索引saved_txs/中已最终确认的交易
最后确认的区块高度飞行中的slate缓存
epicbox与支付证明地址最后扫描的区块高度

余额摘要、输出(output)列表和交易列表均读取单个账户(libwallet/src/internal/updater.rs:475)。交易日志id在每个账户内从0重新计数(impls/src/backends/lmdb.rs:727),因此id仅在持有它的账户内唯一。

epic-wallet address打印一个账户的标识符,每个账户都有其自己的(controller/src/command.rs:1360)。参见地址。

派生路径​

default是一个深度为2、所有子索引均为零的标识符。账户n取当前最高的第一级索引加一(libwallet/src/internal/keys.rs:81),因此路径按创建顺序分配,且不会重复使用。

accounts方法以十六进制返回标签和路径标识符,格式为一个深度字节后跟四个大端序子索引:

[
{
"label": "default",
"path": "0200000000000000000000000000000000"
}
]

采集自运行4.0.0于2026-08-26的钱包。第二个创建的账户返回 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上,src_acct_name在InitTxArgs中为单次调用指定账户名,不在accounts中的标签将解析为活跃账户(libwallet/src/api_impl/owner.rs:383)。传入accounts方法返回的标签。

通过文件或http接收将款项记入-a选定的账户。Foreign API通过dest_acct_name在receive_tx上接受该参数。

通过epicbox接收将款项记入监听器打开钱包时处于活跃状态的账户(impls/src/adapters/epicbox.rs:520)。该监听器使用该账户的地址进行订阅,因此一个进程只服务一个账户。

在同一钱包的两个账户之间转移价值使用self传输方式,其中-d指定目标账户:

epic-wallet -a savings send -m self -d default 1.5

参见传输方式。

刷新与扫描​

refresh_from_node更新活跃账户(libwallet/src/internal/updater.rs:241)。scan遍历每个账户,因为它通过每个账户携带的派生路径恢复输出(libwallet/src/internal/scan.rs:376)。扫描游标是全钱包范围的,而最后确认高度是按账户记录的,因此扫描完成后每个账户的高度由其自身的输出设定。

恢复后操作​

从助记词恢复的钱包只恢复派生路径,不恢复标签。default保留其名称,其他所有发现的路径按发现顺序依次标记为account_1、account_2等(libwallet/src/internal/scan.rs:512)。资金落入其派生所在的分支。

参见恢复不会带回的内容。

下一步​