主页 > imtoken钱包官方版软件下载 > V神:分片化是以太坊扩容的未来,揭开分片化之谜

V神:分片化是以太坊扩容的未来,揭开分片化之谜

作者:以太坊创始人 Vitalik Buterin

分片是以太坊可扩展性的未来,它将是帮助以太坊生态系统支持每秒数千笔交易并允许世界上大部分地区以可承受的成本定期使用该平台的关键。 然而,分片也是以太坊生态系统和更广泛的区块链生态系统中最容易被误解的概念之一。 分片指的是一组具有非常具体属性的非常具体的想法,但它经常与具有非常不同且通常更弱的安全属性的技术相混淆。 这篇文章的目的是准确解释分片提供的具体属性,它与没有分片的其他技术有何不同,以及为实现这些属性必须做出的牺牲。

以太坊分片版本的众多描述之一。 原图由王晓薇提供,由 Quantstamp 设计。

sitejianshu.com v神以太坊_v神怎么修改协议让以太坊_v神清仓以太坊

可扩展性三角

描述分片的最佳方式是从塑造和启发解决方案的问题陈述开始:可扩展性三角形。

可扩展性三角形认为,区块链试图同时拥有三个属性。 如果坚持技术上的“简单性”,那么这三个属性中你只能获得其中两个,即区块链“不可能三角”。 这三个属性是:

为了捕获可扩展性三角形中的两个,现在让我们看一下三类“简单解决方案”:

分片是一种允许您同时拥有所有三个属性的技术。 分片区块链具有:

这篇文章的其余部分将描述分片区块链如何做到这一点。

随机抽样分片

最容易理解的分片版本是通过随机抽样进行分片。 随机抽样分片比我们在以太坊生态系统中建立的分片形式具有更弱的信任属性,但它使用更简单的技术。

核心思想如下。 假设你有一个拥有大量(比如 10000)验证者的 PoS 链,并且你有大量(比如 100)个区块需要验证。 在生成下一组块之前,单个计算机的功能不足以验证所有这些块。

所以我们做的是随机分配作业进行验证。 我们随机打乱验证者列表,并分配打乱后列表中的前 100 个验证器来验证第一个块,并分配打乱后列表中后 100 个验证器来验证第二个块,依此类推。 这些随机分配的验证器来验证块(或执行其他任务)称为委员会。

当验证者验证一个块时,他们会发出一个签名来证明他们已经这样做了。 不是每个人都验证这 100 个区块,而是每个人验证 10,000 个签名——要做的工作要少得多,尤其是使用 BLS 签名聚合时。 不是在同一个 P2P 网络上广播每个块,而是在不同的子网络上广播每个块,节点只需要加入他们负责的区域(或出于其他原因感兴趣)块所在的子网。

考虑一下如果每个节点的计算能力增加 2 倍会发生什么情况。由于每个节点现在可以安全地验证 2 倍以上的签名,您可以减少最小质押保证金大小以支持 2 倍以上的验证者,因此您不需要 100 个委员会可以组成200个委员会。 所以你可以验证每个槽 200 个块而不是 100 个。此外,每个单独的块也可以放大 2 倍。所以你有 2 倍的 2 倍大小块的数量,换句话说,总共 4 倍的区块链容量。

我们可以用一些数学术语来表达它。 使用大 O 表示法,我们使用“O(C)”来指代单个节点的计算能力。 传统的区块链可以处理 O(C) 块。 如上所述的分片区块链可以并行处理 O(C) 个块(请记住,每个节点以 O(1) 的成本间接验证每个块,因为每个节点只需要验证固定数量的签名),每个块有 O( C)容量,所以分片区块链的总容量为O(C2)。 这就是为什么我们将这种分片称为“二次分片”,这种效果是我们认为分片是长期扩展区块链的最佳方式的关键原因。

常见问题解答:拆分为 100 个委员会与拆分为 100 个独立链有何不同?

有两个区别:

随机抽样可以防止攻击者将力量集中在一个分片上。 在一个拥有 100 条链的多链生态系统中,攻击者只需要大约 0.5% 的权益即可造成破坏:他们可以专注于对一条链进行 51% 的攻击。 在分片区块链中,攻击者必须拥有大约 30-40% 的股份才能做同样的事情(换句话说,整个链共享安全性)。 当然v神怎么修改协议让以太坊,攻击者可以等待,即使它持有不到 50% 的股份,通过随机机会获得 51% 攻击单个分片的机会,但对于少于 51% 的攻击者,这将攻击难度成倍增加。 如果攻击者拥有不到~30%的资产,攻击几乎不可能成功。 紧耦合:即使一个分片遇到坏块,整个链也会重新组织以避免这个块。 有一个社会契约(在本文的其余部分我们描述了一些实现这个契约的技术方法),一条链在一个分片中只有一个坏块是不可接受的,一旦发现,它应该被丢弃。 从链上应用的角度来看,这确保了完美的安全性:合约 A 可以依赖于合约 B,因为如果合约 B 由于链上的攻击而行为不端,则整个历史都会被恢复v神怎么修改协议让以太坊,包括由于合约 B 失败而导致的行为不当的合约 A 交易.

这两个差异确保分片为应用程序创建了一个环境,以多链生态系统根本不会的方式保留单链环境的关键安全属性。

通过更好的安全模型改进分片

我完全同意比特币社区的一个普遍信念,即像比特币(或以太坊)这样的区块链并不完全依赖于诚实的多数假设。 如果这样的区块链受到 51% 的攻击,攻击者可以做一些令人讨厌的事情,比如恢复或审查交易,但他们不能插入无效交易。 即使在恢复或审查交易时,运行常规节点的用户也可以轻松检测到这种行为,因此如果社区希望通过分叉来消除攻击者的力量来协调解决攻击的方法,他们可以迅速采取行动。

缺乏这种额外的安全性是更中心化的高 TPS 链面临的主要弱点。 这样的链没有,也不可能有运行节点的常规用户文化,因此主要节点和生态系统参与者更容易聚集在一起并实施社区强烈不喜欢的协议更改。 更糟糕的是,用户的节点默认接受它。 一段时间后,用户会注意到,但到那时,这种强制协议更改已成为既成事实:这种协调负担将由用户拒绝更改,他们将不得不做出痛苦的决定以扭转区块链上的局面产生的价值,或者撤消更多每个人都认为已经完成的活动。

理想情况下,我们希望采用一种分片形式,避免 51% 的信任假设,并保留传统区块链源自全面验证的强大安全堡垒。 这就是我们过去几年的大部分研究所做的。

可扩展的计算验证

我们可以将针对51%攻击的可扩展验证问题分为两种情况:

验证区块链中的区块涉及计算和数据可用性检查:你需要确信区块中的交易是有效的,并且区块中声明的新状态根哈希是执行这些交易的正确结果,但你也需要确信来自该区块的足够数据实际上已经发布,以便下载该数据的用户可以计算状态并继续在区块链上工作。 第二部分是一个非常微妙但很重要的概念,称为数据可用性问题。 稍后会详细介绍。

扩展验证相对容易计算; 有两种技术:欺诈证明和 ZK-SNARKs。

sitejianshu.com v神以太坊_v神清仓以太坊_v神怎么修改协议让以太坊

欺诈证明是一种以可扩展的方式验证计算的方法。

这两种技术可以简单描述如下:

基于欺诈证明的计算是可扩展的,因为在“正常情况”下,您将验证单个签名而不是运行复杂的计算。 在某些特殊情况下,由于挑战,您必须在链上验证计算,但特殊情况很少见,因为触发它非常昂贵(原始索赔者或挑战者可能会损失大量押金)。 ZK-SNARKs 在概念上更简单——它们只是用更便宜的证明验证代替计算——但它们工作原理背后的数学要复杂得多。

有一个半可扩展的系统,只能在规模上验证计算,同时仍然要求每个节点验证所有数据。 通过使用一组压缩技巧用计算替换大部分数据,可以使这种方法非常有效。 这是 Rollup‌ 领域。

数据可用性的可扩展验证更加困难

欺诈证明不能用于验证数据的可用性。 计算的欺诈证明依赖于计算的输入在原始索赔者提交后在链上发布的事实,因此如果有人挑战他们,挑战执行将在与原始完全相同的“环境”中进行执行。 在检查数据可用性的情况下,你不能这样做,因为问题恰恰是有太多的数据需要检查才能发布到链上。 因此,针对数据可用性的反欺诈方案遇到了一个关键问题:有人可以声称“数据 X 可用”但不发布它,等待被挑战,然后只有当挑战者出现在网络的其余部分并且是错误的。 发布数据 X。

这在“渔夫的困境”中得到了扩展:

核心思想是这两个“世界”,一个是V1是邪恶的发布者,V2是一个诚实的挑战者,另一个“世界”是V1是一个诚实的发布者,V2是一个邪恶的挑战者。 这两种情况对当时没有尝试下载该特定数据的任何人都没有影响。 当然,在一个可扩展的去中心化区块链中,每个单独的节点只能希望下载一小部分数据,所以只有一小部分节点会看到发生了什么,除非存在分歧。

无法分辨谁对谁错,也就无法有有效的防欺诈机制来保证数据的可用性。

常见问题解答:如果某些数据不可用怎么办? 使用 ZK-SNARKs,您可以确定一切正常,这还不够吗?

不幸的是,单靠有效性并不足以确保区块链正常运行。 这是因为,如果区块链有效但所有数据都不可用,用户将无法更新他们需要的数据来生成任何未来区块有效的证据。 生成有效但不可用的块然后消失的攻击者可以有效地使区块链陷入停顿。 有人还可以保留特定用户的帐户数据,直到该用户支付赎金,因此问题不仅仅是生存问题。

有一些强有力的信息论论据认为这个问题是根本性的,并且没有聪明的技巧可以解决它(例如涉及密码累加器)。 有关详细信息,请参阅本文 (‌)。

那么,如何在不实际下载的情况下检查 1 MB 数据是否可用? 听起来不可能!

这里的关键是一种称为数据可用性抽样的技术。 数据可用性抽样的工作方式如下:

使用称为擦除编码的工具将具有 N 个块的数据扩展为具有 2N 个块的数据,以便这些块中的任何 N 个都可以恢复整个数据。 为了检查可用性,用户不是尝试下载整个数据,而是随机选择块中固定数量的位置(比如 30 个位置),并且只有在他们成功地在所选位置的所有块中找到块时才接受该块块。

sitejianshu.com v神以太坊_v神怎么修改协议让以太坊_v神清仓以太坊

纠删码将“检查 100% 可用性”(每条数据都可用)的问题变成了“检查 50% 可用性”(至少一半数据可用)的问题。 随机抽样解决了 50% 的可用性问题。 如果只有不到 50% 的数据可用,那么至少有一个检查几乎肯定会失败,如果至少有 50% 的数据可用,那么,尽管一些节点可能无法识别一个块是可用的,但它只会一个诚实的节点能够运行纠删码重建程序来取回剩余的 50% 的块。 因此,无需下载 1 MB 来检查 1 MB 块的可用性,您只需要下载几 KB。 这使得在每个块上运行数据可用性检查成为可能。 请参阅这篇文章 (@vbuterin/sharding_proposal #Blob-publication-process‌),了解有关如何使用对等子网有效执行此检查的信息。

ZK-SNARKs 可用于验证一段数据的擦除编码是否正确完成,然后 Merkle 分支可用于验证单个块。 或者,您可以使用多项式承诺(例如 Kate(又名 KZG)承诺),它本质上是纠删码并在一个简单的组件中证明单个元素和正确性验证——这就是以太坊分片所使用的。

复习:我们如何确保一切正确?

假设你有 100 个区块,你想在不依赖委员会的情况下高效地验证所有区块的正确性。 我们需要做以下事情:

我们可以使用欺诈证明:一些利益相关者可以签署每个区块的正确性。 其他称为挑战者(或渔夫)的节点随机检查并尝试完全处理块。 因为我们已经检查了数据可用性,所以始终可以下载数据并完全处理任何特定块。 如果他们发现一个无效的区块,他们将发出一个所有人都可以验证的挑战。 如果该块被证明是坏的,则该块以及依赖它的所有未来块都需要重新计算。 我们可以使用 ZK-SNARKs。 每个区块都带有一个证明正确性的 ZK-SNARK。

这是所有的了! 在以太坊分片中,短期计划是仅将分片块数据化。 也就是说,这些分片纯粹是一个“数据可用性引擎”,Layer Rollup 的工作是使用该安全数据空间以及欺诈证明或 ZK-SNARKs 来实现高吞吐量的安全交易处理功能。 然而,完全有可能创建这样一个内置系统来添加“本机”高吞吐量执行。

分片系统的关键属性是什么? 权衡是什么?

分片的主要目标是尽可能复制传统(非分片)区块链最重要的安全属性,而不需要每个节点亲自验证每笔交易。

分片即将到来。 在传统区块链中:

在具有高级安全功能的分片区块链中:

欺诈证明会很快抓住它并通知整个网络该块的错误并严厉惩罚创建者,或者 ZK-SNARK 证明是正确的并且您不能为无效块制作有效的 ZK-SNARK。 如果只有不到 50% 的数据块可用,则每个客户端几乎肯定会执行至少一次数据可用性样本检查,从而导致客户端拒绝该数据块。 如果至少 50% 的区块数据可用,那么实际上整个区块都是可用的,因为只需要一个诚实节点来重建剩余的区块。

没有分片的传统高 TPS 链无法提供这些保证。 多链生态无法避免攻击者选择一条链进行攻击并轻易接管的问题(这些链可以共享安全性,但如果做得不好,将成为事实上的传统高TPS链,这些都是缺点,并且如果做得好,将只是上述分片技术的更复杂的实现)。

侧链高度依赖于实现,但它们往往容易出现传统高 TPS 链的弱点(即如果它们共享矿工/验证器)或多链生态系统的弱点(即如果它们不共享矿工/验证器) . 分片链避免了这些问题。

但是,分片系统存在一些隐患。 尤其:

这些都是合理的担忧,尽管在我们看来,通过允许更多应用程序在链上运行而不是通过集中式第 2 层服务实现的用户级集中化的减少远远超过了这些担忧。 也就是说,这些问题,尤其是最后两个问题,实际上是将分片链的吞吐量提高到一定程度以上的真正限制。 二次分片的二次性是有限制的。

顺便说一下,如果吞吐量太高,分片区块链的安全风险就会越来越大,这也是为什么扩展到超二次分片的努力在很大程度上被放弃的主要原因。 似乎保持二次分片只是二次分片真的是一种快乐的媒介。

为什么要中心化生产和分片验证?

通常提出的分片替代方案是使用类似于中心化高 TPS 链的结构,不同之处在于它使用数据可用性采样和顶部分片来验证有效性和可用性。

今天,中心化的高 TPS 链在这方面有所改进,但仍然比分片系统弱得多。 这是出于以下几个原因:

在高 TPS 链中,检测区块生产者审查要困难得多。 审查检查需要 (i) 能够查看每笔交易并验证不存在无法解释的无法访问的明显有价值的连接,或者 (ii) 在区块生产者中具有一对一的信任模型和一个中央节点在高 TPS 链中,(i) 是不可能的,而 (ii) 更难,因为节点数量少,即使是 1of N 信任模型也更容易被破坏,如果链的出块时间为对于 DAS 来说太快了(因为大多数中心化的高 TPS 链都是如此),而且很难证明一个节点的块不会因为发布太慢而被拒绝。 如果大多数区块生产者和生态系统成员试图强制执行不受欢迎的协议更改,用户的客户端肯定会检测到它,但社区反抗和分叉要困难得多,因为他们需要旋转一组新的昂贵的高吞吐量节点来维护链遵循旧规则。 集中式基础设施更容易受到外部参与者的审查。 出块节点的高吞吐量使得它们很容易被检测到,甚至更容易被关闭。 在政治上和逻辑上,审查专用 HPC 比在单个用户的笔记本电脑上审查要容易得多。 更高的高性能计算迁移到中心化云服务的压力增加了整条链将运行在 1-3 个公司的云服务中的风险,因此由于许多区块生产者同时失败而导致链崩溃的风险更大时间大。 带有在自己的硬件上运行的验证器的分片链不会那么容易受到这种攻击。

适当分片的系统最适合作为基础层。 对于分片基础层,您可以将其构建为 Rollup,始终能够创建集中式生产系统(例如,您想要一个具有 DeFi 同步可组合性的高吞吐量域)。 但是,如果你有一个依赖中心化区块生产的基础层,你就不能在它上面构建一个更去中心化的 Layer 2。返回搜狐查看更多