Cicada possède de nouvelles propriétés de confidentialité, minimise les hypothèses de confiance et est suffisamment efficace pour être utilisée sur le réseau principal Ethereum.
**Écrit par :**Michael Zhu
Compilé par : Lynn, MarsBit
Tous les systèmes de vote qui fonctionnent de manière significative reposent sur l'intégrité et la transparence. À première vue, cela fait de la blockchain une plate-forme idéale pour construire ces systèmes - en effet, de nombreuses organisations décentralisées ont adopté le vote sans autorisation comme moyen d'exprimer l'intention collective, brandissant souvent une vaste richesse ou modifiant les paramètres clés du protocole dans le cas de. Mais le vote en chaîne présente également des inconvénients : la confidentialité est encore inexplorée et sous-développée, ce qui n'est pas bon pour les systèmes de vote Web3 : dans la plupart des protocoles de vote en chaîne actuellement utilisés, les bulletins de vote et les résultats des votes sont entièrement publics. Sans confidentialité, les résultats des votes peuvent être facilement manipulés et les incitations des électeurs mal alignées, ce qui peut conduire à des résultats antidémocratiques.
C'est pourquoi nous lançons Cicada : une nouvelle bibliothèque Solidity open source qui exploite des énigmes temporelles et des preuves sans connaissance pour permettre le vote privé en chaîne. Par rapport aux systèmes existants, Cicada possède de nouvelles propriétés de confidentialité, minimise les hypothèses de confiance et est suffisamment efficace pour être utilisé sur le réseau principal Ethereum.
Dans cet article, nous examinons l'état de la confidentialité des votes et fournissons une description de haut niveau du fonctionnement de Cicada (des preuves formelles sont à venir). Nous encourageons également les développeurs à consulter le référentiel GitHub - Cicada peut être modifié et étendu de nombreuses manières pour prendre en charge différents systèmes et fonctionnalités de vote, et nous espérons travailler avec la communauté pour explorer ces possibilités.
Brève enquête sur les sondages privés
Dans tout système de vote (en chaîne ou autre), il existe de nombreux niveaux de confidentialité à prendre en compte. La divulgation des bulletins de vote individuels, le décompte courant et l'identité des électeurs affectent tous la motivation des électeurs de différentes manières. Les propriétés de confidentialité nécessaires dépendent du contexte du vote. Quelques-uns qui apparaissent fréquemment dans la littérature sur la cryptographie et les sciences sociales :
Confidentialité des bulletins de vote : les bulletins de vote secrets, également connus sous le nom de "votes australiens", ont été développés pour les systèmes de vote du monde réel afin de préserver les préférences des électeurs individuels et d'atténuer la corruption et la coercition (mis en chaîne, nous pouvons exiger une propriété plus forte que le scrutin vie privée - voir "sans récépissé" ci-dessous). La confidentialité des votes peut également atténuer le biais de désirabilité sociale - une personne a moins de pression pour voter en fonction de ce que les autres pensent de ses choix.
Confidentialité des décomptes en cours : de nombreux systèmes de vote masquent les décomptes en cours, ou le nombre de votes déjà exprimés pour chaque option, pendant que les électeurs votent encore, pour éviter d'affecter la participation et les incitations des électeurs. Nous avons vu cela se produire dans le monde réel ; par exemple, les sénateurs américains qui votent plus tard sont plus susceptibles de s'aligner sur leur parti que les sénateurs qui votent plus tôt. Et en chaîne: dans le vote pondéré par jetons, les baleines peuvent endormir leurs adversaires dans un faux sentiment de sécurité en les gardant en tête (certains peuvent être trop paresseux pour voter, en supposant qu'ils gagneront de toute façon), puis voter à la dernière minute Venez décider du résultat.
Anonymat des électeurs : dans de nombreux systèmes de vote réels, votre vote n'est pas public, mais le fait que vous ayez voté est souvent public. Ceci est important pour prévenir la fraude électorale, car la publication des registres des électeurs permet aux gens de vérifier si d'autres ont voté en leur nom. En chaîne, cependant, nous pouvons empêcher la fraude électorale tout en préservant l'anonymat à l'aide de primitives cryptographiques. Par exemple, avec Semaphore, vous pouvez prouver en toute connaissance de cause que vous êtes un électeur valide qui n'a pas encore voté.
Aucune recevabilité : les électeurs individuels fournissent un « reçu » de leur bulletin de vote pour prouver comment ils ont voté à un tiers, ce qui pourrait autrement entraîner une vente de billets. Une propriété étroitement liée mais plus forte est la résistance à la coercition, qui empêche quelqu'un de contraindre les électeurs à voter d'une certaine manière. Ces propriétés sont particulièrement attrayantes dans un environnement décentralisé, où les droits de vote peuvent être rendus liquides grâce à des marchés de contrats intelligents. Malheureusement, ils sont également difficiles à mettre en œuvre - en fait, soulignent Juels et al., c'est impossible dans un environnement sans autorisation sans matériel de confiance.
Cicada se concentre sur la confidentialité du décompte des votes en cours, mais (comme nous en discuterons plus tard) il peut être combiné avec des preuves d'appartenance à un groupe sans connaissance pour assurer l'anonymat des électeurs et la confidentialité des votes.
Présentation de Cicada : la confidentialité du comptage des votes à partir du problème de l'horloge homomorphe
Pour garantir la confidentialité du dépouillement des votes en cours, Cicada exploite des primitives cryptographiques qui (à notre connaissance) n'ont jamais été utilisées en chaîne auparavant.
Tout d'abord, le puzzle à verrouillage temporel (Rivest, Shamir, Wagner, 1996) est un puzzle crypté qui encapsule un secret qui ne peut être révélé qu'après un certain laps de temps prédéterminé - plus précisément, le puzzle peut être répété par Do some non- calculs parallèles à décrypter. Les puzzles temporisés sont utiles dans le contexte du vote pour assurer la confidentialité des statistiques de fonctionnement : les utilisateurs peuvent soumettre leurs votes sous forme de puzzles temporisés afin qu'ils soient gardés secrets pendant le processus de vote mais puissent être révélés après le vote. Contrairement à la plupart des autres structures de vote privées, cela permet à la confidentialité statistique de fonctionner sans dépendre des agences statistiques (telles que les agents électoraux qui comptent les bulletins papier ou numériques), du chiffrement de seuil (plusieurs parties de confiance doivent coopérer pour déchiffrer un message) ou de toute autre partie de confiance : N'importe qui peut résoudre un casse-tête pour s'assurer que le résultat est révélé après le vote.
Deuxièmement, un puzzle timelock isomorphe (Malavolta Thyagarajan, 2019) a la propriété supplémentaire que certains calculs sur des valeurs chiffrées sont possibles avec la connaissance de la clé secrète, le déchiffrement du puzzle ou l'utilisation d'une porte dérobée. En particulier, un puzzle timelock linéairement homomorphe nous permet de combiner des puzzles ensemble pour produire un nouveau puzzle qui encapsule la somme des valeurs secrètes du puzzle original.
Comme le soulignent les auteurs de l'article, les puzzles à verrouillage temporel linéairement homomorphes sont une primitive particulièrement bien adaptée au vote privé : les votes peuvent être encodés sous forme de puzzles, et ils peuvent être combinés de manière homomorphe pour obtenir un puzzle de comptage final codé. Cela signifie qu'un seul calcul est nécessaire pour révéler le résultat final, plutôt que de résoudre un puzzle unique pour chaque vote.
Une nouvelle structure : efficacité et compromis
Il y a plusieurs questions à considérer pour qu'un système de vote soit pratique en chaîne. Premièrement, un attaquant peut essayer de manipuler les votes en déposant un bulletin de vote mal codé. Par exemple, nous pourrions vouloir que le puzzle timelock de chaque bulletin de vote soit encodé sous la forme d'une valeur booléenne : "1" pour la proposition soumise au vote et "0" pour non. Un ardent partisan de la proposition pourrait essayer de coder quelque chose comme "100" pour étendre son pouvoir de vote effectif.
Nous pouvons empêcher cette attaque en demandant à l'électeur de soumettre une preuve sans connaissance de la validité du vote avec le vote lui-même. Cependant, les preuves à connaissance nulle sont coûteuses en calcul - pour maintenir le coût de la participation des électeurs aussi bas que possible, les preuves doivent être (1) efficacement calculables côté client et (2) efficacement vérifiables sur la chaîne.
Pour rendre les preuves aussi efficaces que possible, nous utilisons un protocole sigma personnalisé - des preuves à connaissance nulle conçues pour des relations algébriques spécifiques, plutôt qu'un système de preuve général. Cela rend le temps de preuve extrêmement rapide : la génération d'une preuve de validité de bulletin en Python prend 14 ms sur un ordinateur portable standard.
Bien que le validateur du protocole sigma soit conceptuellement simple, il nécessite un assez grand nombre d'exponentiations modulaires. Le schéma homomorphe linéaire de Malavolta et Thyagarajan utilise le cryptage Paillier, de sorte que ces exponentiations effectueront modulo N ^ 2 pour certains RSA modulo N. Pour des tailles raisonnables de N, l'exponentiation est très coûteuse (des millions de gaz) sur la plupart des chaînes EVM. Pour réduire les coûts, Cicada utilise Exponential ElGamal - Exponential ElGamal fournit toujours des homomorphismes additifs, mais fonctionne sur des modules plus petits (N au lieu de N^2).
L'un des inconvénients de l'utilisation d'ElGamal est que l'étape finale de décryptage du décompte nécessite de forcer brutalement le journal discret (notez que cela se fait hors chaîne et est effectivement vérifié en chaîne). Par conséquent, cela ne fonctionne que si le nombre final de votes attendu est assez faible (disons moins de 2 ^ 32, soit environ 4,3 millions de votes). Dans le schéma original basé sur Paillier, les comptes peuvent être efficacement déchiffrés quelle que soit leur taille.
Le choix du module RSA N implique également des compromis. Notre implémentation utilise un module de 1024 bits pour l'efficacité du gaz. Bien que ce soit bien au-dessus du plus grand module RSA jamais pris en compte publiquement (829 bits), il est inférieur à la taille généralement recommandée de 2048 bits pour le chiffrement ou la signature RSA. Cependant, notre application ne nécessite pas de sécurité à long terme : une fois l'élection terminée, il n'y a aucun risque si N est considéré dans le futur. Il est raisonnable d'utiliser un module relativement petit, en supposant que les décomptes et les votes sont rendus publics après l'expiration du délai. (Cela peut également être facilement mis à jour à l'avenir si l'algorithme de décomposition s'améliore.)
Anonymat et éligibilité des électeurs
Comme mentionné ci-dessus, Cicada fournit la confidentialité du nombre d'exécutions - une propriété de puzzle verrouillée dans le temps qui garde le nombre de votes privé pendant le vote. Cependant, chaque bulletin de vote individuel est également un puzzle à verrouillage temporel, crypté selon les mêmes paramètres publics. Cela signifie que tout comme le décompte peut être déchiffré (en effectuant les calculs nécessaires), chaque vote peut également l'être. En d'autres termes, Cicada garantit la confidentialité des bulletins uniquement pendant le vote - si des observateurs curieux souhaitent décrypter le bulletin de vote d'un électeur particulier, ils peuvent le faire. Décrypter n'importe quel bulletin de vote individuel est aussi coûteux que de décrypter le décompte final, donc naïvement, il faut O(n) travail pour décrypter complètement un bulletin de vote avec n électeurs. Mais tous ces votes peuvent être déchiffrés en parallèle (en supposant qu'il y ait suffisamment de machines), en prenant le même temps qu'il en faut pour déchiffrer le décompte final.
Pour certains votes, cela peut ne pas être souhaitable. Bien que nous soyons satisfaits de la gestion temporaire de la confidentialité du comptage des votes, nous pouvons souhaiter la confidentialité du vote indéfiniment. Pour y parvenir, nous pouvons combiner Cicada avec un protocole d'éligibilité des électeurs anonymes, instancié avec des preuves d'appartenance à un groupe sans connaissance. De cette façon, même si le bulletin de vote est déclassifié, tout ce qu'il révèle, c'est que quelqu'un a voté de cette façon - et nous le savons déjà d'après le décompte.
Dans notre référentiel, nous incluons un exemple de contrat qui utilise Semaphore pour l'anonymisation des électeurs. Notez, cependant, que le contrat Cicada lui-même ne fait aucune hypothèse sur la façon dont l'éligibilité des électeurs est déterminée ou appliquée. En particulier, vous pouvez remplacer Semaphore par exemple Semacaulk ou ZK Proof of State (comme suggéré ici et ici).
Autorité statistique
L'une de nos premières priorités lors de la conception de Cicada était d'éviter le recours à une agence statistique : de nombreuses structures de vote privées nécessitent une agence statistique semi-confiée (ou un comité délégué, coordonné via un calcul multipartite sécurisé) pour recevoir et agréger les votes. Dans un contexte de blockchain, cela signifie que ces schémas ne peuvent pas être exécutés uniquement par des contrats intelligents, nécessitant une intervention humaine et de la confiance.
Dans la plupart des structures, on ne fait pas confiance aux autorités de comptage pour leur intégrité (elles ne peuvent pas manipuler le décompte des voix), mais pour leur vivacité - si elles sont hors ligne, elles ne peuvent pas calculer le résultat final, retardant indéfiniment le vote. Dans certaines structures, on leur fait également confiance pour préserver la confidentialité, c'est-à-dire qu'ils savent comment chaque individu vote, mais sont censés publier les résultats des votes sans révéler ces informations.
Bien que les autorités statistiques soient une hypothèse raisonnable (et nécessaire) dans de nombreux scénarios réels, elles ne sont pas idéales dans un environnement de blockchain, où notre objectif est de minimiser la confiance et d'assurer la résistance à la censure.
Cicada explore l'une des nombreuses directions dans le domaine de la confidentialité des votes en chaîne et complète une grande partie des recherches menées par d'autres groupes. Comme mentionné ci-dessus, Cicada est étroitement lié aux technologies d'adhésion à des groupes anonymes telles que les sémaphores, la preuve de stockage ZK et les invalidateurs de limite de débit. Cicada peut également intégrer le vérificateur de preuve optimiste proposé par l'équipe Nouns Vortex pour réduire la charge de gaz des électeurs.
Il est également possible d'adapter Cicada pour prendre en charge différents schémas de vote (par exemple, vote pondéré par jeton, vote quadratique) - des schémas plus complexes peuvent être trop coûteux en calcul pour le réseau principal Ethereum, mais ils peuvent être pratiques à L2. Dans cet esprit, nous accueillons vos contributions, fourchettes et suggestions sur où prendre Cicada ensuite.
*Remerciements : Cicada a été co-développé avec Joseph Bonneau. Merci à Andrew Hall pour ses informations générales sur le contexte historique de la confidentialité des votes. Merci également à Robert Hackett pour ses commentaires sur cet article. Remerciements particuliers à Stephanie Zinn pour l'édition. *
Voir l'original
Le contenu est fourni à titre de référence uniquement, il ne s'agit pas d'une sollicitation ou d'une offre. Aucun conseil en investissement, fiscalité ou juridique n'est fourni. Consultez l'Avertissement pour plus de détails sur les risques.
a16z : comment Cicada utilise les énigmes temporelles et les preuves à connaissance nulle pour permettre le vote en chaîne
**Écrit par :**Michael Zhu
Compilé par : Lynn, MarsBit
Tous les systèmes de vote qui fonctionnent de manière significative reposent sur l'intégrité et la transparence. À première vue, cela fait de la blockchain une plate-forme idéale pour construire ces systèmes - en effet, de nombreuses organisations décentralisées ont adopté le vote sans autorisation comme moyen d'exprimer l'intention collective, brandissant souvent une vaste richesse ou modifiant les paramètres clés du protocole dans le cas de. Mais le vote en chaîne présente également des inconvénients : la confidentialité est encore inexplorée et sous-développée, ce qui n'est pas bon pour les systèmes de vote Web3 : dans la plupart des protocoles de vote en chaîne actuellement utilisés, les bulletins de vote et les résultats des votes sont entièrement publics. Sans confidentialité, les résultats des votes peuvent être facilement manipulés et les incitations des électeurs mal alignées, ce qui peut conduire à des résultats antidémocratiques.
C'est pourquoi nous lançons Cicada : une nouvelle bibliothèque Solidity open source qui exploite des énigmes temporelles et des preuves sans connaissance pour permettre le vote privé en chaîne. Par rapport aux systèmes existants, Cicada possède de nouvelles propriétés de confidentialité, minimise les hypothèses de confiance et est suffisamment efficace pour être utilisé sur le réseau principal Ethereum.
Dans cet article, nous examinons l'état de la confidentialité des votes et fournissons une description de haut niveau du fonctionnement de Cicada (des preuves formelles sont à venir). Nous encourageons également les développeurs à consulter le référentiel GitHub - Cicada peut être modifié et étendu de nombreuses manières pour prendre en charge différents systèmes et fonctionnalités de vote, et nous espérons travailler avec la communauté pour explorer ces possibilités.
Brève enquête sur les sondages privés
Dans tout système de vote (en chaîne ou autre), il existe de nombreux niveaux de confidentialité à prendre en compte. La divulgation des bulletins de vote individuels, le décompte courant et l'identité des électeurs affectent tous la motivation des électeurs de différentes manières. Les propriétés de confidentialité nécessaires dépendent du contexte du vote. Quelques-uns qui apparaissent fréquemment dans la littérature sur la cryptographie et les sciences sociales :
Cicada se concentre sur la confidentialité du décompte des votes en cours, mais (comme nous en discuterons plus tard) il peut être combiné avec des preuves d'appartenance à un groupe sans connaissance pour assurer l'anonymat des électeurs et la confidentialité des votes.
Présentation de Cicada : la confidentialité du comptage des votes à partir du problème de l'horloge homomorphe
Pour garantir la confidentialité du dépouillement des votes en cours, Cicada exploite des primitives cryptographiques qui (à notre connaissance) n'ont jamais été utilisées en chaîne auparavant.
Tout d'abord, le puzzle à verrouillage temporel (Rivest, Shamir, Wagner, 1996) est un puzzle crypté qui encapsule un secret qui ne peut être révélé qu'après un certain laps de temps prédéterminé - plus précisément, le puzzle peut être répété par Do some non- calculs parallèles à décrypter. Les puzzles temporisés sont utiles dans le contexte du vote pour assurer la confidentialité des statistiques de fonctionnement : les utilisateurs peuvent soumettre leurs votes sous forme de puzzles temporisés afin qu'ils soient gardés secrets pendant le processus de vote mais puissent être révélés après le vote. Contrairement à la plupart des autres structures de vote privées, cela permet à la confidentialité statistique de fonctionner sans dépendre des agences statistiques (telles que les agents électoraux qui comptent les bulletins papier ou numériques), du chiffrement de seuil (plusieurs parties de confiance doivent coopérer pour déchiffrer un message) ou de toute autre partie de confiance : N'importe qui peut résoudre un casse-tête pour s'assurer que le résultat est révélé après le vote.
Deuxièmement, un puzzle timelock isomorphe (Malavolta Thyagarajan, 2019) a la propriété supplémentaire que certains calculs sur des valeurs chiffrées sont possibles avec la connaissance de la clé secrète, le déchiffrement du puzzle ou l'utilisation d'une porte dérobée. En particulier, un puzzle timelock linéairement homomorphe nous permet de combiner des puzzles ensemble pour produire un nouveau puzzle qui encapsule la somme des valeurs secrètes du puzzle original.
Comme le soulignent les auteurs de l'article, les puzzles à verrouillage temporel linéairement homomorphes sont une primitive particulièrement bien adaptée au vote privé : les votes peuvent être encodés sous forme de puzzles, et ils peuvent être combinés de manière homomorphe pour obtenir un puzzle de comptage final codé. Cela signifie qu'un seul calcul est nécessaire pour révéler le résultat final, plutôt que de résoudre un puzzle unique pour chaque vote.
Une nouvelle structure : efficacité et compromis
Il y a plusieurs questions à considérer pour qu'un système de vote soit pratique en chaîne. Premièrement, un attaquant peut essayer de manipuler les votes en déposant un bulletin de vote mal codé. Par exemple, nous pourrions vouloir que le puzzle timelock de chaque bulletin de vote soit encodé sous la forme d'une valeur booléenne : "1" pour la proposition soumise au vote et "0" pour non. Un ardent partisan de la proposition pourrait essayer de coder quelque chose comme "100" pour étendre son pouvoir de vote effectif.
Nous pouvons empêcher cette attaque en demandant à l'électeur de soumettre une preuve sans connaissance de la validité du vote avec le vote lui-même. Cependant, les preuves à connaissance nulle sont coûteuses en calcul - pour maintenir le coût de la participation des électeurs aussi bas que possible, les preuves doivent être (1) efficacement calculables côté client et (2) efficacement vérifiables sur la chaîne.
Pour rendre les preuves aussi efficaces que possible, nous utilisons un protocole sigma personnalisé - des preuves à connaissance nulle conçues pour des relations algébriques spécifiques, plutôt qu'un système de preuve général. Cela rend le temps de preuve extrêmement rapide : la génération d'une preuve de validité de bulletin en Python prend 14 ms sur un ordinateur portable standard.
Bien que le validateur du protocole sigma soit conceptuellement simple, il nécessite un assez grand nombre d'exponentiations modulaires. Le schéma homomorphe linéaire de Malavolta et Thyagarajan utilise le cryptage Paillier, de sorte que ces exponentiations effectueront modulo N ^ 2 pour certains RSA modulo N. Pour des tailles raisonnables de N, l'exponentiation est très coûteuse (des millions de gaz) sur la plupart des chaînes EVM. Pour réduire les coûts, Cicada utilise Exponential ElGamal - Exponential ElGamal fournit toujours des homomorphismes additifs, mais fonctionne sur des modules plus petits (N au lieu de N^2).
L'un des inconvénients de l'utilisation d'ElGamal est que l'étape finale de décryptage du décompte nécessite de forcer brutalement le journal discret (notez que cela se fait hors chaîne et est effectivement vérifié en chaîne). Par conséquent, cela ne fonctionne que si le nombre final de votes attendu est assez faible (disons moins de 2 ^ 32, soit environ 4,3 millions de votes). Dans le schéma original basé sur Paillier, les comptes peuvent être efficacement déchiffrés quelle que soit leur taille.
Le choix du module RSA N implique également des compromis. Notre implémentation utilise un module de 1024 bits pour l'efficacité du gaz. Bien que ce soit bien au-dessus du plus grand module RSA jamais pris en compte publiquement (829 bits), il est inférieur à la taille généralement recommandée de 2048 bits pour le chiffrement ou la signature RSA. Cependant, notre application ne nécessite pas de sécurité à long terme : une fois l'élection terminée, il n'y a aucun risque si N est considéré dans le futur. Il est raisonnable d'utiliser un module relativement petit, en supposant que les décomptes et les votes sont rendus publics après l'expiration du délai. (Cela peut également être facilement mis à jour à l'avenir si l'algorithme de décomposition s'améliore.)
Anonymat et éligibilité des électeurs
Comme mentionné ci-dessus, Cicada fournit la confidentialité du nombre d'exécutions - une propriété de puzzle verrouillée dans le temps qui garde le nombre de votes privé pendant le vote. Cependant, chaque bulletin de vote individuel est également un puzzle à verrouillage temporel, crypté selon les mêmes paramètres publics. Cela signifie que tout comme le décompte peut être déchiffré (en effectuant les calculs nécessaires), chaque vote peut également l'être. En d'autres termes, Cicada garantit la confidentialité des bulletins uniquement pendant le vote - si des observateurs curieux souhaitent décrypter le bulletin de vote d'un électeur particulier, ils peuvent le faire. Décrypter n'importe quel bulletin de vote individuel est aussi coûteux que de décrypter le décompte final, donc naïvement, il faut O(n) travail pour décrypter complètement un bulletin de vote avec n électeurs. Mais tous ces votes peuvent être déchiffrés en parallèle (en supposant qu'il y ait suffisamment de machines), en prenant le même temps qu'il en faut pour déchiffrer le décompte final.
Pour certains votes, cela peut ne pas être souhaitable. Bien que nous soyons satisfaits de la gestion temporaire de la confidentialité du comptage des votes, nous pouvons souhaiter la confidentialité du vote indéfiniment. Pour y parvenir, nous pouvons combiner Cicada avec un protocole d'éligibilité des électeurs anonymes, instancié avec des preuves d'appartenance à un groupe sans connaissance. De cette façon, même si le bulletin de vote est déclassifié, tout ce qu'il révèle, c'est que quelqu'un a voté de cette façon - et nous le savons déjà d'après le décompte.
Dans notre référentiel, nous incluons un exemple de contrat qui utilise Semaphore pour l'anonymisation des électeurs. Notez, cependant, que le contrat Cicada lui-même ne fait aucune hypothèse sur la façon dont l'éligibilité des électeurs est déterminée ou appliquée. En particulier, vous pouvez remplacer Semaphore par exemple Semacaulk ou ZK Proof of State (comme suggéré ici et ici).
Autorité statistique
L'une de nos premières priorités lors de la conception de Cicada était d'éviter le recours à une agence statistique : de nombreuses structures de vote privées nécessitent une agence statistique semi-confiée (ou un comité délégué, coordonné via un calcul multipartite sécurisé) pour recevoir et agréger les votes. Dans un contexte de blockchain, cela signifie que ces schémas ne peuvent pas être exécutés uniquement par des contrats intelligents, nécessitant une intervention humaine et de la confiance.
Dans la plupart des structures, on ne fait pas confiance aux autorités de comptage pour leur intégrité (elles ne peuvent pas manipuler le décompte des voix), mais pour leur vivacité - si elles sont hors ligne, elles ne peuvent pas calculer le résultat final, retardant indéfiniment le vote. Dans certaines structures, on leur fait également confiance pour préserver la confidentialité, c'est-à-dire qu'ils savent comment chaque individu vote, mais sont censés publier les résultats des votes sans révéler ces informations.
Bien que les autorités statistiques soient une hypothèse raisonnable (et nécessaire) dans de nombreux scénarios réels, elles ne sont pas idéales dans un environnement de blockchain, où notre objectif est de minimiser la confiance et d'assurer la résistance à la censure.
Cicada explore l'une des nombreuses directions dans le domaine de la confidentialité des votes en chaîne et complète une grande partie des recherches menées par d'autres groupes. Comme mentionné ci-dessus, Cicada est étroitement lié aux technologies d'adhésion à des groupes anonymes telles que les sémaphores, la preuve de stockage ZK et les invalidateurs de limite de débit. Cicada peut également intégrer le vérificateur de preuve optimiste proposé par l'équipe Nouns Vortex pour réduire la charge de gaz des électeurs.
Il est également possible d'adapter Cicada pour prendre en charge différents schémas de vote (par exemple, vote pondéré par jeton, vote quadratique) - des schémas plus complexes peuvent être trop coûteux en calcul pour le réseau principal Ethereum, mais ils peuvent être pratiques à L2. Dans cet esprit, nous accueillons vos contributions, fourchettes et suggestions sur où prendre Cicada ensuite.
*Remerciements : Cicada a été co-développé avec Joseph Bonneau. Merci à Andrew Hall pour ses informations générales sur le contexte historique de la confidentialité des votes. Merci également à Robert Hackett pour ses commentaires sur cet article. Remerciements particuliers à Stephanie Zinn pour l'édition. *