55个版本

0.24.12 2024年6月21日
0.24.9 2024年2月26日
0.24.6 2023年8月28日
0.24.4 2023年7月21日
0.0.0 2018年11月2日

#ckb 中排名4

Download history 502/week @ 2024-04-29 1100/week @ 2024-05-06 998/week @ 2024-05-13 698/week @ 2024-05-20 488/week @ 2024-05-27 714/week @ 2024-06-03 1234/week @ 2024-06-10 2035/week @ 2024-06-17 2221/week @ 2024-06-24 1210/week @ 2024-07-01 1186/week @ 2024-07-08 1283/week @ 2024-07-15 987/week @ 2024-07-22 1330/week @ 2024-07-29 800/week @ 2024-08-05 2090/week @ 2024-08-12

每月下载量5,264
41crate中使用(直接使用9个)

采用MIT许可协议

465KB
13K SLoC

Rust 9K SLoC // 0.1% comments GNU Style Assembly 4K SLoC // 0.0% comments

Nervos CKB 虚拟机

Build Status Build Status codecov


关于CKB VM

CKB VM是CKB中用作脚本虚拟机的RISC-V指令集的纯软件实现。目前它实现了32位和64位寄存器大小的完整IMCB指令。未来我们可能还会实现V扩展,以实现更好的加密实现。

许可协议

Nervos CKB根据MIT许可协议发布。有关更多信息,请参阅COPYING或查看https://opensource.org/licenses/MIT

开发流程

现在已在生产CKB主网上部署和使用。

develop分支定期构建和测试,但不保证完全稳定。CKB将使用经过测试且更稳定的CKB VM的发布版本。

贡献工作流程在CONTRIBUTING.md中描述,安全策略在SECURITY.md中描述。有关提出Nervos的新协议或标准的建议,请参阅Nervos RFC


如何构建

CKB VM目前主要在64位Linux、macOS和Windows上使用stable Rust版本进行测试。

# download CKB VM
$ git clone https://github.com/nervosnetwork/ckb-vm
$ cd ckb-vm
$ cargo build

您还可以运行测试

make test

CKB虚拟机已经包含了测试中使用的RISC-V二进制文件,因此您不需要RISC-V编译器来构建二进制文件。但如果您想使用自己的二进制文件进行实验,可能需要一个RISC-V编译器。《a href="https://github.com/riscv/riscv-tools" rel="ugc noopener">riscv-tools可以作为起点,如果您是GNU工具链的专家,您也可以使用RISC-V支持从源代码编译上游GCC,《a href="https://github.com/nervosnetwork/ckb-vm/blob/fd22e30b4bc5cb40869672a939b2b8d6bb54f85d/examples/is13.rs" rel="ugc noopener">这里有一个示例。CKB虚拟机使用标准的RISC-V指令和ELF二进制格式,因此理论上任何兼容RISC-V的编译器都可以产生CKB虚拟机中使用的合约(尽管如果您发现破坏,非常欢迎提交错误报告)。

不同模式的说明

目前CKB虚拟机有2种不同的模式

  • Rust解释器模式
  • 基于汇编的解释器模式(ASM模式)

为了保持一致性,您应该只使用ASM模式。Rust模式更多地是为了辅助开发,我们从未在生产环境中使用过。在出现错误的情况下,Rust模式和ASM模式之间可能会有不一致的行为。

依赖关系

~2.6–3.5MB
~65K SLoC