现有的这些数据可用性解决方案是探路人,但我总感觉这些方案还是差些兴奋点。

作者:0x1,IOBC Capital 

数据可用性(Data Availability)主要存在于轻客户端节点相对全节点的语境下。对于轻客户端节点的数据可用性问题,行业内已经达成共识——采用纠删码(erasure codes)来解决。

不仅轻客户端节点有数据可用性问题,Layer1+Layer2 的叙事也好,Modular Blockchain 的叙事也罢,都会存在数据可用性问题。

目前来看,行业里针对数据可用性问题,主要有以下三个方面的方案:

一、在 L1 链上存放数据的降成本方案——EIP-4488 和 EIP-4844

以太坊用 Rollup 扩容时做一笔交易,主要有三类费用:执行费用(网络中所有节点执行交易并且验证其有效性的费用)、存储/状态费用(更新新状态的费用)、数据可用性费用(将数据发布到 L1 的费用)。其中,数据可用性费用占大头。

目前 Rollup 上传数据到 L1 是以 Calldata 的形式,这种方式非常贵。所以提出了 EIP-4488,可以将每个非 0 字节的 Calldata 成本从 16Gas 降低到 3Gas,但其实这个费用仍然挺高的。

然后,又提出了 EIP-4844 提案,即 Proto-Danksharding。引入了一种称为 Blob carrying Transactions 的交易格式。这种交易格式与普通的交易格式相比,多了一个 Blob 的位置可以用来存放 L2 的数据。而且,Blob 数据在一个月后会被节点删除,从而大幅节省了存储空间。

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

总而言之,这可以理解为 Ethereum 在 L1 链上降低数据可用性成本的一个方案。

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

上述一系列解决方案之后,Ethereum 节点(或者轻客户端)只需要随机下载一部分数据块,就能验证所有数据是可用的。

二、执行层 Rollup 推出的数据可用性方案

目前头部的执行层 Rollup 也有自己的数据可用性解决方案,以 StarkEx、zkSync2.0、Polygon zkEVM 等为例。

StarkEx

StarkEx 是一个用于创建许可的、特定于应用程序的扩容解决方案框架。目前有包括 dYdX、Immutable、Sorare、DeversiFi、Reddio 等项目采用 StarkEx 解决方案。

StarkEx 具有多种数据可用性模式:Rollup、Validium、Volition。这三种模式都是基于有效性证明。在 Rollup 模式中,所有数据都在链上提交(data on-chain);在 Validium 模式中,数据保持在链外(data off-chain),只有对最近状态的承诺以及该状态的有效性证明提交到链上;Volition 模式是一种混合模式,在这种模式下用户可以自行选择单个交易粒度的数据存储模式是链上还是链下。

由于 Validium 的数据保持在链外,只需要把最近状态的承诺和证明提交上链,所以 Validium 交易费用更低,同时 TPS 也更高,但代价是 StarkEx Validium 的运营商(Operators)可以冻结用户的资金。StarkEx 引入了一个获得许可的数据可用性委员会(DAC,Data Availability Committees),DAC 必须通过其法定人数对状态的每次更新进行签名来确认它已收到数据。目前在 StarkEx 中,DAC 由 8 名参与者组成。

zkSync

zkSync2.0 引入了一个新的整体架构,提供 zkRollup 和 zkPorter 两种账户的混合。但这两部分也是可组合和可互操作的:zkRollup 端的合约和账户能够与 zkPorter 端的账户无缝交互,反之亦然。从用户的角度来看,唯一明显的区别是 zkPorter 账户的费用便宜 100 倍。

zkRollup 状态具有链上数据可用性,zkPorter 则采用链下数据可用性。具体而言 zkRollup 的数据可用性在 L1,zkPorter 的数据可用性在 L2。其中,zkRollup 的交易数据通过 Calldata 发布到 Ethereum,这个就是常规操作,有特色的是 zkPorter 的数据可用性方案。

zkPorter 通过结合 zkRollup 和分片思想的混合方法来处理数据可用性。它可以支持任意多个分片,每个分片都有自己的数据可用性策略,由分片的智能合约定义。分片的选择在个人账户级别进行控制。相当于把数据可用性委托给各个分片,这些分片可以自由选择不同的解决方案。

zkPorter 的分片主要包括:Shard 0、Guardians Shard 和 Protocol X Shard。

Shard 0 是一个简单的 zkRollup shard,具有底层以太坊 L1 的完整数据可用性和安全保证。所以 Shard 0 是 zkPorter 内部运行成本最高的分片,大约是在主网上交易成本的 1/100。

其他分片则是在自己的智能合约上定义自己的数据可用性策略。zkPorter 的分片交换链上数据可用性,使交易成本进一步降低 10-100 倍,TPS 增加超过基础分片。zkPorter 引入了一种可选的验证器机制——zkPorter Guardians——这种机制使得协议能够邀请协议利益相关者作为协议分片上的数据可用性保证人

zkPorter 的数据可用性由 zkSync 代币持有人(监护人)保护。他们通过签署区块来跟踪 zkPorter 端的状态,以确认 zkPorter 账户的数据可用性。监护人使用 zkSync 代币参与权益证明(PoS)。这也就是所谓的数据可用性的加密经济保证。

Polygon zkEVM

Polygon zkEVM 是一种基于加密证明的去中心化以太坊 Layer2 扩容方案,可为交易提供验证和快速确定性。和 Polygon Avail 一样都是 Polygon 推出的扩容方案,侧重点有所不同。虽然他们推出了 Polygon Avail 这种通用的数据可用性方案,但 Polygon zkEVM 还是设置了自己的数据可用性方案。

Polygon zkEVM 也是采取混合模式的数据可用性,可以选择 Validium 或者 Volition。Validium 模式下,数据存储在链下,只有有效性证明在链上发布;Volition 模式下,对于某些交易,数据和有效性证明都保留在链上,对于其余交易则只有证明在链上。

Scroll

当然,也有尚未设计自己的数据可用性方案的 zkRollup,比如 Scroll。

其 CTO Ye Zhang 在接受链捕手采访时表示,“Scroll 暂时没有设计专门的数据可用性方案。对以太坊技术的时间线还是比较乐观的,不论是 Danksharding 还是 Proto-Danksharding。其次,引入额外的数据可用性方案会让系统整体的安全性有一定的妥协,所以我们认为长期来看最好还是用以太坊作为原生的数据可用层。”

二、数据可用性的通用解决方案

除了 Ethereum L1 和 Rollup L2 在解决数据可用性问题及降低数据可用性成本外,还有一些项目也在尝试推出数据可用性的通用解决方案。这类项目有望在未来的模块化区块链中承担起数据可用性层的重要作用。目前主要有 Celestia 和 Polyon Avail 两个项目。

Celestia

Celestia 是一个模块化区块链,专注于数据可用性层。Celestia DA 层有两个关键特征:数据可用性采样(DAS)和命名空间默克尔树(NMT)。DAS 使轻节点无需下载整个区块即可验证数据可用性;NMT 使 Celestia 上的执行和结算层能够下载仅与它们相关的交易。Celestia 要成为一个独立的数据可用性层,有三个核心事项:

  • Rollup 将所有交易数据传递给 Celestia;
  • Celestia 在其网络上发布所有这些数据;
  • Ethereum 确认 Celestia 已经存储和发布了这些数据,并且可以随时访问。

总而言之,Celestia 通过纠删码(Erasure Code)+欺诈证明+经济约束和激励机制实现了这个通用的数据可用性解决方案。

Polygon Avail

Polygon 是一个生命力很强的项目,其团队规划和研发能力非常强。Polygon 经历了扩容技术方案从状态通道、Plasma 到 Optimstic Rollup、zk Rollup 的演变,Polygon 团队内部也探索了多种扩容方向,现在也仍然保持着多个扩容方向的推进,比如:Polygon Avail、Polygon Zero、Polygon Miden、Polygon zkEVM 等。Polygon 就像是一个 Layer2 聚合器,聚合了多种扩容方案。

Polygon Avail 是一个旨在解决以太坊扩容方案的数据可用性的项目。官方在官网上将 Polygon Avail 定义为一个模块化区块链,对应数据可用性层。

Avail 可以为任何轻客户端提供数据可用性的高保证,当然在官方文档中也直言 “并不比任何其他网络为轻客户端提供更高的 DA 保证”。Avail 专注于通过利用 KZG 多项式承诺、纠删码和其他技术来允许轻客户端高效且随机地小样本采样,从而证明区块数据可用而无需下载全部区块以验证其完全可用性。

与 Celestia 一样,Polygon Avail 也是一个通用的数据可用性解决方案。与 Celestia 不同的是,Celestia 采用欺诈证明确保纠删码正确,而 Polygon Avail 则采用 KZG 承诺。Celestia 实现起来比较简单,但由于其纠删码和轻节点采样数据的规模较大,因此需要的通信带宽略高。Avail 涉及相对复杂的加密实现,难度稍大。它的优点是纠删码规模小,轻节点采样数据量小,带宽要求低。

总结

以上三个方面的方案都是旨在解决链上数据可用性问题,或在 L1 上引入存放数据的新方式,或以模块化的视角看待区块链的发展然后去做通用的数据可用性层,或在 L2 上设计 Data off-chain 的廉价数据可用性方案。图片我感觉这些方案在未来很长一段时间会共存。Layer1+Layer2 的架构下,“Blob” 取代 “Calldata” 承接 Layer2 的数据可用性,Validium、Volition、zkPorter 则以有限相关方范围内的经济约束和激励机制确保 Layer2 本身也具备数据可用性解决方案。模块化区块链的叙事下,Polygon Avail 和 Celestia 类通用的数据可用性方案则以相对更加去中心化的方式,在未来承担起 DA 层的责任。

同时,更希望能看到更多优秀的创业团队在数据可用性领域的探索。现有的这些数据可用性解决方案是探路人,但我总感觉这些方案还是差些兴奋点。

免责声明:作为区块链信息平台,本站所发布文章仅代表作者及嘉宾个人观点,与 Web3Caff 立场无关。文章内的信息仅供参考,均不构成任何投资建议及要约,并请您遵守所在国家或地区的相关法律法规。