CKB VM 是 RISC-V 指令集的纯软件实现,用作 CKB 中的脚本虚拟机。目前,它实现了完整的 IMCB 指令集,支持 32 位和 64 位寄存器大小。未来,我们可能还会实现 V 扩展以支持更好的加密实现。
Nervos CKB 根据 MIT 许可证发布。有关更多信息,请参见 COPYING 或 https://opensource.org/licenses/MIT。
目前已在生产环境的 CKB 主网上部署和使用。
develop 分支会定期构建和测试,但不能保证完全稳定。CKB 将使用经过测试且更稳定的 CKB VM 发布版本。
贡献流程在 CONTRIBUTING.md 中描述,安全策略在 SECURITY.md 中描述。要提出新的协议或标准,请参见 Nervos RFC。
CKB VM 目前主要使用 stable Rust 版本在 64 位 Linux、macOS 和 Windows 上进行测试。
# download CKB VM
$ git clone https://github.com/nervosnetwork/ckb-vm
$ cd ckb-vm
$ cargo build
你也可以运行测试:
make test
CKB VM 已包含测试中使用的 RISC-V 二进制文件,因此你不需要 RISC-V 编译器来构建二进制文件。但如果你想使用自己的二进制文件,则可能需要 RISC-V 编译器。riscv-tools 是一个不错的起点,或者如果你是 GNU 工具链的专家,也可以从源代码编译支持 RISC-V 的 upstream GCC,这里 是一个示例。CKB VM 使用标准 RISC-V 指令和 ELF 二进制格式,因此理论上任何与 RISC-V 兼容的编译器都能生成 CKB VM 中使用的合约(如果在某些情况下遇到问题,欢迎提交 bug 报告)。
目前 CKB VM 有两种不同的模式:
为了行为一致性,你应该只使用 ASM 模式。Rust 模式更多的是为了辅助开发而开发的,我们从未在生产环境中使用过它。在出现 bug 的情况下,Rust 模式和 ASM 模式之间可能存在不一致的行为。