Front running, eventi, off-chain e on-chain
Con il frontrunning in prima pagina in questi giorni a causa dei raid su piattaforme come Uniswap mi chiedevo da un punto di vista tecnico come sono riusciti questi ragazzi? Sto ancora imparando Ethereum con tutti i pro e i contro, specialmente con argomenti come il txpool.
Ho osservato da vicino i robot di successo e sembra che tutti stiano utilizzando contratti intelligenti. La mia ipotesi iniziale era che tutto fosse fatto on-chain, tuttavia, dopo aver appreso che i contratti intelligenti non possono ascoltare gli eventi di altri contratti intelligenti, non sono più così sicuro che sia così. Come può uno smart contract attivare uno scambio se non viene notificato da qualche evento in tal senso?
Quindi tutto ciò a cui riesco a pensare è che un bot off-chain sta eseguendo ogni singola transazione in sospeso nel txpool e quando rileva ciò che sta cercando, chiama lo smart contract on-chain per eseguire lo scambio.
Il mio pensiero è corretto su questo?
La mia seconda domanda sarebbe: c'è un modo per fermarli?
Non ho contrassegnato una risposta corretta di seguito poiché entrambe le risposte aggiungono molto valore e hanno completato l'immagine secondo me
Risposte
I bot ascoltano continuamente sia i cambiamenti onchain (eventi, transazioni, ecc.) Sia i cambiamenti offchain (ad esempio, i cambiamenti di prezzo).
Ogni volta che scoprono che è il momento giusto, inviano una transazione a uno dei loro contratti intelligenti già implementati, o forse anche implementano un nuovo contratto intelligente.
In entrambi i casi, il set di operazioni desiderato viene eseguito in modo atomico all'interno della transazione.
Stai pensando che stia andando nella giusta direzione. Un contratto non può monitorare i registri degli eventi, quindi l'attività deve essere fuori catena. L'utilizzo di processi off-chain per identificare le opportunità presenta vantaggi: capacità di calcolo, input off-chain, manutenzione / ottimizzazione degli algoritmi, costo, ecc.
Molte (la maggior parte) strategie di attacco richiedono l'atomicità delle transazioni. Cioè, tutte le parti della transazione devono avere esito positivo o l'intera transazione deve fallire.
Considera un semplicistico arbitraggio in prima linea che vuole comprare qualcosa da qualche parte a un prezzo che è inferiore al prezzo a cui vuole venderlo altrove. Se questo viene fatto firmando due transazioni e l'acquisto ha esito positivo ma la vendita fallisce, l'arbitraggio si ritroverà con un bene che non vuole e una probabile perdita sul trade.
Un contratto sulla catena può eseguire entrambe le operazioni da un singolo input. Cioè, l'arbitraggio può firmare una singola transazione con istruzioni per il contratto che gestirà entrambe le operazioni. Quella transazione è atomica: riesce completamente o fallisce completamente.
Spero che sia d'aiuto.