查看原文
其他

主网升级后,CKB 虚拟机有了哪些变化?

Nervos Blog 字节元 CKB 2022-05-31
原文链接:https://www.nervos.org/blog/virtual-machine-improvements


与 Nervos CKB 主网升级一起推出的还有 CKB-VM v1,它是可以在 Nervos Layer 1 上使用的虚拟机。这个新版本的 CKB-VM 提高了智能合约的执行效率,并增加了一些新功能供开发者在开发智能合约时使用。


同时,为了向后兼容,CKB-VM v0 仍然可用,开发者现在可以自行选择使用哪个版本的虚拟机来执行智能合约。



CKB-VM v1 亮点


RISC-V  Extension:即 RISC-V  的扩展指令集,将提高执行某些位运算(bit manipulations)的能力,从而提升性能、减小代码大小并降低功耗。这让 CKB-VM 有更好的性能,特别是在 x86_64 处理器上运行时。


宏融合(Macro-Op Fusio):通过对 RISC-V 指令集的更新,允许将两条或更多条简单指令融合成一条更复杂的指令,从而更有效地执行。结合 RISC-V B 扩展指令集,将大大减少某些操作的 cycle 运行数量。一个例子是对 BLS 数字签名的支持得到了极大的改善,目前加密行业正在越来越多地采用这种签名。


系统调用(Syscalls):增加了三个新的系统调用,分别是 VM Version、Current Cycles 和 Exec。VM Version 可以让智能合约检测它是在哪个虚拟机环境中执行的;Current Cycles 允许智能合约在执行过程中查看到目前为止已经消耗了多少 cycle;Exec 允许当前正在执行的智能合约去执行另一个智能合约,允许更多的模块化代码,提高智能合约连续执行的可能性。


新的地址格式:即「CKB2021 地址」,新的地址格式可以通过 hash type 值指定虚拟机的版本。



指定虚拟机版本


Nervos Layer 1 为智能合约的执行提供了 CKB-VM v0 和 CKB-VM v1。这使得以前的智能合约可以使用 CKB-VM v0 保持完全向后兼容,而新的智能合约可以使用 CKB-VM v1。


建议所有使用 Layer 1 的开发者学习如何指定虚拟机的版本,以便他们可以充分利用 CKB-VM v1 中的新功能,或者在需要时恢复到 CKB-VM v0 以实现向后兼容。


脚本的 hash type 值现在用于指定匹配条件和目标虚拟机。在主网升级之前,hash type 值只有“0”和“1”,现在新增了“2”。


Hash Type 0:依赖 hash type “0” 的智能合约将继续使用 CKB-VM v0。这是因为“0”的 hash type 意味着代码匹配是由 script code data hash 完成的,这意味着特定的二进制文件正在被执行。使用 hash type “0” 的现有智能合约将继续使用 CKB-VM v0,并完全按照主网升级前的方式运行。


Hash Type 1:依赖 hash type “1”的智能合约将使用 CKB-VM v1。这包括在主网升级之前和之后部署的所有智能合约。这是因为“1”的 hash type 意味着代码匹配是由 type script hash 完成的,这通常意味着脚本代码可由开发者自行升级。因为没有针对特定的二进制文件,而且存在升级路径,所以如果需要的话,开发者应该更新他们的代码,因为现在使用 CKB-VM v1 来执行了。


Hash Type 2:依赖 hash type “2” 的智能合约将使用 CKB-VM v1。这是因为 hash type “2”与类似于 hash type “0” 的特定二进制匹配。hash type “2” 在主网升级之前不可用,因此只有正在部署的新智能合约才能使用 hash type “2” 来指定 CKB-VM v1。



结语


我们追求持续的进步,致力于让 Nervos 智能合约平台处于技术领先的地位。这些更新不仅改进了 Nervos 平台,而且通过与 RISC-V 和 Rust 的进展保持同步,我们的生态将继续受益于它们的改进,同时尽可能地保持安全。


虚拟机的改进,其影响的是 Nervos 平台的最底层,除了在 Nervos 生态中基于 Layer 1 做开发的人员外,其他人在很大程度上是感知不到的。尽管普通用户现在可能感觉不到差异,但这些更新将继续让 Nervos 在未来提供最佳的用户体验方面具有优势。


推荐阅读:Janx: CKB 主网升级全方位解读



   



END



Nervos 网址:https://www.nervos.org/ 

中文电报群:https://t.me/NervosNetworkcn

中文推特:https://twitter.com/CKBMeta 

中文Discord:https://discord.gg/f2qa52tJnz 

《Nervos 入门手册》:ckborg.bit.host

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存