区块链可以在货币和金融交易之外发挥作用。其中一种非金融应用便是区块链可以极大地改进投票和治理领域。在本文中,我们探讨构建一种特殊用途区块链的方法,该基础设施旨在促进基于MACI的投票活动。该基础设施应包括充当时间戳服务器并托管逻辑的轻型区块链,以及减少用户成本/最大化用户体验所需的工具。因此,它应该成为新一代投票技术的新基础平台。在深入探讨细节之前,让我们首先回顾一下投票技术的历史以及投票在区块链社区内的发展过程。
投票技术的演变
从古希腊Kleroterion[1]到现代电子投票机的投票技术。
投票技术有着悠久的历史[2]。它对人类社会非常重要,但发展非常缓慢。英国在2019年大选[3]期间仍然依赖手写选票,其他民族国家使用闭源电子投票机[4],很容易为治理结果带来争议[5]。
现代投票技术的采用提高了效率,但在解决透明度和可验证性方面并没有取得太大成功。
毋庸置疑,投票的诚信对于权力的交接、重要事务的决策或资源的分配非常重要。如果人们不能就治理决策的投票结果达成一致,他们就无法相互合作,摩擦就会增加。摩擦可能会引起问题,如从争端到战争。
尽管投票技术正在缓慢发展,但透明度在很长一段时间内并没有得到改善。从Kleroterion到纸质选票,再到电子和光学扫描投票机,验证仍然依赖于值得信赖的个人和审计组织。确认和审核投票结果的成本可能极其高昂[6]。显然还有改进的空间。
那么理想的投票技术是什么?其实这并不是一个困难的问题。我们可以轻松创建一个“愿望清单”:
(1)基础设施开源;
(2)托管用于投票逻辑的开源程序;
(3)按顺序保留所有投票的永久记录;
(4)能够对结果进行密码学验证;
(5)抗串谋;
(6)保护隐私;
(7)投票成本低。
如果我们能够构建一个可以不断完善的开源系统,我们就会逐步实现上述目标。投票技术的改进和成本的降低可以使较小的组织和社区受益于使用他们以前无法获得的技术,这增加了巨大的正外部性。
区块链社区内的投票和治理
投票和治理在区块链社区中并不陌生,因为很多区块链社区都是分布式的,他们必须依靠治理来推动事务的发展。
区块链本身可以透明地记录投票并验证投票结果。这些属性已被区块链社区用于治理,例如Snapshot代币投票[7]和Cosmos治理提案投票[8]活动。因此,区块链社区可以在不经过中心化代理或面对面会议的情况下,对提案进行投票,并决定重要的治理事务。
KlaytnSquare[9]正在进行的一项提案[10]呼吁验证者在链上投票。该提案寻求季度财政支出计划[11]的批准。
前述的例子采用了简单直接的1代币1票规则 - 拥有多少投票权取决于在网络或协议中的权益。显然,只要有意义,我们可以创造其他投票逻辑。区块链的可编程性使得实施非传统投票逻辑变得更加容易和实际。
一个例子是二次方投票[12](QV),这是一种在区块链社区中越来越受欢迎的投票方案。在QV轮中,用户可以通过在特定主题上花费“投票信用积分”(Voice Credit)来表达他/她的偏好。但如果选民想对同一主题投不止一票,则每票的投票信用成本就会增加。因此,投票的总成本呈二次增加,阻止了那些拥有过多投票权用户的极端偏好。
二次方资助[13]轮在Aptos区块链上投票。投票结果记录在链上,投票逻辑可验证。
选择特定投票方式时需要考虑许多参数。例如,一个权衡是选择链上投票还是链下投票。链上投票逻辑可能更具可验证性和透明度,但交易手续费可能是一个重要的负担。相反,链下投票逻辑可能更便宜,但同时透明度和可验证性较低。然而,链上与链下投票不是二选一的关系。我们可以很容易地将其设计为混合系统,其中部分流程在链上进行,其余部分在链下完成。
除了成本之外,还有隐私问题。隐私之所以重要有两个原因。首先,在很多情况下,如果用户可以匿名投票(用户和组织者之间的隐私),他们对投票的顾虑就会减少。此外,用户之间的隐私可以帮助防止投票贿赂,有效实现抗共谋。
我们可以最大限度地减少链上计算,同时强制链下完整性的一种方法是使用零知识证明[14]。一个简单的想法是,如果链下计算可以通过零知识证明进行验证,我们就可以将大部分计算移至链下。如果消息进一步加密,我们就可以增强隐私性。MACI[15]是实现这一目标的最小框架。
MACI投票轮将计票转移到链外。最后通过零知识证明链上验证结果的有效性。
在MACI投票轮中,投票被封装在由一轮管理员(运营者)生成的公钥加密的消息中,并提交给智能合约。因此,所有消息都被区块链“时间戳”,从而创建了一个投票信息的消息链。
当投票轮次结束时,管理员下载所有消息,对它们进行解密,并以相反的顺序进行投票计数。然后,将结果与零知识证明一起发布,可以在智能合约上(或由任何其他人)进行验证,从而标志着发布结果的有效性以及消息处理的正确性。
整个过程在保证发布结果的完整性的同时,保持了最小的链上计算。它还为用户之间提供了隐私和抗共谋的能力。
MACI在实际产品中是如何工作的?
MACI现在被DoraHacks[16]上的各个黑客马拉松社区用来投票选出他们最喜欢的黑客马拉松项目。所以我们以DoraHacks MACI轮次为例。
OpenSea与Replit黑客马拉松在2022年使用MACI进行评委投票
黑客马拉松项目(BUIDL)提交后,主办方从所有提交的作品中选出了12支BUIDL团队。10名评委受邀为这12支BUIDL团队投票,并分发25,000美元的奖金。10名评委被列入白名单,报名参加投票轮,他们总共向部署在Polygon上的MACI智能合约发送了39条消息。
投票结束后,管理员(DoraHacks)统计票数并将最终结果发布到排行榜上,然后提供零知识证明来验证排行榜。
OpenSea x Replit黑客马拉松投票结果的排行榜。
验证排行榜上显示的结果的零知识证明。
作为一个通用框架,MACI可以用于黑客马拉松评委投票和开源社区投票之外的投票用例。然而,令人惊讶的是,在更多投票用例中采用MACI的情况却很少见。更广泛地说,区块链投票本身在现实世界中还没有被采用。
使用区块链改进投票技术的好处显而易见,但为什么现实世界却没有向前发展?即使在区块链社区内,MACI的优势显而易见,为什么去中心化社区不普遍采用MACI?
先进投票技术采用缓慢的一个主要原因并不是需求低,而是使用这种技术的困难。换句话说,我们需要改进技术,为现代投票产品提供更好的UX/UI,并降低用户的使用成本。
用户体验
除了开源社区治理之外,我们还需要构建更多接口供用户使用新的投票技术。DoraHacks为Web3生态系统和黑客马拉松社区提供了目前整个行业最好用的产品来提供资助。尽管DoraHacks.io上的接口本身具有特定的用例,但可以对其进行简化然后泛化,以便为更多用例构建更多接口。
具体的前端策略尚未确定。然而,良好的用户体验对于该技术的采用至关重要,即使是在区块链社区中也是如此——这对于Dora Factory开发者来说很重要。
投票费用
通用区块链应该尽可能去中心化,并为所有类型的应用程序提供单一的基础设施。这些区块链并非旨在针对任何特定类型的应用程序进行优化,尤其是非货币或非金融应用。同时,当存在大量应用程序竞争同一组计算资源时,交易费用会出现波动。成本的不可预测性会给投票带来麻烦。
为此,Dora Factory最近测试了一款名为Vota[17]的新产品。Vota的想法是尝试特殊用途的区块链,并利用它们来不断优化投票技术和用户体验。目前,Vota还处于婴儿阶段。然而,我们可以想象几种不同形式的Vota。
临时智能合约
这是目前在DoraHacks.io上支持投票轮次的方式。每轮投票都作为单独的智能合约部署在特定的区块链上。大部分情况下,以太坊通常无法直接支持大部分的投票场景(这就是为什么Snapshot是以太坊社区默认使用的产品)。目前,Polygon和BNBChain是DoraHacks上大多数资助组织者和黑客马拉松组织者的热门选择。
L1区块链上的临时智能合约,所有投票消息发送到L1。
使用临时智能合约并不完全是坏事。它很灵活,可以根据需要将其部署在任何地方。对于DoraHacks的用户而言,目前效果还不错,但无法同等满足所有投票需求。
L2 Vota
如果我们创建一个专门用于投票的二层基础设施(L2),可以显着降低Gas费成本,并且可能能够在以太坊上实现低成本的投票。L2合约不必全部部署在以太坊上,它们可以更便宜,只需不时地提交L1交易以验证所有L2活动。
我们可以进一步优化这个模型。通用L2必须经常提交到以太坊。Vota每轮只需向以太坊提交一笔交易,即每轮最多只需要一笔交易的Gas费成本。如果多轮在同一时间结束,他们可以共享一笔交易以进一步降低Gas成本,使投票L2更加现实可行。
消息直接发送到L2合约。每轮结束时只有一笔交易被发送到L1区块链。
L3 Vota(适用于L(n)Vota,其中n>=3)
L3 Vota并非完全没有意义。通过已建立的L2,L3 Vota可以进一步将Gas费降低一个数量级。尽管L3交易最终在以太坊上记录和验证,但权衡之处在于要相信所选择的L2。
当然,我们可以进一步将其扩展到L(n) Vota,因为L(2)…L(n-1)将向以太坊(或其他L1)提交交易。但显然信任链会让事情变得复杂。从目前的情况来看,很多著名的L2仍然依赖于单一的排序器(Sequencer);现在谈论L(4)可能还为时过早。
应用链Vota
Dora Factory开发者创建了一个简单的“Hack”,允许CosmWasm合约使用[18]Bellman[19]验证SnarkJS生成的零知识证明。通过将Bellman纳入CosmWasm合约中,任何Cosmos应用链都可以快速支持zk应用程序。
借助运行zk应用程序的能力,独立的区块链可以使用像Tendermint这样的软件架构来构建一条链。这些区块链的共识类似于BFT,或更简单,它们通常可以支持多达100个左右的验证者。通过仔细选择利益不一致的验证者,独立的区块链可以足够安全和中立。
随着DoraHacks欢迎更多Cosmos应用链加入,基于应用链的Vota的一个明显用例是为黑客马拉松结果投票。除了DoraHacks之外,基于Cosmos应用链的Vota的作用远不止黑客马拉松评委投票。
应用链Vota的验证器数量较少,但精心挑选的验证器可以提供可靠的基础设施。
值得注意的是,这些解决方案并不是排他性的。随着Vota的发展,不同的解决方案可能会交叉。例如,如果我们有一个独立的应用链版本的Vota作为主要基础设施,对于需要在特定L1上进行交易验证的用例,应用链可以向L1发送额外的交易。
更好的匿名性
目前正在进行的研究工作旨在使MACI更加去信任。最初的MACI做出了一个重要的信任假设,即管理员不会腐败。这并不具有普遍性。为了改进这一点,有基于MPC的[20]解决方案和基于非MPC的[21]解决方案。目前,DoraHacks已经构建了一个基于ElGamal可重随机化加密的匿名MACI版本,该加密最初由Kobe Guikan提出。[22]它已在DoraHacks.io上的小型ETH研究资助轮[23]中进行了测试。
目前,在MACI本身被广泛采用之前推动匿名MACI的采用可能有点过早。然而,继续研究以减少一般投票机制的信任假设也很重要。
通过添加允许用户停用和更改其秘密密钥的操作来为MACI添加匿名性,而管理员无法知道谁添加了哪个新密钥。
GAS支付
重要的是不要假设用户拥有加密货币。如果每个用户每笔交易都需要支付Gas费,那么区块链的用户将仅限于一小部分人。为了解决这个问题,MACI运营商可以预先存入一笔可退还的代币并支付用户的费用。该机制可以通过加油站来实现。
加油站本身是一个驻留在Vota上的智能合约。在每轮开始之前,操作者可以选择使用它,也可以不使用它。通过使用加油站,运营商将DORA预先存入智能合约中,并且可以通过加油站支付与特定回合相关的交易费用。
最有可能的是,Vota会部署一个默认的加油站,人们可以按需部署自己的具有不同支付逻辑的加油站。
Gas支付合约是每轮投票的Gas余额的账本。
结论
特殊用途的区块链可能适用于广泛的特定应用用例,尤其是非金融用例。投票是区块链和零知识密码学可以帮助显着改善的最重要问题之一。提高投票透明度和效率可以减少人类社会和区块链社区内部的治理摩擦,从长远来看可以提高生产力。像MACI这样的协议为区块链上的投票应用程序创建了简洁的框架,但投票技术还需要做很多工作来改进。具体来说,我们需要一个用户友好的基础设施作为基础来长期改进投票技术,本文详细介绍了未来的工作。
参考
Kleroterion:https://en.wikipedia.org/wiki/Kleroterion
投票技术悠久的历史:https://electionlab.mit.edu/research/voting-technology
英国2019年"脱欧"大选:https://en.wikipedia.org/wiki/2019_United_Kingdom_general_election
电子投票机:https://en.wikipedia.org/wiki/Dominion_Voting_Systems
选举结果争议:https://www.reuters.com/legal/dominions-defamation-case-against-fox-poised-trial-after-delay-2023-04-18
确认和审核投票结果的成本可能极其高昂:https://azsos.gov/elections/voters/voting-elections/ballot-processing/2022-general-elections-recount-information
Snapshot代币投票:https://snapshot.org/
Cosmos治理提案投票:https://www.mintscan.io/cosmos/proposals
KlaytnSquare:https://square.klaytn.foundation/GC
KlaytnSquare的一项提案:https://square.klaytn.foundation/Proposal/Detail?id=4
财政支出计划:https://govforum.klaytn.foundation/c/proposal/5
二次方投票:https://en.wikipedia.org/wiki/Quadratic_voting
二次方融资:https://research.dorahacks.io/2022/07/11/quadratic-governance
零知识证明: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/
一个简单的“黑客”,允许CosmWasm合约使用:https://github.com/DoraFactory/snarkjs-bellman-adapter/tree/main/prove
Bellman:https://github.com/zkcrypto/bellman
基于MPC的解决方案:https://research.dorahacks.io/2023/03/30/mpc-maci-anonymization
非基于MPC的解决方案:https://ethresear.ch/t/maci-anonymization-using-rerandomizable-encryption/7054
匿名MACI版本,由KobeGuikan提出:https://github.com/dorahacksglobal/anonymous-maci
ETH研究资助轮:https://dorahacks.io/grant/ethre3/maci