Introduzione agli Oracoli nella Blockchain
Nel campo della blockchain, un oracle è un sistema che fornisce informazioni esterne ai contratti smart sulla catena. Come middleware, l’oracle connette i contratti smart e il mondo esterno alla blockchain, svolgendo un ruolo infrastrutturale estremamente critico. La sua funzione principale è fornire dati per i contratti smart eseguiti sulla blockchain.
Esempio di Utilizzo di un Oracle
Ad esempio, se creiamo un contratto smart sulla rete Ethereum che necessita di accedere ai dati sul volume di trading del petrolio greggio in una certa data, possiamo utilizzare un oracle, poiché il contratto smart stesso non può ottenere questo tipo di dati reali off-chain. In questo caso, il contratto smart registrerà il volume di trading del petrolio nella data richiesta nel registro eventi e verrà avviato un processo off-chain per monitorare e iscriversi a questo registro eventi.
Chainlink: il Leader tra gli Oracoli
Nella blockchain, Chainlink detiene la quota di mercato più grande tra gli oracoli. Chainlink è un progetto di oracle decentralizzato che fornisce dati reali alla blockchain in modo estremamente sicuro. Ha stabilito un ecosistema a ciclo virtuoso attorno al token LINK attraverso incentivi economici.
Per attivare il servizio dell’oracle, è necessario trasferire token LINK, un contratto ERC 677 sulla rete Ethereum. La funzione oracle basata su LINK appartiene alla modalità richiesta/riposta, sfruttando il metodo transferAndCall degli ERC 677.
“Chainlink ha proposto uno standard adatto per gli scenari di servizi oracle: l’ERC 677, che unisce pagamento e richiesta di servizio in un’unica operazione.”
Funzionamento del Metodo onTokenTransfer
Quando un utente esegue un transferAndCall, oltre al trasferimento di LINK, si verifica se l’indirizzo del destinatario è un contratto. Se sì, verrà chiamato il metodo onTokenTransfer di quel contratto. Prima di richiedere il servizio dall’oracle, è fondamentale verificare l’affidabilità dell’oracle scelto.
La classificazione della credibilità dell’oracle e la richiesta on-chain sono aspetti importanti. Il metodo onTokenTransfer verifica se il trasferimento riguarda il token LINK e controlla la lunghezza dei dati e la presenza di un selettore di funzione che inizia con oracleRequest.
Processo di Richiesta e Risposta degli Oracoli
La richiesta dell’oracle include l’ID unico derivato dal richiedente. Se validato, si imposta un tempo di scadenza e l’ID della richiesta viene aggiunto ai commitments.
È fondamentale emettere un evento OracleRequest contenente i dati richiesti. Ad esempio, un aggregatore Chainlink per ETH/USD registrerà un evento OracleRequest dopo aver ricevuto una richiesta dati.
Dopo la richiesta, se l’oracle restituisce i dati, saranno forniti con l’indirizzo, l’ID del metodo da chiamare e il tempo di scadenza. La velocità di risposta è cruciale, quindi si consiglia di utilizzare il servizio nodo ZAN.
Esempio Pratico dal Team Chainlink
Questo articolo ha presentato un metodo di esempio “requestEthereumPrice” dal contratto “TestnetConsumer” fornito da Chainlink, illustrando brevemente il processo di richiesta e risposta. Ogni coppia di trading ha un feed di prezzo separato o Aggregator, il cui accesso è generalmente semplice attraverso metodi definibili in base alla necessità.
Questo articolo è stato scritto da XiG (X account) del Team ZAN (X account).