Vamos nos aprofundar na versão v0.21.0 do Cartesi Machine Emulator. Esta atualização é bem rica. Ela inclui: uma documentação totalmente nova sobre o “jogo de verificação” (verification game), ferramentas de CLI para executar por conta própria o fluxo de provas de fraude e melhorias na infraestrutura para aumentar a velocidade da camada de estado e sua persistência. A seguir, os detalhes:🧵↓
https://fxtwitter.com/cartesiproject/status/2089698617829597516

1/ A documentação foi totalmente reescrita e movida para o repositório de código do emulador, com uma nova seção explicando o “jogo de verificação” passo a passo. Quer entender a mecânica subjacente do proof de fraude da Cartesi? Comece por aqui: https://github.com/cartesi/machine-emulator/blob/v0.21.0/doc/README.md

2/ O CLI agora consegue calcular hashes de computação (computation hashes), rastrear a Merkle tree de saídas e gerar provas para uma saída individual, além de provas da raiz Merkle da saída. Isso significa que você pode realizar via linha de comando grande parte das operações necessárias para executar o fluxo de prova de fraude.

3/ O recurso de intervalos de endereços de NVRAM permite que as aplicações, via driver Linux UIO, façam mapeamento direto de seu estado para um intervalo de endereços físicos. O estado permanece persistente durante o avanço (advance state) e, portanto, não há custos de sincronização de cache de páginas do kernel; assim, mesmo com crescimento contínuo do estado da aplicação, a taxa de escrita continua eficiente.

4/ Máquinas armazenadas em modo rolante (Rolling stored machines): o CLI agora suporta avançar usando estados de máquinas armazenados em disco e fazer rollback (revert) por meio de snapshots clonados. Essas operações podem ser executadas localmente ou contra servidores remotos. Isso oferece uma solução de estado persistente para aplicações que não desejam manter o estado completo da máquina residente na memória.

5/ Mecanismo de avanço de estado fortalecido: agora cada avanço de estado termina com um resultado claro e verificável — ou seja, “aceito” (accepted), “rejeitado” (rejected), “pausado” (halted) ou “excedeu o limite de ciclos” (out of cycles). Isso é essencial quando a controvérsia entra na fase do “jogo de verificação”, pois nessa etapa cada resultado precisa ser verificável, e não apenas observável.

6/ Aviso para desenvolvedores: esta versão inclui algumas mudanças destrutivas, incluindo cabeçalhos públicos renomeados, flags de rollback (revert flag) refatoradas e o protocolo JSON-RPC atualizado. Essas mudanças não alteram o comportamento central do emulador, apenas significam que você precisa atualizar parte do código de chamada. Veja os detalhes completos no changelog. 7/ Esta publicação também inclui: novas ferramentas auxiliares em Lua (incluindo uma biblioteca de árvores de hash para construir protótipos do protocolo de prova de fraude), suporte a instruções RISC-V Zcb compactadas (necessário para kernels construídos com o GCC 14), auto-complete do bash para o CLI e garantias mais fortes de persistência de snapshots.

8/ Veja os detalhes completos do lançamento em: https://github.com/cartesi/machine-emulator/releases/tag/v0.21.0

Para os desenvolvedores, esta atualização foi feita pensando em vocês. Aproveitem para estudar a nova documentação do jogo de verificação, experimentar as ferramentas de prova do CLI e fazer perguntas ou dar feedback no Discord: https://discord.gg/cartesi

Reencaminhado: https://x.com/cartesiproject/status/2089698617829597516