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.
#[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.