在中国信息通信研究院数据中心联盟发布的《可信区块链认证系列标准》里面,把共识机制分成了两大类:
“第一类是概率一致的共识、工程学上最终确认,如:PoW(工作量机制证明);第二类是绝对一致之后再共识,共识即确认,如:PBFT。”
如何理解这种分类方式?我们探讨一下这两类算法的缺陷以及在实际应用中的问题。
第一类共识机制的缺陷在于:交易被打包到区块里面,并被大部分节点接收,并不代表这个交易就被确认了。因为这一类共识机制存在着区块链分叉的可能。在比特币系统中,我们通常认为6个区块后这个交易就应该不会再被分叉,然而实际情况只是分叉发生的概率比较小,并不是不存在。因此在标准里面说这种确认是一种工程学的最终确认,数学上并不能保证这种确认。
第二类共识机制的缺陷在于:每个节点都需要知道其他节点是谁,这种缺陷决定了共识机制只能用在联盟链和私有链中。其次,这类算法往往还有其他假设存在,需要进一步分析这些算法和应用的关系。
目前,我们的观点是:第一类共识机制(概率一致的共识、工程学上最终确认)不适合联盟链。使用类似PoW的算法,整个区块链系统是需要强大的算力来确保系统的稳定性。而在联盟链中,一般不会投入过多的算力以免浪费电力资源等。但整个系统依然存在51%算力攻击的可能,当有足够的利益驱动时,不排除联盟中某个节点会突然增加算力来攻击整个系统。虽然可以通过加权的方式对这类算法进行修正,防止过多的算力进入系统,但是这种方式无法解决分叉的问题。同时,这种系统在区块链系统首次启动运行上也存在大量问题。
很显然,在公有链系统中,第二类共识机制是没有办法使用的。因为存在节点准入机制,这就导致了这个系统没有办法“公有”。
对于大部分企业来讲,其实绝大多数情况需要的都是联盟链。在设计联盟链的应用时,又该注意哪些问题呢?
我们建议想采用联盟区块链技术做商业模型的企业应该首先问自己一系列问题:
1、 在本商业模式中,是否真的需要一个去中心化的信息系统来做?如果采用中心化的系统会存在哪些问题?
2、 如果问题1的答案是合作的多方由于不信任,没有办法达成一致,那么这些合作方都是哪些?这些合作方都需要一个区块链节点吗?
3、 运营区块链节点的合作方的IT技术能力怎样?信息安全能力怎样?
4、 未来这些合作方是否存在增加或减少的可能?谁来决定哪些合作方能够进入?
5、 合作方的利益在哪里?运营区块链节点的收益和付出是怎样的?
6、 需要记录的数据是谁提交的?(是运营区块链节点的合作方,还是这些企业的客户?)
7、 谁来确认这些数据是否允许记录进区块链?需要人工确认吗?
8、 当商业环境变化,需要修改整个系统规则时,谁决定这些规则的修改?
9、 整个区块链系统运行在什么样的环境里?与广域网是完全物理隔离的,还是逻辑隔离的,还是根本没有隔离?
第1个问题是最关键的问题。如果一个中心化的系统做的非常好,并且不存在信任问题,那么这个系统的效率将是非常高的。比如目前在区块链圈内呼声非常高的供应链管理,在某些情况下并不适合采用去中心化的方式。苹果公司就以其对供应链的精准、高效的中心化掌控,成为了美国利润最高的科技公司。
如果确实由于合作方之间无法达成一致信任而导致无法使用中心化的商业模式和中心化的信息系统,那么联盟区块链技术将是一个非常好的选择。但是也要注意,使用哪种联盟区块链技术,还有面临很多的问题。
第3个问题,如果各个合作方的IT技术能力并不是很强,信息安全能力也不足的话,区块链由于其不可修改的特性,将给企业合作带来巨大的麻烦。因此,对于第3个问题,区块链云服务也成为了企业的一种选择,企业并不需要建立一个独立自主的区块链系统,而是采购第三方的区块链云服务,这样搭建的联盟区块链,在特定的情况下,能够取得与一般联盟链同样的效果。
回答完前3个问题后,接下来的一系列问题,决定了企业联盟应该采用哪种技术和共识算法来搭建自己的联盟区块链。这里面主要存在的问题就是共识算法的假设和商业模型是否匹配的问题。由于篇幅限制,本文在这里不详细讨论了。
除了公有链、联盟链以外,其实还有第三种类型的区块链:私有链。私有链由于完全被某个组织机构控制并使用的,并不存在可能作恶的节点,因此可以使用更加高效的一致性共识算法,例如把整个区块链分成若干个子链,进行局部共识。跨链数据通过少数几个节点共识即完成数据跨链。这种使用方式下,整个区块链系统的数据吞吐性能将达到一个非常高的水平,甚至超过同等成本的中心化系统。
原文发布时间为:2017-09-20
本文作者:敖萌
本文来源:雷锋网,如需转载请联系原作者。