公有链
私有链
从2008年比特币相关的论文发布到现在2020年6月,区块链技术经历了十余年的发展,尤其最近5年发展蓬勃成果密集。单从媒体角度看,2019年之前区块链圈主要是“币圈”发声,金融机构对区块链探索领先于其他行业,而在2019年10月24日在中央政治局集体学习区块链技术的发展和现状之后,“链圈”代表技术联盟链开始逐步走入大众视野,政务、能源、进出口等更多的行业开始关注和探索区块链在自己领域可能带来的深远影响。
本文将从如下5个角度描述公有链和联盟链的主要区别:
- 设计目标
- 准入方式
- 共识算法
- 性能
- 可治理性
设计目标
区块链系统是一个非常典型的分布式系统,与传统意义上的分布式数据库不同,它通常没有主从节点之分,所有参与方使用点对点通信技术,默认身份平等。在这样的环境中,区块链技术除了受到CAP理论的影响外,在去中心化、高效、安全三个设计目标上也做不到完全兼顾,即所谓的“不可能三角”。公有链和联盟链均符合这个框架,但设计侧重点不同。
绝大部分的公有链定位于虚拟货币发行和交易场景,通过讲述一个故事或者设定一个目标,对外筹集资金(这里主要指法币或者其他更通用的公有链代币,例如:以太坊在上线前筹集比特币),并使用非对称加密算法生成账户地址并设定相应的账户余额,这类行为通常伴随着非法融资的巨大风险,2017年5月份被中国在内的众多国家的法律法规所禁止。
从技术上看公有链不设置准入门槛,任何人均可参与,需要保证参与方尽可能多而且平等(去中心化),具备足够的安全性,能够抵抗一部分恶意用户的攻击,性能通常作被作为次要目标考虑。比特币和以太坊性能均不超过30TPS (Transactions Per Second,笔交易/秒),而随后上线的EOS通过DPoS共识算法,在牺牲一部分“去中心化”的基础上换取了较高的交易性能,峰值约4000TPS。
联盟链与公有链最大的区别是联盟链参与者都拥有明确的现实身份,且具有一定的准入条件,参与方故意作恶通常能够被直接定位到。从安全性上联盟链受到现实社会的法律约束,这是一道天然的安全基线。联盟链通常服务于特性的业务场景,例如存证、溯源,与公有链百万级别的节点数量不同,联盟链的参与方数量通常有限,几十到几百个不等。
由于联盟链的安全维度不一样,“去中心化”程度也受到业务场景的制约,不同的参与方在业务中的天然角色就不相同,通常是若干个业务数据提供方再加1-2个监管方;在性能上联盟链设计必须做到较高的吞吐,不能拖业务系统的后腿,通常认为4000TPS是最基本的要求。
准入方式
公有链对参与者没有任何限制,参与方通常以匿名身份参与链上活动。通常是由参与者自己的PC下载相应的钱包软件,通过非对称加密算法和哈希算法生成的账户地址具有一定的随机性,任何机构都难以对参与者的实际身份和钱包地址进行关联,这也使得公有链具备相当大的监管难度,各类灰色交易和黑产都通常以链上代币作为支付手段,比如勒索病毒。
对称加密算法:加、解密使用的同是一串密钥的算法,常见比如DES,3DES,AES,特点是加解密运算性能高。
非对称加密算法:加、解密使用的不是一串密钥的算法,通常一把为公钥,另一把为私钥。公钥加密的内容,对应的私钥可以解密;私钥加密的内容,对应的公钥可以解密;公钥可以公开,私钥由使用方自行掌握,常见使用场景是数字签名和安全密钥交换,算法特点是运算性能不高,通常认为比对称加密算法慢一千倍。
联盟链则要求参与方拥有明确的身份标识,身份标识通常使用PKI数字证书,数字证书中包含了用户公钥和身份信息,对于联盟链Hyperledger Fabric 来说,参与者需使用CA 根证书签发本组织内部的节点证书和用户证书。开发测试环境可以使用openssl等命令行工具自签生成CA根证书及其对应的其他证书,生产环境中则推荐使用权威机构签发的证书,以便实现所有参与方身份的实名管理。
不同联盟链和场景对于准入要求不同,通常由整个联盟链的初创成员组成治理委员会来决定。多方投票并设定投票通过阈值是Hyperledger Fabric 的准入方式,使用同一CA签发的证书则是BCOS在技术上的准入方式。
共识算法
区块链共识算法包含两层含义,一层是数据共识,另一层是业务共识。数据共识表示节点间通过怎样的软硬件算法来达成节点间账本的一致,这里主要指交易顺序的一致性,因为无论是联盟链还是公有链,交易都带有发起方的数字签名,几乎不可能被人篡改,最多被丢弃。业务共识指的是链上数据所代表的业务含义应该由哪些参与方来背书和担保,确保业务数据的真实可信。
对公有链中的比特币和以太坊来说,发币和转账规则就是其业务共识,而PoW是其数据共识,前者约定了链上业务的具体细节,而后者规定了数据如何在节点间达成一致。二者之间具有结合点,在完成PoW计算任务时凭空产生特定数量的代币,通过代币来激励提供数据存储和共识行为。
对于联盟链,业务共识可以和数据共识完全分开,业务数据的真实性可以由单方产生, 多方背书,实现交叉验证。数据共识上,联盟链可以根据业务需求采用任意的共识算法,由于安全性设计上不同于公有链,联盟链甚至可以采用Kafka这种非拜占庭容错的消息中间件来确定交易的唯一顺序。也正是因为如此,联盟链通常会提供不止一种共识算法供业务参与方灵活选择。
性能
由于可以采用众多种类的数据共识算法,联盟链在特定场景下的交易性能甚至可以与传统关系型数据库相媲美,达到每秒上万笔。与用途单一的公有链不同,联盟链可以就不同的场景进行针对性配置,例如,存证类场景通常交易之间没有过多关联性,大并发下也不在乎孰先孰后,只是简单的数据校验和顺序写入,那么交易性能可以做到非常高。如果交易之间存在关联性,交易的先后顺序对执行结果有较大影响,在确定交易顺序和执行完校验逻辑阶段耗时较多,那么整体交易性能将大打折扣。
公有链中的交易绝大部分是转账类交易,从一个账户转账到另外一个账户,这就要求转账后账户内的余额不能为负值,同一个区块中的针对单个账户的多笔交易需要按照顺序校验和执行。以比特币为例,每笔交易中指定账号下比特币的收入来源为较早生成的区块号和该区块中第几笔交易,这就导致比特币无法在同一个区块中对同一个账户地址进行多次转账操作,以太坊则解决了这个问题,允许在一个区块中对单个账号进行多次转账操作,但由于仍然采用PoW共识,受网络传输带宽限制,区块大小无法做到非常大,交易性能依然受限,只有数十笔每秒。
为了提高区块链的吞吐量,区块链中也提出过多种高性能方案,例如DAG(有向无环图)、并行多链架构。并行多链的方案相对好理解,复用节点对链的处理逻辑,创建多条结构相同的底层区块链,而DAG结构的区块链难点在于控制并行宽度,代表为IOTA、Byteball、xuperchain,下图为一个DAG结构示意图。
可治理性
公有链的治理通常较联盟链来说更为困难一些,变更公有链的运行参数通常意味着硬分叉(指不兼容先前版本的区块链算法更新)或者软分叉(兼容之前版本的区块链算法更新),而这并不一定符合当前所有参与方的利益。下图为公有链修改区块大小的一段代码,含义为当区块高度达到115000时,将最大区块体积修改为一个更大的值。修改结论可以写在代码中,但什么情况下可以修改则完全没有明确的条件。由于公有链无法明确具体参与者数量,通常治理需要通过额外的线下论坛或者线下组织进行沟通,沟通周期长且成本高,面临很多不确定性。
联盟链的治理则相对清晰,新成员准入需要满足什么条件、修改区块大小需要多少参与方签名、什么样的参与方有权限写入交易,什么样的参与方允许查询交易内容,这类治理规则乃至细到权限都可以作为配置写在区块链当中。当需要修改特定配置时,任何一个联盟成员都可以发起提案询问其他参与者是否同意。随着时间的流逝,一个无法满足业务需要的联盟链需要得到调整,重建一个区块链网络往往成本高昂,强大的可治理性可以给联盟链带来的更为强大的业务适应性。治理规则即便是没有写入到链上,联盟链因为其成员数量有限且可控,通常都会拥有明确的初创者或者治理委员会,在这种背景下治理也变得相对简单,错误可以得到追溯,不合适的参数可以得到及时调整。但从宏观看,联盟链仍然需要更加完善的治理体系支持。
下图为TBaaS中对成员准入的一次投票事件。
公有链和联盟链的技术差异虽然比较多,但是随着区块链技术被纳入“新基建”, 两者的技术优势在不断融合,创新点层出不穷,未来会出现越来越多性能强、并行度高、共识算法丰富、可治理性高、合约灵活易用的区块链项目。现今区块链技术正成为传统企业完成数字化转型的推手,区块链技术作为企业间协作的基础设施,最终也将成为企业价值流转的可信通道。