3.3 并行处理的探索
为解决数据处理能力低(交易吞吐量小)的问题,一个重要的思路是让多笔交易同时并行处理。侧链技术通过对主链上的款项进行锁定、解锁的操作,可把不同的区块链进行连接(图3-2),扩充了交易处理的空间。而分片的思路则是把用户划分为不同的片区,每个片区里的交易可以独立验证、并行进行,而跨片区之间的交易则需进行额外处理(图3-3)。在侧链、分片技术中仍存在主链,两者均是通过限制交易的灵活性(如款项被冻结、交易的对象受限等),在保障安全的前提下,满足账本的一致性。
图3-2 侧链示意图
图3-3 分片技术示意图
而另一方面,DAG(Directed Acyclic Graph,有向无环图)则是对另一种数据结构形式的探索。在一般的区块链项目中,所有节点保存的信息都是相同的;而采用DAG技术的项目,则允许各个节点保存不同的信息。在DAG中,区块可以随时产生,而一个区块与多个父区块进行连接(图3-4)。这样一来,所有人可以随时记账,交易信息的记录速度大为提高。
图3-4 DAG示意图
然而由于多个区块同时产生,且均有效,DAG无法以“唯一最长链”来保证一致性。在这方面,有的项目以“历时性”来保证DAG上账本的一致性。具体而言,在DAG中一个新区块将随机选择两个次新的区块进行连接,同时对与之相连的所有区块进行交易信息的验证。经历了多次验证的区块,其交易内容存在冲突的可能性很低,可被认为是已确认的交易信息。这一方案里,一致性的验证依赖于区块网络的延伸和增长。
其他项目则以“全连接”来保证账本一致,即每个新的区块都与之前所有区块相连,并验证此前的所有交易信息。还有的项目以“次序”来保证一致性,由区块递归投票来确认新的区块等。
DAG带来吞吐量的提高,然而“一致性”始终是个有待解决的复杂问题,目前问题的解决都需要付出一些代价:可能是交易信息的确切验证时间有所延误;也可能是节点与节点之间需要进行大量的网络通信,使得实际交易速度仍有待观察。
归根到底,分布式账本的“一致性”问题,是一个平衡的问题。不妨说“一致性”是一个系统目标,而达成这一目标需要付出相应的资源,因此或牺牲交易速度,或限制交易的灵活性,或延后确认时间,或提高对全网的传输要求,都是不同系统条件下进行的适应性选择。相信上述提及的不同技术,将在不同的应用场景下,得到进一步的探索和验证。