The blockchain giant-impact: elezioni su YouVote con Scrypta
Democrazia e blockchain: anche l’ormai famosa capra ha finalmente la sua chance
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.
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.
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:
Nello specifico trovate:
Implementazione Ethereum con Smart Contract
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