以太坊社区关于上海升级提现支持的介绍:https://ethereum.org/en/staking/withdrawals/

上海升级主要合并了 EIP4895 StakedETH 的提现能力,当前已经在 Sepolia 测试网合并,Goerli 和 主网上线日期待定。上海升级是即巴黎升级(The Merge https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/paris.md)后的一次重大更新,当前ETH网络中 stake 了超过 16M 枚ETH,分布在 50w+ 个validator中。其中不凡是在 2020 年已经参与质押的,允许提现后预计可能对 ETH 价格造成一定压力。

Untitled

上海升级内容:

https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/shanghai.md

EIP-4895

没有使用传统的 Transaction 类型作为提现交易,而是在共识层上定义了新的指令 withdrawal 。以此降低系统复杂度,减小出错的概率。

指令的具体编码格式为:[index, validator_index, address, amount]。多个 withdrawl 合并打包成为 withdrawls,用于计算科验证的 withdrawls root。

Staking withdrawals

提现操作由需要 validator 配置好提现地址,并签一个 "voluntary exit” 消息并且把消息广播到 beacon 链上,然后 beacon 链将根据一个 “Sweep” 的规则按计划将 ETH 提现。

sweep

  1. 将所有 validator 编好序列,作为一个环形队列
  2. 每次出块前,作为 proposer 的节点将从队列起点依次检查各 validator 是否满足提现条件,如果满足则构建一个提现指定到块里,每个块最多接收16笔提现。提现条件满足一下3点:
    1. validator 已经设置了提现地址
    2. validator 设置为可提现,或者已经退出了 stake 竞选
    3. 如果validator没有退出竞选,但是余额大于32,则仅支持提现超过32余额的部分