引介


这是去中心化 Rollup 访谈系列最后一期,本集从 “数据可用性和去中心化存储” 的角度探讨 rollup 去中心化。我们邀请到了 EthStorage 创始人 Qi Zhou,针对 DA 如何重用以太坊主网的安全属性、EIP-4844 和 danksharding、不同 DA 模型的安全性对比进行了讨论。周老师还向大家介绍了 EthStorage 如何在下一次以太坊升级中与 EIP-4844 进行结合。



Host: Franci


本期嘉宾:

  • EthStorage 创始人 Qi Zhou, twitter @qc_qizhou


往期


第一期:如何去中心化 Rollup?

  • Arbitrum 研究员 Patrick McCorry


第二期:共享排序器和 L2 共识

  • AltLayer Network 创始人 Yaoqi Jia

  • Scroll 研究员 Toghrul Maharramov

  • Starknet Exploration Lead Abdelhamid Bakhta


第三期: 证明者网络和 zk 硬件加速

  • Scroll 联合创始人 Ye Zhang

  • Cysic 联合创始人 Leo Fan


收听

点击订阅 Podcast,了解更多:

https://ecnpodcast.fireside.fm/decentralized-rollups-series-4


Youtube:

https://www.youtube.com/watch?v=fOrVFdo919I


小宇宙:

https://www.xiaoyuzhoufm.com/episode/64a19d287efe63899e65176d


时间戳


- 00:43 嘉宾介绍

- 05:42 数据可用性 (DA) 如何保证 Rollup 的安全

- 10:53 扩容区块空间

- 14:07 从网络带宽成本和存储成本的角度来理解 DA

- 21:27 EIP-4844 和 Danksharding 的关系,以及为什么需要部署 EIP-4844

- 25:21 Danksharding 如何解决区块空间的扩容问题

- 27:33 EIP-4844 测试网的一些开发与经验

- 31:00 数据可用性委员会 (DAC) 的应用和局限

- 37:17 EthStorage 与 DAC 的区别

- 39:50 存储证明的机制

- 42:22 EthStorage 如何维持无需许可的存储证明


嘉宾介绍


很高兴能够跟大家来分享一下我们对整个以太坊 DA 技术、以及我们在这上面做的去中心化存储的一些想法。我是 18 年全职加入 Web3 行业的。之前在谷歌、Facebook 这些大厂做工程师。而且有乔治亚理工 (Georgia Institute of Technology)  PhD 的学位。自从 2018 年,我一直在关注并且从事 Web3 基础设施的工作。主要是因为之前在大厂里面也是做这方面的事情,包括分布式系统、分布式的存储。另外也是认为这方面在整个区块链还有非常多的可以改进的空间。不管是一开始我们做的各种,比如说像叫做执行分片的技术。那么这是以太坊的分片 1.0,到现在以太坊的分片 2.0 的这种叫数据分片的技术,以及后来的数据可用性。其实都是在围绕整个 Web3 基础设施做证明的一些创新和工作。


所以我们也是紧密地去跟以太坊路线图,去学习研究,并且以这种社区的方式参与、改进。我们去年年底非常荣幸地拿到了以太坊基金会对我们在“数据可用采样”的研究的一个支持。帮以太坊基金会做一些偏理论的,danksharding 上的一些研究工作,包括数据如何能够有效恢复。同时我们也在以太坊的 DA 技术基础上开发 EthStorage 这样一个以太坊的数据层。我们可以使用以太坊的智能合约大规模地去验证链下数据存储。这个对于以太坊来说也是非常有意义的。所以我今天非常高兴能跟大家一起分享,包括 EthStorage 如何在 DA 技术上去更好地构建数据存储层的一个网络。


访谈部分


第一部分:关于 DA 定义的讨论

数据可用性 (DA) 如何保证 Rollup 的安全

首先我在研究 DA 的过程也是发现很多人对 DA 的定义有一些不理解的地方。今天也非常高兴能够讨论一下,此前我也跟很多以太坊基金会的成员,像  Dankrad Feist 他们讨论 DA,以及 DA 在整个的以太坊 L2 里面扮演的重要角色。


前面说到了以太坊 rollup 的一些基本工作机制,怎么去把这些链上的交易挪到链下,然后再通过一系列证明方式 (fraud proof 和 validity proof) 去告诉 L1 的智能合约这些执行结果是可以通过这些证明方式来证明是对的。


那么有个非常重要的核心是,他们希望能够复用以太坊本身网络的安全性,但同时又能够对以太坊整个计算能力进行极大的扩容。刚才说计算能力扩容,实际上是把链上计算放到链下,那么怎么能够同时实现以太坊的安全性。


比如在 Optimistic Rollup 情况下,怎么保证有人能够挑战 sequencer 在做恶意的事情,这里面很重要一点是需要知道链下具体的原始交易是长什么样子的。如果链下具体的原始交易都无法获得的话,那我就无法找到原始交易记录去链上对 sequencer 进行挑战。所以 DA 能够保证安全性,就是因为它需要让每一笔链下交易的元数据可以拿到链上。


扩容区块空间

因为我们所有的交易数据都要上链,即便不需要计算,但我们还是会产生巨大的交易数据。那么它要解决的核心问题,大家可以理解它是一种非常有效的技术,来扩充区块的空间。大家如果对整个区块链的结构非常了解的话,每个区块里面包含了很多交易内容。这个交易的区块本身,我们把它叫做区块空间。


当前以太坊每一个区块的空间大概是 2、300 KB。但是这样的数目很明显无法满足接下来以太坊扩容的需求。在这里可以做一个非常快速的计算:200 kB 的空间,除以每个交易大概是 100 个字节数目的话,得到 2000 笔交易的数目。2000 笔再除以以太坊的区块时间 12,也就是说以太坊的 TPS 上限就被限制在100 左右。那么这其实对于整个以太坊扩容计划来说还是一个非常小的数目。


所以,以太坊 L2 关心的是如何保障安全的同时,怎么能够把大量的区块数据放到 block space 里面去。然后使得不管是欺诈证明还是有效性证明都能够重用以太坊的区块空间里面的数据去做相应的检查。最后让链下交易的计算结果的安全性能够得到以太坊的保证。那么这基本上就是 DA 跟以太坊的安全性之间的一些关系。


从网络带宽成本和存储成本的角度来理解 DA

DA 主要的成本是两个方面,一个叫做网络带宽的成本,另一个是存储成本。


从网络带宽成本来说,比如在 P2P 网络中,就是比特币和以太坊当前的区块广播的方式,是通过 gossip (广播) 给所有 P2P 节点,去告诉大家我有一个新的区块,长这个样子的。那么这样的网络方式的好处是,它非常安全,所有网络节点最终会接收到一个备份。


不好的地方就是,它对网络的带宽和延迟都会有很大的一个开销。我们知道以太坊是 12 秒出一个区块,经过 POS 升级之后。那么如果这个区块过大导致它可能会超过 12秒的话,大量的区块都无法出块,最后使得整个网络带宽还是下降到一个大家无法接受的程度。所以你可以认为 DA 是解决区块链大量数据上链的带宽问题。


那么第二个就是它的存储成本,这方面其实以太坊基金会有非常多的讨论。核心解决方案的设计中,它不会让整个 DA 上传的区块数据一直被保存。


这引出另外一个问题。当我有这么多数据上了链,但是一个星期或者两个星期之后,会被以太坊的协议丢弃。那么这个过程,我们有没有一些更好的去中心化方案能够来保存这些 DA 的数据。


这也是我们在设计 EthStorage 时的一个初衷。第一方面,很多 Rollup 它需要有更长时间去保存数据。第二方面,有了这些数据之后,我其实可以通过 DA 更好去完成一些全链上的应用。举例来说全链的 NFT,或者是很多 DApp 的前端,甚至包括一些像社交网络里面的大家的写的大量文章或者评论。那么这些都可以通过 DA 的网络,通过更低的成本去上传到整个区块链,并且能获得跟以太坊 L1 一样的安全保障。


这是我们在研究以太坊 DA 的整个技术,包括跟以太坊很多的核心人员讨论之后,发现在这方面,以太坊需要有一个存储层,而且是一个去中心化的、不需要对以太坊本身的协议进行升级的一个存储层,或者我们叫模块化的存储层来解决数据的长期保存问题。


第二部分:关于不同 DA 方案的讨论

EIP-4844 和 Danksharding 的关系,以及为什么需要部署 EIP-4844


Proto-danksharding 又叫做 EIP-4844,我认为可以算是以太坊接下来一个非常重大的升级。为什么要做 4844,有一个非常重要的原因,以太坊基因会在估计以太坊分片的升级路线,也就是 Danksharding 的时间的时候,他们认为整个的升级时间相当长,比如说可能需要三年到五年。当时是 2021、2020 年的时候。


那么在这个过程中,他们预测很快会有非常多的 Rollup 在以太坊上面在跑,但是因为 Danksharding 它提供的数据接口,和现在 Rollup 使用的 Calldata 数据接口是完全不一样的。这会导致以太坊大量的应用会因为新的接口使得他们无法快速升级,并且能够无缝地获得 Danksharding 给他们带来的好处。


我去参加去年的 Devcon 时,Vitalik 他也提到了希望能够让以太坊更好地为这些 Layer 2 提供服务,使得他们可以在使用一样的 Danksharding 接口的情况下开发他们的合约。当 Danksharding 在升完级之后,他们就可以直接继承 Danksharding 提供的新好处,而不需要再去升级他们已有的,并且已经测试好了的合约。


所以 EIP-4844 它实际上是一个超级简化版的 Danksharding,它提供了一个跟 Danksharding 一样的应用接口,包括一个新的 opcode 叫 Data Hash;以及新的一个数据对象叫 Binary Large Objects,也就是 Blob。


这些数据对象是为了设计能够让 rollup 提前去兼容 Danksharding 提供的数据结构,也就是说 Danksharding 会提供一样的 Data Hash 和 Blob 这样类似的概念。但是通过 EIP-4844,他们就提前把这些想法在以太坊接下来的升级中实现。所以在整个 EIP-4844 的设计功能中,大家可以去看他们的接口以及比如说 Pre-compile 和新加的指令,那么都已经可以隐隐看到整个 Danksharding 的未来,在以太坊上面怎么去跟应用层交互的一个过程。


那么这方面以太坊也是从应用角度去思考,怎么能够提前通过一些升级让应用更好地去享受在以太坊上面的各种扩容技术,并且不需要有额外的升级成本。


但是有一个问题就是 EIP-4844 并不解决整个区块空间的扩容问题,Danksharding 才能解决。当前以太坊区块空间大概是 200 KB。到了 Danksharding 之后,在规范中计划的大小是 32 兆,将近是 100 倍的提升。那么现在的 EIP-4844 其实并没有解决区块上链的带宽问题。


Danksharding 如何解决区块空间的扩容问题


4844 的设计下,数据在上链的广播过程中,还是使用跟之前 calldata 一样的方式,是通过 P2P 的网络进行广播。那么这种广播方式最终还是会受到整个 P2P 网络带宽的物理瓶颈的限制。而 Danksharding 的设计方式改变了 P2P 网络广播,然后通过数据采样技术,使得大家不需要去下载所有区块数据的同时,也知道这些区块数据能够被下载到。


其实某种意义上来说,有点像 ZK 的方式,通过数据采样方式,我知道网络里面包含了( 32 兆字节/区块)大小的由 Danksharding 带来的区块数据。但是我不需要去下载所有 32 兆的数据,去保存到本地。如果有足够的机器带宽和足够的存储空间性能,也可以这么做,但对于普通的验证者来说,他是不需要去下载全部 32 兆的数据。


EIP-4844 测试网的一些开发与经验


我们最近已经把我们内部的 EIP-4844 的测试网跑起来,并且部署相应的合约去测试,包括 blob 的数据上传、合约的调用以及数据验证,我们都已经完全走通。所以 EIP-4844 一旦上线,我们就可以在第一时间把我们的合约部署上去。


同时我们也是希望能够通过我们现在和以太坊一些开发者的合作,以及我们的已经开发好的一些合约,能够为以太坊接下来各种 rollup 开发还有学习以及各种工具的时间。


所以我们最近提交了非常多的代码到以太坊,针对 EIP-4844 的工具集,包括新的智能合约去支持 opcode,因为 solidity 现在还不能支持 data hash 这个 opcode。那么所有的一些工作,我们其实都已经在跟以太坊基金会的一些开发者进行同步。


数据可用性委员会 (DAC) 的应用和局限


因为现在 L2 用户支付的开销其中可能有 90% 以上的费用都是支付给数据可用的费用,很多 L2 为了能够更好地降低数据的上传成本,一些项目方包括 ZKSync 出了 ZKPorter,还有像Arbitrum 做了 Arbitrum Nova。他们通过提供自己的 DAC 数据可用性委员会来提供自己的数据层。


这个数据委员会会带来一些额外的信任,才能达到以太坊一样的额外的安全级别。所以他们在挑选数据委员会的时候,一般都会挑选一些比较大牌的比如说数据服务商,或者是大牌的公司去参与这个数据的保存。但是其实也会受到很多挑战和质疑,因为大家觉得这其实是违背了去中心化的无准入的原则,也就是说大家都能够去参与。但是现在的情况是大部分数据委员会都是几个跟 Layer2 项目方非常紧密的一些组织。


像 Arbitrum Nova,我上次看的时候,可能有六七个这样的节点。比如说跑在谷歌的云上面,或者跑在 Amazon 的云上面的数据委员会节点去保存这个数据,并且他们都能够提供所有在 Arbitrum Nova 上面的执行成本。这样的一个好处是使得他现在的执行成本是以太坊的大概千分之一。因为他不需要把所有的数据都去写到以太坊的 Layer1上面去。但是现在还是相对偏中心化,所以比较高价值的应用相对还会有比较大的担忧,因为如果是有大量的资金,上千万或上亿的资金,那么他必然要相信数据委员会的数据是可用的。


所以我们在设计 EthStorage 的时候,其实是没有任何数据委员会的概念。在设计过程中,我们希望所有人都能够去参与,成为一个数据提供商。而且他们是通过加密的证明,去证明他们确实存了这一份数据。因为理论上来说数据委员会的这个模型,虽然我说我有七个和八个数据委员会节点,但是实际上,我完全可以只保存一份物理数据,但是我可以表现出来我有七八个地址都能提供这个数据。


然后怎么去证明我这个数据有足够多的物理副本来保证数据的安全性。其实是我们在做 EthStorage 时一个非常重要的创新,也是我们去跟以太坊基金会 ESP (生态支持计划) 去宣讲的时候重点强调的地方。我们通过 EthStorage 使用的 ZK 加密技术,去保障 Layer2 数据提供的节点。他们能够无准入加入并且能够证明他们有这么多的存储副本,并且能更好保证数据的安全。


所以我觉得 DAC 的确现在是一个非常临时去解决数据上传到 Layer1 的成本的方案。我们相信我们通过 EthStorage 的一些加密技术,再加上一些 Layer1 基于以太坊的这种合约上面的一些证明验证方式,能够提供更好的数据保存的方案。接下来我们也是随着以太坊的 4844 上线,会主动把这些创新的内容,以及它在网络上面跑的结果给大家分享。


EthStorage 与 DAC 的区别


EthStorage 其实是一个以太坊存储 rollup,Storage rollup。那么我们可以假设现在一个Layer 2 不是一个执行以太坊 EVM,而是一个非常大的数据库,或者叫 key value database。它可以是上 10 TB,上百 TB,甚至上千,就是 PB 级别的这样一个数据库。


那怎么保证我的数据库的数据能够获得以太坊一样的安全保障。首先第一步,我们需要把数据库里面这些大规模的数据全部都要通过 DA 发布到以太坊 Layer 1 上面去,使得大家都能够看到这些数据在以太坊的整个 DA 层是可以拿到的。但是我们不能保证它能够永久的拿到,因为以太坊 DA 会在两个星期或者四个星期左右的时间里丢弃掉这些数据。


第二步就是我们把这些数据上传之后,接着去保存在我们 Layer 2 的节点上。这跟 DAC 不一样,我们的数据保存节点是无需许可的,任何人都可以参与。并且它证明它的存储,然后拿到相应的回报。这种方式是通过我们建立的一套存储证明机制,当然这个存储证明机制也是受到了像 Filecoin、Arweave 这些系统的存储证明的一些设计方案的启发。但是我们需要专门针对以太坊的 DA 框架以及以太坊智能合约去做相应的存储证明的一个网络和证明的系统。所以这方面的话,我们相信我们在以太坊整个生态,甚至整个去中心化存储方面,我们是有一个非常独特的贡献的。


存储证明的机制


基本上所有存储证明的机制,包括像 Filecoin、Arweave 都需要首先对用户的元数据作一个编码。但是这个编码的过程是需要根据数据提供商的地址来进行编码,也就是说每一个数据提供商他都需要有自己的不同地址,然后根据它的地址和元数据进行编码之后保存一个叫做 unique replica (唯一副本) 的东西。比如 hello world 这个数据,在传统中心化数据库里面,或者是传统化的分布式系统里面,可能保存四五个到不同的物理机器上面去,每个保存都是 hello world。但是在 EthStorage 里面,它保存四五个或者是十个二十个,它的 hello world 都会根据每一个数据提供商的地址去编码成为不同的数据,然后保存在不同的地方。


这样的好处是,我们能够通过密码学的机制来证明有这么多的不同地址,就是不同的存储提供商。他们对这些数据进行了编码,并且根据编码数据做了相应的存储证明。基本上 Filecoin、Arweave 都是类似这样的。但是他们只针对静态数据,我们现在是针对以太坊 DA 的热数据。并且是可以通过以太坊智能合约去验证,这份数据有这么多的物理副本。也就是说每个编码好的数据,我们去证明这些编码好的数据保存在这个网络,而且每个编码数据对应的数据本身是不一样的,因为它是由不同的存储提供商的地址去编码出来的。


所以基本上我们在设计的过程中去对现在已有的去中心化存储的一些思路进行优化和改进。但是同时我们也需要对以太坊的 DA 方案做很多优化,包括动态数据的修改,怎么能够在以太坊的合约上有效地证明和优化 gas 开销。那么这里面有非常多前沿的技术和研究需要完成。


EthStorage 如何维持无需许可的存储证明


以太坊有种节点叫归档节点,会保存以太坊的所有交易的历史记录,包括世界状态。但接下来 Danksharding 里面的一个巨大挑战是 Danksharding 计划会在一年产生大概 80TB 的数据。那么假设以太坊跑了三到四年,它会产生 200 到 300TB 的数据,而且会不断增加。那么这其实会对归档节点有不少的挑战,因为在运行归档节点过程中,它是没有额外的代币学经济来激励大家去保存这个数据的。


EthStorage 首先需要解决数据的永久保存的代币学激励的问题。这方面实际上我们也是采用了 Arweave 的 discounted cash flow 的模型来去实现激励。并且同时非常有效地去让它在整个智能合约上执行。


第二就是它的无需许可的方式。因为我们激励设计里面是鼓励 10 个、50 个甚至 100 个节点在网络里面保存数据。所以对于任何一个节点来说,它都能够去联系其中的任何一个节点,同步相应的数据,之后它就能够成为数据存储方。可能还会有更多数据激励的一些优化设计。


第三个,存储节点因为它一次性要保存所有的数据,可能是好几百 TB 甚至长期来说很有可能达到一个 PB 级别的数据。那么这样的话对于单个节点来说,成本是非常高的。所以我们在这里面再进一步做了一个叫做 data sharding 的东西。这样的话,对于普通节点,它只需要有 4 TB 这样的容量空间 (我们现在设计是 4 TB,当然后面可能会升级到比如 8 TB) 它就可以去保存网络中归档数据中的一部分,但我们又通过一些激励机制保证大家最后把所有这些数据都拼在一起之后,都能够在我们的 layer2 网络里面保存。


所以在这里面有非常多的问题,比如归档节点造成的各种数据太大的问题;代币的激励问题;还有去中心化的准入问题...这些问题我们就可以通过以太坊的智能合约部署在 layer1 自动去实现的。那么对我们来说,我们只是去提供数据网络,使大家只要有足够的数据成本就可以去下载数据并且生成存储证明,提交到以太坊网络里面去,然后达到相应的回报。我们整个合约基本上已经设计完毕,并且已经在以太坊的 4844 Devnet 上面开始进行调试。