Manipolazione degli oracoli: modelli a spinta e a richiesta, soglie di scostamento, medie nel tempo e i parametri che riducono la superficie di rischio.
Un contratto di prestito controlla il valore della garanzia depositata, lo confronta con il debito e decide se chiudere la posizione. Tutta la logica è pubblica, verificata da più revisori e non contiene errori. Il numero su cui si basa arriva da fuori, e per una manciata di secondi vale il doppio di quanto dovrebbe.
In quella manciata di secondi il contratto fa esattamente quello che è stato scritto per fare, e il risultato è un prestito concesso su una garanzia che non esiste. Non c’è nessun difetto nel codice: c’è un dato di ingresso sbagliato, e nessun sistema deterministico può accorgersene da solo.
Il testo che segue descrive i modelli di oracolo in uso, i parametri che ne governano il comportamento e le categorie di attacco documentate contro la fonte del prezzo. È materiale tecnico per chi valuta un’infrastruttura: non contiene valutazioni economiche, non suggerisce dove operare e non anticipa alcun andamento.
I parametri che contano, in breve
- Frequenza minima. Ogni quanto la fonte è tenuta ad aggiornare anche se nulla si muove.
- Soglia di scostamento. Di quanto il prezzo deve cambiare perché scatti un aggiornamento anticipato.
- Numero di segnalatori. Quanti soggetti indipendenti concorrono al valore finale e con quale regola di aggregazione.
- Verifica di obsolescenza. Il contratto deve rifiutare un dato più vecchio di un limite dichiarato.
- Profondità del mercato di riferimento. Un oracolo corretto su un mercato sottile resta una fonte fragile.
- Limiti e interruttori. Valori minimi e massimi codificati sono una difesa e, in certi casi, la causa del danno.
Che cosa fa un oracolo e dove finisce la sua responsabilità
Un contratto non può interrogare nulla al di fuori della catena su cui vive: l’esecuzione deve dare lo stesso risultato su ogni nodo, e una chiamata a un servizio esterno romperebbe questa proprietà. Un oracolo risolve il problema spostando la lettura all’esterno e portando il risultato dentro con una transazione ordinaria.
Ne segue che l’oracolo non è un componente della catena ma un ponte verso il mondo, e la sua correttezza dipende da tre anelli distinti. Il primo è la fonte, cioè il luogo dove il prezzo si forma davvero. Il secondo è l’aggregazione, cioè la regola con cui più letture diventano un numero solo. Il terzo è la pubblicazione, cioè chi scrive quel numero sulla catena e con quale frequenza.
Quasi tutte le analisi si concentrano sul terzo anello, che è il più visibile, e trascurano il primo, che è il più fragile. Un sistema di segnalazione impeccabile che legge un mercato con pochissimi scambi produce un dato tecnicamente corretto e sostanzialmente inaffidabile, ed è la situazione in cui si trova buona parte dei protocolli che ammettono garanzie poco scambiate, come chi si occupa di finanza senza intermediari verifica ogni volta che si aggiunge un nuovo strumento.
Modello a spinta e modello a richiesta
Nel modello a spinta un insieme di segnalatori pubblica il prezzo sulla catena secondo regole prestabilite, e il contratto si limita a leggere l’ultimo valore memorizzato. Il costo delle transazioni di aggiornamento è a carico dell’infrastruttura, il dato è disponibile immediatamente e la sua freschezza dipende dalle regole di pubblicazione.
Nel modello a richiesta il prezzo viene firmato fuori dalla catena e conservato altrove. Chi ha bisogno di usarlo allega il dato firmato alla propria transazione, e il contratto verifica la firma e la data prima di accettarlo. Il costo si sposta su chi opera, gli aggiornamenti possono essere molto più frequenti perché non gravano su nessuno finché non servono, e il dato arriva sempre nello stesso blocco in cui viene usato.
La differenza di profilo di rischio è netta. Il modello a spinta espone alla staticità: fra due aggiornamenti il valore letto può essere lontano da quello reale. Il modello a richiesta espone alla selezione: chi invia la transazione sceglie quale fra i dati firmati disponibili presentare, e se il contratto non impone una finestra temporale stretta può scegliere quello che gli conviene. Le due debolezze si correggono in modi diversi, e il difetto ricorrente è applicare a un modello le contromisure pensate per l’altro.
Frequenza di aggiornamento e soglia di scostamento
Le fonti a spinta pubblicano secondo due criteri combinati. Il primo è un intervallo massimo: passato un certo tempo dall’ultimo aggiornamento, si pubblica comunque, anche se il prezzo non si è mosso. Il secondo è una soglia di variazione: se il prezzo si allontana dall’ultimo valore pubblicato oltre una certa percentuale, l’aggiornamento parte subito senza attendere la scadenza.
La conseguenza da tenere a mente è che il valore letto sulla catena è legittimamente diverso da quello di mercato, entro l’ampiezza della soglia. Non è un difetto: è il compromesso fra costo di pubblicazione e precisione. Un protocollo che concede prestiti deve dimensionare i propri margini tenendo conto di quella distanza, altrimenti si trova con posizioni scoperte proprio nei momenti di movimento rapido, quando la distanza è massima.
Le soglie tipiche si collocano fra frazioni di punto percentuale per gli strumenti più scambiati e valori decisamente più larghi per quelli meno frequentati, con intervalli massimi che vanno da pochi minuti a diverse ore. Sono numeri pubblicati nella documentazione, e vanno letti insieme: una soglia stretta con un intervallo lunghissimo protegge poco durante una fase piatta seguita da un movimento brusco, perché l’aggiornamento arriva solo quando il movimento ha già superato la soglia.
Come funziona la manipolazione degli oracoli in un solo blocco

La forma classica non attacca il segnalatore: attacca il mercato che il segnalatore osserva. Se il prezzo usato da un contratto viene letto direttamente dal rapporto fra le riserve di una pozza di scambio, quel rapporto si può modificare con un’operazione, e l’operazione si può eseguire nello stesso blocco in cui si sfrutta il prezzo alterato.
La sequenza è sempre la stessa e sta dentro una singola transazione. Si prende in prestito una somma con l’obbligo di restituirla entro la fine dell’esecuzione, si scambia contro l’attività di riferimento spingendo il rapporto delle riserve dove serve, si chiama il contratto vittima che legge il prezzo così alterato, si riporta la pozza al punto di partenza e si restituisce il prestito. Il risultato netto è la differenza estratta dal contratto vittima, e il costo è la commissione dei passaggi.
Il fattore che rende praticabile l’attacco è la sproporzione fra la profondità della pozza usata come fonte e il capitale disponibile per un istante. Su un mercato profondo l’operazione richiede somme enormi e lascia sul tavolo commissioni altrettanto grandi. Su un mercato sottile bastano importi modesti, e la superficie di rischio si allarga a ogni nuovo strumento ammesso con una fonte di prezzo improvvisata: è il motivo per cui la valutazione delle fonti va rifatta a ogni ampliamento dell’elenco, e non solo al lancio di un’infrastruttura ancora in costruzione.
La media ponderata nel tempo non è una difesa universale
La contromisura più diffusa consiste nel non leggere il prezzo istantaneo ma una media calcolata su una finestra di blocchi. Chi volesse alterarla dovrebbe mantenere lo squilibrio per tutta la finestra, esponendosi per quel periodo a chiunque voglia riportare il prezzo in linea guadagnandoci.
Il costo dell’attacco passa così da un’operazione singola a una posizione sostenuta nel tempo, e questo elimina la variante economica. Restano però tre situazioni in cui la difesa si indebolisce. La prima è la finestra troppo corta, che riduce di poco il costo di manipolazione. La seconda è il mercato sottile, dove mantenere lo squilibrio resta economico anche per decine di blocchi. La terza riguarda le reti dove l’ordine delle transazioni è deciso da un solo componente: se chi ordina collabora o è compromesso, la sequenza necessaria diventa molto più facile da comporre.
C’è poi un effetto collaterale che va contabilizzato. Una media ritarda per costruzione, quindi durante un movimento reale e rapido il valore letto dal contratto resta indietro rispetto al mercato. Le posizioni che andrebbero chiuse non vengono chiuse in tempo, e il protocollo accumula perdite non perché il dato sia falso, ma perché è vecchio. Allungare la finestra aumenta la resistenza alla manipolazione e peggiora la reattività: il parametro va scelto sapendo che sposta il rischio, non che lo elimina.
Gli attacchi documentati alla fonte del prezzo
Le perdite riconducibili a questa categoria si raggruppano in quattro schemi ricorrenti, tutti descritti in analisi pubbliche successive agli episodi.
- Fonte istantanea su mercato sottile. Il caso più frequente, spesso su strumenti aggiunti da poco all’elenco delle garanzie accettate.
- Dato obsoleto accettato senza controlli. Il contratto legge l’ultimo valore disponibile senza verificarne l’età, e continua a operare su un prezzo fermo da ore.
- Limite inferiore che diventa il prezzo. Alcune fonti prevedono un valore minimo codificato: quando il mercato scende sotto quella soglia, il dato pubblicato resta fermo al minimo e il protocollo valuta le garanzie molto più di quanto valgano.
- Interruzione del servizio di ordinamento. Su una rete di secondo livello, un fermo prolungato blocca gli aggiornamenti: alla ripresa il primo prezzo pubblicato può differire in modo consistente dall’ultimo, con effetti immediati sulle chiusure forzate.
I quattro schemi hanno in comune l’assenza di un controllo che il contratto avrebbe potuto fare da solo. Le raccomandazioni generali sulla verifica degli ingressi, che l’agenzia europea per la cibersicurezza ripete per qualunque sistema che accetti dati da fuori, si applicano qui senza modifiche: nessun dato esterno va usato senza validarne freschezza, provenienza e plausibilità.
Tre fonti di prezzo sulla stessa scala
| Voce | Prezzo istantaneo da pozza | Media su finestra di blocchi | Rete di segnalatori |
|---|---|---|---|
| Chi fornisce il dato | Il mercato stesso, senza intermediari | Il mercato, mediato nel tempo | Più soggetti indipendenti, aggregati |
| Costo di manipolazione | Una sola operazione | Posizione sostenuta per la finestra | Compromissione di più segnalatori |
| Ritardo rispetto al mercato | Nessuno | Pari a metà finestra, circa | Fino all’intervallo massimo dichiarato |
| Costo di esercizio | Nullo | Basso | A carico dell’infrastruttura o di chi opera |
| Punto di rottura | Profondità del mercato di riferimento | Reti con ordinamento centralizzato | Collusione o guasto simultaneo |
| Adatto a | Nulla che comporti garanzie | Strumenti profondi e molto scambiati | Impieghi in cui serve un valore esterno alla catena |
La riga da leggere per prima è l’ultima. Il prezzo istantaneo di una pozza è un dato utile per eseguire uno scambio, non per valutare una garanzia, e ogni volta che è stato usato per il secondo scopo il risultato è stato lo stesso. Non si tratta di un’implementazione da migliorare: è un uso improprio della grandezza.
I controlli che il contratto deve fare da solo

Indipendentemente dalla fonte scelta, il contratto che consuma il dato ha una responsabilità propria e non delegabile. Il primo controllo è l’età: ogni lettura restituisce un momento di aggiornamento, e se la distanza dal presente supera un limite dichiarato l’operazione va rifiutata invece di proseguire con il valore vecchio.
Il secondo è la plausibilità. Limiti minimi e massimi assoluti hanno senso come protezione contro valori palesemente errati, purché siano molto larghi: stretti diventano essi stessi la causa del danno, come mostra lo schema del limite inferiore che si sostituisce al prezzo. Un controllo migliore è la variazione massima ammessa fra due letture consecutive, che intercetta i salti anomali senza inchiodare il valore.
Il terzo è la coerenza fra fonti. Confrontare due oracoli indipendenti e sospendere le operazioni quando la distanza supera una soglia costa poco e intercetta la maggior parte dei guasti singoli. Il quarto, sulle reti di secondo livello, è la verifica che il componente di ordinamento sia stato attivo: dopo un’interruzione occorre attendere un periodo di riallineamento prima di riprendere le chiusure forzate. Le interfacce standard che espongono queste informazioni sono descritte nella raccolta delle specifiche di riferimento, e la loro assenza in un contratto è un segnale di per sé.
Nove parametri da cercare nella documentazione
- Quale fonte, nel dettaglio. Non basta il nome dell’infrastruttura: serve sapere quali mercati vengono osservati.
- Quanti segnalatori indipendenti concorrono al valore e con quale regola di aggregazione.
- L’intervallo massimo fra due aggiornamenti, dichiarato per ciascuno strumento e non in generale.
- La soglia di scostamento, con lo stesso livello di dettaglio.
- Il limite di obsolescenza applicato dal contratto, che deve essere più stretto dell’intervallo massimo.
- La presenza di valori minimi o massimi codificati e la loro ampiezza.
- La finestra della media, dove viene usata, espressa in blocchi e non in minuti.
- La procedura in caso di guasto: sospensione automatica, fonte di riserva o intervento manuale.
- Chi può cambiare tutti i parametri precedenti, con quale ritardo obbligatorio.
L’ultimo punto è quello che chiude il ragionamento. Un insieme di parametri prudente vale finché qualcuno non lo modifica, e in molti protocolli quella modifica richiede una singola transazione. Verificare chi la può firmare e con quale preavviso è parte della valutazione tanto quanto il resto, e vale per ogni strumento ammesso, con un’attenzione particolare a quelli caratterizzati da variazioni di prezzo ampie e improvvise.
Domande frequenti
Perché non si usa semplicemente il prezzo di una pozza sulla stessa catena?
Perché quel prezzo è modificabile da chiunque disponga di capitale per la durata di una transazione, e riportato al valore iniziale nella stessa esecuzione. Serve a stabilire quanto si ottiene da uno scambio in quel momento, non a stimare il valore di una garanzia. L’uso improprio di questa grandezza è all’origine di gran parte delle perdite documentate.
Una media su più blocchi elimina il problema?
Lo rende molto più costoso, non impossibile. Su mercati sottili o su reti dove l’ordine delle transazioni è controllato da un solo componente, mantenere lo squilibrio per l’intera finestra resta praticabile. In cambio si introduce un ritardo che, durante i movimenti reali, lascia scoperte le posizioni che andrebbero chiuse.
Che cosa significa che un dato è obsoleto?
Che l’ultimo aggiornamento risale a più tempo di quanto il contratto dovrebbe accettare. Ogni lettura restituisce il momento in cui il valore è stato pubblicato, e il contratto ha il compito di confrontarlo con il presente e rifiutare l’operazione oltre un limite. Un contratto che non esegue questo confronto opera su un prezzo che potrebbe essere fermo da ore.
Più segnalatori significa sempre più sicurezza?
Solo se sono davvero indipendenti. Dieci soggetti che leggono tutti lo stesso mercato e usano la stessa infrastruttura falliscono insieme, e l’aggregazione non aggiunge nulla. Le domande utili sono quante fonti distinte concorrono al valore, chi gestisce i nodi e se esiste un fornitore comune a tutti i partecipanti.
Come verifico da solo i parametri di un protocollo?
Leggendo il contratto sull’esploratore della catena. Le funzioni che restituiscono l’indirizzo dell’oracolo, il limite di obsolescenza e le soglie sono quasi sempre pubbliche e consultabili senza inviare transazioni. Confrontare quei valori con quanto scritto nella documentazione è una verifica di dieci minuti che rivela spesso discrepanze.
Un protocollo non è più solido del numero peggiore che accetta in ingresso. Chi valuta questi sistemi guardando soltanto il codice sta esaminando la metà robusta del problema, e quasi mai è quella da cui arrivano le perdite.
