Ataques de Gasto Duplo: Por Que Você Não Pode Apenas Olhar para "Enviado" nas Transações da Blockchain

Intermediário
Double-Spend Attacks: Why You Can't Just Look at "Sent" for Blockchain Transactions
Muitos usuários assumem que, assim que uma transação na blockchain é "enviada", os fundos chegaram com segurança. Mas a realidade não é tão simples. Para exchanges, comerciantes e usuários comuns alike, o que realmente importa não é apenas se uma transação foi transmitida, mas se ela foi confirmada por um bloco, se o número de confirmações é suficiente e se a cadeia subjacente apresenta risco de reorganização. Compreender esses conceitos é a base para prevenir "ataques de gasto duplo".
 
Este artigo concentra-se principalmente em redes de proof-of-work, onde a profundidade de confirmação e o proof-of-work cumulativo são centrais para o risco de reorganização. Outros sistemas de consenso utilizam mecanismos de finalidade diferentes.

O que é um ataque de gasto duplo?

Um "ataque de gasto duplo" é essencialmente uma tentativa de um atacante gastar o mesmo ativo digital duas vezes.
 
Para usar o exemplo mais intuitivo: um atacante possui apenas 1 BTC, mas inicia simultaneamente duas transações conflitantes. Uma paga um comerciante ou plataforma por um depósito, compra ou serviço; a outra envia os mesmos 1 BTC de volta para um endereço da carteira controlado pelo atacante. Como ambas as transações utilizam os mesmos fundos, apenas uma pode ser válida na cadeia. Se o comerciante ou plataforma confiar em uma transação que ainda "não está estávelmente confirmada" muito cedo, o atacante pode posteriormente explorar uma reorganização da cadeia ou uma substituição por uma cadeia mais longa, fazendo com que o registro de depósito anteriormente visto se torne inválido — enquanto os ativos já foram liberados ao atacante.
 
Portanto, um ataque de gasto duplo não se trata de "duplicar ativos" — ele explora confirmação insuficiente de transações, produção competidora de blocos ou reorganização da cadeia para fazer com que o mesmo ativo seja usado duas vezes dentro de um processo comercial.

Por que ocorrem ataques de gasto duplo?

Embora a blockchain enfatize que as transações sejam irreversíveis, essa "irreversibilidade" normalmente não se aplica imediatamente quando uma transação é enviada pela primeira vez. Ela se aproxima gradualmente da irreversibilidade após ser empacotada, propagada e confirmada.
 
Uma transação on-chain geralmente passa por vários estados:
 
Estado Descrição
Criado A carteira cria a transação
Transmissão A transação é transmitida para a rede blockchain
Pendente Aguardando mineiros ou validadores empacotarem e confirmarem
Confirmado A transação entrou em um bloco e começa a acumular confirmações
Falhou / Descartado / Substituído Transação falhou, foi substituída ou descartada
O risco frequentemente aparece durante a fase Pendente e durante a fase Confirmada, mas com poucas confirmações. Nesses pontos, a transação "parece existir", mas ainda não é suficientemente estável. Se a rede sofrer um fork, ou se um atacante controlar uma quantidade significativa de poder de hash e construir uma cadeia mais longa, o bloco contendo a transação original pode ser descartado — e o registro da transação pode "desaparecer".
 
Isso é o que se conhece como "reorganização da cadeia". Uma reorganização da cadeia não é simplesmente excluir um registro; significa que toda a rede reconhece, em última instância, uma cadeia diferente, fazendo com que alguns blocos da cadeia original se tornem inválidos. Se uma transação de depósito existir apenas no ramo descartado, o registro de depósito que a plataforma anteriormente viu pode perder sua validade.

Por que as confirmações são tão importantes?

O número de confirmações determina o quão difícil é reverter uma transação.
 
Quando uma transação entra pela primeira vez em um bloco, normalmente possui apenas 1 confirmação. Com cada novo bloco gerado, a contagem de confirmações aumenta — 2 confirmações, 3 confirmações, 6 confirmações, até mesmo 12 confirmações. Quanto maior a contagem de confirmações, mais blocos precisariam ser revertidos para anular a transação, e maior seria o custo do ataque.
 
É por isso que as exchanges normalmente não creditam os usuários imediatamente entre 0 e 1 confirmações. O risco é maior nesta fase, especialmente para blockchains com menor poder de hash ou histórico de ataques de 51% ou reorganizações de cadeia, onde são necessários limiares de confirmação mais altos.

📌 Caso Notável: Ataque de 51% de Poder de Hash e Incidente de Duplo Gasto em ETC em 2019

Ataques de double-spend não são uma ameaça teórica. Em janeiro de 2019, o Ethereum Classic (ETC) sofreu um grande ataque de 51% envolvendo transações de double-spend.
 
Processo típico de ataque:
 
Passo Ação
1 O atacante primeiro obteve domínio significativo de poder de hash na rede ETC, permitindo-lhe minerar privadamente uma cadeia mais longa
2 O atacante depositou ETC em uma exchange
3 Após a exchange ver a transação de depósito atingir a contagem de confirmações necessária, ela creditou a conta do atacante
4 O atacante vendeu rapidamente o ETC na exchange, converteu-o para USDT, BTC ou outros ativos e retirou os fundos.
5 Enquanto isso, o atacante continuou minerando privatamente uma cadeia mais longa que não incluía a transação de depósito
6 Quando essa cadeia mais longa foi publicada na rede, a rede aceitou a nova cadeia principal, e a cadeia de depósito que o exchange havia visto foi revertida.
Resultado deste padrão de ataque: O depósito que havia sido "confirmado" nos registros da exchange desapareceu, mas o atacante já havia retirado os ativos convertidos, completando o double-spend.
 
Este caso ilustra um fato fundamental: mesmo que uma transação já esteja na blockchain, se a segurança subjacente da rede for insuficiente ou se o atacante tiver a capacidade de reorganizar blocos, a transação ainda pode ser revertida. A "finalidade" de uma transação na blockchain não é absolutamente instantânea — ela se fortalece gradualmente à medida que as confirmações aumentam.

🛡️ Como evitar ataques de gasto duplo durante transações

Evitar ataques de gasto duplo não se trata de confiar em “captura de tela da outra parte” ou “o hash da transação existe” — trata-se de estabelecer mecanismos adequados de confirmação e controle de risco.

Primeiro, não trate "Broadcast" como "Recebido"

Um usuário que vê "enviado" em sua carteira, ou a outra parte fornecendo um hash de transação, não significa que os fundos estão seguros. A transmissão apenas indica que a transação entrou na fase de propagação na rede — não significa que foi confirmada por um bloco. Ações como creditar depósitos, liberar moedas, enviar mercadorias ou fornecer serviços não podem ser baseadas no status Pendente.

Em segundo lugar, você deve verificar o status de confirmação na cadeia

Para avaliar se uma transação é confiável, verifique, no mínimo:
  • Se a transação foi incluída em um bloco
  • Qual é a contagem atual de confirmações
  • Se a transação apresenta riscos de substituição anormal, transações conflitantes ou descarte
Para cenários de alto risco, não basta verificar "se a transação existe" — verifique "se a confirmação é estável".

Terceiro, defina contagens de confirmação razoáveis com base no nível de risco da cadeia

Diferentes blockchains possuem níveis de segurança distintos. Cadeias principais com alta potência de hash diferem significativamente das cadeias de pequeno capital e baixa potência de hash no custo de sofrer um ataque de 51% ou reorganização da cadeia. Para cadeias de maior risco, as plataformas devem elevar os limiares de confirmação de depósitos; para transações grandes, também devem ser definidos requisitos de confirmação mais elevados — não uma abordagem única para todos.

Quarto, aplique monitoramento de controle de risco a comportamentos de depósito anormais

Os seguintes comportamentos devem acionar revisão adicional:
 
Comportamento anormal Explicação de Risco
Múltiplos depósitos grandes seguidos por venda rápida e retirada em um curto período Caminho típico de ataque de gasto duplo
Depósitos frequentes usando moedas com segurança historicamente fraca Cadeias com baixo poder de hash têm baixos custos de ataque
Solicitação de retirada imediata dos ativos logo após atingir a contagem mínima de confirmações Pode explorar vulnerabilidades de confirmação insuficiente
Transações com atrasos anormais, sinais de conflito ou status instável nos Exploradores de blockchain Possível reorganização em andamento da cadeia
Esses comportamentos muitas vezes correspondem de perto aos padrões operacionais de ataques de gasto duplo.

Quinto, não confie em capturas de tela de pagamento ou status de página única

Capturas de tela são as mais fáceis de falsificar e as mais fáceis de enganar. Seja para pagamentos a comerciantes, negociações over-the-counter ou revisões de depósitos, sempre confie em exploradores de blockchain e verificação de controle de risco do sistema — não em registros de bate-papo, capturas de tela de pagamento ou declarações verbais.

Sexto, entenda que "irreversibilidade" não é "instantânea"

Uma vez que uma transação na blockchain atinge confirmações suficientes, é realmente muito difícil revertê-la. Mas quando as confirmações são insuficientes, as transações ainda podem sofrer variação devido a forks, congestão, substituição ou reorganização da cadeia. O equívoco mais comum na educação em segurança é interpretar "transações na blockchain são irreversíveis" como "uma vez enviadas, estão absolutamente seguras". Essa é exatamente a lacuna cognitiva que permite o sucesso de ataques de gasto duplo.

💎 Dicas de segurança para usuários comuns e plataformas

Para usuários comuns, o mais importante é não entregar bens, ativos digitais ou serviços antes da confirmação. Especialmente em negociações over-the-counter, transferências peer-to-peer e pagamentos com estranhos — confiar apenas em capturas de tela sem verificar confirmações apresenta risco extremamente elevado.
 
Para comerciantes e plataformas, a proteção verdadeiramente eficaz não é "experiência manual", mas mecanismos padronizados:
  • Limiares de confirmação claros
  • Níveis de risco diferenciados por cadeia
  • Identificação de caminhos de retirada anormais
  • Tempo de revisão estendido para depósitos de ativos de alto risco
  • Vigilância reforçada para moedas com histórico de reorganizações ou ataques de 51%

Conclusão

A essência de um ataque de gasto duplo não é "um hacker duplicar uma moeda" — é um atacante explorar transações não confirmadas de forma estável para criar a ilusão de "já pago" dentro de um processo de negócios. O incidente da ETC em 2019 já demonstrou que, enquanto a cadeia subjacente apresentar a possibilidade de reorganização, transações insuficientemente confirmadas não devem ser consideradas finalmente recebidas.
 
O princípio básico das transações seguras resume-se a uma frase:
 
Observe as confirmações, não capturas de tela; observe a finalidade, não o status superficial.
Quanto maior o número de confirmações, menor a janela para um ataque de gasto duplo bem-sucedido.

Disclaimer: The information on this page may come from third parties and does not necessarily reflect KuCoin’s views. It is provided for general reference only and should not be interpreted as financial or investment advice.

Virtual asset investments may involve risk. Please carefully assess the product risks and your own risk tolerance. For more information, please refer to our Terms of Use and Risk Disclosure.