一个由两把钥匙拆开的问题
以太坊质押天然有两类角色:掌握活跃签名密钥的运营方,负责日常出 attest 和出块;掌握提款凭证的资金方,决定收益流向。矛盾藏在一个不对称里——自愿退出消息只能由活跃密钥签名,而触发退出符合资金方利益。运营方跑路或怠工时,资金方手里连一份能提交的退出文件都没有。行业解法是预先签署:让运营方在设立关系时预签一批未来的退出声明,资金方保管。
麻烦出在签名域。为防硬分叉后一条消息在两条链上重放,共识层给每类消息的签名域编入分叉版本,且状态里只保留当前与上一个分叉版本——意味着任何预签的退出声明只对最近两次升级有效。链每升级两轮,资金方保管的退出文件全部作废,得找运营方重签一轮。预签无限张?状态机不认。定期重签?等于要求一个本来就不信任的关系永远保持在线。
把有效域钉死在一个版本
EIP-7044 的解法只改一行状态转换逻辑:计算退出消息签名域和对象根时,不再用当前分叉版本,而固定使用 Capella 分叉版本。卡佩拉是 2023 年上海升级在共识层的名字,从它之后的所有分叉里,退出签名一律按这个老版本域验证——预签的退出从此永久有效。选择方向也反直觉:不是向后兼容的滚动窗口,而是把时间冻结在过去。理由在提案的动机段写得坦率:防分叉重放的初衷不值得用运营复杂度的无上界来换——即便旧退出声明真在两条分叉链都被接受,也不危及资金,质押者可以在一侧或两侧重新质押,代价是重复退出而非丢币。
那脚兼容性刹车
状态机向后兼容,预期却不兼容,规范专门留了一段警告:已经在用 Deneb 分叉域预签、并指望它们继续有效的用户,会发现自己手里的文件突然作废——因为验证规则已改回认 Capella 域。提案要求这类用户改用新版工具按锁定域重新签一遍。这是把时间开关从未来拨回过去的必然代价:谁在切换前抢跑了预签,谁就得回炉。此后新预签的退出声明在任何未来分叉都合法,重签循环终结。
顺带一提,退出消息本身不需要执行层改动,也很快有了不用签名方参与的替代通道——同属上海之后路线图的 EIP-7002 让执行层提款凭证的持有者直接在链上触发退出,两条路线一硬一软互补:预签退出覆盖活跃密钥方配合的场景,执行层触发覆盖资金方手里只有提款地址的场景。
快速问答
问:锁在卡佩拉会不会让退出在分叉链间可重放? 答:理论上可重放,提案明确接受了这点:重放后果是提前退出而非资产损失,权衡后换来运营可行。
问:这影响自动退出以外的消息吗? 答:不影响。改动只针对自愿退出这一类消息的验证域,其余消息类型仍用现行分叉版本域。
问:资金方如何自己触发退出而不依赖运营方? 答:在提款凭证升级到带执行层触发能力的版本后,可用提款地址在链上直接排队退出,这条通道与预签退出并行存在,互不冲突。
一条直觉线
密码学协议里的『有效期』多数是为防重放而设的栅栏,但栅栏拦贼的同时也拦自家人。EIP-7044 是一次教科书式的最小信任评估:先量清楚重放的损害上限,再决定栅栏修多高——损害封顶的场合,永久通行证比无限次换证便宜。
风险提示:本文介绍质押机制与协议升级,不构成投资建议;设计退出流程前请核对所用客户端与工具的签名域版本。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。