O que é Transaction Replacement Attack?
Uma Transaction Replacement Attack ocorre quando alguém envia um pagamento em cripto e, depois, transmite rapidamente uma versão diferente dessa transação com detalhes alterados antes de ser confirmada. O objetivo é enganar quem aceitou o primeiro pagamento pendente. Pense em prometer dinheiro no caixa e depois correr para trocar as notas enquanto o empregado olha para outro lado.
Se uma transação aparece como pendente, pode parecer que já foi paga. Não é bem assim. Até que um minerador a inclua num bloco, ainda podem ocorrer trocas e uma Transaction Replacement Attack pode inverter o resultado.
Como funciona a Transaction Replacement Attack
Resumo rápido com um cenário simples de checkout em mente.
- Passo 1: Um atacante envia-lhe um pagamento com uma taxa baixa. Vê a transação como pendente e fica confiante.
- Passo 2: Antes da confirmação, o atacante cria uma nova transação que gasta os mesmos fundos, frequentemente através de Replace by Fee (RBF) ou reenviando com o mesmo nonce em cadeias baseadas em contas.
- Passo 3: A substituição oferece uma taxa mais alta e atrai mais os mineiros, por isso é incluída num bloco enquanto a primeira versão é descartada.
- Passo 4: Isto é mais fácil durante forte congestão de rede quando os mineiros priorizam taxas superiores.
- Passo 5: Entrega o produto ou serviço com base num pagamento pendente e acaba por não receber quando a cadeia confirma a substituição.
Esse é o truque. Simples, algo furtivo e evitável.
Porque a Transaction Replacement Attack é importante
Veja por que isto lhe interessa, quer esteja a gerir um checkout quer esteja apenas a enviar moedas a um amigo.
- Vantagem: Os mecanismos de substituição permitem que utilizadores honestos acelerem pagamentos presos ao aumentar a taxa, o que é útil quando precisa de confirmação imediata.
- Perspetiva: As mesmas ferramentas que o ajudam também podem ser usadas contra si se confiar num pagamento pendente para entregar bens ou conceder acesso.
- Relevância: Verá isto em pontos de venda, mintagem de NFTs, negociações OTC e em qualquer lugar onde se aceitem pagamentos pendentes.
Use uma carteira de criptomoedas que sinalize claramente transações substituíveis e mostre o número de confirmações. Para pagamentos, exija algumas confirmações antes de entregar algo importante.
Principais características da Transaction Replacement Attack
O que distingue isto, em linguagem simples:
- Momento: Ocorre antes da confirmação, enquanto a transação ainda está no mempool.
- Incentivos: Uma taxa mais elevada ou condições melhores levam mineiros ou validadores a incluir a substituição em vez do original.
- Sinais: Algumas transações estão marcadas como substituíveis, e cadeias baseadas em contas permitem substituições com o mesmo nonce.
- Alvo: Comerciantes ou pares que aceitam pagamentos pendentes são o ponto fraco.
Variações
Mesmo tema, mecânicas ligeiramente diferentes conforme a cadeia.
- RBF: Um remetente sinaliza um pagamento como substituível e mais tarde transmite uma versão com taxa mais alta que altera a saída ou o destinatário.
- Troca de nonce: Em cadeias baseadas em contas, um utilizador reenvia uma transação com o mesmo nonce mas com gas mais alto, o que cancela ou altera a intenção anterior.
- Truque de reembolso: Um remetente primeiro paga um comerciante, depois substitui o pagamento pendente por outro que envia os fundos de volta para um endereço que controla.
Não trate um pagamento como final até que o seu nó marque a transação como liquidada. Uma Transaction Replacement Attack perde força após confirmações adequadas.
Exemplo
Um café aceita um pagamento pendente por um latte, o comprador de imediato transmite uma substituição com taxa mais alta que envia os fundos para outro destino, e o barista apercebe-se mais tarde de que o comprador estava a explorar a possibilidade de substituição.
Curiosidade
O aumento de taxa foi introduzido para ajudar utilizadores honestos a resgatar transações presas, muito antes de se tornar num meme associado a truques. Como muitas medidas técnicas, o resultado depende de quem tem as chaves ora é Rolex, ora são threads do Reddit.
Resumo
Versão curta: não entregue mercadorias com base numa incerteza. Espere por um ou dois blocos e depois fique descansado.
