Vitalik: Proto-Danksharding FAQ
什么是 Danksharding? 什么是 proto-danksharding (即 EIP-4844) 为什么添加每个人都必须下载的 1 MB 数据到区块就可以了,而不是直接使 calldata 便宜 10 倍? 与 EIP-4488 相比,有什么区别? proto-danksharding 实现了完整分片的哪些部分,哪些有待实现? 这些这么大的区块会让磁盘空间需求变大吗? 如果数据在 30 天后被删除了,用户要如何访问较早的 blob? blob 数据是什么格式,它是如何被承诺的? 为什么使用 KZG 的哈希而不直接使用 KZG? proto-danksharding 引入的两个预编译是什么? ZK rollup 是如何与 KZG 承诺有效配合的? KZG 受信任初始化是什么样的? 为什么不能使用其他一些不需要受信任初始化的承诺方案? KZG 有多“复杂”和“新颖”? proto-danksharding 实现有哪些不同的软件部分? proto-danksharding 的多维度费用市场是什么样的? EIP-1559 式 blob 费用的指数式调整机制是如何运作的? fake_exponential 的工作机制是什么样的? 在 proto-danksharding 里,有哪些问题仍在争论中?
Calldata 的 gas 开销从每字节 16 gas 降低到 3 gas 每个区块 1 MB 的限制加上每笔交易额外的 300 字节 (理论最大值:~1.4 MB)
在这个 EIP 里已经实现的工作包括:
一种新的交易类型,与完整分片里需要存在的交易格式完全相同
完整分片里所需的全部执行层逻辑
完整分片里所需的全部执行/共识交叉验证逻辑
BeaconBlock 验证和数据可用性 blob 采用间的层分离
完整分片里所需的大部分 BeaconBlock 逻辑
用于 blob 的、自我调整的独立 gas 定价
要实现完整版分片还需要完成的工作包括:
在共识层上 blob_kzgs 的低次扩展 (low-degree extension) 使得 2D 采样变得可能
数据可用性采样的实际实现
PBS (提议者/构建者分离方案),以避免要求个人验证者在一个 slot 里处理 32 MB 的数据
委托证明 (Proof of Custody) 或类似的在每个区块里每个验证者都要验证一部分的分片数据的协议内要求
应用专用的协议 (例如 rollup) 可以要求它们的节点存储与它们的应用相关的那部分历史数据。历史数据丢失对协议来说不是一个风险,只是对个别应用来说是,因此应用程序承担起存储与它们本身相关的数据这个责任是合理的。 在 BitTorrent 存储历史数据,例如自动生成和分发一个 7 GB 的文件,其中包含每天来自区块的 blob 数据。 以太坊 Portal Network (目前正在开发) 可以轻易地扩展到用于存储历史数据。 区块浏览器、API 提供商和其他数据服务商将可能存储完整的历史数据。 个人爱好者和做数据分析的学者将可能存储完整的历史数据。对于后者,在本地存储历史数据是很有价值的,因为这使得他们可以更容易直接对它们进行计算。 第三方索引协议,例如 TheGraph 将可能存储完整的历史数据。
0 <= x < 52435875175126190479447740508185965837690552500527637822603658699938581184513
def blob_to_kzg(blob: Vector[BLSFieldElement, 4096]) -> KZGCommitment: computed_kzg = bls.Z1 for value, point_kzg in zip(tx.blob, KZG_SETUP_LAGRANGE): assert value < BLS_MODULUS computed_kzg = bls.add( computed_kzg, bls.multiply(point_kzg, value) ) return computed_kzg
Optimistic rollup 只有在提交欺诈证明时才真的需要提供基础数据。欺诈证明的提交函数会要求将有欺诈性的 blob 的全部内容作为 calldata 的一部分来提交。它会依据之前提交的版本化哈希用 blob 验证函数来对数据进行验证,然后就像现在一样对该数据进行欺诈证明验证。
ZK rollup 会提供对它们的交易或状态变换数据提供两个承诺:blob 里的 kzg 和使用 ZK rollup 内部使用的任何证明系统的某种承诺。它们会使用一个承诺证明等效性协议,通过使用点取值预编译来证明 kzg 承诺 (该协议确保它指向可用数据) 与 ZK rollup 自己的承诺是值相同的数据。
假设你有多个多项式承诺 C1...Ck,在 k 个不同的承诺方案 (例如 Kate、FRI、某个基于 bulletproof 的方案、DARK 等) 中,你想证明它们是对同一个多项式 P 承诺的。我们可以轻易证明这点:
让 z=hash (C1....Ck),我们把 z 解析为一个 P 有取值的取值点。
公布“打开” O1...Ok,其中 Oi 是这样一个证明:在第 i 个承诺方案下,Ci (z)=a。然后验证在所有的方案中 a 是同一个数字。
关于powers-of-tau 的受信任初始化是如何运作的总体描述:https://vitalik.ca/general/2022/03/14/trustedsetup.html 在所有重要的受信任初始化相关计算中,有一个实现例子:https://github.com/ethereum/research/blob/master/trusted_setup/trusted_setup.py
非算术承诺 (如散列函数) 与数据可用性采样不兼容,因此如果我们使用这样的方案,当我们转向完整分片时,我们还是不得不改为采用 KZG。 IPA (内积证明) 可能与数据可用性采样兼容,但它会导向一个更复杂的方案,且其属性要弱得多 (例如,自我修复和分布式区块构建会变得难得多) 散列函数和 IPA 都与点取值预编译的低成本实现不兼容。因此,基于哈希或内积证明的实现不能有效地支持 ZK rollup 或多轮 optimistic rollup 里的低成本欺诈证明。 保持数据可用性和点取值但会引入另一个承诺的一种方法是每个 blob 存储多个承诺 (例如 KZG 和 SHA256)。但这会有问题——要么我们需要添加一个复杂等效的 ZKP 证明,要么所有的共识节点将需要验证第二个承诺,这会需要他们下载所有 blob 的所有数据 (每个 slot 有几十 MB)。
执行层的共识变更 (请看 EIP 了解细节) ⋄ 包含 blob 的新交易类型 ⋄ 输出在当前交易的第 i 个 blob 的版本化哈希的操作码 ⋄ blob 验证预编译 ⋄ 点取值预编译 共识层的共识变更 (请看这个文件夹 ) ⋄ 在 BeaconBlockBody 里的 blob KZG 承诺列表 ⋄ “侧车 (sidecar)” 机制,完整的 blob 内容与另一个对象一起从 BeaconBlock 传送 ⋄ 在执行层的 blob 版本化哈希与共识层的 blob KZG 进行交叉验证 交易池 ⋄ BlobTransactionNetworkWrapper (请看这个 EIP 的网络部分) ⋄ 更强大的抗 DoS 保护,以减轻大型 blob 大小带来的风险 区块构建逻辑 ⋄ 接受来自交易池的交易封装器,把交易放入 ExecutionPayload,KZG 放入信标区块以及主体放入侧车 ⋄ 处理二维的费用市场
优先费用为每 gas 5,4 个 blob,总共 4 gas 优先费用为每 gas 3,1 个 blob,总共 2 gas
EIP-1559 确保大多数区块不会达到这两个上限,因此只有少数区块会实际面临多维度优化问题。在通常的情况里,交易池不会有足够的 (充足的费用) 交易触达这两个上限,任何矿工都只需要打包他们看到的每笔交易就能获得最优收益。 相当简单启发式方法可以在实践中接近最优。请看 Ansgar 的 EIP-4488 分析,了解在相似情况下的一些数据。 多维度定价还不是专业化获得收益的最大来源——MEV 才是。通过专门算法从链上 DEX 的套利、清算、NFT 发售抢跑等提取的专业化的 MEV 收益占总的“天真提取收益”(即优先费用) 非常大的部分:专业化的 MEV 收益似乎平均每个区块有大约 0.025 个 ETH,总的优先费用通常每个区块有大约大约 0.1 个 ETH。 提议者/构建者分离方案是围绕高度专业化的区块生产而设计的。PBS 把区块构建的过程变成竞拍,专业化的行动者可以为区块创建权出价。普通的验证者只需要接受出价最高的区块。这样做就是为了防止 MEV 驱动的规模经济渐渐导致验证者中心化,但它还处理了所有可能会让最优区块构建变得更难的问题。
def fake_exponential(numerator: int, denominator: int) -> int: cofactor = 2 ** (numerator // denominator) fractional = numerator % denominator return cofactor + ( fractional * cofactor * 2 + (fractional ** 2 * cofactor) // denominator ) // (denominator * 3)
简单性 (这是一个二次方等式) 在左侧边缘的正确性 (Q(0)=20=1) 在右侧边缘的正确性 (Q(1)=21=2) 平缓的坡度 (我们确保 Q'(1)=2*Q'(0),因此每一次 Q 的位移+缩放在右侧边缘的坡度与下一次 Q 的位移+缩放在左侧边缘的坡度相同。
所有主要的 optimistic rollup 都使用多轮证明,因此它们其实可以用(便宜得多的) 点取值预编译而不是 blob 验证预编译。任何人如果真的需要 blob 验证,可以自己执行:把 blob D 和版本化的哈希 h 作为输入,选择 x=hash(D,h),使用重心取值的方法来计算 y=D(x),并使用点取值预编译来验证 h(x)=y。因此,我们真的需要 blob 验证预编译还是我们可以不用它了而只用点取值? 区块链能多好地处理持久的长期 1 MB 以上的区块?如果这风险太大了,是否应该在开始时减少目标 blob 数量? blob 应该以 gas 还是 ETH (会被烧毁) 来计价?是否应该对费用市场进行其他方面进行调整? 新的交易类型应该被视为一个 blob 还是一个 SSZ 对象,如果是后者,要把 ExecutionPayload 改为一个联合类型?(这是一个“现在做更多的工作” vs “以后做更多工作”的权衡) 受信任初始化的实现的确切细节 (技术上来说超出了这个 EIP 本身的范畴,因为对于实现者来说,这个初始化“只是一个常数”,但它仍然需要被完成)。
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
您可能感兴趣
-
特朗普就职典礼引发全新期待:能否兑现十大加密货币新政?
为了迎接 1 月 20 日即将到来的特朗普就职美国总统典礼,MetaEra 开设了「特朗普就职典礼」专题,将全程对第 47 届美国总统就职典礼进行专题报道。特朗普在华盛顿特区举行的盛大就职典礼标志着一
-
加密市场宏观研报:特朗普上任在即,BTC 2025首度重返10万美元
一、前言2025 年初,比特币价格再度突破 10 万美元大关。这一里程碑式的突破标志着加密市场进入了一个新阶段,不仅是技术和金融创新的体现,更反映了全球经济环境的深刻变化。与此同时,美国即将迎来特朗普
-
2025 年有哪些加密关键进展值得关注?
作者:arndxt 来源:X,@arndxt_xo 翻译:善欧巴,随着 2024 年结束和 2025 年到来,我回顾了自己的加密旅程,并从 OpenGuild Vietnam 的讨论、围绕以太
-
DeFAI或成AI Agent专业化领域首个爆发点,盘点高潜力项目
原文来自 Edgy编译|Odaily星球日报 Golem(@web3_golem)编者按:前几周,我们已经经历了 AI Agent 赛道框架和基础设施之争,ai16z 和 Virtuals 依旧稳占鳌
-
Foresight Ventures PayFi 报告(上):行业全景分析
撰文:Kedar@Foresight Ventures、Alice@Foresight VenturesContributor:Max Hamilton @Foresight VenturesPayF
-
DWF Ventures 2025年趋势预测:DeFi、AI、稳定币以及消费者应用将成为主要叙事
原文标题:DWF Ventures’ Selection of 2025 Narratives原文编译:Odaily星球日报夫如何2024 年加密行业迎来较多的机构级投资者的关注,ETF 和稳定币也在
-
AI Agent 各类别标的投资思考逻辑
作者:Haotian,来源:作者推特@tmel0211简单分享下 AI Agent 各类别「标的」投资思考逻辑:1)单体 AI:用户感知强,应用场景垂直,产品验证周期短,但天花板有限,投资必须要建立在
-
Solana 敦促验证者测试早期的“Firedancer”升级
作者:Danny Nelson,CoinDesk;编译:陶朱,Solana 正在加强对 Firedancer 的测试,这是一项备受期待的软件升级,有望大幅提高区块链的处理速度。根据 Solan
- 成交量排行
- 币种热搜榜