Lo scenario attuale - Criticità
Attualmente l’organizzazione di una votazione il cui esito sia accettato in maniera ufficiale richiede la compresenza di tutti i partecipanti al voto e al suo scrutinio (es. voto per alzata di mano), oppure richiede di pianificare ed eseguire un processo ad hoc nel caso in cui la votazione si effettua in più seggi, come accade ad esempio nel caso delle pubbliche elezioni. In quest’ultima situazione occorre coinvolgere un gran numero di attori che siano garanti della correttezza dell’esito e del controllo dello svolgimento della votazione, inoltre richiede un canale sicuro e non manomissibile per l’invio dei risultati di ogni singolo seggio all’organo centrale che aggregherà i vari risultati.
Da lungo tempo si effettuano votazioni sul Web, per attuare un processo con costi minori e che potessero essere applicati a comunità di elettori distribuite in senso geografico. L’idea si basa sulla centralizzazione della votazione in una singola Web Application. Questa soluzione comporta una serie di svantaggi rispetto alla controparte “fisica”:
- Occorre fidarsi dell’ente che organizza il voto, in quanto è l’unico a poter accedere ai dati dei voti effettuati ed in grado di effettuare lo scrutinio;
- Il sistema può essere vittima di attacchi alla disponibilità con possibile perdita o corruzione dei dati sui voti effettuati;
- Il sistema di conteggio può essere caratterizzato da anomalie che falsano il risultato, ma siccome non è presente un meccanismo alternativo di verifica, ciò può non emergere.
Sfruttando le competenze in ambito Blockchain, Ballotchain è stato creato per superare i limiti delle votazioni online ed equiparare, se non superare, le garanzie previste da una pubblica elezione.
Queste garanzie consentono di superare i principali problemi che affliggono le tradizionali piattaforme di voting online, ad esempio:
- Ci si può fidare dell’ente centrale per la memorizzazione ed il conteggio dei voti?
- È possibile arginare il fenomeno per cui lo stesso votante effettua voti multipli usando diversi IP o account?
- È possibile accedere all’esito della votazione se la Web Application andasse off-line o fosse soggetta ad attacco alla disponibilità o ai dati?
Il conteggio finale sarà effettuato contando il numero di transazioni sulla Blockchain indirizzate agli address dei wallet dei singoli candidati. Il vincitore della votazione sarà decretato individuando quello con il maggior numero di transazioni ricevute.
Ballotchain viene erogata sotto forma di Web Application HTML 5, caratterizzato da design responsive visualizzabile da PC, smartphone e tablet.
I casi d’uso sviluppati
Per dimostrare l’efficacia del sistema è stato realizzato un prototipo di Web Application che supporta due casi d’uso:
- Caso d’uso votante: il votante effettua il login nel sistema, specifica la sua preferenza ed inoltra il voto. L’applicazione effettua le operazioni in Blockchain per conto dell’utente, di fatto non impattando in alcun modo sulla User Experience e sulla facilità d’uso dell’applicazione.
- Caso d’uso scrutinio: il votante vuole visualizzare l’esito della votazione, accede quindi alla pagina dei risultati che visualizzerà il totale dei voti ricevuto da ciascun candidato. In questo caso l’applicazione mostrerà in maniera grafica il risultato dell’esplorazione della Blockchain.
L’architettura della soluzione
Attualmente Ballotchain è costruita appoggiandosi ai servizi della Blockchain RegNet di Bitcoin per scopi di sperimentazione in ambiente controllato, così che l’acquisto di Bitcoin reali non sia richiesto e che offra rapidità e versatilità per reset della rete e test di sicurezza. L’applicazione è predisposta per funzionare anche su rete TestNet e MainNet per scenari di beta test e di esercizio.
Tra i vantaggi dell’uso di RegNet in fase di prototipazione, si possono annoverare:
- Maggior velocità di set-up data dalla minor dimensione (set-up istantaneo che non richiede il download della blockchain pregressa);
- Assenza di un valore monetario associato ai Bitcoin e di fees da corrispondere ai miner, che introducono ritardi nella convalida delle votazioni;
- Stessi livello di sicurezza garantito da MainNet;
- Stessi servizi e logiche di scripting disponibili per MainNet;
- Stessi servizi e logiche di scripting disponibili per MainNet (in particolare campo libero OP_Return di 40byte necessario per registrare informazioni da associare alla transazione).
L’architettura dell’applicazione, oltre al front-end HTML 5, prevede un back-end in tecnologia Java così composto:
- Uno strato di Business Logic realizzato su piattaforma Apache Tomcat che interagisce con un Database di candidati allo scopo di presentare all’utente la lista dei candidati. Ha inoltre il compito di interagire con la Blockchain attraverso i servizi della libreria Open Source BitcoinJ per due tipi di attività (Inoltro delle transazioni secondo le scelte del votante; Scoperta e conteggio delle transazioni che rappresentano un voto valido).
- Un database MySQL contenente le informazioni di corrispondenza fra candidati e rispettivi indirizzi dei loro wallet.