Arquitectura de Blockchain Voting System
1. Introducción y objetivos
Blockchain voting system es un proyecto para integrar el sistema informático de conteo de votos con la cadena de bloques.
1.1.Resumen de requisitos
En muchos países el conteo de votos luego de un proceso electoral se realiza de manera manual, como un mecanismo de transparencia, con la finalidad de brindar confianza ya que esta actividad se realiza de manera pública y con la presencia de las personas. A este proceso se lo conoce como escrutinio de votos.
Al ser un proceso manual se necesitan algunos pasos para digitalizar la información y poder computarlo.
Principales características:
El acceso al sistema es para usuarios internos quienes deben estar previamente registrados, tener permisos y asignado un rol adecuado; y para usuarios públicos que no requieren registrarse.
El sistema tiene 3 componentes:
El primero es un aplicativo de escritorio que principalmente sirve para escanear las actas de escrutinio, a este componente tienen acceso únicamente usuarios registrados.
El segundo componente es un aplicativo web que se usa para ingresar información (votos que están escritos en las actas de instalación).
El tercer componente es un aplicativo web que muestra los votos obtenidos por cada candidato.
1.2. Metas de calidad
No.
Calidad
Motivación
1
Claridad
Los requisitos funcionales son claros y simples para permitir una
solución sencilla y comprensible facilitando a los desarrolladores
implementar la solución.
2
Seguridad
La arquitectura garantiza que cada componente es seguro.
3
Interoperabilidad
Los componentes del sistema proporcionan una API sencilla que permita
“conectarse” a diferentes sistemas de conteo de votos
4
Escalable
La arquitectura es capaz de escalar.
5
Capacidad
de prueba
La arquitectura permite probar fácilmente todos los componentes
básicos.
Rol
Meta, Intención
Desarrolladores
Seguir los lineamientos de la arquitectura para crear los algoritmos
de software.
Organismos
Electorales
Analizar la solución propuesta y su arquitectura
Organizaciones
políticas
Verificar la arquitectura y demás componentes de la solución.
Verificar que el código fuente esté acorde a la arquitectura.
Ciudadanos
Conocer la arquitectura detrás del sistema de conteo de votos,
Esta arquitectura ha sido diseñada
considerando varias condiciones/restricciones específicas para llegar a la
solución final, que se describen a continuación.
Restricción
Explicación y/o motivación
Restricciones
de software y programación.
TC1
.Net
El módulo digitalización debe estar desarrollado con tecnología Microsoft
.Net
TC2
Java
(typeScript)
Los componentes de ingreso de información y de visualización de
resultados debe estar desarrollada en java (React)
TC3
Aiken
Para el
componente Blockchain y los contratos inteligentes se utilizará aiken
Restricciones
del sistema operativo
Compatible
con Windows
Equipamiento estándar para el componente de digitalización de actas de
escrutinio cuentan con sistema operativo Windows (mínimo win 10), por lo que
este componente debe correr sobre este sistema operativo
Servidores
La
aplicación (módulos web) debe poder implementarse a través de medios estándar
en un servidor basado en Linux / Windows.
Restricciones
de Hardware
Cloud
El
despliegue del sistema se realizará en la nube.
Restricción
Explicación y/o motivación
OC1
Licencia
El
proyecto es de código abierto.
OC2
Librería
de terceros
Los
componentes de terceros no requieren licencias.
Restricción
Explicación y/o motivación
CC1
Código
fuente
Control
de fuente en GitHub, https://github.com/democracyonchain
CC2
Documentación
arquitectónica
Terminología
y estructura según la plantilla alemana arc42 en la versión 6.0
CC3
Seguimiento
de defectos
Jira /
Github
CC4
Documentación
Camel Case convention
CC5
Idioma
Componente
Descripción
Actas de
escrutinio
Son formatos con la información de los votos que recibe cada candidato
en una determinada mesa receptora de voto.
Voting
system
Sistema informático con el que se contabilizan los votos obtenidos por
los candidatos.
Blockchain
Blockchain es un libro de contabilidad distribuido cuya información es
pública y no se puede alterar.
Resultados
web
En un portal web en el que muestra los votos obtenidos por los
candidatos.
Componente
Descripción
Escaneo
Sistema de escritorio (Windows) con el cual se escanean las actas de
escrutinio, este módulo también se encarga de reconocer de manera automática
a que mesa receptora del voto pertenece el acta.
Procesamiento de imágenes
Una vez que se cuenta con las imágenes de las actas de escrutinios, estas
imágenes deben cortarse en secciones (cada sección corresponde a la casilla
asignada a un candidato), así como también reconocerse o extraerse de las
imágenes cuántos votos recibió cada candidato.
Ingreso
de votos
Los usuarios que tienen los permisos adecuados deben ingresar los
votos que recibió cada candidato. Esto se realiza mirando los cortes de las
actas de escrutinio.
Blockchain
Las imágenes se almacenan en un repositorio descentralizado y la
información de los votos y trazabilidad de las actas se guardan en la Blockchain
Resultados
web
Muestra las imágenes almacenadas en el repositorio descentralizado y
también muestra los votos obtenidos por cada candidato.
La estrategia de la solución arquitectónica presentada se basa en los siguientes
ejes:
Esta sección describe el desglose de la solución propuesta en módulos,
como se refleja en la estructura de componentes funcionales.
Subsistema/método
Breve descripción
Captura
de imágenes
Inicia la comunicación con el escáner y posteriormente guarda la
imagen capturada en un repositorio local.
Reconocimiento
de código de barras
De la imagen capturada por el escáner y almacenada localmente, se
extrae la información que contiene el código de barras.
Validación
del documento,
Se valida que la información obtenida del código de barras pertenezca
a una junta receptora del voto válida.
Procesamiento
de imagen
Las imágenes se cortan en segmentos, cada segmento corresponde a la
información de un candidato y los votos obtenidos.
Procesamiento
de datos
Se extrae la información de los votos obtenidos por cada candidato
desde la imagen del acta de escrutinio.
Blockchain
Las imágenes se almacenan en un repositorio descentralizado y la
información de los votos y trazabilidad de las actas se guardan en la Blockchain.
Subsistema/método
Breve descripción
Cortar
de imágenes
Las imágenes de las actas de escrutinio se cortan en segmentos, los
cuales corresponden a los espacios asignados a cada candidato dentro del acta
de escrutinio.
Data
recognizer
De las cortes (secciones) se extraen los votos asignados a cada
candidato.
Process
Image
Las imágenes (acta y secciones) se envían a la red IPFS-Blockchain.
Process
Data
Los datos extraídos de las imágenes se encapsulan y se envían a la Blockchain.
Subsistema/método
Breve descripción
Distribución
para verificación
Se asigna una acta a un usuario del sistema para que éste digite los
votos que están en la imagen.
Digitación
de los votos.
El usuario ingresa en el sistema los votos que constan en la imagen
del acta de escrutinio, el usuario solo debe mirar los votos y no debe saber
a qué candidato pertenecen esos votos para evitar fraude.
Control
de calidad
Aquí se muestra la información de los votos que no coinciden entre el
reconocimiento inteligente y la digitación, para que un nuevo usuario ingrese
el valor dirimente y que será el valor final.
Subsistema/método
Breve descripción
API
image
Interface para enviar las imágenes capturadas por el módulo de escaneo
hacia la red IPFS.
API data
Interface para enviar a la Blockchain la información de los votos
obtenidos por cada candidato.
IPFS
Almacenamiento distribuido en donde se guardarán las imágenes
capturadas por el escáner.
Smart
Contract
Condiciones establecidas en la red para validar y almacenar la
información de los votos de cada candidato.
Nodo
Representa al punto de entrada a la Blockchain.
Subsistema/método
Breve descripción
Visor de
resultados
Portal web que muestra los votos obtenidos por los candidatos
Visor de
documentos
Portal web que muestra la imagen vs los datos ingresos correspondiente
a una acta de escrutinios
API para
acceso a datos
Interface para acceder a la información de una base de datos sql
Blockchain
Acceso a datos de la blockchain e imágenes existentes en la red IPFS
La interacción del usuario con el sistema y sus módulos se describe en
los siguientes casos de uso.
Subsistema/artefacto
Descripción
Aplicación
de escritorio
Software de escritorio con el que se escanean las actas de
instalación.
Aplicación
web
Software web para digitar votos y hacer control de calidad de la
información (votos) ingresados.
Microservicios
de actas
Artefacto de software para gestionar (validar / almacenar) las imágenes.
Microservicio
de verificación
Artefacto de software para registrar los votos digitados por un
usuario en el sistema web.
Microservicio
de control de calidad
Artefacto de software para registrar los votos digitados por un
usuario en modo de control de calidad para garantizar la consistencia de la
información.
Esta sección describe estructuras y aspectos generales que se aplican en
todo el sistema. También presenta diversos conceptos de soluciones técnicas.
Blockchain Voting system tiene como objetivo integrar un
sistema de conteo de votos basado en papeletas (sistema de escrutinios manual)
con la Blockchain. Por esta razón los módulos son dependientes entré sí, PERO
ALTAMENTE INTEROPERABLES, es decir que se pueden acoplar o desacoplar a nuevos
módulos, la solución aquí propuesta no utiliza un marco de referencia especial.
Los módulos están integrados en el código fuente mediante interfaces (API).
A continuación se muestran los principales elementos de la solución
propuesta.
Objeto/artefacto
Descripción
Junta
Contiene la información de una junta receptora del voto, entendiendo
que una junta debe tener una jurisdicción la misma que está determinada por
la provincia, cantón, parroquia y zona.
Acta
Se refiere al documento (formato preimpreso) en el que se escribe los
votos que obtuvieron los diferentes candidatos.
Por cada dignidad que se elija, debe existir una acta.
ImagenActa
Es la imagen de una hoja del acta.
Partido
Organización política que auspicia a un candidato.
Candidatura
Corresponde al conjunto de candidatos que pertenecen a una dignidad,
pudiendo ser de uno o varios escaños.
Candidato
Corresponde a un candidato y contiene información de los votos
obtenidos en cada fase.
ImagenSegmento
Es la imagen de la sección donde se escriben los votos que obtuvo un
candidato.
Blockchain voting system utiliza el gestor de bases de datos
relacionales PostgreSql y un sistema de archivos para almacenar las imágenes.
Para la interacción con la base de datos se ocupa type orm
tanto para consultas como mutaciones, al usar Craphql las interacciones con
base de datos se dividen en Querys (select, collection, list) mutations
(create, update, delete).
Por la naturaleza del proyecto y a fin de mantener la
integridad de la información, las transacciones son únicamente actualizaciones
de registros, excepto auditorías e imágenes.
Por otra parte y debido a la gran cantidad de información y
transacciones en cada fase del proceso, se ejecutarán procedimientos
almacenados del lado del servidor de base de datos.
Generación de Tokens JWT en el servidor: Cuando un usuario inicia sesión, el servidor generará un
token JWT que contendrá información de identificación del usuario, como su ID
de usuario y roles. Este token se firma digitalmente utilizando una clave
secreta en el servidor.
Almacenamiento del Token en Cookies: Una vez que se genera el token JWT en el servidor, se enviará
de vuelta al cliente (navegador) como una cookie HTTP. La cookie tendrá una
duración específica y se enviará automáticamente con cada solicitud al
servidor.
Manejo del Token en el Cliente (React): En el cliente (aplicación React), mediante métodos JavaScript
se lee el token JWT de la cookie y se almacena en el estado de la aplicación.
El token se enviará con cada solicitud al servidor para autenticar al usuario.
Validación del Token en el Servidor: Cuando el servidor recibe una solicitud con un token JWT
adjunto, lo validará verificando su firma digital utilizando la clave secreta
del servidor. Si el token es válido y no ha caducado, el servidor permitirá la
solicitud y tratará al usuario como autenticado.
Renovación de Sesión: Cuando el token JWT está a punto de expirar, el cliente solicitará un
nuevo token al servidor antes de que expire el token actual. Esto se hará
automáticamente en segundo plano para mantener la sesión del usuario activa
Autorización
y autenticación: Manejo de sesiones basadas en JWT.
Despliegue:
Instalación y acceso al sistema en
una red privada.
Blockchain:
Información inmutable.
La integración de cada módulo es un lo realiza mediante servicios web
Los errores se manejan con pino-logger y orm-logs.
Problema: Restricciones: Alternativas: Decisión: Problema: Restricciones: Alternativas: Decisión: Problema: Restricciones: Alternativas: Decisión: Problema: Restricciones: Alternativas: Decisión:
Este documento puede ser mejorado con tus sugerencias. ¿Tienes comentarios o recomendaciones? Contáctanos aquí.
1.3. Parte interesadas
2. Restricciones deArquitectura
2.1. Limitaciones técnicas
2.2.Restricciones organizativas
2.3.Convenciones
3. Alcance y Contexto del Sistema
3.1 Contexto empresarial
3.2. Contextos técnicos
4. Estrategia de solución
5. Vista de bloques de construcción
5.1. Scanning
5.2. Image processing
5.3. Data entry
5.4. BlockChain
5.5. Results Page
6. Vista de tiempo de ejecución
6.1. Digitalization
6.2. Verification
6.3. Quality control
7. Vista de implementación.
8. Conceptos.
8.1. Dependencias entre
módulo.
8.2. Modelo de dominio.
8.3. Persistencia.
8.4. Interface de
usuario.
a. Escaneo
b. Digitación
c. Control de calidad
d. Resultados
8.5. Procesamiento de transacciones.
8.6. Manejo de sesiones.
8.7. Seguridad.
8.8. Comunicación e integración.
8.9. Manejo de errores y excepciones.
9. Decisión de diseño.
9.1. Uso de controlador
Twain para comunicación con escáner.
9.2. Uso de ML.NET para la extracción de votos de la imagen del acta de escrutinio.
9.3. Uso de PostgreSQL.
9.4. Uso de microservicios.
10. Escenario de calidad.
10.1. Árbol de calidad.
11. Riesgos técnicos.
Observaciones y Contacto