Morph:EIP-4844 zkEVM 与聚合证明集成解决方案
撰文:Morph
背景
EIP-4844 提出了一种称为「Blob-carrying 交易」的新交易类型,这种交易包含大量无法通过 EVM 执行访问的数据,但这些交易的承诺可以被访问。交易类型旨在与分片方案中使用的格式完全兼容。
一个 Blob 是一个包含 4096 个有限域元素的向量(该有限域为 BLS12-381 标量域)。在数学上,4096 个有限域元素可以插值出一个阶数为 4095 的多项式 p(x),该多项式在 wi处的取值恰为第 i 个有限域元素。
而 Blob 承诺可以由 KZG commitment 计算而来,且通过相对应的验证方法验证。
EIP-4844 中介绍的部分常量:
EIP-4844 在 Rollup 过程中有着至关重要的作用。与将 Rollup 数据放入交易 calldata 中不同,rollup 希望 submitter 将数据放入 blob 中。这一方案既保证了数据可用性,又能够减少因为使用大量的 calldata 而产生的链上花销。Rollup 需要保证数据的可用性,在足够长的时间内确保诚实的操作者可以构建状态验证,但是该数据不需要一直存在在链上。ZK rollup 将为其交易或状态提供两种承诺:Blob 承诺以及 zk 证明。
EIP-4844 KZG Commitment 的等价证明
在现阶段零知识证明电路实现中,因为暂不支持以 BLS12-381 椭圆曲线为基础的二元线性对验证等复杂非原生有限域操作,所以通过对于多项式挑战点取值一致性与承诺有限性的等价性将对于 Blob 承诺的验证转换为对于任意挑战点取值的一致性验证。
EIP-4844 的一致性证明包含三个部分:
-
通过电路证明 Blob 中的交易原文与 Blob 有限域元素的一致性。
-
通过电路证明有限域元素所编码的多项式在挑战点 x 的取值为 y。
-
通过预编译合约证明承诺 c,挑战值 x 与多项式值 y 的相关关系。
交易原文与 Blob 的一致性验证
首先设计电路证明 Blob 中的交易原文与 Blob 的有限域的对应关系,该电路的输入为交易原文以及 4096 个有限域元素, 约束编码的计算逻辑,由交易原文编码到 Blob 的编码采用如下方案:
-
将输入数据中的 31bytes 编码成 32bytes,为一个 bls12-381 标量域元素,且编码后的数据不超过标量域模数范围。为了支持后续 blob 分片验证的方式,我们将 Batch 中的输入数据(交易原文信息)按照 chunk 划分。
-
对于每一个 chunk 的 blob 编码,我们将该 chunk 的输入数据长度存入第一个 31bytes 中的前 4bytes,并且该 chunk 输入数据分片的前 27bytes 数据编码至剩余的 27bytes 中,构成了 chunk 分片 blob 中的第一个有限域元素(32bytes,第一个 bytes 为 0,第二至第四个 bytes 表示该 chunk 输入数据长度,剩余 27 个 bytes 保存数据的前 27bytes 数据)。
-
将该 chunk 后续输入数据按 31bytes 划分存入 32bytes 中, 在该 chunk 最后数据不足 31bytes 时,末位补零。
该编码方式将 Batch length 切分成多个 Chunk length 存入每个 chunk 分片中的 blob 元素中,更利于后续的可聚合方案设计。
Blob 多项式求值验证
该电路用于验证 Blob 差值得到的多项式 p(x) 在任意一点(Challenge Point)x 上的取值为 y。通过这种方法将无法直接验证 blob commitment 的 EIP-4844 Blob 验证转变对于挑战点 x,多项式取值 y,以及多项式承诺 c 的验证。该电路的输入为 4096 个有限域元素,以及挑战点 x,输出为多项式计算结果 y。
Blob 多项式求值逻辑主要采用 Barycentric 求值公式,对于有 4096 个有限域元素的 Blob:
求值公式为:
Blob 承诺与取值一致性验证
在这一步之前,对于 Blob 和其承诺的一致性校验已经转换成 challenge point x, 函数值 y 和 Blob 承诺的一致性校验, 在 EIP-4844 的支持下,智能合约可以拿到 Blob 的 commitment,这一部分的验证可以直接由链上合约完成,下面我们讨论上一步中电路求值的聚合优化。
Blob 可聚合验证方案
在 Blob 中每 32bytes 数据可以用一个 BLS12-381 标量域表示,但是原始交易数据中每一笔交易原文数据的长度是不固定的,因此可能遇到下列问题:
-
无法保证对于一个 chunk 中的交易原文是 32bytes 的整数倍, 所以一个 chunk 中的交易数据不一定恰好编码为整数个有限域元素
-
交易数据在编码后可能分布在两个 Blob 中
-
一个 Batch 或者 chunk 数据编码后可能不足 4096 个有限域元素,Blob 空间利用率不高
为了解决第一个问题,我们在一个 Chunk(对应的交易数据)进行补 0,使得一个 Chunk 所能容纳的交易个数所编码的有限域个数为整数个;对于第二个问题,我们要求一个交易不会跨过两个 Blob 存储,同时对于多个 Blob 采用 KZG commitment 的多点打开的方式进行优化。
对于第三个问题,我们提出新的聚合方案。首先我们会将原本前五位中的四位存放 batch 的长度信息修改为在每一个分片中的前五位中的四位存放分片 chunk 的长度信息,后续编码方式一致,同时 Chunk proof 中除编码一致性检查外,输入该 chunk 中交易数据所编码的有限域元素索引值(chunk 中的第一笔交易以及最后一笔交易所在 Blob 中的元素索引值)。
我们的方案有以下优势:
-
兼容性:EIP-4844 使用 Blob-data,我们方案具体考虑实现了交易原文数据到 Blob-data 的编码过程,与现有的 ZKevm 电路兼容。
-
实用性:以太坊预编译合约仅支持 BN254,使用 BLS12-381 去验证 KZG commitment 将导致大量非原始曲线的标量域计算(如配对操作),导致消耗大量 gas;我们使用 Barycentric 公式大幅降低了错域计算的数量,保证了实际计算量是可行的。
-
聚合性:聚合证明可以降低证明的数量并减少验证的次数,降低链上 gas 消耗。我们的方案从 chunk-level 的角度提高了聚合的程度,结合 EIP-4844 可以更好的降低 gas 消耗。
结论
Layer-2 方案在以太坊的扩容路线图中扮演着重要角色,然而也存在着安全性的争议和性能上的不足。ZK-rollup 使用坚实的数学理论,有着很高的安全性保证,尽管这伴随着生成证明和验证证明的消耗。通过更好的算法和硬件,生成证明的代价可以有效降低;通过优化链上计算和存储的逻辑,后者也可以得到优化。
EIP-4844 作为 rollup 方案的催化剂,可以给链上数据存储的 gas 消耗带来极大优化,也带来了应用中实际问题的挑战。本文提出了一种在 EIP-4844 提案下实用且高效的电路设计方案,有效降低 gas 消耗并兼容解决了 EIP4844 在应用时的一些问题。Morph 团队始终追求创造更低成本和更高安全的交易生态,本着这一愿景,不断探索新技术并希望为社区生态贡献更多。
免责声明:文章中的所有内容仅代表作者的观点,与本平台无关。用户不应以本文作为投资决策的参考。
你也可能喜欢
Clayton (CLAY):TON 生态系统充满乐趣的吉祥物和游戏中心
什么是Clayton Project(CLAY)? Clayton (CLAY) 是 Telegram 中的一款小程序,提供有趣、易玩的游戏和 CL 积分形式的奖励。作为吉祥物,Clayton 象征着 TON 中的游戏、互动和成长精神,鼓励用户深入游戏、获得奖励并邀请朋友加入。 这个概念简单而强大:用户与 Clayton 互动、玩游戏并赚取 CL 积分,这是生态系统内的一种应用内货币。这些积分以后可用于各种目的,尤其是当 Clayton 团队扩展其功能时。 谁创立了 Clayton (CLAY)? Clayton 的创始人依然未知。 哪些风险投资支持 Clayton Project(CLAY
比特币的未来:2024 年美国大选对加密货币市场意味着什么
随着 2024 年美国总统大选临近,金融界充斥着关于它将如何影响比特币和更广泛的加密货币市场的预测。特别是,比特币最近的价格走势、历史趋势以及主要候选人唐纳德·特朗普和卡马拉·哈里斯的立场,让人们再次关注选举将如何影响下一次价格大涨。 要了解可能发生的情况,必须了解比特币的历史行为、政治气氛以及一些关键的市场因素,例如它与标准普尔 500 指数的关系以及对比特币看涨期权的需求不断增长。让我们分析一下这些因素,并探讨它们对比特币的未来意味着什么。 比特币和 2024 年美国总统大选 不同的候选人,不同的加密货币政策 候选人对加密货币的立场显示出鲜明的对比。唐纳德·特朗普公开拥抱加密货币行业,倡
Swell Network (SWELL):让每个人都能享受以太坊质押和重新质押的便利
什么是Swell Network(SWELL)? Swell Network (SWELL) 是一个流动性质押平台,允许用户通过质押或重新质押 ETH 赚取被动收入。质押涉及锁定一定数量的 ETH 以帮助验证以太坊区块链上的交易。作为回报,用户将获得奖励。Swell 使这个过程更容易、更容易实现,即使对于那些没有大量 ETH 或技术专长的人来说也是如此。 谁创立了 Swell Network (SWELL)? Swell Network 由 Swell Labs 开发,该团队致力于创造安全、去中心化和透明的金融未来。Swell Labs 的目标是让每个人都能享受金融自由,不受歧视或审查。 哪
【首发上币】Swell(SWELL)将上线 Bitget,参与瓜分 23,440,000 SWELL!
我们非常高兴地宣布,Swell(SWELL)将在创新区和 LSD 区上线。详情如下: 充值开放时间:已开放 交易开放时间:2024年11月7日18:00(UTC+8) 提现开放时间:2024年11月8日19:00(UTC+8) 现货交易链接:SWELL/USDT 活动1:Launchpool——锁仓 BGB 和 USDT,瓜分 19,500,000 SWELL 锁仓时间:2024年11月7日18:00至2024年11月14日18:00(UTC+8) 立即锁仓 SWELL 总奖池 19,500,000 SWELL BGB 奖池 16,000,000 SWELL USDT 奖池 3,500,00