The blockchain giant-impact: elezioni con YouVote utilizzando Ethereum

La blockchain come strumento per la risoluzione delle controversie “intra-nazionali”…

Gispp
vivido-it
3 min readMar 18, 2020

--

Il primo esperimento per quanto riguarda l’utilizzo di YouVote è stato effettuato con Ethereum.

E visto che di esperimento di tratta abbiamo deciso di non utilizzare Solidity.

Vyper

Vyper è un liguaggio di programmazione basato su python, contract-oriented, il cui scopo è scrivere smart contract che girano sulla Ethereum Virtual Machine.

Questo linguaggio è stato stato creato per ridurre al minimo le vulnerabilità degli Smart Contract e facilitarne la scrittura. Per fare ciò sono stati imposti alcuni limiti. Per dare un’idea, una delle principali differenze rispetto a Solidity è che Vyper non è Turing complete, ciò comporta che alcune classi di problemi non sono affrontabili utilizzandolo.

Alcune interessanti differenze sono:

  • Non esiste l’ereditarietà
  • Non esistono modificatori
  • Non è possibile effettuare chiamate a funzione ricorsive
  • I cicli sono sempre ben definiti, non ne esistono infiniti

Per ulteriori dettagli è possibile leggere la documentazione.

Se vi state chiedendo se sia “meglio Vyper o Solidity?”, la risposta è la stessa che si può dare alla domanda “meglio Bitcoin o Ethereum?”. E cioé “dipende”.

Vyper-Solidity, image from here

Uno degli aspetti positivi è che, conoscendo python, non bisogna imparare un nuovo linguaggio e se non si dovesse conoscere è una buona scusa per impararlo. Per il resto Vyper è molto restrittivo, non lascia nulla al caso. Un aiuto importante mi è stato dato dall’estenzione per VSCode, che compila il codice e rileva gli errori.

YouVote: Smart Contract

Lo Smart Contract è stato scritto seguendo le linee guida descritte sul post che parla della genesi di YouVote.

L’unico limite è stato quello di dover limitare superiormente in anticipo il numero di partecipanti all’elezione in quanto i cicli devono essere sempre ben definiti. In caso di un numero inferiore di partecipanti il ciclo verra interrotto in questo modo:

Allo scadere della votazione il client chiamerà la funzione di restituzione dei risultati per ogni partecipante:

Per la compilazione e il test del contratto sono stati utilizzati Truffle e Truper, un tool che permette di compilare i contratti Vyper e utilizzarli con Truffle.

Su GitHub è possibile visionare l’intero repository.

YouVote: Client

La PWA utilizza le API per interagire con il contratto attraverso una classe javascript dedicata e l’estenzione browser Metamask.

Note

Durante la scrittura dello Smart Contract e dell’implementazione del client sono stati effettuati svariati esperimenti. Il deploy dei contratti è stato effettuato su Ganache e il collegamento con YouVote effettuato tramite MetaMask.

Ci impegneremo nel rendere l’applicazione al più presto disponibile su IPFS, così da poterla provare voi stessi.

In attesa del prossimo post che parlerà dell’implementazione di YouVote su Scrypta, trovate qui di seguito i link alle precedenti puntate di questa serie:

--

--