5 月 16 日,由杭州市金融办指导,巴比特主办的 2019 杭州区块链周•Chainge 技术开放日正式拉开序幕。会议中,来自全国各地的近千名区块链爱好者齐聚一堂,共同探讨最新的区块链技术发展。
Nervos COO 吕国宁(Daniel)在开放日活动中,做了《Nervos CKB 下一代区块链底层基础设施》的主题分享。
Daniel 表示:公链未来的发展只有两个方向,一个是链上扩容,另一个是链外扩容。链上扩容是要做一条更强的链,但不可避免的要在一条链上做权衡和取舍。区块链的核心价值是提供信任,而它的未来一定是分层,需要由不同的层次解决不同的问题,在链上获得信任,通过链外获得更高的性能,最后以整体的方式达到最优的效果。
以下是来自现场演讲的内容精编,感谢巴比特的整理。
链上扩容 or 链外扩容?
2017 年至 2018 年出现了一波公链热潮,这些公链的技术纷繁复杂,但如果我们从更高的角度收敛来看,公链未来的发展只有两个方向,一个是链上扩容,另一个是链外扩容。
1.链上扩容
链上扩容有这样几条路,第一条路是「更大的区块」,BCH 就在做这件事;第二条路是「使用更快的共识算法」,因为大家发现一条链性能不够、TPS 太低,往往处理共识节点的增加会导致性能处理的瓶颈。
我们本着头痛医头、脚痛医脚的原则,当看到一个链里的某地方存在性能瓶颈,我们就用一个更强的技术替代它。比如有人认为区块链是一个单线系统,于是就有了第三条路「并行计算-Sharding 技术」;还有人觉得第四条路 DAG 这种新的拓扑数据结构,比链式结构更适合处理海量的数据、海量的交易。
其实所有的链上扩容方案都在实现一个目标:做一条更强的链。但是每一种技术方案在具体实现的时候都面临各种不同的取舍,每一种方案在带来更好的性能提升的同时,都会在其他方面做出一些妥协。
例如 Sharding 实现复杂度的问题、一些共识算法或者扩容方案导致中心化的问题、DAG 理论和工程缺乏检验的问题等等。
2.链外扩容
我们看到现在产生了很多链外扩容方案,比如:闪电网络、状态通道、Plasma、Truebit 等等,但链外扩容也存在一个问题:打个比方,假如我们要买一个手机,卖家告诉我们在这个手机上,今天以前发布的所有手机应用都能够安装和使用,但无法安装和使用今天之后发布的 APP,那么我们还会购买这个手机吗?
现在的二层扩容方案都可以在用户体验、TPS、性能上面切换自如,但最大的瓶颈来自于一层网络的不支持。
如何让一层网络更好的支持它们呢?这可能需要通过一次次的硬分叉,而每做一次硬分叉,都需要通过漫长的社区共识,并且能够做的升级和优化也只能是小部分。
区块链的设计方法学
经过上述的思考,我们总结了一套自己的区块链设计方法学,主要包含下面个方面。1.区块链的核心价值是什么?
我们认为,区块链的核心价值是提供信任。基于这一点,我们可以得出一个衍生的推论:区块链是通过全局共识的方式实现信任,而全局共识必然是一个很慢、很贵的东西。
「没有共识算法能比没有共识的共识算法更快。」这句话的意思是说分布式、去中心化系统的共识,不可能做得比中心化的共识更快。所以,区块链最应该考虑的是如何能够把信任的价值发挥出来。
2.区块链系统未来一定是分层
从架构的观点来看,将一个系统的整体功能分层或分解,交给不同的功能层或是功能组件去处理,是一种优于将所有功能都耦合在一个单体中的设计模式。
我们认为这个观点也适用于区块链,把网络分成不同的层次,由不同层次解决不同问题,最后把这些层次系统合在一起,以整体的方式达到最大的效果。
3.考虑不同层次的需求
如果未来区块链是一个分层网络,那么我们就需要思考,这个网络中每一个层次的角色。
我们认为,上层的核心角色是用来提供更高的性能,更好的用户体验,用它来解决实际场景的业务需求。而底层(我们称之为 Layer 1)需要做的是为系统提供极致的安全性和去中心化,以保障上层应用的安全。
4.底层协议设计充分为上层优化
当我们理清楚 Layer 1 和 Layer 2 之间的关系时,就需要重新审视我们在做底层设计的时候,该做哪些事情?
底层该做的事情,是在不牺牲安全性和去中心化的前提下,充分地为上层做优化。
在这张图中,分割线之上的是 Layer 2,线下是 Layer 1,Layer 2 负责性能,Layer 1 专注于去中心化(Decentralization)和安全性(Security)。
也就是说,绝大部分的计算、存储、网络传输发生在 Layer 2,只有在 Layer 2 的运营节点作恶,产生信任问题时,用户才需要与 Layer 1 交互,这时,Layer 1 就相当于提供仲裁的法院,由此保障 Layer 2 上协议的执行,充分地为上层做优化。
Nervos CKB 的技术特点
基于这样的思考,我们认为 Layer 1 的底层需要做以下四件事:
1.资产管理和存储模型
首先,Layer 1 和 Layer 2 之间需要保证安全的传递。平台不光要保证平台自身 Token 的资产安全,同样也需要让用户可以在平台上发行自定义资产,并且保证用户自定义资产的安全。
我们可以想一下,在以太坊上发行的 ERC-20 Token,谁会保证它的安全性?
其次,我们有必要支持用户完成自定义功能。在设计底层账户模型的时候,应该以资产为导向,只有这样才能更好的把用户的资产映射到上层网络上做交易、做业务、做应用,最后也能更加容易的返回到底层做清算。
所以我们借鉴了比特币 UTXO 的设计思路,设计了具有独特特点的 CKB 账户模型(Nervos Native Token 名称为 CKB)。
另外,除了发行资产、映射资产之外,当 Layer 2 的用户需要把资产返回到底层进行网络清算时,会提交相关的密码学证据,这时就需要底层网络对密码学证据的数据具有存储和验证能力,所以 Layer 1 必须要做好资产管理和具备通用的存储模型。
2.CKB-VM 虚拟机
所有的区块链都需要虚拟机。在设计或选用虚拟机时,我们需要想清楚区块链的定位是什么,是在应用层做一个高级语言支持的虚拟机,还是在底层做保护系统安全的虚拟机?
我们认为 Layer 1 的虚拟机应该足够安全、足够灵活,并且具有很强运行期的透明性。这就需要保证在虚拟机里执行的每一个指令,都能够非常容易地计算出它的成本。
这一点对于底层的经济模型非常重要,所以我们选用更底层的 RISC-V 硬件 CPU 指令集来实现 CKB 的虚拟机。简单的说,我们的虚拟机就像一个硬件的 CPU 在运行。
3.NC-Max PoW 共识算法
为了让底层更加安全,我们使用的是 PoW 共识算法。最近,有很多人在讨论 PoW 和 PoS 算法谁更安全,事实上,目前并没有方法证明 PoS 算法比 PoW 更安全,但我们能确定的是,PoS 要比 PoW 更复杂,这种复杂性没有办法保证在理论的设计上和工程实现上都能做到安全。而 PoW 已经经过了生产环境长达十年时间的验证。
但我们没有因此止步,在保证安全的情况下,我们还需要压榨出硬件的每一滴油水,让性能有更大的提升。于是,我们提出了自己的共识算法:NC-Max。它会利用一个非常巧妙的方式压榨带宽的使用率,来提升算法效率,而 PoW 的算法归根结底是确保带宽如何高效被使用而不是被浪费。
4.经济模型
当我们把网络分为 Layer 1 和 Layer 2 的时候,还需要考虑如何将上层产生的价值捕获到底层,当这样的价值被捕获并沉淀的时候,它可以更有效的激励网络中的矿工得到更多的收益。当矿工得到更多的收益时,他们也会为网络带来更多的资源以保证全网的安全性。而全网安全边界提升时,实际上也能为上层提供更好安全保护,这是经济模型设计的核心。
经济模型设计的核心并不仅仅是针对每一次共识的达成,更重要的是推动整个生态能够朝着越来越繁荣的方向推进。
最后,分享一下我们 2019 年在做的事情,我们在 3 月 9 日发布了 Nervos CKB 经济模型设计提案,近期将发布测试网,6 月份会发布 Nervos CKB 共识算法的 Paper,预计 Q4 主网络上线,欢迎大家关注。
关于 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 经济模型用货币政策限制状态存储的增长,并实现智能合约平台的价值存储功能
关注我们
官网:https://www.nervos.org
论坛:https://talk.nervos.org
电报:http://t.me/nervosnetwork