imToken Labs:以太坊 PoS 演进史
来源:    发布时间: 2023-12-30 18:40   51 次浏览   大小:  16px  14px  12px
大家好!今天我们要来探讨 Ethereum 以太坊的 PoS(权益证明)演进史。以太坊为了提高区块链的效能以及更加地环保,不断推陈出新,让整个区块链世界产生了巨大的变革。

大家好!今天我们要来探讨 Ethereum 以太坊的 PoS(权益证明)演进史。以太坊为了提高区块链的效能以及更加地环保,不断推陈出新,让整个区块链世界产生了巨大的变革。随着技术的不断进步,以太坊也将开始向新的高度挑战。让我们一起来探讨这个让人感到振奋的演进过程!

因本文章有较深入的 PoS 介绍,建议已具备基础 PoW 知识的读者阅读。

2020 年 12 月 PoS 信标链上线

为了将耗能的 PoW 升级至节能的 PoS,以太坊在 2020 年 12 月 1 日时,上线了以 PoS 共识机制为主的以太坊信标链(Beacon Chain)!

PoS 名词解释

在 PoS 中,有些名词会和 PoW 稍微不同!

Block(区块)的概念改为 Slot(插槽)与 Epoch(纪元)。平均来说,每 12 秒会出一个 Slot,而每 32 个 Slot(= 12 秒 x 32 Slot = 6.4 分钟)称为一个 Epoch。

Difficulty(挖矿难度)改为 Slot PrevRandao(或称 Block Randomness 随机数)。

Miner(矿工)改为 Validator(验证者)与负责出块的 Slot Proposer(提议者)。

目前,若要成为 Validator,需使用 Validator 私钥及 Withdrawal 私钥来建置不停机的验证节点,接着将带有以下指定 Data + 32 ETH 的交易打到 Deposit 合约中:

pubkey(48 Bytes):Validator 公钥,链上唯一识别用

withdrawal_credentials(32 Bytes):将 Withdrawal 公钥作 SHA256 后,将最左侧 2 位元由 0x00(BLS WITHDRAWAL 前缀)替换而得

signature(96 Bytes):由 Validator 私钥向 (pubkey, withdrawal_credentials, deposit_amount) 资料进行签名

deposit_data_root(32 Bytes):由上述 pubkey、withdrawal_credentials、signature 建立 Hash Tree,并取得其 Hash Tree Root 而

成为 Slot Proposer 要做的事

在下一个 Epoch 到来前,每个 Slot 会透过 Randao 随机数指定 1 位 Validator 成为此 Slot 的 Proposer,而他要完成 2 件事!

第 1 件事:建立区块,并让其他 Validator 进行验证及投票。

理想上,Slot Proposer 会在最新的区块后面,直接建置下一个区块,如同 PoW 时期以维持最长链原则。但实际上,可能会因 P2P 网络延迟、恶意节点尝试攻击等,导致 Slot Proposer 未必能在最新的区块后面建置下一个区块,造成区块链分叉。这时,需请其他的 Validator 进行区块投票,得票高者即可成为下一个区块。若恶意节点故意在同一个 Slot 时段内建立 2 个区块,则会被施以严重的大幅削减(Slash)处罚(从质押的 ETH 中一次性罚款)并退出网络。

第 2 件事:提出一个随机数种子 S,并公开 Hash(S) 结果。

因为少了过去 PoW 的算力竞争,但直接指定 Proposer 有违去中心化,所以需要一个由众多 Slot Proposer 一同决定的 Randao 随机数,用来选定下一个 Epoch 的 Slot Proposer 们

第 1 件与第 2 件事不断重复,使得区块链不断地产生新区块。

Slot 的 Validator 数量推算

在说明每个区块及 Epoch 需要多少票数前,先进行目前 Slot 的 Validator 数量推算!

回顾一下:每 12 秒为一个 Slot,而每 32 个 Slot 为 1 个 Epoch。由 Beaconscan 网站可得知,目前撰文时全球总共约有 512,000 名以太坊 Validator。

所以,每 1 个 Epoch 约会有 512,000 名 Validator 进行投票。平均下来,每 1 个 Slot 约会有 512,000 / 32 = 16,000 名 Validator 进行投票。

每个 Validator 要做的事

扣除负责出块的 Slot Proposer,剩下 N - 1(N 是 16,000)的 Validator 需在每个 Slot 中完成 Attestation 工作,即向支持的区块及 Epoch 来进行投票!

投票 1:向支持的 Epoch(对应的 Checkpoint Slot)投票,支持的 Epoch 包含需同时选定 Target Epoch 及 Source Epoch(可参考下图)。

Target 为 Validator 认同当下所在的 Epoch

Source 为 Validator 认同最近的 Epoch(通常为上一个 Epoch)

若某个 Target Epoch 结束,并得到超过 2 / 3 Validator(即 512,000 x 2 / 3 = 341,333)的票数,则此 Epoch 标示为 Justified,故最快要等上 1 Epoch = 6.4 分钟的时间。

承上,若此 Target 紧连的 Source Epoch 也得到 2 / 3 票数(通常 2 者为连续的 Epoch),则此 Source Epoch 标示为 Finalized。因此,最快要等上 2 Epoch = 12.8 分钟的时间

Epoch Finalized 之前的区块规定不可再被更改

投票 2:向支持的区块投票(或称之为 LMD-GHOST Fork Choice Rule 共识)

可对过去 1 Epoch 内的 Slot 区块进行投票。

如果 Validator 有以下行为会无法拿到奖励

投给旧、错误的区块(可能投票期间未同步至最新区块所致)

投票经常延迟或设备离线,但如果网络出现 4 个 Epoch 都没被 Finalized 的情况(进入 Inactivity Leak 期),则会有罚款

如果 Validator 有以下行为会进行严重(Slash)处罚,同个私钥同时存在两台不同机器上导致同一 Epoch 时间内有 2 次对区块的投票行为。将机器迁移时,没有将资料库也迁移,导致迁移的机器向同一区块重覆投票的行为

如果被 Slash 处罚一次或因罚款导致余额低于 16 ETH,则会被强制踢出网络。从 beaconcha 统计数据可得知,自信标链上线以来被 Slash 总共有 229 名 Validator,大多为非恶意的机器设置错误导致,约占整体 Validator 的 0.045%。

本节点整理

PoS 是由链上所质押的 ETH 作担保,来维持分散式共识(若伺服器停机、提交延迟、或提交错误共识内容则会有罚款),好处是:环保,且质押的 ETH 平均有 4% 年化报酬。

但此时要自建 24 小时不停机节点 + 质押至少 32 ETH,门槛过高

对于仅有少量 ETH 却又想参与 PoS 网络的散户该怎办?所以,像是 Lido 等服务商,就有提供收取质押奖励的 10% 作为手续费,让散户进行小额质押。而且,更特别的是 Lido 还提供质押 ETH 兑换 stETH 代币,让散户可在二级市场进行 stETH 交易。

从 Dune 统计数据可得知,目前所有质押的 ETH 约占总供应量约 14.66%

2022 年 9 月 PoS 信标链与 PoW 以太坊完成合并

众所期待的 PoS 以太坊终于在 2022 年 9 月 15 日完成合并(The Merge)!此时,只能使用 Validator 进行质押挖矿,而使用显卡挖矿的矿工时代也真正地成为了过去!

虽然,一般使用者仍可按照过去 PoW 使用方式进行 ETH 转帐或合约交易;但实际上经过 The Merge 升级后,以太坊节点已拆分成 Execution Layer(EL)执行层及 Consensus Layer(CL)共识层了

在 The Merge 后采用了 PoS 共识,虽然 PoW 机制被移除,但是 PoW 的 Excution Layer 却合并到 Beacon Chain 中。

Execution Layer(EL)执行层仍与 PoW 时一样进行:

  • 执行 EVM 虚拟机

  • 但是,当区块分叉时,取代 PoW 机制,会由 CL 层告知哪一个区块是 Head Block

Consensus Layer(CL)共识层就负责:

  • 进行 Proof of Stake 共识

  • 当区块分叉时,采 LMD-GHOST Fork Choice Rule 共识来决定

The Merge 升級前,Execution Layer 的內容

完成 The Merge 升级后,Execution Layer 的内容与过去 PoW 时期相同

然而, 对于执行以太坊节点的营运者,可以决定将 CL 节点(如:Lighthouse)、EL 节点(如:Geth)拆分建立,并使用元件所提供的 Engine API 来进行沟通。甚至可执行其中一个元件,另一个元件则与其他节点共用。

本节重点整理

The Merge 合并之后,将以 PoS 的取代 PoW 以太坊,无法使用显示卡挖矿。

但此时 Validator 们仍无法赎回已质押的以太币,所以才会有下一个重大的升级:上海硬分叉。

2023 年第 2 季以太坊信标链进行上海硬分叉升级

以太坊 PoS 信标链于 The Merge 后另一项重大的升级:上海硬分叉,终于让为数众多的的 Validator 开放让为数众多质押 ETH 的赎回申请,但考量到系统的稳定性(如:避免 Validator 数量骤减,影响共识安全及稳定等),每个 Epoch 可退出的 Validator 或 ETH 数量是有限制的!

质押退出机制

关于欲将已质押的 ETH 赎回,除了您需等待 2023 年第 2 季上海硬分叉升级完成外,Validator 还需将 EL/CL 节点升级、在 CL 节点上修改收益地址等前置作业,即可进行 ETH 赎回请求啦!分为 2 种形式:

关于前置作业细节可参考 imToken 先前发布的「上海升级,和你有关吗?」文章!

部份赎回(Partial Withdrawals)

  • 将超过 32 ETH 的其他 ETH(不论是质押 or 奖励)给赎回

  • 因目前一个 12 秒的 Slot 最多只能有 16 次的部份赎回额度,以全网有 512,000 Validator 来计算,平均每个 Validiator 要等 4.44 天才能收到 ETH。

全部赎回(Full Withdrawals)并退出 Validator 角色

  • 因目前一个 6.4 分钟的 Epoch 只能退出 6 名 Validator,所以会依照申请的顺序来进行全部赎回

  • 注:实际上,为避免一次大量 Validator 退出网络而导致安全性问题,所以每个 Epoch 可退出 Validator 数量会依照全网 Validator 总数来进行限制(可参考下方表格)

而以上无论是部份赎回,还是全部赎回,因为都在 CL 节点上广播请求,所以也均无需 Gas 费用。

每个 Epoch 可退出 Validator 数量会依照全网 Validator 总数来进行限制

上线前需充分测试

另外,此次升级还需在各个测试网上进行充分测试,才会正式上线!

  • 2023/02/07 可提款的 Zhejiang 测试网上线

  • 2023/02/28 进行 Sepolia 测试网的上海硬分叉升级

  • 2023/03 进行 Goerli 测试网的上海硬分叉升级

还有其他的提案

而且,这次升级除了 EIP - 4895(允许验证者提取质押的代币)是主要提案外,还会一同实现以下 EIP 提案:

  • EIP-3651 预热 COINBASE:启动「COINBASE」地址的预热功能,降低交易手续费消耗

  • EIP-3855 增加 PUSH0 指令:将常用的「常数 0 推送」操作变成一个指令,将可减少合约程式码大小

  • EIP-3860 限制和计价 initcode:增加合约部署规范,避免部署程式码过大占用空间

  • EIP-6049 新增 SELFDESTRUCT 停用警告:更新 SELFDESTRUCT 指令的文件说明,警告使用者该指令未来将被停用

未来,本专刊将会为重要的 EIP 提案来撰写文章进行说明。

本节重点整理

开放质押的 ETH 赎回,但基于安全理由,每个 Epoc(约 6.4 分钟)只能退出 6 个验证者(因此每天约有 1,350 个验证者 or 43,200 ETH 可退出。

若您刚好是以太坊信标链的 Validator,强烈建议在上海升级前阅读「上海升级,和你有关吗?」文章,来了解这次上海升级时您一定要做的几件事情!

总结

综观整个 PoS 演进史,以太坊始终保持着为用户提供最优秀的使用体验和开发环境的初衷。 PoW 到 PoS,不断的改变也带给了我们更加高效和环保的区块链世界。上海硬分叉升级将为以太坊带来更多的可能性;在未来,随着这一系列 EIP 提案的引入,Ethereum 将越来越容易地融入日常生活中,并且让人们都可享受到区块链带来的安全性与方便性。让我们一起期待以太坊的更美好未来!