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.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
您可能感兴趣
-
华尔街警告:市场对通胀过于乐观,小心「鹰派意外」风险
德银与摩根大通警告,投资者或低估了通胀的持久性与关税的滞后影响。撰文:张雅琦来源:华尔街见闻随着近期国际贸易紧张局势出现缓和,金融市场对通胀的担忧显著降温,但德银和摩根大通的最新分析警告称,这种乐观情
-
美股散户的「黑色星期二」:财报与空头夹击之下,妖股与币圈齐跌
尽管散户当日仍净买入5.6亿美元,但未能阻止纳指重挫超2%。撰文:鲍奕龙来源:华尔街见闻对于热衷追逐热门股票的散户投资者而言,隔夜美股成为了自四月份以来最糟糕的交易日。周二在 Palantir 的财报
-
HashKey 集团携手 Kraken 达成战略合作,加速机构层面资产代币化进程
双方将整合资源,围绕产品、生态、以及市场拓展展开协作,加速推动传统金融与加密资产之间的融合,释放亚太市场在真实世界资产(RWA)代币化领域的潜力。亚洲领先的数字资产金融服务集团 HashKey Gro
-
亚洲股市熔断式暴跌,韩国盘中触发熔断机制,日经跌破5万点大关
华尔街警告:这只是开始,AI泡沫破裂引发的恐慌才刚刚开始。作者:金十数据周三亚洲股市追随隔夜美股的抛售,投资者对估值过高的担忧削弱了市场信心。截至发稿,韩国股市以逾6%的跌幅领跌,因估值担忧重创了近期
-
早报 | 美股收盘,道指跌 225 点,纳指涨 0.46%;比特币借贷平台 Lava 宣布完成 2 亿美元融资;代币网络协议遭黑客攻击,以太坊一度暴跌 9%整理:ChainCatcher 重要资讯:代币网络协议遭黑客攻击,以太坊一度暴跌 9% 数据:加密板块全线下挫,BTC 跌破 10.8 万美元,ETH 一度跌近 8% 易理华:当前加密市场过度恐慌,
-
加密早报:BTC 今晨跌破 10 万美元,渣打将于香港推出 BTC 和 ETH 托管服务
AlphaTON Capita成立合资公司拟推出TON Card加密支付卡项目。作者:深潮 TechFlow昨日市场动态BTC今晨跌破10万美元大关,ETH失守3100美元HTX行情显示,BTC今晨跌
-
华尔街持续抛售,比特币还要跌到哪里11 月的第一周,币圈情绪很差。比特币已经下探到「10.11」大暴跌的更低点,没守住 10 万美元大关,甚至跌破 9.9 万美元,是这半年里的新低,以太坊最低触及 3000 美元。全网 24 小时爆仓
-
市场面临显着回调,这次是周期中点还是终点?作者: Chloe, ChainCatcher11 月才刚过四天,加密市场就经历了显着回调,比特币过去一个月下跌近 13%,从此前的高点回落至 10.4 万美元附近,价格反复震荡。ETH 交易价格同期
- 成交量排行
- 币种热搜榜
Momentum
OFFICIAL TRUMP
Aster
泰达币
以太坊
比特币
Solana
USD Coin
瑞波币
币安币
First Digital USD
狗狗币
大零币
达世币
Sui
ZEN
ICP
OKB
FIL
AR
LPT
MINA
BSV
EOS
DYDX