DApps & Smart Contracts Tutorial

[GUIDA] Come creare una DAPP Ethereum: La parte back-end

Nella guida di oggi andremo a vedere passo dopo passo come creare una DAPP Ethereum. Nello specifico si tratta di un semplice e-commerce di opere d’arte basato sulla piattaforma Ethereum, che permetterà l’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.

Prima di iniziare vi comunico che potete trovare e scaricare tutto il codice presente nella seguente guida sul mio profilo Gitlab per consultarlo e adattarlo alle vostre 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 nel prossimo articolo. Iniziamo!

L’aspetto finale del progetto che si vuole ottenere sarà qualcosa di simile:

e-commerce dapp web browser

e-commerce dapp web browser 2

e-commerce dapp web browser propritari

Come creare una DAPP Ethereum

Passaggi fondamentali & requisti

  1. Scaricare ed installare i programmi necessari;
  2. Creare un progetto Truffle;
  3. Scrivere lo smart contract;
  4. Compilare e migrare su blockchain lo smart contract;
  5. Testare il funzionamento corretto dello smart contract;
  6. 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à contenuto nella seconda parte della guida.

Schema architetturale della DAPP

Tecnologie necessarie e da conoscere

Installare i software richiesti

Se nel vostro sistema operativo non avete già installato Node.js procedete con lo scaricare l’ultima versione stabile disponibile (LST) e installatela. Avrete già compreso nell’installazione Npm, il comodo gestore di pacchetti aggiuntivi per Node, che ci permetterà di scaricare comodamente il framework Truffle e Ganache. Essi saranno necessari per realizzare facilmente una blockchain Ethereum privata sul nostro computer.

Se siete su Windows, per installare truffle vi basterà digitare nella powershell di Windows: npm install -g truffle.

Per Ganache, che vedremo dopo, basterà invece digitare npm install -g ganache.

Ora, creiamo una cartella sul desktop e nominiamola “DAPP”.

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

Digitate Truffle init.

Inizierà una breve fase in cui il nostro framework scaricherà alcuni file e organizzerà in modo corretto le cartelle del nostro progetto. Vedrete all’interno della cartella principale DAPP 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 dei nostri smart contracts.

Nella cartella migration invece troviamo il file Migration.sol, è uno smart contracts “speciale” che permette a Truffle di effettuare il deploy di altri smart contracts 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, troverete il file Truffle-config.js che sarà necessario come file di configurazione, che vedremo in seguito. Iniziamo con lo scrivere il nostro primo smart contract.

Creiamo lo smart contract Ethereum

Aprite il vostro editor di testo preferito e iniziamo a scrivere il codice. Se usate SublimeText (come il sottoscritto) potrebbe tornarvi utile, ma non indispensabile, impostare nell’editor quale linguaggio state utilizzando.

Come ben saprete, il linguaggio di programmazione più diffuso per scrivere smart contract è Solidity.

In basso a destra nell’editor di testo dovreste vedere la dicitura “Plain-text”, cliccandola si aprirà una lunga lista di linguaggi che potete selezionare e che vi permetterà di avere una colorazione della sintassi differente e intuitiva a seconda del linguaggio utilizzato. Inizialmente Solidity non sarà presente, se volete aggiungerlo seguite questa mini-guida.

Cose da sapere: Solidity è un linguaggio che richiede l’esplicitazione del tipo di variabile che andiamo 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 vogliamo assegnargli.

All’interno, fra parentesi graffe, andremo a scrivere ciò che vogliamo che il nostro contratto andrà a svolgere.

ethereum dapp guida 2

Questo è come si presenta lo smart contract per certificare l’acquisto delle opere d’arte.

Viene definito un array di indirizzi Ethereum, definito pubblico per poterci accedere 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 vogliamo che vengano rispettate, ovvero quello che alla funzione le venga passato un ID compreso fra 0 e 5 (siccome ho scelto che le opere d’arte in vendita siano 6) e che la posizione corrispondente dell’array di indirizzi sia ancora non assegnato, ovvero che contenga un indirizzo vuoto (abbreviato con 0x0).

La porzione di codice chiave della funzione è quella che si trova a 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 restituirci 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

Adesso potete riaprire la powershell di Windows e digitare Truffle compile.

Verranno compilati da Truffle tutti i file presenti nella cartella Contract. Nel nostro caso saranno due. Il primo presente di default e il secondo sarà il nostro 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 ci dà la possibilità di effettuare il testing dei nostri smart contract ethreum. Apriamo la cartella test e creiamo un nuovo file solidity e denominiamolo 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 vogliamo che vengano testate.

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

ethereum dapp guida 3

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.

Recandoci nella powershell ci basterà digitare truffle test e dopo pochi secondi vi verrà restituito un messaggio che ci indicherà la riuscita o meno di tutte le funzioni di test definite. Anche queste fasi di testing vengono scritte nella nostra blockchain di ethereum locale e potrete notare tutte le transazioni su Ganache.

Deploy sulla rete Ethereum

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

Per utilizzare la rete principale Ethereum è bene tenere a mente che per ogni operazione che andremo ad effettuare dobbiamo sborsare una piccola commissione (da pagare in Gas).

Prima di operare sulla mainchain è bene assicurarsi di avere sviluppato e testato al meglio il nostro 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 più 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 ci 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 riuscirete ad effettuare la migrazione degli smart contract.

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

ethereum dapp guida 4

ethereum dapp guida 5

La fase di migrazione

Anche qui ci viene in contro Truffle. Sempre dalla powershell, all’interno della cartella del progetto, digitate Truffle migrate.

Vedrete all’interno della shell tutti i dati relativi al caricamento sulla rete locale dei due contratti e potete trovare le stesse transazioni nella sezione “transazioni” di Ganache.

A questo punto abbiamo sviluppato tutta la parte backend della nostra DAPP. Ora, possiamo cominciare ad interagire con la rete locale Ethereum attraverso la parte front end, che andremo a sviluppare nella seconda parte di questa guida.

La seconda parte della guida qui: [GUIDA] Come creare una DAPP Ethereum: La parte front end

cripto

Vi invitiamo a seguirci sul nostro canale Telegram ed anche sul gruppo ufficiale Telegram, dove sarà possibile discutere insieme delle notizie e dell’andamento del mercato, sulla nostra pagina Facebook e sul nostro account Twitter.


La più grande community italiana dedicata alle criptovalute: Italian Crypto Club (ICC)

Michele Porta

Ingegnere informatico. Da sempre appassionato di tecnologia, hardware e software. Sono entrato nel mondo delle criptovalute negli ultimi anni imparando a fare trading e studiando gli aspetti tecnologici e implementativi delle principali cryptocoin sul mercato. Spero in un futuro privo di contanti e basato sulla sicurezza garantita dalla blockchain.
Follow Me:

Related Posts

Rispondi