HomeWikiCome creare una DAPP Ethereum: la parte back-end

Come creare una DAPP Ethereum: la parte back-end

In questa guida verrà mostrato passo a passo come creare una DAPP Ethereum. Nello specifico si tratterà di una simulazione di un semplice e-commerce di opere d’arte, basato sulla piattaforma Ethereum, che permetterà la simulazione di acquisto di beni tramite tramite Ether [ETH].

Questo e-commerce sarà in grado di certificare e mostrare l’acquisto di tale opere da parte dell’acquirente andando a registrare, attraverso uno smart contract, sulla blockchain Ethereum l’operazione di acquisto.

È possibile trovare e scaricare tutto il codice presente in questa guida su questo profilo Gitlab per consultarlo e adattarlo alle possibili diverse esigenze.

La guida sarà divisa in due parti per facilitarne la lettura e per suddividere la parte back-end (trattata in questa guida) dalla parte front-end che verrà trattata nella seconda parte della guida.

L’aspetto finale del progetto sarà qualcosa di simile:

Guida dapp ethereum: e-commerce web browser

e-commerce dapp web browser 2

e-commerce dapp web browser propritari

Guida: creare una DAPP Ethereum

Passaggi fondamentali e requisti

  • Scaricare ed installare i programmi necessari;
  • Creare un progetto Truffle;
  • Scrivere lo smart contract;
  • Compilare e migrare su blockchain lo smart contract;
  • Testare il funzionamento corretto dello smart contract;
  • Creare la parte front-end per interagire con lo smart contract.

I primi cinque punti saranno spiegati passo a passo in questa guida, mentre l’ultimo punto sarà approfondito nella seconda parte della guida.

Schema architetturale della DAPP

Tecnologie necessarie e da conoscere

I software richiesti

Il primo passo consiste nello scaricare l’ultima versione stabile disponibile di Node.js (LST) e di installarlo. Si avrà già compreso nell’installazione Npm, il comodo gestore di pacchetti aggiuntivi per Node, che permetterà di scaricare comodamente il framework Truffle e Ganache. Essi saranno necessari per realizzare facilmente una blockchain Ethereum privata sul proprio computer.

Su Windows, per installare truffle basterà digitare nella powershell di Windows: npm install -g truffle.

Per Ganache, invece, basterà digitare: npm install -g ganache.

Creare una cartella sul desktop e nominarla “DAPP”.

Aprire la PowerShell dall’interno della cartella, premere SHIFT + tasto destro del mouse e premere “Apri finestra PowerShell qui”.

Digitare: Truffle init.

Inizierà una breve fase in cui il framework scaricherà alcuni file e organizzerà in modo corretto le cartelle del progetto. All’interno della cartella principale DAPP verranno create tre nuove cartelle denominate “contracts”, “migrations” e “test” e un file javascript “truffle-config”.

La cartella contracts contiene i file in formato Solidity (.SOL) che saranno necessari alla realizzazione degli smart contract.

Nella cartella migration invece si trova il file Migration.sol. Si tratta di uno smart contract “speciale” che permette a Truffle di effettuare il deploy di altri smart contract e di tenere traccia di tutti i cambiamenti.

La cartella Test inizialmente non contiene nessun file ma è predisposta al contenimento di file javascript e Solidity per il testing degli smart contract.

Infine, sarà presente il file Truffle-config.js che sarà necessario come file di configurazione.

Lo smart contract Ethereum

Attraverso un editor di testo è possibile iniziare a scrivere il codice. Su SublimeText potrebbe tornare utile, ma non indispensabile, impostare nell’editor quale linguaggio di programmazione si sta utilizzando.

Il linguaggio di programmazione più diffuso per scrivere smart contract è Solidity.

In basso a destra nell’editor di testo è presente la dicitura “Plain-text”. Cliccandola si aprirà una lunga lista di linguaggi selezionabili che danno la possibilità di avere una colorazione della sintassi differente e intuitiva a seconda del linguaggio utilizzato. Inizialmente Solidity non sarà presente, ma sarà facile aggiungerlo seguendo questa mini guida.

Solidity è un linguaggio che richiede l’esplicitazione del tipo di variabile che si va a definire, al contrario del Javascript (dal quale prende comunque molto spunto).

Uno smart contract deve iniziare con la dicitura Contract, seguito dal nome che gli si vuole assegnare.

All’interno, fra parentesi graffe, andrà scritto ciò che si vuole che il contratto andrà a svolgere.

smart contract ethereum

L’immagine soprastante mostra lo smart contract per certificare l’acquisto delle opere d’arte.

Viene definito un array di indirizzi Ethereum, definito pubblico per riuscire ad accedervi dall’esterno.

La funzione principale è quella di acquisto (purchase). È definita pubblica e accetta in ingresso e restituisce un intero senza segno.

Al suo interno viene utilizzata la keyword require che permette di validare la condizione al suo interno e in caso non affermativo di interrompere l’esecuzione dello smart contract.

Sussistono due condizioni che si vuole che vengano rispettate, ovvero quello che alla funzione le venga passato un ID compreso fra 0 e 5 (siccome si è scelto che le opere d’arte in vendita siano sei) e che la posizione corrispondente dell’array di indirizzi sia ancora non assegnata, ovvero che contenga un indirizzo vuoto (abbreviato con 0x0).

La porzione di codice chiave della funzione è quella che si trova alla riga 12. Msg.sender non fa altro che restituire l’indirizzo Ethereum dell’utente che ha chiamato lo smart contract ethereum stesso.

La seconda funzione è getBuyers. Come si evince dal nome non fa altro che restituire tutta la lista degli indirizzi degli acquirenti. Da notare la keyword view nella definizione della funzione che permette di specificare che la funzione non andrà a modificare lo stato dello smart contract.

Compilazione dello smart contract

Ora, attraverso la powershell di Windows va digitato: Truffle compile.

Verranno compilati da Truffle tutti i file presenti nella cartella Contract. In questo caso specifico saranno due. Il primo presente di default e il secondo sarà lo smart contract scritto precedentemente.

Alla fine di questa procedura, all’interno della cartella principale del progetto, sarà presente un’ulteriore cartella build, il cui contenuto non viene trattato in questa guida.

La fase di test

Truffle fornisce la possibilità di effettuare il testing di smart contract Ethreum. Aprendo la cartella test va creato un nuovo file solidity e denominato testPurchasing. Per creare un nuovo file basta cliccare su File -> new File e dopo avervi scritto all’interno il codice salvarlo nel formato necessario.

Qui è possibile sbizzarrirsi e scrivere tutte le funzionalità che si vuole che vengano testate.

È necessario importare all’inizio i file di Truffle Assert e DeployedAddresses e lo smart contract precedentemente creato.

smart contract ethereum 2

In questo caso vengono definite tre funzioni che utilizzano tutte la keyword Assert. Quest’ultima è necessaria per verificare l’uguaglianza, la diseguaglianza o la verifica del contenuto nullo dei valori che le vengono passati come parametri. Inoltre, è possibile personalizzare il relativo messaggio restituito dallo specifico test.

Le funzioni presenti nell’immagine soprastante testano rispettivamente il funzionamento della modalità di acquisto e il ritorno corretto delle informazioni che vengono richiamate dalla blockchain.

Recandosi nella powershell basterà digitare: truffle test e dopo pochi secondi verrà restituito un messaggio che indicherà la riuscita o meno di tutte le funzioni di test definite. Anche queste fasi di testing vengono scritte nella blockchain di Ethereum locale e sarà possibile visualizzare tutte le transazioni su Ganache.

Deploy sulla rete Ethereum

Prima di procedere, è necessario decidere se si vuole avere a che fare con la rete Ethereum principale, con la testnet Ropsten oppure con una rete locale contenuta nel proprio pc.

Per utilizzare la rete principale Ethereum è bene tenere a mente che per ogni operazione che si andrà ad effettuare si dovrà pagare una piccola commissione (in Gas).

Prima di operare sulla mainchain è bene assicurarsi di avere sviluppato e testato al meglio lo smart contract. Per fare ciò è assolutamente consigliato cominciare a sviluppare su delle tesnet Ethereum quali per esempio le reti Ropsten o Kovan.

Il metodo più comodo e veloce è però sicuramente quello di avere una propria rete Ethereum privata all’interno del proprio PC.

In questa guida si è optato per lavorare con una blockchain privata e per fare questo viene in aiuto Ganache, software facente parte della suite di Truffle.

Ganache crea una rete Ethereum locale e permette di visualizzare comodamente tutte le transazioni attraverso un’ interfaccia user friendly. Fornisce di default 10 indirizzi Ethereum al cui interno sono contenuti 100 ether ciascuno (ovviamente fake).

È importante controllare che l’indirizzo su cui viene eseguito ganache e quello definito nel file truffle-config.js combacino, altrimenti non si riuscirà ad effettuare la migrazione degli smart contract.

Sia in Ganache che nel file di configurazione è possibile modificare a piacimento il numero di porta.

smart contract ethereum 3

Guida dapp ethereum: le transazioni di ganache

La fase di migrazione

Anche in questo caso viene in aiuto Truffle. Sempre dalla powershell, all’interno della cartella del progetto, va digitato: Truffle migrate.

All’interno della shell saranno visualizzabili tutti i dati relativi al caricamento sulla rete locale dei due contratti e sarà possibile trovare le stesse transazioni nella sezione “transazioni” di Ganache.

Arrivati a questo punto la parte backend della DAPP è terminata. Ora, è possibile cominciare ad interagire con la rete locale Ethereum attraverso la parte di front end, che verrà analizzata e sviluppata nella seconda parte di questa guida.

Michele Porta
Michele Portahttps://www.micheleporta.info/
Ingegnere informatico. Da sempre appassionato di tecnologia, hardware e software. Entra nel mondo delle criptovalute negli ultimi anni imparando a fare trading e studiando gli aspetti tecnologici e implementativi delle principali crypto sul mercato. Spera in un futuro privo di contanti e basato sulla sicurezza garantita dalla blockchain.
RELATED ARTICLES

MOST POPULARS

GoldBrick