Skip to content
CKB's vm, based on open source RISC-V ISA
Rust C Assembly Makefile
Branch: develop
Clone or download
Latest commit e5352aa Oct 23, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github chore: assign code owners [skip ci] (#58) May 20, 2019
benches chore: cfg criterion_group Sep 19, 2019
definitions chore: Bump version Oct 17, 2019
devtools/azure fix: Update PATH in the correct way for clang Sep 10, 2019
dynasm feat: Baseline JIT implementation Feb 20, 2019
examples fix: flow the reviews May 27, 2019
src fix: cargo fmt Oct 17, 2019
tests feat: Return loaded program consumed bytes Sep 24, 2019
.gitignore chore: add the is13 binary into .gitignore May 28, 2019
.travis.yml fix: Clippy changes for latest Rust stable version Sep 6, 2019 doc: add mailing list address to CONTRIBUTING Dec 26, 2018
COPYING doc: update COPYING Nov 20, 2018
Cargo.toml chore: Bump version Oct 17, 2019
Makefile feat: Leverage YASM for building assembly interpreter on windows Sep 9, 2019 doc: more doc fixes Nov 20, 2018
azure-pipelines.yml chore: Add simple azure pipeline CI files Sep 10, 2019 fix: clang PATH problem in CI Sep 10, 2019
clippy.toml Add initial VM skeleton Aug 15, 2018
codecov.yml feat: Set codecov coverage target Jun 21, 2019
rustfmt.toml Add initial VM skeleton Aug 15, 2018

Nervos CKB VM

Build Status Build Status dependency status codecov

About CKB VM

CKB VM is a pure software implementation of the RISC-V instruction set used as scripting VM in CKB. Right now it implements full IMC instructions for both 32-bit and 64-bit register size support. In the future we might also implement V extensions to enable better crypto implementations.


Nervos CKB is released under the terms of the MIT license. See COPYING for more information or see

Development Process

This project is still in development, it's NOT in production ready status.

The develop branch is regularly built and tested, but is not guaranteed to be completely stable. CKB will use released versions of CKB VM which are tested and more stable.

The contribution workflow is described in, and security policy is described in To propose new protocol or standard for Nervos, see Nervos RFC.

How to build

CKB VM is currently tested mainly with stable Rust version on 64-bit Linux, macOS, and Windows.

# download CKB VM
$ git clone
$ cd ckb-vm
$ cargo build

You can also run the tests:

make test

CKB VM has already included RISC-V binaries used in tests, so you don't need a RISC-V compiler to build binaries. However if you do want to play with your own binaries, a RISC-V compiler might be needed. riscv-tools can be a good starting point here, or if you are an expert on GNU toolchain, you might also compile upstream GCC from source with RISC-V support, here is an example. CKB VM is using standard RISC-V instructions and ELF binary format, so theoretically any RISC-V compatible compilers are able to produce contracts used in CKB VM(tho bug reports are very welcome if you find breakage).

You can’t perform that action at this time.