
区块链里有一个三元悖论,三元是说衡量区块链好坏的三个指标:
| 高效性、去中心化和安全性。 |
悖论是讲这三条不可能同时取得最佳,提高其中某一个的指标必然以损害另外一个或者两个作为代价。
这三条又要区分对待。
安全性最重要,区块链的不可篡改性决定了对错误的零容忍,将错就错只能是不得已的选项,最好没有任何错误。
安全性不能退让,只有越变越好一条路。
安全级别高,剩下的办法是在高效性和去中心化之间寻求平衡。
去中心化虽然是区块链最重要的一个特性,但在实践中可以适当弱化,以“准去中心化”或者是“多中心化”来换取高效。
除了三元悖论,多链并存的现状也是困扰区块链的一大问题。
没有哪一个或者哪几个区块链系统优秀到足以覆盖其他所有系统,所以,跨链仍然是一个不可回避的问题。
区块链的从业者试图从技术上解决这些难题,我们可以分别从性能、安全隐私、跨链以及图结构这些方面来讨论区块链技术。
一、区块链性能
1 当前存在的问题
比特币诞生时还只是黑客的玩具,对其有了解的人还很少。
随着比特币知名度的提高,越来越多的交易涌向比特币系统,其性能问题就凸显了出来:
| 交易确认时间久,吞吐量低。 |
比特币每10分钟出一个区块,区块最大为1MB,换算下来就是每秒钟可以处理的交易数是7笔,这与当前很多的金融系统相比实在太少。
吞吐量过低是比特币系统的严重问题,这会大大限制其可用场景。
后来为数不少的公链项目都以改进性能为首要目标,或者增加区块大小,或者提高出块频率。
在比特币的框架下,靠调整这类参数虽然可以一定程度上改善吞吐量,但其上限也就是每秒几百笔交易,很难有本质上的突破。
而作为联盟链代表的HyperledgerFabric,其吞吐量也只有每秒几百到几千笔交易的量级,并不能满足当前金融系统对吞吐量(几万笔交易每秒)的需求。
吞吐量过低的根因,其实在于共识过程。
在一个完全去中心化的环境里,要得到多数节点认可,往往需要多次交互,而每次交互又均伴随着网络延迟,在此两者的共同影响下,区块链系统的吞吐量注定难以提高。
但是,总有另辟蹊径的人。
二、常用解决方法
1.异步共识
在共识协议里,主流的做法是每出一个块,所有节点之间要进行同步,共识通过以后再继续出下一个块。
另有一类做法是出块以后无须立即达成共识,每个节点在遵循某种规则的前提下,尽最大的能力出块。
如果规则制定得足够巧妙,各自为战的节点在经过一段时间之后,仍然可以达成一致。
这就是著名的异步Graph算法。
IOTA、HashGraph就是其中的佼佼者。
2.随机共识
全网所有节点参与共识效率较低,那么一个提高性能的直接想法就是用部分节点间的共识代替全网共识。
然而,如何证明“部分”=“全部”呢?
其实,这个证明并不存在。
但是,“部分”能否极大程度地代表“全部”呢?
这个其实有解决办法:
如果“部分”是完全随机地从节点中抽取,在达到一定样本量时,统计学上是可以表达“全部”意义的。
Algorand算法在“随机抽取”上研究了一套算法,将整个共识过程分为若干步骤,每个步骤随机选举出若干节点组成的委员会,由这个委员会完成共识。
而下一个步骤又是随机选出的另外一个委员会,在更长的时间跨度内,实现了公平,也达到了高效共识的目的。
可验证随机函数(Verifiable Random Functions, VRFs)是Algorand算法的核心,每个节点凭此函数获知是否在加密抽签中获胜。
获胜的用户进入“验证者”委员会,接下来的共识过程便可以在“验证者”中直接完成。
Algorand有近乎完美的数学设计。
但因流程较为复杂,使其在实际网络中的表现还有待验证。
3.分区方案
区块链系统,单纯从数据存储的角度来看属于分布式日志数据库。
那么,分布式日志数据库中用来提高性能的方案理应可以用于区块链系统。数据库的技术已经非常成熟,在处理大数据时,分区是不二选择。
所以,区块链系统理应也可以分区。
怎么分区是分区方案的关键,可以选择的方式有很多:
按交易发送者地址分,按交易ID分,按交易类型分,按地域分,按市场分等。
分区技术的瓶颈是跨区数据交换,数据交换主要受限于网络带宽。
另外,特别地针对区块链系统,交易之间冲突的解决、不可篡改特性的保证以及交易确认时间不能过长都将是区块链分区方案所面临的直接问题。
不过,分区依然是很有前途的方案,但这方面的研究,甚至是产品并不多,原因是实现难度大,同时对智能合约的使用限制明显。
需要指出的是,以太坊的分片并不是分区技术。
分片更接近下面说的子链,每一个片是内部耦合度很高的自治区,片与片之间的数据交换较少;
而分区同属于一个整体,区与区之间的数据交换量较大。
4.子链/侧链技术
一条链的区块链系统性能较差,那么一个直观的想法就是多链并行可以提高区块链系统的性能表现。
闪电网络(Lighting Network)是子链技术的代表:
它指的是A和B两人用多重签名的方式冻结自己的比特币,然后进行链下交易,交易参与方可以随时关闭交易通道,关闭时的余额信息会写回比特币区块链。
闪电网络是基于比特币的扩展。
还有走得更远的方案,类似于银行结算系统,交易在某个子链内发生,只有最后结算的信息回写到主链。
这个子链可以是某个很大的市场,比如淘宝、京东等,而主链则可以对应银联。
5.可信执行环境
如果某类节点的运行环境具备如下特征:
要么不运行,一旦运行必然可靠,无法被外界做任何修改,那么这类环境便可称为可信执行环境。
基于可信执行环境假设而设计的共识可以进行一定程度上的简化,因为不必考虑节点,可以任意篡改共识逻辑,也就是不必考虑拜占庭攻击,所以通常应用可信执行环境可以提高区块链的性能表现。
6.隐形中心化
区块链界有一种说法:
完全去中心化并无必要,受限制的中心化更贴合现实情况。
具体来说,受限制的中心化可以是多个中心,也可以是中心节点轮换的形式。
典型地,DPoS就是中心轮换的共识算法。
EOS便采用了DPoS共识算法,其中的超级节点权力很大,已经有了中心化的特征,可以看作是区块链系统对于去中心化这一特性的妥协。
而实际上,大多数共识协议都或多或少会引入一些隐形中心化的假设。
如果协议中有“领导者”“超级”“委员会”这类概念,那么其实就已经赋予了某些节点以特权。
在现在的区块链技术发展阶段,如果能改善性能,受限制的特权(前提是特权没有大到拥有绝对的控制力)还是可接受的。


