关键要点
以太坊是唯一建立可扩展的统一结算和数据可用层的主要协议;
Rollups 在利用以太坊安全性的同时扩展计算;
所有道路都通向中心化的区块生产、去中心化&无须信任的区块验证和抗审查的终局;
诸如区块提议者-构建者分离 (PBS) 和弱无状态性 (weak statelessness) 等创新开启了这种权力 (构建和验证) 的分离,以在不牺牲安全性或去中心化的情况下实现可扩展性;
MEV 现在处于核心重要位置,以太坊计划了许多设计来减轻 MEV 的危害,防止 MEV 的中心化化倾向;
Danksharding 结合了多个前沿研究途径,从而为以太坊以 Rollup 为中心的路线图提供可扩展的基础层;
我预计 danksharding 将在我们有生之年实现。
引言
自从以太坊联合创始人 Vitalik Buterin 表示今天出生的人有 50% -75% 的几率能活到 3000 年,他希望能长生不老,我就一直对合并的时间持怀疑态度。但无论如何,让我们看看展望一下以太坊雄心勃勃的路线图吧。
这不是一篇速成文章。如果你想对以太坊雄心勃勃的路线图有一个广泛而细致的理解——请给我一个小时的时间,我将为你节省几个月的工作。
以太坊的研究有很多值得关注的地方,但所有的一切最终都编织成一个总体目标——在不牺牲去中心化验证的情况下扩展计算。
通过简单的去中心化验证,以太坊维持者非常高的安全性,而 Rollups 继承了以太坊 L1 的安全性。以太坊还提供结算和数据可用性,允许 Rollups 实现扩容。这里的所有研究最终都是为了优化这两个角色,同时使得验证这条链变得比以往任何时候都更容易。
以下是一些缩略语,这些术语会在本文中出现 N 次:
DA – 数据可用性 (Data Availability)
DAS – 数据可用性抽样 (Data Availability Sampling)
PBS – 提议者-构建者分离 (Proposer-builder Separation)
PDS – Proto-danksharding
DS – Danksharding
PoW – 工作量证明 (Proof of Work)
PoS – 权益证明 (Proof of Stake)
第 I 部分:通往 Danksharding 之路
希望你现在已经知晓了以太坊已经转向了以 Rollup 为中心的路线图。以太坊将不会再有执行分片(execution shards),而是将针对需要大量数据的 Rollups 进行优化。这是通过数据分片(data sharding) 来实现的。
以太坊共识层不会解释分片数据,它的任务是确保数据是可用的。
在文本中,我将假设你熟悉一些基本概念,比如 Rollups、欺诈证明和 ZK 证明,以及DA(数据可用性) 的重要性。
1)最初的数据分片设计:单独的分片区块提议者
这个小节描述的设计已经废弃了,但它对于我们了解背景信息是有价值的。为了简单起见,我将这种设计称为“分片1.0”。
以太坊 64 个分片的每个分片区块都有单独的区块提议者和委员会,他们通过随机的方式从验证者集中选出来被分配至各个分片链中。他们分别验证自己所在的分片的数据的可用性。起初这不会是 DAS(数据可用性抽样),而是依赖于每个分片的诚实大多数验证者来完全下载该数据。
这种设计带来了不必要的复杂性、更糟糕的用户体验和攻击向量。在分片之间洗牌 (打乱) 验证者是很棘手的。
如果不引入非常紧密的同步假设,就很难保证投票将在单个 slot 内完成。信标区块的提议者需要收集所有独立委员会的投票,而这可能会有延迟。
Danksharding(简称 DS) 则完全不同。验证者执行 DAS(数据可用性抽样) 以确认所有数据都是可用的(不会再有单独的分片委员会)。专门的区块构建者(builder) 会负责创建一个大区块,该区块会对信标区块和所有的分片数据一起进行确认。因此,Proto-danksharding(简称 PDS) 对于 DS 保持去中心化是很有必要的 (因为构建这样的大区块是资源密集型的)。
2)数据可用性抽样 (DAS)
Rollups 会发布大量的数据,但是我们不希望给节点带来下载所有这些数据的负担,因为这将意味着需要很高的资源,从而损害网络节点的去中心化。
相反,DAS 允许节点 (甚至轻客户端) 能够在无须下载所有这些数据的情况下,轻松、安全地验证这些数据的可用性。
简单的解决方案:只是检查每个区块的一些随机数据块。如果检查合格,节点就对该区块进行签名。但如果节点没有检查到那笔有关你将 ETH 发送给 Sifu 的交易,那么资金就不再安全了。
聪明的解决方案:首先对数据进行纠删码。使用 Reed-Solomon 代码扩展该数据。这意味着数据被插值为一个多项式,然后我们在许多额外的地方对该多项式进行求值。这很难懂,所以让我们来分析一下。
对那些忘记数学课的人来说,这是一堂快速的课。(我保证这不会是非常可怕的数学——我不得不看一些 Khan Academy 的视频来写这些部分,但我现在都弄懂了)。
多项式 (Polynomial) 是对任何有限数量的单项式进行求和的表达式。多项式的“次数”(degree) 是指多项式中次数最高的单项式的次数。例如,2ab+b-1 是一个由 2ab、b 和 -1 这三个单项式组成的多项式 ,我们把这三个单项式叫做该多项式的“项”,因此这个多项式就是一个“三项式”;且由于 2ab 这个单项式的次数最高 (次数为 2),故这个三项式是“二次三项式”。你可以从位于该多项式上的任何 d+1 坐标重建任何 d 次多项式。
现在举一个具体的例子。下面我们有四个数据组块(d0 到 d3)。这些数据组块可以映射到给定点的多项式 f (X) 的求值。例如,f (0) = d0。现在你找到了贯穿这些求值的最小次数多项式。由于这是四个组块,我们可以找到三次多项式。然后,我们可以扩展此数据以添加四个沿同一多项式的求值(e0 到 e3)。
记住多项式的关键属性:我们可以从任意四个点重构它,而不仅仅是最初的四个数据块。
回到我们的 DAS。现在我们只需要确保任意 50% (4/8) 纠删码数据是可用的。由此,我们可以重构整个区块。
因此,攻击者必须隐藏区块的 >50% 数据,才能成功地欺骗 DAS 节点,以使节点认为数据是可用的 (但实际上是不可用的)。
在许多成功的随机抽样之后,