根据网络范围及参与节点特性,区块链可被划分为公有链、联盟链、私有链三类。这三类区块链的特性如表1-1所示。
表1-1 区块链的类型及其特性
公有链中的“公有”是指任何人都可以参与区块链数据的维护和读取,不受任何单个中央机构的控制,数据完全开放透明。
公有链的典型案例是比特币系统。使用比特币系统,只需下载相应的客户端。创建钱包地址、转账交易、参与挖矿,这些功能都是免费开放的。比特币开创了去中心化加密数字货币的先河,并充分验证了区块链技术的可行性和安全性。比特币本质上是一个分布式账本加上一套记账协议,但在比特币体系里只能使用比特币一种符号,很难通过扩展用户自定义信息结构来表达更多的信息,如资产、身份、股权等,从而导致扩展性不足。
为了解决比特币的扩展性不足问题,以太坊应运而生。以太坊通过支持一个图灵完备的智能合约语言,极大地扩展了区块链技术的应用范围。以太坊系统中也有以太币地址,当用户向合约地址发送一笔交易后,激活合约,然后根据交易请求,合约按照事先达成共识的契约自动运行。
公有链系统完全没有中心机构管理,而是依靠事先约定的规则来运作,并通过这些规则在不可信的网络环境中构建起可信的网络系统。通常来说,需要公众参与、需要最大限度保证数据公开透明的系统,都适合选用公有链,如数字货币系统、众筹系统等。
公有链环境中的节点数量不定,节点实际身份未知、在线与否也无法控制,甚至极有可能被一个蓄意破坏系统者控制。在这种情况下,如何保证系统可靠可信呢?在大部分公有链环境下,主要通过共识算法、激励或惩罚机制、对等网络的数据同步来保证最终一致性。
公有链系统存在的问题如下。
(1)效率问题。
现有的各类Po*共识,如比特币的PoW及以太坊计划推出的PoS,都具有一个很严重的问题就是产生区块的效率较低。由于在公有链中,区块的传递需要时间,为了保证系统的可靠性,大多数公有链系统通过提高单个区块的产生时间来保证它们尽可能广泛地扩散到所有节点处,从而降低系统分叉(同一时间段内多个区块同时被产生,且被先后扩散到系统的不同区域)的可能性。因此,在公有链中,区块的高生成速度与整个系统的低分叉可能性是矛盾的,必须牺牲其中的一个方面来提高另一个方面的性能。同时,由于潜在的分叉情况,可能会导致一些刚生成的区块的回滚。一般来说,在公有链中,每个区块都需要等待若干个基于它的后续区块的生成,才能够以可接受的概率认定该区块是安全的。比特币中的区块在有6个基于它的后续区块生成后才能被认为是足够安全的,而这大概需要1小时,对于大多数企业应用来说是无法接受的。
(2)隐私问题。
目前,公有链上传输和存储的数据都是公开可见的,仅通过“地址匿名”的方式对交易双方进行一定的隐私保护,相关参与方完全可以通过对交易记录进行分析而获取某些信息。这对于某些涉及大量商业机密和利益的业务场景来说也是不可接受的。另外,现实世界中的很多业务(如银行交易)都有实名制的要求,因此,在实名制的情况下当前公有链系统的隐私保护确实令人担忧。
(3)最终确定性(Finality)问题。
交易的最终确定性指特定的某笔交易是否会最终被包含进区块链中。PoW等公有链共识算法无法提供实时确定性,即使看到交易写入区块也可能后续再被回滚,只能保证一定概率的收敛。如在比特币中,一笔交易在经过1小时后可达到的最终确定性为99.999%,这对于现有工商业应用和法律环境来说,可用性有较大风险。
(4)激励问题。
为促使参与节点提供资源,自发维护网络,公有链一般会设计激励机制,以保证系统健康运行。但在现有的大多数激励机制下,需要发行类似的比特币或代币,不一定符合各个国家的监管政策。
联盟链通常应用于多个互相已知身份的组织之间的构建,比如,多个银行之间的支付结算、多个企业之间的物流供应链管理、政府部门之间的数据共享等。因此,联盟链系统一般都需要严格的身份认证和权限管理,节点的数量在一定时间段内也是确定的适合处理组织间需要达成共识的业务。联盟链的典型代表是超级账本系统,电子档案管理中应用区块链的模式主要是联盟链。
联盟链的特点主要如下。
(1)效率较公有链有很大提升。
联盟链参与方之间知道彼此在现实世界中的身份,支持完整的成员服务管理机制,由成员服务模块提供成员管理的框架,定义了参与者身份及验证管理规则;在一定的时间内参与方个数确定且节点数量远远小于公有链,对于要共同实现的业务在线下已经达成一致理解。因此,联盟链共识算法较比特币PoW的共识算法约束更少,共识算法运行效率更高,如PBFT、Raft等,从而可以对实现毫秒级确认吞吐率有极大提升(从几百TPS到几万TPS)。
(2)更好的安全隐私保护。
数据仅在联盟成员内开放,非联盟成员无法访问联盟链内的数据。即使在同一个联盟内,不同业务之间的数据也进行一定的隔离,比如,Hyerledger Fabric的通道(Channel)机制将不同业务的区块链进行隔离。在1.2版本中推出的Private Data Collection特性支持对私有数据的加密保护。不同厂商又做了大量增强隐私保护的措施,比如,华为公有云的区块链服务(Blockchain Service, BCS)提供了同态加密对交易金额信息进行保护;通过零知识证明,对交易参与方身份进行保护等。
(3)不需要代币激励。
联盟链中的参与方为了共同的业务收益而相互配合。因此,有各自贡献算力、存储、网络的动力,一般不需要通过额外的代币进行激励。
私有链与公有链是相对的概念,所谓私有是指不对外开放,仅在组织内部使用。私有链是联盟链的一种特殊形态,即联盟中只有一个成员,比如,企业内部的票据管理、账务审计、供应链管理,或者政府部门的内部管理系统等。私有链通常具备完善的权限管理体系,要求使用者提交身份认证。
在私有链环境中,参与方的数量和节点状态通常是确定的、可控的,且节点数目要远小于公有链。
私有链的主要特点如下。
(1)更加高效。
私有链的规模一般较小,同一个组织内已经有一定的信任机制,即不需要对付可能捣乱的恶意用户,可以采用一些非拜占庭容错类、对区块进行即时确认的共识算法,如PaxosRaf等。因此,确认时延和写入频率较公有链和联盟链都有很大的提高,甚至与中心化数据库的性能相当。
(2)更好的安全隐私保护。
私有链大多在一个组织内部,因此可充分利用现有的企业信息安全防护机制,信息系统也是组织内部的,相对联盟链来说,隐私保护要求弱一些。
与传统数据库系统相比,私有链的最大好处是加密审计和自证清白的能力,没有人可以轻易篡改数据,即使发生篡改也可以追溯责任方。