
VM do CKB, baseada na ISA RISC-V de código aberto.
CKB VM é uma implementação puramente em software do conjunto de instruções RISC-V usado como VM de script no CKB. Atualmente, implementa as instruções completas IMCB para suporte a registradores de 32 e 64 bits. No futuro, também poderemos implementar extensões V para possibilitar melhores implementações criptográficas.
Nervos CKB é lançado sob os termos da licença MIT. Consulte COPYING para mais informações ou veja https://opensource.org/licenses/MIT.
Isso já está implantado e em uso na mainnet de produção do CKB.
O branch develop é compilado e testado regularmente, mas não é garantido ser completamente estável. O CKB usará versões lançadas do CKB VM que são testadas e mais estáveis.
O fluxo de trabalho de contribuição é descrito em CONTRIBUTING.md, e a política de segurança é descrita em SECURITY.md. Para propor um novo protocolo ou padrão para Nervos, veja Nervos RFC.
CKB VM atualmente é testado principalmente com a versão stable do Rust em Linux 64 bits, macOS e Windows.
# download CKB VM
$ git clone https://github.com/nervosnetwork/ckb-vm
$ cd ckb-vm
$ cargo build
Você também pode executar os testes:
make test
CKB VM já inclui binários RISC-V usados nos testes, então você não precisa de um compilador RISC-V para compilar binários. No entanto, se quiser brincar com seus próprios binários, um compilador RISC-V pode ser necessário. riscv-tools pode ser um bom ponto de partida, ou se você for um especialista em GNU toolchain, também pode compilar o GCC upstream a partir do código-fonte com suporte RISC-V, aqui está um exemplo. CKB VM usa instruções RISC-V padrão e formato binário ELF, então teoricamente qualquer compilador compatível com RISC-V pode produzir contratos usados no CKB VM (mas relatórios de bugs são muito bem-vindos se você encontrar alguma quebra).
Atualmente, CKB VM possui 2 modos diferentes:
Para comportamento consistente, você deve usar apenas o modo ASM. O modo Rust é desenvolvido mais para auxiliar o desenvolvimento e nunca é usado por nós em produção. Em caso de bugs, pode haver comportamentos inconsistentes entre o modo Rust e o modo ASM.