The blockchain giant-impact: elezioni su YouVote con Scrypta

Democrazia e blockchain: anche l’ormai famosa capra ha finalmente la sua chance

Gispp
vivido-it
3 min readMar 24, 2020

--

Continuano gli esperimenti di Giant-Impact, questa volta utilizzando la blockchain di Scrypta.

Ripartiamo dal nostro Ida node: attraverso questo componente dell’ecosistema di Scrypta è possibile dialogare con la blockchain sottostante, esplorandola e scrivendo dati. L’interazione Client-IdaNode avviene attraverso chiamate https programmabili in javascript, le classe dedicata dialogherà direttamente con l’IdaNode che salverà le informazioni desiderate. Non vi è una macchina virtuale distribuita dunque il codice che scriveremo non sarà immutabile ma sarà eseguito dal client che utilizza l’applicazione.

Gestione account

Si è deciso di gestire l’account all’interno dell’applicazione stessa così da renderla subito utilizzabile nonostante esista l’estenzione ScryptaID, più avanti si potrebbe integrare aggiungendo YouVote al dappExplorer.

Dal momento in cui si seleziona l’icona di Scrypta apparirà una finestra in cui è possibile caricare il proprio account attraverso il file .sid o crearne uno dal sito Manent, sbloccarlo e utilizzarlo.

Inserimento e sblocco account

Alla la creazione dell’elezione e prima della partecipazione a questa verrà chiesta la password per lo sblocco dell’account.

Creazione e partecipazione

La creazione dell’elezione è totalmente gratuita dal momento che la transazione viene effettuata dall’account dell’elezione stessa e non dal proprio, in questa verranno salvate le caratteristiche della votazione che si sta per avviare.

Si può partecipare e far partecipare attraverso il CID IPFS della transazione che verrà mostrato quando la transazione sarà andata a buon fine.

Indirizzi elezione

Così come accade per le votazioni effettuate su Ethereum e quelle che verranno effettuate su Quadrans.

Funzioni principali

L’implementazione della classe scypta.js contiene tutto il codice utilizzato per l’interazione con l’IdaNode. L’aspetto di maggior differenza con Ethereum è che ogni tipo di controllo viene effettuato lato client; bisogna verificare se l’utente ha già votato o se l’elezione è terminata? Il client stesso elaborerà queste richieste.

Come evitare di effettuare manualmente le transazioni aggirando i controlli di YouVote? Nessuno mi vieterebbe infatti di inviare transazioni con determinati parametri…

Quello che si può fare per evitare tutto ciò è filtrare i voti non validi al momento del conteggio dei risultati finali: questo viene effettuato nella funzione excludeInvalidVotes(…), cosicché l’esito non sarà corrotto.

Repository GitHub

Tutte le narrazioni contenute in questi articoli sono supportate dal codice che è possibile reperire al seguente link github:

The blockchain giant impact

Nello specifico trovate:

Implementazione Ethereum con Smart Contract

Implementazione Scrypta

Mentre il resto dei componenti, interfaccia grafica compresa, sono comuni ad entrambe le implementazioni.

Nota

Per fare un confronto con la realizzazione per Ethereum, vi rimando al post

The blockchain giant-impact: elezioni con YouVote utilizzando Ethereum

--

--