DA(Data Availability)的概念是什么?
区块链网络中的节点如何确保新提议的区块的所有数据实际上都是可用的? 交易数据确定已经发布了吗?
即交易和状态存储在哪里,以及能否永久存储,能否被实时读取,且能够被验证真实性。
为什么数据可用性很重要?
数据可用性 + 共识 = 链的「安全性」, 是区块链安全不可或缺的一环。
(1)为了保证DA, OPRollup 和 ZKRollup 的设计都要求运营商将以太坊上的所有交易详细信息作为“calldata”提交。虽然这使他们在短期内避免了 DA 问题,但随着汇总内事务数量的增加,需要提交的数据量也会增加,从而限制了这些汇总可以提供的扩展量。
(2)为轻节点,客户端提供接入方式.
回归到以太坊的扩容
以太坊的未来发展以rollup为叙事中心 → rollup的本质:完成了交易打包,执行,结算的链下迁移, 数据可用性DA仍然依赖以太坊,受到以太坊的制约。
以太坊为什么要选择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以实现抗审查,但与本文关联不大)
(从不可能三角来说, 增强区块链的数据可用性,即增强了Scalability, 必然要带来Security或Decentralization的缺失)
对应的一些解决技术: Danksharding, DAS数据可用性采样, 纠删码 , 第三方存储, 定期删除数据。
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存储。
(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, 即使数据删除了,后续也是可以根据这两个值,用链下的原数据来校验,保证要恢复的数据的完整性的。
(3)Rollup怎么使用?
关键是数据放入了blob之后的一致性验证, EIP-4844对于blob中的压缩交易采用了KZG承诺的方式, 即提交到数据到blob的同时,要把原有的state-change, {zkproof} 以及KZG Committment提交到calldata(Rollup合约中), 然后以太坊提供了预编译合约来完成KZG承诺到blob之间的一致性查询。
小结: Proto-Danksharding 是Danksharding的短期计划, 通过blob交易的机制,
(1)提供了比calldata gas费便宜的链上空间,降低了Rollup的DA成本 (2)提供了blob数据清除机制, 降低了验证节点的存储负担 (3)提供了2个预编译合约,保证rollup的数据一致性验证和blob数据的取用
https://www.eip4844.com/ 专门提供4844项目信息的网站
二维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 解决方案
为了在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 删除。