EthQL = Ethereum + GraphQL

In questo nuovo articolo, vedremo un tool davvero nuovo ed interessante, che ci mostrerà un metodo diverso per poter interagire sulla blockchain di Ethereum.

Questo strumento si chiama EthQL, ed è lo strumento che può essere utilizzato per esplorare e interrogare la blockchain di Ethereum. Se sei uno sviluppatore o un semplice appassionato, con questo articolo capirai come sfruttare a pieno questo strumento.

Per la lettura completa dell’articolo, che ho pubblicato sul portale di etherevolution, ti rimando ad usare il link diretto che ti condivido qui a fianco:  ETHQL

Crea un ambiente di sviluppo Ethereum con GETH

In questo primo articolo, che sarà parte di una “trilogia”, affronteremo alcuni dei tanti aspetti, a cui si deve far fronte, nel momento in cui si decide di capire come funziona un sistema di transazioni sulla blockchain Ethereum, o solo perchè vogliamo sviluppare una nuova DApp, oppure per semplice curiosità.

Vedremo i vari aspetti che ruotano alla creazione e preparazione di un ambiente di test (testnet), sia per crearci un nodo totalmente locale, sia per interagire con gli ambienti di testnet messi a disposizione, quali Rinkeby, Ropsten, Kovan. Vedremo anche come poter implementare sul nostro conto di test, che potremo gestire con Metamask, degli ether, creando delle transazioni (donazioni) verso noi stessi, da una delle testnet sopra descritte, oppure facendo direttamente mining in locale in modalità PoW.

Il primo capitolo è già stato pubblicato sul portale di etherevolution

Per accedere direttamente alla lettura del primo articolo, questo è il link: EthereumGETH

Ethereum – il consenso e l’arrivo del PoS

PoW vs PoS

Ormai da alcuni anni si sente parlare dell’arrivo “imminente” del Proof of Stake (PoS) su Ethereum e, in effetti, molti, moltissimi tra appassionati di tecnologia, o semplici utilizzatori (trader etc…), stanno aspettando che tutto ciò si verifichi. Forse questa volta ci siamo e, in questa estate, gia molto strana, potrebbe portare il cambiamento che renderebbe il 2020 un’anno davvero da studiare e ristudiare in futuro.

Come sappiamo, “il consenso” è la base del meccanismo della blockchain, ma fino ad oggi, il protocollo che ha fatto funzionare il tutto, è sempre stato il PoW (Proof of Work), molto interessante (all’inizio), quando nei primi tempi ci si poteva avvicinare al mining di Bitcoin, anche solo installando il software ad hoc su di un pc/portatile e provare a capire come fare mining. Tutto questo è svanito piuttosto in fretta quando si è capita l’enorme rivoluzione tecnologica prima, ed economica dopo, che la blockchain ed il mining di Bitcoin avevano regalato al mondo. Ad oggi è possibile trovare video in cui si vedono enormi stabilimenti stracolmi di RIG (computer specifici per portare a compimento i calcoli matematici che servono per il mining, in cui le schede grafiche, le GPU, sono la base portante della potenza e, tra le marche più famose sicuramente c’è la ASICs.) impossibili da avvicinare a causa degli enormi costi di acquisto dei singoli pezzi, in particolare delle GPU e dell’ancor più alto costo di consumo elettrico, necessario a tenere accese queste macchine potenti h24. Non a caso la maggior parte di questi stabilimenti, farm, o come li si voglia chiamare sono stati costruiti in zone del mondo in cui l’elettricità costa poco.

Mining Farm

Bene, tutto ciò sta per cambiare, poichè con l’arrivo del protocollo PoS il sistema di mining, o meglio ancora il sistema di consenso per la costruzione e validazione dei blocchi sarà del tutto diverso, cambiando completamente l’attuale Status quo. Se ti sei incuriosito e vuoi sapere come, ecco qui sotto il link all’articolo completo che ho pubblicato su etherevolution.

Buona lettura

Come raggiungere il consenso PoW vs PoS

Blockchain dApp DeFi e Decentralizzazione

PREMESSA

Da circa un paio di anni ho riportato la mia attenzione verso il mondo cripto monete e Blockchain. Devo dire che per questioni anagrafiche faccio parte di quelle persone che nel lontano 2009, colti dall’ euforia della novità installarono subito il software per fare mining, quando tutto ruotava dietro al neo nato concetto di Blockchain e l’unica moneta cripto era il Bitcoin.

Non ricordo nemmeno per quante settimane e/o mesi quel pc è rimasto operativo ma, non comprendendo il vero valore della novità tecnologica, dopo un tot di tempo il pc in questione venne dedicato a fare chissà quali altre cose.

 

IL CAMBIAMENTO

Il tempo è passato e le cose sono davvero cambiate, non solo per la nascita delle infinite cripto monete oggi disponibili, ma, almeno per ciò che mi riguarda, il salto è avvenuto nel momento in cui è stato presentato il progetto di Ethereum. Una vera piattaforma innovativa perchè usciva dallo schema del Bitcoin portando al mondo un’idea di operabilità a 360 gradi. Con Ethereum puoi fare mining, puoi fare trading, ma soprattutto puoi investire il tuo tempo e le tue conoscenze per imparare la creazione degli Smart Contract, una seconda grande rivoluzione all’interno del mondo Blockchain.

 

LA NOVITA’

Per non farla troppo lunga, ho ricominciato a studiare ed a sperimentare, da questa curiosità ed da un pizzico di fortuna, è nata pochi mesi fa una collaborazione con il canale Etherevolution e con il team di Shin (Milano) ed il progetto “Impatto Reale“.

Una collaborazione questa che sta accellerando la mia crescita in questo nuovo ambito, portandomi a collaborare con professionisti del settore. A fronte di questa collaborazione che sta man mano crescendo linkerò su questo mio blog gli articoli inerenti il mondo Ethereum/Blockchain che scrivo e scriverò sulla piattaforma di Etherevolution, dunque buona lettura.

Questo è il primo degli articoli gia pubblicati sul canale di Ethereum

Ethereum: tutto pronto per la l’introduzione della Proof of Stake

Il miracoloso NodeJS

piattaforma Open Source event-driven

NodeJS – una piattaforma Open Source event-driven

Ok, ammetto che fino a non molto tempo fa mi ero quasi scordato di Javascript, nonostante fosse stato uno dei primi linguaggi da me studiati, nel lontano 1997, quando mi approcciai al mondo del web; negli anni successivi pero’, non essendo io uno sviluppatore, le tecnologie di gestione e deploy dei server web che dovevo gestire si erano spostate verso un grande quantitativo di linguaggi, in particolare per la parte back-end , passando cosi dal php, perl, python, java, ruby, lua etc……

Come stavo dicendo, per me javascript era rimasto in sordina come un linguaggio di scripting che intercorreva tra l’hmtl ed il css, nella composizione piu’ o meno dinamica di una pagina web ,prima che i pesi massimi sopra citati entrassero in campo per svolgere il duro lavoro.

Poi, un giorno, a ciel sereno……BOOOOOOOMMMM ! scopro l’esistenza di NodeJS, ed iniziai a chiedermi a cosa si dovesse tutto l’interesse di cui stavo leggendo; scopro quindi che NodeJS e’ una piattaforma Open Source event-driven per l’esecuzione di codice JavaScript Server-side, costruita sul motore V8 di Google Chrome. Mmmmhhhh, ok bene, ma quindi? cosa fa?

Ebbene questa piccola rivoluzione creata da Google consente agli sviluppatori di realizzare web application con JavaScript non più solo lato client, ma anche sfruttandolo come linguaggio di programmazione lato server.

E gli sviluppi sono davvero moltissimi, cosi tanti che mettere un’elenco sarebbe noioso e stancante ma, tanto per farne uno molto odierno, con NodeJS possiamo, ad esempio, realizzare dei ChatBot.

Ma qual’e’ dunque il funzionamento che lo rende cosi appetitoso? Innanzitutto partiamo dal dire che Node funziona con una logica a eventi: quando un evento viene generato, allora viene eseguita un’azione. Grazie a questa tecnica non bisogna attendere che le istruzioni precedenti siano terminate, rendendo cosi il tutto molto veloce.

Nella pratica, non c’e’ bisogno di sapere come funziona il V8 per poter utilizzare NodeJS, basti sapere che e’ l’interprete javascript piu’ veloce al mondo, poiche’ e’ stato altamente ottimizzato utilizzando un tipo di programmazione JIT (Just In Time), che trasforma rapidamente il codice javascript in linguaggio macchina.

Ma la cosa che, almeno a parere personale, mi ha maggiormente colpito, e’ stato quello che possiamo chiamare come “Modello non bloccante” , questo si basa sul concetto degli eventi, ma per meglio chiarire dovremmo spiegare un minimo la differenza tra modello bloccante e NON bloccante.

Immaginiamo di dover creare un programma che ci permetta di scaricare un file da internet e che alla fine dell’esecuzione del download ci mostri un messaggio.

Bene, con il modello classico (bloccante) basato sulla programmazione sincrona potremmo schematizzare il processo nel seguente modo:

  • Scarica il file
  • Mostra il messaggio
  • Fai qualcos’altro

Ci aspetteremmo quindi che le azione vengano eseguite in ordine, leggendo le operazioni da eseguire dall’alto verso il basso.

Nel sistema asincrono di NodeJS invece le operazioni verranno svolte nel seguente modo:

  • Scarica file
  • Fai qualcos’altro
  • Mostra il messaggio

Perche’ questa diversita’ nell’esecuzione rende il tutto piu’ veloce e performante? Beh perche’ mentre il sistema effettua il download del file, il programma non rimane in attesa che il processo venga portato a termine ma anzi nell’attesa il programma esegue altre operazioni.

Il codice in oggetto avra’un aspetto tipo questo:

request(‘http://www.site.com/file.zip’, function (error, response, body) {
console.log(“Download completato!”);
});

console.log(“Mentre aspetto eseguo il resto del codice…”);

Quello appena descritto qui sopra e’ un’esempio di procedura di callback 

Ok ma se non fosse ancora del tutto chiaro, proviamo ancora a spiegare perche’ le callback sono cosi importanti, procediamo con l’esempio di prima ed aggiungiamo una difficolta’; adesso i file da scaricare sono diventati due, dunque nel sistema sincrono il programma procederebbe nel seguente modo:

  • Scarico primo file
  • Attendo che finisca
  • Scarico secondo file
  • Attendo che finisca
  • Mando messaggio

La grande differenza in questo esempio sarebbe che con NodeJS verrebbero lanciati entrambi i download, nello stesso momento, permettendo gia cosi un piu’ veloce download e, nel frattempo il programma e’ in grado di svolgere eventuali altri compiti. Ma questo come dicevo e’ soltanto un esempio, invece di un download multiplo, potrebbero essere delle query ad un DB, o la richiesta di dati a servizi esterni tramite API (Facebook, Twitter).

Pensiamo quindi ad un sistema come Facebook, che riceve X richieste di Like ogni tot secondi e vengono cosi aperti N operatori che devono attendere il loro turno per fare la modifica (del like) consumando comunque energie anche mentre sono fermi in attesa; invece NodeJS nella stessa situazione di richiesta di “reaction” sul sisto di FB (like o altro) si comporterebbe nel seguente modo:

metterebbe tutte le richieste in ordine di arrivo, prenderebbe la prima e, vedendo che si tratta di una sfilza di input le inserirebbe all’interno del sistema e, una volta capito che si tratta di stesse azioni (ad esempio che aggiungono un Like) che devono contattare un DB, NodeJS contatta il DB e invece di attendere per effettuare ogni singola modifica, aggancia alla richiesta una callback, per ogni richiesta di modifica, tutti uno dietro l’altro. Quando il DB finisce la prima modifica scatta la callback e NodeJS restituisce all’utente l’avvenuta modifica della pagina e cosi via, gestendo quindi con un solo operatore le N richieste di modifica del Like invece di crearne uno per ogni richiesta e parcheggiandoli tutti in attesa della loro singola modifica. Quindi con un server (magari anche un container con Docker) e con poche risorse possiamo gestire un’enorme quantita’ di richieste al secondo.

Inoltre NodeJS usa come sistema di pacchetti e librerie l’NPM, ma di questo fantastico sistema di librerie parleremo in un’altro articolo.

Nel prossimo articolo su NodeJS parleremo anche di 5 nuovi framework ottimi per chi si occupa di sviluppare.

#NodeJS