Dora Dōjo Workshop
资助金额:100 USDT
分享者:北邮在读硕士 Syshems
本项目由Dora Dōjo资助,文章转载请联系
Telegram: @DoraDojo0
WeChat: @DoraDojo0
区块链其实是基于不同的软件客户端运行的。如果我们想了解以太坊的原理,那么必须理解以太坊的客户端是怎么协作的。当这些客户端工作良好时,区块链正常运行;但是如果客户端有漏洞或遭到恶意攻击,它们对链的不同看法可能会导致对利益相关者遭受 slashing 惩罚,甚至破坏以太坊链本身。本课题旨在探究不同类型的以太坊客户端是如何协作的,不同类型的节点各自需要运行客户端的类型,以及客户端多样性缺失可能造成的问题。
一、以太坊节点
1、节点和客户端
“节点”是运行以太坊客户端软件的任何实体,不同节点连接在一起形成网络。
“客户端”是以太坊执行具体功能的软件,根据协议规则验证数据并保持网络安全。
以太坊节点必须运行两个客户端:执行客户端和共识客户端。
- 执行客户端:EL,也称为 Eth1 客户端,负责监听和广播网络中的交易,并在 EVM 中执行,在本地维护/保存最新的以太坊状态和数据库。
- 共识客户端:CL,也称为 Eth2 客户端,负责权益证明共识算法,接收执行客户端验证后的数据并达成共识。
- 验证客户端:以太坊还有第三个客户端,质押 32 ETH 后激活后可以添加到共识客户端中,允许节点参与网络验证。
Source: https://ethereum.org/
2、节点类型
2.1 Full node
全节点对区块链进行逐块验证,包括下载和验证每个块的 block body 和状态数据。网络中存在着不同类别的全节点:
- 一些全节点从创世区块开始,逐个区块地去验证,遍历整条区块链的历史。
- 另一些节点从他相信正确的区块 (例如 Geth 的 “snap sync” ) 开始验证,跳过验证之前的区块。
不论验证从哪里开始,全节点只保留相对较新的数据(通常是最近的 128 个块)的本地副本,允许删除较旧的数据以节省磁盘空间。旧数据可以在需要时重新生成。整体概括为:
- 存储完整的区块数据,但由于全节点允许删除历史较久远的数据,所以全节点并不保存所有的从创世区块开始的数据。
- 参与区块验证,验证所有区块和状态。
- 所有状态数据都可以从本地检索,或通过“快照”由全节点重新生成。
- 负责服务于网络,并根据请求提供数据。
2.2 Archive node
存档节点是特殊的全节点,需要从创世块开始验证每一个区块,并且永不删除任何下载的数据。
- 需要保留全节点中的所有数据,并建立历史状态存档。例如查询 #4,000,000 区块的帐户余额。
- 存档节点的数据以 TB 为单位,这使得存档节点对普通用户没有吸引力,但对于区块浏览器、钱包供应商和链分析等服务来说却是必须的。
2.3 Light node
轻节点只下载区块头,并不下载完整的区块信息。区块头包含了有关块的概要信息,因此轻节点可以根据块头中的「状态根」独立验证接收的数据,所需的任何其他信息都可以向全节点请求。
- 轻节点使得普通用户也能够参与以太坊网络,且无需运行全节点所需的强大硬件或高带宽。在未来,轻节点可能会在手机或嵌入式设备上运行。
- 轻节点不参与共识(即它们不能成为矿工/验证者),但可以访问以太坊区块链,具有与全节点相同的功能和安全保证。
- 轻客户端是以太坊积极探索的领域,预计我们很快就会看到共识层和执行层的轻客户端。
二、执行/共识客户端
1、执行客户端
- 执行客户端负责交易处理、交易传播、状态管理和支持以太坊虚拟机(EVM),负责维护以太坊虚拟机、以太坊状态和交易池。它不负责区块的构建、区块传播和区块共识。
- 执行客户端负责创建执行负载 (Execution payloads,本质是一个交易的集合),负责更新的状态树和其他与执行数据。交易在称为 EVM 的嵌入式计算机上执行和重新执行。
- 共识客户端在每个块中都包含执行负载。执行客户端还负责重新执行新区块中的交易,以确保它们有效。
- 通过 RPC 访问以太坊的用户网关,查询以太坊区块链,提交交易并部署智能合约
2、共识客户端
- 共识客户端处理共识逻辑,包括接收网络中的区块、运行分叉选择算法等,使节点与以太坊网络保持同步,确保节点始终遵循具有最大证明积累的链(由验证者的有效权益加权)。
- 但注意,没有运行验证客户端的共识客户端只能同步链头,不负责出块和断言(attestation)。
- 验证客户端作为共识客户端的可选附加组件,需要存入 32 ETH 到 deposit contract 后激活。
- 验证客户端负责出块和断言,使节点能够产生验证奖励或惩罚(Slashing)。
- 与执行客户端类似,共识客户端拥有自己的 P2P 网络,通过该网络传播区块和断言。
3、执行、共识客户端协作
- tx was sent to the execution client to verify its validity (signature & balance)
- In every slot (12 seconds), one validator and committee is randomly chosen. Once the validator is selected as proposer pseudo-randomly using RANDAO, the execution client bundles transactions from the local mempool into an “execution payload” and executes them locally to generate a state change.
- Execution client passes the execution payload to the consensus client, so that the consensus layer can agree on the sequence of blocks at the head of the chain.
- Other nodes receive the new beacon block on the consensus layer gossip network. They pass it to their execution client where the transactions are re-executed locally to ensure the proposed state change is valid.
- The validator client then attests that the block is valid and is the logical next block in their view of the chain
- The block is added to the local database in each node that attests to it.
三、分布式验证器的优势
2023 年 5 月,区块链网络发生“无法确认最终性”事件,部分客户端遇到 bug,导致无法生成断言,多个 epoch 内无法确认最终性。最终性是 PoS 以太坊的一种关键状态,可确保交易一旦确认就无法更改。一旦超过 4 个 epoch 仍未最终确定,其间未进行断言的验证者就将遭受“泄漏惩罚”并失去部分质押资产。
Source: clientdiversity.org
1、客户端的多样性
客户端的多样性对于以太坊至关重要,如果多样性消失,客户端的 bug 可能导致数百万 ETH 损失。
- 超过 66% 验证者使用的客户端可以分叉以太坊;
- 任何容易遭受攻击的客户端都可能造成 slashing 损失。一旦大规模 slashing 发生,损失会被进一步放大,验证者可能会损失高达 100% 的资金(这个机制本来是为了防止恶意攻击而设定的,但无法避免大规模非恶意的客户端宕机的情况);
- 大多数分叉可能无法恢复。
因此,任何一个超过 50% 份额的客户端都会带来系统性风险,设定的目标是所有客户端的份额必须低于 33%。但即便如此,质押者的 ETH 被罚没的风险依然存在。
作为以太坊验证者,可以做的最简单的事情就是选择运行份额低于 33% 的少数客户端软件。当然,如果客户端自身存在错误或可利用的漏洞,则运行在其上的所有验证器都可能被 slashing 。
2、分布式验证器 DVT
随着头部质押项目 (Lido, Binance, Coinbase) 迅速接近临界阈值 33% ,此时 Diva、ssv.network 等一类的项目借助分布式验证技术提供了新的解决思路。
对于 Diva 来说,验证器的工作将由 66% 的密钥份额 (Key shares) 去确定执行,而非单一验证客户端。每个验证器对应有 16 个密钥份额,这些份额由不同的客户端组合的节点独立运行。这意味着,当 16 个密钥份额中的 11 个 (66%) 出现故障时,Diva 验证器才会被 slash 。从资金保护上来说,这比没有 DVT 的情况要好几个数量级。
此外,Diva 的分布式验证器技术 (DVT) 提升了网络可靠性。 对比典型的 16 个节点组的 5% 停机时间,Diva 的 DVT 将综合停机时间减少到不到 0.01%。Diva 将 95% 的单个节点正常运行时间转化为 99.99% 的协作正常运行时间,树立了效率的新标准。
参考
Nodes & Clients: Nodes and clients | ethereum.org
Node architecture: Node architecture | ethereum.org
Block creation: Proof-of-stake (PoS) | ethereum.org
Distributed Validator: Ethereum Diversity & How DVT Can Help | by Diva Staking | Medium
Diva Staking: https://divastaking.com/