蔡维德 李琪
当前区块链行业鱼龙混杂,各种概念泛滥、混淆视听。想必很多人对于区块链的类型还不甚明白,对于商家卖给自己链的类型还不清楚,而要想搞明白自家链究竟是什么链,首先得清楚区块链的定义。
区块链是由多个独立节点共同参与的分布式数据库系统,也可以理解为一种特别的分布式账本,由这些节点共同维护,它很难修改、很难伪造、可追溯。区块链记录所有发生交易的信息,过程高效透明、数据高度安全。区块链把数据分成了不同的区块,每个区块的块头都会包含前一个区块的特定信息,区块之间都会由这样的信息与先前的区块环环相扣形成一个链条。从技术层面上看,区块链的核心要素包括以下三个方面:
首先,块子链和时间戳的块链结构。前一区块的特定信息放在当前的区块头里,使用时间戳记录区块的创建时间。每一区块有时间戳,都使用前一区块的信息,对每笔交易进行验证,块子链是将所有的区块连到链上。每一块都有时间戳,都使用前面一块的加密信息,再次加密。
其次,多独立节点,每个节点在独立作业的同时也存着同样的信息,并且拥有同样的权利,共同维护整个系统。这一点如果不能保障的话,就不能称为区块链。若链上的某一个节点有特殊的权利,甚至这个特殊的节点可以改变链上的数据,这样的链就违背了区块链的真意,而不再是区块链了。与现有的分布式存储不同,区块链分布式账本是同步的,而不是在一个账本形成之后再制成多个备份。
其次,拜占庭容错的共识机制。容忍少于三分之一的节点恶意作弊或被黑客攻击,保证系统仍然能够正常工作。拜占庭将军的共识算法可保证在三分之一节点恶意作弊的情况之下,系统仍能正常运行。
以上三个特征,逐步递进,第一个特征指出区块链是一个“难被更改的账簿”,第二个特征指出区块链是一个“独立的分布式系统,每个节点有同样信息”,第三个特征指出区块链是一个“可以容忍1/3节点说谎的分布式系统”。三个特征共同指出区块链是一个“可以容忍1/3节点说谎的分布式账簿,每个节点有同一账本,很难被更改”。
根据以上这些条件,当前市面上主要存在的区块链可以分为以下几大类:
A.真链:这种链使用拜占庭将军协议作为共识机制,至少需要三轮投票。每个节点都是相互独立的,存储同样的数据,使用加解密算分。
B.弱链:弱化的区块链使用数据库一致性协议,这些称之为“刘关张”协议,而不用拜占庭将军协议。“刘关张”协议就是节点之间互信的协议,刘备、关羽、张飞三人桃园结义,互相信任对方,他们互不欺骗对方,三兄弟齐心协力。如果将他们对应于传统的区块链系统各个节点,也就是说各节点只可能出现死机或是断开连接的情况,不会向其他节点发送虚假消息,互信协议中不会出现恶意节点(向不同的节点发送不同的消息)。这样的协议无法发现或抵挡恶意节点,这些恶意节点的攻击可以使系统瘫痪。这样的链只能在“信任”环境里运行,里面的节点不能说谎。这样的一致性协议只需要两轮投票。弱链因为少了一轮投票,所以速度会比真链快,但无法抵抗拜占庭将军攻击。
C.伪链:有些区块链为了取得更快的交易速度,采用了中心化的控制,这直接和区块链的定义相冲突,所以这种区块链系“伪链”。这种伪区块链披着区块链的外衣,却是中心化的系统。在一个中心化的系统中,控制整个区块链的中心节点就是这个系统最为薄弱的环节。如果中心节点故意说谎或者被人攻破,则整个区块链都会瘫痪。不论是公链还是私链,都可能是中心化的链。区块链不能采用中心化的系统来实现,这完全违背区块链的初衷。由Linux基金会发起的HyperLdger系统中每笔交易信息都要经过Zookeeper软件处理,由于Zookeeper是一个中心化的系统,所以HyperLedger是一个中心化的系统也是一个伪链。
还有其他伪链使用已经被证实使用了不安全的加密算法。国外有一家公司自称有高速区块链,仔细探究之后才知道是使用了已经被证实不安全的加密算法。使用这样的加密算法链肯定不安全,这样的链也算是伪链。伪链最大的风险就是不安全。如果中心被攻破,整个链就会被攻破;使用不安全的加密算法,区塊链系统会变得很不安全。
D.非链:有些系统设计理念与区块链类似,但改变了区块链的架构,或者只保留一部分区块链机制,这些系统称为“非链”。顾名思义,非即不是,意为不是区块链,但又和区块链有一定的联系。出名的非链包括IOTA、Hashgraph、Corda、闪申网络、Guardtime。例如IOTA是新一代公共分布式账本,其核心利用了一种基于有向无环图(DAG)的新数据结构。通过DAG,IOTA能够实现较高的交易吞吐量,IOTA和区块链存在着很大区别,它们有两个不同的架构。
HashgTaph也使用了类似于DAG的共识机制,它采用了以下两种技术:第一,互相传播(Gossipabout Gossip);第二,虚拟投票(Virmal Voting)。互相传播从本质上意味着向本次传播附加一些额外的信息,即两者之间互相传播内容的哈希值。通过使用这些信息,就可以创建Hashgraph,而且有更多信息传播时,每一个节点都可以持续更新。一旦Hashgraph形成,就很容易知晓节点的投票了。因为当每一个节点收到信息时,我们也都知道了它们所拥有的信息。这个数据可以用作投票机理的输入值,可以很快被找到。Hashgraph属于非链。
Corda也是一种非链。其出发点是公司与公司之间的单笔合约,其共识也只发生在单笔交易的参与方之间,而并不对所有的参与者产生共识。数据的同步也只是在单笔交易的参与节点之间,而不是在所有节点之间,这与区块链的设计是不同的。Corda采用了刘关张一致协议保证数据的一致性,在验证的过程中使用了数字签名。
非链还有闪电网络和Guardnme,它们各自拥有不同的功能,可以满足不同场景的需要。非链前途未卜,能不能被金融市场接受还是一个问题,例如加拿大央行对Corda就有三大批评,指其不太成熟,使用Corda会增加银行系统的风险。
现在大部分的非链还没有经过严格检验,或是没有通过央行的测试,提升的空间非常大。但随着技术的不断进步,区块链的功能将更加完善,非链也会不断进步。由于非链可以有全新的创新,以后可能会出现无数的新非链。
非链如果使用中心化系统,那也属于伪链。例如Kipple公司的协议在今年被证实是由中心控制的,因此它既是非链,也是伪链。
E.胡链:意为“胡言乱语”的链,这些区块链设计没有科学依据,甚至与事实依据相违背。例如,有些区块链宣称有可以容错超过1/3错误节点的共识协议,这与科学相违背,就是“胡链”。胡链的白皮书可能是抄袭别人的,将几种不能融合的技术放到一起,其中提到的参与单位可能是不会参与的。胡链如果没有真正做出未,就是空链。胡链也可以称为湖链,“胡”和“湖”不分,因为都是胡言乱语,没有科学依据。
F.空链:当前市面上存在着很多假的项目,这些项目只发币炒币,但并没有具体落地的链,这些链被称为空链,意为“空气链”或是“在太空的链”。
一个真链和伪链、非链、弱链、胡链、空链没有交集;一个弱链和真链、非链、胡链、空链没有交集;一个伪链可能是非链或是胡链,但不能是真链或是弱链;一个非链不能是真链或是弱链,但非链可能是伪链(如果使用中心系统来实践);一个胡链不能是真链或是弱链,但可能是伪链。
单从技术白皮书并不能真正明确链的种类,要想搞清楚自家链到底属于哪一种必须通过测试这些系统才能得到答案。白皮书反而可能是胡链和空链的来源,伪链也需要大量研究后才能知道。
但是泰山沙盒可以分析公链和私链,它们是真链还是非链、伪链、胡链、空链,泰山沙盒都可以知道。真链可以用沙盒的追纵共识协议,如果是三轮投票,便是真链;而如果两轮投票,那就是弱链;如果每个交易经过一个中心系统,那就是伪链。空链是不会用来被测试的,客户可以要求商家提供链的相关证明。如果使用伪链,商家是要负全责的。