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