
La vm di CKB, basata sull'architettura RISC-V open source
CKB VM è un'implementazione software pura del set di istruzioni RISC-V utilizzato come VM di scripting in CKB. Attualmente implementa le istruzioni IMCB complete sia per il supporto di registri a 32 bit che a 64 bit. In futuro potremmo anche implementare le estensioni V per abilitare migliori implementazioni crittografiche.
Nervos CKB è rilasciato secondo i termini della licenza MIT. Vedi COPYING per maggiori informazioni o consulta https://opensource.org/licenses/MIT.
Questo è ora distribuito e utilizzato nella mainnet di CKB in produzione.
Il branch develop viene regolarmente compilato e testato, ma non è garantito che sia completamente stabile. CKB utilizzerà versioni rilasciate di CKB VM che sono testate e più stabili.
Il flusso di lavoro per i contributi è descritto in CONTRIBUTING.md e la politica di sicurezza è descritta in SECURITY.md. Per proporre nuovi protocolli o standard per Nervos, consulta Nervos RFC.
CKB VM è attualmente testato principalmente con la versione stable di Rust su Linux a 64 bit, macOS e Windows.
# download CKB VM
$ git clone https://github.com/nervosnetwork/ckb-vm
$ cd ckb-vm
$ cargo build
Puoi anche eseguire i test:
make test
CKB VM ha già incluso i binari RISC-V utilizzati nei test, quindi non è necessario un compilatore RISC-V per compilare i binari. Tuttavia, se desideri giocare con i tuoi binari, potrebbe essere necessario un compilatore RISC-V. riscv-tools può essere un buon punto di partenza, oppure se sei un esperto di GNU toolchain, potresti anche compilare il GCC upstream dal sorgente con supporto RISC-V, qui c'è un esempio. CKB VM utilizza istruzioni RISC-V standard e il formato binario ELF, quindi teoricamente qualsiasi compilatore compatibile con RISC-V è in grado di produrre contratti utilizzati in CKB VM (ma i bug report sono molto benvenuti se trovi rotture).
Attualmente CKB VM ha 2 modalità diverse:
Per un comportamento coerente, dovresti utilizzare solo la modalità ASM. La modalità Rust è sviluppata maggiormente per assistere lo sviluppo e non è mai stata utilizzata in produzione da noi. In caso di bug, potrebbero esserci comportamenti incoerenti tra la modalità Rust e la modalità ASM.