模块化区块链:谁动了以太坊的奶酪?

模块化区块链需要有一条流动性充沛且存在溢出现象的公链作为对应的结算层,而这条公链其实就是以太坊,如果模块化区块链彻底与以太坊生态割裂,其叙事就没有太大意义,然而,要从以太坊上吸引流动性,同时还不对以太坊本身进行直接赋能,是一种动了以太坊奶酪的行为

什么是数据可用性

image.png

数据可用性(Data Availability,DA)是指验证者能对区块链网络中交易数据进行查看和下载, 并且保证交易数据是正确的, 这里有几个隐含语义:

  1. 在一定时间段内产生的所有交易数据都能被整个网络上的全节点获取并见证。反之,意味着不存在已经执行但没有公布的交易数据;
  2. 全节点保存的交易数据在验证需要时一定能访问到,即当有验证者向连接的全节点请求交易数据时,全节点不能拒绝将内容发送出;
  3. 全节点发送的交易数据的内容是完全正确,没有隐藏或歪曲信息。

对于单片链而言,例如我们所知的大部分 Layer1 的区块链比特币,以太坊,Solana,数据可用性其实都不是问题,由于共识机制的存在,数据是自然可用的。但随着区块链生态系统(尤其是以太坊)在过去两年中变得更加发达,对于一个交易量在不断增加的网络来说,扩容已经成为一个十分关键的优先事项,其中最受欢迎的解决方案是 Rollup,它涉及到将压缩的交易数据上传到主网,以确保其状态可以得到以太坊网络的保护,并增强安全性。

随着 Rollups 规模的增长,需要上传的数据量也在同步上升。一方面,这增加了以太坊的负担,而另一方面,它也提高了 Rollups 的成本。当 Rollups 跨越了一定的门槛之后,数据可用性才成为一个不可避免的问题。只有确保所有交易数据可以被访问和下载,以太坊才能跟踪和重建 Rollup 上的状态,也只有这样,才有可能将 Rollup 的交易数据存储在一个独立的数据网络中,降低 Rollup 的存储成本,进一步促进扩容。

此外,数据的可用性与 Rollup 的安全性密不可分。在数据遗漏和记录不规范的情况下,从以太坊的角度看,Rollup 的状态将无法辨别。在这种情况下,鉴于 Rollup 有可能不能完全继承以太坊的安全设置,尽管性能良好,但用户会对 Layer 2 保持警惕。

数据可用性和存储的区别

数据可用性涉及到数据的存储和检索,但这个问题与存储不一样,两者的重点领域不同。存储需要在较长的时间内保持数据随时可供检索,在此期间,数据是有意义的。数据可用性需要确保主区块链网络产生的最新交易数据被发布到网络上(可能是自己的网络以外的网络),并易于访问。

一般的存储网络,例如 Filecoin,Arweave 其实并不适合数据可用性网络,因为存储的对象往往是大文件,而在每个以太坊区块区间内获得所有 Rollups 的数据可用性所需的数据量一般小于 2MB。数据可用性网络可以设计成非常精细的数据采样验证和检索过程,但存储网络不能这样设计,否则处理大量的数据就不可行了。

不过存储是数据可用性的支柱,数据可用性是存储的先决条件,存储网络和数据可用性网络还是可以做结合的,例如将数据可用性网络产生大量的数据存在于一个独立的存储网络中,便于数据可用性节点减轻负荷,专注做数据采样验证和检索。

数据可用性常见方案

Danksharding

image.png

Danksharding 是以太坊正统的数据可用性方案,前置方案是坎昆升级即将引入的 EIP-4844 提案,即 Proto-Danksharding,引入了一种称为 Blob carrying Transactions 的交易格式。这种交易格式与普通的交易格式相比,多了一个 Blob 的位置可以用来存放 L2 的数据。而且,Blob 数据在一个月后会被节点删除,从而大幅节省了存储空间。

目前 Rollup 上传数据到 Layer1 是以 Calldata 的形式,这种方式非常昂贵,占 Layer2 交易费的九成,Blob 这种交易格式能够提供比 Calldata 更廉价的数据可用性。主要有两方面原因:一方面,Callda 存在于 Execution Payload 中,而 Blob 数据存储于 Prysm 节点或者 Lighthouse 节点中(而不是在 Geth 中),相比而言 Calldata 需要被合约读取时所消耗的资源要多很多;另一方面,Blob 数据是短期存储,一个月后节点会删除 Blob 数据。

完整的 Danksharding 升级会引入数据可用性抽样(DAS,Data Availability Sampling),节点通过 DAS 检查,可以只下载一些随机选择的块来验证一个块是否已发布。由于 DAS 可以对区块数据做并行化验证,所以未来数据分片(Data Sharding)的数量即使很多,也不会增加单个验证节点的负担,反而会刺激更多验证节点加入,从而保证验证节点的充分去中心化。为了实现 DAS,引入了纠删码技术;同时为了确保纠删码被正确编码,又引入了 KZG 多项式承诺(KZG Polynomial Commitments)。

由于 Danksharding 尚未上线,目前主要的链下数据可用性方案包括 Validium 和模块化区块链。

Validium

Validium 是 Danksharding 的过渡方案,目前大部分 Rollup 都采用 Validium 作为链下数据可用性方案,例如 Arbitrum Nova,StarkEx、zkSync2.0、Polygon zkEVM 。

Rollup 将交易数据可用性验证的责任分配给相对较小的一组可信节点,这些节点被称为数据可用性委员会(Data Availability Committees,DAC),轻节点必须相信 DAC 中大多数为诚实的节点,这引入了信任假设。DAC 节点存储区块交易数据的完整副本,并通过在主链上发布加密签名来表明数据确实完全可用。这样,轻节点就能以低成本验证这些签名,从而确信 DAC 节点的数据是可用的,而无需自己实际处理或存储数据。

依赖于集中式 DAC 会给网络带来一定程度的集中风险和单点故障,因此一般用权益证明(PoS)验证器系统代替集中式的 DAC。在这里,任何人都可以成为验证者并在链下存储数据。但是,他们必须提供保证金(即质押 token),并将其存放在智能合约中。如果出现验证者隐藏或歪曲数据,则可以削减其保证金。

image.png

EigenLayer 更进一步,允许将已经质押的 ETH 代币再次质押在其他协议和 DApp 中并参与其验证过程,从而使其他协议和 dApp 能够在一定程度上利用以太坊网络的安全性。

目前,如果以太坊网络上的验证者参与恶意行为,他们可能会没收其质押的 32 个 ETH 代币中的一半,也就是最多可损失 16 个 ETH。而 EigenLayer 允许没收剩余的另一半。虽然参与「再质押」会使风险增加一倍,但它也增加了总奖励,因为它不仅获得了以太坊区块奖励,还获得了其他协议的奖励。所以,验证者可以通过 EigenLayer 「再质押」来验证其他协议,以获得额外奖励。在以太坊网络中抵押的普通用户也可以从这些优势中受益。

EigenDA 是 EigenLayer 的数据可用层应用,本质上就是使用「再质押」策略的分布式 DAC 技术,罚没不当行为节点「再质押」的以太坊,可以降低但仍然不能完全消除轻节点的信任要求。

模块化区块链

image.png

对比模块化区块链,单片链在单个层上包含以下四个组件:

  1. 执行:确保所执行的交易进行正确的状态更新。执行层必须确保被执行的交易是有效的,即交易的结果是有效的状态机转换。
  2. 结算:确保有一个使得执行层能够验证证明、解决欺诈纠纷的环境,并作为执行层之间的桥梁。
  3. 共识:确保交易的顺序达成一致。
  4. 数据可用性:确保交易数据的可用性。

image.png

模块化区块链指将「执行、结算、共识、数据可用性」四个组件中至少一个组件完全外包给外部链的区块链,以 Celestia 和 Polygon Avail 为代表。模块化区块链的数据可用层,提供了更高级的 Validium 能力,以 Celestia 为例,其架构图如下:

image.png

Celestia 将区块链堆栈解构为不同层次,主要剥离共识和数据存储,通过提供数据可用性,支持多种执行层的接入。

Celestia 通过一个共识协议 (基于 Cosmos SDK 的 Tendermint)来排序交易,不去推理这些交易的有效性, 也不负责执行它们,平等对待所有交易,所有交易的有效性证明都由 Rollup 节点在轻节点中执行。任何构建基于此架构的去中心化应用程序的开发人员都将享有更好的灵活性、安全性和可扩展性。

技术原理上,Celestia 仍然采用 DAS,但通过 Reed-Solomon 方式对区块数据进行编码:每个区块数据被分成 k*k 部分,排列成 k*k 的矩阵,并且引入校验数据将矩阵扩展成 2k*2k,对扩展矩阵的每行和列分别计算 Merkle 根,再组成Merkle 根保存在新的区块头中。

image.png

轻节点做验证时随机选取一个坐标点,向自己信任的全节点获取该坐标对应的区块数据和 Merkle proofs。如果这部分数据的正确性验证通过,则轻节点广播区块数据和 Merkle proofs,这样当网络中有足够多的轻节点时,全节点就能通过收到的采样数据恢复出完整的原始区块数据。

轻节点保证了数据可用层的有效性,节点数量越多,能允许的区块吞吐越大。为了验证采用数据的正确性,轻节点需要获取 4k 大小的Merkle roots。对于 n^2 字节大小的区块,每个轻节点需要获取 O(n) 字节量级的数据,因此对于单个轻节点带宽的提升能带来平方级别吞吐的提升。

写在最后

笔者来自蚂蚁链,也是一名以太坊上的开发者(最近也在学习 Solana 开发和 Sui 开发),平时喜欢看书和写作,所以也运营了一个 Web3 的公众号(公众号名:小猪Web3),主要聚焦 Web3 前沿技术和发展历程,所以在这里还是小小打一个广告,希望能在登链认识更多志同道合的朋友交流学习。

这一篇也是我公众号的一篇发表,探讨了模块化区块链对以太坊的威胁,尽管模块化区块链技术与 DA 层叙事有利于 Web3 的长期发展,但模块化区块链需要有一条流动性充沛且存在溢出现象的公链作为对应的结算层,而这条公链其实就是以太坊,如果模块化区块链彻底与以太坊生态割裂,其叙事就没有太大意义,然而,要从以太坊上吸引流动性,同时还不对以太坊本身进行直接赋能,是一种动了以太坊奶酪的行为,以太坊会进一步加强以太坊在 Layer 2上的 DA 控制力,维护以太坊 DA 的正统性。

点赞 3
收藏 1
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Web3朱大胆
Web3朱大胆
0xBD95...d478
从百度到灯火阑珊处,从传统互联网转型区块链的程序员,目前在蚂蚁链负责区块链研发,熟悉主流公链和Web3项目,擅长C++/Rust/Go/Solidity/(Sui)Move。同时也在做Web3自媒体,致力于分享前沿Web3技术。 行业交流欢迎加WX:go15810306120