Blockchain puede desempeñar un papel más allá de las transacciones monetarias y financieras. Una de esas aplicaciones no financieras es que blockchain puede mejorar enormemente las áreas de votación y gobernanza. En este artículo, exploramos enfoques para construir una infraestructura blockchain de propósito especial diseñada para facilitar las actividades de votación basadas en MACI. Esta infraestructura debe incluir una cadena de bloques liviana que actúe como un servidor de marca de tiempo y aloje la lógica, junto con las herramientas necesarias para reducir los costos del usuario/maximizar la experiencia del usuario. Por tanto, debería convertirse en la nueva plataforma básica para una nueva generación de tecnología de votación. Antes de profundizar en los detalles, primero echemos un vistazo a la historia de la tecnología de votación y cómo ha evolucionado la votación dentro de la comunidad blockchain.

La evolución de la tecnología de votación La tecnología de votación desde el antiguo Kleroterion griego [1] hasta las modernas máquinas de votación electrónica.

La tecnología de votación tiene una larga historia [2]. Es muy importante para la sociedad humana, pero se desarrolla muy lentamente. El Reino Unido todavía dependió de votos escritos a mano durante las elecciones generales de 2019[3], y otros estados-nación utilizaron máquinas de votación electrónicas de código cerrado[4], lo que fácilmente podría generar disputas sobre los resultados de gobernanza[5].

La adopción de tecnología de votación moderna ha aumentado la eficiencia, pero no ha tenido mucho éxito en abordar la transparencia y la verificabilidad.

No hay duda de que la integridad del voto es muy importante para la transferencia de poder, la toma de decisiones sobre asuntos importantes o la asignación de recursos. Si las personas no pueden ponerse de acuerdo sobre el resultado de la votación sobre las decisiones de gobernanza, no pueden cooperar entre sí y aumentan las fricciones. La fricción puede causar problemas, que van desde disputas hasta guerras.

Aunque la tecnología de votación está evolucionando lentamente, la transparencia no ha mejorado en mucho tiempo. Desde Kleroterion hasta boletas en papel y máquinas de votación con escaneo óptico y electrónico, la verificación aún depende de personas y organizaciones de auditoría confiables. Confirmar y auditar los resultados de la votación puede resultar extremadamente costoso[6]. Es evidente que hay margen de mejora.

Entonces, ¿cuál es la tecnología de votación ideal? De hecho, ésta no es una pregunta difícil. Podemos crear fácilmente una "lista de deseos":

(1) Infraestructura de código abierto;

(2) Alojar programas de código abierto para la lógica de votación;

(3) Mantener un registro permanente de todos los votos emitidos en orden;

(4) Capaz de verificar criptográficamente los resultados;

(5) Resistir la colusión;

(6) Proteger la privacidad;

(7) El costo de la votación es bajo.

Si podemos construir un sistema de código abierto que pueda mejorarse continuamente, gradualmente lograremos los objetivos anteriores. Las mejoras y los costos más bajos en la tecnología de votación pueden permitir que las organizaciones y comunidades más pequeñas se beneficien del uso de tecnología que antes no estaba disponible para ellos, lo que agrega importantes externalidades positivas.

Votación y gobernanza dentro de la comunidad blockchain

La votación y la gobernanza no son nuevas para la comunidad blockchain, porque muchas comunidades blockchain están distribuidas y deben depender de la gobernanza para promover el desarrollo de los asuntos.

La propia cadena de bloques puede registrar votos de forma transparente y verificar los resultados de la votación. Estas propiedades han sido utilizadas por la comunidad blockchain para la gobernanza, como los eventos de votación de tokens Snapshot [7] y votación de propuestas de gobernanza Cosmos [8]. Como resultado, la comunidad blockchain puede votar propuestas y decidir sobre importantes asuntos de gobernanza sin pasar por un poder centralizado o reuniones cara a cara.

Una propuesta en curso[10] de KlaytnSquare[9] exige que los validadores voten en cadena. La propuesta busca la aprobación del plan trimestral de gasto fiscal [11].

El ejemplo anterior utiliza la regla simple y directa de 1 token, 1 voto: la cantidad de derechos de voto que tienes depende de tu participación en la red o protocolo. Obviamente podemos crear otra lógica de votación siempre que tenga sentido. La programabilidad de blockchain hace que sea más fácil y práctico implementar una lógica de votación no tradicional.

Un ejemplo es la votación cuadrática [12] (QV), un esquema de votación que es cada vez más popular en la comunidad blockchain. En la ronda QV, un usuario puede expresar sus preferencias gastando créditos de voz en un tema específico. Pero si un votante quiere emitir más de un voto sobre el mismo tema, el costo de los créditos de votación aumenta por cada voto. Por lo tanto, el costo total de la votación aumenta cuadráticamente, desalentando preferencias extremas por parte de usuarios con demasiado poder de voto.

Financiamiento cuadrático [13] rondas de votación en la cadena de bloques Aptos. Los resultados de la votación se registran en la cadena y la lógica de la votación es verificable.

Hay muchos parámetros a considerar al elegir un método de votación específico. Por ejemplo, una compensación es elegir la votación dentro de la cadena o la votación fuera de la cadena. La lógica de votación en cadena puede ser más verificable y transparente, pero las tarifas de transacción pueden ser una carga significativa. Por el contrario, la lógica de votación fuera de la cadena puede ser más barata, pero al mismo tiempo menos transparente y verificable. Sin embargo, la votación dentro y fuera de la cadena no es una relación de uno u otro. Podemos diseñar esto fácilmente como un sistema híbrido donde parte del proceso ocurre dentro de la cadena y el resto fuera de la cadena.

Además del costo, existen preocupaciones sobre la privacidad. La privacidad es importante por dos razones. En primer lugar, en muchos casos, los usuarios tendrán menos preocupaciones sobre la votación si pueden hacerlo de forma anónima (privacidad entre usuarios y organizadores). Además, la privacidad entre usuarios puede ayudar a prevenir el soborno en el voto y lograr eficazmente la lucha contra la colusión.

Una forma de minimizar el cálculo dentro de la cadena y al mismo tiempo hacer cumplir la integridad fuera de la cadena es utilizar pruebas de conocimiento cero [14]. Una idea simple es que si el cálculo fuera de la cadena se puede verificar con pruebas de conocimiento cero, podemos mover la mayor parte del cálculo fuera de la cadena. Si los mensajes se cifran aún más, podemos mejorar la privacidad. MACI [15] es el marco mínimo para lograr este objetivo.

Las rondas de votación de MACI trasladan el conteo de votos fuera de la cadena. Finalmente, la validez de los resultados se verifica mediante una cadena de prueba de conocimiento cero.

En una ronda de votación MACI, los votos se encapsulan en un mensaje cifrado con clave pública generado por el administrador de la ronda (operador) y enviado al contrato inteligente. Por lo tanto, todos los mensajes tienen una "marca de tiempo" en la cadena de bloques, creando una cadena de mensajes de información de votación.

Cuando finaliza la ronda de votación, el administrador descarga todos los mensajes, los descifra y cuenta los votos en orden inverso. Luego, los resultados se publican con una prueba de conocimiento cero que puede verificarse en el contrato inteligente (o por cualquier otra persona), lo que indica la validez de los resultados publicados y la corrección del procesamiento del mensaje.

Todo el proceso mantiene un cálculo mínimo en la cadena al tiempo que garantiza la integridad de los resultados publicados. También proporciona privacidad y resistencia a la colusión entre usuarios.

¿Cómo funciona MACI en productos reales?

MACI ahora es utilizado por varias comunidades de hackathon en DoraHacks[16] para votar por sus proyectos de hackathon favoritos. Entonces, tomemos la ronda MACI de DoraHacks como ejemplo.

OpenSea y Replit Hackathon utilizan MACI para la votación de jueces en 2022

Después de enviar el proyecto del hackathon (BUIDL), el organizador seleccionó 12 equipos BUIDL de todos los trabajos presentados. Se invitó a diez jueces a votar por los 12 equipos BUIDL y distribuir un premio de 25.000 dólares. Se incluyeron en la lista blanca 10 jueces y se inscribieron para participar en la ronda de votación, y enviaron un total de 39 mensajes al contrato inteligente MACI implementado en Polygon.

Una vez finalizada la votación, el administrador (DoraHacks) cuenta los votos y publica los resultados finales en la tabla de clasificación, y luego proporciona una prueba de conocimiento cero para verificar la tabla de clasificación.

Clasificación de los resultados de la votación del hackathon OpenSea x Replit. Una prueba de conocimiento cero que verifica los resultados mostrados en la tabla de clasificación.

Como marco general, MACI se puede utilizar para casos de uso de votación más allá de la votación de jueces de hackathon y la votación de la comunidad de código abierto. Sin embargo, la adopción de MACI en más casos de uso de votación es sorprendentemente rara. En términos más generales, la votación blockchain aún no se ha adoptado en el mundo real.

Los beneficios de utilizar blockchain para mejorar la tecnología de votación son claros, pero ¿por qué el mundo real no avanza? Incluso dentro de la comunidad blockchain, las ventajas de MACI son obvias. ¿Por qué la comunidad descentralizada generalmente no adopta MACI?

Una de las principales razones de la lenta adopción de tecnología de votación avanzada no es la baja demanda sino la dificultad de utilizar la tecnología. En otras palabras, necesitamos mejorar la tecnología para proporcionar una mejor UX/UI para los productos de votación modernos y reducir el costo de uso para los usuarios.

experiencia de usuario

Además de la gobernanza comunitaria de código abierto, también necesitamos crear más interfaces para que los usuarios utilicen nuevas tecnologías de votación. DoraHacks proporciona financiación al ecosistema Web3 y a la comunidad de hackathon proporcionando los mejores productos disponibles actualmente en la industria. Aunque las interfaces de DoraHacks.io tienen casos de uso específicos, se pueden simplificar y luego generalizar para crear más interfaces para más casos de uso.

La estrategia inicial específica aún no se ha determinado. Sin embargo, una buena experiencia de usuario es crucial para la adopción de la tecnología, incluso dentro de la comunidad blockchain, algo que es importante para los desarrolladores de Dora Factory.

tasas de votación

Una cadena de bloques universal debería estar lo más descentralizada posible y proporcionar una infraestructura única para todo tipo de aplicaciones. Estas cadenas de bloques no están diseñadas para optimizarse para ningún tipo específico de aplicación, especialmente aplicaciones no monetarias o no financieras. Al mismo tiempo, las tarifas de transacción pueden fluctuar cuando hay una gran cantidad de aplicaciones que compiten por el mismo conjunto de recursos informáticos. La imprevisibilidad de los costos puede crear problemas para la votación.

Con este fin, Dora Factory probó recientemente un nuevo producto llamado Vota[17]. La idea de Vota es experimentar con blockchains de propósito especial y utilizarlas para optimizar continuamente la tecnología de votación y la experiencia del usuario. Actualmente, Vota está todavía en su infancia. Sin embargo, podemos imaginar varias formas diferentes de Vota.

Contrato inteligente temporal

Así es como se admiten actualmente las rondas de votación en DoraHacks.io. Cada ronda de votación se implementa como un contrato inteligente separado en una cadena de bloques específica. En la mayoría de los casos, Ethereum generalmente no puede admitir directamente la mayoría de los escenarios de votación (es por eso que Snapshot es el producto predeterminado utilizado por la comunidad Ethereum). Actualmente, Polygon y BNBChain son las opciones populares para la mayoría de los organizadores de subvenciones y hackathones en DoraHacks.

Un contrato inteligente temporal en la cadena de bloques L1, todos los mensajes de votación se envían a L1.

Usar contratos inteligentes temporales no es del todo malo. Es flexible y se puede implementar en cualquier lugar según sea necesario. Para los usuarios de DoraHacks, los resultados actuales son buenos, pero no satisface todas las necesidades de votación por igual.

Vota L2

Si creamos una infraestructura de capa 2 (L2) específicamente para votar, podemos reducir significativamente los costos de las tarifas del gas y potencialmente permitir una votación de bajo costo en Ethereum. No es necesario que todos los contratos L2 se implementen en Ethereum; pueden ser más económicos simplemente enviando transacciones L1 de vez en cuando para verificar toda la actividad L2.

Podemos optimizar aún más este modelo. Universal L2 debe comprometerse con Ethereum con frecuencia. Vota solo necesita enviar una transacción a Ethereum por ronda, es decir, solo requiere el costo de la tarifa de gas de como máximo una transacción por ronda. Si varias rondas finalizan al mismo tiempo, pueden compartir una transacción para reducir aún más los costos del gas, haciendo que la votación L2 sea más realista y factible.

Los mensajes se envían directamente al contrato L2. Solo se envía una transacción a la cadena de bloques L1 al final de cada ronda. L3 Vota (aplicable a L(n)Vota, donde n>=3)

L3 Vota no carece completamente de sentido. Con L2 establecida, L3 Vota puede reducir aún más las tarifas del gas en un orden de magnitud. Aunque las transacciones L3 finalmente se registran y verifican en Ethereum, la contrapartida es confiar en la L2 elegida.

Por supuesto, podemos extender esto aún más a L(n) Vota, ya que L(2)…L(n-1) enviará transacciones a Ethereum (u otro L1). Pero obviamente una cadena de confianza complica las cosas. A juzgar por la situación actual, muchos L2 conocidos todavía dependen de un único secuenciador (Sequencer), puede que sea demasiado pronto para hablar de L (4);

Cadena de aplicaciones Vota

Los desarrolladores de Dora Factory crearon un "truco" simple que permite a los contratos de CosmWasm verificar pruebas de conocimiento cero generadas por SnarkJS utilizando [18] Bellman [19]. Al incorporar Bellman al contrato CosmWasm, cualquier cadena de aplicaciones Cosmos puede admitir rápidamente aplicaciones zk.

Con la capacidad de ejecutar aplicaciones zk, las cadenas de bloques independientes pueden utilizar una arquitectura de software como Tendermint para construir una cadena. El consenso de estas cadenas de bloques es similar al BFT, o más simple, y normalmente pueden admitir hasta 100 validadores aproximadamente. Al seleccionar cuidadosamente validadores con intereses desalineados, las cadenas de bloques independientes pueden ser lo suficientemente seguras y neutrales.

A medida que DoraHacks da la bienvenida a más cadenas de aplicaciones Cosmos, un caso de uso obvio para Vota basado en cadenas de aplicaciones es votar sobre los resultados del hackathon. Además de DoraHacks, Vota, basado en la cadena de aplicaciones Cosmos, hace mucho más que la votación de los jueces en un hackathon.

La cadena de aplicaciones Vota tiene una pequeña cantidad de validadores, pero los validadores cuidadosamente seleccionados pueden proporcionar una infraestructura confiable.

Vale la pena señalar que estas soluciones no son excluyentes. A medida que Vota evoluciona, es posible que se crucen diferentes soluciones. Por ejemplo, si tenemos una versión de cadena de aplicaciones independiente de Vota como infraestructura principal, para casos de uso que requieren verificación de transacciones en una L1 específica, la cadena de aplicaciones puede enviar transacciones adicionales a L1.

mejor anonimato

Actualmente se están realizando trabajos de investigación para hacer que MACI sea menos confiable. El MACI original hizo una importante suposición de confianza de que los administradores no serían corruptos. Esto no es universal. Para mejorar esto, existen soluciones basadas en MPC [20] y soluciones no basadas en MPC [21]. Actualmente, DoraHacks ha creado una versión anónima de MACI basada en el cifrado realeatorizable ElGamal, propuesto originalmente por Kobe Guikan. [22] Se ha probado en una pequeña ronda de subvenciones de investigación de ETH [23] en DoraHacks.io.

En este momento, puede ser un poco prematuro impulsar la adopción de MACI anónimo antes de que el MACI en sí sea ampliamente adoptado. Sin embargo, también es importante continuar la investigación para reducir los supuestos de confianza en los mecanismos de votación en general.

Agregue anonimato a MACI agregando acciones que permitan a los usuarios desactivar y cambiar sus claves secretas sin que los administradores puedan saber quién agregó qué nueva clave. pago de GAS

Es importante no dar por sentado que los usuarios poseen criptomonedas. Si cada usuario tiene que pagar tarifas de gas por cada transacción, entonces los usuarios de blockchain estarán limitados a un pequeño grupo de personas. Para resolver este problema, los operadores MACI pueden depositar previamente un token reembolsable y pagar a los usuarios. Este mecanismo se puede implementar a través de gasolineras.

La gasolinera en sí es un contrato inteligente que reside en Vota. Antes de cada ronda, el operador puede optar por utilizarlo o no. Al utilizar la gasolinera, los operadores depositan previamente DORA en el contrato inteligente y pueden pagar las tarifas de transacción asociadas con una ronda específica a través de la gasolinera.

Lo más probable es que Vota implemente una estación de servicio predeterminada y las personas puedan implementar sus propias estaciones de servicio con una lógica de pago diferente según sea necesario.

El contrato de pago de Gas es un libro contable del saldo de Gas para cada ronda de votación. en conclusión

Las cadenas de bloques con fines especiales pueden ser adecuadas para una amplia gama de casos de uso de aplicaciones específicas, especialmente casos de uso no financieros. La votación es uno de los problemas más importantes que blockchain y la criptografía de conocimiento cero pueden ayudar a mejorar significativamente. Mejorar la transparencia y la eficiencia de la votación puede reducir las fricciones de gobernanza dentro de la sociedad humana y la comunidad blockchain, mejorando la productividad a largo plazo. Protocolos como MACI crean marcos claros para aplicaciones de votación en blockchain, pero la tecnología de votación aún necesita mucho trabajo para mejorar. Específicamente, necesitamos una infraestructura fácil de usar como base para mejorar la tecnología de votación a largo plazo, y este documento detalla el trabajo futuro.

referencia

Cleroterion: https://en.wikipedia.org/wiki/Cleroterion

La larga historia de la tecnología de votación: https://electionlab.mit.edu/research/voting-technology

Elecciones generales británicas del "Brexit" de 2019: https://en.wikipedia.org/wiki/2019_United_Kingdom_general_election

Máquinas de votación electrónica: https://en.wikipedia.org/wiki/Dominion_Voting_Systems

Resultados electorales controvertidos: https://www.reuters.com/legal/dominions-defamation-case-against-fox-poised-trial-after-delay-2023-04-18

Confirmar y auditar los resultados de las boletas puede ser extremadamente costoso: https://azsos.gov/elections/voters/voting-elections/ballot-processing/2022-general-elections-recount-information

Votación de tokens instantáneos: https://snapshot.org/

Votación de la propuesta de gobernanza del cosmos: https://www.mintscan.io/cosmos/proposals

KlaytnSquare:https://square.klaytn.foundation/GC

Una propuesta de KlaytnSquare: https://square.klaytn.foundation/Proposal/Detail?id=4

Plan de gasto fiscal: https://govforum.klaytn.foundation/c/proposal/5

Votación cuadrática: https://en.wikipedia.org/wiki/Quadratic_voting

Financiamiento cuadrático: https://research.dorahacks.io/2022/07/11/quadratic-governance

Prueba de conocimiento cero: https://en.wikipedia.org/wiki/Zero-knowledge_proof

MACI: https://ethresear.ch/t/minimal-anti-collusion-infrastructure/5413

DoraHacks: https://dorahacks.io/grant/ethdenver22/buidl

Vota:https://vota.dorafactory.org/

Un "truco" simple que permite utilizar contratos CosmWasm: https://github.com/DoraFactory/snarkjs-bellman-adapter/tree/main/prove

Botones: https://github.com/zkcrypto/bellman

Solución basada en MPC: https://research.dorahacks.io/2023/03/30/mpc-maci-anonymization

Solución no basada en MPC: https://ethresear.ch/t/maci-anonymization-using-rerandomizable-encryption/7054

Versión MACI anónima, propuesta por KobeGuikan: https://github.com/dorahacksglobal/anonymous-maci

Ronda de subvenciones de investigación de ETH: https://dorahacks.io/grant/ethre3/maci