在这篇文章你可以看到:EIP-4844的全面解析,以及带来的变化。Sharding的精简先行版,Shardeum的归纳.思考和展望
Overview 在这篇报告中你可以了解到: EIP-4844;
Proto-danksharding;
Danksharding;
KZG Commitment;
KZG Ceremony;
Dynamic state sharding;
…
最近社区参与度超标的KZG Ceremony都刷到了吧,这个仪式到底在干什么?
简单概括,KZG Ceremony 是实现 EIP-4844 不可绕过的一个初始化环节,而 EIP-4844 是实现以太坊sharding过程中的先行版本。
Sharding 从数据可用性角度扩容,而 rollup 主要从执行层面扩容,一起缓解主网拥堵问题;我认为sharding 可能是突破区块链不可能三角的一次尝试。
下面这张以太坊区块大小的走势图可以从另一个角度说明数据层面扩容的必要性。从创世区块开始,以太坊从底层架构到上层应用都在不断地快速迭代,但平均区块大小仍为 90Kb 左右,最高点也没有质的突破。虽然Rollup从计算层切入,解决以太坊拥堵问题,但性能仍然受制于layer 1的数据存储能力。
EIP-4844 = Proto-Danksharding;
Proto来自以太坊研究者的名称
由于实现 danksharding(下一节会分析)的复杂度很高,开发周期至少是以年为单位的。因此 proto-danksharding 是实现 danksharding 前对以太坊的扩容方案,主要实现了 danksharding 中的交易格式、precompile 等设计;
Proto-Danksharding 主要引入了一种新的 transaction type,也就是 blob-carrying transaction。至此,Rollup 的数据通过blob 的形式以更低的成本向layer 1传输,并作非永久存储。同时,blob 远大于现在的 calldata,可以更好地支持 rollup 上的高TPS。
关于blob:
给transaction挂上blob(数据单元)
作用
参考Vitalik在提案中给出的图,Data blob 和当前的 calldata 相似,rollup 可以将交易、证明等数据通过blob上传到 layer 1 来保证 data availability。
成本
Data blob 的设计初衷是支持 rollup 高通量的交易,相比同等大小的 calldata(使用链上存储),blob 的成本将会降低很多(不需要永久存储)。因此,rollup 在维持数据可用性上花费的gas相比之前会显著降低。
容量
每个blob的大小约为125kB(fact: 当前平均block size只有~90kB)。
价值
可以把blob看成一种缓存,rollup 提交的交易数据从此以缓存的形式存在。降低对存储硬件的要求,为以太坊提供额外的数据扩容并降低 gas 成本。
挑战:对以太坊节点硬件性能的要求
Ethereum 当前平均区块大小只有~90kB,但是一个 blob 就有~125kB
根据 EIP-4844 的设计,每个slot正常情况下约为1 MB,因此每年增加的数据量为:
1 MB/block 5 block/min 43200 min/month * 12 month/year = 2.47 TB per year
每年增加的数据大小远超过了以太坊数据总量,这样的存储方案显然是不高效的。
从短期扩容效果看,由于每个节点仍然需要储存全量历史数据,在实现 EIP-4844 的同时,对一段时间窗以外的 blob(具体的 limit time 还没有最终确定,可能是1个月或是1年)进行自动删除;
从 sharding 的长期利益看,实现EIP-4444,即节点不需要存储全量历史数据,而是只需要参照 history expiry,存储特定时间之后的数据;
这两种解决方案从不同程度上缓解了 blob-carrying transaction 在存储空间上的 tradeoff。
KZG Commitment是EIP-4844中采用的多项式承诺方案
解析 KZG commitment
KZG 是作者 Aniket Kate, Gregory M. Zaverucha和Ian Goldberg 姓氏的缩写,他们在2010年发表了多项式承诺方案论文“Constant-Size Commitments to Polynomials and Their Applications” ,并且这个方案在plonk-style的zk-snark协议中有很广泛的应用。
参考 Dankrad Feist 演讲中的示意图,KZG root 类似 Merkle root,区别在于 KZG root 承诺一个多项式,即所有 position 都在这个多项式上。基于 proto-danksharding 的场景,KZG root 承诺了一堆数据,其中的任何一个数据都可以被验证属于这个整体。
这也是为什么KZG commitment 在兼容性上对后面实现 DAS 更友好。
KZG commitment 的流程如下:
KZG Commitment 的优势
我认为主要出于对成本和安全性的思考,可以归纳但不局限于以下几点: 我认为主要出于对成本和安全性的思考,可以归纳但不局限于以下几点:
成本
安全
更兼容
KZG Ceremony 是为KZG Commitment 提供 trust setup,目前吸引了超过20,000 participants 的参与和贡献,已经成为历史上最大规模的 trust setup。
最近社区参与热情高涨的KZG Ceremony就是为EIP-4844采用的KZG commitment提供trust setup;
KZG Ceremony的流程
参考Vitalik的流程图,任何人都可以作为participants贡献secret并与之前的结果进行混合产生一个新的result,以此类推,通过套娃的形式获得最终的SRS,并协助完成KZG commitment的trust setup
trust setup
必要性
Rollup
参考ethresear上给出的示意图,rollup需要将state delta、KZG commitment的versioned hash包含在calldata中进行提交(zk-rollup还需要提交zk proof)
可以发现不同的是,calldata只包含一些数据量小的,比如state delta、KZG commitment,而将包含大量交易数据的transaction batch放到了blob里。
安全性
成本
Proto-Danksharding引入了新的交易类型,低成本数据格式blob的加入无疑会让rollup的成本进一步降低,取决于实际链上应用和实现进展,优化后rollup的成本可能降低x10甚至x50;
同时EIP-4844引入了blob fee;
Precompile的实现
Blob中的数据本身无法被直接触达,EVM只能获取data blob的commitment。因此需要rollup提供precompile来验证commitment的有效性.
下面分析两种EIP-4844中提到的precompile算法
Point evaluation precompile(对数学原理感兴趣参考vitalik的解析)
Blob verification precompile
Danksharding 的命名来自以太坊研究员Dankrad Feist
在proto-danksharding 实现后,由于新的交易格式引入了 blob,每个区块可以平均额外获得1MB的缓存空间。Danksharking 实现后,每个区块额外16MB,最大允许32MB。
相比proto-danksharding要求全节点下载全量数据,Danksharking 实现后以太坊节点只需要对blob抽样。Sampling 后的数据会分布在全网节点中,并可以组成完成的data blob。
DAS:高效抽样检查
由于每个节点不再保存全量历史数据,从数据可用性、备份和抽样检查的角度出发,安全性由至少一个节点保存全量数据变为多个节点存储部分数据,并最终还原完整数据。
虽然乍一看对单点的依赖安全性远高于对多点的依赖,但是以太坊网络中的节点数量够多,完全可以保证数据备份的需求,因此安全性并不会有很大变化。
虽然验证者不需要下载并保留全量历史数据,对 bandwidth 和存储硬件的要求得到了缓解,但是区块创建者仍然需要上传包含全量 transaction data 的 blob 数据。
这里简单介绍一下 PBS(proposer/builder separation),参考 Dankrad 给出 PBS 在 danksharding 方案中的应用图:
Shardeum 是 EVM 兼容的 layer 1公链, 与以太坊的 static sharding 方案不同,shardeum 通过dynamic state sharding的方案提升底层可扩展性和安全性,同时,天然地保证较高的去中心化程度;
优势
Dynamic state sharding 带来最直观的优势在于linear scaling,接入网络的节点可以非常高效的被sharding 算法动态分组,并快速响应,提升区块链网络的 TPS。在 dynamic state sharding 的设计中,每个节点会覆盖不同 range 的 address ,并且覆盖范围又会有冗余设计以保证高效的 sharding 和安全性。
场景内实现
抛开生态的复杂度,单从两种技术实现的角度看,dynamic state sharding 的难度大于 static sharding。可以看出Shardeum的技术团队在 sharding 的技术层面有很深的积累,团队之前在 Shardus technology上的研发也对这条公链的底层技术做出了很大贡献,甚至在项目早期阶段很好的展示了dynamic state sharding 所带来的 linear scaling。
产品
将节点划分到不同的group,参考 divide and conquer 的思路,把计算和存储的 workload 进行分流,从而允许更高程度的并行处理。因此,可以容纳更多节点加入,进一步提升公链的 throughput 和去中心化程度。
团队
市场经验丰富,叙事能力超强,对动态分片研究很深。
技术
针对自己的场景设计了合适的sharding方案( dynamic state sharding )和共识的设计( Proof of Stake+ Proof of Quorum ),以提升可扩展性为第一目标,保证更高程度的去中心化和安全性。
进度
将在2023-02-02 launch betanet,值得关注。
Reference https://notes.ethereum.org/@dankrad/kzg_commitments_in_proofs
https://notes.ethereum.org/@dankrad/new_sharding
https://vitalik.ca/general/2022/03/14/trustedsetup.html
https://dankradfeist.de/ethereum/2020/06/16/kate-polynomial-commitments.html
https://notes.ethereum.org/@dankrad/new_sharding
https://eips.ethereum.org/EIPS/eip-4844
https://biquanlibai.notion.site/Data-Availability-caa896aae59d489b98f2448f17b01640
https://ethresear.ch/t/a-design-of-decentralized-zk-rollups-based-on-eip-4844/12434
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!