取消质押在 SDK 里是一台状态机
在 Cosmos SDK 的链上质押一笔代币,常被理解成”随时可以拿回”。官方 x/staking 模块文档展示的图景更严格:验证者有三个状态(Unbonded、Unbonding、Bonded),其中 Unbonded 与 Unbonding 合称 Not Bonded;状态切换在每个区块末尾的 validator set 更新里执行,规则有一条硬边——验证者可以在三个状态之间任意迁移,唯独不允许从 Bonded 直接跳到 Unbonded,必须途经 Unbonding。这条边禁是整套设计的钥匙:任何退出都被强制穿过一段有长度的中间态,而中间态就是安全惩罚的作用空间。
三态各自的账
按 README 的口径:Unbonded 的验证者不在活跃集,不出块、不领奖励,但能继续接受委托;Bonded 的验证者靠足够的绑定代币在 EndBlock 自动进入活跃集,出块领赏、可被罚没,其委托者一旦发起解绑,就要等满 UnbondingTime——一个链自身定义的参数——期间若该验证者在代币仍绑定期间犯下的过错被揭发,这笔还没走完流程的委托依然可被罚;Unbonding 则发生在验证者退出活跃集时,无论出于自愿还是罚没、监禁、墓碑,其全部委托统一开始解绑,等满 UnbondingTime 后代币才从 BondedPool 搬回委托人账户。README 里有一条单向棘轮值得单列:墓碑(tombstoning)是永久性的——一旦被墓碑,该验证者的共识密钥在这条链上永远不能复用。监禁(Jail)则是可逆的移除:被监禁的验证者从共识集与按算力排序的索引中摘出,条件满足后释放回索引。
解绑不是一笔即时退款
用户侧发 MsgUndelegate,SDK 并不直接退钱,而是做三件事:生成一个带 unbondingId 的 UnbondingDelegation 条目、按该条目映射进索引,再把”完成时间 = 当前时间 + UnbondingTime”的记录压进按时间排序的 UnbondingDelegationQueue;队列元素到期后(README 的 Complete Unbonding 一节),条目被删除、代币从 NotBondedPool 划回委托人账户。排队期的委托并非没有暴露:README 的 Slash Unbonding Delegation 一节写明,验证者被罚时,其名下每一条解绑条目都按 slashFactor 追罚,罚没基数取该条目的 InitialBalance 而非缩水后的现额,并且封顶不允许把余额减成负数——已到期完成的解绑不再受罚。换句话说,UnbondingTime 不是走个过场:它是”把追溯罚没覆盖进退出窗口”的安全预算,链要留出足够长的时间让双签、轻客户端攻击这类过错在钱走掉之前被揭发。README 的参数表也提示了这一层是全局可调的:UnbondingTime、MaxValidators(示例 100)、MaxEntries(示例 7)等都是治理参数,示例值只是 SDK 文档口径。

三种退出动作与一个防跳反规则
SDK 给了三条路径。其一,正常解绑即上面那台队列。其二,MsgCancelUnbondingDelegation 允许委托人撤销尚未完成的解绑条目、把币重新委托回原验证者——排队期反悔是协议内置能力,不必重新走入金。它的前提是”尚未完成”:条目到期完成、代币划回之后,撤销窗口即关闭。README 的解绑流程注里还藏着一处连带:若解空的是验证者的自委托,该验证者会同时被监禁——自委托是验证者身份的安全抵押,抽干它等于退出。其三,MsgBeginRedelegate 允许”即时”换验证者:委托份额立刻转给目的验证者,而原验证者名下的那笔绑定进入队列,等满 UnbondingTime 后由 EndBlocker 自动完成——即时的是仓位切换,不是安全窗口的消失。防跳反规则(README 称防 redelegation hopping)限制了一种套利:如果委托人已经有一笔尚未成熟、目的地是验证者 X 的重委托,就不能再发起一笔以 X 为出发点的新的重委托。这挡住了把同一批币在多个验证者间快速搬运、反复领新仓奖励的做法。
份额账本与被忽略的细节
委托关系用份额表达:验证者持有代币总量 T、总份额 S,委托人持 S_i,对应权利为 T × S_i / S。罚没直接削减验证者的 T 而非回收份额,因此一次罚没摊薄每一枚份额的含金量,这是”质押收益跟随验证者表现”的账面机制。委托额度上限(MaxEntries)与队列时间戳的 UTC 排序这类细节,说明模块的每一个用户动作最终都落在按时间或按规模排序的索引上——链的退出行为因此是可查询、可预测的,而不是操作员裁量。对委托人的现实含义是:把 UnbondingTime 当作资金可用性的合同条款读,把 slashFactor 与 InitialBalance 追罚当作退出期的尾部风险读;这两项都在治理参数与协议规则里写得明明白白,不依赖任何一方的信用。
风险提示:各链的 UnbondingTime、参数上限与罚没规则由治理决定并可能调整,本文以 Cosmos SDK 官方模块文档记载为准,不构成投资建议。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。