Cos’è un flash loan e come funziona nella DeFi?

Cos’è un flash loan?
Un flash loan è un prestito on-chain temporaneo che deve essere rimborsato nella stessa transazione, inclusa un’eventuale commissione. On-chain significa che tutta l’operazione avviene direttamente sulla blockchain.
Con un flash loan diretto, uno smart contract riceve temporaneamente liquidità senza che chi lo richiede debba prima bloccare un collateral per quel flash loan. Qui per liquidità si intende la quantità disponibile di crypto o token che un protocollo può prestare. Quindi non è un prestito “normale” che resta aperto per giorni, settimane o mesi.
I flash loan sono soprattutto un mattoncino programmabile dentro la DeFi. DeFi sta per applicazioni finanziarie che funzionano su blockchain tramite smart contract. Per questo, di solito un utente non esegue un flash loan “a mano” come farebbe con un prestito classico. È uno smart contract già programmato che richiede il prestito e poi esegue automaticamente tutti i passaggi necessari.
Su Aave V3, un cosiddetto receiver-contract riceve i token presi in prestito. È lo smart contract che riceve il flash loan ed esegue le azioni pianificate. Poi il protocollo richiama una callback: un momento predefinito in cui il receiver-contract esegue il proprio codice. Quel codice può per esempio fare swap di token, modificare una posizione esistente e poi rimborsare il prestito più la commissione.
La condizione è rigida: tutti i passaggi devono riuscire dentro una singola transazione. Per questo un flash loan è adatto soprattutto ad azioni DeFi veloci e composte, non a credito personale o finanziamenti di lungo periodo.
In breve
- Un flash loan è un prestito on-chain temporaneo che normalmente si chiude in una singola transazione.
- Con un flash loan diretto non serve bloccare in anticipo un collateral per il prestito temporaneo.
- Gli smart contract eseguono automaticamente prestito, azioni successive e rimborso.
- Se il rimborso di capitale e commissione non riesce, la transazione viene annullata.
- I flash loan possono essere usati, tra le altre cose, per arbitraggio, collateral swap e modifiche di posizioni DeFi.
Come funziona un flash loan?
Un flash loan funziona perché uno smart contract prende in prestito token temporaneamente, esegue azioni pre-programmate e rimborsa prestito più commissione prima che la stessa transazione finisca.
Di solito il processo va così:
- Avviare il flash loan: Uno smart contract chiama la funzione flash-loan di un protocollo. Il protocollo invia la crypto scelta al receiver-contract.
- Eseguire l’azione pianificata: Il receiver-contract usa la liquidità temporanea per i passaggi programmati. Possono essere swap, oppure ripagare e ristrutturare una posizione DeFi.
- Rendere disponibile saldo sufficiente: Dopo queste azioni, il receiver-contract deve avere abbastanza token per capitale e premio del flash loan. Quel premio è una fee per mettere a disposizione liquidità per poco tempo.
- Rendere possibile il rimborso: Il receiver-contract dà alla pool il permesso di prelevare l’importo dovuto. Si chiama token approval: il contract autorizza il protocollo a scalare un certo numero di token.
- Chiudere la transazione: Il protocollo preleva capitale e premio. Solo allora tutta la transazione viene finalizzata.
Aave V3 ha una funzione flashLoanSimple per una singola reserve. Una reserve è la pool con liquidità disponibile di uno specifico crypto-asset. La funzione più completa flashLoan può supportare più asset contemporaneamente.
Con quella funzione più completa esiste anche, a certe condizioni, un’altra strada. Se quella strada è impostata e c’è collateral sufficiente, l’importo preso in prestito può essere aperto come una normale posizione di debito invece di essere rimborsato subito. Questo è diverso da un flash loan diretto standard. Tramite flashLoanSimple questa possibilità non c’è.
Perché un flash loan deve essere rimborsato dentro una singola transazione?
Un flash loan diretto deve essere rimborsato dentro una singola transazione perché così tutti i passaggi possono essere eseguiti in modo atomico. Atomico significa che l’intera sequenza di azioni o va a buon fine completamente, oppure viene completamente annullata.
Pensa a una transazione come a un pacco sigillato con dentro più istruzioni. In quel pacco un contract può prendere in prestito token, fare swap, ripagare un debito e rimborsare il prestito. Solo quando ogni istruzione è stata eseguita correttamente, il pacco viene registrato sulla blockchain.
Questo protegge la liquidity pool da un prestito aperto e non coperto. Alla fine della transazione, la pool preleva l’importo preso in prestito più il premio. Se non riesce, la transazione viene rifiutata.
L’idea che un flash loan avvenga dentro un singolo block è spesso utile a livello pratico, ma è meno precisa. La regola di sicurezza importante è che l’operazione completa si chiuda in modo atomico dentro una singola transazione.
Cosa succede se il rimborso non avviene?
Se un flash loan diretto non può essere rimborsato completamente, la transazione viene revertita. Revertire significa che la blockchain annulla le modifiche di quella transazione fallita.
Il protocollo non si ritrova quindi con un flash loan non rimborsato. I token presi in prestito temporaneamente non restano come debito aperto sul receiver-contract. Anche swap, depositi e altre modifiche che facevano parte della stessa transazione fallita vengono annullate.
Chi invia può comunque perdere gas. Il gas è il compenso per il lavoro di calcolo necessario a eseguire una transazione su una blockchain. Una parte di quel lavoro può essere già stata eseguita prima che la transazione venga revertita, quindi le gas fee possono restare dovute.
Solo con la funzione più completa flashLoan di Aave V3, una route scelta può, a certe condizioni, portare a una normale posizione di debito. Per questo deve esserci collateral sufficiente e i controlli del protocollo devono permetterlo. Questo non vale per flashLoanSimple.
A cosa servono i flash loan?
I flash loan si usano per combinare più azioni DeFi dipendenti tra loro in una singola transazione atomica. Può essere utile quando un passaggio è possibile solo dopo che un altro è stato eseguito subito prima o subito dopo.
Usi comuni:
- arbitraggio tra mercati;
- cambiare il collateral dentro una posizione di prestito;
- ripagare un debito usando collateral;
- chiudere o ristrutturare una posizione DeFi.
Un flash swap segue un principio simile. In quel caso qualcuno può prelevare token da una pool e pagare o restituire i token solo alla fine della stessa transazione. Un flash swap e un flash loan non sono tecnicamente la stessa cosa, ma entrambi usano liquidità temporanea dentro un’esecuzione atomica.
Come funzionano arbitraggio e differenze di liquidità con i flash loan?
L’arbitraggio cerca di sfruttare una differenza di prezzo per lo stesso asset (o asset economicamente comparabili) su mercati diversi. Un flash loan può fornire capitale di trading temporaneo, così chi esegue non deve possedere in anticipo l’intero importo.
Una strategia di arbitraggio semplice può essere così:
- Uno smart contract prende in prestito temporaneamente token tramite un flash loan.
- Il contract vende o swappa quei token su un mercato dove il prezzo è relativamente alto.
- Ricompra lo stesso asset su un altro mercato dove il prezzo è più basso.
- Il contract rimborsa flash loan e premio.
- Resta solo un eventuale surplus come risultato.
Esempio: mettiamo che un token in una pool possa essere venduto a un prezzo eseguibile più alto di quello a cui può essere ricomprato in un’altra pool. Uno smart contract può prendere in prestito token temporaneamente, fare i due swap e ripagare il prestito. Se dopo tutti i costi resta un surplus, la transazione era profittevole.
Una differenza di prezzo visibile non è automaticamente un’opportunità di profitto. Il guadagno reale deve essere maggiore di capitale, premio del flash loan, costi di swap, costi di route, gas e slippage.
Conta anche il price impact. Il price impact è la variazione di prezzo che la tua stessa operazione causa in una liquidity pool. Uno swap grande in una pool con poca liquidità può cambiare il prezzo così tanto da far sparire la differenza iniziale.
Come si possono usare i flash loan per fare collateral swap?
Un collateral swap sostituisce il collateral di una posizione di prestito in una sola transazione. Il collateral è la crypto che un utente deposita in un protocollo di lending come garanzia per un prestito.
Uno swap del genere può aiutare quando un utente vuole sostituire il collateral di una posizione esistente senza avere prima fondi propri sufficienti per ripagare il debito. Un flash loan può fornire temporaneamente la liquidità necessaria per eseguire tutti i passaggi intermedi dentro una singola transazione. L’ordine esatto dipende dal protocollo e dalla logica dello smart contract usato.
Un possibile collateral swap con un flash loan va così:
- Prendere in prestito temporaneamente l’asset del debito: Lo smart contract prende in prestito tramite flash loan l’asset in cui è denominato il debito esistente.
- Ripagare il debito esistente: Con i token presi in prestito temporaneamente, il debito viene ripagato, così si può sbloccare il collateral originale.
- Prelevare il collateral originale: Lo smart contract preleva la garanzia liberata dalla posizione di prestito.
- Cambiare il collateral: Il collateral originale viene swappato nell’asset di collateral nuovo desiderato.
- Depositare il nuovo collateral: Il nuovo asset viene depositato come collateral nel protocollo di lending.
- Riaprire il debito: Contro il nuovo collateral si prende di nuovo in prestito l’asset del debito.
- Rimborsare il flash loan: Con quei token il contract rimborsa il prestito temporaneo più un eventuale premio.
Alla fine della transazione l’utente ha di nuovo una posizione di prestito, ma con un collateral diverso. Se un passaggio necessario fallisce o il flash loan non può essere rimborsato completamente, viene revertita l’intera transazione.
Un flusso collegato ma diverso è ripagare il debito con collateral. In quel caso il contract prende in prestito temporaneamente l’asset del debito, ripaga il debito esistente, preleva il collateral liberato e ne scambia una parte per rimborsare il flash loan. L’obiettivo qui non è riaprire la stessa posizione di debito con un collateral diverso, ma ripagare del tutto o in parte il debito esistente.
Che questo flusso sia eseguibile dipende, tra le altre cose, dagli asset supportati, dalla liquidità disponibile, dalla LTV e dai parametri di liquidazione. La LTV indica quale parte del valore del collateral può essere presa in prestito al massimo. I parametri di liquidazione determinano quando una posizione non è più sufficientemente coperta e può essere liquidata.
I flash loan sono ancora profittevoli?
I flash loan non sono automaticamente profittevoli, perché forniscono solo finanziamento temporaneo per una strategia specifica. Che una transazione generi profitto dipende dal risultato finale dopo tutti i costi e i rischi.
Nell’arbitraggio una strategia ha senso solo se il risultato realizzato è più alto di:
- il premio del flash loan;
- le gas fee;
- i costi di swap e di route;
- il price impact;
- lo slippage.
Il premio del flash loan non è una percentuale fissa universale. Può variare per protocollo, chain, deployment e configurazione e può essere cambiato. Anche il gas è variabile. I costi dipendono tra l’altro dalla quantità di calcolo, dalla base fee e dalla priority fee che fanno parte di una transazione su Ethereum.
Inoltre la concorrenza rende le piccole opportunità più fragili. I “searcher” automatizzati possono provare a sfruttare le stesse differenze di prezzo molto velocemente. In più, una simulazione o una quote non garantiscono che l’esecuzione reale mantenga lo stesso prezzo e lo stesso risultato.
Quindi i flash loan non sono un metodo per un rendimento fisso. Sono uno strumento tecnico che può avere valore solo quando una transazione concreta, dopo tutti i costi, resta conveniente.
Quali sono i vantaggi dei flash loan?
I flash loan danno agli smart contract accesso temporaneo a liquidità senza che l’iniziatore debba bloccare prima l’intero capitale come collateral per quel prestito temporaneo.
I vantaggi principali sono:
- Accesso temporaneo alla liquidità: una strategia può essere eseguita con un importo più grande di quello che chi esegue ha disponibile in anticipo per quel prestito specifico.
- Niente esecuzione parziale: grazie all’atomicità tutte le modifiche di stato vengono annullate se un passaggio necessario fallisce. Così non ti ritrovi con una posizione “a metà”.
- Più azioni in una transazione: prendere in prestito, fare swap, rimborsare, prelevare e depositare di nuovo possono essere eseguiti come un unico blocco.
- Gestione posizioni più efficiente: collateral swap e altre modifiche di posizioni DeFi possono essere unite senza dover finanziare separatamente ogni passaggio intermedio.
Senza capitale iniziale non significa senza costi. Per una transazione di flash loan di solito servono comunque token nativi per il gas. Inoltre può servire saldo per coprire un premio o un’esecuzione sfavorevole.
Quali rischi e limiti hanno i flash loan?
I flash loan portano con sé rischi tecnici, finanziari e di esecuzione, anche se il prestito diretto viene annullato quando il rimborso fallisce. La struttura atomica protegge soprattutto il fornitore di liquidità da un prestito diretto non rimborsato. Non elimina tutti i rischi per utente o sviluppatore.
Una transazione di flash loan è complessa. Receiver, token approval, swap, controlli di prezzo e rimborso devono collaborare senza errori. Un errore in una sola parte può far revertire l’intera transazione e costare gas.
Inoltre la capacità di prestito è limitata. Un protocollo può prestare solo quello che è disponibile nella reserve o pool rilevante. Quindi l’importo desiderato non è sempre disponibile.
Poi una transazione può riuscire tecnicamente e comunque essere svantaggiosa dal punto di vista economico. Per esempio uno swap può andare avanti a un prezzo pessimo se lo slippage consentito è impostato troppo alto.
Come si possono sfruttare errori negli smart contract?
Un flash loan può sfruttare su larga scala un bug già presente in un altro protocollo, perché un attaccante può controllare temporaneamente molti token. Il flash loan non crea quel bug, ma può fornire il capitale necessario per sfruttare la debolezza dentro una singola transazione.
Un design rischioso è per esempio un protocollo che si fida di un prezzo spot facilmente manipolabile. Un prezzo spot è il prezzo visibile in una pool in quel preciso momento. Un attaccante può influenzare il prezzo temporaneamente con una trade grande, eseguire un’azione dipendente e poi annullare la trade dentro la stessa transazione atomica.
Anche il possesso temporaneo di token può essere pericoloso quando un protocollo lo usa come segnale di sicurezza o governance senza protezioni aggiuntive. La governance è il processo con cui i partecipanti decidono regole o modifiche di un protocollo.
La protezione sta soprattutto in un buon design del protocollo. Esempi: oracoli di prezzo più robusti, dati di prezzo time-weighted quando opportuno, controlli su limiti economici e sviluppo difensivo e audit degli smart contract.
Che ruolo hanno costi di transazione e slippage?
Costi di transazione e slippage spesso determinano se una strategia con flash loan è davvero profittevole. Anche quando l’azione principale riesce, questi costi possono mangiarsi completamente un guadagno atteso.
Le gas fee sono i costi per il lavoro di calcolo eseguito su Ethereum. Transazioni complesse con più smart contract, swap e token approval consumano di solito più gas di un semplice trasferimento. Una transazione che reverte durante l’esecuzione può comunque costare gas.
Price impact e slippage non sono la stessa cosa:
- Price impact è la variazione di prezzo causata dalla tua stessa operazione. Di solito è più grande quando la trade è grande rispetto alla liquidità della pool.
- Slippage è la differenza tra il risultato atteso dello swap e quello che si riceve davvero. Il prezzo può cambiare tra il momento in cui la transazione viene preparata e il momento in cui viene eseguita.
Un limite di slippage troppo basso può far revertire una transazione. Un limite troppo alto può invece permettere che lo swap vada avanti a un prezzo molto peggiore. Per questo gas, premio, price impact e slippage vanno tutti sottratti dal ricavo lordo prima di poter considerare una strategia profittevole.
Qual è la differenza tra flash loan e crypto borrowing?
Flash loan e crypto borrowing sono entrambi modi per prendere in prestito crypto, ma funzionano in modo fondamentalmente diverso. Con il crypto borrowing un utente di solito apre una posizione di debito che può restare in piedi a lungo. Un flash loan invece serve per usare liquidità temporaneamente dentro una singola transazione sulla blockchain.
Nel crypto borrowing un utente di solito deposita crypto come collateral per poter prendere in prestito un altro crypto-asset. Il debito resta poi aperto finché non viene ripagato. Durante quel periodo possono accumularsi interessi. Se il valore del collateral scende troppo rispetto al debito, la posizione può essere liquidata.
Con un flash loan diretto non serve bloccare in anticipo collateral per il prestito temporaneo. Però l’importo preso in prestito deve essere rimborsato, insieme a un eventuale premio, dentro la stessa transazione. Se non succede, l’intera transazione reverte e le modifiche eseguite vengono annullate.
Le differenze sono chiare:
- Durata: il crypto borrowing può creare una posizione di debito che resta aperta per giorni, mesi o più. Un flash loan diretto esiste solo dentro una transazione.
- Collateral: nel crypto borrowing di solito serve collateral. In un flash loan diretto non serve collateral in anticipo per il prestito temporaneo.
- Rischio di liquidazione: nel crypto borrowing una posizione può essere liquidata quando il collateral non copre abbastanza. Un flash loan diretto non ha una posizione di lungo periodo che può essere liquidata: se il rimborso non riesce, la transazione reverte.
- Costi: nel crypto borrowing possono accumularsi interessi finché il debito resta aperto. In un flash loan di solito si paga un premio per l’uso temporaneo della liquidità.
- Uso: il crypto borrowing si usa per prendere capitale in prestito senza vendere subito il collateral. I flash loan si usano soprattutto per azioni DeFi automatizzate come arbitraggio, collateral swap e ristrutturazione di posizioni di prestito. In breve, il crypto borrowing serve per tenere un prestito nel tempo, mentre un flash loan fornisce liquidità temporanea per una serie di azioni eseguite dentro una singola transazione.
Aave V3 aggiunge una sfumatura. Tramite la funzione più completa flashLoan, una transazione può in certe condizioni finire in una normale posizione di debito quando c’è abbastanza collateral. In quel caso non è più un flash loan diretto standard, ma di fatto crypto borrowing.
In conclusione
Un flash loan è un mattoncino DeFi che permette a uno smart contract di usare liquidità temporaneamente e rimborsarla dentro la stessa transazione. Il punto forte è l’atomicità: tutti i passaggi riescono insieme, oppure la blockchain annulla l’intera transazione.
Per questo i flash loan possono essere utili per azioni composte come arbitraggio, collateral swap e modifiche di posizioni di prestito. Non danno un rendimento automatico e non sono un prestito “normale” da usare a lungo. Il risultato finale dipende da codice, liquidità disponibile, gas fee, price impact, slippage e dalla strategia scelta.
Soprattutto per sviluppatori e strategie DeFi automatizzate, i flash loan sono uno strumento potente. Allo stesso tempo, usarli in modo sicuro richiede smart contract affidabili, buoni controlli di prezzo e un calcolo realistico di tutti i costi e rischi.