随着加密货币规模扩展的争论不断,一些潜在的解决方案实际上已经开发了一段时间。

具体来说,在以太坊(Ethereum)的情况下,以分散性和可扩展重点,主要关注分散性和安全性,将分片与实现权益证明共识相结合的应用被视为网络可以通过其扩展至实用级别的应用程序,同时仍保持其分散性和安全性。

分片是一个复杂的主题,尤其是在应用于分散的,对等网络(如以太坊)时,该网络的全局状态不断更新。

那么分片到底是什么?它如何帮助区块链网络扩展呢?

分片和分布式计算背景

分片实际上比区块链技术要古老得多,并且已在从业务数据库优化到Google的全球Spanner数据库的各种系统中实现

  • 本质上,分片是一种用于在数据库中水平分区数据的特定方法。
  • 更一般而言,数据库被分成称为“碎片”的小片段,这些碎片在聚合在一起时就形成了原始数据库。
  • 在分布式区块链网络中,该网络由以对等格式连接的一系列节点组成,没有中央权限。
  • 与当前的区块链系统一样,每个节点都存储网络的所有状态并处理所有交易。
  • 虽然这通过分散提供了高级别的安全性,尤其是在工作量证明系统(例如比特币以太坊)中,但它会导致合法的扩展问题。

以太坊分片

以太坊为例,以太坊网络中的完整节点存储区块链的整个状态,包括账户余额,存储和合同代码。

不幸的是,随着网络规模以指数级增长,共识只会呈线性增长。此限制是由于达成共识所需的节点之间需要进行通信。

网络中的节点没有特殊特权,网络中的每个节点都存储和处理每个事务。结果,在以太坊大小的网络中,当网络紧张时,诸如高昂的燃气成本和更长的交易确认时间之类的问题就成为明显的问题。网络是唯一的一样快,各个节点,而不是它的部分的总和。

分片通过提供有趣但复杂的解决方案来帮助减轻这些问题。该概念涉及将节点的子集分组为分片,这些分片又处理特定于该分片的事务。它允许系统并行处理许多事务,从而显着提高吞吐量。

一种简单的表达方式是设想将美国划分为州。

虽然每个州(在这种情况下为分片)都是美国(以太坊网络)的一部分,但它们有自己的特定规则,边界和人口子集。但是,他们确实拥有通用的语言和文化,作为组成该国的较大网络的一部分。

Vitalik Buterin自己的话说甚至更好

 “想象一下以太坊已经分裂成数千个岛屿。每个岛屿都能做自己的事。每个岛屿都有其独特的功能,属于该岛屿的每个人(即帐户)都可以彼此交互,并且可以自由地沉迷于其所有功能。如果他们想联系其他岛屿,他们将不得不使用某种协议。”

如您所见,将网络分成更有效的部分的概念使网络可以作为其各个部分的总和,而不受每个节点速度的限制。

分片在区块链中如何工作?

我们将继续以太坊为例,因为这是区块链领域最著名,最艰巨的分片尝试,因为以太坊开发人员正在实施所谓的“ 状态分片 ”。

以太坊区块链的当前状态被称为“ 全局状态 ”,这是每个人在特定实例中查看区块链时所能看到的。

在以太坊中实现分片的棘手部分是,通过将节点分片成较小的子集,这些子集需要能够处理特定的交易集,同时更新网络状态,同时确保其有效。

以太坊中的分片应该在两阶段部署中实施,比网络中实施权益证明之后更有可能第一阶段将是数据层,该数据层由分片中的哪些数据达成共识。第二阶段是状态层。所有这些都是非常不稳定的,因此下面是其工作方式的一般分解。

以太坊将网络分解为特定的碎片。每个分片被分配一个特定的交易组,该交易组是通过将特定帐户(包括智能合约)分组到一个分片中来确定的。每个事务组都有一个标头和一个由以下内容组成的主体。

标头

  • 事务组的分片ID
  • 通过随机抽样分配验证者(验证分片中的交易)
  • 状态根(添加事务之前和之后分片的Merkle根的状态)

身体

  • 属于事务组的所有事务都是特定分片的一部分。

交易特定于每个分片,并且发生在该分片的本地帐户之间。

验证交易后,网络状态会更改,并且帐户余额,存储空间等也会更新。为了使事务组验证为有效,事务组的状态前根必须与全局状态中的分片根匹配。如果它们匹配,则验证事务组,并通过特定的分片ID状态根更新全局状态。

以太坊区块链的每个块现在不仅包含状态根,还包含状态根和交易组根。交易组根是该交易块的特定分片中所有交易组的merkle根。

基本上,所有包含更新和验证的交易组的不同分片都有一个Merkle根。该根与更新后的状态根一起存储在区块链中。

在这种结构中使用Merkle树概念对于确保区块链的有效性至关重要。了解Merkle树,尤其是Merkle根的工作原理,可以帮助您更轻松地掌握这些概念。

什么是默克尔树

分片内的共识是通过随机选择的节点的权益证明共识来实现的,这些证明适用于针对特定共识轮的分片。

这不仅为分片提供了共识的最终性,而且还为这种情况下的工作量证明区块链易受攻击的攻击提供了特殊的防御措施

大大减少了在PoW分片网络中超载特定分片所需的哈希能力,并且恶意行为者通过计算能力接管分片的能力是可行的。

通过这种方式,不良行为者可以通过通信协议攻击其他分片,这是分片架构更复杂,更重要的功能之一。分片中验证者的随机抽样选择可以抑制这种类型的攻击,因为不良行为者在实际放置到分片中之前不会知道他们所放置的分片。

此外,将使用随机采样从该随机验证集中选择实际验证的验证器

通信协议对于分片架构在系统中正常运行至关重要。您可以将通信协议视为通用语言,在较大的美国中,各州之间的协议是一致的。

但是,设计此协议非常具有挑战性,需要执行该协议,以便仅在必要时使用。当特定节点需要未存储在其自身分片中的信息并且需要找到具有必要信息的分片时,这变得很有必要。这种通信称为跨分片通信。

通过应用交易收据的概念来实现跨分片通信。交易的收据存储在merkle根中,可以很容易地验证它,但它不是状态根的一部分。

从另一个分片接收交易的分片会检查merkle根,以确保收据未被使用。本质上,收据存储在共享内存中,可以由其他分片验证但不能更改。因此,通过收据的分布式存储,分片能够相互通信。

分片前进

Casper PoS升级后,有望在以太坊中进行分片最近,关于以太坊2.0的一些发展涉及实现Casper和分片。

分片还已经在其他一些平台中实现,最著名的是Zilliqa但是,Zilliqa目前不实现状态分片,而是专注于通过利用事务和计算分片来提供高吞吐量的区块链。

Zilliqa

结论

分片现在可以为区块链平台中的大象提供一些有前途的解决方案,即可扩展性。

虽然比特币的闪电网络目前处于测试阶段,并且到目前为止已经显示出非常令人鼓舞的进步,但是以太坊的解决方案被视为图灵完整的世界计算机,因此带来了一些独特的挑战。

分片将仅在协议级别上直接起作用,因此对于最终用户或dapp开发者而言,了解不一定是有意义的。

无论如何,以太坊试图对庞大的分散网络进行状态分片的尝试是一项令人印象深刻的努力,如果成功实施,将是一项巨大的成就。