本文介绍了以太坊从PoW到PoS的架构转变,着重解释了PoS以太坊的架构分层、客户端类型及其作用,并探讨了分层的原因,包括提高升级过程的模块化和适应以太坊2.0的路线图。此外,文章还强调了客户端多样性的重要性,以防止因单一客户端出现问题而导致网络崩溃,并分析了 liquid staking 服务在促进客户端多样性方面的作用。
Ethereum 从 2015 年 7 月开始,在工作量证明(PoW)共识算法上运行了超过七年的时间。然而,从 Ethereum 诞生之初,其创建者 Vitalik Buterin 就强调了 PoW 的局限性,并讨论了向权益证明(PoS)的过渡。根据 Vitalik 的愿景,Ethereum 在 2022 年 9 月通过 The Merge 完全采用了 PoS。在 PoW 时代,Ethereum 上的区块创建仅限于拥有大量计算能力的矿工。然而,随着向 PoS 的转变,现在任何持有以太币代币的人都有机会参与 Ethereum 网络上的区块创建。这意味着即使你不再运营配备强大显卡的矿场,你仍然可以通过展示你对 ETH 的所有权来参与“虚拟挖矿”。
PoW Ethereum 在一个名为 Geth 的 Ethereum 客户端中执行所有功能,例如共识、验证和执行。这种简单性意味着运行 Ethereum 节点只需要安装一个软件,从而减少了架构方面的考虑。然而,随着向权益证明(PoS)Ethereum 的过渡,网络被划分为多个层,这些层处理区块链的不同功能元素。
这意味着根据节点运营商配置其节点的方式,可能会有许多不同的架构。这对于每个验证者的可靠性至关重要。如果节点运营商是管理数千或数万个验证者密钥的企业型验证者,那么他们对架构的选择也会影响整个网络的安全性。这就是为什么我们在作为 Ethereum 验证者参与时必须考虑节点的架构。
本文深入探讨 Ethereum 的架构。但是,它并非针对专业的区块链节点工程师。我将以尽可能简单的方式为 Ethereum 区块链网络的普通用户介绍 Ethereum 基础设施,并分享我对通过 PoS Ethereum 上的质押加入网络时应该考虑的问题的想法。
为了理解构成 Ethereum 的组件,了解 Ethereum 的工作原理非常重要。如果你正在阅读本文并且已经熟悉网络的工作方式,请随时跳到下一章。本文的目的不是详细解释 Ethereum 的技术要素,因此我将尝试尽可能简单和简短地解释基本概念,以了解构成 Ethereum 节点的程序。
Ethereum 可以被描述为一个基于区块链的网络,作为一个“状态机”运行。虽然此解释侧重于 Ethereum,但值得注意的是,许多后 Ethereum 区块链(通常被称为“状态机”)表现出类似的行为。
将显示缩放图像
Ethereum 的官方文档通过以下方式定义 Ethereum:
"Ethereum 不是一个分布式账本,而是一个分布式状态机。Ethereum 的状态是一个大型数据结构,不仅保存了所有帐户和余额,还保存了一个机器状态,它可以根据预定义的规则逐块更改,并且可以执行任意机器代码。逐块更改状态的具体规则由 EVM 定义。"
换句话说,我们可以将 Ethereum 定义如下:
为了更简化一点,Ethereum 是一个去中心化的数据库,具有各种“状态”,或者用于更改这些状态的规则和代码是智能合约,而用户执行智能合约以更改 Ethereum 状态的指令是“交易”。
我们现在将概述此交易如何更改 Ethereum 帐户状态的过程,从用户开始。
有些用户想要使用 Ethereum 网络。如前所述,使用 Ethereum 网络意味着改变 Ethereum 的“状态”,这意味着改变特定代币的余额,改变游戏角色的等级,或者在 Ethereum 上记录的任何其他状态信息。
当我们要在线进行电汇时,我们会请求银行服务器通过银行网页或移动应用程序汇款。在这里,银行的服务器是由单个实体运营的唯一服务器,因此银行的数据库(其中保存着有关用户资产的信息)在任何情况下都不会分成两个或多个不同的状态(这将是灾难性的失败)。
相比之下,Ethereum 区块链是一个无需许可的去中心化网络。任何人都可以加入网络,只要他们抵押 32 个 ETH。你不必是银行也可以运行银行服务器,这就是为什么在世界各地有这么多 Ethereum 服务器(截至 2023 年 5 月 1 日为 561,655 个)。想要使用 Ethereum 的人(即查看和更改 Ethereum 上的状态)通过选择这些服务器或节点之一来使用网络。
将显示缩放图像
在传统的银行系统中,当银行服务器收到向用户转账的请求时,它会立即执行该交易。即使前面积压了很多请求,它也会按顺序逐个执行它们。但是,在 Ethereum 中,当节点收到交易时,它不会立即执行该交易,而是将其发送到名为 mempool 的等待室。这是因为 Ethereum 区块链与银行不同,它由许多匿名节点组成,并且任何单个节点都不应能够随意处理请求。尚未包含在区块中的交易将保留在 mempool 中作为待处理状态。Ethereum 节点需要就谁应该处理他们从用户那里收到的交易、以什么顺序以及何时达成“共识”,否则 Ethereum 将像漫威的多元宇宙一样每分钟分成无数个分支。
将显示缩放图像
参与 Ethereum 的节点达成共识以建立统一的“Ethereum”。这里的达成共识可以定义为:
(1)确定多个节点中哪个将创建区块并提供证明,
(2)如果区块链分成两个或多个,则确定哪个将被识别为要遵循的合法链,以及
(3)确定做出这些决定的时间。
Ethereum 2.0 使用 RANDAO 来(1)确定谁创建并证明区块创建,(2)使用 LMD GHOST 算法来确定哪个链被识别为规范链,以及(3)使用 Casper FFG 算法来确保链的最终性。
将显示缩放图像
通过 RANDAO 算法从 561,655 个节点中获得提议区块权利的验证者,选择在 mempool 中等待的少量交易,按照他们的喜好排列它们,提议一个区块,并将其传播到他们连接的节点(这就是像 MEV 这样的问题 出现的地方!)。
将显示缩放图像
然后,新创建的区块传播到其他验证者节点,这些节点重新运行区块中的交易并验证数据签名。如果他们发现它是有效的,他们会向 Ethereum 网络提交投票以证明该区块。基于这些区块和证明,网络建立共识以继续该链。
此共识过程实际上超出了本文的范围。此外,许多更好的资源详细解释了 Ethereum 的共识算法。
简而言之,Ethereum 使用 RANDAO 和 Gasper(LMD GHOST + Casper FFG)算法来收集交易、创建区块并达成共识。这就是为什么 Ethereum 能够拥有一个唯一的“规范”链,尽管它是一个由许多匿名节点组成的去中心化网络。
你发送到 Ethereum 以更改帐户状态的指令或交易现在位于一个区块中,并且正式成为网络的一部分。交易中的指令要么更改余额,要么通过智能合约代码更改 Ethereum 网络的状态。此过程称为“执行”。
将显示缩放图像
那么谁来改变 Ethereum 的状态呢?Ethereum 虚拟机(EVM)实际上负责处理交易。EVM 是一个图灵完备的虚拟机,这意味着它可以以与普通计算机相同的级别计算代码——它是一个巨大的“世界计算机”,具有行为相同的分布式节点。Ethereum 区块中的交易不仅仅包含发送代币的请求,还包含执行智能合约代码的请求。智能合约是包含业务逻辑以更改状态的代码,因此执行它们意味着更改 Ethereum 的状态。
Ethereum 节点通过 EVM(世界计算机)按顺序执行区块中包含的指令(交易),并更改全局状态的状态。
通过这种方式,除了分布式账本之外,Ethereum 还实现了各种功能,使区块链能够作为世界计算机运行。换句话说,它可以被看作是一个在 Bitcoin 的“共识”层之上增加了一个额外的“执行”层的网络。那么,这个被称为 Ethereum 的去中心化状态机的节点是如何组织的呢?
到目前为止,我们已经了解了用户在 Ethereum 上发起的交易如何更改 Ethereum 网络上帐户的状态。你可能已经注意到,Ethereum 节点主要执行两个关键功能:“共识”和“执行”。在传统的工作量证明(PoW)Ethereum 中,这些功能是在单个客户端中处理的,但在权益证明(PoS)Ethereum 中,它们被分成不同的客户端软件。不仅如此,它还将共识的角色划分为单独的客户端软件。
在以下各节中,我将解释 PoS Ethereum 的组织方式,分享我对 Ethereum 客户端为何分成两层的想法,并讨论 Ethereum 2.0 的其余部分还有哪些计划。
到目前为止,我们一直在交替使用术语“Ethereum 节点”和“Ethereum 验证者”,但它们的含义不同。下图清楚地说明了这一点。
将显示缩放图像
在 Ethereum 中,节点是指由信标节点(处理共识)和执行节点(处理执行)组成的全节点。“完整的 Ethereum 节点”通常是指协同工作的执行节点和信标节点。
通过使用单独的验证者客户端,将抵押 32 个 ETH 的密钥连接到这些“完整节点”,该节点成为网络中的“验证者节点”。
此时,信标节点和验证者客户端属于共识层,而执行节点属于执行层。当我们谈论层时,我们指的不是最近备受关注的 rollups 中的层(L1、L2……)。相反,它们根据其角色进行划分,并作为单独的程序运行。划分这些层的标准是前面讨论的每个 Ethereum 客户端软件所执行的角色,特别是共识和执行。
将显示缩放图像
现在我们知道 Ethereum 由哪些层组成,接下来是了解在每一层上运行的软件应用程序。
也称为执行节点,有时在合并前的 Ethereum 中被称为 Eth1 客户端。在 PoW Ethereum 中,执行客户端和共识客户端作为一个整体存在,但现在共识逻辑已分离,仅处理执行。执行客户端具有一个 mempool,交易在其中等待,执行智能合约逻辑和交易,并管理其状态。此执行客户端连接到同一节点上的共识客户端,并通过对等通信连接到网络中的其他执行客户端以广播和接收交易。
也称为信标节点,以前是合并前的 Ethereum 中的 Eth2 客户端。它负责通过 PoS Ethereum 中的新共识算法确保 Ethereum 表现为一个链。此共识客户端通过对等通信与其他网络中的其他信标节点通信,并交换链共识所需的信息。
验证者客户端与已在质押合约中质押 32ETH 以参与 Ethereum 网络的验证者密钥相关联。这些密钥可以直接由 VC 持有,也可以由单独的签名者持有,并且仅传递其签名。与其他客户端不同,VC 不与外部世界连接,仅与同一节点上的 CC 通信以参与提议区块和进行证明。让我们简要描述一下 VC 通过其 CC(信标节点)参与提议区块的过程。
将显示缩放图像
总之,共识客户端和验证者客户端在生成区块并达成共识以维护 Ethereum 网络方面发挥着至关重要的作用,而执行客户端则促进交易执行并充当状态机。值得注意的是,这些任务是在原始工作量证明(PoW)Ethereum 中的单个客户端中执行的。那么,是什么促使 Ethereum 2.0 升级采用更复杂的结构呢?
Ethereum 2.0 复杂结构的第一个原因是简化 Ethereum 系统的升级过程。他们通过将其分解为模块化组件来实现这一点。具体来说,Ethereum 的执行层和共识层具有不同的角色。为了更好地理解,请查看下面的图表。它按类别细分了 2015 年至 2022 年 Ethereum 提出的 EIP(Ethereum 改进提案)。
将显示缩放图像
按类别细分 EIP
除了 2017 年(链稳定时期)外,超过一半的 EIP 集中在与执行层相关的提案上。这些提案通常涉及修改 Ethereum 客户端代码。一旦区块在区块链上最终确定,除非发生硬分叉,否则很难逆转它,从而导致分成单独的链。因此,更改与共识算法相关的客户端核心逻辑,添加或修改与执行相关的逻辑,都具有固有的风险。
免费加入 Medium,以获取此作者的更新。
订阅
订阅
此外,更改与共识算法相关的核心逻辑是一项微妙的任务,需要彻底审查。另一方面,与执行相关的逻辑通常需要精确的计时。通过将负责共识的软件与处理执行的软件分开,Ethereum 可以提高其安全性和敏捷性。这种功能分离使更容易升级执行层,从而解决 Ethereum 未来路线图中概述的可用性和可扩展性问题。
Ethereum 2.0 中复杂结构的第二个原因与其开发路线图有关。虽然许多人认为 Ethereum 通过 The Merge 完成了向 2.0 的过渡,但还有很多内容即将推出。The Merge 仅代表 Ethereum 2.0 路线图中的初始步骤,并且还有几个即将到来的里程碑。Vitalik Buterin 概述了 Ethereum 2.0 的路线图,我们将在下面探讨。
将显示缩放图像
The Merge 涉及将共识客户端从现有的 eth1 客户端分离到不同的模块中。Ethereum 2.0 正在与几个目标同时开发,如上面的路线图所示。例如,最新添加的 Splurge 旨在同时实现两个功能:区块创建(构建者)和提议者与构建者的分离(PBS,提议者/构建者分离)。如果这些改进是在单个客户端中进行的,它们将增加客户端的复杂性,这将大大减慢开发速度。预计 Ethereum 2.0 在路线图的剩余部分中将尽可能模块化,并且构成 Ethereum 网络的组件数量将比今天还要多。
将显示缩放图像
上图是最清晰的整个 Ethereum 网络的表示:每个节点通过信标链(共识客户端)连接,并且该网络由 eth1 节点(执行客户端)和验证者客户端组织,每个客户端都与信标链通信。
每个节点的配置各不相同,多个验证者连接到单个信标链,反之亦然。为什么 Ethereum 没有对此进行标准化并将其留给节点运营商自行决定,以及我们如何才能最好地构建 Ethereum 节点?
将显示缩放图像
截至 2022 年第四季度 Lido 的 Ethereum 验证者和节点的指标
根据上面的统计数据,Lido 节点运营商平均管理大约 5,000 个验证者密钥(大约 160,000 ETH)。在这些大型 Ethereum 节点上,节点运营商将 319 个密钥连接到每个验证者客户端,我们可以看到它们以 1:1.63 的比例运行共识客户端和验证者客户端,而不是 1:1。在执行客户端(EC)和共识客户端(CC)的情况下,配置仍然接近 1:1。
换句话说,看起来执行客户端和共识客户端的配置为 1:1,单个共识客户端连接了多个验证者客户端。但是,如果你查看下图,你会注意到一些不寻常的地方。
将显示缩放图像
2022 年第四季度 Lido 节点运营商使用的验证者客户端的分布
你可以看到,与普通 Ethereum 节点运营商相比,Lido 节点运营商更喜欢使用 Vouch 作为其验证者客户端。Vouch 是一种验证者客户端,专注于允许单个验证者客户端使用不同类型的共识客户端。
将显示缩放图像
如前所述,Vouch 充当一种验证者客户端,它提供建立与各种类型的共识客户端的连接的能力。它从所有这些客户端检索信息并将其组合起来,以确保对正确的区块进行签名,同时排除有问题的客户端。
Lido 节点运营商更喜欢使用 Vouch 意味着他们以一种方式配置其节点,即单个验证者客户端连接到多个共识客户端。但是,上面的统计数据揭示了验证者客户端和共识客户端的数量之间的显着差异。具体而言,每个共识客户端存在 1.63 个验证者客户端,尽管 Vouch 具有多连接功能。
通过共同考虑这两个数据点,很明显,包括 Lido 节点运营商在内的著名 Ethereum 池运营商正在采用 N:N 结构来组织其共识和验证者客户端。这与通常采用的传统 1:1 或 N:1 比率不同。
Ethereum 是开源的。任何人都可以开发客户端(软件程序)来参与 Ethereum 网络,并且由参与者决定使用他们想要的任何客户端。实际上,对于不同层的 Ethereum 客户端,存在许多不同的开源程序。这与其他依赖于基金会提供的单个客户端的区块链网络不同。
因为 Ethereum 本质上是一个区块链,所以共识是通过网络中的“绝大多数”对链的状态达成一致意见来实现的。在这种情况下,绝大多数是指所有验证者中三分之二的共识阈值。但是,如果绝大多数验证者使用的客户端存在致命缺陷会发生什么?该客户端将能够凭借无效区块单方面确定网络的完整性。
这就是为什么客户端多样性至关重要,就参与提议和验证区块的共识客户端而言。永远不应允许单个客户端控制超过 66%,并且建议 Ethereum 节点运营商选择少量客户端。
为了更好地说明客户端中心化的潜在风险,让我们考虑一些信标客户端在 Ethereum 上发生故障的情况。
根据 Ethereum 网络中存在缺陷的客户端比例,我们可以想到三种场景:
在这种情况下,整个 Ethereum 网络正常运行,因为剩余的 2/3 的信标客户端提交了正确的证明。但是,使用有问题的客户端的验证者将被视为不活跃,因为他们无法生成正确的证明,并且将受到惩罚,每个 epoch 都会减少他们存入的少量 Ethereum。
即使它不会立即破坏系统,它最终也会产生减少参与网络的验证者数量的相同效果,因此使用受损客户端的节点应迅速将其替换为另一个客户端。
这会导致一个稍微严重的问题。因为少于 2/3 的客户端提交了正确的证明,所以网络无法在不达到最终性的情况下达成共识,即会发生网络中断。在这种情况下,受损客户端同样因其不活跃而受到惩罚,并且他们的质押将逐渐减少。在网络恢复运行之前,使用健康客户端的节点将不会获得奖励。
因为受损客户端会受到惩罚并失去其质押,所以随着时间的推移,它们的份额可能会降至总数的 1/3 以下,并且网络将恢复正常。或者他们会很快意识到出现问题并更换他们的客户端。
到目前为止,网络仍然可以从中断中恢复,并且链的历史记录不会受到影响。但是,如果受损客户端的份额超过 2/3,它可能会对网络造成灾难性的影响。Ethereum 网络会将错误的证明超过 2/3 份额的链识别为正确的链,并且共识区块将永远保留在网络上。在出现问题时,受损的信标节点只需大约 13 分钟 即可最终确定这些区块。
Ethereum 社区将不得不选择承认并接受此损坏或放弃该链的极端选项。无论哪种方式,Ethereum 网络都会分裂,这将是 Ethereum 历史上的一大污点。
将显示缩放图像
目前,幸运的是,Ethereum 共识客户端不受任何一个客户端的控制。但是,为了使 Ethereum 成为一个更安全的网络,它需要比现在更加多样化其客户端,这意味着它需要努力确保没有客户端控制超过 33%。
很明显,如果客户端不发生故障是最好的。但是,Ethereum 是一个开源网络;你永远不知道什么时候会出问题。事实上,有一些例子表明 Ethereum 客户端错误导致了问题。 例如,在 2021 年,当时使用最广泛的信标客户端 Prysm 出现了一个 bug。这仍然是在 The Merge 之前,没有实际用户损失任何资金,但由于 Prysm 当时是市场份额超过 2/3 的客户端,因此这可能是一件大事。
另一个案例发生在2016 年 9 月的上海 DevCon 期间,当时黑客以太坊为目标。利用 Geth 客户端中的一个漏洞,这次攻击迫使以太坊进行硬分叉,因为当时 PoW 以太坊网络上的大多数节点都依赖 Geth。
没有软件是完美的;客户端可能有漏洞,即使某个客户端出现故障,节点运营商也应注意使其客户端多样化,以最大程度地减少网络上的问题。
将显示缩放图像
统计数据显示,43% 的 ETH 通过矿池进行质押。其中 75% 是通过 Lido 质押的,这意味着 Lido 占以太坊质押总额的 32%。管理利用委托给 Lido 的以太坊的节点的 Lido 节点运营商由 Lido 社区选举产生。Lido 将客户端多样性作为每周选择节点运营商的一个重要因素。
让我们回顾一下我们在上一章中看到的关于 Lido 节点运营商的客户端多样性的图表。
将显示缩放图像
截至 2022 年第四季度,以太坊客户端处于一个危险的环境中,Lighthouse 以高达 67% 的比例占据主导地位。但是,我们可以观察到,Lido 运营商的客户端使用现在显示出高度平衡的分布,这可能归因于验证者努力被选为运营商。
事实上,许多人认为像 Lido 这样的流动性质押平台促成了以太坊的中心化。诚然,这些平台在以太坊上占据了大部分股份,阻碍了政治上的去中心化。然而,重要的是要注意,网络中的系统性元素实际上有助于其去中心化。这是因为运营商构建节点架构时,会选择各种各样的客户端,以满足流动性质押平台的客户端多样性要求。
事实上,单个节点运营商使用哪些客户端对整个网络没有太大的影响。事实上,对于单个运营商来说,使用提供更高水平的信息和稳定性的客户端将是有益的。然而,对于流动性质押平台而言,它们的选择和行动可能会对整个网络产生重大影响,因此它们必须优先考虑增强去中心化和稳定性。
毫无疑问,“区块链不可能三角”是区块链行业中最广为人知的短语之一。
将显示缩放图像
“区块链不可能三角”代表了在区块链中平衡去中心化、可扩展性和安全性的挑战,构建者努力在他们的项目中优化这些方面。重点通常在于可扩展性和去中心化之间,而安全性通常退居其次,尽管安全性是一项不应妥协的基本价值。
随着以太坊通过 The Merge 过渡到 PoS 链,以及 2023 年 4 月的 Shapella 升级,现在可以在以太坊上提取质押资产。在这所有的变化中,人们的注意力已经转移到以太坊的新共识算法、MEV 和像 AA 这样的新 ERC 标准上。然而,基础设施组件和架构更改受到的关注较少。
安全性与区块链基础设施直接相关。“质押”涉及积极参与网络安全。在 PoS 环境中,你可以通过选择验证者或流动性质押平台来为网络安全做出贡献,即使你自己没有运营节点。至关重要的是要了解网络的结构并优先考虑其安全性,确保有效的质押并为网络的整体安全性做出贡献。
在区块链不可能三角中,普通用户在为去中心化和可扩展性做出贡献方面没有太多作为。然而,在 PoS 系统中,拥有股份的普通用户在增强安全性方面的作用变得至关重要,而安全性以前似乎与用户参与无关且脱节。利益相关者可以通过更好的架构选择来塑造网络。本文旨在帮助用户做出明智的决策,以便更好地为区块链生态系统做出贡献。
- 原文链接: medium.a41.io/an-introdu...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!