区块链分片技术,神秘的东方哲学早已提出解决方案--分而治之

论坛 期权论坛 期权     
Allblo区块链   2019-12-23 01:34   1095   0


区块链暂时不能挑战传统的交易方式,有一个非常致命的问题就是处理速度的瓶颈。举例子来说,VISA的TPS是24000左右,但是以太坊只是20-50之间,完全达不到商用的程度。为了解决这个问题,很多公链都提出了分片的解决方案。01
分片技术到底是什么?


分片技术不是一种创新的技术,它只是分散计算任务和存储工作量的一种方法,最终来进行提高性能。在当前的互联网架构中,对应高并发的流量,经常使用分库分表技术进行扩容,简单来说,就是将数据库分割成多个碎片并将这些碎片放置在不同的数据库上。换言之,分片的思想就是把一个复杂的任务拆分开为很多子任务,由更小的节点来进行处理。

在底层公链的系统内,网络上的交易将被分成不同的碎片,其由网络上的不同节点组成。因此,只需要处理一小部分输入的交易,并且通过与网络上的其他节点并行处理就能完成大量的验证工作。将网络分割为碎片会使得更多的交易同时被处理和验证,因此,随着网络的增长,区块链处理越来越多的交易将成为可能。但这极其具有挑战。


02
当分片技术应用在公链上,会有哪些好处?


一是公链的处理速度将会达到每秒上万笔,甚至更多,这将使区块链项目的真正落地成为可能,扼住项目落地的技术难题将被彻底解决;


二当处理速度很高的公链投入使用,将会带来越来越多的用户和应用程序,而这将反过来促进区块链的进一步采用,也使挖矿变得更有利可图,吸引更多节点加入网络,从而形成一个良性循环;


三是分片技术可以减少节点的工作量,这将降低交易手续费,当我们将低费用与高效率结合起来的时候,必然会使公链变得越来越有吸引力。




03
分片技术的细分


其实分片技术不止一种,为了满足不同的需求,分片技术还分为:网络分片、交易分片和状态分片等。


网络分片(Network sharding)


网络分片,主要是需要开发一种机制来确定哪些节点以安全的方式驻留在哪个碎片中,以避免有人可能通过对特定碎片的大量节点进行控制的方式对系统进行攻击。


击败对手的最佳方法(至少在大多数情况下)是通过随机性。通过利用随机性,网络应该可以随机地对节点进行分配从而形成分片。随机抽样可防止恶意节点过多地填充单个分片。

但是,仅使用随机机制将节点分配给分片是不够的。还必须确保分片中的所有成员都是获得系统认后加入的。例如,可以通过工作证明(Proof of Work)来实现对节点身份的验证。


状态分片(State Sharding)


说白了就是每个分片都是一个独立的区块链,是整体区块链的子链。这个区块链中,包含了整体中仅仅影响自己那部分的交易,也就是说,只保存自己分片的交易历史,处理影响自己分片的交易,形成一个独立的王国。


交易分片(transaction sharding)


交易分片听起来稍微简单一些,从每笔交易上拆分分片。假设,在一个类似于比特币的系统中引入交易分片,(注意,比特币是采用账本机制,而不是采用智能合约机制。我们假设网络已经形成碎片,用户发送一笔交易,每一笔交易有两个输入和一个输出,用户发送一笔交易,每一笔交易有两个输入和一个输出,那么,该笔交易将如何分配给一个碎片呢?最直观的方法是根据交易哈希值的最后几位来决定碎片。


举个例子,如果哈希值的最后一个比特是0的话,那么交易将被分配给第一个碎片,若不是0,则它被分配给第二个碎片(假设我们只有两个碎片)。这允许我们在单个碎片中验证交易,但是,如果用户是恶意的,他可能会创建另一笔具有两个相同输入但不同输出的交易。


对,说的就是一个双花交易,第二笔交易将有一个不同的哈希值,因此,这两笔交易就可能形成不同的碎片,然后,每个碎片将分别验证接收到的交易,同时忽略在另一个碎片中验证的双花交易。为了防止双花问题,在验证过程中,碎片将不得不进行相互通信。事实上,由于双花交易可能会在任何碎片中出现,因此特定碎片所接收到的交易将不得不与其它的碎片进行通信,而实际上,这种相互之间的通信可能会破坏交易分片的整个目的。倘若在过程中,多添加一步身份验证,可以避免这个问题。可见,交易分片,也有其劣势。




04
小结


分片技术博大精深,建议根据不同的场景采用不同的算法来支持业务场景。只有充分考虑到各种技术细节的特点,再结合自身业务场景,才能更好的发挥分片的作用。






分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:79
帖子:1
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP