Na quarta-feira passada (12 de março), um trader de criptomoedas perdeu 215 mil dólares em um único ataque MEV.
De forma simples, este usuário pretendia trocar 220.800 dólares em stablecoins USDC por um valor equivalente em USDT no pool de negociação Uniswap v3, mas acabou recebendo apenas 5.272 USDT, resultando em uma evaporação instantânea de 215.700 dólares em poucos segundos, veja a imagem abaixo.
A imagem acima é uma captura de tela do registro on-chain desta transação. A razão fundamental para essa tragédia é o encontro com o infame "ataque de sanduíche" (Sandwich Attack) no mundo das blockchains.
O primeiro a divulgar este ataque MEV foi Michael (veja a imagem acima), que explicou que:
Um bot MEV antecipou a transação trocando toda a liquidez de USDC. Após a execução da transação, eles devolveram a liquidez. O atacante deu uma gorjeta a um construtor de bloco (bobTheBuilder) $200k e lucrou $8k com esta transação.
Tradução: O robô MEV antecipa tx trocando toda a liquidez de USDC. Após a execução da transação, eles devolvem a liquidez. O atacante deu uma gorjeta de 200 mil dólares ao construtor de blocos (bobTheBuilder) e lucrou 8000 dólares com essa transação.
O conteúdo acima contém um erro de digitação, o robô de ataque MEV troca uma grande quantidade de USDT, e não USDC.
No entanto, depois de ler suas explicações e reportagens, você ainda pode estar confuso, porque há muitos novos termos, como ataque de sanduíche (Sandwich Attack), front-running (front-ran the tx), reposição de liquidez (put back the liquidity), gratificação a um construtor de bloco (tipped a block builder), etc.
Hoje, vamos usar este ataque MEV como exemplo para analisar todo o seu processo e levar você a explorar este mundo obscuro do MEV.
Primeiro, precisamos explicar o que é MEV.
1. O que é MEV?
MEV, inicialmente conhecido como Valor Extraível por Mineradores (Miner Extractable Value), refere-se ao lucro adicional que os mineradores podem obter ao reordenar, inserir ou excluir transações em blocos de blockchain. Essa operação pode resultar em custos mais altos para usuários comuns ou em preços de transação menos favoráveis.
Com a transição de redes blockchain como o Ethereum do mecanismo de consenso Proof-of-Work (PoW) para o mecanismo de consenso Proof-of-Stake (PoS), o poder de controlar a ordenação das transações foi transferido dos mineradores para os validadores. Assim, o termo também evoluiu de "Miner Extractable Value" para "Maximal Extractable Value".
Apesar da mudança de nome, o conceito central de extrair valor manipulando a ordem das transações permanece o mesmo.
O conteúdo acima ainda é um pouco técnico, você só precisa lembrar que: a razão pela qual o MEV existe é porque os mineradores no passado e os validadores atualmente possuem o direito de ordenar as transações na pool de memória (mempool). Essa ordenação acontece dentro de um bloco, e atualmente o Ethereum gera um bloco a cada cerca de 11 segundos, o que significa que a cada 11 segundos há um exercício desse poder. Da mesma forma, este ataque ao MEV também foi realizado através da ordenação dos validadores.
Clique neste link e você verá o conteúdo das transações contidas no bloco com o número 22029771 relacionado a este ataque, como mostrado na figura abaixo.
Por favor, note que as transações nas figuras 1, 2 e 3 são o ataque MEV mencionado no início deste artigo, e essa ordem foi organizada pelo validador (bobTheBuilder). Por que isso é possível?
2. O princípio do MEV
Para entender como funciona o MEV, precisamos primeiro compreender como a blockchain registra e atualiza informações.
2.1 Mecanismo de atualização do estado da blockchain
A blockchain pode ser vista como um livro-razão em constante crescimento, que registra todas as transações realizadas. O estado deste livro-razão, como o saldo de cada conta, a quantidade de reservas de vários tokens na piscina de transações do Uniswap, etc., é determinado pelas transações anteriores.
Quando um novo bloco é adicionado à blockchain, todas as transações contidas nesse bloco são executadas uma a uma, na ordem em que estão dispostas no bloco. A cada execução de uma transação, o estado global da blockchain muda de acordo.
Ou seja, não é apenas a ordem dos blocos que é importante, mas também a ordem das transações dentro dos blocos. Então, como é decidida a ordem das transações dentro de um bloco?
2.2 O validador decide a ordem das transações
Quando um utilizador inicia uma transação na rede blockchain, como a transação que converte USDC em USDT através da Uniswap, ela é primeiramente transmitida para os nós na rede. Após uma verificação inicial, a transação entra em uma área chamada "mempool". O mempool é como uma área de espera, onde as transações ainda não foram confirmadas e adicionadas ao próximo bloco da blockchain.
Os antigos mineradores (em sistemas PoW), agora validadores (em sistemas PoS) têm o direito de escolher transações do pool de memória e decidir a ordem em que essas transações aparecem no próximo bloco.
A ordem das transações em um bloco é crucial. Antes que um bloco seja finalmente confirmado e adicionado à blockchain, as transações dentro desse bloco são executadas na ordem determinada pelo validador (como bobTheBuilder). Isso significa que, se um bloco contiver várias transações que interagem com o mesmo pool de transações, a ordem de execução dessas transações afetará diretamente o resultado de cada transação.
Esta capacidade permite que os validadores priorizem transações específicas, atrasem ou excluam outras transações, e até insiram suas próprias transações para maximizar lucros.
A ordem desta transação é igualmente importante; qualquer desvio pode resultar em um ataque falhado.
2.3 A ordenação das transações do ataque MEV desta vez
Vamos primeiro entender brevemente as 3 transações relacionadas ao ataque MEV:
Transação 1 (primeira transação do atacante): executada antes da transação da vítima. O propósito desta transação é geralmente inflacionar o preço do token que a vítima deseja negociar.
Transação 2 (transação da vítima): Executada após a primeira transação do atacante. Devido às operações anteriores do atacante, o preço no pool de transações neste momento é desfavorável para a vítima, que precisa pagar mais USDC para trocar por um valor equivalente em USDT, ou só consegue trocar por menos USDT.
Transação 3 (segundo ataque do atacante): executada após a transação da vítima. O objetivo desta transação é geralmente lucrar com as novas mudanças de preço causadas pela transação da vítima.
Desta vez, o validador do ataque MEV foi bob-The-Builder.eth, que foi responsável por ordenar as transações na sequência 1, 2, 3. Claro, bobTheBuilder também não trabalhou de graça, ele ganhou mais de 100 ETH com essa ordenação, enquanto o iniciador do ataque MEV teve apenas 8000 dólares de receita. A fonte de receita deles veio da segunda transação da vítima.
Em uma frase, o atacante (robô MEV) conspirou com o validador (bobTheBuilder), fazendo com que a vítima da segunda transação perdesse 215 mil dólares, dos quais o atacante ganhou 8 mil dólares e o validador ganhou 200 mil dólares (mais de 100 ETH).
A forma de ataque que eles adotaram tem um nome emblemático - ataque de sanduíche. Abaixo, vamos explicar transação por transação, para que você entenda completamente como funciona o ataque de sanduíche, que é bastante complexo, relacionado ao MEV.
3. Análise Completa do Ataque Sandwich
A razão pela qual é chamado de ataque sanduíche (Sandwich Attack) é porque as duas transações do atacante (transação 1 e transação 3) são colocadas antes e depois da transação da vítima (transação 2), fazendo com que toda a sequência de transações tenha a estrutura de um sanduíche (veja a imagem acima).
As transações 1 e 3 têm funções diferentes. Em resumo, a transação 1 é responsável pela execução do crime, enquanto a transação 3 é responsável pela divisão do lucro. Especificamente, todo o processo é o seguinte:
3.1 Transação 1, responsável por aumentar o preço do USDT
Clique no link da transação número 1 na imagem acima, você verá os detalhes da transação número 1. O atacante aumentou o preço do USDT de forma bastante direta, trocando 17.58 milhões de USDT por 18.65 milhões de USDC, veja a imagem abaixo.
Neste momento, o que resta no pool de liquidez é uma grande quantidade de USDC e uma quantidade menor de USDT. Se, de acordo com os relatos da imprensa, havia cerca de 19,8 milhões de USDC e USDT na liquidez do Uniswap antes do ataque, então após a execução da transação 1, restam apenas 2,22 milhões de USDT (=1980-1758), enquanto o saldo de USDC aumenta para cerca de 38,45 milhões (=1980+1865).
Neste momento, a taxa de câmbio entre USDC e USDT neste pool já não é 1:1, mas sim 1:17. Ou seja, são necessários 17 USDC para trocar por 1 USDT. No entanto, esta taxa é apenas uma estimativa, pois este pool é do V3 e a liquidez não está distribuída de forma uniforme.
Ainda há uma coisa que eu quero te contar. Na verdade, o atacante não usou 18,65 milhões de USDC de uma só vez, o USDC realmente utilizado foi de 1,09 milhão, nem 6% disso. Como ele conseguiu isso? Vamos explicar isso com mais detalhes depois que terminarmos de falar sobre o ataque.
3.2 transação 2, execução 22 mil USDC trocados por USDT
Clicar no link da transação 2 na imagem acima pode ver a imagem abaixo.
Como mostrado na imagem acima, a transação 2 da vítima foi afetada pela transação 1, resultando em 5272 USDT por 220000 USDC, levando a uma perda inconsciente de 170000 USDT. Por que se diz que foi inconsciente? Porque, se a vítima tivesse realizado a transação através do Uniswap, ao submeter a transação, ela veria a seguinte interface.
Através da imagem acima, você descobrirá que a vítima deve receber pelo menos 220 mil, que deve estar garantido. A razão pela qual a vítima acabou recebendo apenas mais de 5000 USDT é devido ao enorme deslizamento, que atingiu mais de 90%. No entanto, o Uniswap tem um limite de deslizamento máximo padrão de 5,5%, veja a imagem abaixo.
Ou seja, se a vítima tivesse negociado através do frontend Uniswap, então deveria ter recebido pelo menos 208381 USDT (= 220.510 * 94,5%). Você pode se perguntar por que os registros de blockchain acima mostram que essa transação foi feita em "Uniswap V3".
Porque a parte frontal e a parte traseira das transações em blockchain são separadas. O "Uniswap V3" mencionado acima refere-se ao pool de liquidez USDC-USDT da Uniswap, que é público e qualquer front-end de transação pode usar este pool para negociar.
Também é por causa disso que algumas pessoas suspeitam que a vítima não é simples, não é uma pessoa comum, caso contrário, não teria havido um deslizamento tão grande, podendo ser uma lavagem de dinheiro através de um ataque MEV. Isso, falaremos mais tarde.
3.3 transação 3, colheita + divisão
Clique no link para ver os detalhes da transação 3, como mostrado na imagem acima. Vamos falar sobre as transações A, B e C.
Negociação A, restaurou a liquidez no pool para o normal, trocando 17,32 milhões de USDT de volta por 18,60 milhões de USDC;
Negocie B, prepare a divisão, troque parte dos lucros - 204 mil USDC por 105 ETH;
Transação C, divisão do lucro, pagar 100.558 ETH ao validador bob-The-Builder.eth.
Assim, o ataque sandwich termina.
Agora vamos responder a uma questão muito importante mencionada acima: como o atacante conseguiu realizar um ataque de 18 milhões com 1,09 milhões de USDC.
4. Como o atacante conseguiu realizar o ataque ao pool de 18 milhões de USDC
A razão pela qual o atacante conseguiu realizar um ataque de nível de 18 milhões de dólares com apenas 1,09 milhão de USDC de capital é devido a um mecanismo mágico e especial que existe no mundo blockchain - a troca relâmpago (Flash Swap) do Uniswap V3.
4.1 O que é a troca relâmpago (Flash Swap)?
Simplesmente dizendo:
A troca relâmpago permite que os usuários retirem ativos de um pool Uniswap em uma única transação e, em seguida, paguem com outro ativo (ou o mesmo ativo mais uma taxa).
Desde que toda a operação seja concluída na mesma transação, a Uniswap permite esse comportamento de "pegar primeiro, pagar depois". Note que deve ser concluído na mesma transação. Este design foi feito para garantir a segurança da própria plataforma Uniswap:
Empréstimos sem risco: Uniswap permite que os usuários retirem temporariamente fundos do pool sem garantias (semelhante a um empréstimo), mas devem reembolsar imediatamente no final da transação.
Atomicidade (Atomicity): A operação completa deve ser atômica, ou seja, ou é totalmente bem-sucedida (devolução de fundos) ou falha completamente (rollback da transação).
O design do intercâmbio relâmpago tinha como objetivo realizar arbitragem on-chain de forma mais eficaz, mas infelizmente foi explorado por atacantes de MEV, tornando-se uma ferramenta de manipulação de mercado.
4.2 Como funciona a troca relâmpago?
Abaixo, vamos ver a imagem e descrever o que aconteceu, passo a passo, para entender como a troca relâmpago deste ataque foi realizada, conforme mostrado na imagem abaixo.
O atacante F1 emprestou 1.09 milhões de USDC da AAVE usando 701 WETH de sua própria propriedade;
O atacante F2 inicia um pedido de troca relâmpago, retirando primeiro 17,58 milhões de USDT do fundo Uniswap (neste momento, não é necessário pagar antecipadamente); a conta do atacante aumentou temporariamente em 17,58 milhões de USDT;
O atacante rapidamente injetou 17,58 milhões de USDT na piscina Curve, trocando de volta por 17,55 milhões de USDC. A conta do atacante viu uma redução de 17,58 milhões em USDT e um aumento de 17,55 milhões em USDC. Através da imagem abaixo, você verá que o atacante escolheu a Curve porque a liquidez aqui é bastante abundante, com mais de 70,54 milhões em USDT e 50,71 milhões em USDC, com deslizamento relativamente baixo.
O atacante F4 então devolverá os 17,55 milhões de USDC trocados através da Curve, somados aos 1,09 milhão de USDC que ele já havia preparado (provenientes de um empréstimo Aave), totalizando 18,64 milhões de USDC, devolvendo tudo de uma só vez à Uniswap, completando a troca relâmpago;
Após esta transação (transação 1), o saldo da conta do atacante diminuiu em 1,09 milhão de USDC, pois dos 18,64 milhões de USDC devolvidos ao Uniswap, apenas 17,55 milhões de USDC foram trocados através do Curve, enquanto o restante de 1,09 milhão de USDC era capital próprio do atacante.
Você deve ter percebido que essa transação na verdade causou uma perda de 1.090.000 para o atacante. No entanto, a transação 3 posterior, também utilizando a técnica de troca relâmpago, não apenas recuperou os 1.090.000 USDC, como também ganhou mais de 200.000.
Abaixo, vamos analisar passo a passo os dados da transação 3.
K1 atacante retirou 18,6 milhões de USDC na Uniswap usando troca relâmpago;
K2 atacante trocou 17,3 milhões de USDC, que acabou de retirar da Uniswap, por 17,32 milhões de USDT.
O atacante K1 devolveu os 17,32 milhões de USDT que trocou de volta do Curve para a Uniswap. A troca relâmpago foi concluída. É importante notar que o atacante gastou apenas 17,30 milhões de USDC através do K2 para obter 17,32 milhões de USDT. Dos 1,30 milhões restantes (= 1.860 - 1.730) de USDC, 1,09 milhões eram fundos próprios, e os restantes 210 mil USDC foram o lucro deste ataque.
O atacante K3 devolveu o principal à AAVE, tirou 701 WETH, trocou 200.000 USDC por 105 ETH e enviou 100.558 ETH para o validador como gorjeta (cerca de $200.000), deixando menos de $10.000 em ganhos.
Você pode se surpreender com a razão pela qual os atacantes estão dispostos a entregar até 200 mil dólares de lucro aos validadores?
4.3 Por que dar uma "gorjeta" de 200 mil dólares?
Na verdade, isso não é generosidade, mas sim uma condição necessária para o sucesso do ataque MEV conhecido como ataque de sanduíche:
O núcleo do sucesso do ataque é o controle preciso da ordem das transações, e quem controla a ordem das transações são os validadores (bobTheBuilder).
Os validadores não apenas ajudam os atacantes a garantir que as transações das vítimas fiquem entre as transações de ataque, mas o mais importante é que os validadores garantem que outros robôs MEV concorrentes não consigam furar a fila ou interferir na conclusão bem-sucedida do ataque.
Assim, os atacantes preferem sacrificar a maior parte dos lucros para garantir o sucesso do ataque, reservando uma parte dos lucros para si mesmos.
É necessário esclarecer que os ataques MEV também têm custos. Na troca relâmpago do Uniswap, há custos; nas transações do Curve, também há custos. No entanto, como as taxas são relativamente baixas, cerca de 0,01 a 0,05%, isso pode ser considerado insignificante em comparação com os ganhos obtidos com o ataque.
Por fim, lembre-se de que a defesa contra ataques MEV é na verdade muito simples, você só precisa: definir a tolerância ao deslizamento, não ultrapassando 1%; dividir grandes transações em várias partes. Portanto, você não precisa se deixar levar pelo medo e deixar de negociar em DEX (exchanges descentralizadas).
Conclusão: Avisos e Lições da Floresta Escura
Este ataque MEV de 215 mil dólares é, sem dúvida, mais uma cruel manifestação da regra da "floresta escura" no mundo blockchain. Ele revela de forma vívida o complexo jogo de interesses que se esconde sob um ambiente descentralizado e sem permissões, onde existem brechas mecânicas que podem ser exploradas para obter lucro.
De uma perspectiva mais elevada, o surgimento do MEV é uma manifestação do efeito de espada de dois gumes da transparência e programabilidade da blockchain.
Por um lado, todos os registos de transacção são públicos e podem ser consultados, permitindo que comportamentos de ataque possam ser rastreados e analisados;
Por outro lado, a lógica complexa dos contratos inteligentes e a determinidade na execução das transações também oferecem uma oportunidade para participantes astutos.
Isto não é apenas um ato de hacking simples, mas sim uma compreensão e utilização profunda dos mecanismos subjacentes da blockchain, que testa a robustez do design do protocolo e desafia a consciência de risco dos participantes.
Compreender o MEV e reconhecer seus riscos é essencial para navegar melhor neste mundo digital repleto de oportunidades, mas também de perigos ocultos. Lembre-se, na "floresta sombria" da blockchain, só o respeito pelas regras e a elevação da consciência podem evitar que você se torne a próxima presa devorada.
Este é também o efeito que pretendo alcançar com este artigo.
O conteúdo serve apenas de referência e não constitui uma solicitação ou oferta. Não é prestado qualquer aconselhamento em matéria de investimento, fiscal ou jurídica. Consulte a Declaração de exoneração de responsabilidade para obter mais informações sobre os riscos.
Análise completa do ataque de sanduíche MEV: da ordenação à troca relâmpago, a cadeia fatal
Autor: Daii Fonte: mirror
Na quarta-feira passada (12 de março), um trader de criptomoedas perdeu 215 mil dólares em um único ataque MEV.
De forma simples, este usuário pretendia trocar 220.800 dólares em stablecoins USDC por um valor equivalente em USDT no pool de negociação Uniswap v3, mas acabou recebendo apenas 5.272 USDT, resultando em uma evaporação instantânea de 215.700 dólares em poucos segundos, veja a imagem abaixo.
A imagem acima é uma captura de tela do registro on-chain desta transação. A razão fundamental para essa tragédia é o encontro com o infame "ataque de sanduíche" (Sandwich Attack) no mundo das blockchains.
O primeiro a divulgar este ataque MEV foi Michael (veja a imagem acima), que explicou que:
O conteúdo acima contém um erro de digitação, o robô de ataque MEV troca uma grande quantidade de USDT, e não USDC.
No entanto, depois de ler suas explicações e reportagens, você ainda pode estar confuso, porque há muitos novos termos, como ataque de sanduíche (Sandwich Attack), front-running (front-ran the tx), reposição de liquidez (put back the liquidity), gratificação a um construtor de bloco (tipped a block builder), etc.
Hoje, vamos usar este ataque MEV como exemplo para analisar todo o seu processo e levar você a explorar este mundo obscuro do MEV.
Primeiro, precisamos explicar o que é MEV.
1. O que é MEV?
MEV, inicialmente conhecido como Valor Extraível por Mineradores (Miner Extractable Value), refere-se ao lucro adicional que os mineradores podem obter ao reordenar, inserir ou excluir transações em blocos de blockchain. Essa operação pode resultar em custos mais altos para usuários comuns ou em preços de transação menos favoráveis.
Com a transição de redes blockchain como o Ethereum do mecanismo de consenso Proof-of-Work (PoW) para o mecanismo de consenso Proof-of-Stake (PoS), o poder de controlar a ordenação das transações foi transferido dos mineradores para os validadores. Assim, o termo também evoluiu de "Miner Extractable Value" para "Maximal Extractable Value".
Apesar da mudança de nome, o conceito central de extrair valor manipulando a ordem das transações permanece o mesmo.
O conteúdo acima ainda é um pouco técnico, você só precisa lembrar que: a razão pela qual o MEV existe é porque os mineradores no passado e os validadores atualmente possuem o direito de ordenar as transações na pool de memória (mempool). Essa ordenação acontece dentro de um bloco, e atualmente o Ethereum gera um bloco a cada cerca de 11 segundos, o que significa que a cada 11 segundos há um exercício desse poder. Da mesma forma, este ataque ao MEV também foi realizado através da ordenação dos validadores.
Clique neste link e você verá o conteúdo das transações contidas no bloco com o número 22029771 relacionado a este ataque, como mostrado na figura abaixo.
Por favor, note que as transações nas figuras 1, 2 e 3 são o ataque MEV mencionado no início deste artigo, e essa ordem foi organizada pelo validador (bobTheBuilder). Por que isso é possível?
2. O princípio do MEV
Para entender como funciona o MEV, precisamos primeiro compreender como a blockchain registra e atualiza informações.
2.1 Mecanismo de atualização do estado da blockchain
A blockchain pode ser vista como um livro-razão em constante crescimento, que registra todas as transações realizadas. O estado deste livro-razão, como o saldo de cada conta, a quantidade de reservas de vários tokens na piscina de transações do Uniswap, etc., é determinado pelas transações anteriores.
Quando um novo bloco é adicionado à blockchain, todas as transações contidas nesse bloco são executadas uma a uma, na ordem em que estão dispostas no bloco. A cada execução de uma transação, o estado global da blockchain muda de acordo.
Ou seja, não é apenas a ordem dos blocos que é importante, mas também a ordem das transações dentro dos blocos. Então, como é decidida a ordem das transações dentro de um bloco?
2.2 O validador decide a ordem das transações
Quando um utilizador inicia uma transação na rede blockchain, como a transação que converte USDC em USDT através da Uniswap, ela é primeiramente transmitida para os nós na rede. Após uma verificação inicial, a transação entra em uma área chamada "mempool". O mempool é como uma área de espera, onde as transações ainda não foram confirmadas e adicionadas ao próximo bloco da blockchain.
Os antigos mineradores (em sistemas PoW), agora validadores (em sistemas PoS) têm o direito de escolher transações do pool de memória e decidir a ordem em que essas transações aparecem no próximo bloco.
A ordem das transações em um bloco é crucial. Antes que um bloco seja finalmente confirmado e adicionado à blockchain, as transações dentro desse bloco são executadas na ordem determinada pelo validador (como bobTheBuilder). Isso significa que, se um bloco contiver várias transações que interagem com o mesmo pool de transações, a ordem de execução dessas transações afetará diretamente o resultado de cada transação.
Esta capacidade permite que os validadores priorizem transações específicas, atrasem ou excluam outras transações, e até insiram suas próprias transações para maximizar lucros.
A ordem desta transação é igualmente importante; qualquer desvio pode resultar em um ataque falhado.
2.3 A ordenação das transações do ataque MEV desta vez
Vamos primeiro entender brevemente as 3 transações relacionadas ao ataque MEV:
Desta vez, o validador do ataque MEV foi bob-The-Builder.eth, que foi responsável por ordenar as transações na sequência 1, 2, 3. Claro, bobTheBuilder também não trabalhou de graça, ele ganhou mais de 100 ETH com essa ordenação, enquanto o iniciador do ataque MEV teve apenas 8000 dólares de receita. A fonte de receita deles veio da segunda transação da vítima.
Em uma frase, o atacante (robô MEV) conspirou com o validador (bobTheBuilder), fazendo com que a vítima da segunda transação perdesse 215 mil dólares, dos quais o atacante ganhou 8 mil dólares e o validador ganhou 200 mil dólares (mais de 100 ETH).
A forma de ataque que eles adotaram tem um nome emblemático - ataque de sanduíche. Abaixo, vamos explicar transação por transação, para que você entenda completamente como funciona o ataque de sanduíche, que é bastante complexo, relacionado ao MEV.
3. Análise Completa do Ataque Sandwich
A razão pela qual é chamado de ataque sanduíche (Sandwich Attack) é porque as duas transações do atacante (transação 1 e transação 3) são colocadas antes e depois da transação da vítima (transação 2), fazendo com que toda a sequência de transações tenha a estrutura de um sanduíche (veja a imagem acima).
As transações 1 e 3 têm funções diferentes. Em resumo, a transação 1 é responsável pela execução do crime, enquanto a transação 3 é responsável pela divisão do lucro. Especificamente, todo o processo é o seguinte:
3.1 Transação 1, responsável por aumentar o preço do USDT
Clique no link da transação número 1 na imagem acima, você verá os detalhes da transação número 1. O atacante aumentou o preço do USDT de forma bastante direta, trocando 17.58 milhões de USDT por 18.65 milhões de USDC, veja a imagem abaixo.
Neste momento, o que resta no pool de liquidez é uma grande quantidade de USDC e uma quantidade menor de USDT. Se, de acordo com os relatos da imprensa, havia cerca de 19,8 milhões de USDC e USDT na liquidez do Uniswap antes do ataque, então após a execução da transação 1, restam apenas 2,22 milhões de USDT (=1980-1758), enquanto o saldo de USDC aumenta para cerca de 38,45 milhões (=1980+1865).
Neste momento, a taxa de câmbio entre USDC e USDT neste pool já não é 1:1, mas sim 1:17. Ou seja, são necessários 17 USDC para trocar por 1 USDT. No entanto, esta taxa é apenas uma estimativa, pois este pool é do V3 e a liquidez não está distribuída de forma uniforme.
Ainda há uma coisa que eu quero te contar. Na verdade, o atacante não usou 18,65 milhões de USDC de uma só vez, o USDC realmente utilizado foi de 1,09 milhão, nem 6% disso. Como ele conseguiu isso? Vamos explicar isso com mais detalhes depois que terminarmos de falar sobre o ataque.
3.2 transação 2, execução 22 mil USDC trocados por USDT
Clicar no link da transação 2 na imagem acima pode ver a imagem abaixo.
Como mostrado na imagem acima, a transação 2 da vítima foi afetada pela transação 1, resultando em 5272 USDT por 220000 USDC, levando a uma perda inconsciente de 170000 USDT. Por que se diz que foi inconsciente? Porque, se a vítima tivesse realizado a transação através do Uniswap, ao submeter a transação, ela veria a seguinte interface.
! rqLjmsxfcI06dN56OvKVyTctzoiWpvUPvCyEWYom.png
Através da imagem acima, você descobrirá que a vítima deve receber pelo menos 220 mil, que deve estar garantido. A razão pela qual a vítima acabou recebendo apenas mais de 5000 USDT é devido ao enorme deslizamento, que atingiu mais de 90%. No entanto, o Uniswap tem um limite de deslizamento máximo padrão de 5,5%, veja a imagem abaixo.
Ou seja, se a vítima tivesse negociado através do frontend Uniswap, então deveria ter recebido pelo menos 208381 USDT (= 220.510 * 94,5%). Você pode se perguntar por que os registros de blockchain acima mostram que essa transação foi feita em "Uniswap V3".
Porque a parte frontal e a parte traseira das transações em blockchain são separadas. O "Uniswap V3" mencionado acima refere-se ao pool de liquidez USDC-USDT da Uniswap, que é público e qualquer front-end de transação pode usar este pool para negociar.
Também é por causa disso que algumas pessoas suspeitam que a vítima não é simples, não é uma pessoa comum, caso contrário, não teria havido um deslizamento tão grande, podendo ser uma lavagem de dinheiro através de um ataque MEV. Isso, falaremos mais tarde.
3.3 transação 3, colheita + divisão
Clique no link para ver os detalhes da transação 3, como mostrado na imagem acima. Vamos falar sobre as transações A, B e C.
Negociação A, restaurou a liquidez no pool para o normal, trocando 17,32 milhões de USDT de volta por 18,60 milhões de USDC;
Negocie B, prepare a divisão, troque parte dos lucros - 204 mil USDC por 105 ETH;
Transação C, divisão do lucro, pagar 100.558 ETH ao validador bob-The-Builder.eth.
Assim, o ataque sandwich termina.
Agora vamos responder a uma questão muito importante mencionada acima: como o atacante conseguiu realizar um ataque de 18 milhões com 1,09 milhões de USDC.
4. Como o atacante conseguiu realizar o ataque ao pool de 18 milhões de USDC
A razão pela qual o atacante conseguiu realizar um ataque de nível de 18 milhões de dólares com apenas 1,09 milhão de USDC de capital é devido a um mecanismo mágico e especial que existe no mundo blockchain - a troca relâmpago (Flash Swap) do Uniswap V3.
4.1 O que é a troca relâmpago (Flash Swap)?
Simplesmente dizendo:
Desde que toda a operação seja concluída na mesma transação, a Uniswap permite esse comportamento de "pegar primeiro, pagar depois". Note que deve ser concluído na mesma transação. Este design foi feito para garantir a segurança da própria plataforma Uniswap:
O design do intercâmbio relâmpago tinha como objetivo realizar arbitragem on-chain de forma mais eficaz, mas infelizmente foi explorado por atacantes de MEV, tornando-se uma ferramenta de manipulação de mercado.
4.2 Como funciona a troca relâmpago?
Abaixo, vamos ver a imagem e descrever o que aconteceu, passo a passo, para entender como a troca relâmpago deste ataque foi realizada, conforme mostrado na imagem abaixo.
Após esta transação (transação 1), o saldo da conta do atacante diminuiu em 1,09 milhão de USDC, pois dos 18,64 milhões de USDC devolvidos ao Uniswap, apenas 17,55 milhões de USDC foram trocados através do Curve, enquanto o restante de 1,09 milhão de USDC era capital próprio do atacante.
Você deve ter percebido que essa transação na verdade causou uma perda de 1.090.000 para o atacante. No entanto, a transação 3 posterior, também utilizando a técnica de troca relâmpago, não apenas recuperou os 1.090.000 USDC, como também ganhou mais de 200.000.
Abaixo, vamos analisar passo a passo os dados da transação 3.
Você pode se surpreender com a razão pela qual os atacantes estão dispostos a entregar até 200 mil dólares de lucro aos validadores?
4.3 Por que dar uma "gorjeta" de 200 mil dólares?
Na verdade, isso não é generosidade, mas sim uma condição necessária para o sucesso do ataque MEV conhecido como ataque de sanduíche:
Assim, os atacantes preferem sacrificar a maior parte dos lucros para garantir o sucesso do ataque, reservando uma parte dos lucros para si mesmos.
É necessário esclarecer que os ataques MEV também têm custos. Na troca relâmpago do Uniswap, há custos; nas transações do Curve, também há custos. No entanto, como as taxas são relativamente baixas, cerca de 0,01 a 0,05%, isso pode ser considerado insignificante em comparação com os ganhos obtidos com o ataque.
Por fim, lembre-se de que a defesa contra ataques MEV é na verdade muito simples, você só precisa: definir a tolerância ao deslizamento, não ultrapassando 1%; dividir grandes transações em várias partes. Portanto, você não precisa se deixar levar pelo medo e deixar de negociar em DEX (exchanges descentralizadas).
Conclusão: Avisos e Lições da Floresta Escura
Este ataque MEV de 215 mil dólares é, sem dúvida, mais uma cruel manifestação da regra da "floresta escura" no mundo blockchain. Ele revela de forma vívida o complexo jogo de interesses que se esconde sob um ambiente descentralizado e sem permissões, onde existem brechas mecânicas que podem ser exploradas para obter lucro.
De uma perspectiva mais elevada, o surgimento do MEV é uma manifestação do efeito de espada de dois gumes da transparência e programabilidade da blockchain.
Isto não é apenas um ato de hacking simples, mas sim uma compreensão e utilização profunda dos mecanismos subjacentes da blockchain, que testa a robustez do design do protocolo e desafia a consciência de risco dos participantes.
Compreender o MEV e reconhecer seus riscos é essencial para navegar melhor neste mundo digital repleto de oportunidades, mas também de perigos ocultos. Lembre-se, na "floresta sombria" da blockchain, só o respeito pelas regras e a elevação da consciência podem evitar que você se torne a próxima presa devorada.
Este é também o efeito que pretendo alcançar com este artigo.