-
以太坊是唯一建立可扩展的统一结算和数据可用层的主要协议; -
Rollups 在利用以太坊安全性的同时扩展计算; -
所有道路都通向中心化的区块生产、去中心化&无须信任的区块验证和抗审查的终局; -
诸如区块提议者-构建者分离 (PBS) 和弱无状态性 (weak statelessness) 等创新开启了这种权力 (构建和验证) 的分离,以在不牺牲安全性或去中心化的情况下实现可扩展性; -
MEV 现在处于核心重要位置,以太坊计划了许多设计来减轻 MEV 的危害,防止 MEV 的中心化化倾向; -
Danksharding 结合了多个前沿研究途径,从而为以太坊以 Rollup 为中心的路线图提供可扩展的基础层; -
我预计 danksharding 将在我们有生之年实现。
-
DA – 数据可用性 (Data Availability) -
DAS – 数据可用性抽样 (Data Availability Sampling) -
PBS – 提议者-构建者分离 (Proposer-builder Separation) -
PDS – Proto-danksharding -
DS – Danksharding -
PoW – 工作量证明 (Proof of Work) -
PoS – 权益证明 (Proof of Stake)
通往 Danksharding 之路
1)最初的数据分片设计:单独的分片区块提议者
2)数据可用性抽样 (DAS)
-
简单的解决方案:只是检查每个区块的一些随机数据块。如果检查合格,节点就对该区块进行签名。但如果节点没有检查到那笔有关你将 ETH 发送给 Sifu 的交易,那么资金就不再安全了。 -
聪明的解决方案:首先对数据进行纠删码。使用 Reed-Solomon 代码扩展该数据。这意味着数据被插值为一个多项式,然后我们在许多额外的地方对该多项式进行求值。这很难懂,所以让我们来分析一下。
3)KZG 承诺
-
我们有一个「多项式」f(X) -
证明者对多项式做出「承诺」C (f) -
这依赖于具有可信设置的椭圆曲线密码学。有关其工作原理的更多详细信息,请参阅 Bartek 的一个很棒的帖子 -
对于该多项式的任何「评估」y = f(z),证明者可以计算「证明」π(f,z) -
给定承诺 C(f)、证明 π(f,z)、任何位置 z 以及多项式在 z 处的评估 y,验证者可以确认确实 f (z) = y -
解释:证明者将这些片段提供给任何验证者,然后验证者可以确认某个点的评估(其中评估代表基础数据)正确地位于承诺的多项式上 -
这证明原始数据被正确扩展,因为所有评估都位于相同的多项式上 -
请注意,验证者不需要多项式 f (X) -
重要属性 - 这具有 O(1) 承诺大小、O(1) 证明大小和 O(1) 验证时间。即使对于证明者,承诺和证明生成也仅在 O(d) 上进行扩展,其中 d 是多项式的次数 -
解释:即使 n(X 中的值的数量)增加(即,随着数据集随着更大的分片 blob 而增加)- 承诺和证明保持不变的大小,并且验证需要持续的努力 -
承诺 C(f) 和证明 π(f,z) 都只是配对友好曲线上的一个椭圆曲线元素(这将使用 BL12-381)。在这种情况下,它们每个只有 48 个字节(非常小) -
因此,证明者提交大量原始数据和扩展数据(表示多项式的多次评估)仍然只有 48 个字节,证明也只有 48 个字节 -
TLDR–这是高度可扩展的
4) KZG 承诺与欺诈证明
-
您有足够的节点(轻节点或全节点)对数据进行采样,这样它们就足以将它们重新组合在一起。这是一个相当弱且不可避免的诚实少数假设,因此不是一个大问题。 -
重新引入同步假设 —— 节点需要能够在一段时间内进行通信才能将其重新组合在一起。
-
椭圆曲线密码学(相对容易理解)入门 -
探索椭圆曲线配对–Vitalik -
KZG 多项式承诺–Dankrad -
受信任的设置如何工作?–Vitalik
5) 协议内提议者 - 构建者分离
-
构建者使用他们的出价承诺区块头 -
信标区块提议者选择获胜的区块头和出价。即使构建者未能生产出 body,投标人也将无条件获得中标 -
证明人委员会确认获胜标头 -
构建者公布获胜的 body -
独立的证明人委员会选举获胜的机构(如果获胜的构建者不同意,则投票决定它缺席)
6) 抗审查名单 (crList)
-
提议者发布一个 crList 和 crList 摘要,其中包括所有符合条件的交易 -
构建者创建一个提议的区块 body,然后提交一个竞标,其中包括 crList 摘要的哈希,证明他们已经看到它 -
提议者接受中标构建者的出价和区块头(他们还没有看到 body) -
构建者发布他们的区块并包含他们已包含来自 crList 的所有交易或该区块已满的证明。否则分叉选择规则不会接受该块 -
证明者检查已发布的 body 的有效性
7) 二维 KZG 方案
8) Danksharding
9) Danksharding–诚实的多数验证
10) Danksharding -- 重构
-
足够多的节点来执行样本请求,以便它们共同拥有足够的数据来重建区块 -
广播各自区块的节点之间的同步假设
11) Danksharding–私人随机抽样的恶意多数安全
12) Danksharding–关键要点
-
与分片 1.0 规范相比,DS 规范中的代码可能少了数百行(客户端少了数千行) -
没有分片委员会基础设施,委员会只需要在主链上投票 -
没有跟踪单独的分片 blob 确认,现在它们都在主链中得到确认,或者它们没有
-
数据存储 —— 这与 DA 与数据可检索性有关。共识层的作用不是无限期地保证数据的可检索性。它的作用是让它在足够长的时间内可用,以便任何关心下载它的人都可以,满足我们的安全假设。然后它会被转储到任何地方 —— 这很舒服,因为历史是 N 信任假设中的 1,而且我们实际上并没有在宏伟的计划中谈论那么多数据。随着吞吐量增加几个数量级,这可能会在几年后进入令人不安的领域。 -
验证者 ——DAS 需要足够多的节点来共同重建区块。否则,攻击者可能会等待,只响应他们收到的查询。如果提供的这些查询不足以重建区块,那么攻击者可以保留其余的,我们就不走运了。为了安全地增加吞吐量,我们需要添加更多的 DAS 节点或增加它们的数据带宽需求。这不是这里讨论的吞吐量的问题。但是,如果吞吐量比这种设计进一步增加几个数量级,这可能会让人感到不舒服。
13) Proto-danksharding (EIP-4844)
-
携带数据 blob 的事务格式 -
KZG 对 blob 的承诺 -
DS 所需的所有执行层逻辑 -
DS 所需的所有执行 / 共识交叉验证逻辑 -
BeaconBlock 验证和 DAS blob 之间的层分离 -
DS 所需的大部分 BeaconBlock 逻辑 -
blob 的自调整独立 gas 价格(具有指数定价规则的多维 EIP-1559)
-
PBS -
数据采集系统 -
2 D KZG 方案 -
每个验证者的托管证明或类似的协议内要求,以验证每个区块中分片数据的特定部分的可用性(可能大约一个月) -
请注意,这些数据 blob 是作为执行链上的一种新事务类型引入的,但它们不会给执行端带来额外的要求。EVM 仅查看附加到 blob 的承诺。使用 EIP-4844 进行的执行层更改也与 DS 向前兼容,并且在这方面不需要更多的更改。然后从 PDS 升级到 DS 只需要更改共识层。
-
EVM 兼容性–KZG 承诺是 48 字节,而 EVM 更自然地使用 32 字节值 -
前向兼容性 —— 如果我们从 KZG 切换到其他东西(STARKs 可用于抗量子),这些承诺可以继续为 32 字节
-
历史 —— 链上发生的一切。您可以将其粘贴在硬盘上,因为它不需要快速访问。从长远来看,1 of N 诚实假设。 -
状态 —— 所有当前账户余额、智能合约等的快照。完整节点(当前)都需要这个来验证交易。它对于 RAM 来说太大了,而硬盘驱动器又太慢了 —— 它放在你的 SSD 里。高吞吐量区块链膨胀了它们的状态,远远超出了我们普通人在笔记本电脑上所能保存的范围。如果日常用户不能持有状态,他们就无法完全验证,那么告别去中心化。
1) Calldata Gas 成本降低与总 Calldata 限制 (EIP-4488)
-
将 calldata 成本从每字节 16 gas 降低到每字节 3 gas -
添加每个区块 1 MB 调用数据的限制以及每个事务额外 300 字节(理论最大值约为 1.4 MB)
2) 在执行客户端中绑定历史数据 (EIP-4444)
3) 找回历史数据
-
EIP-4488–长期可能包括每个时隙(slot)约 1 MB 每年增加约 2.5 TB 存储 -
PDS–目标为每个时隙约 1 MB,每年增加约 2.5 TB 存储 -
DS–目标为每个时隙约 16 MB,每年增加约 40 TB 存储
-
个人和机构志愿者 -
区块浏览器(例如 etherscan.io)、API 提供者和其他数据服务 -
像 TheGraph 这样的第三方索引协议可以创建激励市场,客户可以在其中向服务器支付历史数据以及 Merkle 证明 -
Portal Network 中的客户端(目前正在开发中)可以存储链历史的随机部分,Portal Network 会自动将数据请求定向到拥有它的节点 -
BitTorrent,例如。每天自动生成和分发一个 7 GB 的文件,其中包含来自区块的 blob 数据 -
特定于应用程序的协议(例如 Rollup)可以要求其节点存储与其应用程序相关的历史记录部分
4) 弱无状态
-
交易前 ——Alice 有 1 ETH -
Alice 的公钥 —— 所以我可以知道签名是正确的 -
Alice 的随机数 —— 所以我可以知道交易是按正确的顺序发送的 -
执行交易后 ——Bob 多了 1 ETH,Alice 少了 1 ETH
-
用于持有状态的巨大 SSD 需求消失了 —— 这是当今扩展的关键瓶颈。 -
由于您现在还要下载见证数据和证明,因此带宽要求会有所增加。这是 Merkle-Patricia 树的瓶颈,但它是温和的,而不是 Verkle 尝试的瓶颈。 -
您仍然执行事务以完全验证。无状态承认这不是目前扩展以太坊的瓶颈。
5) Verkle Tries
6) 状态到期
MEV
-
尽可能减少有害的 MEV(例如,单个 slot 确定性、单一秘密领导者选举) -
使其余部分民主化(例如,MEV-Boost、PBS、MEV 平滑)
1) 当今的 MEV 供应链
2) MEV-Boost
3) 委员会驱动的 MEV 平滑
4) 单 slot 交易最终性
5) 单一秘密领袖选举(SSLE)
合并
1) 合并后的客户端
-
执行 —— 执行区块中的每笔交易以确保有效性。获取前状态根,执行所有操作,并检查生成的后状态根是否正确 -
共识 —— 验证你是否在完成工作最多的最重(最高 PoW)链上(即中本聪共识)
-
执行客户端(又名「Eth1 客户端」)—— 当前的 Eth 1.0 客户端继续处理执行。他们处理区块,维护内存池,管理和同步状态。PoW 部分被撕掉了。 -
共识客户端(又名「Eth2 客户端」)—— 当前信标链客户端继续处理 PoS 共识。他们跟踪链的头部,gossip 并证明区块,并获得验证者奖励。
结论


