#vm #ckb


CKB’s Virtual machine

13 releases (7 breaking)

✓ Uses Rust 2018 edition

0.19.1 Mar 4, 2020
0.18.2 Dec 18, 2019
0.18.1 Nov 30, 2019
0.15.1 Jul 27, 2019
0.0.0 Nov 2, 2018
Download history 308/week @ 2020-02-06 348/week @ 2020-02-13 291/week @ 2020-02-20 327/week @ 2020-02-27 551/week @ 2020-03-05 266/week @ 2020-03-12 679/week @ 2020-03-19 413/week @ 2020-03-26 312/week @ 2020-04-02 446/week @ 2020-04-09 833/week @ 2020-04-16 659/week @ 2020-04-23 582/week @ 2020-04-30 461/week @ 2020-05-07 500/week @ 2020-05-14 326/week @ 2020-05-21

1,671 downloads per month

MIT license

11K SLoC

Ruby HTML 5K SLoC // 0.1% comments C 4.5K SLoC // 0.2% comments GNU Style Assembly 1K SLoC // 0.0% comments

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 https://opensource.org/licenses/MIT.

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 CONTRIBUTING.md, and security policy is described in SECURITY.md. 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 https://github.com/nervosnetwork/ckb-vm
$ 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).