Escolar Documentos
Profissional Documentos
Cultura Documentos
1
Faculdade de Computação de Informática – Universidade Presbiteriana Mackenzie
(UPM) - São Paulo, SP - Brasil
{31617212,31928900,31986773,31946968}@mackenzista.com.br,
rodrigo.cardoso@mackenzie.br
Abstract. The digital era offers a welcoming environment for the pursuit of te-
chnology innovation in various technological areas, for example in the field of
Internet voting system. However, researchers of this field claim that the internet
voting system can be very risky. This study aims to create a secure environment
to protect Internet voting (i-voting) systems, by using blockchain technology,
more specifically, the Solana blockchain network. That environmnet respect the
anonymity, integrity and transparency principles. This research does not aim
at an eletronic voting (e-voting) process as a whole, but to study and create a
proof of concept around that topic, promoting scientific study to raise security
and reliability in the whole election process.
1. Introdução
De acordo com as acepções de Silva [2020], a era digital é regida pela realidade hı́brida
no ambiente imersivo e interativo da Internet, tornando-se o cenário propı́cio para buscar
inovações na área da tecnologia da informação.
Neste sentido, o objeto desta pesquisa é o processo eletrônico de votação no campo
remoto, ou seja, abordar o processo de votação pela Internet com o uso da tecnologia
blockchain denominada de Solana.
A proposta deste estudo está fundamentada nas afirmações de Ro-
drigo Silva que expõe o desafio e a oportunidade da pesquisa no tema:
2. Referencial Teórico
Os conceitos abordados para a construção deste estudo estão divididos a seguir em três
seções principais. Na primeira é apresentada a tecnologia e os principais conceitos de
blockchain. A seguir uma visão sobre sistemas de votação web. Por último, será apresen-
tada a blockchain Solana escolhida para o desenvolvimento do estudo.
O referencial teórico ou estado da arte do trabalho de pesquisa esta fundamentado
nas pesquisas de SILVA [2020], ZHENG [2018], NAKAMOTO [2008], NOFER [2017],
SWANSON [2015] e LAMPORT [2019].
Segundo SILVA [2020], a proposta de voto pela Internet é um fato emergente no
cenário internacional. O estudioso apresenta posição mais conservadora para sistemas de
votação pela Internet, pois ainda são bastante suscetı́veis à fraudes e vulnerabilidades, fa-
tos que prejudicam a confiança em qualquer sistema eletrotônico de votação. No entanto,
ele afirma que o tema necessita de mais pesquisas para aprimorar ainda mais o debate na
comunidade cientı́fica.
Ambos ZHENG [2018] e NOFER [2017] realizam um estudo descrevendo a tec-
nologia blockchain da perspectiva técnica. Os pesquisadores descrevem a taxonomia, a
estrutura da blockchain, a estrutura dos blocos e os principais algoritmos de consenso. Os
estudiosos também analisam as aplicações da tecnologia e dificuldades técnicas.
NAKAMOTO [2008] descreve a utilização da tecnologia de blockchain para a
criação de uma moeda eletrônica peer-to-peer para a realização de transações monetárias
sem a necessidade do intermédio de uma instituição financeira.
SWANSON [2015] realiza uma comparação entre sistemas de criptomoedas ‘per-
missionless’ e sistemas de registros distribuı́dos ‘permissioned’.
2.1. Blockchain
Para a adição de um novo bloco na rede é necessário que a maioria dos nós pre-
sente na rede blockchain, por um mecanismo de consenso, aprovem a validez de suas
transações e do bloco em si [Nofer M. 2017]. Esse mecanismo de consenso consiste em
um conjunto de regras e procedimentos que permite manter a coerência dos dados entre
os diversos registros distribuı́dos [Swanson 2015].
2.1.1. Bloco
Cada bloco em uma blockchain consiste no cabeçalho e no corpo [Zheng et al. 2018].
O corpo da bloco consiste no número de transações presentes no bloco e as próprias
transações, enquanto o cabeçalho inclui:
• Versão do bloco: mostra as regras de validação do bloco.
• Hash do bloco anterior: O valor hash que aponta para o bloco anterior.
• Hash da raiz da Merkle Tree: Utilizado para validar todas as transações presentes
no bloco.
• Timestamp: a marcação de tempo do bloco.
• nBits: Valor máximo para a geração do hash do bloco.
• Valor aleatório: O valor utilizado para gerar o hash
Para o novo bloco ser adicionado na blockchain é necessário que suas transações
e integridade sejam validadas através do algoritmo de consenso [Nofer M. 2017].
A maneira de atingir um consenso entre os vários nós da rede é uma adaptação do Pro-
blema Generais Bizantinos (PGB) [Lamport et al. 2019]. No PGB um grupo de generais
bizantinos cercam com seus exércitos uma cidade. O ataque apenas terá sucesso caso
todos os generais decida atacar, por isso os generais devem comunicar entre si e chegar a
um acordo sobre atacar ou não. Porém, pode existir um traidor.
Devido à blockchain ser descentralizada, atingir um consenso se torna ainda mais
difı́cil, visto que não existe um nó central que garante que a blockchain é igual para todos
os nós[Zheng et al. 2018].
Proof of Work é um algoritmo de consenso que consiste em vários nós da rede, cha-
mados mineradores, procurarem um valor que, quando usado como entrada da função
hash, retorne um valor que comece com um número determinado de bits de valor zeros
[Nakamoto 2008]. O cálculo do hash válido demanda de alto poder computacional e uso
de energia, ambos amplificados pela quantidade de nós mineradores, e tem sua dificuldade
exponencialmente proporcional a quantidade de zeros necessários e pode ser verificado
com uma execução da função hash. Na rede bitcoin é utilizado o incremento no nonce
do bloco até a geração do hash válido, tendo o valor validado pelos outros nós da rede.
Por ser descentralizada é possı́vel que mais de um nó descubra um valor de nonce válido
gerando bifurcações na estrutura da blockchain [Zheng et al. 2018]. Porém, é extrema-
mente improvável que duas ramificações gerem o bloco seguinte ao mesmo tempo. No
Proof of Work a ramificação mais longa é considerada a autêntica.
2.3.1. E-voting
2.3.2. I-voting
Neste sistema, a cédula eletrônica não é mais armazenada na urna eletrônica, mas encami-
nhada através de um link de comunicação para um servidor de dados central. O processo
é efetuado através de uma conexão com a Internet por meio de auxı́lio de um microcom-
putador pessoal, que não está na gestão fı́sica do responsável pela eleição [Silva 2020].
Existem três modelos conceituais desse sistema [R. Michael Alvarez 2003], sendo
estes:
• kiosk Internet voting
• polling place Internet voting
• precint Internet voting
Os dois primeiros modelos referem-se à um microcomputador em local supervi-
sionado pela autoridade eleitoral, enquanto que apenas o último modelo permite que o
eleitor vote usando a Internet em qualquer lugar e sem qualquer controle fı́sico de algum
órgão responsável. Entretanto é necessário informar que os riscos são ainda mais poten-
cializados, visto que as comunicações através da Internet não abrangem apenas às partes
conectadas, mas também terceiros que podem não compor o órgão responsável, por isso o
sistema precisa achar uma maneira de impossibilitar que esses elementos se tornem uma
falha para o processo [Silva 2020].
Entre os diversos problemas técnicos de segurança do sistema i-voting
[Jones 2000], estes são considerados os principais:
• autenticação eletrônica do eleitor;
• integridade da cédula eletrônica;
• confiabilidade no meio da transmissão e armazenamento dos votos;
• votação múltipla segura;
• defesa do sistema de votação no ambiente dos eleitores e do governo responsável;
3. Metodologia
Segundo Silva (2020) em sistemas de votação majoritária existe um dilema na construção
de um sistema de i-voting que garanta os princı́pios de anonimato, integridade e trans-
parência. Apesar de não buscar uma solução em escala majoritária, este estudo tem como
objetivo utilizar a tecnologia blockchain a fim de criar um processo de votação online,
garantindo autenticidade, integridade e transparência.
De acordo com TSE (Tribunal Superior Eleitoral) em 2022, a integridade em uma
votação é a caracterı́stica que define que os votos depositados não serão alterados em
nenhum momento durante o processo de votação. Esse processo é realizado por uma em-
presa terceira e ocorre momentos antes da eleição onde são comparados votos realizados
em uma urna de teste com o output da mesma. Comparando a solução apresentada neste
trabalho, a integridade dos votos não teria necessidade de ser verificada por um órgão ex-
terno, a própria rede blockchain ficaria responsável por garantir a integridades dos blocos
gerados [Secretaria de Comunicação e Multimı́dia 2022].
O conceito de autenticidade dentro do contexto de votação visa identificar um
votante e garantir que este vote apenas uma vez. A autenticação do votante pode ser
realizada de diversas formas: i) Something you have, baseado em algo único que o votante
possui, como um documento; ii) Something you are, baseado em caracterı́sticas fı́sicas do
votante, como dados biométricos; e iii) Something you know, baseado em coisas que
apenas o votante deveria saber, como uma senha.
A transparência em uma eleição procura aumentar a confiança dos votantes no
sistema, que podem ter dúvidas se os votos dados nas urnas são os mesmos contados no
fim. No contexto de votações eletrônicas existem vários meios de conquistar uma maior
transparência, como disponibilizar código-fonte, realização de testes públicos, publicação
dos registros das urnas, sem comprometimento da anonimidade, entre outros.
Como abordado nos tópicos anteriores deste estudo uma blockchain é baseada no conceito
de validação P2P garantindo a integridade onde todos os nós conectados são responsáveis
por validarem o conteúdo dos blocos. Dessa forma seria praticamente impossı́vel alterar
o conteúdo de um bloco, ou seja, o conteúdo de um voto.
Considerando um cenário hipotético onde um bloco alterado é submetido a rede
iniciaria um processo de validação onde todos os nós validariam a sua versão com a do
novo bloco. Uma vez em que a maioria tem uma versão diferente do bloco submetido
esse bloco é descartado.
Para solucionar as questões de transparência do projeto, além do fato da blockchain já ter
seu rastreio de transações como citado no tópico 2.1, o sistema conta com a contabilização
dos resultados em tempo real, exibindo votos totais por opção possı́vel e sua porcentagem
dos votos totais. O código fonte do sistema também está completamente disponı́vel pu-
blicamente no repositorio do front-end1 e Program2 do projeto.
1
https://github.com/itodevio/solana-voting-system-frontend
2
https://github.com/itodevio/solana-voting-system-program
3.1.3. Solução: Autenticação da Votação
A solução criada consiste em, dentro do Program na Solana, adicionar a chave pública
da carteira do usuário em uma lista dentro do estado da votação/enquete corrente no mo-
mento de realizar seu voto. Antes de contabilizar o voto, é analisado se a chave pública do
usuário já se encontra dentro dessa lista e em caso positivo (que significaria que o eleitor
já realizou seu voto nesta votação especı́fica) a transação é rejeitada e é exibida a tela com
os dados dos resultados. Dessa forma, para maior maleabilidade e economia de recur-
sos, a autencidade se da como uma paridade de voto por carteira digital, ao invés de voto
por pessoa fı́sica, propriamente dito. De qualquer modo, como explicado posteriormente
nas conclusões, é possı́vel tornar essa autenticação em uma paridade de voto por pessoa
garantindo a existência de uma única carteira digital por eleitor.
Tendo definido os problemas presentes no Internet Voting e como é possı́vel usar a Solana
para ajudar nesses obstáculos, essa pesquisa, agora, irá destacar como essa blockchain
interage com esse sistema para alcançar esses benefı́cios.
A Solana servirá como a camada de aplicação para esse projeto, se responsabi-
lizando assim por controlar a lógica por trás do processo de voto e controle de voto em
cada instância dela, agindo como o back-end do sistema.
A Figura 2 demonstra a relação do estado com o funcionamento da aplicação,
onde a estrutura PollOption representa a opção de voto; StarSollError é uma estrutura
que define os erros possı́veis de ocorrer na aplicação; Poll é a classe da votação em si, que
utiliza-se da estrutura PollOptions para ter sua lista de opções, uma lista de chave pública
dos eleitores para validação, e seus métodos de inicialização (instância do programa) e
voto. O Program<Poll> é a instância da classe Poll, ou seja, uma única votação especı́fica
rodando na blockchain, e tem como objetivo ser a interface de comunicação com o exterior
(front-end).
3
na cotação da rede de desenvolvimento, na data de escrita deste artigo.
Figura 4. Fluxo de votação em uma enquete [Autoria Própria]
A plataforma será construı́da com tecnologia web utilizando a biblioteca React que se
comunicará com o Program dentro da rede da Solana por meio de chamadas RPC (Re-
mote Procedure Call, é uma tecnologia que providencia um padrão de comunicação de
alto nı́vel com o sistema), executadas pelo framework de conexão com a rede Solana
chamado Anchor [Project Serum Anchor ]. A utilização destas tecnologias se da pela
recomendação da própria rede Solana.
No Program estão programadas todas as regras de negócio necessárias para a
execução do processo de votação proposto neste estudo como demostrado de forma sim-
plificada na Figura 5.
O protótipo interativo entregue com o estudo se da como uma plataforma de votação geral,
onde usuários se autenticam com carteiras de blockchain (Figura 6) e poderão criar suas
votações (Figura 7), adicionando opções de voto, e disponibilizar um código (Figura 8)
para enviar (ou torná-lo público) para votantes (outras carteiras de blockchain) entrarem
e realizarem seus votos (Figura 9).
Figura 6. Página de Autenticação com a Carteira Digital [Autoria Própria]
A carteira responsável por criar o programa será a única que pode adicionar as
opções de voto. As carteiras votantes serão apenas capazes de emitir um único voto por
votação, e só poderão visualizar o resultado da votação um vez que estes mesmos votem.
O intuito dessa plataforma é a criação de votações por qualquer usuário, indepen-
dente de temática, e seu diferencial se encontra na tecnologia blockchain, aumentando
a velocidade, transparência e segurança dos votos, criando uma base para mais estudos
cientı́ficos e promovendo o avanço dos mesmos.
4. Considerações Finais
O presente estudo buscou verificar a possibilidade da implementação de um processo
eletrônico de votação no campo remoto, ou seja, abordar o processo de votação pela
Internet com o uso da tecnologia blockchain denominada de Solana.
O resultado da pesquisa sobre a tecnologia Solana especificamente revelou sua ca-
pacidade de sanar problemas de integridade do voto com sua natureza de dados imutáveis,
problemas de transparência com sua natureza rastreável do hash dos blocos e a criação de
funcionalidades de visualização do estado das votações e possibilitou a implementação de
um sistema que assegurasse autenticidade com a lógica denominada de maneira autoral
como one-wallet/one-vote.
Quanto ao desenvolvimento da solução, mostrou-se viável embora não tenha sido
possı́vel realizar os testes completos como o grupo gostaria. Como solução para isso seria
necessário ter uma massa de usuários em dispositivos individuais para acessar e interagir
com a plataforma, como seria o uso normal do sistema, para não ser impedido pela trava
de proteção da blockchain.
Com considerações à segurança da aplicação, entendeu-se que pela natureza de-
centralizada da rede, uma invasão direta seria extremamente difı́cil de acontecer, visto que
para isso o atacante deveria conhecer e invadir ao menos 50% + 1 dos nós da rede. Dessa
forma, a única preocupação de segurança fica a respeito da segurança da máquina na qual
o usuário está interagindo com a plataforma, que pode estar infectada com, por exemplo,
um vı́rus do tipo trojan, mas esse tipo de problemática não está relacionado a aplicação
desenvolvida.
Tendo em vista os resultados obtidos, percebe-se que o sistema de votação on-
line com o uso de tecnologia blockchain é possı́vel, usável e de fato auxilia com as
preocupações constantes do processo de voto.
Ainda existem algumas oportunidades que podem ser desenvolvidas em trabalhos
futuros a partir dos resultados alcançados neste estudo, dentre os quais podem ser cita-
dos: (i) a inclusão efetiva do tópico de autenticidade, conectando uma única carteira da
blockchain com um usuário, não permitindo-o votar mais de uma vez e; (ii) explorar e
garantir soluções para o tópico de anonimidade, removendo a camada de interligação de
transações por parte da blockchain, desvinculando o voto e o eleitor;
Referências
Cambridge Centre for Alternative Finance (2021). Bitcoin Mining Map. https://
ccaf.io/cbeci/mining map. Acessada em 2022-05-20.
Coinbase (2022). What is Solana (SOL)? https://www.coinbase.com/pt/
learn/crypto-basics/what-is-solana. Acessada em 2022-05-17.
Cointelegraph (2022). What is Solana, and how does it work? https:
//cointelegraph.com/news/what-is-solana-and-how-does-
it-work. Acessada em 2022-06-20.
COSTA, R. G. (2008). Sistema seguro de votaÇÃo eletrÔnica multi-cÉdulas.
Ethereum Foundation. Ethereum Documentation. https://ethereum.org/en/
developers/docs/intro-to-ethereum/. Acessada em 2022-05-16.
FRANKENFIELD, J. (2022). Permissioned Blockchain. https://
www.investopedia.com/terms/p/permissioned-blockchains.asp.
Acessada em 2022-05-20.
Jones, B. (2000). A report on the feasibility of internet voting.
Lamport, L., Shostak, R., and Pease, M. (2019). The Byzantine Generals Problem, page
203–226. Association for Computing Machinery, New York, NY, USA.
Nakamoto, S. (2008). Bitcoin: A peer-to-peer electronic cash system. Decentralized
Business Review, page 21260.
Nofer M., Gomber P., H. O. e. a. (2017). Blockchain. volume 59, pages 183–187.
Norden, L. (2006). The machinery of democracy: Voting system security, accessibility,
usability, and cost.
O’Connor, J. J. and Robertson, E. F. (2002). The history of voting. https://
mathshistory.st-andrews.ac.uk/HistTopics/Voting/. Acessada em
2022-05-20.
Peercoin Foundation. Bitcoin Proof-of-Work Consensus. https://
www.peercoin.net/university/#/5-bitcoin-proof-of-work-
consensus. Acessada em 2022-05-21.
Peercoin Foundation (2022). Peercoin. https://www.peercoin.net. Acessada em
2022-05-21.
Project Serum Anchor. Anchor Documentation. https://book.anchor-lang.com.
Acessada em 2022-05-26.
R. Michael Alvarez, T. E. H. (2003). Point, Click, and Vote: The Future of Internet Voting.
Brookings Institution Press.
Secretaria de Comunicação e Multimı́dia (2022). Saiba tudo sobre o teste
de integridade, uma das etapas de auditoria no dia da eleição. https:
//www.tse.jus.br/comunicacao/noticias/2022/Julho/saiba-
tudo-sobre-o-teste-de-integridade-uma-das-etapas-de-
auditoria-realizadas-no-dia-da-eleicao. Acessado em.
Silva, R. C. (2020). Proposta de aplicação para verificação do voto com tecnologia
Blockchain: a abordagem de um modelo E2E verifiability para internet Voting da
Estônia. PhD thesis.
Solana Foundation. Solana Terminology. https://docs.solana.com/
terminology. Acessada em 2022-05-26.
Solana Foundation (2022). Solana Documentation. https://docs.solana.com/
introduction. Acessada em 2022-05-16.
Swan, M. (2015). Blockchain: Blueprint for a New Economy. O‘Reilly Media.
Swanson, T. (2015). Consensus-as-a-service: a brief report on the emergence of permis-
sioned, distributed ledger systems.
Torpey, K. (2019). bitcoin mining centralization is quite alarming but a solution is in
the works. https://www.investopedia.com/terms/p/permissioned-
blockchains.asp. Acessada em 2022-05-20.
Xiwei Xu, Ingo Weber, M. S. (2019). Architecture for Blockchain Applications. Springer.
Yakovenko, A. (2017). Solana: A new architecture for a high performance blockchain
v0.8.13. Technical report.
Yakovenko, A. (2019). How Solana’s Proof of History is a Huge Advancement
for Block Time. https://medium.com/solana-labs/how-solanas-
proof-of-history-is-a-huge-advancement-for-block-time-
178899c89723. Acessada em 2022-05-23.
Zheng, Z., Xie, S., Dai, H.-N., Chen, X., and Wang, H. (2018). Blockchain challenges and
opportunities: a survey. International Journal of Web and Grid Services, 14(4):352–
375.