30 Oct Ethereum Solidity Oraclize API
La forza di un network decentralizzato è che ogni nodo della rete può essere indipendente e dare il proprio contributo alle esigenze di calcolo richieste. Se un nodo smette di funzionare gli altri contnueranno il loro lavoro senza interruzioni. A causa però della necessità della blockchain di mantenere una grossa quantità di informazioni per operare come un full node, soltanto alcuni attori, i quali hanno grandi disponibilità economiche potranno operare in tal senso andando a memorizzare in enormi database la blockchain stessa.
Attualmente la più grossa mining farm è riuscita a processare da sola il 50% delle transazioni mondiali andando a scontrarsi con il concetto inizialmente “professato” dal whitepaper di Satoshi relativo alla decentralizzazione di tale capacità finanziaria. Bitcoin sta diventando una realtà via via più centralizzata.
Ethereum nasce con l’intento, non l’unico, di rendere davvero decentralizzato il problema del mining (cioè la validazione delle transazioni) creando un algoritmo che potesse davvero permettere ad ogni singolo computer di poter operare come miner.
Questo è l’ASIC-resistant algorithm che non avvantaggerà più i computer con la potenza di calcolo superiore (non dimentichiamo che il mining apporta un certo guadagno al miner stesso).
Un altro grandissimo vantaggio della tecnologia relativa ad Ethereum è la possibilità di creare una sorta di standardizzazione del linguaggio utilizzato con la relativa capacità di poter essere eseguito in qualunque sistema operativo proprio come avviene per il linguaggio JAVA e la sua JVM cioè la Java Virtual Machine.
E’ sufficiente utilizzare la EVM (Ethereum Virtual Machine) per creare programmi utilizzabili ovunque sviluppati tramite Solidity, uno dei linguaggi utilizzabili per sviluppare la logica sottostante agli Smart Contracts e alle decentralized apps.
Solidity: Contract-Oriented Programming Language
Solidity è uno dei linguaggi utilizzati per lo sviluppo di smart contracts. E’ stato volutamente creato in maniera tale che nessuna delle sue funzioni interne sia non-deterministica il che significa che qualunque funzionalità utilizzata produrrà esattamente lo stesso risultato anche se verrà richiamata in due momenti differenti.
In questa maniera si può garantire che la blockchain possa mantenere la riproducibilità di ogni suo evento passato, a fronte dello stesso input si otterrà sempre lo stesso risultato.
E’ chiaro che la problematica non si verifichi solo per le funzioni interne ma anche nel caso in cui lo Smart Contract possa necessitare di accedere a risorse esterne tramite API.
Cosa accadrebbe se una transazione fosse trascritta sulla blockchain, frutto di calcoli derivanti da una invocazione ad un servizio esterno e poi questo servizio dopo diverso tempo restituisse valori diversi? Il risultato è l’invalidazione della transazione, si otterrebbe cioè un hashcode diverso rendendo di fatto non più riproducibile l’evento iniziale.
Per questo motivo risulta efficace l’utilizzo di servizi quali OraclizeAPI i quali permettono di tracciare in maniera indelebile input ed output sulla blockchain il risultato di una determinata invocazione, in un determinato momento passato, permettendone anche riproducibilità e validazione.
Ecco un esempio di utilizzo delle API di OraclizeAPI, fonte C. Geymonat: link to example
La tecnologia di Ethereum può essere applicata in moltissimi settori quali financial applications, semifinancial applications e nonmonetary applications di cui parleremo in un futuro articolo.
Sarei curioso di sapere se nella tua realtà questa tecnologia è già utilizzata, se vuoi condividilo nei commenti qui sotto!
No Comments