Saltar para o conteúdo
Voltar ao trabalho

Trabalho · Blockchain · 2026

Bibliotecas de controlo de acesso para uma camada de execução zkVM

Duas bibliotecas Rust para uma nova camada de execução que corre programas como guests RISC Zero: uma autoridade de administração e uma autoridade de congelamento, levadas de um requisito escrito até uma implantação verificada on-chain, com 60 testes e uma correção de CLI enviada a montante.

1. Contexto

Todos os programas numa nova camada de execução precisam dos mesmos dois blocos: uma forma de proteger instruções privilegiadas atrás de uma autoridade, e uma paragem de emergência. Sem uma versão partilhada e revista, cada equipa reconstrói ambos à mão, e cada reconstrução é uma nova oportunidade de errar. O alvo aqui é uma camada de execução ao estilo SVM cujos programas compilam para guests RISC Zero, com um modelo de contas baseado em hash, e por isso os padrões do mundo Solana tiveram de ser repensados para uma plataforma sem os seus pressupostos.

Construímos as duas bibliotecas fundacionais: uma autoridade de administração (definir, transferir e revogar um único admin, com uma guarda require_admin) e uma autoridade de congelamento, um disjuntor para o programa e para contas individuais, com o papel de congelamento gerido pelo papel de administração.

2. Uma anotação para adotar

As bibliotecas foram desenhadas para custo de adoção. Um programa adota o padrão completo ao acrescentar um atributo e fica sem lógica de controlo de acesso própria; os programas de exemplo no repositório protegem as suas próprias instruções desta forma, e o overhead medido no tamanho das transações é publicado ao lado.

A adoção, por inteiro
#[admin_authority]        // definir, transferir, revogar, require_admin
#[freeze_authority]       // disjuntor do programa e por conta
pub mod my_program { ... }

3. Verificado contra a cadeia

As bibliotecas passam 60 testes em integração contínua, e os testes foram o mínimo. Construímos os programas de exemplo como guests RISC Zero, empacotámo-los para a cadeia, corremos um sequenciador local e exercitámos on-chain todos os caminhos privilegiados. A biblioteca de administração percorreu o ciclo de vida completo: inicializar, definir sob o admin, transferir para um novo admin, o admin antigo rejeitado, revogar, e rejeitado outra vez depois da revogação. O disjuntor foi conduzido dos dois lados: congelado, uma escrita é rejeitada e o estado fica intacto; descongelado, a mesma escrita entra. Cada passo foi confirmado contra o estado on-chain e o log de execução do sequenciador, e a transcrição segue no repositório com os passos de reprodução.

4. O defeito na toolchain

Trabalhar tão perto da plataforma expôs um defeito no próprio CLI: era incapaz de submeter uma classe de argumento de instrução que o seu próprio gerador de código produz. Encontrámos a causa, escrevemos a correção, verificámo-la contra a cadeia em execução e preparámo-la como contribuição a montante; os mantenedores integraram mais tarde uma correção equivalente.

As duas bibliotecas têm licença dupla MIT e Apache 2.0.

5. O que levar daqui

  • 1

    Primitivas de controlo de acesso partilhadas são trabalho de segurança: uma implementação revista substitui uma reconstrução por equipa.

  • 2

    Os testes são o mínimo. A afirmação que conta é o ciclo de vida exercitado on-chain e confirmado contra o estado.

  • 3

    Numa plataforma jovem, orce a toolchain. Corrigir o CLI a montante fez parte de entregar as bibliotecas.