前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Web3公链DA扩展方向(1-概述、danksharding、validium)

Web3公链DA扩展方向(1-概述、danksharding、validium)

原创
作者头像
davy the bot
修改2024-05-15 13:15:17
2460
修改2024-05-15 13:15:17

1 背景概念

什么是数据可用性?

DA(Data Availability)的概念是什么?

区块链网络中的节点如何确保新提议的区块的所有数据实际上都是可用的? 交易数据确定已经发布了吗?

即交易和状态存储在哪里,以及能否永久存储,能否被实时读取,且能够被验证真实性。

为什么数据可用性很重要?

数据可用性 + 共识 = 链的「安全性」, 是区块链安全不可或缺的一环。

(1)为了保证DA, OPRollup 和 ZKRollup 的设计都要求运营商将以太坊上的所有交易详细信息作为“calldata”提交。虽然这使他们在短期内避免了 DA 问题,但随着汇总内事务数量的增加,需要提交的数据量也会增加,从而限制了这些汇总可以提供的扩展量。

(2)为轻节点,客户端提供接入方式.

DA 和 Rollup 为什么要绑定来叙事?

回归到以太坊的扩容

  • 链上扩容 : (1)共识优化 → 新的公链(Solana,Avalance) (2)分片加速 → 部分分片项目(Near),以太坊2.0设计(已被搁置)
  • 链下扩容 - Layer2 : (1)State Channel, Plasma → 已放弃, (2)Sidechain + 跨链桥 → 稳定,无更多叙事 (3)Rollup → 叙事的中心

以太坊的未来发展以rollup为叙事中心 → rollup的本质:完成了交易打包,执行,结算的链下迁移, 数据可用性DA仍然依赖以太坊,受到以太坊的制约。

https://members.delphidigital.io/reports/the-hitchhikers-guide-to-ethereum#original-data-sharding-design---separate-shard-proposers

以太坊为什么要选择rollup?

rollup已经被证明为可行的方向,可以即时解决之前需要数年靠开发分片才解决的扩容问题, 选择支持rollup让更多项目绑定以太坊作为DA和信任层, 保持以太坊在公链中的统治性地位。

https://www.ethereum.cn/a-rollup-centric-ethereum-roadmap

V神的几篇博客都一直在强调rollup是以太坊发展的方向。

https://vitalik.ca/general/2021/12/06/endgame.html

小结Rollup技术的发展要解决DA受到制约的问题, DA扩容的当下目标也是为了更好地支持rollup的发展。

(rollup还有一个瓶颈是要实现去中心化sequencer以实现抗审查,但与本文关联不大)

公链DA扩展的三个叙事方向

DA扩展的瓶颈是什么

  • 区块大小限制: 区块大小限制, calldata存放数据费用昂贵;
  • 节点验证的限制 : 验证者需要下载所有的数据来验证数据的有效性;
  • 存储限制 : 存储大量数据的机器成本很高;

(从不可能三角来说, 增强区块链的数据可用性,即增强了Scalability, 必然要带来Security或Decentralization的缺失)

对应的一些解决技术: Danksharding, DAS数据可用性采样, 纠删码 , 第三方存储, 定期删除数据。

DA扩展的解决方向有哪些

  • 以太坊的DA扩容,Proto-danksharding(EIP-4844),Danksharding
  1. 本质上是在以太坊区块中提供了更廉价外挂数据块的空间,给rollup使用,这些空间是可以在后续被删除的,相当于缓存;
  2. 分为短期计划 Proto-danksharding(EIP-4844) 和长期计划 Danksharding;
  3. 关键技术包括KZG承诺,二维纠删码,PBS构建者与验证者分离;
  • Rollup项目的DA解决方案
  1. 本质上是现有rollup项目为降低上L1的成本自己打造的DA层服务;
  2. StartEx DAC/zkPorter/Arbitrum Nova;
  • 模块化公链(Modular Blockchains)
  1. 本质上是将公链中以DA为代表的模块功能抽象为第三方公共组件,供生态其他项目调用
  2. 公链可以分为哪几个模块: 共识层(Consensus), 执行层(Execution), 结算层(Settlement), 数据可用性层(Data Availablity)
  3. 模块化概念的鼻祖:Celestia
  4. 其他模块化的探索 Fuel,EigenLayer, Op Stack

叙事1:以太坊 Danksharding

Danksharding由以太坊研究员Dankrad Feist于 2021 年底提出,是一个全新的设计,取代了原有分片的设计。实现Danksharding是周期较长,可能在3-5年,因此,以太坊社区也需要一些短期任务规划,不断地向Danksharding推进。

2022年2月25日,Vitalik和DankRad等提出了EIP-4844(Shard Blob Transactions)提案, https://eips.ethereum.org/EIPS/eip-4844 , 又叫Proto-Danksharding (是2个人名字拼起来的), 是Danksharding的短期实现方案。

短期方案之前还有一个更直接的提案EIP-4488, 调整降低calldata的gas费用,为rollup提供更好的环境。

整个方案的核心概念是给以太坊的交易和区块带上数据块(blob)以提供低价和足量的rollup存储。

短期方案 Proto-Danksharding (EIP-4844)

(1)引入 Blob-carrying Transactions 交易格式。携带了称为blob的数据块(约为125kB),使区块实际上变大,从而提供比CALLDATA(约为10kB)更加廉价的数据可用性。

扩展情况如下图

blob交易和原交易格式几乎一样,只是多了blob位, 以及一些描述blob的字段,关键包括:"KZG_Commitment, KZG _Proof, blob_gas" 回等。

当前区块大小约100KB,其中calldata占10k , blob-tx每个blob125k, 每个transaction最多挂2个blob;每个block理想状态包含8个blob,约为1MB,最多包含16个blob,约为2MB;

Network部分仅在交易广播过程中存在,version_hash就是KZG Committment的hash结果, 节点对于BlobTx投票时要保证blob_version_Hash和KZG Commitment一致, KZG Commitment和blob data一致,KZG Proof正确。 Blob不直接广播,而是验证节点缺少了才向其他节点索取。

Commitment 和Proof验证通过后本身都不需要存储在链上,只有Op类的行为如果要挑战后续自行提供数据和version_hash对应即可。

对于每个带blob的交易,通过KZG committment,KZG Proof和原数据验证,就能够保证blob数据和KZG Commitment数据一致, 这个验证是通过预编译合约Point evaluation precompile完成的。(设计上应该是每个Blob交易上链前验证者就会完成的验证

(2)允许节点在一个时间周期后将blob数据删除。

按照每个区块多8个blob 1mb来算,每年会增加2.7T数据,验证者存储如此多的增量数据是很大的挑战。

上面说了由于交易了带了KZG committment和KZG Proof, 即使数据删除了,后续也是可以根据这两个值,用链下的原数据来校验,保证要恢复的数据的完整性的。

  • 那谁来永久存储这些DA数据? 1. rollup本身, 2. BitTorrent, 3. 以太坊Portal Network, 4 区块链浏览器, 5, The Graph

(3)Rollup怎么使用?

关键是数据放入了blob之后的一致性验证, EIP-4844对于blob中的压缩交易采用了KZG承诺的方式, 即提交到数据到blob的同时,要把原有的state-change, {zkproof} 以及KZG Committment提交到calldata(Rollup合约中), 然后以太坊提供了预编译合约来完成KZG承诺到blob之间的一致性查询。

  • OP rollup怎么使用 :新增Blob Verification Precompile预编译合约 : 因为OP合约无法读取blob,当发生挑战需要交易数据时,rollup合约将 挑战者在交易中提交的Blob数据 及原blob对应的KZG committment和KZG Proof,给这个预编译合约,预编译合约回传 挑战者提供的Blob是否与原本的KZG Committment相等。 如果相等说明挑战者提交了和commitment一致的数据,OP的挑战逻辑就可以重放用户提交的这些交易了,如果发现和当时的状态不一致就挑战成功。

  • ZK rollup怎么使用:新增Point Evaluation Precompile预编译合约,这个预编译合约上文已经提到,实际上是用来验证交易中的KZG Commitment和Blob的一致性的。 ZK rollup是有效性证明,不需要挑战,也不需要使用blob数据,交易进入ZK合约后,首先要验证ZK Proof的正确性,KZG Committment的正确性已经获得, 然后目的是要保证ZK Proof 和 KZG Commitment指向的是同一份数据。 这个保证基于ZK Proof, State Root等与KZG Commitment之间的数学关联,proof of equivalence protocol 生成一个等价证明的承诺,写入ZK rollup合约中来完成这个证明闭环。

小结: Proto-Danksharding 是Danksharding的短期计划, 通过blob交易的机制,

(1)提供了比calldata gas费便宜的链上空间,降低了Rollup的DA成本 (2)提供了blob数据清除机制, 降低了验证节点的存储负担 (3)提供了2个预编译合约,保证rollup的数据一致性验证和blob数据的取用

https://www.eip4844.com/ 专门提供4844项目信息的网站

长期方案 Full Danksharding

  • (1)Blob分Shard存储 : Danksharking实现后,每个区块额外16MB,最大允许32MB, blob计划挂在区块上,而不是EIP-4844设计的交易上, 这样更便于分委员会来做blob的抽样检查。同时,扩大之后的blob也不是和共识一起广播了,而是以SideCar的模式传送,即区块和blob走不同的通道,这样无关的节点需要通过抽样来验证Blob, 只有Rollup相关的节点会接收到完整的SideCar。

  • (2)数据可用性采样(DAS): 主要是通过数学设计, 让验证数据的节点只抽样一部分数据,经过多次检查后就可以大概率证明完整数据的可用性, 这样每个验证节点只做抽样,性能和存储要求会降低很多,同时保持去中心化的特性。 DAS的关键特性如下:
    • 纠删码(Erasure Coding)方案,原理是Reed-Solomon(RS)编码,帮助全网节点在下载部分数据的情况下更容易发现原始数据的丢失的概率,从而提升安全性。

  • KZG多项式承诺: KZG承诺的优势在于可以为多个数据分段,提供一共KZG承诺, 对于每一个分段,可以轻量快速计算一个证明,证明单个数据分段X属于整体数据。这样的特性就很适合在抽样时进行单个数据片段的检验。(对于多个分段,如随机的75个,KZG也能够构造一次性的聚合证明,这样抽样和验证过程也是轻量的、单次交互就可以完成)
    • 对多项式f(x),证明者通过椭圆曲线密码学技术,对该多项式做出承诺 C(f):对于这个多项式的任意值 y = f(z),证明者可以计算出一个 "证明" π(f,z)
    • 对于验证者,已知承诺 C(f),给出证明 π(f,z)、变量z、取值y 三个数据,验证者可以证实 f(z)= y,即(z,y)确实在这个多项式函数上。

  • 纠删码2D - KZG扩展: 解决大数据块切分之后,重组区块时节点需要的能力也很高的问题。
    • 大数据块分成256个分片,每个分片,我们把它分成256个碎片,用RS编码扩展成512个碎片,对每个碎片进行1,2,3,…,512的编号
    • 编号相同,不同分片的碎片重新分为一组,得到512组,每组256碎片,每个组再从256通过RS扩展为512. 得到一个512的二维碎片组
    • 如下图,分成了4个格, 只有右下角的格子以上全部不可用,整体数据才无法恢复。 所以,验证节点要保证75%+1以上的数据可用,根据上文纠删码的计算方法,只需要进行75次的采样。(因此0.75^75 的概率与0.5^30 几乎一致)。(对这个概率性的理解: 资料可得性
    • 二维扩展的技术效果: (1)让验证节点只需要采样75次,但采样数据大小是1维切分时的1/256。 带宽的要求被降低了。(2)降低重构数据的难度,可以针对单个shard进行数据重组,重组时可以根据二维行列并发合作, 降低单个节点的计算能力要求

二维RS结构下,如果整体采样的数据块操作了75%,就可以一定恢复原数据(低于25%就一定恢复不了数据),这样每个节点只抽样75次的情况下,节点越多,安全性越高,同样的,节点越多,同等安全性下,blocksize就可以越大(当然对于节点带宽要求也会增多)

(3)Proposer-Builder Separation (PBS) : 提案与打包分开

原本的以太坊节点同时起到打包和出块的角色,既要构建区块的内容,也要负责对出块进行验证+投票。

新方案如下: (1)全节点想要打包区块,需要增加配置,转为“打包者”角色,并通过竞价来获得打包资格。 (打包者如果为了MEV竞争,就会把打包者MEV的价值转移给去中心化的验证者 (2)验证者根据PoS轮换选出Proposer,然后根据竞价来选择Builder. (3) 全体验证者通过DAS验证Builder的打包块,并开始投票出块。

V神提出的2-Slot PBS方案: 简单理解就是区块头和区块提分开来验证,未披露区块体时就完成竞价和确认。

https://notes.ethereum.org/ @vbuterin/pbs_censorship_resistance

(4)抗审查 Censorship resistance – crList : 为了防止builder故意不打包某些交易, proposaler可以要求block build必须打包某个list中的交易,并提供证明

抗审查的具体实现方案还未确定。

把上面三个技术方向合并起来就是整体的Danksharding形态:

小结: Full Danksharding是远期目标,主要想要实现3个目标, 除了DA扩容以外,解决更多整体安全性的问题:

(1)在当前的blob transaction基础上,继续扩大blob的DA能力, 通过数据可用性采样(DAS),降低验证者的验证成本和存储正本。 (2)实现出块者-打包者分离(PBS), 解决大block带来的数据传输问题,以及可能的MEV问题 (3)抗审查清单(Crlist),避免交易被审查, 可以看成PBS的补充

参考:

https://notes.ethereum.org/ @hww/workshop_feb_2022 V神和Dank分享Danksharding项目进展的会议材料

其他问题:

现在正在开展的KZG Ceremony 是什么: 让大家一起完成 KZG的trust setup过程,multi-participant trust setup, 只要有一个人不泄露自己的生成方式,整个初始化过程就可信。 Setup出来的final secret 作为KZG生成多项式的核心参数使用。 入口: https://ceremony.ethereum.org/

叙事2:Rollups DA 解决方案

解决思路 - Validium

为了在Danksharding出现(或者提出之前),减轻将压缩交易提交到以太坊上的gas成本,允许用于选择是否将交易提交到以太坊上。

Validium原本特指zk Rollup + 链下DA扩容方案,但随着叙事方便,很多项目都把Validium 作为"DA Provided by Rollup" 的方案来讨论,因此本文中也用Validium来指代该方向。

Validium最简单的实现就是Rollup运营方自己来保证DA,用户信任其不会作恶,这样可以忽略DA的成本,但安全性是完全没法保障的,因此个Rollup项目都提出了自己的DA方案

项目情况汇总

基于Validium构建的一些L2项目

小结:

Rollups DA 解决方案是rollup项目自身为了降低成本扩容提出来的DA方案,也实际解决了Rollup本身的一些数据存储成本问题。 但可扩展性仅限在降低数据存储费用上,没有带来其他的商业模式,也没有完全在模块化的思维下设计,属于“微创新”,改变得不够彻底。

Validium的数据由小型委员会来管理,其安全性存疑也是催生大型项目转为作为DA层的发生。

参考:

Danksharding部分:

https://members.delphidigital.io/reports/the-hitchhikers-guide-to-ethereum The Hitchhiker's Guide to Ethereum - Delphi的重要长篇观点

https://dailyclipper.net/dc/2022/06/06/318944/ 上文的中文翻译

https://medium.com/taipei-ethereum-meetup/rollup-and-the-boost-from-proto-danksharding-85d2fe0566b6 本文引用的Danksharding的一些图来源,但不是很准确

https://medium.com/taipei-ethereum-meetup/rollup-proto-danksharding-implementation-detail-913a3c61fde8 本文引用的Danksharding的一些图来源,但不是很准确

https://notes.ethereum.org/ @hww/workshop_feb_2022 V神等讨论danksharding的材料, 包括dank本身的slice,多数网图出自那个ppt

https://zhuanlan.zhihu.com/p/610737860 解读以太坊路线图

https://cn.cointelegraph.com/news/understanding-the-merge-surge-verge-purge-and-splurge 以太坊合并成功完成,重温以太坊路线图

https://learnblockchain.cn/article/4334 一文读懂以太坊新升级方案Danksharding, 比较简练准确,是对The Hitchhiker's Guide to Ethereum的提炼和补充

https://www.chaincatcher.com/article/2086654 深度解读 EIP-4844:Sharding 的一小步,以太坊扩容的一大步

https://km.woa.com/articles/show/567634 Donner对于Danksharding的总结

KZG数学原理:

https://www.defidaonews.com/article/6784542 详解 KZG 如何应用于 zk-rollup 以及以太坊 DA 方案

rollup's DA部分:

https://www.bitpush.news/articles/2990522 IOSG Weekly Brief |拆解数据可用性层:模块化未来中被忽视的乐高积木

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 背景概念
    • 什么是数据可用性?
      • DA 和 Rollup 为什么要绑定来叙事?
      • 公链DA扩展的三个叙事方向
        • DA扩展的瓶颈是什么
          • DA扩展的解决方向有哪些
          • 叙事1:以太坊 Danksharding
            • 短期方案 Proto-Danksharding (EIP-4844)
              • 长期方案 Full Danksharding
                • 解决思路 - Validium
                  • 项目情况汇总
                  • 参考:
                  相关产品与服务
                  数据保险箱
                  数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档