
виртуальная машина CKB, основанная на открытой архитектуре RISC-V
CKB VM — это чисто программная реализация набора инструкций RISC-V, используемая в качестве VM для скриптов в CKB. В настоящее время он реализует полный набор инструкций IMCB как для 32-битных, так и для 64-битных регистров. В будущем мы также можем реализовать расширения V для улучшения реализации криптографии.
Nervos CKB выпускается под лицензией MIT. См. COPYING для получения дополнительной информации или см. https://opensource.org/licenses/MIT.
В настоящее время это развернуто и используется в основной сети CKB (mainnet).
Ветка develop регулярно собирается и тестируется, но не гарантируется, что она полностью стабильна. CKB будет использовать релизные версии CKB VM, которые протестированы и более стабильны.
Рабочий процесс внесения вклада описан в CONTRIBUTING.md, а политика безопасности — в SECURITY.md. Чтобы предложить новый протокол или стандарт для Nervos, см. Nervos RFC.
CKB VM в настоящее время тестируется в основном со стабильной версией Rust (stable) на 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 toolchain, вы также можете скомпилировать вышестоящий GCC из исходников с поддержкой RISC-V, здесь находится пример. CKB VM использует стандартные инструкции RISC-V и формат ELF-бинарников, поэтому теоретически любой совместимый с RISC-V компилятор может создавать контракты, используемые в CKB VM (однако, если вы обнаружите несовместимость, сообщения об ошибках приветствуются).
В настоящее время CKB VM имеет 2 различных режима:
Для согласованного поведения следует использовать только режим ASM. Режим Rust разработан больше для помощи в разработке и никогда не использовался нами в продакшене. В случае ошибок возможны несовместимые поведения между режимом Rust и режимом ASM.