以太坊分片:概述与确定性 | 作者:王晓伟 | Medium

本文详细介绍了以太坊分片设计的基本原理,并解释了显式最终性如何在区块链分片中发挥作用。文章涵盖分片链的共识、验证器管理合约、跨分片通信、分叉选择规则以及显式最终性对分片机制的好处等内容。

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

以太坊 Casper 101 [1]中,Jon Choi 提供了关于 Casper 的清晰概述,并解释了 为什么 显式的确定性对可扩展性是有益的。本文旨在概述以太坊分片设计,并解释 如何 显式确定性有助于区块链分片。

要完全理解以太坊分片机制提案的规范,我强烈建议深入研究 Vitalik 的分片文档 [2]。

区块链可扩展性问题

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

进一步阅读:EIP 648 — 易于并行化 用于并行执行交易。

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

来源: https://pixabay.com/photo-2695569/ (CC0 Creative Commons)

术语

首先,我们来看一下用于区分主链(你可以认为是当前主网链)或不同级别的分片链的术语:

表 1. 术语。

你可以简单地想象交易会被封装在一个“ collation ”中;类似于区块,colation 也指向链中的其父 collation——这就是我们将要讨论的分片链。成为“ collator ”意味着有资格在权益证明的分片链上提议新的 collation。

图 1. 基本 collation 数据结构的一个瞥见。

基本二次分片

分片链的共识依赖主链

类似于侧链技术,只有 小块证据 的 collation 必须记录在主链上——这是我们如何扩展区块链的基本思路:(i) 分片链有自己的星系,拥有自己的交易,分片验证者 仅仅 必须验证他们正在关注的分片;(ii) 分片链还依赖于主链宇宙,以通过权益证明机制达到 更高水平的共识

验证者管理合约 (VMC)

为了在主链上加入分片链,主链上将有一个特殊的合约,称为 验证者管理合约 (VMC)。 VMC 是这种分片机制的核心;VMC 的目的可以概述如下:

  1. 权益证明系统。 如果验证者表现不当,他们的押金可能会被削减。
  2. 伪随机性采样。 通过将最近的区块哈希作为种子来抽取合格的 collation 提议者。基本上,验证者将他们的押金存入 VMC,然后他们的验证代码地址将被记录在 VMC 内的 全球验证者池列表 中。 一个分片链验证者将从验证者池列表中抽取,并成为 特定“周期” 中特定分片的 collation 提议者(如下面所述)。这个想法是使验证者无法预测 他们何时会成为 collation 提议者 以及 在哪个分片 参与。
  3. Collation 头验证。 VMC 包含一个 addHeader(bytes collationHeader) 函数,用于验证 collation 头并记录有效 collation 头哈希的记录。此函数提供 链上 验证。
  4. 分片间通信。 通过采用 UTXO 模型,用户可以通过交易调用在特定分片上存入以太币,并在主链上创建一个凭证(带有凭证 ID)。分片链用户可以使用给定的凭证 ID 创建一个 消耗凭证的交易 以支出该凭证。
  5. 链上治理。 VMC 作为议会,使验证者可以在链上投票。

如何在分片中提议 collation?

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

周期” 被定义为区块时间的时间窗口,例如, PERIOD_LENGTH = 5 表示每个周期 5 个区块。这意味着在每个周期,各分片最多只有一个有效 collation。

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

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

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

colation 头哈希必须在 VMC 上记录,以证明其头在全局范围内有效。另外,分片的其他验证者必须随时监控 VMC,以获取最新状态并验证交易是否有效。

分片链的分叉选择规则

在基本的分片中,分叉选择规则依赖于最长的主链。给定分片的有效头 collation 只是“最长有效分片链”的头 collation,而是 “在最长有效主链内的最长有效分片链”

在图 3 中描述了一个例子:在图 3(a) 中,主链有两个分叉,第二个链是下面图表的最长有效主链。由于 block B3 是头区块,很容易看出 collation C3 是头 collation。

图 3 (a)。

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

图 3(b)。

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

图 3 (c)。

进一步阅读:另一种设计 — Vlad Zamfir 的 分片分叉选择规则。 🦌🌲🎁

一个巧妙的设计,确保区块在被确定之前的原子性。

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

区块链系统最多只能具备以下三种属性中的两种:去中心化可扩展性安全性

— 区块链三难问题分片常见问题 [3]

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

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

  • 被选为 collation 提议者的机会应 与验证者的押金相关且成正比。
  • 如果验证者能够任意预测或选择他们将参与哪个分片,失信的验证者可以相互勾结并开始自适应攻击。

如果抽样过程未能高随机性地选择,那么攻击者可能在分片中发起 1% 攻击:如果有 100 个分片,攻击者可以集中攻击 一个 特定的分片,他们只需要 1% 的哈希率(PoW)/押金(PoS)来控制该分片[4]。

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

图 5. 分片 1% 攻击

区块链明确的最终性对于分片

隐式最终性与显式最终性

首先,我必须澄清,分片机制应该能够应用于工作量证明链和权益证明链;即便如此,像 Casper 这样的显式最终性工具可以增强分片机制的安全性。

在一般的工作量证明链中,最终性是概率性和隐式的[1] [5];换句话说,即使是块获得了数千次确认,链依然有可能被重写。相比之下,采用权益证明,结合 Casper 友好的最终性工具(“FFG”) 的密码经济机制,明确地强制执行在协议中 我们可以检查其是否已结束 的最终性。

[来自 Vlad 的备注] 在协议中显式最终性阈值存在经济风险:它为 2/3 + 1 1/3 + 1 创造了理想的卡特尔规模。因此,任何不在 2/3 + 1 联盟中的节点对最终性的边际贡献为 0 🥒

对主链最终性的依赖

在基本的分片中,分片链依赖主链。

对于分片验证者,我们期待通过分片,区块链的容量在阶段 1 中提升到 100 倍,因此这 100 个分片的所有验证者都需要监控 VMC 状态,以获取正确的有效头 collation。对于验证者非常重要的是尽快确定他们是否为 collation 提议者;对于普通用户来说,如果我们在阶段 2 应用跨分片交易,普通用户同样需要在 VMC 中检索他们的押金信息( 凭证 ID )。

显式最终性将有助于缓解主链与大量分片链之间同步的不确定性。

显式最终性有助于无状态客户端

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

一旦验证者被抽取并开始 重新洗牌(即,修改验证者关注的分片并同步分片链),同步过程将被触发。通过无状态客户端机制,重排的成本降至(接近于)零,因为他们 只需要验证最近的 collation(即,高得分的 collation)以与分片同步

图 6. 无状态客户端模型。 (图标由 DinosoftLabs 提供,来自 www.flaticon.com 受 CC 3.0 BY 许可)

由于同步过程可以更快,无状态客户端模型使得在 每个 collation 之间重新洗牌 成为可能。这不仅减少了存储负担和开销,还使系统更安全,因为频繁的抽样提高了对自适应攻击的抵抗。

尽管同步成本大幅降低,无状态验证者仍需在一定时间内验证 尽可能多的 collation,以确认他们获得的符合条件的最佳有效 collation 具有最高得分。

Casper FFG 将在大约 2.5 个“纪元时间”后提供显式最终性阈值[1] [7],即 125 个区块时间。如果验证者在重新洗牌期间能够验证超过 125 / PERIOD_LENGTH = 25 个 collation,则分片系统可以受益于显式最终性,并更有信心这些 25 个提前的 collation 现已最终确认。

请注意,当然,如果在同步时验证更多的 collation,将会更加安全。

结论

我希望我对当前以太坊分片设计概念以及显式最终性如何有利于分片机制进行了初步简要介绍。要深入了解协议设计,请访问 ETHResear.ch分片文档

请随时指出任何错误或不清楚的表述。 :)

特别感谢 Vitalik Buterin 的所有卓越工作,Jon Choi 推动我进行写作,Dr. Chang-Wu Chen 的完善,Brian Chen 的反馈,以及 Vlad Zamfir 分享的想法和超级酷的 Vlarding

参考文献

  1. Jon Choi. Casper 101: https://learnblockchain.cn/article/11007
  2. Vitalik Buterin. 分片文档: https://github.com/ethereum/sharding/blob/develop/docs/doc.md
  3. Vitalik Buterin 和贡献者. 分片常见问题: https://github.com/ethereum/wiki/wiki/Sharding-FAQ
  4. Vitalik Buterin. 分片思维导图: https://www.mindomo.com/mindmap/sharding-d7cf8b6dee714d01a77388cb5d9d2a01
  5. Vitalik Buterin. 关于结算最终性: 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 合约和完全的权益证明: https://ethresear.ch/t/casper-contract-and-full-pos/136/2
  • 原文链接: medium.com/@icebearhww/e...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
icebearhww
icebearhww
江湖只有他的大名,没有他的介绍。