主页 > imtoken官网网址 > 以太坊 2.0 将实现的 Sharding(分片)是什么?

以太坊 2.0 将实现的 Sharding(分片)是什么?

imtoken官网网址 2023-06-24 06:16:10

原文标题:《一文读懂分片基础原理, 数据分片, 跨分片交易, 区块链分片和缩放究竟是什么鬼?》
原文来源:区块链大本营

以太坊是一个什么链_以太坊私有链共识机制_以太坊的私有链

以太坊是所有区块链中的底层平台,已经与分片概念同步。 要理解为什么以太坊开发者社区想要实施分片,重要的是要理解什么是分片以及为什么这种解决方案如此具有吸引力。

据ETH Gas Station统计,向以太坊区块链添加一笔交易大约需要1.78分钟,每32秒生成一个新区块,平均每秒处理15-20笔交易。 这个生态系统创造了一个有利于矿工而不是用户的环境,如果他们希望首先处理他们的交易,他们必须提高他们的汽油价格。

由于低吞吐量、高延迟和高价格限制了以太坊网络的性能,以太坊目前不适合部署需要强扩展性的服务和应用程序。

什么是分片?

简单来说,分片是一种分区方法,可以在P2P网络中分配计算任务和存储工作负载。 经过这种处理方式后,各个节点不负责处理全网的交易负载,只需要维护自己的分区(或Fragmentation)相关信息即可。

为了进一步解释分片,我们可以看一个最简单的分片示例。 以太坊创始人 Vitalik Buterin 称其为“增加了 1000 个山寨币的可扩展性”。

在这个例子中,我们不是运行单个区块链,而是运行多个区块链,我们将每个区块链称为分片,而不是区块链。 反过来,每个分片都有自己的验证者网络或节点网络,可以使用PoW算法来挖块,也可以通过质押或投票来挖块。

分片挑战

我们在尝试使用分片时面临的第一个问题是,由于每个分片都有自己的一组节点,因此每个分片的安全性都低于像以太坊这样的单链。

以太坊的私有链_以太坊私有链共识机制_以太坊是一个什么链

因此,如果具有 x 个节点的以太坊决定硬分叉并拆分成一个分片链,并将整个网络分布在 10 个以上的分片上,每个分片将具有原始链的 1% 的安全性。 这意味着通过控制 5.1%(而不是 51%)的原始链节点,每个分片都可以被破坏。

以太坊的私有链_以太坊私有链共识机制_以太坊是一个什么链

我们遇到的第二个问题是:“我们如何选择哪些节点来验证哪个分片?” 对于一个不太好的演员来说,只有当 5.1% 的网络节点都在同一个分片中进行验证时才会发生这种情况,控制这些节点是一个问题。

允许节点选择在哪个分片中进行验证会导致频繁的网络攻击,因此将攻击风险降至最低的最佳方法是不允许节点选择在哪个分片中进行验证。

以太坊是一个什么链_以太坊的私有链_以太坊私有链共识机制

事实上,所有分片架构都是随机将节点分配给分片的。 将节点分配给分片需要非分片特定的计算,并且几乎所有这些设计都使用单独的链来处理维护整个分片和节点网络。 这条链在以太坊中被称为信标链,负责生成随机数、将节点分配给分片、捕获单个分片的快照、处理握手股份以及各种其他功能。

信标链有一些缺点。 因为它们负责前面提到的记录保存计算,所以网络使用的分片越多,信标链需要做的工作就越多,而没有分片的网络可能会出现低吞吐量和高延迟的情况。 ,因此分片网络的可扩展性有其天然的局限性。

然而,分片网络是乘法的,因此如果网络效率提高,网络中的节点处理交易的速度提高四倍,信标链可以处理四倍的分片数量,将网络速度提高 16 倍。

如何将数据拆分成碎片?

让我们首先看看节点通常在区块链上执行的功能:

1. 处理/验证交易

以太坊是一个什么链_以太坊私有链共识机制_以太坊的私有链

2. 将这些交易和他们挖掘的区块中继到网络上的其他节点

3.存储所有交易的历史

随着网络的发展,节点需要能够跟上网络的需求及其不断发展的需求。

1. 增加正在处理的交易数量需要每个节点增加更多的计算能力。

2. 中继的交易越多,节点需要提供的带宽就越大。

3. 为了将所有数据存储在区块链上,节点需要逐渐增加更多的存储空间。

查看这三个参数,你会发现无论是每秒交易数还是中继交易数增加,数据存储量都会增加。

在这篇文章之前已经提出了分片存储而不是交易,并且一些项目已经实现了交易处理(而不是存储)的分片。

然而,最常见的分片类型称为“状态分片”,由每个分片中的节点组成,构建自己的区块链,其中包含全球网络中仅影响它们的所有节点。 部分交易,这意味着节点只需要存储其分片的交易历史,处理影响其分片的交易,并在其分片中中继这些交易。

接下来以太坊是一个什么链,我们介绍跨分片交易、无效交易和恶意行为。

区块链分片和扩展

以太坊私有链共识机制_以太坊是一个什么链_以太坊的私有链

以太坊的私有链_以太坊私有链共识机制_以太坊是一个什么链

上面,我们讨论了什么是分片,分片解决的问题,以及有效实施分片需要克服的一些障碍。 那么接下来我们将讨论跨分片交易、无效交易和恶意行为。

如上所述的基本类型的分片并不是一种非常有效或实用的分片方法,因为它们不能相互通信,所以它们就像一个单一的区块链。 以一个简单的支付为例,如果用户 A 和用户 B 在同一个分片上,那么分片中的验证者可以毫无阻碍地处理交易,但是当他们的账户在不同的分片上时会发生什么呢?

用户A在1#分片,用户B在2#分片。 单个分片上的验证者将无法借记或贷记用户帐户,因为他们没有权限访问彼此的分片。

但是,这个问题有解决方案,所以让我们更详细地看一下其中的一些:

同步(同时)跨分片交易

在这种情况下,当1#分片中的用户A想要向2#分片中的用户B发送资金时,会在每个分片中同时产生包含与该交易相关的状态转换的交易。 块,每个分片上的验证器一起工作以确认交易。

早在 2018 年初,Vitalik Buterin 就提出了用这个解决方案合并区块。 (注一)

异步跨分片交易

这是一个更容易完成的操作,也更容易协调,因此它优于同步事务。

同样,我们将使用分片 1# 上的用户 A 想要向分片 2# 上的用户 B 汇款的示例。 在这种场景下,负责记入用户B账户的分片只有在有足够的证据证明负责记入用户A账户的分片已经完成后,才会对B自己的部分交易进行验证。

以太坊私有链共识机制_以太坊是一个什么链_以太坊的私有链

然而,这种方法并不完美,碎片中的块被丢弃的可能性非零。 当概率不为零时,无论概率多么小,它仍然是一个不容忽视的弱点。

我们可以通过下图详细解释原因:

以太坊私有链共识机制_以太坊是一个什么链_以太坊的私有链

这个区块链有两个分片,巧合的是,它们都在交易合并到分片 1# 的区块 A 和分片 2# 的区块 X' 时分叉。

当这样的分叉发生时,分片必须丢弃一条链并接受另一条。 此时,如果A、B等链成为1#分片中的接受链,W'、X'等成为2#分片中的接受链,则交易顺利完成,皆大欢喜。

如果1#分片接受A'、B'等,2#分片接受W、X等,那么整个交易就会失败,但这也是可以接受的结果,因为交易可以重发。

但是如果1#分片接受链A、B等,而2#分片接受链W、X等会怎样呢? 事务的一部分(A、B 等)已完成,但另一部分(W、X 等)被丢弃。

分片中的恶意节点

现在您对分片及其工作原理有了更好的了解,您可能会感到满意,或者您可能会有更多问题,但至少还有一件事需要考虑:恶意节点。

1. 恶意节点

这种情况经常发生,当有可能出现大交易日时,不管是什么系统以太坊是一个什么链,都会有人想要攻击系统。

以太坊私有链共识机制_以太坊是一个什么链_以太坊的私有链

2. 批准无效区块

恶意节点可能会通过创建试图改变网络的块来攻击网络。 假设用户 1 有 10 个硬币,用户 2 有 0 个硬币。 当用户 1 想要将这 10 个币发送给用户 2 时,网络上的恶意节点可能会尝试创建一个区块,最终用户 1 将失去所有的币,而用户 2 将拥有 1000 个币。

以太坊的私有链_以太坊是一个什么链_以太坊私有链共识机制

在非分片的常规区块链中,这种类型的攻击是不可能的,因为每个节点都会验证每个块,如果发现无效块,所有节点(无论他们是否是矿工)都会拒绝该块。

对于经典的区块链,无论恶意节点创建了多少块,或者创建的速度有多快,网络中的诚实节点始终会忽略这些块并继续构建诚实的区块链

如果恶意节点想通过构建无效区块的方式向自己的账户充值大量代币,就会导致一条链一分为二。 在这种情况下,恶意节点的数量甚至可能超过诚实节点的数量。 较短的链是诚实链,较长的链是无效链。

在常规的非分片区块链中,每个参与者都有责任验证他们收到的所有区块并确认它们的状态,因此任何对区块链有既得利益的人都会立即识别无效链,并忽略(在这种情况下)较短的链。

以太坊的私有链_以太坊私有链共识机制_以太坊是一个什么链

分片链稍微复杂一些,因为参与者无法验证每个分片上的每笔交易。 所以我们必须弄清楚如何验证分片的整个历史中没有无效块。

由于信标链一般不具备验证每个分片中每个区块的能力,我们需要其他解决方案来确保每个链的完整性。

假设网络是联合运行的,每个分片都有拜占庭容错机制,分片控制中的恶意节点数量小于66.667%,那么可以构建一个机制来防止任何试图生成无效块的行为行为,当一个或多个诚实节点可以验证系统有无效块时,系统将被警告。

如果超过 66.667% 的分片被恶意节点控制,理论上可以敲定区块。 但是,只要分片中有一个节点是诚实的,就可以构建一种允许诚实节点质疑恶意节点的机制。

原文链接:

注 1:)