先人一步了解 Nervos CKB 的主网升级

376 阅读5分钟

7 月 16 日,随着 CKB v0.100.0 代码发布,意味着 Nervos CKB 第一次主网升级正式启动。

v0.100.0:github.com/nervosnetwo…

为了确保安全性,Nervos CKB 主网升级将会经过多轮测试和审计,最终升级预计在今年第四季度完成。升级完成后,新的 Nervos CKB 主网可以有效地实现更多的加密算法,对 dApp 开发者将更加友好。

Nervos CKB 的主网升级会通过硬分叉进行,针对社区提出的问题,CKB 核心开发团队分享了关于此次主网升级的细节,同时也欢迎大家在 GitHub 上查看这次主网升级包括的 RFC 并提出任何问题或者建议。 GitHub:github.com/nervosnetwo…

   

01 Q:硬分叉的主要原因是什么,是什么导致了要硬分叉?(即此时分叉是路线图的一部分,还是由其他的一些因素导致的?)

硬分叉是路线图中提前计划好的,目的是升级 CKB,加入新的功能,以及修复一些 bug。    

02 Q:主网升级对 CKB 的改进主要会体现在哪些方面?对开发者以及建立在 Nervos CKB 上的项目,预计会有哪些影响?

硬分叉对 CKB 的改进体现在很多方面:

  • 官方的 RISC-V B 扩展[1] 将会被引入 CKB VM,因此可以提供更高效的加密算法实现。随着 B 扩展的启用,复杂 lock script 的成本将被降低。(注:RISCV B 扩展指的是 RISCV 用于位运算加速的一个扩展指令集,目的是使用一条指令实现原本需要 2~3 条指令才能实现的位操作指令)

  • CKB VM 将引入一个新的概念,macro-op fusion[2]。从一个更高的视角来看 macro-op fusion,就是当人们一起使用某些 RISC-V 指令时,CPU 能够以更高效的方式一起执行它们。因此,CKB VM 将减少形成 macro-op fusion 指令模式的 cycle。请注意,现代编译器已经广泛地利用 macro-op fusion,所以你可能注意到的唯一结果,是 CKB VM 对智能合约收取的 cycle 比硬分叉前更少。关于 RISC-V 中 macro-op fusion 的更详细介绍,请参考这里:

    riscv.org/wp-content/…

  • 在交易中可以进行多个 dep 匹配。 CKB Cell 使用数据哈希或类型脚本哈希来间接匹配脚本二进制。存储二进制文件的 Cell 必须通过 Cell dep 添加。目前不可以在 CKB Cell dep 中进行多次匹配,以避免歧义。然而,如果同一个 Cell 在 Cell dep 中出现多次,通常通过 dep 组就可以安全地绕过这个错误。

  • 简化交易输入的 since 规则。 这一改进可以更容易地根据链上时间编写智能合约。

CKB VM 变化背后的一个主要原因(除了 Bug 修复)是减少开销。 CKB VM 已经是本地 CPU 上的一个薄抽象层。有了硬分叉,我们确实想把抽象层做得更薄:RISC-V B 扩展让我们可以直接将 RISC-V 指令映射到 x86-6 4 cpu 提供的本地指令上,而 macro-op fusion 则更深入地利用了我们 CPU 中的现代微架构。所有的这些努力都是为了让加密算法能够更有效地在 CKB VM 上运行,从而解锁更多 Nervos CKB 的潜在用例。    

03 Q:主网升级对 Nervos CKB 的成长和发展有什么帮助?

这次主网升级还包括了一些修复工作,比如以更干净的方式重新修复 CKB-VM 中的几个 bug。这些 bug 是在主网启动后发现的,目前已在主网上用临时解决方案修复了。清理将会让代码库更加健康,将来 CKB 更易于维护。

区块/交易版本的共识规则也会调整,让未来的软分叉更容易。当我们想为 CKB 添加新的功能时,这一调整将给我们更多的选择。    

04 Q:硬分叉后,有哪些功能或改进将成为可能?

硬分叉带来的其中一个主要改进是可以有效地实现更多的加密算法。举个例子,比如说 BLS 签名算法。由于算法的复杂性,BLS 虽然在理论上是可行的,但目前在 CKB 上会消耗太多的 cycle。在 B 扩展的帮助下,加上 macro-op,我们设法将 BLS 签名验证操作所消耗的 cycle 降低到 CKB 上可行的比例。这些支持 BLS 实现的技术,也可以移植并用于优化更多的算法,如 RSA、secp256r1 等。    

05 Q:关于硬分叉,还有哪些相关的细节需要让社区知道?

此前,我们把支持轻客户端协议 Flyclient 纳入到了硬分叉。在过去的几个月里,我们有好几个方案设计,但经过评估,我们认为最好推迟实施轻客户端协议 Flyclient,因为它的变化比较大,而且由于缺乏外部支持,现阶段的影响/效益不明确。我们会有另外一篇文章来解释这个问题,我们也会继续研究轻客户端协议。

此次硬分叉的大多数改进已经在 GitHub 上发布了,欢迎大家提出建议/评论: github.com/nervosnetwo…

Nervos CKB 的主网升级需要矿工、钱包和交易所的支持,我们会尽最大努力与社区进行充分沟通,确保稳定而优雅的升级。

   

06 Q:你们将如何进行主网升级?

此次的主网升级将分为三个阶段

第一阶段:RC1[3] 已于 7 月 16 日发布,里面包括了所有的功能和相应的工具,但不包括具体的升级时间(epoch),主要用于测试和调试工具。第一轮审计开始。开发者可以使用 Tippy 启动一条新的链来进行测试。

第二阶段(预计在 8 月份):RC2 将在 Aggron 测试网启动。第二轮审计开始。

第三阶段(预计在 9 月份):发布最终版本以及何时在主网上激活的 epoch 信息。  

预计主网升级将在第四季度完成。  

Ref:
[1] github.com/riscv/riscv…
[2] en.wikichip.org/wiki/macro-…
[3] github.com/nervosnetwo…

   

推荐阅读

今年 Nervos CKB 的硬分叉,会空投糖果吗?

Nervos 2021 年技术路线图  

在这里插入图片描述