Visão geral
Uma transação sem confirmação (também chamada de 0-conf) é uma transação Bitcoin que foi transmitida à rede e propagada pela mempool, mas ainda não foi incluída em um bloco minerado. Aceitar um pagamento com base em uma transação sem confirmação significa confiar que ela será eventualmente confirmada, sem a garantia criptográfica que vem com a inclusão via prova de trabalho.
Avaliação de risco
Nível de confirmação Garantia de segurança
──────────────────────────────────────────────
0-conf (mempool) ⚠ Pode ser objeto de gasto duplo
1 confirmação ■ Incluída em um bloco
3 confirmações ■■■ Muito improvável de reverter
6 confirmações ■■■■■■ Praticamente irreversível
Risco de ataque de gasto duplo:
Compra presencial de baixo valor: Risco muito baixo
Bens digitais online: Risco moderado
Transações de alto valor: Risco inaceitável
Quando o 0-conf é aceitável
Alguns comerciantes aceitam transações sem confirmação em cenários específicos onde o risco é gerenciável:
- Compras presenciais de baixo valor: Uma cafeteria que vende um item de R$25 enfrenta risco insignificante de um ataque de gasto duplo, especialmente porque o atacante deve estar fisicamente presente.
- Clientes frequentes: Relacionamentos estabelecidos reduzem o incentivo para fraude.
- Requisitos de velocidade: Alguns casos de uso (como ponto de venda) não podem aguardar 10+ minutos por uma confirmação.
Riscos de gasto duplo
Uma transação sem confirmação pode ser revertida por meio de:
- Replace-by-Fee (RBF): Se a transação sinaliza RBF, o remetente pode substituí-la explicitamente por uma transação de taxa mais alta que paga um destinatário diferente. Os comerciantes podem verificar o sinal RBF.
- Ataque de corrida: O remetente transmite duas transações conflitantes simultaneamente, esperando que a que paga a si mesmo seja minerada.
- Ataque Finney: Um minerador pré-minera um bloco contendo uma transação de gasto duplo e o libera após receber os bens.
Mitigações
- Verificar sinalização RBF: Transações sinalizando RBF são explicitamente substituíveis e não devem ser aceitas sem confirmação.
- Monitorar tentativas de gasto duplo: Observar transações conflitantes na mempool.
- Exigir taxa suficiente: Transações com taxas muito baixas são mais facilmente substituídas.
- Usar Lightning: A Lightning Network fornece finalidade de liquidação instantânea para pagamentos pequenos, eliminando a necessidade de transações 0-conf na cadeia.
Conceitos errôneos comuns
Uma transação não confirmada não é o mesmo que uma transação inválida. As transações sem confirmação foram validadas pelos nós e provavelmente serão mineradas — a questão é se serão mineradas antes de uma transação conflitante. O risco é probabilístico, não binário.