一文详解ETH2.0的重要技术:分片
在这篇文章中,我们将研究eth2.0的另一个重要特性:分片技术。
Layer 1 VS Layer 2的可扩展性
对各种加密货币和山寨币系统的一个常见批评是可扩展性。简而言之,如果加密货币和区块链技术将推动明天的DeFi世界发展,它必须能够支持数十亿人。可扩展性技术主要分为以下几类-Layer 1 与Layer 2。
Layer 2可扩展性
这些是建立在区块链之上的链外可扩展性解决方案。这里的想法是让基础层保持独立,并在其上增加额外的架构。该层处理复杂的计算,从而减轻了基础层的体系结构瓶颈。Raiden和Plasma是Layer 2可扩展性的示例,我们将在以后的文章中进行探讨。
Layer 1可扩展性
在区块链内执行的可扩展性技术称为Layer 1。增加区块大小和分片是两种最著名的Layer 1可扩展性技术。
分片数据库Sharding database
分片最初是一种技术用于将庞大的数据库横向划分为更易于管理的块或分片。看这张表:
那么,您看到这里发生了什么吗?
有一个6行的大型数据库。通过分解它,我们将它转换成三个大小可管理的较小分片。这只是通过水平分区来实现。要理解这一点,请考虑下面的示例。
看下这张表:
让我们垂直划分这个表:
看到了吗?由于分区的关系,表变成了两个完全不同的表。水平分区只会将表更改为具有相同功能的较小表。
同样的概念也可以扩展到区块链,其中链的状态被分割成更小、更易于管理的区块,称为分片。
为什么要使用分片?
加密货币最大的问题之一,也是创建以太坊2.0背后的核心原因是可扩展性。以太坊目前每秒可以处理少于25个事务,这是相当糟糕的。这种缓慢速度背后的原因是工作证明(POW)共识协议和这些加密货币固有的体系结构设计。
ETH 2.0:队列流程 VS 并行流程
在加密货币中进行的大多数交易操作本质上是队列的。想想交易是如何运作的:
1. 发送方通过将其发送到接收方的公共地址来启动交易。他们使用数字签名签署交易。
2. 矿工拿到交易,验证签名并检查发送方是否有足够的余额来完成交易。
3. 之后他们将事务添加到其区块中。
4. 区块被添加到区块链,随后交易通过。
正如你所看到的,整个过程是非常有序的。每一步都取决于前一步的正确完成。随着网络规模的扩大,这个问题变得更加复杂。
这就是为什么选择并行处理可以是更可行的选择的原因。在本质上,你可以在一个区块链中分解成多个分片,并且可以将它们分解成若干个并行处理。
假设一个网络有三个节点——A、B和C。在队列模式中,每个节点都必须单独验证数据集D。然而使用分片,D将被分解为三个分片D1、D2和D3。它们每个都可以占用一个单独的分片并同时处理它们。即使我们只考虑三个分片,并行化绝对可以大大加快进程。
让我们将其扩展到以太坊的大小,以太坊目前有6970个节点。如果以最佳方式执行,则整体吞吐量的提高将是巨大的。Eth 2.0最终将被划分为1,024个分片,它希望从理论上讲这应该使网络吞吐量增加> 1000倍。
托管节点的成本
接下来,让我们看一下可扩展性的另一个方面。以太坊是一个对等网络。没有集中的数据中心。整个网络依赖于节点完成各自的工作。在以太坊中,每个单独的节点都具有与其他节点相同的权限和特权。在以太坊中,您可以是一个轻节点,也可以是一个全节点。
轻节点客户端是下载其系统中区块链的一部分的节点。它可以验证交易执行,而不必下载和维护整个区块链。
全节点是指连接到已完全下载并定期维护区块链的主网络的任何系统。它们几乎是以太坊网络的主干,履行以下职责:
1. 要么挖掘区块,要么确保为每个挖掘的区块给出正确的区块奖励。
2. 完全执行网络的所有共识规则。
3. 确保事务具有正确的签名,并且区块的数据格式正确。
4. 最后他们最重要的功能是确保网络中不会出现双花情况。
问题在于,以太坊全节点必须始终下载并维护整个区块链。这里的问题是以太坊区块链的数据量非常大,接近有1TB的大小,因此常规节点存储全部数据变得越来越困难。
那么,切分在这里有什么帮助呢?根据GitHub上的官方Sharding FAQ,关键思想是允许以太坊每秒处理10000多个事务,而不必强迫每个节点在硬件设备上花费数千美元。这就是为什么分片技术可以很好地解决这个问题。每个节点的工作负载分配显着减少。
什么是以太坊分片?
最后,让我们看一下分片在ETH 2.0中的工作方式。以太坊区块链的整个状态称为“全局状态”。该状态被分解为分片,并且每个分片都有其自己的状态。这些状态,分片和全局根形成Merkle树。
所以让我们看看发生了什么。树中的每一级都是从上面一级中的一个节点派生出来的。
以太坊2.0分片机制
激活分片后,将发生以下情况:
状态被分割成分片。
每个唯一帐户都属于一个分片。
为了直观地了解其工作原理,让我们以Devcon的Vitalik Buterin为例。
想象以太坊已经分裂成成千上万的岛屿。每个岛屿都能做自己的事。每个岛屿都有自己独特的功能,属于该岛屿的每个人(即帐户)都可以彼此互动,他们可以自由地享受它的所有特征。如果他们想与其他岛屿联系,他们必须使用某种协议。
以太坊2.0通过创建两个级别的交互来执行此操作。
第一层
分片交互中的第一级是事务组。每个分片都有自己的唯一交易组。
该组进一步细分为事务组标头和主体。
事务组标头
事务组标头具有明显的左右部分。
左侧部分包含以下组件:
1. 事务组所属的Shard ID,在本例中为“43”
2. 状态前的根,即在将事务放入其中之前该特定分片的根的状态。
3. 后状态根是将事务组放入根之后的根状态。
4. 最后,有一个收据根,用于确认交易组已进入该根。
标头的右侧部分是一组随机选择的验证器,它们验证分片本身内部的事务。
一层功能
到目前为止,我们已经看到了属于第一级的组件,让我们来看看一切如何结合在一起:
每个事务都指定它们所属的唯一shard ID。
属于特定分片的事务在该分片中的两个帐户之间发生。
级别还通过指定前状态根和后状态根来显示状态转换。
第二层
现在,让我们看一下ETH 2.0的分片的第二层。您在上面的图像中看到的是一个标准的区块链,但是它有两个根,而不是一个:
状态根:还记得我们以前的Merkle树图吗?状态根是整个状态的根节点。
交易组根:包含在该块的所有分片内的所有交易组的根节点。
二层功能
该级别充当简单的区块链,接受交易组而不是交易。
仅当状态前根与全局状态中的分片根匹配时,才接受事务组。此外,交易组中的每个单个签名都需要进行验证。
事务组进入该块后,其全局状态根(如该块中所述)将成为该分片ID的后状态根。
跨分片通讯
好了,现在您知道分片是如何工作的以及它们的组成。但是以太坊最后需要做的就是让这些分片成为它们自己的独立孤岛。必须有一种方法,这些分片可以有效地相互通信。
为了使画面更清晰,让我们回顾一下巴特林的岛屿比喻。如果这些岛屿必须蓬勃发展,则需要使用特定的协议彼此有效地进行互动。另外,为了减少通信负担和费用,这些孤岛必须找出一种仅在需要时进行通信的方法。
分片通信的原理相同。以太坊开发人员需要回答某些问题以确保有效的跨分片通信:
1. 分片如何在提供以太坊网络期望的相同安全性的同时相互通信?
2. 分片如何在不影响安全性的情况下提供预期的大规模可扩展性?
ETH 2.0的跨分片通讯
ETH 2.0的跨分片通信协议是“receipt paradigm”。
1. 如上所述,集合中的每笔交易都会在分片中生成收据。
2. eth2.0信标链将有一个分布式共享内存,这些收据将被存储在那里。
3. 其他分片可以看到信标链内的收据。由于区块链的不可变属性,他们无法对其进行篡改。
4. 因此,分片将能够彼此受益而不影响最终性。
跨分片通信的两个最大问题是操作复杂性和延迟。让我们来看看ETH 2.0如何缓解这些障碍。
#1消除复杂性
Vitalik Buterin已经提出了两个提案,即创建一个完全分片的以太坊,它具有“相对最小的共识层框架”,为开发复杂的智能合约框架提供足够的支持。
这些提案将:
1. 将多个任务和责任从单个分片转移到信标链。
2. 确保分片具有自己的唯一状态和执行。
3. 降低每个分片的复杂性并维护各种网络功能。
4. 分片将具有足够的功能来创建执行环境,以支持分片,跨分片通信和其他功能中的智能合约。
5. 介绍三种新的事务类型-NewExecutionScript,NewValidator和Withdrawal以完成这些任务。
研究新的事务类型
NewExecutionScript创建一个可以保存ETH的执行脚本。
NewValidator将新的验证节点添加到系统。
Withdrawal从信标链中移除验证节点。
验证节点的添加和撤消是通过执行脚本和接收系统授权的。
这些新的创新将使以太坊能够进行跨切分通信,同时利用Layer 2抽象交换所有以太网并执行智能合约。
这消除了单个分片的所有复杂操作,并使它们尽可能简单。
#2通信延迟
要了解这种延迟是如何发生的,让我们看看跨分片通信是如何工作的:
1. Alice想从Shard A发送令牌到Shard B。
2. 在这个事务中,令牌在Shard A上被烧掉并保存地址记录。然后将该值发送到目标Shard B。
3. 经过一段时间的延迟后,每个单独的分片都会通过八卦来了解其他分片的状态根。
4. 一旦分片验证了交易,Shard B从Shard A恢复token收据。
5. 最后Shard B收到从Shard A发送的令牌。
可以想象,此过程会导致很多延迟,这会损害用户体验并违背ETH 2.0的整个可扩展性精神。Vitalik通过给出以下示例解释了此问题的解决方案:
“…如果Bob在Shard B上有50个令牌,Alice从Shard A向Bob发送了20个令牌,但是shard B还不知道Shard A的状态,因此无法完全验证转账,如果Alice的转账是真实的,Bob的账户状态暂时变为‘70个令牌’,有能力验证Shard A和Shard B的节点可以几乎立即确定转移的“最终结果”(即一旦在链内验证转移,Bob的帐户状态最终将解析为70个令牌)。
该解决方案提案称为“通过乐观收据根进行快速跨分片传输”。
一旦转让被核实,交易:
如果有效,则变为永久性。
如果没有,则还原。
分片何时开始工作?
正确执行分片的最关键的技术需求之一是权益证明共识算法。原因是每个单独的分片将具有原始以太坊链的哈希率的一小部分。但是如果分片包含强大的挖矿池作为其验证节点,则它可以完全接管系统并集中其操作。
阶段0
阶段0通过启动信标链启动POS实现。一旦满足以下条件,该链将启动其第一个(genesis)区块:
网络上至少有524,288 ETH被抵押。
至少有16,384位验证者签名。
阶段1
该阶段可以被认为是“分片阶段”,将在2021年发生。区块链被划分为64个分片链,这些分片链并行运行并不断相互通信。到本阶段结束时,以太坊应该能够同时处理64个区块中的交易。由于分片可以分配工作负载,因此可以大大减少主链膨胀。
阶段1.5
在此阶段,将信标链与主工作量证明(POW)链集成在一起,以创建新的POS链。如前一阶段所定义,POW链最终将作为64个分片链之一存在。
请记住,原始的POW链的历史数据还是存在,但它将像其他分片一样存在,但不再运行POW共识机制。
阶段2
这个阶段的细节还没有完善。但是人们普遍认为,该阶段将微调以太坊账户,交易,转账和在新链上无缝执行智能合约等功能。
ETH 2.0分片:结论
您可以想象,微调无缝分片执行的不同功能非常困难,这就是为什么以太坊2.0分阶段启动的原因。然而,一旦执行,这将把以太坊带到前所未有的高度。对加密货币的最大冲击是它缺乏可扩展性,这迫使新的协议选择更集中的方法和机制。然而,通过分片,以太坊将能够在不影响分散化的情况下显著扩大规模。
译者:链三丰
译文出处:http://bitoken.world
微信扫描关注公众号,及时掌握新动向
2.本文版权归属原作所有,仅代表作者本人观点,不代表比特范的观点或立场
2.本文版权归属原作所有,仅代表作者本人观点,不代表比特范的观点或立场