Architectural design

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:

  • Digitalización de actas de escrutinio.
  • Procesamiento de imágenes.
  • Reconocimiento inteligente de caracteres.
  • Digitación de votos.
  • Control de Calidad.
  • Publicación de resultados.
  • 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.

    1.3. Parte interesadas

    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,

    2. Restricciones deArquitectura

    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.

    2.1. Limitaciones técnicas

     

    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.

    2.2.Restricciones organizativas

     

    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.

    2.3.Convenciones

               

     

    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

  • Idioma Español (principal).
  • Idioma Inglés.
  • 3. Alcance y Contexto del Sistema

    3.1 Contexto empresarial

     

    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.

     

    3.2. Contextos técnicos

     

    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.

     

    4. Estrategia de solución

    La estrategia de la solución arquitectónica presentada se basa en los siguientes ejes:

    1. Modular.
    2. Microservicios.
    3. Arquitectura limpia.
    4. Optimización de código fuente.
    5. Interoperabilidad, se logrará principalmente mediante el uso de JSON sobre un protocolo http para API.
    6. Capacidad de pruebas, se probarán cada componente del sistema incluyendo setters y getters con diferentes parámetros.

     

    5. Vista de bloques de construcción

    Esta sección describe el desglose de la solución propuesta en módulos, como se refleja en la estructura de componentes funcionales.

    5.1. Scanning

    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.

    5.2. Image processing

     

    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.

    5.3. Data entry

     

    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.

    5.4. BlockChain

                           

     

    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.

    5.5. Results Page

     

    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

    6. Vista de tiempo de ejecución

    La interacción del usuario con el sistema y sus módulos se describe en los siguientes casos de uso.

    6.1. Digitalization

     

    6.2. Verification

    6.3. Quality control

    7. Vista de implementación.

     

     

     

    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.

    8. Conceptos.

    Esta sección describe estructuras y aspectos generales que se aplican en todo el sistema. También presenta diversos conceptos de soluciones técnicas.

    8.1. Dependencias entre módulo.

    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).

    8.2. Modelo de dominio.

    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.

    8.3. Persistencia.

    Blockchain voting system utiliza el gestor de bases de datos relacionales PostgreSql y un sistema de archivos para almacenar las imágenes.

    8.4. Interface de usuario.

    a. Escaneo

    b. Digitación

    c. Control de calidad

    d. Resultados

    8.5. Procesamiento de transacciones.

    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.

     

    8.6. Manejo de sesiones.

    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

     

    8.7. Seguridad.

    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.

    8.8. Comunicación e integración.

    La integración de cada módulo es un lo realiza mediante servicios web

    8.9. Manejo de errores y excepciones.

    Los errores se manejan con pino-logger y orm-logs.

     

    9. Decisión de diseño.

     

    9.1. Uso de controlador Twain para comunicación con escáner.

     

    Problema:

    Necesidad de establecer comunicación entre el sistema y un escáner para digitalizar documentos.

    Restricciones:

    Limitaciones de compatibilidad con ciertos modelos de escáner, dependencia del sistema operativo y recursos de hardware.

    Alternativas:

    Uso de API /Componente /DLL de escaneo nativa del sistema operativo, integración de bibliotecas de terceros para el control de escáneres.

    Decisión:

    Se opta por utilizar un controlador Twain debido a su amplia compatibilidad con diferentes modelos de escáner y su estabilidad en entornos de producción.

    9.2. Uso de ML.NET para la extracción de votos de la imagen del acta de escrutinio.

    Problema:

    Extracción de datos de votos de imágenes de actas de escrutinio de manera precisa y eficiente.

    Restricciones:

    Disponibilidad de datos de entrenamiento, capacidad de procesamiento y precisión del modelo de aprendizaje automático.

    Alternativas:

    Utilización de otras bibliotecas de aprendizaje automático, desarrollo de algoritmos personalizados para el reconocimiento de patrones.

    Decisión:

    Se decide utilizar ML.NET debido a su integración con el ecosistema .NET, su facilidad de uso y la disponibilidad de recursos de aprendizaje automático pre-entrenados.

    9.3. Uso de PostgreSQL.

    Problema:

    Selección de un sistema de gestión de bases de datos adecuado para almacenar y gestionar los datos de manera eficiente y segura.

    Restricciones:

    Costos de licencia, requisitos de escalabilidad, compatibilidad con el sistema operativo y recursos de hardware disponibles.

    Alternativas:

    Otros sistemas de gestión de bases de datos como MySQL, SQL Server, Oracle, etc.

    Decisión:

    Se elige PostgreSQL debido a su amplia funcionalidad, licencia de código abierto, rendimiento y capacidad de escalabilidad.

    9.4. Uso de microservicios.

    Problema:

    Diseño de la arquitectura para permitir la modularidad, escalabilidad y flexibilidad del sistema.

    Restricciones:

    Complejidad de implementación, coordinación entre microservicios, sobrecarga de comunicación entre componentes.

    Alternativas:

    Monolito, arquitectura orientada a servicios, arquitectura de eventos, etc.

    Decisión:

    Se opta por utilizar microservicios debido a su capacidad para desacoplar componentes, permitir el desarrollo y despliegue independiente, y facilitar la escalabilidad horizontal del sistema.

    10. Escenario de calidad.

    10.1. Árbol de calidad.

     

    11. Riesgos técnicos.

  • Indisponibilidad de servicios.
  • Encolamiento de peticiones a la base de datos.
  • Tiempo de respuesta en las transacciones en la Blockchain.
  •  

    Observaciones y Contacto

    Este documento puede ser mejorado con tus sugerencias. ¿Tienes comentarios o recomendaciones? Contáctanos aquí.