当应用于以太坊(Ethereum)这样的分散式网络时,切分是一个复杂的主题-请在我们的完整切分指南中了解更多信息
随着加密货币规模化辩论的继续,一些潜在的解决方案实际上已经开发了一段时间了。
具体而言,以太坊的重点主要放在分散化和安全性上,而牺牲了可扩展性。在以太坊的情况下,分片的应用与实施利益相关证明共识被视为非常必要的机制,通过这种机制,网络可以扩展到应用程序的实际级别,同时仍然保持其分散化和安全性。
切分是一个复杂的主题,尤其是当应用于分散的对等网络(如以太坊)时,网络的全局状态会不断更新。
那么,切分到底是什么?它如何帮助区块链网络进行扩展?
分片和分布式计算背景
目录
- 1分片和分布式计算背景
- 2以太坊切分
- 3分片如何在区块链中工作?3.1标题3。2阀体
- 4切分前进
- 5结论
切分实际上比区块链技术要古老得多,并且已经在各种系统中实施,从商业数据库优化到谷歌的全球扳手数据库。
- 从本质上讲,切分是在数据库中水平划分数据的一种特殊方法。
- 更一般地说,数据库被分成称为“碎片”的小块,当这些碎片聚集在一起时,就形成了原始数据库。
- 在分布式区块链网络中,网络由一系列以对等格式连接的节点组成,没有中央权限。
- 与当前区块链系统一样,每个节点存储网络的所有状态并处理所有交易。
- 虽然这通过分权提供了高级别的安全性,特别是在比特币和以太坊等工作证明系统中,但它会导致合法的扩展问题。
以太坊切分
以太坊为例,以太坊网络中的完整节点存储区块链的整个状态,包括账户余额、存储和合同代码。
不幸的是,随着网络规模以指数速度增长,共识只会线性增长。这种限制是由于达成共识所需的节点之间的通信。
网络中的节点没有特权,网络中的每个节点都存储和处理每个事务。因此,在以太坊这样规模的网络中,当网络紧张时,诸如高昂的天然气成本和更长的交易确认时间等问题成为显而易见的问题。网络的速度仅与单个节点的速度一样快,而不是其各部分的总和。
通过提供有趣但复杂的解决方案,切分有助于缓解这些问题。这一概念涉及将节点子集分组到分片中,然后分片处理特定于该分片的事务。它允许系统并行处理许多事务,从而显著提高吞吐量。
更简单的说法是,想象美国分裂成美国。
虽然每个州(本例中为一个碎片)都是更大的美国(以太坊网络)的一部分,但它们有自己的特定规则、边界和人口子集。然而,作为组成这个国家的更大网络的一部分,他们确实共享一种通用的语言和文化。
甚至更好,用维塔利克·巴特林自己的话来说:
“想象一下以太坊已经被分割成数千个岛屿。每个岛屿都可以做自己的事情。每个岛屿都有自己独特的功能,属于该岛屿的每个人(即帐户)都可以相互交流,他们可以自由地享受其所有功能。如果他们想联系其他岛屿,他们必须使用某种协议。”
如您所见,将网络分割为更高效的部分的概念允许网络作为其部分的总和运行,而不是受每个节点的速度限制。
分片如何在区块链中工作?
在这方面,我们将继续以以太坊为例,因为它是区块链领域中最著名、最艰难的分片尝试,因为以太坊开发商正在实施所谓的“状态分片”。
以太坊区块链的当前状态被称为“全球状态”,是每个人在特定实例中查看区块链时都能看到的状态。
在以太坊中实现切分的难点在于,通过将节点切分为更小的子集,这些子集需要能够处理特定的事务集,同时更新网络状态,同时确保其有效。
以太坊中的分片应该分两个阶段进行,更可能是在网络中实施利益证明之后。第一阶段是数据层,包括对碎片中数据的一致性。第二阶段是状态层。所有这些都是非常不稳定的,因此下面将对其工作原理进行详细分析。
以太坊将网络分解为特定的碎片。每个分片都分配了一组特定的交易,该交易是通过将特定帐户(包括智能合约)分组到一个分片中来确定的。每个事务组都有一个标题和一个正文,由以下内容组成。
收割台
- 事务组的碎片ID
- 通过随机抽样分配验证器(验证shard中的事务)
- State Root(添加事务前后碎片的merkle根的状态)
身体
- 属于属于属于特定分片一部分的事务组的所有事务。
事务特定于每个shard,并且发生在该shard的本地帐户之间。
验证交易后,网络状态会发生变化,账户余额、存储等也会更新。为了验证事务组是否有效,事务组的前状态根必须与全局状态中的碎片根匹配。如果匹配,则验证事务组,并通过特定的shard ID state根更新全局状态。
以太坊区块链的每个块现在不仅包含状态根,还包含状态根和事务组根。事务组根是该事务块的特定碎片中所有事务组的merkle根。
基本上,包含更新和验证的事务组的所有不同碎片都有一个merkle根。此根与更新的状态根一起存储在区块链中。
在该结构中使用merkle树概念对于确保区块链的有效性至关重要。了解merkle树,特别是merkle根是如何工作的,可以帮助您更轻松地掌握这些概念。
阅读:什么是梅克尔树?
碎片内的共识是通过随机选择的节点的利害关系证明共识达成的,这些节点应用于特定共识回合的碎片。
这不仅为共识提供了最终性,这在碎片中是必要的,而且还为在这种情况下工作证明区块链可能受到的攻击提供了特殊的防御。
在PoW分片网络中,溢出特定分片所需的哈希能力大大降低,恶意参与者通过计算能力接管分片的能力是可行的。
通过这种方式,坏人可以通过通信协议攻击其他分片,这是分片体系结构中更复杂和重要的特征之一。在碎片中随机抽样选择验证器可以抑制这种类型的攻击,因为一个坏的参与者在实际放入碎片之前不知道他们放入了哪个碎片。
此外,将使用随机抽样从该随机验证集中选择实际验证的验证器。
通信协议对于分片体系结构在系统中正确运行至关重要。你可以把通信协议看作是作为大美国一部分的各州之间一致的通用语言。
然而,设计该协议是一项极具挑战性的任务,需要执行该协议,以便仅在必要时使用。当特定节点需要未存储在其自身切分中的信息,并且需要找到包含必要信息的切分时,就有必要使用该切分。这种通信称为跨碎片通信。
跨分片通信是通过应用交易凭证的概念来实现的。事务的收据存储在merkle根中,可以轻松验证,但它不是状态根的一部分。
从另一个shard接收事务的shard会检查merkle root,以确保收据没有用完。本质上,收据存储在共享内存中,其他碎片可以对其进行验证,但不能更改。因此,通过收据的分布式存储,碎片能够相互通信。
切分向前移动
以太坊中的分片预计将在Casper PoS升级后实施。最近,在以太坊2.0方面有了一些进展,涉及到实现Casper和sharding。
切分也在其他一些平台上实现,最著名的是Zilliqa。然而,Zilliqa目前没有实现状态切分,而是专注于通过利用事务和计算切分提供高吞吐量区块链。
阅读我们的Zilliqa指南
结论
切分为区块链平台中的大象提供了一些有希望的解决方案,即可扩展性。
虽然比特币的闪电网络处于测试阶段,迄今为止已经显示出一些非常有希望的进展,但以太坊的解决方案带来了一些独特的挑战,因为它被定位为图灵完整的世界计算机。
切分将仅在协议级别直接工作,因此对于最终用户或dapp开发人员来说,切分可能不一定需要了解。
无论如何,以太坊为一个庞大的、分散的网络进行状态切分的尝试是一项令人印象深刻的努力,如果成功实施,将是一项巨大的成就。