Consultare https://www.ethereum.org.
E' una piattaforma di applicazioni blockchain, diversamente dal Bitcoin il quale si occupava solo della transazione di moneta virtuale. Lo scopo è quindi quello di creare Applicazioni che sfruttano la struttura Blockchain.
Il linguaggio da utilizzare per gli Smart Contracts è Solidity, applicabile anche per altre tipologie di software (giochi, applicazioni in ambito finance, ecc...). Ehtereum è una piattaforma open-source per creare Applicazioni Distribuite Decentralizzate (dAPPs).
dAPPs: applicazioni create direttamente nell'"ecosistema" di Ethereum in cui tutti i partecipanti del network lavorano sulle Applicazioni decentralizzate e sono disponibili nel network. Viaggiano in modo condiviso, non c'è un download per esempio. Questo è quello che molti definiscono l'Internet 3.0.
All'interno del sistema Ethereum ci sono due cryptovalute:
Su https://ethgasstation.info si possono vedere le tariffe (tipo il costo dell'invocazione di una funzione, che è 0,46$) e la conversione tra le unità di Gas e di Ether.
Ci sono due tipologie di nodi (computer) collegati su Ethereum:
Questa è una distinzione semplicemente di funzioni che un nodo può assumere all'interno del network Ethereum.
E' una versione del linguaggi di programmazione Go struttura appositamente per Ethereum. E' un command line tool (CLI), concepito con finalità di implementazione dei nodi nella blockchain di Ethereum.
Si possono creare nodi Miners ed EVM da usare per la propria Blockchain privata.Il funzionamento di Geth si basa sul protocollo JSON RPC (IPC RPC).
Installazione Download da: https://ethereum.github.io/go-ethereum/downloads/
Durante l'installazione da wizard spuntare anche i Devloper Tools.
Completata l'installazione è utilizzabile da riga di comando o da Powershell.
Comandi Help:
geth -help
Per scaricare tutta la blockchain dal network globale di Ethereum, dal blocco genesi 0 al blocco attuale (50GB circa):
geth
Permette tre stategie di collegamento:
Collegamento, quindi, del PC ad Ethereum:
geth
Ogni Network di Ethereum ha un ID di catena:
geth --testnet
geth --rinkeby
Occorre scrivere un file di configurazione del network chiamato genesis.json.
Tra i vari avrà i seguenti parametri indicativi:
Chaindata: perscorso dove conservare le informazioni relative alla blockchain.
geth init <<path file genesis.json>> --datadir <<path/chaindata>>
Geth usa di defaul il protocollo IPC, ma il protocollo RPC (che usa l'HTTP) è più maneggevole:
geth --datadir <<chaindata>> --rpc --rpcapi <<eth,web3,miner,admin,personal,net>> --rpccorsdomain <<*>> --nodiscover --networkid <id del network>
--rpc abilita il protocllo RPC
--rpcapi abilita le librerie da usare per la connessione
--network id
IPC:
geth attach ipc:\\.\pip\geth.ipc
RPC:
geth attach rpc:http://localhost:8545
geth attach rpc:http://127.0.0.1:8545
Cambio porta con -rpcport
.
La blockchain è funzionante, ma non è ancora possibile avviare un'attività di mining poichè occorre un account Coinbase o Etherbase. Una volta connessi al network:
personal.newAccount()
Dopo aver inserito la password viene generato l'indirizzo dell'account Coinbase o Etherbase appena creato. Questo ID va conservato, non è più recuperabile successivamente.
miner.setEtherbase("codice indirizzo fornito alla creazione dell'account")
Se il response è "true
", l'account è attivo.
Quindi:
eth.coinbase
Il response dovrebbe essere l'ID dell'account creato. Se tutto è regolare si può avviare l'attività di mining con:
miner.start()
e interromperla con:
miner.stop()
La scrittura di una transazione avvenuta nel network di Ethereum richiede alcuni passaggi:
Il processo di mining è quindi troppo time-consuming per lo sviluppatore di dAPPs.
Per questo motivo è stato concepito il tool Ganache-CLI, ossia un nodo fittizzio, surrogato, di Ethereum che contiene entrambe le funzionalità di processazione delle transazioni e mining, senza dover aspettare il tempo richiesto per una normale transazione.
Ganache-CLI è basato su node.js (installare node.js se non è stato fatto).
Per installare ganache-cli:
npm install -g ganache-cli
Dopo aver installato il tool si può avviare il nodo virtuale con l'istruzione:
ganache-cli
Ganache crea 10 account virtuali con 100 Ether virtuali ciscuno, mostando le 10 chiavi hash private (vedi immagine).
Necessario solo se si usa Solidity in locale, se si utilizza Remix non è necessario. Il codice Solidity deve essere convertito in bytecode per essere letto dalle EVM.
npm install -g solc
Web3 è stata concepita per connettere i nodi da Ethereum al proprio computer o da remoto. Può gestire le transazioni tramite i nodi di Ethereum.
Installazione:
npm install web3@0.19 (o versione più aggiornata stabile)
Si accede al workspace del nodo Ethereum:
node
Quindi per connettersi al nodo:
var Web = require("web3")
var web = new Web(new Web.providers.HttpProvider("http://localhost:8545"))
per verificare la connessione al nodo:
Web.isConnected()
Per effettuare scambi occore un portafoglio virtuale "Wallet". Mist è un wallet valido per gestire gli scambi di Ether su Ethereum. Scaricare Mist da qui: https://github.com/ethereum/mist/releases
Quando si lancia Mist il wallet trova in autonomia il network privato e si collega, altrimenti si collega automaticamente al network Main di Ethereum o a Rinkeby.
Con Mist è possibile:
Accedere a GitHub: https://github.com/ethereum/mist/releases.
Scaricato il sorgente da github, Geth comincierà ad estrarre.
Nella cartella dove sono stati installati i componenti di Geth c'è il programma Ethereum Wallet.
Eseguendolo si apre un'interfaccia (vedi screenshot) da cui è possibile fare un Add Account e vedere, in alto a destra, il saldo in Ether. Alla voce "Contract" si possono deployare e gestire gli Smart Contracts.
Creare l'account usando una password sicura da conservare.
Il Wallet salva dei file nel disco fisso. ATTENZIONE: fare backup frequenti per conservare questi file, contengono anche gli Ether.
Estensione di Google Chrome per l'interazione con Ethereum.
Download: https://metamask.io
Non scarica tutta la blockchain sul computer ma si collega al network di Ethereum attraverso il browser.
Aggiungere l'estensione da https://metamask.io.
Accedere registrando una nuova password.
L'account con il Wallet Mist è già presente su MetaMask, viene recuperato in automatico. Si può scegliere a qualsiasi network connettersi, compresi quelli privati (su localhost:8545).
Se si vuole espostare la chiave privata:
... -> Export Private Key -> Inserimento password
IMPORTANTE: salvarsi la chiave, è come un portafoglio fisico.