Consenso para votaciones distribuidas

ods paz justiciaIba a empezar con una explicación de qué es el consenso desde el principio para continuar explicando qué he hecho en la tesis, pero aprovechando el lío con las votaciones en la sesión de investidura, voy a contar una de las aplicaciones del consenso para llegar a acuerdos: las votaciones distribuidas

Votaciones distribuidas

Quien participa en un mecanismo de votación distribuida, en lugar de enviar su voto a un servicio centralizado que se encarga del recuento final, lo envía a un nodo cercano de la red. Y a su vez recibe los votos de sus vecinos. Luego, algún mecanismo debe permitirnos que esos votos se difundan por toda la red y se sumen. Al final, en lugar de tener los votos en un único sitio, tendremos varias copias de los resultados distribuidos por toda la red.

Y aquí es cuando todo el mundo empieza a hablar de las cadenas de bloques (blockchain). Bueno, pues no es necesario. El proceso de consenso es más sencillo. Por otro lado, requiere un coste mucho menor. Por ejemplo, en este estudio O’Dwyer y Malone calcularon que la potencia que consume el minado de bitcoin era equivalente al consumo de un país como Irlanda (vía The Conversation). Y como consecuencia, el CO2 que genera es también alto. Y lo mejor es que el consenso es, al menos, igual de seguro. Pero eso te lo cuento otro día.

Consenso básico

Esto lo comentaré más despacio, pero básicamente el consenso consiste en lo siguiente. Supón que te has conectado a tus contactos, como una red social. En lugar de interactuar con todos los nodos, solo lo haces con quienes están a tu alrededor. Intercambiado información con estos contactos, los datos se propagan por toda la red y se pueden calcular cosas. Por ejemplo, cuál es el salario medio, diciéndoselo solo a personas de confianza.

A continuación tienes un simulador para que puedas probar cómo funciona. Puedes abrirlo también desde este enlace al modelo básico de consenso.

Votación mediante consenso

Bueno, pues en lugar de hacer un cálculo, con unas pequeñas variaciones puede emplearse como un mecanismo de votación distribuida. Imagina que hay que votar entre 5 opciones. Una forma de representarlo es mediante un vector de la siguiente forma. Por ejemplo, si prefieres la opción 2, lo codificas como x=(0 1 0 0 0) Es decir: todo ceros menos un uno en la segunda posición (la que has elegido). Hace falta un cero más que se emplea para contar el número de participantes, así que realmente es x=(0 1 0 0 0 | 0).

Repitiendo el mismo proceso básico de consenso, pero intercambiado estas listas de valores, somos capaces de sumar cúantas veces se ha votado la primera, la segunda... hasta la quinta opción. Y lo que es más importante, sin que nadie sepa cuántos nodos hay en la red (cuántas personas han votado) ni cómo están conectadas. Y tampoco hace falta a nadie que coordine ni que cuente. Al final cada participante tendrá el resultado de la votación.

Imagina que hay cuatro personas: Alicia, Belén, Carlos y David, conectados como aparece en la imagen. Esas conexiones indican quién conoce a quién y entre quiénes se intercambia información. Ahora supón que tienen que elegir entre 3 opciones: Alicia escoge la primera, David la segunda y Belén y Carlos la tercera. Cada uno votaría así: A = (1 0 0|0), B=(0 0 1|0), C=(0 0 1|0), D=(0 1 0|0). En cada vuelta, mandan sus votos a sus vecinos y vecinas: Alicia a Belén, Carlos y David, Belén a Alicia y Carlos, Carlos a Alicia y Belén, y David solo a Alicia.

Después de varios intercambios, los cuatro tienen los mismos valores: (0.25 0.25 0.5|0.25) Si te fijas, son los porcentajes de cada opción: 25% para la primera, 25% la segunda y 50% para la tercera. Y si se divide entre el último valor tenemos cuántos votos ha recibido cada opción: (0.25/0.25, 0.25/0.25, 0.5/0.25) = (1 1 2). Y todo esto sin que nadie centralice el proceso de ninguna manera.

Por si quieres experimentar cómo funciona, he dejado también un modelo del consenso para votaciones distribuidas

Detección de trampas en las votaciones

Y como tambien he comentado más arriba, existen mecanismos para evitar que se puedan hacer trampas y que alguien intente añadir o quitar votos extras por el camino. Pero eso es un poco más largo de contar. Por si te interesa, está publicado en este artículo

Rebollo, M., Benito, R.M., Losada, J.C., & Galeano, J. (2018). Robust Distributed Voting Mechanism by Consensus. 2018 IEEE/ACM International Conference on Advances in Social Networks Analysis and Mining (ASONAM), 759-762. (2018): 759-762. doi:10.1109/asonam.2018.8508703

2 respuestas a «Consenso para votaciones distribuidas»

    1. Yo creo que es porque está asociado al bitcoin, que en su día fue un intento de salirse del circuito de bancos y gobiernos para hacer transacciones en internet de forma más libre. Si no hubiera tenido éxito, hubiera pasado sin pena ni gloria.

      Las cadenas debloques tienen muchísimas variantes y en algunos sectores puede ser útil. Pero no es más que una base de datos distribuida. No se puede usar para todo. Pero es lo que tienen las modas: hoy todo se arregla con blockchain y deep learning ¯\_(ツ)_/¯

Los comentarios están cerrados.