在区块链行业,我们经常能听到“区块拥堵”“交易速度太慢”等词汇,事实确实如此,近年来爆发式增长的用户需求已经给底层公链带来了越来越多的挑战,比特币社区曾为了这一问题的解决方案发生过长达数年的争执,甚至导致社区分裂;而以太坊也一度因为一个挂在公链上的小小游戏“加密猫”而长时间拥堵不堪。
区块链技术面临着一个巨大的瓶颈,那就是——公链的可扩展性不够。为此,开发者们绞尽脑汁地提出了各种各样的方案来试图有效提升区块的吞吐量(TPS),我们称这一过程为“扩容”。
“扩容”又分为“链上”和“链下”两种,如果我们把区块链比作一条公路,“链上扩容”就好比对公路本身进行重建,比如拓宽道路;“链下扩容”则选择另外的途径减轻公路负担,比如建造辅路。而“分片技术”就是“链上扩容”的方案之一,它被认为是能够有效解决区块链吞吐量问题的解决方案。
所以,今天小K君就给大家讲一下,到底什么是“分片技术”。
什么是分片技术?
首先,分片技术是基于传统的“数据库分片”这一概念而产生的一种扩容技术。传统的“数据库分片”是把数据库分割成多个碎片,并经这些碎片储存在不同的服务器上,使系统能够更快更有效地管理数据。它给公共区块链带来的启发是,可以将网络上的交易分成不同的碎片,由网络上的不同节点组成。当有大量交易需要处理时,不同碎片上的节点能够同时并行处理不一样的交易,每个节点只需处理自己所接收到的一部分交易,就能在短时间内完成大量的验证工作。
为了更好地理解它,我们再次引入刚刚所讲的“公路”的例子:我们把区块链比作高速公路,把待验证的交易比作汽车,把验证交易的节点比作收费口。原本繁忙的高速公路上只有一个收费站,收费站里只有一个收费口,车辆排着长队等待通过,结果就是越积越多,交通堵塞几近瘫痪。而分片技术就好比把收费站重修,增加了十个收费口,极大提高了汽车通过的速度。以这样的思路,分片技术能够显著提高区块链的交易速度。
这一创造性的思路,首次被提出是在2015年。它是由一对来自新加坡国立大学的师生,在国际顶尖安全会议CCS上发表的一篇论文《A Secure Sharding Protocol For Open Blockchains》中发布的。而这一对师生,后来也将这一理论付诸了行动,发展出了第一个分片技术落地项目,名为“Zilliqa”。它的测试网络中存在6个分片、3600个节点,其处理交易的速度能够达到每秒2800个,是目前公链中的NO.1。分片技术也得到了以太坊创始人V神的认可,他甚至已经打算在以太坊的区块链上应用分片技术来扩大吞吐量了。
将网络分割为碎片可以允许更多的交易同时被处理和验证,并且随着网络的增长,越来越多的节点加入,区块链网络也被期待能够处理越来越多的交易,这就实现了它“无限大”的可扩展性。
虽然我们大概讲了分片技术的整体思路,但具体的实施,却并不如想象中的那样容易。下面,小K君再给大家讲讲分片技术的具体技术原理。
分片技术的具体原理
目前我们分片技术主要有三大类:网络分片、交易分片、状态分片。它们的基本原理都是“分流”,用多个分片同时处理不同的交易,再汇集到总链上。
网络分片:
网络分片较为简单,但也非常重要,它是被提出的最早的分片策略。它通过随机抽取特定数量的节点创建一个分片,当形成多个分片后,分片内部的节点就会自行建立共识,对各自接收到的交易进行确认。
在此过程中需要注意安全性,分片会导致确认同一笔交易的节点数量减少,因此更加容易受到网络攻击和恶意节点的干扰。分片形成后,就可以实现同时处理不同的交易,提高区块链网络的效率。最早的分片技术项目“Zilliqa”就运用了网络分片。
交易分片:
网络上已经创建好了分片,这些分片会处理不同的交易,按照一定的依据(比如交易发起者的地址)将这些分片划分成不同的交易分片。它解决了如何将一个交易分配到某个分片的问题,就好像把收费站的收费口划分成“大型货车收费口”和“家用小车收费口”一样。
试想有人用一个地址向两个人发起相同的交易,这两笔交易被分配到同一个分片进行处理,之后分片就会识别出相同的交易发起地址,从而阻止双重花费。如果这两个交易被分到了不同的分片,分片中的节点也同样能检测出来,将这笔交易拒绝。目前这种技术已经很成熟,能够适应多种共识机制。
状态分片:
状态分片是目前最复杂、最具挑战性的一种分片技术提案。它又提出,不同的分片需要储存不同的数据,真正做到将数据库分开,数据都分散放在了不同的分片上。而每一个状态分片中的节点都储存着自己分片中的所有数据,而不是整个区块链的数据。
例如我们有两个分片,有两个用户信息,那么每个分片就保留着其中之一的用户的交易信息,而不是把两者的交易信息都保留。
它目前面对的问题有两个,首先,不是每个节点都储存全网的每一笔交易信息,那么如果一笔交易的发起人和接受者处在两个不同的分片上,交易信息就必须在两个碎片之间进行共享,两个分片之间又进行信息和状态互换,更加降低了区块链网络的效率。
第二,如果某个分片遭受攻击,其中的交易就会遭到中断,别的分片的节点无法代替工作,只能从遭受攻击的分片内部节点开始修复。也就是它的容错性和抗风险能力就会降低,甚至还有过度中心化的风险。
总结
总来的说,目前分片技术还有不少挑战在,但确实能够对公链的可扩展性起到很大帮助。
首先,区块链能够使交易的处理速度迅速提升,如果我们将加密货币的未来与支付手段联系在一起,以更低的费用搭配更高的处理能力,加密货币逐渐走向支付手段的路就能越走越宽。
其次,改善交易效率也会给区块链带来越来越多的用户,更多基于区块链而生的应用程序可以大展身手。公链将变得越来越有吸引力,能够吸引更多加入到公共网络上的节点,从而形成一个良性循环。这些积极的趋势所持续的时间越长,我们就会越能看到主流的加密技术和落地应用的出现。
当然,分片技术依然存在着很多难题需要解决,尤其是状态分片,虽然原理已经被提出,但目前却还未有最合适的解决途径。
当然,分片的原理不仅仅在于如何分片,更在于如何对每个分片进行安全有效的治理,对于公链来说,可扩展性、安全性和去中心化缺一不可。相信不久的将来,我们就能得到一条“三角齐全”的理想公链。
本文来自,仅作分享,存在异议请联系平台删除。本文观点不代表刺猬财经 - 刺猬区块链资讯站立场。