a16z 详解 Cicada 原理:如何通过时间锁谜题与 ZK 证明实现隐私链上投票?_DEP:WOR

原文作者:Michael Zhu  ,a16z crypto 研究工程师 来源:a16zcrypto  翻译:DeFi之道

一般来说,所有投票系统都依赖于良好完整性和透明度,以此才能以任何有意义的方式发挥作用。从这点来看,区块链成为了构建这一系统的理想实现路径,事实上许多去中心化组织已经通过采用无许可投票来表达集体意图,一般是在通过动用大量资金或调整关键协议参数的情况下来实现。但链上投票也有缺点,即隐私性不足,这对 web3 投票系统尤其不利,在当前的大多数链上投票协议中,选票和计票都是完全公开的,没有隐私,那么投票结果容易受到操纵和选民激励失调,最终可能导致不民主的结果。

这就是我们发布 Cicada 的原因:一个新的开源 Solidity 库,它利用时间锁定谜题和ZK零知识证明进行链上投票。与现有系统相比,Cicada 具有新颖的隐私属性,最小化信任化假设,并且足够高效,可以在以太坊主网上使用。

在这篇文章中,我们调查了投票隐私的概况,并阐述了 Cicada 工作原理(将提供正式证明)。我们还鼓励开发人员查看 GitHub 存储库——Cicada 可以通过多种方式进行调整和扩展,以支持不同的投票方案和功能,我们希望与社区合作探索这些可能性。

a16z合伙人:Crypto和Web3领域存在创新,应关注长期愿景和产品周期:6月28日消息,a16z合伙人Chris Dixon发文对比互联网时代和当下Web3的现状,并发布金融周期和产品周期图表。

Chris Dixon指出,现在的科技行业与21世纪20年代有很大不同。少数科技巨头主导互联网,发挥巨大的经济和文化影响。在21世纪20年代,Web2大多被忽视或被视为谈论琐事的技术人员。如今,既得利益者积极应对有朝一日可能威胁到自己的新运动。但是,21世纪20年代出现的创造性模式今天仍然存在,由那些能提前看到更多可能性的爱好者推动。你只需要知道去哪里找到它们。Chris Dixon认为最好的地方是Crypto和Web3。

在他看来,现在的金融负面情绪与2008年最为相似。如果我们正走向长期低迷,那么可以从2008年那个时代学到一些战术上的教训,即保全资本并专注于长期愿景。战略上的教训是始终聚焦在产品周期上。对聪明人来说,看起来有趣的东西通常是因为它们具有丰富的产品可能性。这些可能性最终成为现实。玩具成为必备工具。周末爱好成为主流活动。愤世嫉俗者听起来很聪明,但乐观主义者创造了未来。[2022/6/28 1:36:34]

在任何投票系统中,都需要考虑许多不同的隐私层。个人选票数据的披露、连续计票和选民身份都会以不同方式影响选民激励,哪些隐私属性是必需的取决于投票的具体规则。以下是密码学和相关科学文献中经常出现的一些内容:

区块链碳信用交易平台Flowcarbon完成7000万美元融资,a16z领投:5月24日消息,区块链碳信用交易平台Flowcarbon完成7000万美元融资,此轮融资由a16z领投,General Catalyst和Samsung Next参投。其中3200万美元通过股权融资形式进行,3800万美元通过Token销售形式进行。Flowcarbon由WeWork创始人Adam Neumann参与支持,该平台允许项目开发商使用区块链技术将其碳信用额度Token化,并进行存储和交易,从而使其获得更低成本的资金并更快地扩展项目。(路透社)[2022/5/24 3:38:33]

选票隐私:无记名投票,也称为“澳大利亚选票( Australian ballot)”,是为物理现实世界的投票系统开发的一种投票方式,目的是保护个人选民的偏好,并减少贿赂和胁迫(在链上设置中,我们可能需要比选票隐私更强大的属性——参见下面的“无收据”)。投票隐私也减轻了社会期望偏差——即人们根据别人对自己选择的看法进行投票的压力较小。

计票结果隐私:许多投票系统在选民仍在投票时会隐藏计票结果,每个选项已投了多少票是未知的,以免影响投票率和选民激励。我们在现实世界中可以看到很多类似的情况,例如:晚些时间开始投票的美国参议员相比早些时间投票的参议员,前者之间更有可能与自己的政党结盟。链上:在代币加权投票中,鲸鱼可以让对手保持领先,让他们产生一种虚假的安全感(有些人可能懒得投票,认为他们无论如何都会赢),然后在最后一刻投票,以改变结果。

a16z向去中心化质押解决方案Lido Finance投资 7000万美元:3月4日消息,a16z 宣布向去中心化质押解决方案 Lido Finance 投资 7000万美元,并计划利用 Lido 将 a16z Crypto 在以太坊信标链上持有的未公开的部分 ETH 进行质押。

据悉,Lido Finance 成立于 2020 年,为以太坊 2.0 以及 Solana、Terra 等公链提供流动性质押解决方案,允许用户在没有锁定或最低存款的情况下质押他们的 ETH、SOL 等代币。Lido 于 2021 年 5 月完成由 Paradigm 领投的 7300 万美元融资,三箭资本、Alameda Research、DCG 等参投 。[2022/3/4 13:36:37]

选民匿名投票:在许多现实世界的投票系统中,个人的投票是私密的,但您投票的事实通常是公开的,这对于防止选民欺诈很重要,因为公布谁投票的记录可以让人们检查是否有其他人以他们的名义投票。然而,在链上,我们可以在使用加密原语保持匿名的同时防止选民欺诈——例如使用Semaphore,您可以在零知识的情况下证明您是尚未投票的合格选民。

无收据投票:个人选民自己提供他们选票的“收据”以证明他们是如何投票给第三方的,不然可能会导致选票出售。一个相关性很强的属性是 coercion-resistance,它可以防止某人以某种方式强迫选民投票。这些属性在去中心化环境中特别有吸引力,在这种环境下,可以通过智能合约市场使投票权流动,不幸的是,它也很难实现,事实上 Juels 等人声明在没有可信硬件的情况下,在未经许可的环境中是不可能实现的。Cicada 专注于运行计票隐私,它可以与零知识组证明相结合,以获得选民匿名和选票隐私等功能。

TUSD运营商TrustToken获a16z、Alameda等1250万美元投资:据官方最新消息,借贷协议TrueFi、美元稳定币TUSD运营商TrustToken 完成了1250 万美元新一轮融资,BlockTower Capital、a16z和 Alameda Research通过购买TrueFi的原生代币TRU领投。TrueFi是TrustToken团队推出的无抵押借贷产品,首批支持通过信用模型检测的用户以无抵押的方式借出TUSD。2020年12月,首个借款人、FTX 创始人SBF在规定时间内内完成还款,借出的500万TUSD共产生约 1.9 万美元利息收入。目前共有逾五千万TUSD抵押在TrueFi上,ROI超23%。[2021/8/9 1:43:07]

为了实现计票结果,Cicada 借鉴了(据我们所知)以前从未在链上使用过的加密原语。

首先,时间锁谜题 (Rivest, Shamir, Wagner, 1996) 是一种加密谜题,它封装了一个秘密,只有经过一段预定的时间后才能揭示——更具体地说,这个谜题可以通过重复执行一些操作来解密不可并行计算。时间锁定谜题在投票的背景下非常有用,可以实现计票结果隐私:用户可以将他们的选票作为时间锁定谜题提交,这样他们在投票期间是完全隐私的,但可以在投票后公开。与大多数其他私人投票结构不同,这可以在不依赖计票机构(如选举工作人员清点纸质选票或数字选票)、阈值加密(threshold encryption 其中多个受信任方必须合作解密消息)或任何其他受信任方情况下,任何人都可以运行计票隐私可以解决时间锁定难题,来确保在投票后公布结果。

区块链公司Mediachain获A16z领投150万美元种子轮:总部位于纽约的区块链创业公司Mediachain,已获得了重量级VC公司安德森·霍洛维茨基金(Andreessen Horowitz)以及合广风险投资公司(Union Square Ventures.)的注资。这两家公司今日宣布他们已领投了Mediachain的150万美元种子轮融资。其他跟投方包括RRE Ventures、数字货币集团(DGC)以及LDV Capital ,此外,天使投资人Alexis Ohanian、William Mougayar、Kanyi Maqubela、David Lee、Mathieu Drouin以及Brian Message也参与了此轮融资。这笔融资距Mediachain推出核心产品已过去了四个月,该元数据协议能使内容创造者为他们的作品打上时间戳,并放到比特币区块链上,同时它还使用了星级文件系统(IPFS,一种超媒体协议)。[2018/3/2]

其次,同态时间锁谜题 (Malavolta Thyagarajan, 2019) 具有额外的属性,即在知道密钥、解密谜题或使用后门的情况下,可以对加密值进行一些计算。特别是,线性同态时间锁谜题允许我们将谜题组合在一起,产生一个新的谜题,封装了原始谜题的秘密值。

正如该论文的作者所指出的那样,线性同态时间锁谜题是一种特别适合私人投票的原语:选票可以编码为谜题,并且可以将它们同态组合以获得对最终计票进行编码的谜题。这意味着只需要一次计算就可以揭示最终的计票结果,而不是为每张选票解决一个独特的难题。

要使投票方案在链上切实可行,还需要考虑更多的因素。首先,攻击者可能会尝试通过投出编码不正确的选票来操纵投票。例如,我们可能希望每个选票的时间锁定谜题都编码一个布尔值:“1”表示支持投票的提案,“0”表示反对。该提案的热心支持者可能会尝试编码,例如“100”来放大他们的有效投票权。

我们可以通过让选民与选票本身一起提交选票有效性的零知识证明来防止这种攻击。尽管零知识证明在计算上可能很昂贵——为了尽可能降低选民参与的成本,证明应该是 (1) 客户端可有效计算和 (2) 链上可有效验证。

为了使证明尽可能高效,我们使用定制的 sigma 协议——一种为特定代数关系设计的零知识证明,而不是通用证明系统。这实现了极快的证明时间:在现成的笔记本电脑上用 Python 生成选票有效性证明需要 14 毫秒。虽然这个 sigma 协议的验证器在概念上很简单,但它需要一些大的模幂运算。 Malavolta和Thyagarajan的线性同态方案使用Paillier加密,因此这些幂运算将对某些RSA模N取模N^2,对于一个合理大小的N,幂运算在大多数EVM链上是非常昂贵的(数百万gas)。为了降低此成本,Cicada 改用指数 ElGamal ,它仍然提供了加性同态,但工作模量要小得多(N而不是N^2)。

使用 ElGamal 的一个缺点是解密计数的最后一步需要暴力破解离散日志(请注意,这是在链下完成并在链上有效验证)。因此,它仅适用于预期的最终票数相当小的情况(例如小于 2^32,或大约 430 万票)。在最初的基于 Paillier 的方案中,无论其大小如何,计数都可以被有效地解密。

选择RSA模N也涉及到权衡。我们的实现使用 1024 位模数来提高gas效率。虽然这远高于有史以来最大的 RSA 模数(829 位),但它低于通常推荐的用于 RSA 加密或签名的 2048 位大小。但是,我们的应用程序不需要长期安全性:一旦选举结束,如果将来考虑 N 就没有风险。假定计票和选票在时间锁定期后公开,因此使用相对较小的模数是合理的。

如上所述,Cicada 提供了运行计票结果的隐私——时间锁定谜题属性在投票期间保持计票的私密性。然而,每个单独的选票也是一个时间锁难题,在相同的公共参数下加密。这意味着就像可以解密计数(通过执行必要的计算)一样,每张选票也可以,换句话说,Cicada 仅在投票期间保证选票隐私——如果好奇的观察者希望解密特定选民的选票,他们可以这样做。解密任何个人选票与解密最终计票一样昂贵,所以它需要O(n)的工作来完全解密一张有n个选民的选票。但是,所有这些选票都可以并行解密(假设有足够多的机器),所需的时间与解密最终计票所需的时间相同。

对于某些选票,这可能是不可取的。虽然我们对临时的运行计票隐私感到满意,但有时我们可能想要无限期的投票隐私。为实现这一点,我们可以将 Cicada 与匿名选民资格协议结合起来,通过零知识组成员身份证明进行实例化。这样,即使选票被解密,它所揭示的只是有人以这种方式投票,而不知道具体是谁。

我们在设计 Cicada 时的首要任务之一是避免需要一个计票机构:许多私人投票结构都需要一个半信任的计票机构(或权力委员会,或通过安全的多方计算进行协调)来接收和汇总选票,如果将其强行映射到区块链环境中,就意味着这些方案不能完全由智能合约执行,需要一些人为干预和中心化的信任。

在大多数结构中,计票机构的完整性不受信任,但他们的活跃度值得信任——如果他们离线,则无法计算最终结果,从而无限期地拖延投票结果。在某些结构中,他们也有一定的隐私性,也就是说,他们了解每个人如何投票,但预计会在不透露此信息的情况下公布投票结果。

在现实世界的场景中,计票机构是一个合理且必要组织,但它在区块链环境中并不需要,我们的目标是最大限度地减少信任并确保一定的审查阻力。 

Cicada 只是探索了链上投票隐私领域众多方向中的一个,并补充了其他团队正在进行的相关研究。如上所述,Cicada 与Semaphore、ZK 存储证明和RLN (Rate-Limiting Nullifier)等匿名技术密切相关,Cicada 还可以集成Nouns Vortex 团队提出的 optimistic proof checker ,以减轻选民的 gas 负担。

另外,还可以调整 Cicada 以支持不同的投票方案(例如代币加权投票、二次投票),更复杂的方案对于以太坊主网来说可能计算成本太高,但它们在 L2 上是很实用的,考虑到这一点,我们欢迎您的贡献、Fork和建议,和我们一起讨论下一步该把Cicada带到何处

DeFi之道

个人专栏

阅读更多

金色荐读

金色财经 善欧巴

迪新财讯

Chainlink预言机

区块律动BlockBeats

白话区块链

金色早8点

Arcane Labs

欧科云链

深潮TechFlow

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金宝趣谈

[0:15ms0-6:440ms