Resposta a Incidentes em Detalhe
Produtos Solana em produção falham de maneiras que parecem semelhantes para os usuários (carteiras travadas, saldos zerados, envios falhados), mas exigem ações iniciais opostas dos engenheiros.
Busque em todas as páginas da documentação
Produtos Solana em produção falham de maneiras que parecem semelhantes para os usuários (carteiras travadas, saldos zerados, envios falhados), mas exigem ações iniciais opostas dos engenheiros.
Um provedor de RPC com limite de taxa não é um exploit de cofre. Um erro Custom de programa após uma atualização incorreta não é uma expiração de blockhash. Tratar cada dashboard vermelho como "tentar mais forte" consome minutos e, às vezes, fundos.
Esta página é o guarda-chuva da seção: como classificar incidentes, coletar evidências, conter danos, mitigar sem reescrever o histórico e fechar o ciclo com prevenção e Análise de Causa Raiz (RCA) sem culpa para programas Solana, dApps e backends.
Produtos Solana abrangem estado imutável da chain e sistemas mutáveis off-chain.
On-chain: programas, contas, mints, PDAs de cofres e autoridade de atualização residem em um cluster sob o consenso Agave. Uma vez que uma transação é finalizada, o ledger não oferece uma API de "desfazer". A mitigação envolve pausar, congelar, reimplantar, migrar ou compensar.
Off-chain: provedores RPC, indexadores, frontends, backends, carteiras e ferramentas de operação decidem o que os usuários podem ver e submeter. A maioria das "interrupções" que os usuários relatam começa aqui.
Um incidente é qualquer degradação inesperada de segurança, controle de fundos, correção ou disponibilidade que requer uma resposta coordenada além da depuração normal. A severidade geralmente acompanha os fundos do usuário em risco, a duração e o raio de impacto:
| Sev | Sinal Típico | Exemplo |
|---|---|---|
| 1 | Perda ativa de fundos ou pausa crítica necessária | Drenagem por exploit, autoridade comprometida |
| 2 | Caminho principal do produto quebrado, fundos não drenando ativamente | Pico de erros de programa após deploy incorreto |
| 3 | Degradação parcial com workaround | Latência de RPC em uma única região, uma instrução falhando |
| 4 | Localizado ou cosmético | Discrepância no explorador, UI não crítica |
Papéis superam heroísmo. Nomeie um comandante de incidente (decide a sequência), um líder de comunicação (usuários e stakeholders recebem fatos, não especulação) e líderes de domínio (programa, cliente, infraestrutura). Um canal para decisões; uma linha do tempo em UTC com assinaturas e slots.
Evidências são o elo específico do Solana entre as classes de falha. Capture cedo:
Sem essa cadeia, as pessoas debatem anedotas enquanto o atacante ou a tempestade de 429 continuam.
As páginas irmãs da seção cobrem cada aspecto da máquina:
Esta página mantém todo o ciclo em vista.
Incidentes entram por meio de alertas (velocidade de TVL, taxa de erro, latência de slot, 429s), relatórios de usuários, mensagens de whitehat ou anomalias no explorador. O primeiro trabalho é classificar, não corrigir:
Sintoma
|
v
Pacote de evidências (sig, slot, programa, RPC, fundos?)
|
+-- Tx / sim / Custom / CU / contas --> caminho de tx falhada
+-- 429, latência, desconexão WS, UI em branco para múltiplos usuários --> caminho RPC
+-- Saídas inesperadas, abuso de CPI, transações de autoridade --> caminho on-chain
+-- Pico de erro pós-deploy, ID de programa incorreto --> caminho de deploy/clienteTransações falhadas deixam logs, saída de simulação e códigos de erro Anchor ou nativos. Simule com @solana/kit 7.0.0 (simulateTransaction, logs, unitsConsumed) antes de reenviar. Atualize o blockhash; mapeie Custom: N para o enum do programa; separe o erro do usuário do bug do programa e do limite de computação. Tentar novamente cegamente com a mesma mensagem desatualizada multiplica o ruído e as taxas.
Interrupções de RPC e infraestrutura se manifestam como saldos zerados, "conta não encontrada", confirmações travadas ou desconexões em massa do WebSocket. Ações primárias: verificar a saúde dos provedores (latência de slot, hash de genesis, orçamentos de erro), failover de leituras e escritas, abrir disjuntores para que as novas tentativas não causem cascata, e evitar declarar um exploit on-chain quando a chain está bem e sua borda não está.
Incidentes on-chain (exploits, comprometimento de autoridade, bugs críticos de lógica) exigem caminhos de pausa pré-construídos, autoridade de atualização multisig ou fria e preservação de evidências. Transações de drenagem não podem ser revertidas; a contenção é parar o sangramento, tirar um snapshot dos endereços e preparar um patch verificado ou rotação de autoridade. Assuma exploração ativa até que os logs provem o contrário.
Deploys incorretos e incompatibilidades de cliente ficam entre o programa e o frontend: ambiente de cluster errado, feature flag ativada para uma instrução quebrada, ou uma atualização que passa nos testes, mas falha sob os formatos de conta da mainnet. Kill switches de frontend são frequentemente mais rápidos que o rollback do programa; ambos podem ser necessários.
"Rollback" no Solana é uma metáfora de produto, não um retrocesso do ledger. Alavancas práticas:
| Alavanca | Velocidade | Escopo | Notas |
|---|---|---|---|
| Feature flag / kill switch do cliente | Rápido | Novos fluxos de usuário | Impede novos caminhos incorretos |
| Failover RPC multi-provedor | Rápido | Disponibilidade | Não corrige bugs de programa |
| Pausa / flag de modo do programa | Médio | Instruções mutantes | Deve existir antes da crise |
| Rotação de autoridade | Médio | Plano de controle | Multisig de emergência |
Reimplantação de .so verificado anterior | Médio-lento | Lógica do programa | Hash de build verificável |
| Migração de estado / compensação | Lento | Saldos, reivindicações | Requer design e comunicação |
Ordem das operações sob pressão:
A autoridade de atualização e a administração da pausa são funcionalidades de produção. Se elas residem apenas em um laptop quente sem um runbook, você não tem resposta a incidentes; você tem esperança.
Canal interno: timestamps UTC, hashes de assinatura, IDs de programa, decisões e proprietários. Externo: atualizações factuais curtas (impacto, status da mitigação, ações do usuário). Não publique teorias de exploit não confirmadas ou chaves privadas em capturas de tela de "debug". Para Sev-1, planeje um resumo voltado ao cliente dentro de uma janela fixa após a contenção (a página irmã de RCA detalha o template).
Construa para resposta, não apenas para o caminho feliz:
GlobalConfig do Anchor 0.32.1 e equivalentes nativos).Equipes que entregam apenas trabalho de funcionalidade sem esses controles eventualmente os inventam durante um incidente, com custo máximo.
| Pergunta | Se sim | Playbook primário |
|---|---|---|
| Fundos saindo inesperadamente? | Conter Sev-1 | Resposta a incidentes on-chain |
| Muitos usuários falhando em apenas um provedor? | Failover | Interrupções de RPC e infraestrutura |
| A simulação mostra Custom / CU / contas? | Decodificar | Depuração de transações falhadas |
| A taxa de erro saltou logo após o deploy? | Mitigar | Rollback e mitigação |
| O caminho é instável apenas sob carga? | Taxas / pouso / RPC | Páginas de tx falhada + RPC |
Execute a matriz em ordem; paralelize apenas após a classificação para que engenharia e segurança não se atrapalhem.
Quando o canal de comunicação interno termina, o trabalho não acabou. Um postmortem sem culpa separa a causa imediata dos fatores contribuintes, registra o que funcionou bem e atribui itens de ação com proprietários e prazos. Checklists de prevenção convertem esses itens em portões de deploy de Nível 1, correções de Nível 2 em 30 dias e simulações de Nível 3 trimestrais (simulações de pausa, pouso sintético, monitoramento de autoridade).
A maturidade da resposta a incidentes é mensurável: tempo médio para classificar, tempo médio para pausar ou fazer failover, fração de Sev-1s com itens de ação concluídos e taxa de aprovação de simulações. As versões do stack também importam para as simulações: revalide scripts contra Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, Rust 1.91.1 e @solana/kit 7.0.0 após atualizações da toolchain para que os runbooks não se deteriorem.
Relatórios de whitehat, autoridades policiais, seguradoras e auditores podem precisar do mesmo pacote de evidências que seus engenheiros usam. Preserve logs, assinaturas e histórico de autoridade; não "limpe" exploradores ou rotacione chaves sem registrar o que foi comprometido. O design de segurança do programa (verificações de conta, higiene de CPI) reduz a frequência de incidentes; a resposta a incidentes reduz a severidade quando o design falha. Ambos são necessários.
É a prática coordenada de classificar falhas na chain e off-chain, conter danos a fundos e UX com alavancas pré-construídas, mitigar prospectivamente sem retrocesso do ledger e transformar cada evento em prevenção duradoura.
Revisado por Chris St. John·Última atualização: 15 de jul. de 2026