撰文:Kyle
以太坊的发展正在达到一个新的成熟水平。目前,以太坊所在的位置与其定义的路线图之间的差距正在迅速缩小。很明显以太坊正在开发一种模块化设计架构。模块化设计的魅力在于,每个模块的优化都可以放大其他模块的优化。那么,模块化区块链是什么样子的,它是如何工作的呢?
什么是模块化区块链?
模块化区块链是专注于处理少数职责并将其余部分外包给一个或多个独立层的区块链。要了解模块化区块链的工作原理,我们必须首先评估常规区块链的「职责」:共识、执行、数据可用性和结算。
1. 共识
共识是指节点就区块链上的哪些数据可以验证为真实和准确的达成协议的机制。共识协议决定了交易的排序方式以及如何将新区块添加到链中。
2. 执行
执行是区块链上的节点处理交易以在状态之间转换区块链的方式。参与共识的节点必须在验证区块之前使用其区块链副本来执行交易。
3. 数据可用性
区块链强制执行要求交易数据可用的规则。这意味着区块生产者必须发布每个区块的数据,供网络对等方下载和存储,这些数据必须应要求提供。
4. 结算
最后,区块链提供了「最终性」——保证已提交到链历史的交易是不可逆的(或「不可变的」)。要做到这一点,区块链必须确信交易的有效性。因此,结算功能需要链验证交易,验证证明和仲裁争议。
模块化区块链如何工作?
模块化区块链的工作原理是模块化,模块化是指将系统分离成不同的组件,这些组件可以以各种方式组合以实现特定目标。模块化依赖于专业化:每个组件只能做几件事,但它必须做好它们。您可以将模块化组件视为乐高积木,可以组合成不同的结构。
模块化链是更大的区块链「模块化堆栈」中的一个组件,可以组合以实现不同的目的。模块化区块链充当「可插拔模块」,可以根据用例相互交换或合并。
模块化区块链可以设计为处理以下一项或多项任务:
- 执行:支持交易的执行,并实现智能合约的部署和交互。
- 数据可用性:保证交易数据的可用性。
- 共识:就交易的内容和顺序达成一致。
- 结算:提供一个层,用于完成交易、解决争议、验证证明以及不同执行层之间的桥接。
Rollups 是模块化区块链的一个例子。rollup 总链处理事务(执行),但将共识、数据可用性和结算外包给父链。模块化链通常可以执行两个或多个功能,特别是当它们是相互依赖的时。例如,数据可用性层还必须就数据的顺序达成共识,否则就不可能知道哪些数据表示正确的历史记录版本。
模块化区块链使用当前位于 L1 上的单片区块链的三个组件并将它们分开。就像分工一样,在分割每个组件之后,我们可以优化每个组件并生产出更好的产品,使整体大于部分的总和。这里有三个协同作用:
- 模块化 PoS 安全性可以在更多分片上重新分发验证器,因为更多的验证器在线并且可以安全地支持更多数据,更去中心化,更大规模。
- L1 上的其他分片对汇总的执行能力有放大的影响。在向 L1 分片添加数据之前,rollup 可以压缩大量数据,因此分片中的任何额外空间都会对汇总的可用空间产生巨大影响。规模越大,执行速度越快。
- rollup 上发生的网络事务活动越多,购买 L1 块空间所支付的总费用就越多。为区块空间支付的总费用越多,支付给 L1 验证者的收入就越多。支付给验证者的费用越多,增加验证者的动机就越大。在 L1 中添加更多验证器,增加计算资源,并创建更多分片。
模块化设计的优点是,每个模块的优化都会放大其他模块的优化。
- 通过 PoS 增加去中心化,增加以太坊上的分片数量。
- 以太坊 L1 上的更多分片将使 L2 rollup 的规模增加几个数量级。
- L2 rollup 的更大规模释放了新的可行的经济活动,并最终增加了 L1 汇总支付的集体费用。
- 支付给 L1 的更多集体费用增加了运行验证器的动力,使验证器池更大,并允许创建更多的分片。
- 来回执行此操作。
解锁模块化区块链的未来
虽然故障证明是解决分布式区块验证的有用工具,但全节点依赖于区块可用性来生成故障证明。恶意区块生产者可能会选择仅发布区块头并保留部分或全部相应数据,从而阻止完整节点验证和识别无效交易,从而生成故障证明。
这种类型的攻击对于完整节点来说是微不足道的,因为它们可以简单地下载整个块,并在它们注意到不一致或保留的数据时从无效链中分叉出来。但是,轻量级客户端将继续跟踪潜在无效链的标头,从完整节点分叉。
这是数据可用性问题的本质,因为它与故障证明有关:轻量级客户端必须确保所有事务数据在验证之前在块中发布,以便完整节点和轻量级客户端必须自动就规范链的同一标头达成一致。从本质上讲,博弈论规定,这里使用的基于故障的验证系统将被利用,并导致诚实的参与者处于双输的局面。
轻量级客户端如何确保一个块中的所有事务数据都被释放,而不必下载整个块 – 集中硬件需求,从而破坏轻量级客户端的目的?实现这一点的一种方法是通过称为擦除编码的数学原语。通过复制块中的字节,纠删码可以重建整个块,即使丢失了一定百分比的数据。
该技术用于执行数据可用性采样,允许轻量级客户端通过随机抽样块的一小部分来概率地确定已发布的整个块。这允许轻量级客户端在接受特定块之前确保所有交易数据都包含在特定块中,并遵循相应的块标头。
但是,此技术有一些注意事项:数据可用性采样具有高延迟,并且与诚实的少数假设类似,安全保证依赖于以下假设:有足够的轻量级客户端执行采样,以便能够概率性地确定块的可用性。
有效性证明和零知识汇总
分布式区块验证的另一种解决方案是消除状态转换所需的交易数据。相比之下,与错误证明相比,有效性证明假设了更悲观的观点。通过删除争议过程,有效性证明可以保证所有状态转换的原子性,并需要为每个状态转换提供证明。这是通过利用新型零知识技术 SNARKs 和 STARK 来实现的。
与故障证明相比,有效性证明需要更多的计算强度,以换取更强的状态保证,从而影响可伸缩性。
零知识汇总是利用有效性证明而不是错误证明进行状态验证的汇总。它们遵循与乐观汇总类似的计算和验证模型(尽管将有效性证明作为模式而不是错误证明),通过排序器 / 证明器模型,其中排序器处理计算并证明生成相应的证明。
例如,Starknet 使用集中式音序器启动,用于引导目的,并在路线图上逐步分散了开放音序器和证明器。由于在定序器上进行链下执行,计算本身在 ZK 汇总上是无限的。
然而,由于这些计算的证明必须在链上验证,因此证明生成的最终性仍然受到瓶颈。请务必注意,利用轻型客户端进行状态验证的技术仅适用于故障防护体系结构。由于状态转换通过有效性证明保证是有效的,因此节点不再需要事务数据来验证块。
然而,有效性证明的数据可用性问题仍然存在,并且稍微微妙一些:尽管有保证状态,但有效性证明的事务数据仍然是必要的,以便节点能够更新并为最终用户提供状态转换。因此,使用有效性证明的汇总仍受数据可用性问题的约束。
我们现在的位置
加密货币的世界充满了部落主义和政治。一个人在加密货币中的表现将受到这个人来自哪个部落的影响。动机和动机是由预先存在的信念和偏见驱动的。幸运的是,代码和数学对所有这些事情都免疫。上面的整篇文章可以在不使用「以太坊」这个词的情况下重写,并被一个整体优化的模块化区块链的未知路线图所取代。
事实上,这种架构并不是由以太坊单独实现的。汇总不仅仅是以太坊业务,Tezos 还采用了以汇总为中心的路线图,NEAR 还在为分片设计数据可用性,Celestia 正在构建一个专用于汇总的安全和 DA 层。关键是,如果我们回到过去或跳到一个不同的平行宇宙,再次掷骰子 10,000 次,加密货币行业将发现自己在 99.9% 的时间内处于模块化设计的结论中。
这是区块链技术发展最合理的结论。它与以太坊「政治联系」的唯一原因是,以太坊一直是唯一能够为研发提供充分资金并能将我们带到这一点的生态系统。随着时间的推移,我们将看到所有 L1 区块链要么退化为模块化设计结构(限制 L1 块空间,将执行推向汇总,增加节点数量),并成为全球非主权货币世界,要么它们将取消共识和数据的负担,只是将其执行环境移植到更分散的链中。
模块化的区块链设计也说明了去中心化作为区块链关键属性的必要性,这使得所有其他功能得以实现。以太坊通过增加去中心化而不是牺牲去中心化来解决可扩展性三难困境。只有通过优化去中心化,你才能获得上面解释的模块化的好处。