搜索
NFT元宇宙Web3
近期热门

以太坊分片:概述和确定性

Founder

在Ethereum Casper 101 [1] 中,Jon Choi 对 Casper 进行了非常清晰的概述,以及为什么显式确定性对可扩展性有益。本文的目的是概述以太坊分片设计,并解释清楚如何帮助区块链分片

为了全面了解以太坊分片机制提案的规范,我强烈推荐阅读 Vitalik 的sharding doc [2]。

区块链可扩展性问题

  1. 交易增长。我们喜欢独角兽和小猫(说的是NFT)。
  2. 当前块创建过程的可扩展性限制。区块gas限制限制了区块的计算能力。增加区块gas限制或减少区块时间过多会导致高陈旧率并削弱网络抵抗攻击的能力。
  3. 缺乏并行性。首先,当前的 EVM 按顺序操作事务。其次,每个完整节点执行每个事务并存储整个(或修剪过的)状态树,以实现安全性和去中心化。

进一步阅读:EIP 648 — 并行执行事务的简单并行性。

为了解决可扩展性问题,分片是一种引入链上状态分区并获得更高吞吐量的解决方案。

以太坊分片:概述和确定性

来源:https
://pixabay.com/photo-2695569/(CC0 知识共享)

术语

首先,我们来看看区分主链(可以是当前主网链)或分片链上不同层次的对象的术语:

以太坊分片:概述和确定性

表 1. 术语。

你可以简单地把交易想象成将被包装在“排序规则”中;与块类似,排序规则也指向其在链中的父排序规则——这就是我们要讨论的分片链。成为“整理者”意味着有资格在权益证明分片链上提出新的整理。

以太坊分片:概述和确定性

图 1. 基本排序数据结构的一瞥。

基本二次分片

分片链的共识依赖于主链

与侧链技术类似,只有少量的校对证明必须记录在主链上——这是我们如何扩展区块链的基本思想:(i)分片链有自己的星系,有自己的交易,分片验证者只需验证他们正在关注的分片;(ii) 分片链也坚持主链宇宙,通过权益证明机制达成更高级别的共识。

验证人经理合同 (VMC)

为了加入主链上的分片链,主链上将有一个特殊的合约,称为Validator Manager Contract (VMC)。VMC 是这个分片机制的核心;VMC的目的可以概括如下:

  1. 权益证明系统。如果验证者行为不端,他们的股份可能会被削减。
  2. 伪随机抽样。通过应用最近的块哈希作为种子来对合格的整理者进行采样。基本上,验证者将他们的股份存入 VMC,然后他们的验证码地址将记录在VMC 内部的全局验证者池列表中。一个分片链验证者将从验证者池列表中抽取,并成为特定“时期”内特定 分片的整理者(如下所述)。这个想法是让验证者无法预测他们什么时候会成为收集者以及很多天前在哪个分片中。
  3. 排序规则标头验证。VMC 包含一个addHeader(bytes collationHeader)函数来验证排序规则头并写入有效排序规则头哈希的记录。该功能立即提供链上验证。
  4. 跨分片通信。通过利用 UTXO 模型,用户可以通过交易调用将以太币存入特定的分片,并在主链上创建收据(带有收据 ID)。分片链用户可以使用给定的收据 ID 创建一个收据消费交易来消费该收据。
  5. 链上治理。以 VMC 作为议会,它使验证者能够在链上投票。

如何在 Shard 中提出排序规则?

在第 1 阶段,VMC 将维护 100 个分片 ( SHARD_COUNT = 100)。每个分片并行运行,分片i的客户端只需验证分片i上的交易。

“ period ”被定义为一个区块时间窗口,例如,PERIOD_LENGTH = 5表示每个周期5个区块。这表明在每个时期,每个分片只有小于或等于一个有效排序规则。

以太坊分片:概述和确定性

图 2 (a)。二次分片。分片状态的证明将记录在主链 VMC 上。

一旦验证者被抽样成为合格的整理者以提出新的整理,整理者必须验证最近的整理并发送交易以调用addHeader函数。请注意,如果整理者在第 10 期被抽样以提出新的整理这意味着addHeader交易必须包含在第 10 期,即块号10 * PERIOD_LENGTH到块号(10 + 1) * PERIOD_LENGTH — 1。

以太坊分片:概述和确定性

图2(b)。对于一个分片,每个周期只有一个排序规则;一个区块可以包含多个不同分片的addHeader交易。

排序规则标头哈希必须记录在 VMC 上,以证明其标头在全局范围内有效。此外,分片的其他验证者必须一直观察 VMC 以获取最新状态,然后验证交易是否也有效。

分片链的分叉选择规则

在基本分片中,分叉选择规则取决于最长的主链。给定分片的有效头排序规则不仅仅是“最长有效分片链”的头排序规则,而是“最长有效主链中最长的有效分片链”的头排序规则。

图 3 中描述了一个示例:在图 3(a) 中,主链有两条分叉,第二条链是下图中最长的有效主链。既然block B3是 head 块,很容易看出那collation C3是 head collat​ion。

以太坊分片:概述和确定性

图 3 (a)。

然后block B3’到达图3(b)。假设block B3的得分高于block B3’的得分,因此上链仍然是最长的主链:

以太坊分片:概述和确定性

图 3(b)。

最后,block 4到达图 3 (c)。请注意,对于这个分片,collation C3得分高于collation C2,但下面的链是最长的有效主链,所以collation C2现在的头部排序规则:

以太坊分片:概述和确定性

图 3 (c)。

一种巧妙的设计,用于在最终确定之前保证块的原子性。

可扩展性和安全性之间的权衡

区块链系统最多只能具有以下三个属性中的两个:权力下放,可扩展性, 和安全.

—分片常见问题解答中的区块链三难困境[3]

可扩展性的限制是基于系统的安全保证[3]。虽然我们通过将事务分配到分片来提高 TPS(每秒事务数),但我们也因此减少了每个事务的计算资源。

分片的重要机制之一是如何在链上产生随机性。

  • 被选为整理者的机会应该与验证者的存款相关并成比例。
  • 如果验证者可以任意预测或选择他们将参与哪个分片,那么不诚实的验证者可以相互勾结并发起自适应攻击。

如果采样过程未能以高随机性选择,攻击者有可能在分片中启动1% 的攻击:如果有 100 个分片,攻击者可以专注于攻击一个特定的分片,他们只需要 1% 的哈希率(PoW )/deposit (PoS) 来控制分片 [4]。

以太坊分片:概述和确定性

图 4. 传统多数攻击(51 % 攻击)

以太坊分片:概述和确定性

图 5. 分片 1% 攻击

分片的区块链中,明确的确定性

隐式确定性与显式确定性

首先,我要澄清的是,分片机制应该能够应用于工作量证明链和权益证明链; 即便如此,像 Casper这样的明确的确定性小工具可以使分片更强大。

在一般的工作量证明链中,最终性是概率的和隐含的 [1] [5];简而言之,即使区块已获得数千次确认,也始终可以重写链。相比之下,使用Casper 的友好最终性小工具 (“FFG”)加密经济机制应用权益证明明确地强制执行
we-can-check-if-its-finalized-for-us
 in-protocol 的最终性。

[来自 Vlad 的注释]协议内明确的最终确定性阈值存在经济风险:它会在2/3 + 1和处创建理想的卡特尔规模1/3 + 1。因此任何未加入联盟的节点对最终性的边际贡献变为0。2/3 + 1

对主链终结性的依赖

在基本分片中,分片链与主链挂钩。

对于分片验证器,我们期望通过分片,区块链容量在第 1 阶段提高 100 倍,因此这 100 个分片的所有验证器都需要观察 VMC 状态以获得正确的有效头部排序规则。验证者必须尽快确定自己是否是收集者,这一点很重要;对于普通用户来说,如果我们在第 2 阶段应用跨分片交易,普通用户还需要在 VMC 上检索他们的存款信息(收据 ID )。

明确的确定性将有助于减轻主链和大规模分片链之间同步的不确定性。

显式确定性有助于无状态客户端

无状态客户端的基本思想是无状态客户端不存储整个状态树,而是只存储状态树根归档客户端存储完整的状态树并提供给定排序规则所需的 Merkle 分支。通过这些 Merkle 分支,无状态客户端能够构建部分状态树并验证排序规则 [6]。

一旦验证者被采样并开始重新洗牌(即更改验证者监视的分片并同步分片链),同步过程将被触发。使用无状态客户端机制,重新洗牌的成本下降到(接近)零,因为他们只需要验证最近的排序规则(即高分排序规则)即可与分片同步

以太坊分片:概述和确定性

图 6. 无状态客户端模型。(来自www.flaticon.com的DinosoftLabs制作的图标由 CC 3.0 BY 授权)

由于同步过程可以更快,无状态客户端模型可以在每个排序规则之间重新洗牌。它不仅减少了存储负担和开销,而且使系统更加安全,因为频繁采样获得了自适应攻击抵抗力。

尽管同步成本变得更低,但无状态验证者仍然需要在一定时间内验证尽可能多的排序规则,以确认他们获得了得分最高的最佳有效排序规则。

Casper FFG 将在大约 2.5 个“epoch times”,即 125 个区块时间 [1] [7]后提供明确的确定性阈值。如果验证者在重新洗牌期间可以验证的不仅仅是125 / PERIOD_LENGHT = 25排序规则,那么分片系统可以从明确的最终确定性中受益,并且更有信心从现在开始的 25 个提前排序规则都已最终确定。

请注意,当然,如果我们有更多的排序规则在同步时得到验证,它会更安全。

结论

我希望我对当前的以太坊分片设计概念以及明确的确定性如何使分片机制有一个初步的简介。要深入了解协议设计,请访问ETHResear.ch和sharding doc。

特别感谢Vitalik Buterin 所做的所有出色工作,Jon Choi推动我写作,Chang-Wu Chen 博士提炼,Brian Chen提供反馈,以及Vlad Zamfir分享想法以及超酷的Vlarding

参考

  1. 乔恩崔。卡斯帕 101:https ://medium.com/@jonchoi/ethereum-casper-101-7a851a4f1eb0
  2. 维塔利克·布特林。分片文档:https ://github.com/ethereum/sharding/blob/develop/docs/doc.md
  3. Vitalik Buterin 和贡献者。分片常见问题:https ://github.com/ethereum/wiki/wiki/Sharding-FAQ
  4. 维塔利克·布特林。分片思维导图:https ://www.mindomo.com/mindmap/sharding-d7cf8b6dee714d01a77388cb5d9d2a01
  5. 维塔利克·布特林。关于结算最终性:https ://blog.ethereum.org/2016/05/09/on-settlement-finality/
  6. Ethresear.ch 线程 — 无状态客户端概念:https ://ethresear.ch/t/the-stateless-client-concept/172
  7. Ethresear.ch 线程——Casper 合约和完整的 POS:https ://ethresear.ch/t/casper-contract-and-full-pos/136/2
编辑于 2022-05-30 21:28
「 真诚赞赏,手留余香 」
赞赏

发表评论已发布0

手机APP 意见反馈 返回顶部 返回底部