La blockchain ha fame di dati
Molte persone stanno iniziando a comprendere che gli smart contract rappresentano il futuro degli scambi digitali, dati tutti i vantaggi che essi comportano: ad esempio l’eliminazione dell’elemento fiduciario e il risparmio sui costi.
Ad alto livello, uno smart contract è un programma composto da codice che ne definisce la funzione e lo stato.
Gli smart contract operano sulla blockchain, dove vengono eseguiti in modo autonomo e trasparente al verificarsi di specifiche condizioni predeterminate. La blockchain trasmette la sua immutabilità agli smart contract poiché, una volta che sono lanciati sulla blockchain, non possono essere modificati.
L’esecuzione degli smart contract è trustless, venendo eliminata la necessità di intermediari. La loro caratteristica di esecuzione basata su parametri hard-coded è estremamente utile in una varietà di scenari, come accordi legali e sistemi di pagamento automatizzati.
Nonostante i loro evidenti vantaggi, gli smart contract sono limitati a una manciata di dati e informazioni presenti sulla blockchain. Questo limite ostacola l’interazione con il mondo reale e la possibilità di esecuzione in base a condizioni esterne alla blockchain.
Le blockchain sono come delle isole digitali separate dai dati del resto del mondo.
Queste limitazioni tecniche implicano che gli smart contract, di per sé soli, non possono accedere ai dati presenti nei sistemi esistenti, che sono necessari per innescare la loro esecuzione in base a eventi esterni alla blockchain.
Se ad esempio uno smart contract regola le scommesse sull’esito di una partita di calcio, deve poter accedere al risultato dell’evento (esterno alla blockchian) per stabilire chi è vincitore e chi è perdente.
Uno smart contract è progettato per ricevere un input → eseguire una logica → aggiornare di conseguenza lo stato della blockchain.
La maggior parte dei dati del mondo è presente al di fuori della blockchain, quindi é cruciale avere un ponte tra i vecchi sistemi e le nuove tecnologie del ledger distribuito. In questo modo i sistemi legacy e le blockchain possono sfruttare i vantaggi reciproci, consentendo loro di beneficiare l’uno dell’altro.
Facilitare l’integrazione con fonti di dati esterne costituisce uno degli obiettivi primari per l’adozione della tecnologia blockchain.
Negli ambienti aziendali i dati sono distribuiti su migliaia di sistemi eterogenei. Una blockchain, per avere successo, deve offrire modelli adeguati di integrazione per accedere a tali fonti di dati.
Paradossalmente, questo problema rimane relativamente ignorato rispetto ad altri aspetti dell’ecosistema blockchain. Si parla molto si scalabilità, ma l’interazione tra la blockchain e il mondo esterno non è una questione di lana caprina rispetto alla diffusione su larga scala di questa tecnologia.
Oracoli
Nelle architetture blockchain, utilizziamo il termine “Oracle” con riguardo all’entità che si occupa di accedere ai dati esterni senza violare l’integrità della blockchain.
Nell’antica Grecia, gli oracoli erano persone sacre che interpretavano la volontà degli dei e la trasmettevano al popolo.
Il ruolo dell’oracolo è quello di collegare il mondo esterno alla rete della blockchain, senza violarne l’integrità dello stato.
Il concetto di Oracolo è presente in molte blockchain sin dai primi tempi di Ethereum. Tuttavia il suo principale limite rimane ancora in gran parte irrisolto.
Il maggiore limite di questo sistema di connessione tra blockchain e dati del mondo esterno, risiede nel fatto che la maggior parte degli oracoli introduce un livello di fiducia che contraddice direttamente la natura trustless della blockchain.
Consentire agli smart contract di acquisire input dall’esterno costituisce un’arma a doppio taglio: aumenta esponenzialmente i casi d’uso, permettendo interazioni con il mondo esterno, ma introduce anche un elemento di fiducia.
I miners di una blockchain permissionless non possono verificare in modo deterministico tutti gli input esterni, e quindi consentiranno l’esecuzione di qualsiasi cosa che corrisponda ai criteri predefiniti nello smart contract.
Pensa all’esempio di uno smart contract che consente a due persone di scommettere sul prezzo di ether al 1 gennaio 2020.
Tizio e Caio depositano 1 ether ciascuno nello smart contract. Tizio scommette sul fatto che alle ore 00.00 dell’1 gennaio 2020 il prezzo di ether sarà superiore a 1000,00 euro. Caio scommette sull’esito opposto.
Se il prezzo supererà la soglia dei 1000,00 euro Tizio riceverà come vincita 2 ether. Nel caso contrario, il premio sarà corrisposto a Caio.
Lo smart contract non ha contezza del prezzo di 1 ether. È necessario trovare una soluzione per garantire che venga riportato solo il prezzo corretto, soprattutto perché l’esito della scommessa diventa irreversibile una volta avvenuto il settlment sulla blockchain.
A tale scopo abbiamo bisogno di oracoli.
L’oracolo è un’entità che firma attestazioni sullo stato del mondo. Ad esempio potrebbe riportare il prezzo di ETH/EUR su Kraken all’1 gennaio 2020.
L’ecosistema blockchain è costituito da diverse tipologie di oracoli. A seconda dei canali attraverso cui i dati esterni possono essere veicolati nelle applicazioni blockchain, in genere si procede alla seguente categorizzazione:
- Oracoli Umani: sono modelli di oracolo in cui ci sono persone che accedono a dati esterni e li immettono in una blockchain.
- Oracoli App: si tratta di modelli di oracolo basati su applicazioni software che contengono dati richiesti nelle applicazioni blockchain.
- Oracoli Hardware: sono oracoli che fanno affidamento sui cosiddetti ‘Trusted Execution Environments (TEE)”, per isolare il codice che accede a dati esterni alla blockchain.
A seconda del grado di centralizzazione, si distingue tra:
- Oracoli Centralizzati: si tratta di modelli di oracolo che si basano su informazioni fornite da un’applicazione centralizzata.
- Oracoli Federati: sono modelli di oracolo in cui le informazioni esterne sono convalidate da un numero limitato di nodi collegati al fornitore di dati principale.
- Oracoli Decentralizzati: si tratta di modelli di oracolo in cui tutto, dalla selezione dell’oracolo alla convalida delle informazioni, viene ottenuto utilizzando protocolli di consenso decentralizzati.
Che tipo di oracoli?
Gli oracoli sono vulnerabili a comportamenti scorretti, che possono materializzarsi in attacchi alla blockchain. Un oracolo centralizzato potrebbe decidere di fornire dati inaccurati, che possono influenzare il comportamento dei nodi blockchain e renderli vulnerabili a un attacco.
Non esiste una soluzione valida per tutte le applicazioni. Possiamo aspettarci che le applicazioni adottino un approccio basato sul rischio, per decidere quante fonti sono necessarie per i diversi casi d’uso.
Una singola fonte di dati è corruttibile, e quindi non sufficiente. Coinvolgere più fonti è probabilisticamente più sicuro, ma meno efficiente e più costoso. È probabile che vengano adottate una serie di soluzioni che centrino il giusto compromesso tra costi e decentralizzazione, a seconda della posta in gioco.
Ad esempio, la temperatura a Milano può essere trasmessa da un singolo oracolo, se si tratta di un’app per smartphone in cui è tollerata una precisione approssimativa. Ma se la temperatura riportata viene utilizzata per regolare un contratto di assicurazione da 10 milioni di euro, sarebbe opportuno coinvolgere diversi e numerosi oracoli: dati satellitari, dati locali dei sensori e così via.
Più è decentralizzato il sistema di oracoli, meglio si allinea allo spirito trustless della blockchain, riducendo il rischio di un single point of failure.
Le possibili opzioni per mitigare il rischio di vulnerabilità di una singola entità sono:
- Più fonti di dati
Il modo più semplice per ridurre la probabilità di segnalazione di dati falsi è avere un oracolo che aggreghi più fonti di dati. In tal caso, ci sono solo due modi per ricevere dati errati: la maggior parte delle fonti sono state compromesse o l’oracolo stesso è stato compromesso (lasciando un single point of failure).
- Oracoli multipli
Aumentando il numero di oracoli, si riducono le probabilità che tutti siano malevoli, mantenendo il sistema sicuro finché la maggioranza è onesta. Tuttavia, il rischio che tutti gli oracoli trasmettano informazioni errate, intenzionalmente o meno (se le stesse fonti sono state compromesse), non è del tutto escluso.
- Skin in the Game
Le reti decentralizzate possono codificare determinati meccanismi di incentivi per indurre gli attori a comportarsi nell’interesse della rete e a essere ricompensati in tal senso. Utilizzando l’ingegneria dei token, le reti di oracoli decentralizzate possono imporre ai nodi di vincolare un deposito, solitamente nel token nativo della rete. Se si comportano bene, guadagnano ricompense per il loro lavoro. In caso contrario, perdono una percentuale dei loro fondi. Questo meccanismo garantisce che gli oracoli abbiano i giusti incentivi per diffondere dati accurati.
Per affrontare i problemi legati agli oracoli, alcune piattaforme hanno stabilito protocolli finanziari, di reputazione e di governance che mitigano la vulnerabilità agli oracoli malevoli.
Stiamo assistendo a una nuova generazione di protocolli Oracle che estendono i concetti di base degli oracoli di Ethereum, per consentire l’implementazione di modelli di accesso a dati esterni molto sofisticati.
Esistono diversi progetti che lavorano alla risoluzione dei problemi degli oracoli, con vari gradi di decentralizzazione. Prevedono diversi meccanismi di incentivi per ridurre l’affidamento su singoli intermediari trusted, introducendo sofisticati meccanismi di prevenzione degli attacchi.
In un altro articolo, parleremo nello specifico di qualche progetto che mira a risolvere il problema della comunicazione trusted tra blockchain e mondo esterno.
Commenti
Una risposta
Complimenti, ho trovato l’articolo utile, ben scritto e strutturato.