一文读懂坎昆升级关键——Blob 空间

domothy
媒体专栏
热度: 19107

值得庆幸的是,EIP-4844 本身为我们赢得了大量时间来解决这些问题并在实践中实现所有巧妙的多项式魔法。

原文标题:Blobspace 101

原文作者:domothy

原文来源:domothy

编译:Lynn,MarsBit

介绍

在即将到来的网络升级中,以太坊计划推出EIP-4844(昵称proto-danksharding),以大幅降低在以太坊上提交数据时汇总的成本。该 EIP 的主要成分是所谓的blob,它引入了恰当命名的blobspace概念,该概念旨在与我们今天所知的块空间概念相对应。

本文旨在从头开始探讨 blob 空间的概念。我们将快速概述区块链的扩展问题,以及 blobspace 的概念如何成为以太坊所押注的答案。然后我们将深入研究 blobspace 的更多技术方面,首先从 EIP-4844 的角度来看,因为它即将推出,然后我们将快速研究“完整的 danksharding”将来会带来什么。

历史

问题:如何扩展?

鉴于您正在阅读一篇有关 blobspace 的文章,我认为您至少对与去中心化、安全性和可扩展性有关的区块链三难困境有所了解(如果您不熟悉,那么您需要做一些努力! ),所以我很确定你已经掌握了。因此,为了简洁起见,我将用这两个与本文其余部分相关的陈述来严重简化问题:

  1. 我们希望每个人都能够通过在自己的硬件上运行自己的节点来自行验证区块链。1
  2. 节点必须下载每个区块并运行每个交易,以验证结果是否有效并与网络的其余部分一致。

这两个陈述共同解释了当今区块空间的稀缺性:如果有更多的区块空间,则交易费用会更低,但更多的区块空间意味着节点必须做更多的工作(带宽、计算、存储),这可能最终违背陈述的目标#1. 因此,我们的区块空间供应量相对较小——每个区块大约 1500 万个gas——却满足了相当高的需求,这导致了以太坊臭名昭著的高天然气费。

目标是以某种方式使这两个陈述不矛盾:我们想要更多的块空间,但不会增加构成网络的节点的负担。

解决方案:分片

分片被认为是以太坊的未来,这是理所当然的解决方案:切换到权益证明可以在区块链的不同分片中随机洗牌验证器,每个分片本质上都是自己的迷你区块链,与区块链并行运行。这实际上就是“信标链”这个名字的由来,它的目的是成为随机性信标,将验证者重定向到随机分片。因此,即使每个分片的经济安全性在纸面上明显较低,希望对特定分片进行 51% 攻击的人仍然必须控制整个验证器集的 51%,否则他们将验证器随机分配到同一个分片的机会也很接近零。

虽然这一切在纸面上听起来不错,但要真正获得分片的安全规范,还有很多问题需要解决,而且在跨分片通信、与现有合约的向后兼容性等方面也有很多问题需要回答。所有的研究、讨论、辩论都在进行中,另一个扩展解决方案出现了,并在某种程度上改变了游戏规则:rollups。

另一种解决方案:rollup

无需过多讨论,您可以将rollup视为在以太坊“之上”运行的自己的区块链(因此称为“第 2 层”或“L2 ”)。就像区块链一样,rollup 保存内部状态,执行事务来计算状态转换等。然后,我们引入一类新的参与者,称为排序器,它们负责将许多第 2 层交易批处理(或“rollup”)到一个单个第 1 层交易。

可扩展性的提高来自于这样一个事实:以太坊的验证器和节点不必承担计算每一个rollup交易的任务,但它们仍然保护它们并强制其有效性。这怎么可能?通过在以太坊上建立智能合约,对rollup排序器可以执行的操作和处理桥接资产施加一些关键限制。

让我们看看这对于乐观和零知识汇总是如何工作的:

  • 乐观rollup:L1 合约接受所有批次有效,但在资产从rollup中提取之前强制执行延迟
  • 在此延迟期间,如果排序器恶意行为并进行了无效交易,任何人都可以提交欺诈证明
  • zkRollup:L1 合约接受所有带有加密有效性证明的批次
  • 这个有效性证明非常短,通常是对数大小:L2 交易数量的平方只会使证明大小加倍!

在这两种情况下,L1 合约还允许用户手动推送 L2 交易(例如,退出资金),以防排序器试图审查用户。Rollup 的口号是它们“继承了以太坊的安全性”,因为为了重组 Rollup 区块,您也需要重组以太坊,这是极其困难且昂贵的。

当谈到排序器在实践中如何运行时,有很多设计决策和权衡,但这只是总体思路。对于本文的其余部分,需要注意的是,第 1 层很少执行,rollup首先需要的是数据。虽然以太坊节点不需要计算每一个 L2 交易,但它们仍然需要拥有与 L2 交易相关的所有数据,否则可能会发生不好的事情:

  • 对于乐观rollup,恶意排序器可能会提交一笔无效交易,窃取所有资金,然后扣留欺诈证明所需的数据,然后等待 L1 合约让他们弥补不义之财之前的延迟。
  • 对于 zkRollup 来说,恶意排序器无法窃取资金,但扣留数据仍然可以让他们审查并扣押每个人的资金。

由于我们希望 Rollup 像以太坊一样具有去信任性和抗审查性,因此同步 Rollup 内部状态所需的所有数据都必须强制在第 1 层上可用,这一点至关重要,因为通过拥有可以提交欺诈证明并从中提取资金的状态,rollup。

以rollup为中心的路线图

已经是 2020 年了,向质押证明的过渡还有很多工作要做,而且分片也没有明确的规范。各种rollup都宣布测试网启动。计算表明,与以太坊单独使用分片所实现的相比,rollup将能够扩展到每秒显着更多的交易。

正如 Vitalik 在他的以太坊魔术师帖子中所说:

在我看来,当[完全执行分片]最终到来时,基本上没有人会关心它,这似乎是非常合理的。无论我们喜欢与否,每个人都已经适应了以rollup为中心的世界,到那时,继续沿着这条道路走下去会比试图让每个人回到基础链更容易,因为没有明显的好处,而且可扩展性降低 20-100 倍。

基本上,我们可以做复杂的事情并扩展第 1 层执行,但所能实现的只是rollup排序器会说“哦,酷,更多数据”,并且几乎不触及我们花了很长时间分片的执行。因此,现在的计划是将分片范围缩小到仅数据分片——执行只会在信标链上进行,以用于rollup(欺诈证明和有效性证明),然后分配给随机分片的验证器将仅在信标链上进行。负责将 Rollup 的数据提供给任何需要的人。

考虑到rollup,现在的计划是第 1 层将扩展数据(这更容易做到),第 2 层将这些可扩展数据转换为可扩展执行。如果这听起来像是以太坊核心开发人员放弃了,那是因为事实确实如此。但这是一个务实的决定!与以太坊不同的是,rollup 可以快速发展,并且相互竞争可以推动创新。这种模块化设计将核心协议的更改保持在最低限度,同时在不做出牺牲的情况下安全扩展区块链的梦想得以延续。

这个以汇总为中心的路线图的另一个被低估的方面是,rollup可以更自由地相互独立地进行创新:在最初的分片计划中,每个分片都具有相同的 EVM、相同的最终属性、相同的一切以及相同的精确权衡2。押注于rollup意味着以更快的速度获得更多创新。

Danksharding

在另一个彻底简化事情的举措中,以太坊研究员 Dankrad Feist 在一份题为“具有紧密信标和分片块集成的新分片设计”的文件中提出了一种不同的设计。通过这种设计,我们完全摆脱了分片作为迷你区块链的概念。相反,我们拥有的只是以一种巧妙的方式构造的blob(正如我们稍后会看到的),因此尽管块中充满了大 blob,但每个单独的节点只需要做很少量的工作来检查所有数据可用。

检查所有数据是否可用,这就是业内所说的“数据可用性检查”——无需下载所有数据,您的节点就可以确信所有数据都在那里(如果您需要的话)。这解决了汇总排序器可能扣留数据的问题:就像节点不会遵循包含无效交易的分叉一样,节点也不会遵循数据不可用的分叉——即使 99% 的验证者恶意试图扣留数据数据!

danksharding 带来的主要权衡是,构建区块在带宽和计算方面成为一个非常繁重的过程,这对区块构建者来说是一种集中力量。幸运的是(但不幸的是),由于 MEV,区块构建者的中心化已经发生——构建者已经拥有运行最优化算法的强大机器,可以从以太坊的区块空间中榨取价值。通过 danksharding,他们将承担额外的角色,将这些大块打包到块中,这样网络的其余部分只需做少量工作即可对其进行检查。

原始danksharding

果然,历史并没有就此结束。虽然它是对原始数据分片计划的巨大简化,但 danksharding 仍然相当复杂,并且需要一些时间才能发布,而 rollup 则需要更多数据,就像昨天一样。这就是开发者 protolambda 的用武之地,他的迷你 danksharding概念证明(很快就被称为proto-danksharding,因为它演变成EIP-4844)

这引入了rollup排序器将使用的携带 blob 的交易类型,除非没有上面提到的所有花哨的数据可用性检查。由于单独使用 EIP-4844 并不能实现实际的数据扩展,因此 Blob 的数量必须暂时保持有限且尺寸较小(因为每个节点仍然需要下载每个 Blob)。尽管如此,这是一个非常好的步骤,因为它满足了汇总的数据要求。此外,一旦发布了完整的 danksharding,从rollup的角度来看,什么都不会改变,他们只会注意到 blob 突然变得更大。

Blob的诞生

当某人(可能是rollup排序器)签署并广播一种新型交易(恰当地称为“携带 blob 的交易”)时,不起眼的 blob 就开始了它的生命。交易包含常见的东西:发送者、接收者、随机数、gas bid 等。此交易中包含的新东西是:

  1. max_fee_per_blob_gas这是发件人愿意为 blob 支付的出价。(有关 Blob 定价的更多信息,请参阅下文)
  2. blob_version_hashes这是 blob 的哈希值列表(因为,是的,单个交易可以带有多个 blob)

值得注意的是,该交易不包含实际的 blob 数据。执行层仅通过字段知道对 blob 的引用blob_version_hashes。实际数据是“sidecar”的一部分,在共识层上接收、共享和验证。

Blob之死

在Deneb 分叉的当前 P2P 规范中,节点预计将根据请求提供 4096 个 epoch(大约 18 天)的 blob 数据。

在此期限之后,节点可以从其硬盘驱动器中删除数据并停止提供服务。让 blob过期会对额外存储要求设定上限:以每个 blob 125 kb 为目标,每个块 3 个 blob,如果将旧 blob 删除为新 blob,则这会导致额外数据存储要求略低于 50 GB进来。

对于区块链来说,放弃数据似乎不直观。但值得坚持的是,数据可用性并不意味着数据存储——无论哪种分片解决方案盛行,总是不可避免地会出现某种形式的修剪,因为期望通过“每个人都免费永久存储所有内容”这样的模型进行扩展是不现实的”。以太坊作为一种协议,仅保证数据可供任何需要数据的人下载和存储,并且这种保证足以控制汇总。

也就是说,一旦 blob 过期,并不意味着数据会永远丢失:它总是可以通过某种协议外的方式检索,其中一些方式比其他方式更加去中心化(想想区块链浏览器与 BitTorrent)。值得注意的是,历史存储具有 1-of-n 信任假设:在分发历史 blob 时,只有单个节点需要诚实。由于 blob 的版本化哈希值,没有人可以欺骗您接受未通过正确渠道的 blob 数据。

为什么blob是这样的

现在您可能想知道为什么我们在如何构建 blob 方面花费了如此多的精力:如果目标只是提交一些数据,那么就可以SHA256(data)实现完全相同的事情。但我向你保证,沿着多项式路径走下去有几个很好的理由:多项式允许我们做各种聪明的技巧,即擦除编码、使用多项式承诺方案的数据可用性采样。

纠删码

第一个技巧与擦除编码有关,即添加冗余,以便在仍然能够重建原始数据的同时,最多可以丢失一半的总数据。其要点是获取数据并将其转换为多项式,然后在更多点上评估该多项式。

举一个简单的例子,假设我们的原始数据是数字列表[1, 3, 2, 2]。这是 4 个数据点,可用来插值阶数为 3 的多项式 P(x),其中 P(i) 的值为第 i 个数据点:

以太坊

以太坊

扩展多项式只需评估 P 在另外 4 个点上,最自然的是 5、6、7 和 8。这样我们就得到了扩展数据 [7,21,48,92]。现在有了整个数据 [1, 3, 2, 2, 7, 21, 48, 92],这 8 个点中的任何 4 个点都足以重建相同的多项式,以便在缺失的点上对其进行求值,从而得到原始数据。

需要注意的是,在实际应用中,我们会通过使用模块化算术来避免难看的分数和大指数,从而避免数字爆炸到无穷大,但思路是完全一样的。

数据可用性抽样

现在我们已经用这个聪明的多项式技巧扩展了我们的数据,下面的陈述就成立了:

如果至少一半的扩展数据可用,则整个数据可用。

请记住,这是 danksharding 的核心思想:我们希望大幅增加区块链的数据容量,同时保留每个节点确认每个字节数据可供任何想要下载的人使用的能力。现在,借助纠删码,节点只需检查至少一半的数据是否可用,即可就整个数据的可用性做出决定。

好吧,到目前为止这听起来不太聪明,因为我们首先必须通过扩展来将数据加倍。但事情是这样的:节点实际上不必下载那么多数据来检查至少 50% 的数据是否存在:节点可以简单地请求数据的随机样本并执行几次检查,这应该足够了以非常高的概率让节点相信所有数据都在那里。

想象一下,一个恶意行为者试图从网络的其余部分隐瞒一些数据,例如,如果他们是一个顽皮的排序者,在乐观汇总中做了一些坏事,并且他们不希望任何人拥有对其进行质疑所需的数据并附有欺诈证明。他们能够向整个网络广播的最大数据量略低于扩展数据的 50%,因为任何高于该数据量的数据都足以重建数据并进行举报。

回想一下,整个数据已转换为多项式,然后使用与原始点一样多的额外评估进行扩展。在上面的简单示例中,我们将 4 个数据点转换为 3 次多项式,然后在另外 4 个点处进行评估。想象一下,我们有 100,000 个数据点,插值到一个更大的多项式中,然后通过另外 100,000 个评估进行扩展。

如果我是试图隐瞒数据的恶意行为者,我不会想要从 200,000 个点的大列表中发布超过 99,999 个数据点,因为超过这个数据点就足以插入相同的多项式以重建所有内容。现在,作为节点,您的工作是检查至少 50% 的数据可用,但不执行下载所有内容的简单操作。如何?当然是把整个事情变成概率游戏!正如您所看到的,我很快就失败了这个小游戏,因为我无法提前预测您将要求哪些随机数。

有两点值得注意:

  • 30 比 100,000 小得多。如果每个数据点保存 32 字节信息,那么整个练习只需要下载大约 1 KB 的数据即可检查约 3 MB 的可用性。
  • 原始数据点的数量可能是一百万、一千万或五十亿,并且 30 次随机检查仍然会给出相同的十亿分之一的错误机会。

就是这样,简而言之,这就是 danksharding!创建区块的人负责将数据转换为大多项式并发布它的繁重工作,然后每个验证者在证明区块之前都会进行快速采样游戏(以及正常职责)。常规的非验证节点也会进行这种抽样游戏,因此即使 99% 的验证者都参与了邪恶的数据扣留计划,诚实的节点仍然只会遵循由不扣留的 1% 的诚实节点创建的分叉数据。

请注意,这个小采样游戏会检查数据是否可供任何想要下载的人使用:如果您个人在特定汇总上持有资金,那么可能值得付出额外的努力并下载相关数据。但通过运行节点,您仍然可以参与强制所有汇总数据的可用性——即使是您不关心的汇总。这就是数据可用性采样和汇总的组合基本上是执行分片的作弊代码版本!

多项式承诺方案

最后一个缺失的多项式技巧就是所谓的多项式承诺方案,这是一个比较复杂的问题,所以我在本节中就不做过多解释了。基本上,我们用它来确保随机抽样检查不会遇到与我们开始使用的实际多项式不匹配的无稽之谈。

我可以把一个百万级的多项式 "散列 "成一个非常简短的承诺 C。然后,一旦你得到了这个承诺,我就可以用它来向你证明,在给定的点 x 上,多项式的值为一个特定的值 y。你所拥有的只是四个非常简短的值:承诺 C、点 x、值 y 和证明 π,而进行快速检查就能让你相信 P(x)=y 而无需知道大多项式的百万级系数。

这里使用的多项式承诺方案被称为 KZG,如果你愿意把一两件事当作黑箱,它其实很简单。不过,为了理解 blobspace,我们不妨绕个弯,了解一下如何召唤出这个绝对不能让任何人知道的秘密值 s。

召唤秘密s

这一切都与椭圆曲线标量乘法有关,如果您还不熟悉的话,这是一个非常复杂的数学分支。然而,就我们的目的而言,您真正需要知道的是,这些奇特的椭圆曲线使我们能够设计一种以单向方式“加密”数字的函数。

除了是单向函数(x→[x] 容易,[x]→x 不可能)之外,我们还关心另外两个重要的数学特性:

以太坊

这些属性非常强大,因为它们可以让我们在不知道计算中使用的值的情况下进行计算。也就是说,如果给你 s 的加密幂,你就可以求出 P(s) 的加密版本,而无需知道 s 的实际值:

以太坊

剩下的唯一问题是,不管是谁给了你 s 的加密幂,他都必须知道 s 的未加密值。你必须相信他们在完成计算后删除了自己的 s 副本,或者他们的随机发生器正常工作,或者他们的计算机没有被监视等等。解决方法是让尽可能多的参与者各自计算自己的秘密,然后按顺序将所有秘密混合在一起。

现在,秘密 s 就是 c b a 要想得到未加密的秘密,唯一的办法就是三个人都保留自己的随机数,并同意串通一气将它们相乘。或者换句话说,只要有一个人诚实地参与并扔掉自己的秘密,得到的最终秘密就是 s 是安全的,世界上没有人知道它是什么。

把这个小小的秘密召唤仪式扩大到十万人以上,那么所有参与者串通一气的概率实际上是 0%。更妙的是,如果你亲自参加,并且知道自己的行为是诚实的,那么所有的疑虑都会迎刃而解。值得庆幸的是,以太坊自己的仪式就是这样的!

顺便说一下,正确的说法是 KZG 可信设置,您可以从 Vitalik 的博文中了解更多信息,请点击此处

Blob 市场

定价曲线

Blob 将按照一种新资源定价,该资源被创造性地命名为“Blob Gas”。定价机制与 EIP-1559 非常相似:一旦 EIP-4844 推出,每个块的目标将是3 个 blob,以及每个块 6 个 blob 的硬突发限制。回想一下,每个 blob 保存大约 125 kb 的数据,这意味着块将平均包含 375 kb 的 blob 数据,但在极端情况下可能包含两倍的数据。与往常一样,这些数字是常数,一旦全面的 danksharding 推出,以及所有奇特的数据可用性采样内容,这些数字就会增加。

请注意,常规 Gas 和 Blob Gas 的价格计算方式略有不同:

  • 常规 Gas 定价:一个区块中的gas价格是前一个区块与目标相比使用了多少gas的简单函数。
  • Blob Gas 定价:Blob Gas 的价格是运行计数超额Blob 总数的函数。

基本上,每个块都会有一个新的标头字段来跟踪多余 blob 的计数,并根据块中包含的 blob 数量(与目标相比)进行更新。因此,如果当前计数为 500 个多余 Blob,并且该块包含 0 个 Blob,则比目标低 3 个 Blob,因此下一个块的计数将为 497。否则,如果该块包含 5 个 Blob,则比目标高 2 个 Blob,因此下一个块的计数将是502。

然后,该运行计数将成为函数的输入,该函数输出应为该块定价多少 blob。就像 EIP-1559 一样,这个函数具有指数性质:在成本爆炸到无穷大之前,块只能包含 6 个 blob,而没有人负担得起,这将导致多余 blob 的数量下降,直到出现再次有意愿竞标者。

这两种机制都实现了列出最低价格的相同目标(当然,这会被烧毁),但差异对我来说非常有趣。这应该会使定价曲线更有效地瞄准每个块平均 3 个 blob。是 ethresear.ch 的一篇关于它的文章,以获取有关数学的更多解释。

2D费用市场

EIP-4844 的另一个有趣的方面是引入了二维费用市场,这意味着执行和 blob 将根据各自的个人需求单独定价。“执行价格”就是我们今天所知道的 Gas 费,包括 EIP-1559 和所有这些好东西。

更具体地说,这意味着第 1 层可能会超级拥挤且昂贵(想象一下我们之前看到的 NFT 下跌或 memecoin 交易狂潮),而不会影响blob的价格,这反过来又使第 2 层用户免受痛苦第一层发生的任何无意义的拥塞。

就像上面描述的花哨的运行计数机制一样,这是使以太坊费用市场效率大大提高的另一件事。绰号“多维 EIP-1559”,引入一种全新类型的资源是开始分割一切的完美借口,以便尽可能有效地使用可用资源。

完整的 Danksharding

好吧,正如历史部分所述,EIP-4844 在执行层上设置了舞台,但在共识层上没有执行任何花哨的数据采样技巧,默认为“每个节点下载每个节点”的最简单的数据可用性。 blob”,这就是为什么 blob 开始时相当小。

完整的 Danksharding 需要在幕后进行更改,这不仅允许 Blob 更大,还允许区块包含更多 Blob。升级到支持 EIP-4844 的 Rollups 不需要做任何事情,从他们的角度来看,唯一的变化就是在链上提交数据的成本神奇地降低了很多!

这次升级值得注意的主要事情是数据 blob 如何打包到块中以及如何扩展数据的二维性质。在上面关于纠删码的部分中,我保持简单和一维,其中数据点列表变成单个多项式,然后评估为相同数量的额外点。然而,在 danksharding 的情况下,这个概念发生在 2D 网格中:

以太坊

在此简化示例中,有 16 个原始数据点(绿色 D)和 48 个扩展评估点(蓝色 E)。一行中的任何 4 个点都足以重建整个行,对于列也是如此。当重建的行提供有关列的新信息时,这有助于逐步重建整个正方形,反之亦然 - 在某种程度上,有点像数独游戏。

通过执行此 2D 操作,我们很快注意到,扩展数据总量是原始数据的 4 倍,而不是原始数据的 2 倍。我们的说法是“如果 50% 的数据可用,则所有数据可用”更新为 75%。但进行随机抽样检查的想法是一样的,我们只需要多做一点就可以得到同样十亿分之一的被愚弄的机会。

这样做的原因是我们可以将保存所有这些多项式的责任分解为更易于管理的行和列,并将它们分配给各种验证器——这样不需要节点知道整个正方形。数学计算还以这样的方式进行:如果验证者仅选择 2 个随机行和列,并专门对它们进行采样游戏以决定是否证明整个块,则一个不完整的块(即发布的块少于 75%)无法获得超过1/16证明,这使得它不太可能被包含在主链中。

此外,所使用的多项式承诺方案 (KZG) 具有一些额外复杂的属性,可以进一步简化 2D 网格中的事物。

还剩下什么

至此,danksharding 和数据可用性采样背后的理论已经非常可靠。剩下要解决的主要问题主要是从实际实施的角度来看,特别是在对等网络级别。除此之外,我们希望对客户进行抽样,有效重建数据的方法是一个持续的研究主题

值得庆幸的是,EIP-4844 本身为我们赢得了大量时间来解决这些问题并在实践中实现所有巧妙的多项式魔法。

更多链接


  1. 请注意,质押 32 ETH 的验证者是一个节点,但节点不一定是质押 – 自己验证链不需要质押! 
  2. 感谢 Eric Wall比我更好地表述了这个想法 
  3. 它实际上略小于 ~31.86 字节,但这现在并不重要。 
  4. Field 元素是比number更好的术语,但这现在也不重要。 
声明:本文为入驻“MarsBit 专栏”作者作品,不代表MarsBit官方立场。
转载请联系网页底部:内容合作栏目,邮件进行授权。授权后转载时请注明出处、作者和本文链接。未经许可擅自转载本站文章,将追究相关法律责任,侵权必究。
提示:投资有风险,入市须谨慎,本资讯不作为投资理财建议。
免责声明:本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况,及遵守所在国家和地区的相关法律法规。