Nervos Network 2020 年发展路线图
2019 年,我们达成了多个 Milestone,其中意义最大的,是通过社区,以去中心化的方式成功启动 CKB 主网「Lina」。这意味着我们向自己的目标——去中心化的加密经济世界,迈出了坚实的一步。自项目成立以来,我们从头开始构建并如期交付了功能完备的 Layer 1 区块链,而且期间没有对任何功能做出妥协。
CKB 是一个全新的基于 PoW 共识机制的底层区块链。它进行了一系列的自主创新,包含独家定制的共识机制、哈希算法、编程模型、虚拟机以及经济模型等。而且工程实践证明,这些创新都是可用的。在实现过程中,我们始终坚持最初的目标,并且毫不妥协,这在当前区块链世界并不多见。对此,我们感到非常自豪。
但同时,我们也知道,这一切仅仅只是开始。2020 年,我们将着眼于更大的目标,并且正兴奋地朝着这个目标迈进。
在此,我们将概述 2020 年 Nervos Network 关注的重点领域,虽然可能并不全面,但它所涵盖的三个方向对实现我们的长期目标至关重要,它们是:开发、研究以及社区。
开 发
2020 年,我们除了会持续地进行 CKB 协议层和链上开发的改进外,还将重点关注以下两个链下领域:开发者体验和 Layer 2。核心开发团队会不断提升开发者体验,提供更多可选的智能合约编程语言,更强大的 RPC,更成熟的 SDK 以及更完备的文档。
Muta 框架
让世界上任何一个人都可以启动属于他们自己的区块链平台,同时享受 CKB 所带来的安全性和最终性。
”
Muta (https://github.com/nervosnetwork/muta) 是一个高性能的区块链框架,同时适用于公有链和联盟链。开发者可以基于 Muta 定制开发 PoA、PoS 或者 DPoS 链,并且可以使用不同的经济模型和治理模型进行部署。
Muta 和 CKB 之间的互操作性,可以让任何采用 Muta 框架的区块链都能和 CKB 进行跨链交互,同时享受到基于 PoW 的 CKB 底层所提供的高安全性和最终性。
在其架构中,Muta 分为两层:RISC-V Runtime(应用层)和核心引擎(基础层)。我们希望通过分层的方式找到可用性、稳定性、高性能和安全性之间的平衡。
RISC-V Runtime(应用层):在这一层,开发者可以使用 Minits 来扩展 Muta 框架,包括:业务逻辑、治理和准入许可。
Bindings:这是 RISC-V Runtime 和核心引擎之间的桥梁。通过封装底层细节来公开一些高级 API,允许 RISC-V Runtime 在运行时访问和调用核心引擎。
核心引擎:该层是核心框架,用 Rust 编写。除了包括某些核心功能,比如 Overlord(共识机制)、交易池、P2P 等,它还允许自定义插件,RISC-V Runtime(比如 IO)可以通过 Bindings 调用这些插件,并且可以使用内置服务开发特定业务逻辑的区块链,获得更高的性能。
Muta 是 Nervos 网络的一个重要分支,它利用 CKB 作为价值和安全之锚来扩展使用场景和可扩展性。例如,Nervos 基金会与火币集团合作开发的火币公链 (https://github.com/HuobiGroup/huobi-chain),就是基于 Muta 框架实现的监管友好的去中心化金融服务。Muta 将会在 Nervos 网络的大规模应用中发挥先锋作用。
Muta 已经开源,并于 2019 年发布了供社区和企业使用的版本。下一步,我们将提高 Muta 的可用性和功能性,让 Muta 真正成为那些希望部署 PoA/PoS/DPoS 区块链的用户和企业的首选。
用户自定义 Token(UDT)标准
为在 CKB 上实现 UDT 创建基础——打造一个全新的资产创建平台,其中的每一个 Token 都是一等公民(First-class asset)。
UDT(用户自定义 Token)是高性能加密经济的元件。在 CKB 上实现 UDT 的原理和在以太坊或其它多数区块链平台上都完全不同。
其他 UDT 设计,比如 ERC20,在同一代码块中混合了逻辑代码和用户余额,并且需要为不同的 Token 部署不同的合约。这不仅增加了不兼容的风险,也丧失了自我管理的灵活性。
而在 CKB 上,业务逻辑和用户数据是相互独立的。所有 UDT 共享相同的基础代码,用户在链上独立地拥有自己的余额(而无须集中在某个智能合约中)。这种结构让 CKB 上所有的 UDT 都能够成为「一等公民」,同时这些 Token 的可拓展性也因此得到了极大的提升。
此外,CKB 的 cell 模型支持开放式交易,就像比特币上的各种 SIGHASH 类型 (https://bitcoin.org/en/glossary/signature-hash) ,只要用户的意图没有被更改,就可以允许他人通过加入一个新的输入或者输出来修改他的原始交易。
UDT 标准由基础逻辑、交易格式、客户端用户交互过程和扩展规则等组成。它的开发会比基于账户模型的 Token 开发更加复杂,但是鉴于它所提供的灵活性和潜在用例,似乎也在情理之中。根据社区共识的情况,UDT 标准将会在第一季度末确定并投入使用。
Neuron 钱包
任何人都可以通过 Neuron 钱包访问 Nervos Network 的完整功能 —— 包括一整套多资产功能和自定义组件。
Neuron (https://github.com/nervosnetwork/neuron) 是 Nervos CKB 默认的桌面钱包,它的主要功能将是 Token 转账和 Nervos DAO 的操作,而其它功能和应用将由社区和开发团队共同实现。但是,Neuron 还会涵盖另外两个前沿功能。第一,也是对 Neuron 来说最重要的新特性是支持 UDT 标准。用户通过 Neuron 钱包就可以进行发行、转账、接收或者销毁 UDT。
另一个 Neuron 将探索的重要功能是,如何充分利用用户自定义的类型脚本和锁脚本。CKB 默认的签名算法是 SECP256k1 的锁定脚本,而 UDT 标准将会作为类型脚本进行部署。在 CKB 上使用脚本是高度灵活的——任何开发者都可以部署新的锁定脚本或者类型脚本来扩展 CKB 的签名算法或者交易功能。Neuron 钱包将会显示这些新锁定脚本和类型脚本的用户界面,帮助用户更轻松地访问 CKB 和 CKB 上的 dApp。
现在,我们已经成功地将 CKB 全节点内置到 Neuron 钱包的应用程序中,用户无需自行运行节点或者通过命令行运行节点。除了上述的功能外,我们还将持续发布更新的版本,来解决任何已经确定的 Bug,并进行 UI 和 UX 的改进。
多语言智能合约
可以使用多种语言编程和编写智能合约。
我们计划构建多个使用高级语言或 DSL 的框架来促进 CKB 上智能合约的开发。
目前 C 是 CKB 上最主要的智能合约编写语言,因为 C 在 RISC-V 上的工具更加成熟。尽管如此,我们目前也支持使用 Ruby 和 JavaScript 来编写智能合约脚本,同时,我们还正在积极地寻找更适合编写智能合约的高级语言或者 DSL。我们将会通过两个不同的方向来解决这个问题:
从底层来讲,我们将更好地支持用 Rust 编写的智能合约。相比于 C 语言,在实现类似性能水平时,Rust 将会提供更高的安全保证。此外,区块链开发者都在非常积极地拥抱 Rust,很多区块链密码学领域最新的发展都是基于 Rust 进行开发,比如新的零知识证明和新的椭圆曲线算法。通过在 CKB 上更好地支持 Rust,我们可以确保 CKB 能够拥抱区块链领域加密技术的发展,并为之做出贡献。
从高层出发,我们也会研究高级语言,或者领域特定语言(DSL),为构建包含更多业务逻辑的智能合约提供便利。虽然用 Rust 或 C 编写的智能合约确实在类上提供了最佳的性能,但它们并不总是最容易的编程语言。虽然 Rust 确实比 C 前进了一大步,但有时候还是会非常麻烦,高级语言以及 DSL 可以完美地填补这一空白,并在牺牲一定性能的情况下,极大地加快了智能合约的发展速度。CKB 的设计方式,让我们完全可以先从高级语言开始,来获得更快的迭代速度,然后当性能问题凸显时,再切换到 Rust 或者 C 编写的智能合约,来获得更好的性能。
CKB-VM 优化
使虚拟机具有更高的性能和灵活性,以获得更好的用户体验并解锁新的潜在用例。
我们将重点实现 RISC-V 的扩展性(以及其他高价值的附加功能),并准备按照我们的发布计划进行内联部署(需要硬分叉),以及根据实际情况,当扩展规范达到稳定状态时进行部署。
目前 CKB VM(虚拟机)已经是 RISC-V 标准规范的一个成熟实现。当然,在未来仍有提升的空间。一个方向是继续在 CKB VM 中榨干最后一点性能。目前,已部署的 CKB VM 版本在很大程度上受到 CPU 的分支预测器的限制。通过研究现代 CPU 架构和编译器技术,可以继续改进 CKB VM 的性能。
另一个正在探索的方向是:CKB VM 通过对核心 RV64IMC 模型的实现,可以提供与普通计算机同样的灵活性,同时,RISC-V 还提供了一定的扩展性,通过提供更多的功能来更好地运行应用程序,并使其运行地更快。其中一些有趣的扩展是:
V (https://github.com/riscv/riscv-v-spec):
V 扩展提供向量扩展,可以用于支持一次多个大数的算术运算。有人可能会意识到,在区块链世界中,最近的趋势是将预编译的合约添加到区块链中,这样他们可以直接在本地代码中进行大量的添加,而不是在智能合约代码中进行加速。这种解决方案存在的一个问题是,添加的预编译合约将被限制在一个密码算法家族内。如果将来需要使用不同的原语来运行一个新的算法,那么将需要通过分叉来添加不同的预编译合约。然而,V 扩展在这里只定义了基础的灵活性操作。这意味着 CKB VM 将具有足够的灵活性,可以实现几乎任何带有 V 扩展的加密算法,同时还能确保具有最佳性能。
B (https://github.com/riscv/riscv-bitmanip):
另一方面 B 扩展提供了新的 bit-wise 操作,这也有益于加密算法。虽然原有的 RV64IMC 模型在引入 B 扩展之前,可以实现所有的新操作,但是从 B 扩展中提取这些常见的操作指令,可以提供更好的性能。例如,CLZ(count leading zero)在软浮点实现和位屏蔽操作中是非常常用的操作。在引入 B 扩展后,我们可以很容易地将这个新的指令映射到一个 x86_64 指令上,而在 RV64IMC 模型中实现相同的功能最少需要 10 条以上的指令 (https://github.com/riscv/riscv-gcc/issues/90)。
CKB 浏览器
深入 Nervos 网络的方方面面,充分利用数据和分析的力量。
轻客户端协议
支持移动端钱包、网站等的自我验证,且无需信任第三方
CKB 轻客户端可以被嵌入第三方软件中,实现任意软件与 Nervos CKB 的去信任交互。例如,一款支持 CKB 轻客户端协议的移动端钱包,可以让用户在其手机上确认 CKByte 或 UDT 交易,而无需信任第三方;支持 CKB 轻客户端扩展的浏览器,可以让用户验证网站的身份,反之亦然,网站也可以验证用户的身份;支持 CKB 轻客户端协议的电子邮件客户端,可以根据 CKB 链上的公钥验证 PGP 签名。
研 究
Layer 2 在研究和开发领域发展地非常迅速。2020 年,我们将在 3 个方向上进行探索:通道、基于链的协议和基于 zkp 的协议。我们正在积极地参与零知识证明协议的研究,并且在搭建基于 zkp 协议的原型及通道的原型。
零知识证明
为 Nervos 网络启用隐私保护协议。
后量子签名
为抗量子世界而做准备,确保 Nervos 能够始终走在前列。
数字签名让数字资产拥有所有权成为可能,更确切地说,数字签名让人们无法花掉别人的钱。从长远来看,良好的价值存储可以防止签名伪造的行为,尤其是防止将来在量子计算机上尝试进行的伪造行为。因此,一个重要的研究问题为:后量子签名方案的设计,以及迁移到这些方案的计划,同时最小化这种迁移对带宽和执行时间的影响。
高级数字签名
提供多方托管、实用性、隐私保护等。
门限签名可以实现数字资产的多方托管,也可以结合分布式密钥生成来设计 VRF; 聚合签名可以用于压缩区块大小; 环签名可用于保护发送人的隐私; 群签名结合了匿名性和可监督性,可以用于区块链的隐私保护; 盲化可验证加密签名可以用于解决公平合同签署应用中的隐私保护问题。
共识算法
展示我们创新和迭代的共识算法 NC-Max 的好处和优势。
开发者社区
2020 年,我们将投入大量的资源来发展开发者社区。Nervos Network 的成功在很大程度上取决于在平台上进行实验和构建的开发者们。
我们将通过两大计划来部署这些资源:Grants 计划和区域领袖计划,以此鼓励开发者们优化体验和进行 Layer 2 项目开发。除了这些计划外,我们还会大力发展:工程基础设施,关键协议和标准,生态系统集成,以及针对开发者的教育活动和黑客马拉松等。
Grants 计划
让世界各地的开发者都能够为 Nervos 网络的发展做出贡献。
我们将会通过清晰且透明的 Grants 计划来实现这一目标。在 Grants 计划中,人们可以为他们对自己所做的,帮助 Nervos 发展生态系统相关的工作申请支持和资金。Grants 的申请将遵循 RFC 流程,让社区和公众都能提供意见和反馈。Grants 计划将会于 2020 年第一季度开始接受基础设施类的 Grants,随后将会扩大接受范围并贯穿全年及以后:
基础设施类 Grants 社区类 Grants App 及用例类 Grants 市场、赞助及推广类 Grants 奖学金、助学金及个人类 Grants
区域社区领袖计划
联结全球重要的区块链枢纽和生态系统。
”
文 档
尽可能轻松地加入 Nervos 生态系统。
由 Nervos 基金会维护的 docs 网站将会以通俗易懂、简洁明了的方式,对不断发展的生态系统相关文档进行编写。您可以期望的示例:
部署标准 Token 的代码示例 所支持的编程语言的 SDK 文档 与 Layer 2 解决方案的接口 轻客户端和其它面向用户的解决方案
欢迎关注我们,并加入社区:
Nervos 官网: https://www.nervos.org Nervos 论坛: https://talk.nervos.org
Telegram: http://t.me/NervosNetworkcn GitHub: https://github.com/nervosnetwork
推荐阅读:
Nervos RFC 文档库:
https://github.com/nervosnetwork/rfcs