
Le vm de CKB, basé sur l'ISA RISC-V open source.
CKB VM est une implémentation purement logicielle du jeu d'instructions RISC-V utilisé comme VM de script dans CKB. Actuellement, elle implémente l'ensemble des instructions IMCB pour les registres de taille 32 bits et 64 bits. À l'avenir, nous pourrions également implémenter les extensions V pour permettre de meilleures implémentations cryptographiques.
Nervos CKB est publié sous les termes de la licence MIT. Consultez COPYING pour plus d'informations ou rendez-vous sur https://opensource.org/licenses/MIT.
Ce logiciel est désormais déployé et utilisé en production sur le mainnet CKB.
La branche develop est régulièrement construite et testée, mais n'est pas garantie d'être complètement stable. CKB utilisera des versions publiées de CKB VM qui sont testées et plus stables.
Le processus de contribution est décrit dans CONTRIBUTING.md, et la politique de sécurité est décrite dans SECURITY.md. Pour proposer un nouveau protocole ou standard pour Nervos, consultez Nervos RFC.
CKB VM est actuellement principalement testé avec la version stable de Rust sur Linux 64 bits, macOS et Windows.
# télécharger CKB VM
$ git clone https://github.com/nervosnetwork/ckb-vm
$ cd ckb-vm
$ cargo build
Vous pouvez également exécuter les tests :
make test
CKB VM inclut déjà les binaires RISC-V utilisés dans les tests, vous n'avez donc pas besoin d'un compilateur RISC-V pour construire les binaires. Cependant, si vous souhaitez utiliser vos propres binaires, un compilateur RISC-V peut être nécessaire. riscv-tools peut être un bon point de départ, ou si vous êtes un expert de la chaîne d'outils GNU, vous pouvez également compiler GCC amont à partir des sources avec le support RISC-V, ici un exemple. CKB VM utilise des instructions RISC-V standard et le format binaire ELF, donc théoriquement, tout compilateur compatible RISC-V peut produire des contrats utilisés dans CKB VM (les rapports de bogues sont les bienvenus si vous rencontrez des problèmes).
Actuellement, CKB VM dispose de 2 modes différents :
Pour un comportement cohérent, vous devez utiliser uniquement le mode ASM. Le mode Rust est développé davantage pour faciliter le développement, et n'est jamais utilisé en production par nos soins. En cas de bogues, des comportements incohérents peuvent survenir entre le mode Rust et le mode ASM.