
CKB's vm, basiert auf der Open-Source-RISC-V-ISA
CKB VM ist eine reine Softwareimplementierung des RISC-V Befehlssatzes, der als Skript-VM in CKB verwendet wird. Derzeit implementiert es vollständige IMCB-Befehle für sowohl 32-Bit- als auch 64-Bit-Registergrößenunterstützung. In Zukunft könnten wir auch V-Erweiterungen implementieren, um bessere Krypto-Implementierungen zu ermöglichen.
Nervos CKB wird unter den Bedingungen der MIT-Lizenz veröffentlicht. Siehe COPYING für weitere Informationen oder siehe https://opensource.org/licenses/MIT.
Dies ist nun im CKB-Mainnet in der Produktion bereitgestellt und wird verwendet.
Der develop-Branch wird regelmäßig gebaut und getestet, ist aber nicht garantiert vollständig stabil. CKB wird veröffentlichte Versionen von CKB VM verwenden, die getestet und stabiler sind.
Der Beitragsworkflow ist in CONTRIBUTING.md beschrieben, und die Sicherheitsrichtlinie ist in SECURITY.md beschrieben. Um ein neues Protokoll oder einen neuen Standard für Nervos vorzuschlagen, siehe Nervos RFC.
CKB VM wird derzeit hauptsächlich mit der stable Rust-Version auf 64-Bit-Linux, macOS und Windows getestet.
# CKB VM herunterladen
$ git clone https://github.com/nervosnetwork/ckb-vm
$ cd ckb-vm
$ cargo build
Sie können auch die Tests ausführen:
make test
CKB VM enthält bereits RISC-V-Binärdateien, die in Tests verwendet werden, daher benötigen Sie keinen RISC-V-Compiler, um Binärdateien zu erstellen. Wenn Sie jedoch mit Ihren eigenen Binärdateien spielen möchten, könnte ein RISC-V-Compiler erforderlich sein. riscv-tools kann hier ein guter Ausgangspunkt sein, oder wenn Sie ein Experte für die GNU-Toolchain sind, können Sie auch den upstream GCC aus dem Quellcode mit RISC-V-Unterstützung kompilieren, hier ist ein Beispiel. CKB VM verwendet standardmäßige RISC-V-Befehle und das ELF-Binärformat, daher können theoretisch alle RISC-V-kompatiblen Compiler Verträge erstellen, die in CKB VM verwendet werden (Fehlerberichte sind sehr willkommen, wenn Sie Fehler finden).
Derzeit hat CKB VM 2 verschiedene Modi:
Für ein konsistentes Verhalten sollten Sie nur den ASM-Modus verwenden. Der Rust-Modus wird eher zur Unterstützung der Entwicklung entwickelt und von uns nie in der Produktion verwendet. Im Falle von Fehlern kann es zu inkonsistentem Verhalten zwischen dem Rust-Modus und dem ASM-Modus kommen.