7 月 16 日,随着 CKB v0.100.0 代码发布,意味着 Nervos CKB 第一次主网升级正式启动。
为了确保安全性,Nervos CKB 主网升级将会经过多轮测试和审计,最终升级预计在今年第四季度完成。升级完成后,新的 Nervos CKB 主网可以有效地实现更多的加密算法,对 dApp 开发者将更加友好。
Nervos CKB 的主网升级会通过硬分叉进行,针对社区提出的问题,CKB 核心开发团队分享了关于此次主网升级的细节,同时也欢迎大家在 GitHub 上查看这次主网升级包括的 RFC 并提出任何问题或者建议。
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 的更详细介绍,请参考这里:https://riscv.org/wp-content/uploads/2016/07/Tue1130celio-fusion-finalV2.pdf
-
在交易中可以进行多个 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-64 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 上发布了,欢迎大家提出建议/评论:
Nervos CKB 的主网升级需要矿工、钱包和交易所的支持,我们会尽最大努力与社区进行充分沟通,确保稳定而优雅的升级。
06 Q:你们将如何进行主网升级?
此次的主网升级将分为三个阶段:
第一阶段:RC1[3] 已于 7 月 16 日发布,里面包括了所有的功能和相应的工具,但不包括具体的升级时间(epoch),主要用于测试和调试工具。第一轮审计开始。开发者可以使用 Tippy 启动一条新的链来进行测试。
第二阶段(预计在 8 月份):RC2 将在 Aggron 测试网启动。第二轮审计开始。
第三阶段(预计在 9 月份):发布最终版本以及何时在主网上激活的 epoch 信息。
预计主网升级将在第四季度完成。
Ref:
[1] GitHub - riscv/riscv-bitmanip: Working draft of the proposed RISC-V Bitmanipulation extension