22/08/2017

Serie Blockchain di Dialogic #5

Sul tema della blockchain si parla molto, ma com'è veramente una blockchain "nella vita reale"? Il modo migliore per familiarizzare con una nuova tecnologia è giocarci direttamente. In questo articolo spieghiamo come puoi sperimentare la blockchain tu stesso. Costruire la tua blockchain non è affatto difficile. A volte può sembrare complicato, ma non preoccuparti, in realtà è abbastanza semplice.

Questo testo è stato tradotto automaticamente e quindi può differire dall'originale. Nessun diritto può derivare da questa traduzione.

💬 Click here to read this page in English.

Arrotola le maniche!

Pronto per iniziare: di cosa hai bisogno?

Per creare una semplice blockchain puoi utilizzare software disponibile gratuitamente su internet. Questo software funziona principalmente su computer Windows e Mac. In questo esempio utilizzeremo la piattaforma Ethereum. Ethereum è una blockchain pubblicamente accessibile: utilizzi la blockchain pagando con la criptovaluta digitale 'ether'. In questo esempio utilizzeremo il software della blockchain Ethereum per creare la nostra versione privata.

Installare il client

Per cominciare, hai bisogno di un client. Si tratta di un software che gestisce la comunicazione della blockchain con altri computer ('nodes'). Avviando il client, partecipi alla blockchain e puoi memorizzare nuovi contratti nella blockchain. Scarica il client 'Go Ethereum' da questa pagina e installalo. Una volta fatto, verifica che il client sia stato installato correttamente. Per farlo, vai al menu Start (su Windows), seleziona 'Esegui', e digita 'cmd' seguito da 'OK' (per gli utenti Mac, apri la cartella Applicazioni, poi la cartella Utility e infine il programma 'Terminale'; le istruzioni rimanenti sono uguali). Nella finestra che appare, digita 'geth version' seguito da Invio. Se è tutto a posto, vedrai un elenco della versione di Go-Ethereum installata.

L'inizio della catena: il blocco genesi della blockchain

Ora che il software è installato, è tempo di costruire la blockchain. Come accennato in precedenza, una blockchain è composta da una serie di 'blocchi'. Il primo blocco è chiamato 'blocco genesi' ed è speciale perché è il primo blocco fidato da tutti i partecipanti senza ulteriori controlli. Tutti i blocchi successivi al blocco genesi fanno parte della blockchain.

Innanzitutto, scarica il file genesis.json e posizionalo sul desktop. Questo file descrive come il blocco genesi dovrebbe apparire. Successivamente, esegui il seguente comando nella finestra di comando:

geth –datadir %USERPROFILE%/Desktop/data –networkid 3336 init %USERPROFILE%/Desktop/genesis.json

Se tutto è andato per il verso giusto, apparirà un messaggio che conferma la corretta creazione del blocco genesi. Sulla tua scrivania comparirà una cartella 'data' - qui il client memorizzerà tutti i dati necessari per partecipare alla blockchain.

Ora che è stato creato il blocco genesi, è tempo di avviare la blockchain! Utilizza il seguente comando:

geth –datadir %USERPROFILE%\Desktop\data –ipcpath ./geth.ipc –rpc –rpccorsdomain “*” –networkid 3336

Una volta visualizzato il messaggio 'IPC endpoint opened', il client è pronto per l'uso. Puoi interrompere il client premendo 'Ctrl-C' nella finestra di comando. È ora di utilizzare effettivamente la blockchain. Puoi farlo in vari modi; innanzitutto, puoi accedere alla blockchain tramite la 'console'. Si tratta di un ambiente dove puoi eseguire comandi sulla blockchain. Lascia il client attivo e apri una nuova finestra di comando (Start, Esegui, cmd o Terminale su Mac) e inserisci il seguente comando:

geth attach \\.\pipe\geth.ipc

Se tutto è andato per il verso giusto, apparirà "Welcome to the Geth JavaScript console!" seguito da alcuni numeri di versione. Innanzitutto, dovremo creare un account - con un account ottieni l'accesso alla blockchain. Un account è protetto da una password. Per creare un nuovo account, utilizza il seguente comando:

personal.newAccount()

Successivamente, ogni volta che si riavvia il client, sarà necessario 'sbloccare' l'account. Puoi farlo con il seguente comando (che richiederà la password selezionata in precedenza):

personal.unlockAccount(personal.listAccounts[0])

Per consentire al client di aggiungere blocchi alla catena, è necessario 'minare'. Puoi avviare il processo di mining nel seguente modo:

miner.setEtherbase(personal.listAccounts[0])
miner.start(1)

Visto che il mining richiede molta potenza di calcolo, qui abbiamo deciso di limitare la velocità - il numero '1' specifica che solo un processore del tuo computer verrà utilizzato per il mining. In una rete 'reale', sfrutteresti tutta la potenza di calcolo disponibile. Quando avvierai il mining per la prima volta, noterai che ci vuole un po' prima che appaiano effettivamente i blocchi (nella finestra del client comparirà più volte "Generazione DAG"). Successivamente, dovresti vedere comparire un blocco ogni pochi secondi:

Dato che nel file genesis è stato definito che il mining dei blocchi è facile, i nuovi blocchi appaiono rapidamente. In una blockchain 'reale', il mining è più complesso e i blocchi appaiono più lentamente. Tuttavia, per testare una blockchain è utile che i blocchi appaiano rapidamente - i tuoi smart contract verranno elaborati più velocemente.

Puoi uscire dalla console digitando 'exit'. Non fa male lasciare la console aperta per un po'.

Scrittura di smart contract

Per scrivere e inserire smart contract nella blockchain, utilizzerai l'ambiente di programmazione Solidity. Scarica Solidity tramite questo link - estrai il file zip e fai doppio clic sul file 'index.html'. Se tutto è andato bene, comparirà un campo di testo vuoto:

Prima di tutto, dobbiamo informare l'editor Solidity che può comunicare con la nostra blockchain (tramite il nostro client). Per farlo, vai alla scheda 'Contratto' e seleziona sotto 'Seleziona ambiente di esecuzione' 'Fornitore Web3'. Prosegui attraverso tutti i messaggi che compariranno.

Ora sei pronto per scrivere il tuo primo smart contract! Ne parleremo più approfonditamente nei prossimi articoli. Di seguito è riportato un contratto molto semplice che in realtà non fa nulla, ma che ci consente di verificare il corretto funzionamento della blockchain:

pragma solidity ^0.4.0;

contract Hello {
    address public owner;

    function Hello() {
        owner = msg.sender;
    }

    // No payments can be sent
    function () {
        throw;
    }
}

Cosa significa questo? La prima riga specifica semplicemente la versione del linguaggio di programmazione che vogliamo utilizzare (0.4.0). Successivamente, viene istanziato il contratto ("contratto Hello"). La riga 'address public owner' indica che in questo contratto è memorizzato un dato, ovvero l'indirizzo ('numero di conto') di chi ha creato il contratto. La 'function Hello' specifica cosa deve accadere quando viene creato questo contratto. Attualmente, salviamo chi ha creato il contratto, nell'indirizzo menzionato in precedenza. Infine, sono presenti alcune righe per impedire il trasferimento di criptovalute verso il contratto.

Il codice di un contratto è una sorta di schema - puoi istanziare uno o più contratti che funzioneranno secondo il codice (similmente al fatto che nel mondo dei contratti 'normali' si possano stipulare più 'contratti di acquisto' che riguardano case diverse, ma che presentano una struttura simile).

Per creare un nuovo contratto, fai clic su 'Crea' nella sezione 'Contratto' in Solidity. Dovrebbe comparire 'waiting for transaction to be published'. Potresti ricevere un messaggio di errore - in tal caso, il tuo account potrebbe essere stato di nuovo 'bloccato'. Esegui nuovamente il comando 'personal.unlockAccount(personal.listAccounts[0])' nella console. Se tutto è andato per il verso giusto, comparirà infine un blocco 'Untitled:Hello at' seguito da un numero lungo. Questo numero è l'indirizzo del contratto, in pratica il numero del contratto. Con questo numero puoi eseguire azioni specifiche sul contratto - ne parleremo in seguito. Nel blocco stesso troverai le proprietà del contratto, inclusa l'indirizzo del 'proprietario'. Per ora, siamo fermi qui - hai creato il tuo primo smart contract!

Infine

Basandoti sulla tua blockchain personale, teoricamente puoi costruire varie applicazioni basate su smart contract. Tuttavia, ciò non significa necessariamente che sia prudente utilizzare la tua blockchain per questo scopo. La prima domanda che dovresti farti è se l'uso di una blockchain è davvero necessario. Quando tutte le parti che devono scambiarsi informazioni e fare accordi si fidano pienamente l'una dell'altra, un semplice database condiviso potrebbe essere sufficiente. Se desideri comunque utilizzare una blockchain, è consigliabile collegarti a blockchain esistenti: queste hanno la massa critica necessaria per far emergere appieno i vantaggi delle blockchain.

Per capire come qualcosa funziona davvero, preferisco smontarlo completamente e cercare di rimontarlo da solo.

Vuoi saperne di più su questo tema?

Tommy van der Vorst, partner

Conosci Tommy

Richiedi un preventivo?

Se hai una domanda di ricerca concreta o un incarico e desideri ricevere un nostro preventivo, puoi inviare la tua domanda via e-mail a tenderdesk@dialogic.nl. Puoi anche segnalarci gare d'appalto (pubbliche) tramite questo indirizzo. Risponderemo entro cinque giorni lavorativi.

Ulteriori informazioni