LND 的六种钱包状态:State 服务与 walletunlocker 四步初始化的准确读法 图 1
LND 的六种钱包状态:State 服务与 walletunlocker 四步初始化的准确读法 · 图 1

LND 从装好到能被 RPC 调用,中间隔着一条很多人从没正视过的状态流水线:种子还没生成、钱包已创建但锁着、刚解锁、RPC 服务器半激活、完全就绪。LND v0.19.0-beta 把这条流水线做成了一个独立的小服务叫 State,配 walletunlocker 服务管初始化四件事。看懂这两处定义,日常运维里一类很难解释的现象——脚本连不上、健康检查误报、容器编排把节点判死——就有了精确答案。

六个状态词,先记住顺序

State 服务的 WalletState 枚举一共六个取值。NON_EXISTING 表示钱包还没初始化,这是全新数据目录的样子。LOCKED 表示钱包已存在但加密锁着,需要口令解锁。UNLOCKED 表示口令已经通过、钱包解开,但 RPC 服务器还没就绪。RPC_ACTIVE 表示服务器起来了但还没完全准备好接调用。SERVER_ACTIVE 才是可以干活的状态。还有一个特殊的 WAITING_TO_START,编号 255,用于集群模式下等锁的实例。查询入口两个:GetState 拿一次当前值,SubscribeState 订阅变化流,且订阅建立时会立刻先推一次当前状态,不怕订阅前错过事件。

LND 的六种钱包状态:State 服务与 walletunlocker 四步初始化的准确读法 图 2
LND 的六种钱包状态:State 服务与 walletunlocker 四步初始化的准确读法 · 图 2

初始化四连:GenSeed、InitWallet、UnlockWallet、ChangePassword

这四个 RPC 都在 walletunlocker 服务上。GenSeed 生成 24 词 aezeed 种子,可选传入 aezeed_passphrase 给种子再加一层加密,也可以自带 seed_entropy——必须是 16 字节、来自密码学安全随机源的熵,用于可复现地派生种子。InitWallet 落盘钱包,密码要求至少 8 个字符,接受 24 词种子,附带 recovery_window 控制地址找回窗口,还有 channel_backups 参数:数据丢失后重建节点时,把通道备份塞进来,节点会在链上恢复之后走数据丢失恢复协议去追在途通道资金。UnlockWallet 解锁,同样可以带 recovery_window 和通道备份。ChangePassword 换锁,注意它有个 stateless_init 参数,语义与是否重新签发会话类 macaroon 相关,自动化脚本里要按文档明示的行为处理,不能凭感觉传值。

脚本层面最常见的三类误判

第一类是把端口通了当成节点可用。LND 在钱包锁着的时候 gRPC 端口就已经监听了,此时任何业务调用都会被拒,正确姿势是先 GetState 或 SubscribeState,等到 SERVER_ACTIVE 再放流量。第二类是健康检查配置用 TCP 探针,锁着、同步中、半激活全判成功,偏偏死锁那种判失败。改进方向就是用 State 接口的返回值代替端口探测。第三类是恢复流程里忘传 recovery_window 和通道备份,节点表面上干净启动,实际地址扫少了、在途通道没触发恢复协议,钱悄悄留在对面手里。InitWallet 和 UnlockWallet 都接受这两个参数,备份恢复演练时应当把参数一并演练。

与恢复进度查询的边界

State 管的是钱包与服务器生命周期,不覆盖钱包扫描进度本身;扫描进度是另一组接口负责的领域,两者别混用。把 State 当成红绿灯、把恢复类接口当成里程表,各查各的,监控面板就清楚了。

换密码时最容易忽视的一步

ChangePassword 换的是解锁钱包用的口令,而 aezeed 种子本身并不随之改变。也就是说,换完密码后,原来那份 24 词备份依然能完整恢复节点资金,新密码只保护新的实例。反过来说,若原始备份从未加过 aezeed_passphrase,后来才想补一层,也应当清楚:口令加密的是种子展开方式,不能替代备份本身的保管纪律。做恢复演练时,用换过密码的新实例走一遍种子恢复,确认窗口参数与通道备份都按预期生效,才算闭环。

脚本等待就绪的正确姿势

自动化里等节点就绪,推荐订阅 SubscribeState:建立订阅时服务端会立刻推送当前状态,因此不存在订阅前错过事件的问题,随后状态每变一次推一次,直到 SERVER_ACTIVE。不想维护长连接就用轮询 GetState 加退避间隔,两种做法都比盯着端口连通性可靠。切记把超时上限设置得足够宽容,冷启动带钱包恢复的节点走完全部状态可能很久,把恢复扫描的耗时算进超时预算里,能避免一半的假故障报警。

风险提示:涉及种子与密码的操作请在离线与可信环境中完成,任何参数配置都应先在测试网验证;本文不构成任何投资建议或资产安全承诺。