Il front running è l'atto di mettere una transazione in coda con la conoscenza di una transazione futura. Il front running su una piattaforma blockchain avviene normalmente quando un miner, che ha accesso alle informazioni sulle transazioni in sospeso, effettua un ordine che gli farebbe guadagnare un profitto in base a un'operazione in sospeso. Ad esempio, sulla blockchain di Ethereum, il front running può verificarsi quando i bot sono in grado di quotare un prezzo del gas più alto rispetto a un'operazione in sospeso, accelerandone così l'elaborazione.
Altre parti in grado di eseguire il front running sono gli operatori di nodi completi, che sono parti incaricate di tenere d'occhio le attività della rete e quindi essere a conoscenza delle transazioni non confermate. Anche gli scambi centralizzati possono essere all’avanguardia, tuttavia sarebbe contro il loro interesse ingannare i propri clienti. Il front running può essere orchestrato anche attraverso altri metodi. Il front running generalizzato attinge a chiamate contrattuali potenzialmente redditizie.
Altri tipi di attacchi includono spostamento, inserimento e soppressione. Con un attacco di spostamento, l'attore malintenzionato sostituisce una transazione autentica con la propria. Sebbene la transazione originale possa ancora essere eseguita, non avrà l’effetto positivo previsto. D’altro canto, un attacco di inserimento inserisce una transazione autentica tra due transazioni con l’obiettivo di realizzare un profitto senza detenere un asset.
L'attacco di soppressione ha lo scopo di ritardare l'esecuzione di una transazione da parte di altri. Quando la ritenuta viene revocata, il favorito è meno preoccupato per il commercio soppresso.
Il front running può essere mitigato sequenziando le transazioni e migliorando la riservatezza delle transazioni. Il sequenziamento delle transazioni è ottenibile attraverso implementazioni come la Canonical Transaction Ordering Rule come quella utilizzata da BCH (Bitcoin Cash). La riservatezza, d'altra parte, è applicabile a diverse sezioni di un'applicazione decentralizzata (DApp).
