O cenário atual – Criticidades
Atualmente, a organização de uma votação cujos resultados sejam aceitos de forma oficial requer a presença de todos os participantes ao voto e ao seu escrutínio. É fundamental planejar e executar um processo específico no caso em que a votação é realizada em vários lugares, como acontece, por exemplo, no caso de eleições públicas. Nesta última situação, é necessário envolver um grande número de indivíduos que tutelem o resultado e controlem o desenrolar da votação; também exige um canal seguro e não corrompível para enviar os resultados de cada assembleia de voto para o centro que vai computar os vários resultados.
Há muito tempo se realizam votações na Web, com o objetivo de realizar um processo a um custo menor e que possa ser aplicado às comunidades de eleitores espalhados geograficamente. A ideia é baseada na centralização da votação em um único aplicativo Web. Esta solução envolve uma série de desvantagens em relação ao processo “físico”:
- É necessário confiar na entidade que organiza a votação, uma vez que é a única que pode acessar os dados dos votos realizados e é capaz de contá-los;
- O sistema pode ser vítima de ataques à disponibilidade com possível perda ou corrupção dos dados dos votos realizados;
- O sistema de contagem pode ser caracterizado por anomalias que distorçam o resultado, mas, como não há nenhum mecanismo alternativo de verificação, este pode nem ser descoberto.
Utilizando conhecimentos específicos em Blockchain, Ballotchain foi criado para superar as limitações da votação on-line e igualar, se não superar, as garantias previstas em uma eleição pública.
Estas garantias permitem superar os principais problemas que enfrentam as plataformas tradicionais de votação on-line, por exemplo:
- É possível confiar na instituição central para armazenamento e contagem dos votos?
- É possível verificar o fenômeno no qual o mesmo eleitor vota várias vezes usando diferentes IPs ou contas?
- É possível ter acesso ao resultado da votação, se o aplicativo Web ficar off-line ou se estivesse sujeito a um ataque à disponibilidade ou aos dados?
A contagem final será realizada pela contagem do número de operações no Blockchain dirigidas ao endereço da carteira de cada candidato. O vencedor da votação será decretado através da identificação daquele com o maior número de operações recebidas.
Ballotchain é um aplicativo Web em HTML5, caracterizado por um design responsivo visível em PC, smartphone e tablet.
Os casos de uso desenvolvidos
Para demonstrar a eficácia do sistema, foi criado um protótipo de aplicativo Web que suporta dois casos de uso:
- Votando: o eleitor faz o login no sistema, especifica sua preferência e encaminha o voto. O aplicativo executa as operações Blockchain no nome do usuário, sem de modo algum impactar sobre a experiência do usuário e na facilidade do uso do aplicativo.
- Apuração: o eleitor quer ver o resultado da votação, então, ele acessa a página de resultados que irá exibir o número total de votos que cada candidato recebeu. Neste caso, o aplicativo apresentará um gráfico com o resultado da exploração do Blockchain.
A arquitetura da solução
Atualmente o Ballotchain é construído baseando-se nos serviços do Blockchain RegNet de Bitcoin para fins experimentais em um ambiente controlado, de modo que não é necessária a compra de Bitcoins reais, e que oferece rapidez e versatilidade para resetar a rede e realizar testes de segurança. O aplicativo é projetado para funcionar na rede TestNet e MainNet para cenários de beta test e para exercício.
Entre as vantagens da utilização de RegNet na fase de prototipagem, temos:
- Setup mais rápido graças ao tamanho menor (setup instantâneo que não requer o download do Blockchain anterior);
- Nenhum valor monetário associado à Bitcoin e nem taxas a serem pagas a mineradores, que geram atrasos na validação do voto;
- O mesmo nível de segurança oferecido pela MainNet;
- Os mesmos serviços e lógicas de scripting disponíveis para MainNet;
- Possibilidade de experimentar com cenários em que as transações são pré-mineradas e cuja validação é instantânea.
A arquitetura do aplicativo, além do front-end HTML5, fornece um back-end em tecnologia Java composto por:
- Uma camada de Business Logic construída sobre a plataforma Apache Tomcat que interage com o banco de dados dos candidatos, a fim de apresentar ao usuário a lista de candidatos. Tem também a tarefa de interagir com o Blockchain através dos serviços da biblioteca Open Source BitcoinJ para dois tipos de atividades (Encaminhamento de transações de acordo com as escolhas do eleitor; Descoberta e contagem de transações que representam um voto válido).
- Um banco de dados MySQL que contem as informações de correspondência entre os candidatos e seus respectivos endereços de suas carteiras.