作者:Michael Zhu  编译:Lynn,MarsBit

一切不管以何种有意义的方法运作的投票体系都依赖于完整性和透明度。从表面上看,这使得区块链成为构建这些体系的抱负平台——实际上,许多去中心化的组织现已承受了无许可投票来表达团体目的,通常是在挥舞很多财富或调整要害协议参数的状况下。可是链上投票也有缺陷,隐私仍未被探究和开发,对 Web3 投票体系不利——在目前运用的大多数链上投票协议中,选票和投票成果是彻底揭露的。假如没有隐私,投票成果很容易被操作和选民鼓励错位,或许会导致不民主的成果。

这便是为什么咱们要发布 Cicada:一个新的、开源的 Solidity 库,运用时刻锁谜题和零常识证明来完成私家链上投票。与现有的体系相比,Cicada 具有新颖的隐私特点,最大极限地削减了信赖假设,而且满足高效,能够在以太坊主网上运用。

在这篇文章中,咱们查询了投票隐私的状况,并供给了关于 Cicada 怎么作业的高层次描绘(正式的证明即将到来)。咱们还鼓励开发者查看 GitHub 仓库——Cicada 能够经过许多方法进行调整和扩展,以支持不同的投票计划和功能,咱们期望与社区协作,探究这些或许性。

私家投票的简要查询

在任何投票体系(链上或其他)中,有许多不同层次的隐私需求考虑。单个选票的披露、运转中的计票和选民身份都会以不同方法影响选民的积极性。哪些隐私特点是必要的,取决于投票的布景。在密码学和社会科学文献中经常出现的几个:

  • 选票隐私:隐秘选票,也被称为「澳大利亚选票」,是为实际世界的投票体系开发的,作为坚持个人选民的偏好的一种方法,并减轻贿赂和钳制(在链上设置,咱们或许需求一个比选票隐私更强大的特点——见下文的「无收据性」)。选票隐私还能够减轻社会期望偏差——或人根据他人对其挑选的观点而投票的压力较小。

  • 正在进行中计票的隐私:许多投票体系在选民仍在投票时躲藏正在进行中的计票,或每个选项现已投了多少票,以避免影响投票率和选民鼓励。咱们现已在实际世界中看到了这种状况;例如,较晚投票的美国参议员比较早投票的参议员更有或许与他们的政党坚持一致。而在链上:在代币加权投票中,鲸鱼能够经过让对手坚持领先来诈骗他们的虚假安全感(有些人或许懒得投票,假设他们不管怎么都会赢),然后在终究一刻投出自己的选票来左右成果。

  • 选民的匿名性:在许多实际世界的投票体系中,你的投票是不揭露的,但你投了票的实际往往是揭露的。这关于避免选民诈骗很重要,由于公布投票者的记载能够让人们查看是否有其他人以他们的名义投票。但是,在链上,咱们能够避免选民诈骗,一起运用加密基元保留匿名性——例如,经过 Semaphore,你能够在零常识中证明你是一个还没有投过票的合格的选民。

  • 无收据性:个人选民供给其选票的「收据」,以证明他们是怎么向第三方投票的,不然或许导致卖票。一个密切相关但更强大的特点是抗钳制,它能够避免有人钳制选民以某种方法投票。这些特点在去中心化的环境中特别有吸引力,由于投票权能够经过智能合约商场完成流动性。不幸的是,它们也很难完成——实际上,Juels 等人指出,在没有可信硬件的状况下,这在无许可的环境下是不或许的。

Cicada 专心于正在进行中计票隐私,但(正如咱们在后面评论的)它能够与零常识组成员证明联合,以达到选民的匿名性和选票隐私。

介绍 Cicada: 来自同态时刻锁难题的计票隐私

为了完成正在进行中计票的隐私,Cicada 运用了(据咱们所知)以前从未在链上运用过的密码学基元。

首要,时刻锁谜题(Rivest, Shamir, Wagner, 1996 )是一个加密谜题,它封装了一个隐秘,只有在一些预订的时刻往后才能被提醒——更具体地说,这个谜题能够经过重复进行一些非平行核算来解密。时刻确认谜题在投票的布景下关于完成运转核算的隐私很有用: 用户能够将他们的选票作为时刻锁谜题提交,这样他们在投票过程中是保密的,但在投票后能够被揭穿。与其他大多数私家投票结构不同的是,这使得运转核算隐私不需求依赖核算组织(如推举作业人员核算纸质或数字选票)、阈值加密(几个受信赖方有必要协作解密一个音讯)或任何其他受信赖方:任何人都能够解决一个时刻锁谜题,以保证投票后成果被提醒。

其次,一个同构的时刻锁谜题(Malavolta Thyagarajan, 2019 )具有额外的特点,即在知道隐隐秘钥、解密谜题或运用后门的状况下,对加密值的一些核算是或许的。特别是,一个线性同态的时刻锁谜题答应咱们将谜题组合在一起,发生一个新的谜题,封装了原始谜题的隐秘值的总和。

正如论文作者所指出的,线性同态的时刻锁谜题是一种特别适合于私家投票的基元: 选票能够被编码为谜题,而且它们能够被同态地组合起来,以取得一个编码终究计票的谜题。这意味着只需求一次核算就能够提醒出终究成果,而不是为每张选票解决一个独特的谜题。

一个新的结构:功率和权衡

要使投票计划在链上有用,还需求考虑几个问题。首要,进犯者或许会企图经过投一个不正确的编码的选票来操作投票。例如,咱们或许期望每张选票的时刻锁谜题都编码为一个布尔值:「 1 」表明支持被投票的提案,「 0 」表明反对。一个热心的提案支持者或许会企图编码,例如「 100 」来扩大他们的有用投票权。

咱们能够经过让选民在提交选票自身的一起提交一份关于选票有用性的零常识证明来避免这种进犯。不过零常识证明的核算本钱很高——为了尽或许降低选民参与的本钱,证明应该是(1 )可有用核算的客户端和(2 )可有用验证的链上证明。

为了使证明尽或许高效,咱们运用了定制的 sigma 协议——为特定代数联系设计的零常识证明,而不是通用的证明体系。这使得证明者的时刻非常快:用 Python 生成一个选票有用性证明,在一台现成的笔记本电脑上需求 14 ms.

尽管该 sigma 协议的验证器在概念上很简单,但它需求适当一部分大的模幂。Malavolta 和 Thyagarajan 的线性同态计划运用 Paillier 加密,因而这些求幂将对某些 RSA 模 N 以 N^ 2 为模履行。关于合理巨细的 N,在大多数 EVM 链上,取幂非常贵重(数百万 gas)。为了降低本钱,Cicada 运用 指数 ElGamal——指数 ElGamal 仍然供给加性同态,但在更小的模数上作业(N 而不是 N^ 2 ) 。

运用 ElGamal 的一个缺陷是解密计数的终究一步需求暴力破解离散日志(请注意,这是在链下完成并在链上有用验证)。因而,它仅适用于预期的终究票数适当小的状况(例如小于 2 ^ 32 ,或大约 430 万票)。在开始的根据 Paillier 的计划中,不管其巨细怎么,计数都能够被有用地解密。

挑选 RSA 模数 N 也触及权衡。 咱们的完成运用 1024 位模数来进步 gas 功率。尽管这远高于有史以来揭露分解的最大 RSA 模数(829 位),但低于 通常推荐的巨细为 2048 位,用于 RSA 加密或签名。可是,咱们的应用程序不需求长期安全性:一旦推举完毕,假如将来考虑 N 就没有风险。假定计票和选票在时刻确认期满后揭露,因而运用相对较小的模数是合理的。 (假如分解算法改善,这也能够在未来轻松更新。)

匿名和选民资历

如上所述,Cicada 供给了运转计票隐私——时刻确认谜题特点在投票期间坚持计票的私密性。但是,每个单独的选票也是一个时刻锁难题,在相同的公共参数下加密。这意味着就像能够解密计数(经过履行必要的核算)相同,每张选票也能够。换句话说,Cicada 仅在投票期间保证选票隐私——假如好奇的观察者期望解密特定选民的选票,他们能够这样做。解密任何个人选票与解密终究计票相同贵重,因而天真地需求 O(n) 的作业来彻底解密有 n 名选民的选票。可是一切这些选票都能够并行解密(假设有满足多的机器),花费的挂钟时刻与解密终究计票所需的时刻相同。

关于某些选票,这或许是不可取的。尽管咱们对暂时运转计票隐私感到满足,但咱们或许期望无限期投票隐私。为完成这一点,咱们能够将 Cicada 与匿名选民资历协议结合起来,经过零常识组成员身份证明进行实例化。这样,即使选票被解密,它所提醒的只是或人以这种方法投票——咱们现已从计票中知道了这一点。

在咱们的存储库中,咱们包括一个运用 Semaphore 进行选民匿名的示例合约。可是请注意,Cicada 合约自身没有对怎么确认或履行选民资历做出任何假设。特别是,您能够将 Semaphore 替换为例如 Semacaulk 或 ZK 状况证明(如此处和此处所主张的)。

核算当局

咱们在设计 Cicada 时的首要任务之一是避免需求核算组织:许多私家投票结构需求一个半信赖的核算组织(或授权委员会,经过安全的多方核算进行协调)接纳和汇总选票。在区块链环境中,这意味着这些计划不能仅由智能合约履行,需求一些人为干涉和信赖。

在大多数结构中,计票当局在完整性方面不受信赖(他们无法操作选票计数),但在活性方面值得信赖——假如他们离线,则无法核算终究成果,从而无限期地拖延投票成果。在某些结构中,他们也被信赖保护隐私——也便是说,他们了解每个人怎么投票,但估计会在不透露此信息的状况下公布投票成果。

尽管在许多实际世界的场景中,核算当局是一个合理(且必要)的假设,但它们在区块链环境中并不抱负,咱们的方针是最大极限地削减信赖并保证审查阻力。

Cicada 探究了链上投票隐私范畴的众多方向之一,并补充了其他团队正在进行的大部分研讨。如上所述,Cicada 与信号量、ZK 存储证明和限速无效器等匿名组成员技术密切相关。Cicada 还能够集成 Nouns Vortex 团队提出的 optimistic 证明查看器,以减轻选民的 gas 担负。

还有机会调整 Cicada 以支持不同的投票计划(例如代币加权投票、二次投票)——更杂乱的计划关于以太坊主网来说或许核算本钱太高,但它们在 L2 上或许是有用的。考虑到这一点,咱们欢迎您就下一步将 Cicada 带到哪里做出奉献、分叉和主张。

此时快讯

【ETH过去30天的年化波动率与纳斯达克指数接近】金色财经报道,据IntoTheBlock数据,ETH目前几乎和纳斯达克一样稳定,过去 30 天ETH的年化波动率目前仅为23%。根据资本市场指标,纳斯达克指数在整个2023年的30天年化波动率一直在20%左右。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注