distributedApplication(dApp) per un parcheggio su blockchain ethereum tramite smart contract. L'applicazione prevede l'acquisto di un posto al momento dell'arrivo, la possibilità di prenotarlo in anticipo, la possibilità di cercare i posti disponibili e di estendere una sosta acquistata in precedenza.
Prima di compilare la dApp è necessario risolvere alcune dipendenze.
La prima cosa di cui abbiamo bisogno è NPM, che è fornito con Node.js. Si può controllare se node è già installato digitando nel terminale:
node -v
Altrimenti si può installare node scaricandolo dal sito ufficiale.
La seconda cosa che serve è Truffle. Truffle fornisce una serie di strumenti, che ci permette di scrivere smart contracts con il linguaggio di programmazione Solidity. Inoltre permette di testare i contratti e di metterli a deploy nella blockchain.
Si può installare truffle digitando nel terminale:
npm install truffle -g
La prossima dipendenza è Ganache, una blockchain di sviluppo locale, che fornisce 10 account con relativi indirizzi e 100 ether "fake" già caricati. Si può installare Ganache scaricandolo dal sito ufficiale.
Per prima cosa bisogna scaricare il codice da git tramite il comando:
git clone http://dev.conf.meetecho.com/AT-Projects/EthereumParking.git
Dopodichè occorre spostarsi nella cartella dello smart contract:
cd EthereumParking
A questo punto abbiamo bisogno di avviare Ganache, dopodichè apriamo il terminale e digitiamo:
truffle migrate --reset
... che effettuerà una migrazione della nostra applicazione. In parole povere, una migrazione è una serie di script che effettuano il deploy dello smart contract. Per effettuare test locali è necessaria una rete di test come Ganache.
Una volta effettuata la migrazione dello smart contract, è possibile ottenerne una instanza con cui poter interagire. Per fare ciò digitiamo nel terminale:
truffle console
Ed otteniamo una shell di questo tipo
truffle(development)>
La console truffle ha il vantaggio di avere disponibile al suo interno la libreria web3, già impostata e pronta per la connessione alla rete di test. A questo punto otteniamo una istanza del contratto:
> Parking.deployed().then(function(instance) { dApp = instance })
Ora possiamo interagire con il nostro contratto, tramite la variabile dApp, e chiamare le sue funzioni pubbliche. Per sapere quali sono le funzioni chiamabili sul contratto fare riferimento alla documentazione. Da notare che se il costo per un posto non è corretto e il pagamento non è fatto per un multiplo intero di un'ora, verrà sollevata un'eccezione "problemi con il pagamento".
La suite Truffle permette di effettuare dei test semplicemente creando un file test.js
nella cartella test/
. Sono forniti dei test per verificare che tutti i controlli di correttezza, implementati nel contratto, vengano attivati. Per lanciare i test basta digitare nel terminale:
truffle test
Oppure nella console truffle:
> test
Da notare che eseguire il comando test
consuma gli ether "fake" nella rete di test, quindi è necessario riavviare Ganache se si usa il comando troppe volte.
- La documentazione è disponibile alla directory git di questo progetto ed è stata realizzata con Doxygen.