Front running, eventos, off-chain e on-chain

Sep 29 2020

Com o avanço nas manchetes hoje em dia devido a ataques a plataformas como o Uniswap, eu queria saber do ponto de vista técnico como esses caras são capazes de fazer isso? Ainda estou aprendendo Ethereum com todos os prós e contras, especialmente com assuntos como o txpool.

Observei os bots de sucesso de perto e todos parecem estar usando contratos inteligentes. Meu palpite inicial era que tudo era feito na cadeia, no entanto, depois de aprender que os contratos inteligentes não podem ouvir eventos de outros contratos inteligentes, não tenho mais certeza de que é o caso. Como um contrato inteligente pode desencadear uma negociação se não for notificado por algum evento disso?

Então, tudo o que posso pensar é que um bot fora da cadeia está passando por cada transação pendente no txpool e quando detecta o que está procurando, ele chama o contrato inteligente na cadeia para executar a negociação.

Meu pensamento está correto sobre isso?
Minha segunda pergunta seria: há uma maneira de impedi-los?

Não marquei uma resposta correta abaixo porque ambas as respostas agregam muito valor e completaram a imagem na minha opinião

Respostas

1 goodvibration Sep 28 2020 at 22:40

Os bots estão continuamente ouvindo as mudanças onchain (eventos, transações, etc.) e as mudanças offchain (por exemplo, mudanças de preço).

Sempre que descobrem que é a hora certa, eles enviam uma transação para um de seus contratos inteligentes já implantados ou, possivelmente, até implantam um novo contrato inteligente.

Em ambos os casos, o conjunto de operações desejado é executado atomicamente na transação.

1 RobHitchens Sep 28 2020 at 22:50

Você está pensando que está indo na direção certa. Um contrato não pode monitorar logs de eventos, portanto, a atividade precisa estar fora da cadeia. Usar processos fora da cadeia para identificar oportunidades tem vantagens - capacidade de computação, entradas fora da cadeia, manutenção / otimização dos algoritmos, custos, etc.

Muitas (a maioria) estratégias de ataque requerem atomicidade de transação. Ou seja, todas as partes da transação devem ser totalmente bem-sucedidas ou a transação inteira deve falhar.

Considere uma arbitragem simplista que deseja comprar algo em algum lugar a um preço inferior ao preço onde deseja vendê-lo em outro lugar. Se isso for feito assinando duas transações e a compra for bem-sucedida, mas a venda falhar, o arbitrador acabará com um ativo que não deseja e uma provável perda na negociação.

Um contrato na cadeia pode realizar ambas as negociações a partir de uma única entrada. Ou seja, o arbitrador pode assinar uma única transação com instruções para o contrato que tratará as duas negociações. Essa transação é atômica - ela é bem-sucedida ou falha totalmente.

Espero que ajude.