打造加密经济的信任引擎
作者 | Jan Xie
出品|Nervos Network
区块链需要成为世界计算机吗?
如果抛开区块链的概念,就字面意思理解“世界计算机”,那应该是一台全世界用户可以共同使用的计算机。在世界计算机中,我们应该可以搭建和部署自己的应用,由世界计算机帮我们执行;我们可以在世界计算机上保存各自的数据;不仅如此,应用之间还能够完美的协作,共同完成我们交待的任务。我很喜欢这个想法。
其实在区块链出现之前,我们已经拥有了这样的世界计算机,我们称呼它为“云计算”。云计算提供的服务可以被全世界的用户访问,通过这些服务我们可以搭建和部署自己的应用,保存应用数据;应用可以使用诸如 HTTP 这样的通讯协议和公开的 API 接口进行协作,共同完成某一个任务。这些年,云计算也没有停止进化的脚步,从 IaaS 到 PaaS 再到 FaaS,抽象层次越来越高,能力越来越强大,使用越来越方便。
如果要当作世界计算机来用,不得不说,区块链与云计算平台相比劣势明显:云计算平台可以支撑无限的吞吐量,可以提供完美的用户间隐私保护。但是我们知道,区块链之所以会有这些劣势,并不是由于设计的疏漏。恰恰相反,中本聪想请楚了 Ta 想要的是什么,在 Ta 看来,为了那个目标放弃一些东西是值得的。 世界计算机不应该是区块链的目标,设计者不应该被这个错误的目标误导,设计者必须有自己的权衡。
Ask the Right Question
如果跳出区块链的深井来观察,我们提出的问题不应该是“如何打造一台世界计算机”,也不应该是”如何解决区块链面临的性能和隐私两大难题“。区块链只是一种技术工具。我们可以清楚看到的是,人们想要的不是区块链,而是加密经济。作为 Nervos 的设计者,我们试图回答的是这样一个问题:如何为未来的加密经济设计基础设施? 问题的答案可以是区块链,也可以不是区块链,但无论如何,它必须支持自我保障协议,这是加密经济的基础,同时也必须解决它在今天遇到的问题,比如交易性能,以及交易隐私 - 没错,我们依然要解决性能和隐私的问题,但问题的主体是加密经济,不是区块链这把在我们的工具箱中闪闪发亮的扳手。
自我保障协议与加密经济
加密经济(Cryptoeconomics)是区块链发展多年以后形成的全新经济体。这个经济体与其他的虚拟经济相比较时显得鹤立鸡群,因为她是我们迄今为止创造出的最活跃的市场:她与互联网一般大,跨越不同的国家和地区,吸引了成千上万来自不同国家的市场参与者;她将个人创造和交易数字资产(Cryptoassets)的成本降到极低,正如当年博客与微博将传播的成本降到极低然后汇聚了前所未有的注意力一样,她也汇聚了前所未有的流动性;她永不停转,7*24小时不间断的为用户提供服务。
维护这样一个跨越地域的自发市场运行的,不可能是受到地缘限制的传统制度,只能是在任何时间、任何空间都能够成立的普遍规律:数学、理性、博弈,等等。加密经济的大厦正是建立在密码学和博弈论之上,通过精心设计的自运行制度激励用户共同保障市场中各种协议(即合约)的执行,进而保证市场参与者的资产所有权和交易执行,维护市场的稳定运行。由于加密经济中的协议是由一种去中心化的机制,而非参与者以外的第三方来保证实施,我把它称为自我保障协议(Self Enforced Protocol)。
自我保障协议是加密经济的基础,也是一种前所未见的新物种。“古典”互联网所依赖的网络协议是一种乐观的协议,设计者总是假设参与方会遵循协议的规定,按照协议规定的步骤行动。而现实与理想截然相反,互联网协议的参与方往往无意甚至有意的不按照步骤行动,其后果就是协议的执行被任意的破坏和中止,遵循协议的参与者只能重试或是更换协作者。这一类协议打造的互联网是一个充满了不确定的网络,一个无法为数字经济提供原生支持的网络。
信任的创造和传导
《The Economist》 在 2015 年给区块链取过一个十分恰当的名字,“The Trust Machine”。我喜欢把这个名字翻译为“创造信任的机器”,正如 Candy Machine是制造糖果的机器。作为一个喜欢动手创造软 (shi) 件 (jie) 的开发者,“创造信任”是我能想到的最酷炫的一个目标了(于是我司的 Slogan 是 We Build Trust)。有趣的是三年过去后的今天,区块链真的变成了可以凭空变出”糖果”的 Candy Machine,一系列五花八门的功能被注入区块链,也不在乎“古典”技术方案会不会是更恰当的选择。
从架构的观点来看,将一个系统的整体功能分层或分解,交给不同的功能层或是功能组件去处理,是一种优于将所有功能都耦合在一个单体中的设计模式。我们甚至可以说解耦是所有复杂系统设计的核心。UNIX 的管道设计,在传统桌面软件和互联网服务都有应用的 Model/View/Controller 模式,插件架构的编辑器VIM都是很好的例子。互联网同样通过不同的网络协议实现数据传输、邮件递送等不同的功能,在这一组协议中也包括由 PKI(Public Key Infrastructure)和 TLS(Transport Layer Security)等与身份和加密有关的协议,它们共同构建了互联网的信任体系。
PKI 体系负责创造、管理、分配、使用、存储以及撤销数字证书,解决数字身份与物理身份对应的问题。数字证书颁发机构 (CA) 负责管理和发放数字证书,将用户/企业的身份与公开密钥链接在一起。数字证书颁发机构可以给其它数字证书中介机构颁发证书,形成层层相连的证书链。基于数字证书,互联网上的网站与网站之间,用户与网站之间,以及用户与用户之间可以建立安全保密的信息交换通道。比如说,当用户访问电商或者银行网站时,就是通过数字证书以及 HTTPS(HTTP over TLS)协议来建立安全链接。
这是一个分工协作的系统:PKI 只关心身份和数字证书的管理,数据的加密传输由 HTTPS 来完成。PKI 本身又是一个分层的架构,处于系统最底层的是根证书颁发机构,是整个信任链的起点,根证书颁发机构本身的数字证书被默认内置在浏览器等软件中,受到所有互联网用户的信任,这种信任通过证书链被层层传递上去,最终被注入这个体系中所有的互联网服务。根证书颁发机构只做证书管理这一件事情,它们不关心电商、游戏或是其他任何具体场景的业务逻辑,这些场景中发生的数据交互也不需要经过根证书颁发机构。根证书颁发机构为互联网创造信任,它们是整个互联网信任体系的“引擎”。之所以“引擎”两个字要加引号,是因为根证书颁发机构终究还是人来管理的企业而不是机器。
互联网建立了一个非常成功的信任网络,而且运转良好,没有遇到性能或是隐私的麻烦。究其原因,是因为互联网采用了一个分层和解耦的架构。这个古典信任网络唯一的问题,在于其可信等级还不够高,因为我们需要相信根证书颁发机构的实力和人品(根证书颁发机构发生的安全事故并不少);在于它缺乏对自我保障协议的内在支持,我们无法在其中定制和实现能够自我保障执行的协议。我们需要解决这些问题。因此, 我们理想中的加密经济网络基础设施,同样应该是分层和解耦的架构,通过一组协议而不仅仅是一个协议来定义,对自我保障协议提供原生支持,并且有一个无需依赖任何第三方的信任链的根。
是时候让闪闪发亮的扳手登场了。
CKB: Nervos 的信任引擎
区块链是创造信任的机器,是一个不依赖任何第三方的由算法和经济激励维护的的网络。区块链刚好是我们想要的那个无需依赖任何第三方的信任链的根。
我们为 Nervos 网络打造的信任引擎叫做 CKB(Common Knowledge Base),共同知识库。这个名字源于我们对区块链的认识,在 CKB 白皮书的附录中有详细描述,这里不再赘述。CKB 位于 Nervos 网络的最底层(我们称为 Layer1),是一个全新设计的公有链协议,是 Nervos 网络信任链的根,是整个 Nervos 网络的安全之锚。在 CKB 之外,Nervos 还要定义 Layer1 与 Layer2 之间的信任传递协议,将 CKB 建立的信任传递到上层,保障 Layer2 DApp 的执行,保障整个 Nervos 加密经济的运行。这是一个类似 PKI 体系的分层信任网络,绝大部分的计算、存储、网络传输发生在 Layer2,只有在 Layer2 的运营节点作恶,产生信任问题时,用户才需要与 Layer1 交互,提交密码学证据给 CKB,CKB 根据证据和事先确定的规则进行仲裁,由此保障 Layer2 上协议的执行。Layer1 的目标是安全,Layer2 的目标是计算。
CKB 自身使用 PoW 共识,通过 PoW 将 CKB 与现实世界中的能量锚定。选择 PoW 是因为这是目前已知的最为可靠的开放网络共识协议。Nervos 网络由此形成一个树状的信任传递网络:
需要特别指出的是,这样的分层架构对 Layer1 会产生完全不同的要求,我们没有看到能满足这样要求的公有链设计。这样的目标和现状要求我们必须重新设计 Layer1。因此,CKB 与其他的公有链有着完全不同的设计目标,具体来说:我们希望尽可能的最小化 CKB 的职责,专注于安全的共识,为上层建筑创造信任,而不是最大化 CKB,让它能够支持各种通用的业务场景。正如 PKI 体系中的根证书颁发公司无需关心具体的应用场景。优美的设计产生于简单和平衡而不是叠加。
因此 CKB 只需要保留两个功能:一是简单安全的共识算法,二是支持 Layer1 与 Layer2 之间的信任传递协议。
我们的研究与工程团队正在设计和实现一个新的 PoW 共识,目标是在保证安全的前提下,尽可能的挖掘 PoW 的潜力,提高 CKB 的吞吐量,缩短交易确认时间。由于 Nervos 网络中的大部分交易将发生在 Layer2,我相信通过新的 PoW算法和对并行计算友好的 Cell 模型(见 Nervos 白皮书)所实现的性能可以支撑 Nervos 网络前期的需求。
为了支持 Layer1 与 Layer2 之间的信任传递,CKB 选择了以状态为中心的设计,提出了 Cell 模型这样一个不同于账户模型和 UTXO 模型的新状态模型。 Cell 模型是 UTXO 模型的最小自然扩展,将只关心数字的 UTXO 扩展为可以保存任意数据类型的 Cell。Cell 是实现 Layer1 和 Layer2 之间的信任传递协议的基础,因为我们必须有方法来保存状态,同时这个保存状态的方法应该是一个恰到好处的程度,不多不少(e.g. 我们不需要一个 KV 或是 SQL DB)。我们需要一个做状态验证的虚拟机,这个虚拟机不需要支持太多的场景,最好也是刚刚好。状态在 Layer2 上生成,在 Layer1 上记录和验证。
由于不仅仅要考虑自身的安全,还需要考虑如何支持信任传递协议和 Layer2,CKB 的经济机制也面临着更大的挑战。CKB 代币将是 Layer2 的抵押物,是Nervos 网络默认的价值存储手段(SoV)。这方面我们需要更多的研究,幸运的是我们有很棒的经济学家在帮助我们。
可以看到,Nervos 从整体出发的设计思路,使 CKB 在设计初始就以 Layer2 的需求为优先。在多个方面。这将使得在 Nervos 网络中实现 Layer2 方案会更容易。这是 Nervos 独特的方法论。
A Better World
加密经济网络是互联网发展到成熟的阶段的自然延伸。互联网经历了自己的 1.0和 2.0,成就了 GAFA(谷歌/苹果/脸书/亚马逊) 与 BATX(百度/阿里/腾讯/小米),也颠覆了我们的生活。发展到今天,互联网平台已经渡过了需要吸引用户和第三方合作伙伴的成长期,行业的增长天花板就在眼前,平台与平台参与者之间的关系从非零和博弈转向零和博弈,平台必须与第三方争抢用户和利润,即使所有人都知道,抑制了第三方的参与积极性也就抑制了创新。这是互联网模式的困境。
在这样无法创新的困境下,区块链和加密经济的出现也就成为了一种必然,我们正处于互联网下一次蜕变的起点。让我们仔细的思考加密经济需要什么,虚心的向古典互联网学习,创造我们所向往的美好世界。
关于 Nervos
Nervos Network 由 Nervos 基金会推动,通过分层设计,兼顾性能、安全以及去中心化的特性,满足多样化的商业场景需求,为未来加密经济提供基础设施。
关于 CKB
Nervos Common Knowledge Base(CKB)是一个无需许可链,它是 Nervos Network 的基础层,并在设计上提出了一些理念:
——CKB 共识协议 NC-MAX 使用两阶段提交节约带宽,并根据网络情况调整自身参数,提升了 Nakamoto Consensus 的可扩展性
——CKB 虚拟机采用底层 CPU 指令集架构 RISC-V 开发,提供更高的开发弹性与运行的稳定性
——CKB Cell Model 是比特币 UTXO 模型的通用化,能够验证和存储任何类型的数据
——CKB 经济模型用货币政策限制状态存储的增长,并实现智能合约平台的价值存储功能