您现在的位置是:首页 > 资讯 > 热点资讯网站首页热点资讯

分片技术简介

  • Genesis
  • 热点资讯
  • 2018-12-09
简介公共区块链平台今天面临的最大问题之一就是可扩展性。所有主流的平台都在努力提高每秒的交易量。事实上,当今的公共以太坊网络和比特币网络平均每秒可以处理7-10笔交易
公共区块链平台今天面临的最大问题之一就是可扩展性。所有主流的平台都在努力提高每秒的交易量。事实上,当今的公共以太坊网络和比特币网络平均每秒可以处理7-10笔交易。这一数字远低于像Visa这样的集中支付处理器,后者平均每秒能处理约8000笔交易。
 
缓慢的交易处理造成了一个主要问题,因为大量的未完成交易阻塞了网络,使得那些诸如实时支付这样的应用程序很难在区块链上一展身手。随着确认支付的时间拉长,最终就会给用户带来诸多不便;随着更多更复杂的DApps开始依赖于相同的一个区块链网络,迟缓的交易速度所导致的问题只会变得更加复杂。
 
分片技术承诺通过改变网络验证的方式来增加吞吐量。分片技术独特于其他解决扩容的链上技术的关键特性,就是它可以进行水平扩容,也就是说,网络的吞吐量随着挖矿网络的扩展而增加,在扩展性能的同时也不会降低去中心化程度和安全性。这种特殊的特性可能使它成为推动区块链技术被快速采用的理想技术。
 

什么是分片?

 
分片是一种基于数据库分成若干片段的扩容技术,它将数据库分割成多个碎片并将这些碎片放置在不同的服务器上,在底层公有链的系统内,网络上的交易将被分成不同的碎片,其由网络上的不同节点组成。因此,只需要处理一小部分输入的交易,并且通过与网络上的其他节点并行处理就能完成大量的验证工作。将网络分割为碎片会使得更多的交易同时被处理和验证,本质是通过改变网络内部各步骤之间的验证方式来增加吞吐量。因此,随着网络的增长,区块链处理越来越多的交易将成为可能。但这极其具有挑战。
 

分片的种类

 
目前主流的分片技术分为网络分片、交易分片和状态分片等三个层级,其技术难度也随之依次递增。主要的核心在于分片内节点需要达到一致,并且防止被恶意攻击者控制,而分片之间需要信息传递机制,保证交易及智能合约的状态在不同分片间达到一致。
 
(1)网络分片
 
利用随机性,网络可以用VRF方法随机抽取节点形成分片,用以防止恶意节点占据某个分片。分片内节点之间的共识可以通过pBFT等共识机制来实现。
 
网络分片的第一个也是最重要的挑战是创建碎片,开发者需要开发一种机制来确定哪些节点可以按照安全的方式保留在哪些碎片中,这样就能避免那些控制大量特定碎片的人所发起的攻击。
 
打败攻击者的最佳方法(至少在大多数情况下)就是建立随机性,通过利用随机性,网络可以用VRF方法随机抽取节点形成分片,这样一种随机抽样的方式可以防止恶意节点过度填充单个碎片。但是,我们如何建立随机性呢?最容易获得公共随机性的来源是区块,例如比特币的挖矿原理,所谓记账实际上是随机数的碰对。
 
蒙对了,账本上增加一笔,矿工同时获得一笔记账奖励。这在区块中所提供的随机性是可被公开验证的,并且可以通过随机提取器中提取统一的随机比特,
 
然而,简单的将随机机制节点分配给网络是不够的,我们还必须要确保网络的一个碎片中不同成员意见的一致性,这可以通过pow这样的共识协议来实现。其实,网络分片本质是基于pow的挖矿机制,将事件机状态拆分若干个小部份,再继续由pow共识机制验证确认,打包入块,这个方法未必是最优的策略,其实施过程中,网络是一个因素。
 
系统内部也会起到很大作用。网络分片,会受制于很多因素,一旦内部过程繁琐,上层应用繁多,也有可能会出现堵塞。
 
 
(2)交易分片
 
1、 账本分片:
 
在一个基于UTXO的系统内,系统可以根据发送者的地址分配一个分片,从每笔交易上拆分分片。假设,在一个类似于比特币的系统中引入交易分片,我们假设网络已经形成碎片,用户发送一笔交易,每一笔交易有两个输入和一个输出,用户发送一笔交易,每一笔交易有两个输入和一个输出,那么,该笔交易将如何分配给一个碎片呢?最直观的方法是根据交易哈希值的最后几位来决定碎片。
 
举个例子,如果哈希值的最后一个比特是0的话,那么交易将被分配给第一个碎片,若不是0,则它被分配给第二个碎片(假设我们只有两个碎片)。这允许我们在单个碎片中验证交易,但是,如果用户是恶意的,他可能会创建另一笔具有两个相同输入但不同输出的交易。对,说的就是一个双花交易,第二笔交易将有一个不同的哈希值,因此,这两笔交易就可能形成不同的碎片,
 
然后,每个碎片将分别验证接收到的交易,同时忽略在另一个碎片中验证的双花交易。为了防止双花问题,在验证过程中,碎片将不得不进行相互通信。事实上,由于双花交易可能会在任何碎片中出现,因此特定碎片所接收到的交易将不得不与其它的碎片进行通信,而实际上,这种相互之间的通信可能会破坏交易分片的整个目的。倘若在过程中,多添加一步身份验证,可以避免这个问题。可见,交易分片,也有其劣势。
 
 
2、 跨账本分片:

在一个非UTXO的系统里,为了防止双花问题,在验证过程中,分片间将不得不进行相互通信。事实上,由于双花交易可能会在任何分片中出现,因此特定分片所接收到的交易将不得不与其它的所有分片进行通信。这种相互之间的高昂通信成本可能会破坏交易分片的最初目的。
 
(3)状态分片
 
状态分片是迄今为止最具挑战性的分片技术提案。这一技术的关键是将整个存储区分开,让不同的碎片存储不同的部分;每个节点只负责托管自己的分片数据,而不是存储完整的区块链状态。
在一个状态分片的区块链中,一个特定的分片只会保留一部分状态。假设其中一个账户创建了一笔交易,它将支付另一个账户一笔钱。这笔交易将由第一个分片进行处理,一旦该笔交易被验证,关于第一个账户的新余额的信息就必须与它所在的分片进行共享。如果两个帐户由不同的分片进行处理,那么这可能需要进行频繁的跨片通信和状态交换。确保跨片通信不会超过状态分片的性能收益仍然是一个值得公开的研究问题。
 
状态分片的第二个挑战是数据的可用性。比如由于某种原因,一些特定的分片遭到了攻击而导致其脱机。由于分片并没有复制系统的全部状态,所以网络不能再验证那些依赖于脱机分片的交易。因此,在这样的情况下区块链基本上是无法使用的。解决此问题的方法是维护存档或进行节点备份,这样就能帮助系统进行故障修复以及恢复那些不可用的数据。但是,这样就使得节点将不得不存储系统的整个状态,因此这还可能会引发一些中心化的风险。
 
任何分片机制需要确保分片在抵御攻击和失败时是具有弹性的;网络必须接受新的节点并以随机的方式将这些分配给不同的分片。然而,在状态分片的情况下,重新分配节点是非常棘手的。在一次重新调整网络的过程中,在同步完成前可能会出现导致使整个系统失效的问题。为了防止系统的中断,我们必须对网络进行逐步调整,以确保每个分片在所有节点被清空前仍有足够多的旧节点。类似地,一旦一个新节点加入了一个分片中,系统就必须确保该节点有足够的时间与分片状态进行同步。
 
综上所述,分片技术是区块链的一个令人兴奋的技术,它让我们看到了希望,它可以在不影响去中心化和透明度的情况下解决扩容问题。然而,毫无疑问的是,分片技术,尤其是状态分片,在设计层面和实现层面都是非常困难的。
 
我们应该小心的处理分片技术。此外,开发者们还需要做更多的研究来确定状态分片的可行性,因为它可能不是解决存储问题的法宝。研究人员和开发者们正在积极寻找那些可替代的解决方案。也许,答案就在我们眼前。
 

文章评论

    共有条评论来说两句吧...

    用户名:

    验证码:

Top