Melhores Práticas de Entrega
Entrega empresarial na Solana significa que releases são reversíveis, bytecode é verificável e a observabilidade prova a saúde em minutos após o deploy. Essas práticas reduzem a taxa de falha de mudanças e o MTTR.
Como Usar Esta Lista
- Bloqueie a promoção para mainnet nas seções A e B
- Aplique C antes de qualquer lançamento público ou marco de TVL
- Revise D mensalmente com os líderes de plataforma e segurança
A - Verificável e Reversível
- Compile com
anchor build --verifiableno CI. Hash do artefato publicado em cada tag. - Retenha os últimos três arquivos
.sopor programa. O rollback não depende do laptop de um engenheiro. - Execute
solana-verifyantes e depois do deploy na mainnet. O hash corresponde às notas de release. - Documente a árvore de decisão de rollback vs. correção direta. Vinculada a cada ticket de deploy.
- Nunca faça deploy na mainnet a partir de um branch não mesclado. Proposta do Squad referencia o SHA do git.
B - Autoridade e Governança
- Autoridade de upgrade em multisig antes do lançamento. Chaves de emergência apenas em documentação de "break-glass".
- Separe carteiras de deploy por ambiente. Chaves de Devnet nunca tocam os programas da mainnet.
- Timelock em upgrades visíveis pela comunidade quando a política exigir. Caminho de emergência documentado.
- Instrução de pausa testada trimestralmente. Contenção em menos de 5 minutos em simulação.
- IDL semver nas notas de release. Clientes fixam tipos compatíveis de
@coral-xyz/anchor0.32.1.
C - Trem de Release Coordenado
- Janela de mudança única para atualizações de IDL que quebram compatibilidade. Programa + frontend + indexador em sincronia.
- Teste de fumaça em Devnet obrigatório. Fluxos principais são simulados e enviados antes da mainnet.
- Feature flags para novos caminhos de instrução. Guardião on-chain para flags críticas de segurança.
- Validação de ambiente falha a compilação se
PROGRAM_IDestiver faltando. Preview não pode ter como alvo a mainnet. - Equipe de indexador notificada pré-deploy. Plano de backfill para novas contas ou eventos.
D - Deploys Observáveis
- Transação sintética de pouso em até 15 minutos pós-deploy. Alerta em caso de falha.
- Dashboard de taxa de erro do programa por tag de release. Compare com a linha de base pré-deploy.
- Failover de RPC configurado no cliente de produção. URLs primária e secundária testadas.
- Métricas DORA revisadas mensalmente. Frequência de deploy, taxa de falha, tendências de MTTR.
- Itens de ação de pós-mortem fechados em até 30 dias. Ou escalonamento executivo.
FAQs
Qual seção bloqueia hotfix?
A autoridade de pausa B nunca é bloqueada; A-D completo é necessário antes de reativar o tráfego total após o conserto.
Tamanho mínimo de equipe para isso?
Dois engenheiros podem seguir A-B; C-D escalam com o tamanho do lançamento.
Builds verificáveis deixam o CI lento?
Custo pequeno versus custo de auditoria e incidentes; cacheie o diretório de destino.
Programas imutáveis?
Ainda aplique práticas de cliente e de operações; pule itens específicos de upgrade.
Como provar a observabilidade?
Link para o dashboard Grafana e execução de verificação sintética no ticket de deploy.
Upgrade do Agave no trem?
Adicione item de revisão SIMD; teste no Surfpool 0.12.0 antes do deploy do programa na mainnet.
Bloqueio de auditoria externa?
Sem fundos de usuário na mainnet até que as descobertas da auditoria de Gravidade Alta sejam fechadas ou aceitas em ADR.
Quem é o responsável pela conformidade da lista?
O líder técnico assina o ticket de deploy; segurança revisa B mensalmente.
Relação com DORA?
Essas práticas melhoram diretamente a taxa de falha de mudanças e o MTTR.
MVP inicial pode pular?
Nunca pule A-B se a mainnet contiver fundos de usuário; C-D podem ser implementados gradualmente.
Relacionados
- Métricas DORA para Web3 - meça resultados
- Estratégia de Upgrade de Programa - detalhe do upgrade
- Checklists de Prevenção - prevenção de incidentes
Versões de Stack: Esta página foi escrita para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0, e LiteSVM 0.6.x.