Non ho bisogno di dire che stiamo vivendo nell’era della blockchain. L’impatto che può avere sul nostro futuro è veramente spaventoso. Quindi come fai ad entrare a far parte di questo mondo? Se vuoi diventare un Blockchain Developer ci sono determinati passi che dovrai seguire.
Alla fine di questa guida avrai tutti i tool di cui hai bisogno per iniziare il tuo viaggio. Se fai sul serio nel diventare un Blockchain Developer allora dobbiamo parlare delle aspettative. Per prima cosa questa cosa avrà bisogno di tempo, e dovrai dedicare tempo e risorse. Secondo non aspettarti risultati immediati, diventare uno sviluppatore di blockchain è un percorso complesso e difficile, ma se seguirai questa guida per te sarà tutto più semplice.
Leggi anche: Solidity: la guida definitiva
Detto questo iniziamo il nostro viaggio su come diventare un Blockchain Developer, per facilitare la comprensione ho riassunto tutto in 4 step.
Index
Step n.1 | le basi
Uno dei problemi più grandi con qualsiasi cosa nuova e rivoluzionaria, come la tecnologia blockchain, è familiarizzare con i vari concetti integrati nel sistema.
Se sei un principiante allora ci sono alcuni termini che devi conoscere assolutamente:
- Blockchain: La blockchain è una catena di blocchi dove ogni blocco contiene dati di valore senza nessun controllo centrale. E’ immutabile ed è protetta dalle crittografia.
- Decentralizzata: La blockchain è definita decentralizzata perché non c’è nessuna autorità centrale che controlla il tutto.
- Meccanismo del consenso: Il meccanismo mediante il quale una rete decentralizzata prende una decisione su una questione.
- Miners: Utenti che usano i computer per minare blocchi.
Impara a diventare un Blockchain Developer
E’ consigliabile imparare di più su questi termini che vengono usati dappertutto nel mondo delle criptovalute, è importante per te imparare questi termini base oppure ti perderai nel resto della spiegazione. Adesso è tempo di imparare alcuni degli aspetti tecnici della blockchain.
Se sei interessato agli aspetti tecnici su come creare un’applicazione sulla blockchain allora dovresti imparare come funziona la cripto economia. Molti sviluppatori sono di solito ben informati sulla parte cripto ma non sono molto informati sulla parte economica
Questa differenza di conoscenze si vede molto quando studi le loro ICO. Quando vai a vedere la parte economica delle loro ICO.
Quindi può essere una buona idea imparare concetti anche riguardo la parte economica delle ICO e averne un idea generale.
Poi è consigliabile che tu capisca come funzionino i bitcoin. I bitcoin sono l’applicazione tecnologica più elegante e più diffusa delle blockchain. E’ un chiaro esempio di cosa si può ottenere con la tecnologia blockchain.
Per farti un idea dovresti leggere il white paper di Satoshi Nakamoto per i bitcoin. Questo completa il primo step.
Leggi anche: Come scrivere White Paper ICO
Diamo un occhiata ai passi a cui fare attenzione:
- Impara a conoscere i termini e il lessico delle blockchain
- Impara gli aspetti più tecnici delle blockchain.
- Leggi il whitepaper del bitcoin.
Step n.2 | Come funziona il processo
E’ sorprendente il numero di sviluppatori che non hanno nessuna vera esperienza con le criptovalute. Come puoi innovare e migliorare una piattaforma che non hai nemmeno usato?
E’ raccomandabile che tu inizi a conoscere il sistema da oggi.
Vai su Coinbase o un altro exchange che ti va bene o che è accessibile nel tuo paese e compra delle coin. Non devi creare subito un wallet importante, compra alcune coin e vedi come funziona il processo.
Puoi accedere a questo wallet da qualsiasi server o dispositivo nel mondo, basta che sia connesso a internet. Detto questo, c’è un grande problema quando si parla di wallet online. La tua chiave privata verrà salvata su un altro server. Questo è praticamente come servire la tua chiave agli hacker su un piatto d’argento. Non usare i wallet online per contenere molte coin. Metti online solo le quantità minime che ti servono per gli exchange.
Devi imparare come utilizzare i cold wallet per contenere le tue coin. Poi se tu crei la tua ICO, devi sapere come funzionano i wallet, e in particolare, i wallet multi sig.
Leggi anche: Come realizzare una ICO: Guida per principianti
Questa sezione finisce e si passa alla successiva.
Le cose interessanti da capire qui sono:
- Impara come funzionano gli exchange.
- Impara a conoscere i wallet.
Step n.3 | Inizia a scrivere codice! Tutorial blockchain
Come sviluppatore di blockchain, affronterai molte sfide prima o poi. Creare a mantenere una blockchain pubblica non è facile per molte ragioni.
-
Ragione 1: Sicurezza
Come dice David Schwartz le blockchain devono essere una fortezza. Per prima cosa il codice è pubblico, e lo possono vedere tutti, chiunque può guardare il codice e controllare i bug e i difetti. Qualsiasi programmatore può hackerarlo e rubare milioni. Per questi problemi di sicurezza, lo sviluppo della blockchain è molto lento.
-
Ragione 2: Performance
La blockchain deve girare sempre al massimo delle sue capacità. Ma per farlo succedere, il linguaggio scelto deve essere estremamente versatile. La cosa da capire è che certe task nella blockchain possono essere fatte in parallelo mentre alcune altre no.
Un buon esempio di task parallelizzabile è la verifica delle firme digitali. Tutto quello che ti serve per la verifica è la chiave, la transazione e la firma. Con solo 3 dati si possono fare delle verifiche parallelizzate.
Però non tutte le funzioni sulla blockchain dovrebbero essere fatte in quel modo. Pensa all’esecuzione della transazione stessa. Molteplici transazioni non possono essere fatte in parallelo, deve essere fatta una alla volta per evitare gli errori, alcuni linguaggi di programmazione sono buoni per le operazioni in parallelo mentre alcuni non lo sono.
-
Ragione 3: Isolamento
Qual’ il comportamento deterministico?
Se A+B=C, allora non importa quali siano le circostanze, A+B, darà sempre C. Questo si chiama comportamento deterministico.
Le funzioni Hash sono deterministiche, ciò significa che l’hash A sarà sempre H(A).
Quindi, nello sviluppo delle blockchain, tutte le transazioni saranno sempre deterministiche. Non puoi avere una transazione che si comporta in un modo e una che si comporta in un altro modo. Allo stesso modo non puoi avere smart contracts che funzionano in 2 modi differenti su 2 macchine differenti.
La sola soluzione qui è l’isolamento. Praticamente, si isolano gli smart contract e le transazione di elementi non deterministici.
Ci sono alcuni linguaggi che soddisfano quasi tutti questi bisogni. Se vuoi diventare un blockchain developer devi avere una conoscenza base del C++ e di javascript.
Anche se il C++ potrebbe sembrare datato, la verità è che soddisfa alla grande tutte le funzionalità che ho descritto qui sopra. Infatti Satoshi Nakamoto ha scritto il codice dei bitcoin in C++
Insieme all’HTML e al CSS è uno delle tre tecnologie chiave del web. Javascript di solito viene usato per creare pagine web interattive.
Quindi adesso andremo a creare una semplice blockchain usando javascript.
Come facciamo un blocco? In cosa consiste un bocco? Nella nostra semplice criptocoin che andremo a fare, ogni blocco avrà le seguenti informazioni:
- Indice: Per conoscere il numero del blocco.
- Timestamp: Per conoscere il tempo della transazione.
- Data: I dati dentro il bocco.
- Previous Hash: L’hash del blocco precedente.
- Hash: L’hash del blocco corrente.
Prima di continuare, devi conoscere alcuni termini che andremo ad usare nel nostro programma:
- This: La keyword this viene usata all’interno della funzione e ti permette di accedere ai valori all’interno di uno specifico oggetto che chiama quella particolare funzione.
- Constructor: Una constructor è una funzione speciale che aiuta a creare e inizializzare un oggetto in una classe. Ogni classe è limitata ad un solo costruttore.
Adesso vediamo come creare il nostro blocco
Creare il blocco
const SHA256 = require("crypto-js/sha256"); class Block { constructor(index, timestamp, data, previousHash = '') { this.index = index; this.previousHash = previousHash; this.timestamp = timestamp; this.data = data; this.hash = this.calculateHash(); } calculateHash() { return SHA256(this.index + this.previousHash + this.timestamp + JSON.stringify(this.data)).toString(); } }
Analisi del blocco
Ok, questo è un blocco. Nella prima linea di codice, abbiamo chiamato la libreria cripto-is perché la funzione hash sha256 non è disponibile in JavaScript.
Poi abbiamo chiamato un constructor dentro la classe per chiamare gli oggetti che hanno determinati valori. La cosa che probabilmente attira la tua attenzione è la funzione calculateHash(). Vediamo esattamente come è fatto.
In un blocco, prendiamo tutti i contenuti e li inseriamo nell’hash di un particolare blocco. Usiamo la funzione JSON.stringify per trasformare i dati del blocco in una stringa di hash.
Ok adesso abbiamo il blocco pronto. Adesso connettiamo i blocchi insieme in una blockchain.
Creare la blockchain: Diventare un BlockchainDeveloper
class Blockchain
{
//Section 1 Genesis block creation
constructor()
{
this.chain = [this.createGenesisBlock()];
}
createGenesisBlock()
{
return new Block(0, "01/01/2017", "Genesis block", "0");
}
//section 2 adding new blocks
getLatestBlock()
{
return this.chain[this.chain.length - 1];
}
addBlock(newBlock) {
newBlock.previousHash = this.getLatestBlock().hash;
newBlock.hash = newBlock.calculateHash();
this.chain.push(newBlock);
}
//section 3 validating the chain
isChainValid()
{
for (let i = 1; i < this.chain.length; i++)
{
const currentBlock = this.chain[i];
const previousBlock = this.chain[i - 1];
if (currentBlock.hash !== currentBlock.calculateHash()) {
return false;
}
if (currentBlock.previousHash !== previousBlock.hash)
{
return false;
}
}
return true;
}
}
Analisi del codice
Ok, sono successe tante cose alla chain qui sopra. Andiamo a parlarne dividendole in sessioni.
- Sezione 1: Il blocco genesi
Cos’è il bocco genesi?
Il blocco genesi è il primo blocco sulla blockchain, e la ragione è per cui è speciale è perché ogni blocco punta al blocco precedente, ma il blocco genesi non punta a niente. Quindi nel momento in cui una nuova chain viene creata, il blocco genesi viene invocato immediatamente.
Inoltre puoi vedere una funzione “createGenesisBlock()” dove abbiamo inserito i dati del blocco manualmente:
createGenesisBlock() { return new Block(0, "01/01/2017", "Genesis block", "0"); } Section 2: Adding The Blocks Firstly, we will need to know what the last block in the blockchain currently is. For that we use the getLatestBlock() function. getLatestBlock() { return this.chain[this.chain.length - 1]; }
Ora che abbiamo determinato l’ultimo blocco, vediamo come aggiungere nuovi blocchi.
addBlock(newBlock) { newBlock.previousHash = this.getLatestBlock().hash; newBlock.hash = newBlock.calculateHash(); this.chain.push(newBlock); }
Cosa sta succedendo qui? Come aggiungiamo i blocchi? Come facciamo a controllare se il blocco è valido o no?
Ricordi il contenuto di un blocco? Un blocco ha l’hash del blocco precedente giusto?
Quello che andremo a fare qui è semplice. Compara il valore di hash precedente del nuovo blocco con il valore hash dell’ultimo blocco.
Se questi 2 sono uguali, allora significa che il nuovo blocco è legittimo e si aggiunge alla blockchain.
- Sezione 3: convalidare la chain
Adesso, dobbiamo controllare che nessuno abbia fatto qualcosa alla nostra blockchain e che tutto sia stabile.
Useremo il loop for per andare dal blocco uno all’ultimo blocco. Il blocco genesi è il blocco 0.
for (let i = 1; i < this.chain.length; i++) { const currentBlock = this.chain[i]; const previousBlock = this.chain[i - 1]; In questa parte del codice andremo a definire 2 termini, il blocco corrente e il precedente. E adesso andremo a trovare l’hash di questi 2 valori if (currentBlock.hash !== currentBlock.calculateHash()) { return false; } if (currentBlock.previousHash !== previousBlock.hash) { return false; } } return true; }
Se “previousHash” del blocco corrente non è uguale a “Hash” del blocco precedente, allora questa funzione ritornerà come falsa, o invece diventerà vera.
Usare la blockchain
Adesso andremo finalmente a usare la blockchain per creare il nostro BlockGeeksCoin.
let BlockGeeksCoin = new Blockchain(); BlockGeeksCoin.addBlock(new Block(1, "20/07/2017", { amount: 4 })); BlockGeeksCoin.addBlock(new Block(2, "20/07/2017", { amount: 8 }));
Ed ecco fatto
Quindi cosa abbiamo fatto qui?
Abbiamo creato una nuova criptovaluta basata sulla blockchain e l’abbiamo chiamata BlockGeeksCoin. Invocando questo nuovo oggetto, ho attivato il constructor, che ha creato automaticamente il blocco genesis.
Abbiamo semplicemente 2 blocchi e dargli alcuni dati.
Questo è tutto per questa tappa. Parliamo di questi patti, è molto semplice ma non cosi semplice.
- Impara i linguaggi per blockchain come C++, Javascript, C#, Go etc.
Step n.4 | Partecipa alle community
Una delle cose più importanti che puoi fare come sviluppatore è di partecipare costantemente alle community.
Entra nei forum reddit, nelle pagine github, stackexchange e parla con gli altri sviluppatori e cerca sempre nuove news sulla tecnologia.
Inoltre è sempre buono sapere cosa pensano le persone in uno sviluppatore blockchain, e quali qualità cercano le compagnie e chi vogliono ingaggiare.
Queste informazioni possono essere molto utili per affinare le tue abilità abbastanza per piacere alle compagnie.
Conclusione
Ecco questa è una bozza di percorso per il tuo viaggio per diventare un Blockchain Developer. Questo da solo non può essere sufficiente certo, devi affinare le tue abilità e stare sempre sul pezzo.