撰写更易于理解的材料来介绍权益证明机制工作原理、重要性以及即将推出的激动人心的功能了。
原文:《How Proof of Stake Ethereum Works》by Patrick McCorry
翻译:0xFelix 校对:Franci, ECN
以太坊已经达到了其中一个期待已久的里程碑 —— 合并!这是一个非常重要的时刻。经过长达 7 年的努力,以太坊社区成功地将工作量证明机制替换为权益证明共识协议。直接的影响是将网络的能源消耗减少了 99.95%,仅占全球电力消耗的0.02%。这是值得庆祝的成果!
除此之外,升级带来的技术优势还有很多,但大多数社区并不清楚。现在是时候撰写更易于理解的材料来介绍权益证明机制工作原理、重要性以及即将推出的激动人心的功能了 —— 尤其是现在权益证明正在保护数千亿美元的资产。
为了支持这一努力,我们准备了一系列文章来解释权益证明协议,面向对这项技术感兴趣的研究人员、开发人员和最终用户。在两周的时间内,我们将发布以下文章并更新相关链接:
– 模块化设计和两条区块链,
– Epochs、Slots 和信标区块,
– 验证者见证和投票协议,
– 补偿和惩罚,
– 以太坊的权益证明是否实现了其目标?
此外,还包括以下一些话题:
– 注册和提款过程,
– 怠工惩罚,
– 聚合器和子委员会的角色,
– 摇摆攻击(未发布),
– 同步委员会(未发布)。
我们希望这些文章能帮助您了解权益证明协议的工作原理,并作为您在开发过程中进行共识客户端代码之前的必备知识。
感谢 Teku 团队,特别是 Ben Edington 和 Mikhail Kalinin 耐心解答我的问题。
模块化设计和两条区块链
区块大小之战最终是关于去中心化的争斗 – 应该尽可能地经济实惠?还是应该尽可能地可验证?
对于区块链可扩展性的追求让社区在过去 10 年中提出了几个雄心勃勃的提案,问题的核心是一个基本的权衡:
– 可负担性:可以负担得起在网络上进行交易的用户人数规模。
– 可验证性:具有硬件和带宽等硬性要求以实时验证交易完整性的用户人数。
许多现代区块链系统将可负担性和最大用户数量置于其他一切之上 – 假定网络运营者愿意尽最大努力帮助实现这一目标。这种假设,运营者应该努力工作,会使区块链系统向中心化方向发展,因为它减少了可以作为运营者参与的人数。特别是对于需要运营者从经过批准的制造商购买硬件的网络。
并不是说现代区块链设计是错误的,但迄今为止,它们都未能像比特币或以太坊一样获得同样的关注。在我们看来,其中一个突出原因是这种基本权衡。这是比特币区块大小之争的核心,社区最终决定优先考虑谁可以验证网络的完整性,而不是长期的可负担性。
希望就像以太坊一样,可负担性可以通过闪电网络、侧链或 Rollup 推到另一个层级。以太坊社区、路线图和价值观都源于相同的背景。唯一的区别在于以太坊有一种根深蒂固的社会契约,使其社区能够实际改变基础平台以克服这个困境。
如果有一个与权益证明无关的唯一收获,那就是在去中心化网络的情况下,TPS 指标是毫无意义的。可扩展性不仅仅是以任何代价增加吞吐量,而应定义为以下内容:
“增加交易吞吐量,同时仍遵守运行完全验证节点所需的相同的计算、带宽和存储要求。”
作为读者,这个讨论可能看起来很奇怪。为什么我们要谈论区块链可扩展性?这与权益证明有什么关系?更重要的是,由于升级不会立即以有意义的方式增加交易吞吐量,这讨论似乎更加离题。原因在于该升级的功能被低估了,即可为未来的可扩展性解决方案奠定基础。
单一型区块链到模块化区块链
一个新的思维模型 —— 共识参与者不需要做所有的艰苦工作,他们只需验证并同意工作是正确的。
让我们快进几年,快进到区块大小战争之后。现在,我们有更好的术语来说明这个困境如何影响区块链系统的设计,即单一型区块链或模块化设计。
单一型区块链。这是一种试图寻找通用解决方案以解决所有硬件瓶颈的区块链协议和实现机制,例如如何执行交易、如何广播数据以及如何存储数据库。参与的网络运营者必须执行所有繁重的工作并运行整个单一型的实现,这很大程度上限制了谁可以参与共识协议。
模块化设计将资源按层级重新定义 —— 使得团队能够构建软件以解决每个层级的问题。
资源形成分层。以太坊权益证明设计及其长期路线图背后的重要力量之一是将每种资源定义为一个新层级。通过成为一个层,可以将问题分离并独立,从而允许团队构建新的软件客户端来解决每个特定的问题。这就是所谓的模块化区块链设计。
关于模块化方法最重要的理解可能是它如何改变共识参与者的看法。它不再是让他们负担最大的工作量。相反,它的重点是:
“区块提议者最少需要做什么工作?有没有可能把所有不必要的困难工作给到别的地方?”
回答是肯定的
验证者作为轻客户端。区块链协议的设计不再是围绕最大化网络运营者的工作。事实上正好相反,网络运营者(验证者)应该是轻客户端,只需要检查和验证在别的地方已经完成了的工作。
这就是为什么我个人喜欢“验证者”这个名字。他们唯一的工作就是验证、达成一致(共识),最终保护存储在以太坊数据库中的所有用户资产。从长远来看,参与其中应该只需要商业上可用的硬件和良好的互联网连接。
此外,通过使验证者成为轻量级客户端,它可能最终解决了运行节点软件的利他性天然症结。用户终于可以因验证区块链并实时检查其完整性而获得报酬。此外,我们也可以检查他们是否在做这项工作。
两条区块链
合并是将以太坊规范迈向模块化设计的第一个里程碑。
它将交易排序的全局共识和交易的最终执行分离。与此同时,它引入了两个新的区块链:
1)执行区块链。处理用户生成的交易和智能合约执行的原始以太坊区块链。有时被称为 ETH1 区块链。
2)共识区块链。专用于共识层的区块链。它负责决定执行区块链的规范链,并记录权益证明的转录。有时被称为信标区块链。
两个软件客户端。工作量证明 PoW 模块以及通常处理决定规范链的任何代码,都可以从原始以太坊节点软件中删除。整个执行环境保持完整,并且现在称为执行客户端。为了检索规范的执行链,它会向处理共识层的软件客户端(“共识客户端”)轮询新块。
由于执行区块链和客户端基本上保持不变,因此我们的文章将重点关注实现权益证明协议的共识层。
多客户端生态系统。由于上述分离,出现了几个独立尝试解决共识或执行问题的团队。当然,在这两种情况下,他们必须遵循通用规范,但可以自由地尝试实现细节。目前存在一个蓬勃发展(且出乎意料地资金充裕)的多客户端生态系统。例如,共识客户端包括 Teku 和 Prysm,而执行客户端如 Geth、Erigon 和Nethermind。
鼓励验证者运行不同组合的共识和执行客户端。这是防范共识级错误的第一道防线,希望相同的错误不会在多个独立实现中复制。这种软件工程实践称为 “N 版本” 编程。
如果验证者的绝大多数不遵循此建议,则可能导致末日情景。我们很快就会了解更多信息。
写在最后
细心读者可能已经注意到了这里的数据可用性、执行和结算层的使用,但是权益证明以太坊是为了共识和执行层奠定了基础。
长期的路线图是朝着以下方向发展:
共识 → 数据可用性。所有验证者都达成了对数据排序的一致意见,proto-danksharding 有助于巩固这一角色。
Rollups → 执行层。Rollups 承担执行层的角色,
ETH1 → 结算层。原始的以太坊区块链是保护所有用户定义资产的信任基础。
这种命名可能会令人困惑,依赖于以太坊协议的未来迭代。我们现在只是简单地称之为共识和执行层 —— 因为它已经被实现和部署了。