Vai al contenuto

Prestito flash

Un prestito flash fornisce liquidità temporanea on-chain all'interno di un'unica transazione atomica. Scopri come callback, controlli sul rimborso, arbitraggio, liquidazioni, commissioni, MEV e vulnerabilità dei protocolli influiscono sul risultato.

Aggiornato

Solo a scopo educativo; non costituisce consulenza finanziaria. Gli investimenti possono comportare perdite.

Risposta diretta

Un prestito flash è liquidità messa a disposizione da contratti intelligenti per la durata di un’unica transazione atomica. Nella forma classica, il debitore non deposita garanzie perché il contratto di prestito richiede che il capitale e la commissione siano restituiti prima del termine della transazione. Se il regolamento richiesto non avviene, l’esecuzione viene annullata e le modifiche allo stato della transazione non persistono.

Questo meccanismo consente a un contratto di utilizzare capitale temporaneo per un arbitraggio, una liquidazione, uno scambio di garanzie o un rifinanziamento del debito senza che l’operatore finanzi in anticipo l’intero capitale. Non crea denaro gratis: la strategia deve coprire la commissione del prestito, le commissioni di negoziazione, lo slippage, il gas e qualsiasi esecuzione sfavorevole o MEV. Alcune varianti di protocollo possono aprire una normale posizione debitoria invece di richiedere il rimborso immediato, ma questa opzione necessita di garanzie o delega del credito e non deve essere confusa con un prestito flash senza garanzie.

I prestiti flash possono amplificare sia le transazioni utili sia gli attacchi. Forniscono capitale; un exploit che produce perdite dipende comunque da un’altra debolezza, come un input di prezzo manipolabile, una contabilità errata, una callback non sicura o una regola di governance.

Come funziona

  1. Richiesta: Un contratto ricevente chiede a un pool di liquidità un asset e un importo, ad esempio 10,000,000 USDC, e fornisce tutti i parametri necessari alla propria strategia.
  2. Trasferimento e callback: Il pool trasferisce l’asset e poi chiama il ricevente. Ogni scambio, liquidazione, rimborso o modifica delle garanzie avviene tramite chiamate a contratti annidate nella stessa transazione.
  3. Esecuzione della strategia: Il ricevente utilizza i fondi temporanei. Poiché le chiamate esterne possono rientrare nei contratti o generare prezzi inattesi, le implementazioni richiedono un controllo degli accessi esplicito, input convalidati, limiti allo slippage e una gestione sicura delle autorizzazioni.
  4. Controllo del regolamento: Il ricevente autorizza o trasferisce l’importo dovuto. In un semplice flusso in stile Aave, il pool preleva il capitale più il premio dopo la callback; un saldo o un’autorizzazione insufficienti causano l’annullamento.
  5. Risultato atomico: Se tutte le chiamate riescono, viene registrato lo stato finale. Se si verifica un errore non intercettato o il regolamento fallisce, l’eccezione di Solidity che ripristina lo stato annulla le modifiche nella chiamata e nelle relative sottochiamate. Il mittente può comunque perdere il gas speso per la transazione fallita.

L’atomicità elimina l’esposizione creditizia del prestatore all’interno della transazione; non garantisce che la strategia del debitore sia redditizia, privata o programmata correttamente. La liquidità disponibile, gli asset abilitati, i premi, le interfacce di callback, le opzioni di conversione in debito e i controlli di sospensione sono specifici del protocollo e possono cambiare tramite la governance.

Esempio

Supponiamo che un contratto prenda in prestito 10,000,000 USDC per acquistare un asset in un pool e venderlo in un altro. Sia A il capitale, F la commissione del prestito flash, G i costi di gas e di esecuzione, S lo slippage e gli altri costi di negoziazione e R gli USDC ricevuti dalla vendita. Una condizione semplificata per il pareggio è R >= A + F + G + S.

Supponiamo che i due scambi restituiscano 10,012,000 USDC, che il prestito richieda 10,009,000 USDC inclusi capitale e commissione e che il gas più gli altri costi di esecuzione siano pari a 2,000 USDC. Il profitto semplificato è 10,012,000 - 10,009,000 - 2,000 = 1,000 USDC.

Questo margine apparente può scomparire prima dell’inclusione. Altri ricercatori possono copiare la transazione o rilanciare l’offerta, le riserve del pool possono cambiare, un token può addebitare una commissione di trasferimento inattesa oppure la transazione può essere annullata dopo aver consumato gas. Il contratto dovrebbe imporre un output minimo accettabile e annullare l’operazione quando il risultato effettivo è inferiore; una quotazione mostrata in una dashboard non è un profitto eseguibile.

Rischi

  • Rischio di strategia e di contratto: Un errore di programmazione, un’autorizzazione non sicura, un token malevolo, un percorso di rientro o un’autorizzazione errata della callback possono causare la perdita dei fondi già detenuti dal contratto ricevente.
  • Rischio di prezzo, liquidità e slippage: Un differenziale quotato può scomparire quando le riserve cambiano. I pool poco liquidi possono produrre un forte impatto sul prezzo e un oracolo basato su un mercato spot manipolabile può consentire al capitale temporaneo di distorcere le decisioni del protocollo.
  • Rischio di MEV e di ordinamento: Le transazioni pubbliche in attesa possono essere copiate, inserite in un sandwich, anticipate o seguite. L’invio privato riduce parte dell’esposizione, ma introduce dipendenze da builder o relay e non garantisce l’inclusione.
  • Rischio di commissioni e annullamento: Devono essere coperti i premi del prestito, le commissioni degli exchange, il gas, le commissioni di trasferimento dei token e le commissioni di priorità. Un’operazione annullata normalmente perde il gas, anche se le sue modifiche allo stato vengono ripristinate.
  • Rischio di protocollo e governance: Sospensioni, aggiornamenti, modifiche dei premi, prelievi di liquidità, guasti degli oracoli e malfunzionamenti di qualsiasi protocollo integrato possono invalidare una strategia altrimenti solida.
  • Rischio operativo e legale: Chiavi compromesse, indirizzi errati, automazione inaffidabile, sanzioni, imposte o altre norme specifiche della giurisdizione possono generare perdite o obblighi al di fuori del calcolo del contratto intelligente.

Per chi esamina i protocolli, la presenza di un prestito flash nella traccia di un incidente dimostra un finanziamento temporaneo, non la causa principale. Occorre riprodurre le transizioni di stato e individuare quale invariante, fonte di prezzo, autorizzazione o regola contabile abbia consentito la fuoriuscita di valore.

Idee sbagliate comuni

Mito 1: Un prestito flash è capitale gratuito

È liquidità temporanea soggetta a rigide condizioni di regolamento. Una strategia sostenibile deve rimborsare l’importo richiesto e coprire comunque ogni costo di esecuzione; in caso contrario viene annullata o perde denaro.

Mito 2: Il debitore può trattenere i fondi fino a un momento successivo del blocco

Il prestito classico deve essere regolato all’interno della stessa pila di chiamate della transazione, non semplicemente in un momento qualsiasi dello stesso blocco. I fondi non possono essere trasferiti a un wallet e rimborsati in una transazione successiva.

Mito 3: L’esecuzione atomica elimina ogni possibile perdita

L’atomicità annulla le modifiche allo stato dopo un errore non intercettato, ma non rimborsa il gas già consumato. Inoltre, non impedisce prezzi sfavorevoli, autorizzazioni esposte, MEV o perdite sui fondi che il ricevente possedeva prima della chiamata.

Mito 4: Ogni prestito flash è un attacco

Arbitraggio, liquidazioni, scambi di garanzie e rifinanziamenti del debito sono utilizzi ordinari. L’exploit risiede nell’assunto errato relativo a oracolo, autorizzazioni, contabilità, governance o callback; il prestito flash può limitarsi a fornire abbastanza capitale temporaneo da consentirne lo sfruttamento.

Mito 5: Un ampio differenziale quotato garantisce un profitto

Il profitto dipende dai prezzi eseguibili e dall’ordine delle transazioni, dopo tutte le commissioni e lo slippage. Simula rispetto allo stato del blocco previsto, imposta output minimi e considera una transazione fallita o superata da un’offerta più alta come un costo reale.

Argomenti correlati

Fonti

Navigazione

Cerca nella wiki...