Nervos Network 定位白皮书

Nervos Network 由一系列协议和创新方法组成。2018 年 1 月,Nervos 发布了第一个 RFC。从那以后的整整 20 个月时间里,Nervos 团队陆续发布了 RFC 0002—RFC 0020,这些提案包括了虚拟机、共识机制、经济模型、PoW 算法等等,所有的这些组件构成了现在的「Nervos Network」。这些设计和实施还将会在未来继续相互补充和完善。
我们希望我们和社区是完全透明的,我们希望帮助社区了解我们要完成的工作,所做的权衡以及如何达成目前设计的决策。随着 Nervos 主网上线的临近,我们希望通过对目前 Nervos Network 全面的更新和汇总,来一起思考我们的起点和未来计划。于是,在发布 RFC 0002-RFC 0020 之后,RFC 0001 终于来了!
以下为 Nervos 中文社区对 RFC 0001 的译文:
1. 目的
Nervos Network 由一系列协议和创新方法组成。关键协议的设计和实现需要有明确的文档和技术规范,这一点至关重要,因此我们采用 RFC(Request for Comment)流程。然而同样重要的是,我们希望帮助社区了解我们要完成的工作,所做的权衡以及如何达成目前设计的决策。
本文首先详细研究了目前公有链(Public Permissionless Blockchain)面临的问题,以及试图解决这些问题的现有解决方案。我们希望能够为读者提供必要的背景信息,以便大家了解我们如何尽全力应对这些挑战,以及我们做这些底层设计决策的理由。之后,本文提供了对 Nervos Network 各个组成部分的详细描述,并重点介绍每个部分是如何协同工作以支持我们对整个网络的愿景。
2.背景
可扩展性、可持续性和互操作性是当今公有链面临的最大挑战。虽然许多项目声称能够解决这些问题,但重要的是我们需要了解问题的根源,并将在可能的权衡取舍背景下给出解决方案。
2.1 可扩展性
比特币[1]作为第一个公有链,旨在成为点对点的电子现金。以太坊[2]创建了一个通用的去中心化计算平台,使更多场景成为可能。然而,两个平台都对交易能力施加了一些限制——比特币限制了区块大小,以太坊限制了区块 Gas 上限。这些是确保平台长期去中心化的必要措施,但也限制了平台的交易能力。
区块链社区近年来提出了许多可扩展性方案。通常,这些解决方案可以分为两类:链上扩容和链下扩容。
链上扩容方案的目标是扩大共识过程的吞吐量,建立拥有与中心化系统吞吐量相媲美的区块链系统。链下扩容方案将区块链作为一个安全的资产存储和结算平台,同时将几乎所有的交易转移到上层。
2.2 可持续性
长期维持一个自治的、无所有者的公有链的运营是一个相当大的挑战。激励机制必须在不同的利益相关者之间达成平衡,系统的设计必须考虑到广泛的全节点运营和公开的可验证性。在支持开放的全球网络时,对于全节点的硬件要求必须保证合理。
区块链原生资产的激励和控制必须能够平衡长期持有者的升值需求,以及保护网络的矿工或验证者的补偿需求。
此外,一旦公有链开始运行,就很难改变治理协议的基本规则。因此从一开始,系统就必须设计成可持续的。为此,我们对建立可持续公有链所面临的挑战进行了彻底的研究。
2.3 互操作性
跨区块链的互操作性是人们经常讨论的话题,许多项目都专门针对这一挑战提出过解决方案。通过可靠的跨链交易,能够在去中心化经济中实现真正的网络效应。
区块链互操作性的第一个例子是比特币和莱特币之间的原子交换。比特币与莱特币之间的去信任交互不是通过协议内的机制实现的,而是通过共享的加密标准(特别是使用了 SHA2-256 哈希函数)实现的。
类似地,以太坊 2.0 的设计能够实现多个分片链的互连,所有分片链都运行相同的协议,并使用相同的密码学原语。在为分片间通信定制协议时,这种一致性很有价值,但是以太坊 2.0 将无法与使用了其他密码学原语的区块链实现互操作。
诸如 Polkadot 或 Cosmos 之类的区块链网络则更进一步,允许使用相同的框架(如 Cosmos 的 Cosmos SDK 和 Polkadot 的 Substrate)构建的不同区块链相互通信和交互。开发者可以更加灵活地构建自己的协议,并确保了相同密码学原语的可用性,允许每个链能够解析另一个链并交叉验证交易。然而,它们都依赖于中继或「锚定区域」(Pegging Zones)来和没有用自己的框架构建的区块链进行连接,从而需要引入额外的信任层。值得一提的是:尽管 Cosmos 和 Polkadot 的目标都是实现「区块链网络」,但 Cosmos 和 Polkadot 网络并没有为彼此互操作而设计。
跨链网络的加密经济学也需要进一步的研究。Cosmos 和 Polkadot 的原生代币都可以被用来进行 Staking、治理和用作交易费。Staking 无法单独给出原生代币的内在价值(在 4.2.4 中会讨论到),抛开通过 Staking 而引入的加密经济动力不说,依赖于跨链交易而获取生态系统价值的模型是很脆弱的。而且,跨链交易是多链网络的弱点,而非优势,就像跨分片(Cross-shard)交易是分片数据库的弱点一样。跨链交易带来了延迟,也会导致原子性(Atomicity)和可组合性(Composability)的缺失。为了减少跨链的开销,在不同链上需要交互的应用最终会趋向于迁移到相同的区块链上,减少对跨链交易的需求,从而减少对原生代币的需求。
跨链网络可以从网络效应中获益——网络中相互连接的链越多,网络的价值就越大,对网络中潜在新参与者的吸引力也越大。理想情况下,我们希望看到这个价值能够逐渐地被捕获到原生代币中去,以进一步促进网络的增长。然而,在像 Polkadot 这样集中的安全网络中,更高的原生代币价格会提高参与成本,成为网络进一步增值的障碍。在像 Cosmos 这样松散性连接的网络中,更高的代币价格会提高赚取跨链交易费用的资金成本,这降低了质押资本的预期回报,进而会阻碍用户参与进一步的质押。
采用分层架构的 Nervos Network 也是一个多链网络。从架构上来说,Nervos 使用 Cell 模型和底层虚拟机来支持真正的自定义和用户创建的密码学原语,以支持异构区块链之间的互操作性(在 4.4.1 中有介绍)。从加密经济角度上讲,Nervos Network 将价值(而不是信息传递)聚焦到它的根链(Root Chain)上。通过价值捕获,Nervos 的原生代币将会升值;随着网络所承载的总价值增加,网络的安全预算也将会增加。最终,不断上升的原生代币价格,会提升网络的核心价值主张,而不是削弱它。这在章节 4.4 中会详细说明。
3. Nervos Network 核心原则
Nervos 是一个旨在满足去中心化经济需求的分层网络。我们认为分层是构建区块链网络的正确方法,原因有很多。在构建区块链系统时,需要做许多众所周知的权衡,比如去中心化与可扩展性、中立与兼容、隐私与开放、价值存储与交易成本、密码安全与用户体验等等。我们认为,所有这些冲突的产生都是因为人们试图用单一的区块链来解决完全相反的问题。
我们认为构建一个系统的最佳方法不是构建一个能够包罗万象的单层,而是将关注点解耦并在不同的层次处理它们。这样一来,Layer 1 区块链则可以专注于成为安全、中立、去中心化和开放的公共基础设施,而较小的 Layer 2 网络则可以被专门设计为最适合其使用环境的网络。
在 Nervos Network 中,Layer 1 协议(Common Knowledge Base,简称 CKB)是整个网络的价值存储层。它从哲学上受到了比特币的启发,是一个开放的、公有的、基于工作量证明的区块链,旨在最大程度地保证安全性和抗审查性,并充当去中心化价值和加密资产的托管者。Layer 2 协议在 Layer 1 区块链的安全性之上,提供了无限的可扩展性和最低的交易费用,并允许在信任模型、隐私性和最终性方面针对特定应用做权衡。
以下是 Nervos Network 设计的核心原则:
· 一个可持续发展的、多资产 Layer 1 区块链在加密经济设计上必须成为一个价值存储平台;
· Layer 2 提供了最佳的扩展方案,带来几乎无限制的交易处理能力、最低的交易成本,并提升了用户体验。Layer 1 区块链在设计上应该与 Layer 2 互补,而不是与 Layer 2 竞争;
· 以工作量证明机制作为抵抗女巫攻击的方法,对于 Layer 1 区块链来说至关重要;
· Layer 1 区块链必须要为交互式协议和区块链的互操作性提供通用编程模型,并最大程度地允许协议的可定制性,且易于升级;
· 为了最优地分配资源并避免「公地悲剧」,状态存储必须要有清晰且颗粒度细的所有权模型。为了向矿工提供持续的长期回报(不受交易需求的影响),状态占用必须要有持续的成本。
4. Nervos 共同知识库
4.1 概览
「共同知识(Common Knowledge)」被定义为每个人或几乎每个人都知道,而且每个人都知道其他人知道的知识,它通常与使用该术语的社区有关。在区块链语境中,「共同知识」指的是经过全球共识验证并被网络中的所有人接受的状态。
共同知识的这个属性使得我们能够将存储在公有链上的加密货币作为货币。例如,比特币上所有地址的余额和历史记录对比特币用户来说都是共同知识,因为他们可以独立地复制共享的账本,验证自创世区块以来的全局状态,并且知道其他人也可以这样做。共同知识使人们能够进行点对点交易而不需要信任任何第三方。
Nervos 共同知识库(Common Knowledge Base,简称 CKB)旨在存储所有类型的共同知识,而不局限于货币。例如,它可以存储用户自定义的加密资产,比如可互换(Fungible)和不可互换(Non-fungible)的代币,以及有价值的密码学证明,从而为更上层的协议提供安全性,例如支付通道(5.2)和 Commit-chains(5.4)
比特币和 Nervos CKB 都是共同知识的存储和验证系统。比特币将其全局状态存储为 UTXO 集,并通过比特币脚本验证状态转换。Nervos CKB 泛化了比特币的数据结构和脚本功能,将其全局状态存储为一组活动可编程单元(称为 Cell),并通过在虚拟机中运行的用户自定义的图灵完备脚本验证其状态转换。
Nervos CKB 具备与以太坊类似的所有智能合约功能,但与其他智能合约平台的不同之处是,Nervos CKB 采用了一种用于共同知识存储的经济模型,而不是为去中心化计算进行支付而设计的经济模型。
4.2 共识
比特币的中本聪共识(Nakamoto Consensus,简称 NC)因其简单的设计和较低的通信开销而广受好评。然而,NC 存在两个缺点:1)其交易处理吞吐量远远不能达到人们的需求;2)它容易受到自私挖矿攻击,攻击者可以通过偏离协议规定的行为获得额外的区块奖励。
CKB 共识协议是 NC 的一种变体,它在保持其优点的同时,提高了其性能极限和对自私挖矿的抵抗能力。通过识别并消除 NC 的区块传播延迟瓶颈,CKB 共识协议能够在不牺牲安全性的前提下,支持非常短的区块间隔。缩短的区块间隔不仅可以增加吞吐量,还能够降低交易确认延迟。CKB 的共识协议会在难度调节过程中计算所有有效区块,所以这让自私挖矿不再有利可图。
4.3 Cell 模型
Nervos CKB 使用 Cell 模型,这是一种新的结构,可以提供(以太坊采用的)账户模型的许多优点,同时保留(比特币采用的)UTXO 模型的资产所有权和基于验证的属性。
Cell 模型是关注状态的数据模型。Cell 包含任意数据,这些数据可以很简单,比如代币数量和所有者,也可以更复杂,比如为代币转账指定验证条件的代码。CKB 的状态机执行与 Cell 关联的脚本,以确保状态转换的完整性。
除了存储自己的数据,Cell 还可以引用其他 Cell 中的数据。这允许将用户拥有的资产和控制它们的逻辑分离。这与基于账户模型的智能合约平台形成了对比,在基于账户的智能合约平台中,状态是智能合约的内部属性,必须通过智能合约接口访问。在 Nervos CKB 中,Cell 是可拥有的独立状态对象,可以直接被引用和传递。Cell 可以表示属于其所有者的真正的「可承载资产(Bearable Assets)」(就像 UTXOs 是比特币所有者的可承载资产一样),同时引用包含逻辑的 Cell,以确保状态转换的完整性。
Cell 模型中的交易也是状态转换证明。交易的输入 Cell 从当前 Cell 集合中移除,输出的 Cell 添加到该集合中。当前 Cell 包含 Nervos CKB 的全局状态,并且是不可变的:一旦创建了它们,就不能更改它们。
Cell 模型的设计具有可适应性、可持续性和灵活性。它可以被描述为一个通用的 UTXO 模型,并且可以支持用户定义的代币、智能合约和不同的 Layer 2 协议。
如果想更深入地了解 Cell 模型,请参阅这里:
https://medium.com/nervosnetwork/https-medium-com-nervosnetwork-cell-model-7323fca57571
4.4 虚拟机
许多下一代区块链项目都在使用 WebAssembly 作为区块链虚拟机的基础,但 Nervos CKB 采用的是一种独特的,基于 RISC-V 指令集构建的虚拟机(CKB-VM)设计。
RISC- V 是一个开源的 RISC 指令集架构,创建于 2010 年,用于促进新型硬件和软件的开发。RISC-V 是一个免版税、被广泛理解和广泛审计的指令集。
我们发现在区块链语境中使用 RISC-V 有很多优点:
· 稳定性:RISC-V 核心指令集已经最终确定和固定,并得到了广泛的部署和测试。RISC-V 核心指令集是固定的,并且从不需要更新。
· 开源和广泛的支持:RISC-V 是在 BSD 许可下提供的,并得到GCC和LLVM等编译器的支持,目前正在开发 Rust 和 Go 语言实现。RISC-V 基金会包括超过 235 个成员组织,以促进指令集的开发和支持。
· 简洁和可扩展:RISC-V 指令集很简单。由于支持 64 位整数,这个集合只包含大约 102 条指令。RISC-V 还为扩展指令集提供了模块化机制,使高性能密码算法能够进行向量计算或支持 256 位整数。
· 精准的资源定价:RISC-V 指令集可以在物理 CPU 上运行,提供执行每条指令所需的机器运转周期的准确估计,并告知虚拟机资源定价。
CKB-VM 是底层的 RISC-V 虚拟机,它允许灵活的、图灵完备的计算。通过使用广泛实现的 ELF 格式,CKB-VM 脚本可以用任何可以编译成 RISC-V 指令的语言开发。
4.4.1 CKB-VM 和 Cell 模型
一旦部署,现有的公有链或多或少是固化的。若想要升级基本组件(如密码学原语)可能需要花上长达多年的时间,或者直接就无法实现。
CKB-VM 则是从更底层开始考虑设计,它将以前内置在自定义 VM 中的原语移动到虚拟机之上的 Cell 中。尽管 CKB 脚本比以太坊中的智能合约更底层,但是它们具有很好的灵活性,并为不断发展的去中心化经济提供了一个反应迅速的平台和基础。
Cell 可以存储可执行代码,并能够将其他 Cell 作为依赖项引用。几乎所有的算法和数据结构都可以作为存储在 Cell 中的 CKB 脚本实现。通过保持 VM 尽可能简单并将程序内存装载到 Cell 中 ,更新关键算法就像将算法加载到 Cell 并更新现有引用一样简单。
4.4.2 在 CKB-VM 上运行其他虚拟机
因为 CKB-VM 的底层特性和 RISC-V 社区中的诸多实用工具,我们可以很容易地将其他 VM(如 Ethereum 的 EVM)直接编译到 CKB-VM 中。这有几个优点:
在其他虚拟机上运行的使用专用语言编写的智能合约,可以很容易地被移植到 CKB-VM 上运行。(严格地说,它们将在自己的 VM 上运行,这些 VM 再被编译并运行到 CKB-VM 内。)
即使状态转换的规则被编写在除 CKB-VM 之外的虚拟机中运行,CKB 也可以验证 Layer 2 交易争议解决的状态转换。这是支持去信任的 Layer 2 通用侧链的关键需求之一。
关于 CKB-VM 的技术演示,请参阅这里:
https://medium.com/nervosnetwork/an-introduction-to-ckb-vm-9d95678a7757
4.5 经济模型
Nervos CKB 的原生代币「Common Knowledge Byte」, 缩写为 CKByte。CKByte 允许代币持有者占用区块链的总状态存储的一部分。例如,通过持有 1000 个 CKByte,用户可以创建一个容量为 1000 字节的 Cell,或者总容量为 1000 字节的多个 Cell。
CKByte 持有者在 CKB 上使用 CKByte 存储数据会有一定的机会成本,他们无法将占用的 CKByte 存入 NervosDAO 以获得部分的二级发行。CKByte 由市场定价,这就为用户提供了一种主动释放状态存储的经济动机,以满足扩展状态的高需求。在用户释放状态存储之后,他们将收到相当于其数据占用状态大小(以字节为单位)的 CKByte。
CKB 的经济模型通过原生代币的发行制度来限制状态增长,让全节点的参与门槛保持较低的水平,并且确保去中心化。由于 CKByte 成为稀缺资源,因此它会被定价并且会以最有效的方式进行分配。
Nervos Network 的创世区块总量为 336 亿 CKB,其中 84 亿将立即被销毁。之后的 CKByte 发行包括两个部分——基础发行和二次发行。CKByte 的基础发行部分总量有限(336 亿 CKByte),发行规则类似于比特币。基础发行部分的区块奖励大约每四年减半一次,直到发行完毕。所有的基础发行都将发放给矿工,作为保护该网络的奖励。二级发行的固定发行速率为每年 13.44 亿 CKByte,其目的是为状态存储空间的占用征收机会成本。基础发行停止后,将只会有二级发行。
Nervos CKB 包含一个称为 NervosDAO 的特殊智能合约,它的作用是抵御二级发行所带来的通胀影响。CKByte 持有者可以将代币存入 NervosDAO,并获得一部分二级发行的代币,这完全抵消了二级发行的通胀影响。对于长期代币持有者而言,只要他们将代币锁定在 NervosDAO 中,二级发行的通胀效应就只是名义上的。由于抵消了二级发行的影响,将 CKByte 存在 NervosDAO 的持有者实际上就如同持有了像比特币那样有硬顶的代币。
当 CKByte 用于存储状态的时候,就不能通过 NervosDAO 来获得二级发行的奖励。这让二次发行成为一种恒定的通胀税,或者是对占用状态存储的「状态租金」。这样的经济模型让状态存储费用与占用的空间和时间成正比。与使用「一次性付费,永久占用」模型的其他平台相比更具可持续性,并且比其它需要明确付款的状态租赁方案更具可行性和用户友好性。
矿工可以同时获得区块奖励和交易手续费。当矿工挖到一个区块时,他们会获得这个区块所对应的所有基础发行和部分的二次发行。所对应的部分依据占用的状态来决定,举例来说:如果目前所有原生代币的一半被用于存储状态,那么矿工将获得这个区块一半的二次发行作为奖励。有关二级发行分配方式的其他信息将在下一节(4.6)中进行说明。从长期来看,当基础发行停止时,矿工仍将获得独立于交易、但与 Nervos CKB 状态占用相关的「状态租金」收入。
类似地,CKByte 可以看作是土地,而存储在 CKB 上的加密资产可以看作是房屋。建造房屋需要土地,CKByte 需要在 CKB 上存储资产。随着在 CKB 上存储资产的需求增加,人们对 CKByte 的需求也随之增加。随着所存储资产的价值上升,CKByte 的价值也会上升。
通过这种设计,人们对于多资产的需求可以转化为对单个资产的需求,并且可以采用和保护比特币系统安全相同的激励制度。矿工们会得到以 CKByte 为单位的区块奖励,CKByte 会随着需求的增加而增值,从而增加整个 Nervos Network 的安全预算。
有关经济模型的更多信息,请参阅这里:
https://github.com/nervosnetwork/rfcs/blob/master/rfcs/0015-ckb-cryptoeconomics/0015-ckb-cryptoeconomics.md
4.6 财政部
那些不发放给 1)矿工,2)将代币锁定在 NervosDAO 中的长期持有者的二级发行部分,将被放入名为「财政部」的特殊基金中。举例来说:如果 CKByte 的 60% 用于存储状态,30% 存入 NervosDAO,矿工们将获得 二级发行的 60%,NervosDAO(长期持有者)将会收到二级发行的 30%,10% 的二级发行将进入到财政部中。
财政部基金将用于资助正在进行的针对协议的研究和开发,以及 Nervos Network 生态系统的建设。财政部基金的运用会是开放、透明,并且上链让人人都可以看到。与基于通货膨胀的财政融资模型相比,该模型没有稀释长期代币持有者(将代币存入 NervosDAO 中的持有者)的持币比例。协议开发的资金将完全地来自于短期代币持有者的机会成本。
财政部的资金并不会在 Nervos CKB 主网启动时立刻被激活。它只会在 Nervos 基金会用完包含在创世区块中的生态基金之后,才会通过硬分叉来激活使用。在激活财政部的基金之前,这部分的二级发行将会被烧毁。
4.7 治理
治理是指社会或团体内部组织决策的方式。系统中的每一个利益相关群体都应该被包含在这一个过程中。在区块链中,这些利益相关者不仅仅应该包括用户、持币者、矿工、研究员和开发者,还应该包括如钱包、交易所、矿池等的服务供应商。各利益相关方的利益各不相同,想要对齐每个人的利益几乎是不可能的。这也是为什么区块链治理是一个复杂且具争议性的话题。如果我们把区块链看做是一个大型的社会实验,那么治理就需要有比系统中其他任何部分都要精密的设计。经过十年的迭代之后,我们依然没有在区块链中看到一个公认的最佳实践或者可持续的流程。
有些项目通过一个「终生仁慈的独裁者」进行治理(就像 Linus Torvalds 对 Linux 的治理一样)。我们承认这确实能让一个项目变得很高效、有凝聚力并且具有吸引力:因为人们都喜欢英雄;但是,它和区块链的核心价值——去中心化相矛盾。
有一些项目将治理委托给一些有着深远决策能力的优质链下委员会,例如 EOS 上的 ECAF(EOSIO 的核心仲裁法庭)。然而,这些委员会缺乏必要的权力以确保参与者能遵守他们的决定,这也可能是今年早些时候决定关闭 ECAF 的原因之一。
有些项目,比如 Tezos 则想的更远,他们实行了链上治理,来确保所有的参与者会遵守投票出来的决定。这也能够避免任何因开发者和矿工(或者全节点用户)之间的冲突所带来的影响。请注意,链上治理与简单的链上投票不同,如果一个被提议的功能或修正通过链上治理获得了足够的选票,那么链上的代码就会自动更新,矿工或者全节点没有任何办法来控制这个改变。Polkadot 采用了更复杂的方式进行链上治理,它通过选出来的委员会,以及股权加权投票和正负偏差机制的公投程序来计算投票率。
然而,尽管链上治理非常直接,但从他实际的推行来看并不如所呈现的这么优雅。首先。投票只能影响持币者的利益,然而却忽略了其他各方参与者。其次,低投票率是在区块链和真实世界都长期存在的问题。当只有少数人投票的时候,结果又如何能符合大多数人的最大利益呢?最后但也是最重要的一点是,硬叉应该始终被视为所有利益相关者的最终追索权。由于广泛可复制的无需许可区块链提供了极好的数据可得性,所以在完整的保留数据且不被中断的情况下从既有的区块链中分叉出来一条新链,应当始终是一个选项。通过链上治理的方式永远无法实现硬分叉。
关于治理的问题目前人们还没有一个切实可行的答案,所以 Nervos Network 的治理方案会持续迭代。在早期,Nervos 基金会将会担任项目的治理主体。Nervos 基金会是一个设立在巴拿马的、由独立委员会组成的基金会。基金会的任务是让 Nervos Network 能有更长远的发展,以及建设其生态系统并推动落地。
随时间发展,越来越多的代币会被挖出来,挖矿会变得越来越分散,并且会有更多的开发者加入,治理的责任将会逐渐的转移到社区。长期而言,以社区为主体的治理将会管理协议升级的过程以及财政部的资源分配。
Nervos CKB 旨在成为一个可以持续数百年的去中心化自治基础设施,这意味着无论网络如何发展,都有几件确定的事需要我们作为一个社区尽最大的努力去保持真实。这三件不变的核心是:
· 发行的时间表是完全固定的,不会被改变;
· 储存在 Cell 中的状态或数据不会被篡改;
· 既有脚本的语意不会被更改。
5. Layer 2 解决方案概览
5.1 Layer 2 是什么?
在区块链网络中 Layer 1 非常受限。一个理想的 Layer 1 区块链在安全性、去中心化和可持续性方面不会做任何妥协,然而,这就带来了区块链关于可扩展性和交易成本上的挑战。Layer 2 解决方案构建在 Layer 1 协议之上,允许将计算转移到链下,并有相关机制安全地回到 Layer 1 区块链上进行结算。
这类似于目前银行体系或 SEC 授权的监管文件中的净额结算。通过减少需要全局共识的数据量,网络可以为更多的参与者提供服务,促进更多的经济活动,同时仍然保持权力去中心化的性质。若不如此做则无法为如此大体量的经济活动提供服务。
Layer 2 用户依赖于 Layer 1 区块链提供的安全性,并会利用这样的安全性在层与层之间转移资产或解决纠纷。这样的结构类似于法院系统:法院不必监督和验证所有交易,而只是作为记录关键证据和解决争端的场所。类似地,在区块链的环境中,Layer 1 区块链允许参与者在链下进行交易,并且在出现分歧的情况下,参与者能够向区块链提供密码学证据(保障自己资产安全性),并对不诚实的行为进行惩罚。
5.2 支付和状态通道
支付通道建立在经常交易的双方之间。它们提供了一种低延迟、即时的支付的体验,这在需要全局共识的区块链上是做不到的。支付通道的功能类似于酒吧账单的工作原理——你可以和酒保一起打开账单,继续点饮料,你只需要在离开酒吧时付清账单并支付最终金额即可。在支付通道的操作中,参与者会交换包含对其余额进行加密验证的消息,并且在准备关闭通道,在区块链上结算余额之前,可以无限次地离线更新这些余额。
支付通道可以是单向的,也可以是双向的。单向支付通道从甲方通向乙方,类似于上面酒吧账单的例子。甲方存入可能在乙方处消费的最高金额,然后随着货物或服务不断被收到,慢慢地与签名将资金转给乙方。
双向支付通道更复杂,但是它开始展示了 Layer 2 技术为我们带来的可能性。在这些支付通道中,资金在各方之间来回流动。这样一来,支付通道可以实现「再平衡」,并且可以通过共享交易对手方进行跨通道支付。这使得支付通道网络成为可能,比如比特币的闪电网络。如果甲方可以通过中介找到一条与甲乙双方都有联系的通道,那么资金就可以从甲方转到乙方,而不需要建立它们之间直接的通道。
正如支付通道可以扩展链上支付,状态通道也可以在链上扩展任何类型的交易。支付通道仅限于管理双方之间的余额,而状态通道是关于任意状态的协议,支持从去信任的国际象棋游戏到可扩展的去中心化应用程序的所有内容。
与支付通道类似,双方将打开通道,随着时间的推移交换加密签名,并向链上智能合约提交最终状态(或结果)。然后,智能合约将基于此输入执行,根据合约中编码的规则执行交易。
「广义状态通道」是一种功能强大的状态通道构造,它允许单个状态通道支持跨多个智能合约的状态转换。这减少了「每个应用程序一个通道」结构中固有的状态膨胀,它还允许使用用户已打开的现有状态通道方便地登录。
5.3 侧链
侧链是一个独立的区块链,它通过双向锚定连接到无信任区块链(主链)上。要使用侧链,用户可以将资金发送到主链的指定地址上,并将这些资金锁定在侧链运营商的控制之下。一旦这笔交易得到确认,并且安全期已经过去,就可以向侧链运营商提供详细的资金存款证明。然后,这些运营商将在侧链上创建交易,并分配适当的资金。这些资金可以在费用低、确认快、吞吐量高的侧链上。
侧链的主要缺点是它们需要一个额外的安全机制和安全假设。最简单的侧链结构是联盟型侧链,它本质上是信任一组运营者的多重签名。在智能合约平台上,安全模型可以通过代币激励,或绑定/挑战/惩罚等类似经济游戏的方式进行微调。
与其他链下通用可扩展解决方案相比,侧链更容易理解和实现。对于能够设计出用户可接受的信任模型的应用程序类型,侧链可以是实用的解决方案。
5.4 Commit-chain
在 Commit-chain[6](如 Plasma[7])上,利用具有广泛全局共识的 Layer 1 区块链(根链)上的信任根(Trust Root)构建了二层链。这些 Commit-chain 是安全的;如果链的运营商是恶意的或功能障碍的,用户总是可以通过根链上的机制撤回他们的资产。
我们相信一个 Commit-chain 的运营商可以正确地执行交易并定期向主链发布更新。在任何情况下 Commit-chains 的资产都将是安全的,除非根链上有长期的审查攻击。与联盟型侧链类似,Commit-chain 的设计相比于无信任区块链提供了卓越的用户体验。尽管如此,他们这样做的同时,也维持了更强的安全保障。
Commit-chain 由一组运行在根链上的智能合约来保护。用户将资产存入此合约,然后其运营商在 Commit-chains 上为他们提供资产。运营商将定期向根链发布证明,用户随后可以通过 Merkle 证明的方式证明自己的资产所有权,即「退出」,这样 Commit-chain 的资产就会被撤回到根链上。
以上描述了 Commit-chains 设计的通用概念,它是包括 Plasma 在内的一个新兴协议系列的基础。Vitalik Buterin 和 Joseph Poon 在 2017 年发布的 Plasma 白皮书[7]中,提出了一个雄心勃勃的愿景。虽然所有的 Plasma 链目前仅能以资产为基础,只能存储可互换和不可互换的代币的所有权(以及代币转让),但无信任的代码执行(或智能合约)仍然是研究领域非常活跃的一部分。
5.5 可验证的链下计算
密码学似乎为昂贵的链上验证动态和廉价的链外计算量身定做了一个工具:交互式证明系统。交互式证明系统是由证明者(Prover)和验证者(Verifier)两个参与者组成的协议。通过来回发送消息,证明者将提供信息以说服验证者某项声明是真实的,而验证者将检查所提供的内容,并拒绝虚假声明。验证人不能拒绝的声明将会被认为是真实的。
验证者不能简单纯粹地单方验证声明的主要原因是效率——通过与证明者交互,验证者可以验证声明,否则验证索赔要求的成本将高得令人望而却步。这种复杂性的差距可能源自于不同的方面:1)验证者可能运行的是轻量级硬件,只支持空间有限或时间有限(或两者皆有限)的计算,2)纯粹的验证可能需要访问一长串充满不确定性的选择,3)纯粹的验证可能是无法实现的,因为验证者不具备某些秘密信息。
虽然重要信息的保密性在加密货币范畴下肯定是一个相关的约束因素,但是在可扩展性的范畴内,更相关的约束因素是链上验证的成本,尤其是与相对便宜的链外计算相比。
在加密货币的范畴内,zk-SNARKs(简洁非交互式零知识证明)受到了极大的关注。该系列的非交互式证明系统围绕运算电路展开,该运算电路将任意计算编码为有限域上的加法和乘法电路。例如,运算电路可以编码「我知道这个 Merkle 树中的一片叶子」。
zk-SNARK 证明是常数大小(Constant-size)的(数百个字节),可以在常数的时间内进行验证,尽管这种验证效率会花费一定的成本:除了基于配对的算法(具体的密码硬度仍然是关注的对象)之外,还需要可信的设置和结构化的参考字符串。
替代证明系统(Alternative Proof Systems)提供了不同的权衡。例如,Bulletproofs 没有可信的设置,并且依赖于更常见的离散对数假设,但却具有对数大小的证明(尽管依然非常小)和线性时间验证机制。在可扩展性方面,zk-STARKs 提供了zk-SNARKs 的另一种替代方案,它没有可信的设置,只依赖于坚不可摧的加密假设,尽管生成的证明大小是对数的规模(并且非常大:数百 kb)。
在诸如 Nervos Network 这样的多层加密货币生态系统的环境中,交互式证明能够将昂贵的证明端(Prover-side)计算搬到 Layer 2,同时只需要在 Layer 1 进行适当的验证端(Verifier-side)工作。这样的方法其实已经有人在研究,例如,在 Vitalik Buterin 的 ZK Rollup 协议[8]中:一个无需许可的中继将链外交易收集起来,并定期更新一个 Merkle 树根存储到链上。每个这样根的更新都伴随着一个 zk-SNARK,它表明只有有效的交易被累积到新的 Merkle 树中。智能合约会验证这些证明,并且只有在证明被验证有效时才允许更新 Merkle 根。
上面概述的结构应该能够支持比简单交易更为复杂的状态转换,包括 DEX、多重代币和隐私保护的计算。
5.6 基于 Layer 2 的经济模型
虽然 Layer 2 解决方案提供了巨大的可扩展性,但是这可能会对这些系统的代币经济设计提出挑战。
Layer 2 的代币经济可能会涉及对其关键基础设施(如验证者和瞭望塔)的补偿,以及特定于应用程序的激励设计。当有一个基于持续时间的付费模型时,挑剔的 Layer 2 基础架构往往能更加好地运转。在 Nervos Network 中,这种定价结构可以通过支付基于 CKB 机会成本的方法轻松实现。服务提供商可以通过 NervosDAO 向用户收取「安全保证金」的利息。Layer 2 的开发者可以将代币经济模型集中用于激励特定的应用程序。
在某种程度上,这种定价模型也正是用户为存储在 CKB 上的状态付费的方式。他们本质上是在向矿工支付存储费用,这笔费用会通过 NervosDAO 发放的通胀奖励分配给矿工。
6. Nervos Network
6.1 多资产价值存储平台的 Layer 1
我们相信 Layer 1 区块链必须被构建为一个价值存储平台。为了最大限度地实现长期的去中心化,它必须以 PoW 共识为基础,并且围绕状态存储占用而非交易费用来设计其经济模型。CKB 是一个基于工作量证明、多资产、价值储存的区块链,其编程模型和经济模型都是围绕状态而设计的。
CKB 是 Nervos Network 的基础层,具有最强的安全性和最高程度的去中心化。在 Nervos CKB 上持有和处理资产的成本是最高的,但是,它也提供了最高的安全性,并能够非常容易地访问网络中的存储资产,且允许最大程度的可组合性。CKB 最适合那些高价值资产的存储和长期资产的保值。
CKB 是专门为支持 Layer 2 协议而构建的 Layer 1 区块链:
· CKB 旨在补充 Layer 2 协议,并将重点放在安全性和去中心化上,而不是和 Layer 2 的目标相重叠,比如可扩展性。
· CKB 围绕状态而不是账户来建立其账簿模型。Cell 本质上是自我容纳的状态对象,可以通过交易被引用并在层与层之间传递。这对于分层结构来说非常理想,在层与层之间的引用和传递对象是状态片段,而不是账户。
· CKB 被设计成一个通用的验证机器,而不是计算引擎。这允许 CKB 作为一个加密法庭,来验证链下状态转换。
· CKB 允许开发者容易地添加自定义的密码学原语。这样 CKB 就不会过时,在未来也可以验证各种 Layer 2 解决方案生成的证明。
CKB 的目标是成为能够存储世界上最有价值的共同知识的基础设施,在 CKB 上可以部署一流的 Layer 2 生态系统,以提供最高的可扩展性的和最高效的交易。
6.2 通过 Layer 2 实现可扩展性
通过分层结构,Nervos Network 可以在 Layer 2 上扩展任意数量的参与者,同时仍可以保持去中心化和资产存储的重要特性。Layer 2 协议可以使用任何类型的 Layer 1 证明或密码学原语,从而在设计交易系统时提供了极大的灵活性和可创造性,以支持不断增长的 Layer 2 用户群。Layer 2 开发者可以在吞吐量、最终性、隐私和信任模型方面做出自己的权衡,以使得这些模型在其应用程序和用户使用场景中起到最好的作用。
在 Nervos Network 中,Layer 1(CKB)用于状态验证,而 Layer 2 负责状态生成。状态通道和侧链是状态生成的示例,然而任何类型的生成验证模式都应该被支持,例如零知识证明生成集。钱包也运行在 Layer 2 上,它可以运行任意逻辑,生成新的状态并将状态转换提交到 CKB 进行验证。Nervos Network 中的钱包会非常强大,因为它们是状态生成者,可以完全控制状态转换。
侧链对开发者非常友好,并提供了良好的用户体验。然而,他们需要依赖于验证者的诚实性。如果验证者有恶意的行为,那么用户就会有丢失资产的危险。Nervos Network 提供了一个开源且易于使用的侧链堆栈,以在 CKB 上启动侧链,该侧链堆栈由名为「Muta」的 PoS 区块链框架和基于它的侧链解决方案「Axon」组成。
Muta 是一个高度可定制的高性能区块链框架,旨在支持 PoS、BFT 共识和智能合约。它具有高吞吐量和低延迟的 BFT 共识「Overlord」,并可以支持不同的虚拟机,包括 CKB-VM、EVM 和 WASM。Muta 具有跨 VM 的互操作性,不同的虚拟机可以同时在一个 Muta 区块链中使用。Muta 大大降低了开发者构建高性能区块链的障碍,同时仍然保证了其最大限度地灵活性以定制他们的协议。
Axon 是一个用 Muta 构建的完整解决方案,它为开发者提供了一个基于 Nervos CKB 的完整并且能够立即使用的侧链,同时也提供了一个实用的安全和代币经济模型。Axon 方案使用 CKB 来对其资产进行安全性托管,并使用基于代币的治理机制来管理侧链验证者。
Axon 侧链和 CKB 之间,以及 Axon 侧链之间相互作用的跨链协议也将会被内置。借助 Axon,开发者可以专注于构建应用程序,而不是构建基础架构和跨链协议。
目前,Muta 和 Axon 都在大力的开发过程中。我们很快就会开源框架,Muta 和 Axon 的 RFC 也在不断完善中。
Layer 2 协议正在研究和开发领域蓬勃发展。我们预见到一个未来,所有的 Layer 2 协议都是标准化的,且可以实现无缝地互操作性。但是,我们需要承认的是,Layer 2 方案目前仍处于持续成熟的过程中,我们仍然需要不断地挑战它们所能做到的极限,并找到它们可以接受的权衡和取舍。我们已经看到了一些早期有前景的解决方案,但是仍然有大量涉及 Layer 2 设计的主题研究需要开展,例如互操作性、安全性和经济模型。在 CKB 主网启动之后,我们将会把大部分的研究工作投入到 Layer 2 协议中。
6.3 可持续性
为了长期的可持续性,Nervos CKB 设定了状态存储空间的上限,并对链上的存储进行收费,鼓励用户清除不需要的状态存储。设定有限的状态存储空间,能够保证全节点参与的门槛维持在较低的水平上,这样节点也可以在低成本的硬件上运行。大量全节点的参与增强了去中心化,进而提高了安全性。
Nervos CKB 根据时间对状态存储收取「状态租赁」费用,这缓解了许多区块链在「一次付费,永久存储」模式下所面临的公地悲剧。通过实行「目标通胀」,这种状态租赁机制能够带来更好的用户体验,同时也对状态存储征收了成本。
由于用户可以拥有他们自己的数据所占用的共识空间,所以这种通胀成本是有针对性的。该模型还包含一个允许用户将其状态从共识空间中删除的原生机制。再结合状态租赁的经济激励,状态大小始会终朝着网络参与者所需的最小数据量靠近。
能够让个人独立地拥有状态也能显著地降低开发者成本。开发人员只需要根据其应用程序所需的验证代码存储空间来购买足够的 CKByte,而不需要为了满足所有用户的状态需求而购买 CKByte。每个用户将使用自己的 Cell 去存储代币,并对自己的资产负全部责任。
最后,通过二级增发,状态租赁机制能为矿工提供持续不断的回报。这种可预测的收入能够激励矿工推进区块链的增长,而不是通过分叉有利可图的区块来获得交易费用。
6.4 利益对齐
Nervos CKB 的经济模型对齐生态系统中的所有参与者的利益。特别是代币价格上涨满足了所有人的目标:
矿工:代币价格上涨增加了矿工收入
用户:代币价格上涨吸引更多矿工参与从而使资产更安全
开发者:代币价格上涨为用户提供了更多的安全性,且不会显著提高开发人员的成本
代币持有者:代币价格上涨提高了代币价值
Nervos CKB 专为安全的价值存储设计,而不是为廉价的交易费用设计。这一关键定位将吸引有价值存储(Store of Value)偏好的用户,类似于比特币的用户社区,而不是吸引以交易媒介(Medium of Exchange)为偏好的用户。
交易媒介类的平台总是倾向于将区块链网络推向中心化,以追求更高的效率和更低的费用。对于保护网络的基础设施运营商(矿工或验证人)而言,如果没有显著的费用收入,安全性必须要通过通货膨胀来提供资金支持,或者直接出现资金不足的情况。通货膨胀对长期持有者而言是不利的,资金支持不足的安全性对于网络的任何利益相关者都是有害的。
然而,价值储存型的用户对于抗审查性和资产安全有着强烈的要求。他们依靠矿工来提供这些特性,并为他们提供补偿。在价值存储的网络中,这些不同的角色有着一致的利益。
虽然在其他网络中,长期持有者可能被认为是「投机者」,但代币持有者是 Nervos Network 总价值的直接贡献者。这些用户创造了对原生代币的需求,从而增加了网络的安全预算。
通过对齐所有参与者的激励机制,一个团结的 Nervos 社区就会成长起来,网络一致的经济系统也将能够防止硬分叉的出现。
6.5 价值捕获和价值生成
如果任何区块链想要在平台所保护的资产价值增长的同时,保持安全性,那么系统就必须有一种机制,能够在所保护的资产价值增加时捕获其价值。通过限定状态存储空间,CKB 让经过共识的状态存储空间成为一种稀缺的、由市场来定价的资源。随着对网络上资产存储的需求增加,状态存储空间(以及 CKB 的原生代币)的价值也将增加。CKB 是第一个能够直接为其原生代币积累价值的多资产平台。
作为一个价值保护平台,CKB 平台的内在价值取决于它能为其所保护的资产提供多少量级的安全性。随着担保资产价值的上升,CKB 经济模型的价值捕获机制能够自动地提高 CKB 的安全预算,以吸引更多的矿工资源,使平台更具安全性,从而提升平台自身的内在价值。这不仅对平台的可持续性非常重要,它还为平台的内在价值提供了一条价值增长的路径——随着平台变得更加安全,它对高价值资产的吸引力也会增强,从而产生更多的需求。很显然,这部分的价值会受限于区块链行业的总价值,但我们相信 CKB 将在这一需求中占据相当大的份额。
随着时间的推移,我们预计 CKB 的经济密度将会增加。CKByte 将被用于高价值的资产存储,而低价值的资产将转移到连接在 CKB 的区块链上,例如 Layer 2 侧链。与直接保护资产不同,CKB 可以被用作信任根,并通过比如几百字节的密码学证明来保护整个侧链的生态系统的安全。这类证明的经济密度非常高,随着 CKByte 的价格大幅上涨,会进一步支撑存储空间的需求曲线:就像一小块土地上建了一座摩天大楼,那么这一小块土地的经济密度就会显著地提高。
最后,通过 NervosDAO 的设计及它「通货膨胀屏障」的功能,长期代币持有者将始终保持其代币在总发行量中的固定百分比,这让原生代币本身成为了一个极好的价值存储标的。
6.6 跨越监管鸿沟
无需许可区块链允许资产发行和交易的完全去中心化。这就是它们的价值所在,但也是它们与现实世界的金融和司法体系不兼容的原因。
分层结构的出现可以使得在不受监管的、无需许可区块链上创建符合监管的部分。例如,用户可以将需要去中心化的资产存储在 Layer 1 上,享受这些资产的绝对所有权,还可以在 Layer 2 上处理现实世界的业务,在这一层,他们会受到监管和法律的约束。
以加密货币交易所为例——日本和新加坡等国已经向交易所颁发许可证,并制定了监管要求。符合监管的交易所或全球交易所的分支机构可以创建二层交易链,导入用户身份和资产,然后根据当地监管要求开展合法业务。
分层架构的区块链让现实世界资产的发行和交易成为可能。现实世界的资产可以通过受监管的 Layer 2 侧链流向区块链生态系统,进入无需许可的 Layer 1 区块链,从而使得这些资产能够加入到最大的可组合、去中心化的金融服务生态系统中,并且拥有最大化的价值。
在未来,Nervos Network 也将使用这类 Layer 2 侧链和应用程序作为大规模用户采用的基础,与该领域的领先公司合作。
Ref:
[1] Satoshi Nakamoto. “Bitcoin: A Peer-to-Peer Electronic Cash System”. 31 Oct 2008, https://bitcoin.org/bitcoin.pdf
[2] Vitalik Buterin. “Ethereum White Paper: A Next Generation Smart Contract & Decentralized Application Platform”. Nov 2013 http://blockchainlab.com/pdf/Ethereum_white_paper-a_next_generation_smart_contract_and_decentralized_application_platform-vitalik-buterin.pdf
[3] 比特币每笔交易的平均大小为 250 字节:
每个区块(每 10 分钟)大小:(2 * 250 * 7,500,000,000)/(24 * 6)= 26,041,666,666 字节;
区块链每天增长的大小:26,041,666,666*(24*6)= 3,750,000,000,000 字节;
区块链每年增长的大小:3,750,000,000,000 * 365.25 = 1,369,687,500,000,000 字节
[4] Gur Huberman, Jacob Leshno, Ciamac C. Moallemi. “Monopoly Without a Monopolist: An Economic Analysis of the Bitcoin Payment System”. Bank of Finland Research Discussion Paper No. 27/2017. 6 Sep 2017, https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3032375
[5] Miles Carlsten, Harry Kalodner, S. Matthew Weinberg, Arvind Narayanan. “On the Instabiliity of Bitcoin Without the Block Reward”. Oct 2016, https://www.cs.princeton.edu/~smattw/CKWN-CCS16.pdf
[6] Lewis Gudgeon, Perdo Moreno-Sanchez, Stefanie Roos, Patrick McCorry, Arthur Gervais. “SoK: Off The Chain Transactions”. 17 Apr 2019, https://eprint.iacr.org/2019/360.pdf
[7] Joseph Poon, Vitalik Buterin. “Plasma: Scalable Autonomous Smart Contracts”. 11 Aug 2017, https://plasma.io/plasma.pdf
[8] Vitalik Buterin. “On-chain scaling to potentially ~500 tx/sec through mass tx validation”. 22 Sep 2018, https://ethresear.ch/t/on-chain-scaling-to-potentially-500-tx-sec-through-mass-tx-validation/3477