未来是公有链还是联盟链会成功?
我常常被问到的一个问题是:你觉得未来是公有链还是联盟链会成功?这个问题难以回答的地方在于,提问者心中所想的概念和我心中所想的概念不一致,所以任何直接的回答都无法描述我想要表达的意思。
在我们讨论区块链时,分类是不可避免的一件事情:公有链、联盟链、私有链、许可链、无需许可链这些词汇频繁出现,我们已经耳熟能详。然而这些名词并没有公认的定义,我们在讨论中只能各凭自己的理解,用这些名词指代大致上相同实际上有些区别的概念,由此造成了上面那样的沟通困难。
本文按照我对这些名词的理解进行分析。有趣的是,通过分析我们将会看到一些很少在讨论中出现,但是完全有可能在未来出现的区块链新形态。我将按照“是否需要许可?”和“是否选择服务对象?”两个维度来阐述。
维度1. 许可链 / 无需许可链
无需许可链(permissionless blockchain)
网络参与者可以自由的加入和退出,也即加入或退出网络的成本接近于零。在讨论中听到的“公链”、“公有链”或者“基础链”的时候,我一般会认为是在说无需许可链。
这一类型的区块链包括Bitcoin/Litecoin/Peercoin/Monero/ZCash/Ethereum等等。Bitcoin是无需许可链的开山鼻祖,通过PoW巧妙的实现了世界上第一个无需许可的分布式系统,2015年之前的区块链项目基本上属于这一类。Nervos CKB是无需许可链,第一阶段使用PoW共识。
无需许可链的去中心化程度最高,其发展也高度依赖社区自治,是最有潜力成为全球基础设施的区块链类型。
许可链(permissioned blockchain)
网络参与者需要获得某种形式的许可才可以加入或退出,加入或退出网络的成本大于零。“许可链”在讨论中常常与“联盟链”混用,后面我们会看到这两者的区别。
许可链的思潮在2014年兴起,彼时金融机构已经发现了数字货币、智能合约和区块链这片新大陆,并开始思考如何将区块链技术引入自己的业务。对记名资产的登记和交易需求,以及金融业务中KYC/AML的需要,让人们开始认识到身份的必要性,以及由此带来的重构区块链的可能[1][2]。身份的存在可以很自然的解决让无需许可链头疼的女巫攻击问题,因此也就可以避免PoW而使用传统BFT共识,可以获得更低的能耗和更好的性能。比较早期的公司如Eris Industries(现改名Monax)在2014年成立,是许可链的先驱。R3也是在2014年成立,虽然Corda自称为分布式账本而不是许可链(也确实不仅仅是链,而是一个没有区块、由交易编织成的网络),但它很明显是许可链思潮下的产物。Hyperledger Fabric和我们自己设计开发的CITA都是许可链。
许可链一般由行业联盟或是科技公司设计、实现和推动,具有接近中心化方案的性能,注重金融和企业场景。
细化
如果将网络参与者分为出块节点、全节点和用户(通过钱包访问全节点使用区块链提供的服务)[3],我们可以进一步细化无需许可链和许可链的分类。
我将看起来没有实用价值的组合标记为Nonsense,不做讨论。
用户许可链
在用户许可链中,节点加入、退出、参与共识都不需要许可,但是用户需要获得许可才能使用区块链提供的服务。虽然目前还没有看到用户许可链的实例,但我认为用户许可链是一个非常有意思,值得探索的方向。如果把节点属于网络层,构成了区块链的基础;用户空间存在于节点共同维护的账本/共同知识库之中,是区块链架构中的上层。无需许可的基础层和需要许可的上层是一个很和谐的组合:基础层无需许可,无论什么样的节点都可以参与,网络性质中立,保持了无需许可链的全球基础设施属性;上层需要许可,用户具有某种形式的身份,更加适合需要身份的各类商业和金融场景。
用户许可链需要解决的难题也不少:如何实现一个去中心化的身份认证服务?基础层是否应该对这个身份协议提供支持,根据身份来选择为哪些用户提供服务或拒绝服务?谁来制订身份选择的规则?如何制订这样的规则?如何保持规则的中立性?
nodes-and-accounts.jpg出块许可链
出块许可链只要求出块节点获得许可。由于全节点可以自由加入,区块链历史和当前状态都不会被出块节点垄断,全节点可以验证并决定是否接受新区块,整个系统依然是透明可验证的,其可靠性(原谅我使用一个模糊的“可靠性”来指代包含可用性、安全性等等在内各种性质,下同)比中心化系统高,比用户许可链/无需许可链低。如果获得许可的出块节点数量不大,系统性能也会非常不错。
值得指出的是,如果我们将“许可”的定义放宽,出块许可链将包含我们常称为“公有链”的一些项目 —— 基于代币抵押或是代币投票的PoS,本质上是以代币作为一种许可,限制出块节点数量,达到降低共识过程的消息复杂度以提升系统性能的目标。这样一类PoS区块链所展现出来的性质,与出块许可链更接近,与无需许可链更遥远。出块许可链与完全许可链之间的主要区别在于全节点和用户是否需要许可,与无需许可链之间的主要区别在于出块节点集合大小是固定还是动态。
节点许可链
节点许可链的出块节点和全节点都需要许可,此时只有拥有许可的节点才能复制和验证区块链数据,用户无法获得账本/共同知识库的独立复本,也无法独立进行验证。这样的系统其可靠性弱于出块许可链,比中心化系统略高,性能与出块许可链接近。由于数据只会在小范围内复制,数据隐私性更好。
根据不同的部署,Nervos Appchain可以是出块许可链,也可以是节点许可链。
维度2. 公有链 / 联盟链 / 私有链
让我们换一个维度,按照区块链的服务对象来分:
公有链(public blockchain):为公众提供服务的区块链。
联盟链(consortium blockchain):存在一个区块链之外的实体联盟,只对联盟内成员提供服务的区块链。
私有链(private blockchain):存在一个区块链之外的实体,只对实体内成员提供服务的区块链。
“公有链”从 "public blockchain"翻译而来,而"public"直译应为“公众、公共”。之所以会翻译成“公有链”,我想大概是由于早期的public blockchain都有内在的代币机制,使用者即代币持有者,因此也无不妥。但按照今天的眼光看,"public blockchain"理解为“公共链”更为合适,“公共链”无差别的对所有公众提供服务,但公众不一定是“公共链”的所有者。我在讨论中还是沿用“公有链”这个词,但我用它指代的其实是“公众链”。
联盟链/私有链在具体实施上有不同的许可链选项:可以是节点许可链、出块许可链或者完全许可链,由此也会有相应的优缺点,在此不再重复。这些不同选项的共同之处是,出块节点都是需要许可的,共识范围有限,牺牲了可靠性换来了更好的性能和隐私。未来联盟链/私有链如果能够以无需许可链作为信任基础,其可靠性和信用也可以提高到与无需许可链接近的程度,实际上会成为无需许可链扩容的助力,这是Nervos CKB团队、Nervos AppChain团队和Cryptape Research在探索的方向。如果在跨链协议的帮助,联盟链/私有链之间可以低成本的进行互操作,联盟链/私有链上资产的流动性也将提高到与无需许可链上的资产流动性接近的程度,这是Nervos AppChain团队和Cryptape CITA团队在探索的方向。
公有许可链(public permissioned blockchain)
考虑维度1和维度2之间的关系,很容易发现联盟链和私有链都隐含了对用户以及节点的身份限制,因此必然是许可链。有意思的问题是:公有链一定是无需许可链吗?
按照上文对公有链的定义,对公众提供服务并不隐含对用户身份的限制。公有链可以对匿名的公众提供服务,也可以不加选择的对有身份的公众提供服务。公有链中的节点是否需要许可,并不影响一条区块链是否对公众提供服务。因此在我的观念中,一条区块链可以同时是公有链和许可链,这两者之间没有矛盾。我把既是公有链又是许可链的区块链称为公有许可链[4]。
我们日常谈到公有链时往往想的是无需许可链,但是实际上不少公有链更接近公有许可链的范畴,最典型的例子是Ripple。公有许可链可能的实现形式很多,前面讨论过的许可链、出块许可链、节点许可链、用户许可链都可以是公有许可链。由于身份的存在,公有许可链既有许可链的优点,其适用的场景又与无需许可链互为补充,相信将在未来的加密经济生态中占有重要的位置。
Summary
联盟链、私有链、许可链常被批评的一点是缺乏内生的经济激励设计,因此“根本不是区块链”。这个观点我不赞同。一来经济激励设计和服务对象范围、是否需要许可之间并不存在什么矛盾,我们只是现在还没有看到有内在经济激励的样本;二来具有内生的经济激励是否是成为区块链的必要条件依然是一个值得探讨的问题。
最后回答文章开头的问题:未来将有许多种形态的区块链以及非区块链共存。它们将相互协作,相互促进,相互保障,共同编织一个高效可靠的数字经济网络。
Ref
[1] Swanson, T. (2015). Consensus-as-a-service: a brief report on the emergence of permissioned, distributed ledger systems, 66.https://doi.org/10.1017/CBO9781107415324.004
[2] 为什么我们需要另一种区块链,https://www.jianshu.com/p/bbbedbc6fed7
[3] Don't Trust, Verify,https://www.jianshu.com/p/94f11608612c
[4] 如何在数字世界实现信任的自动化,https://www.jianshu.com/p/ff00ca99499a
We're hiring
如果你对创造未来的加密经济感兴趣,对自己的能力有自信,欢迎投简历到 join@cryptape.com 加入我们:
Appchain Team - Appchain 是 Nervos Network 的 Layer 2 方案之一,以 CITA 为核心,包含 Neuron 钱包和 Microscope 浏览器。无论你是移动应用高手,Web 应用高手,还是有特殊技能的产品小王子,Appchain Team 都欢迎!
CITA Core Team - CITA 是世界上第一个使用微服务架构的许可链项目,用 Rust 实现,追求高性能与高稳定性。CITA 与大多数许可链不同,不是 Ethereum 或者 Fabric 的 fork,而是一个从零开始设计的项目,这给我们带来了许多挑战,也带来了许多乐趣。这里隐藏大佬很多哦~
CKB Core Team - CKB 是 Nervos Network 的 Layer 1, 是一条公有链,用 Rust 实现,追求安全性与稳定性。这里隐藏大佬也很多哦~
Cryptape Research