译者按:原文作者包括康奈尔大学博士生Phil Daian,IC3组织研究工程师Tyler Kell,康奈尔科技学院博士后Ian Miers以及康奈尔科技学院教授、IC3联合主任Ari Juels。
在这篇文章当中,这些学者提出了各类针对区块链链上投票的贿选攻击方式,以提醒用户链上投票所存在的问题。
原文标题为:链上投票贿选和崛起的Dark DAO(On-Chain Vote Buying and the Rise of Dark DAOs),有兴趣的读者可以阅读原文。
区块链对在线投票这一应用而言,似乎是一种完美的技术,它们可以充当“电子公告系统”(这也是过去几十年电子投票研究中一直被假设(但从未真正实现)的全球账本)。更妙的是,区块链还使智能合约成为了可能,而后者可以自动地执行链上的选举活动,并且可废除当选者。
不幸的是,智能合约不仅仅有利于竞选,它也有利于贿选这一令人头痛的问题。
在这篇文章当中,我们将解释如何实现区块链贿选以及其背后的原因。作为一个例子,我们将针对流行的链上投票系统CarbonVote 提出一个完全可实施的、简单的贿选攻击。我们还将讨论可信硬件如何能够实现更强大的贿选技术,即使给定的是最先进的密码投票协议,这些技术似乎也是无法解决这一贿选问题。
最后,我们会介绍一种新的攻击形式,我们称之为Dark DAO,请不要把Dark DAO的概念和The DAO的概念相混淆。所谓的Dark DAO是一种去中心化、不透明(在黑暗中)的进行链上投票贿选的卡特尔 (cartel)组织。我们提出了一个基于英特尔SGX的具体实施方案。
在这样的攻击中,可能没有人(甚至连这个DAO的创建者)能确定DAO的参与者数量、承诺用于攻击的资金总额或攻击的精确逻辑:例如,这个Dark DAO可以攻击像Tezos这样的密码货币,先秘密收集币然后达到隐藏的阈值后,告诉其成员做空这个密码货币。这样的一个Dark DAO,还具有通过发送(例如可否认的做空通知)来加强信息不对称的独特能力:在这个卡特尔组织内部的成员,能够验证这个做空信号,但他们自己可以生成看似真实的虚假信号,并将它们发送给外部人员。
信任最小化投票贿选以及Dark DAO的存在,意味着所有在线投票的用户容易受到财阀及强制势力的束缚、操纵和控制。这就意味着,所有的链上投票方案,其中用户可在可信环境之外生成他们自己的私钥 ,将天性地退化为财阀统治,这种范式被认为是远远劣于民主模式的。
我们所有的方案和攻击都不受身份控制的影响,它们可以允许用户自由进行买卖行为。这意味着,依赖用户生成的绑定到用户身份的密钥方案(例如 uPort或Circles),本质上也容易受到财阀的操控。如果有利可图的话,我们的方案还可用于攻击权益证明或工作量证明区块链,这给所有区块链带来了安全隐患。
今天的区块链投票
区块链投票方案如今比比皆是,例如 Votem,这种端到端的可验证投票方案,允许用户使用移动设备进行投票,并利用区块链作为安全发布及统计选举结果的地方。Remix,这个流行的智能合约IDE,提供了一个选举管理智能合约(作为其练习实例)。更多的例子可以在这里 (1)这里 (2)以及这里(3)找到。
链上投票方案面临着很多挑战,包括隐私、延迟以及扩展性问题。当然,这些并不是投票应用所独有的挑战,所有的一切最终都是可以克服的。但在投票问题中,贿选就是另一个大问题了。
在政治体制中,投票贿选是一种普遍存在,且具腐蚀性的选举欺诈,世界各地都存在破坏选举诚信的实质性历史。有时,投票的代价只是一杯啤酒。值得庆幸的是,正如学者们所观察到的,正常的市场机制通常会击穿贿选计划。原因有三。首先,贿选在大多数情况下属于犯罪行为。在美国,联邦法律是可以对贿选人进行处罚的。其次,在使用秘密投票的情况下,遵守规则是很难做到的。选民可以简单地喝你的啤酒,然后秘密地投她喜欢的选票。第三,即使选民出售了他们的选票,也无法保证对方会为其支付贿选金。
而在区块链系统中,是不会出现这样的问题的。贿选市场可通过使用强大的选举管理工具(智能合约),来实现高效且有效的运行。而半匿名性及管辖难问题,对于控诉而言无异于提供了一些遮掩。
总的来说,电子投票方案在某些方面比亲自投票更难防止欺诈,这也是多年来一直受学术届关注的问题。其中,大卫·乔姆(David Chaum)在很早的时候就提出了一个基石,其为消息提供了匿名混合网络,这些消息可以由参与者通过包含的收据匿名发送。这种端到端的可验证投票系统,用户可以在不牺牲隐私的情况下,检查他们的选票是否被正确计数,这不仅仅是理论家的领域,而是实际用于选举的约束性方案。
再后来,贝纳洛(Benaloh)和托因斯特拉(Tuinstra)的工作,对电子投票方案提出了异议,其指出他们为选民提供了一种“收据”,该收据提供了加密证据,可证明某一次投票是以何种方式进行的。而这会导致非常有效的贿选和强制的发生,显然这不是什么好特性。作者定义了一种新的属性(收据自由),来描述投票方案,在这种方案中,如果没有这样的密码证明是可能的。后来,尤尔斯(Juels)、卡塔拉诺(Catalano)和雅格布森(Jakobsson)进一步的研究工作,模拟了更强大的强制敌方(coercive adversarie),该研究表明即使是无收据的方案,也不足以防止强制性和投票贿选。这项工作为投票方案定义了一个新的安全定义,称为“强制抵抗”,其提供了一种协议,其中没有任何恶意方能够成功胁迫用户,以改变选举结果。
尤尔斯(Juels)等人在他们的工作中指出,“我们的研究,其安全性依赖于密钥对的生成..它由可信第三方或替代的安全密钥生成协议(例如between the players)所生成”。关于强制抵抗投票方案,“可信的密钥生成”、“可信第三方”或“可信设置” 被假设是学术文献中的标准。不幸的是,这些要求不能转到无需许可模型(permissionless model)当中,在这种模型中,节点可以在任何时间来回移动,而不需要事先了解彼此。这意味着“某种程度上”,用户在所有这样的系统中可以生成自己的密钥,并且无需去利用可信多方密钥生成或任何中心化的密钥服务仲裁器。
如今,在区块链这一行业,(可预测到的是)很多人继续忽视了人类几十年的研究结果,而选择实施最天真的投票形式:以利于富豪的方式,直接计算币加权投票,然后把投票文本存储到链上。不幸的是,目前还不清楚这样的财阀统治,是否会在链上实现。我们要展示的是,无需许可模型对于投票而言是根本上敌对的。尽管市场上存在很多身份或基于第二层的缓解尝试,所有无需许可的投票系统(或者允许用户在非置信环境中生成自己密钥的方案),都容易受到相同类型的贿选和强制攻击。很多贿选攻击也可通过“武力“胁迫用户进行特定的投票选择。
这是一个很好的区块链链上投票方案,你在那里投票…
值得注意的是,Vitalik Buterin在这类协议的贿选攻击问题中也进行了部分探索,但他并没有提供具体的机制。在这里,我们描述了用于投票、身份购买、强制以及高级别协调的无摩擦机制,然后我们会讨论这些特定机制的含义。
链上投票攻击
考虑一个非常简单的投票方案:一种token的持有者,他每持有一个token,那他就拥有一张选票,并且他可以不断地更改自己的投票,直到某个截止区块到来。我们将使用一个简单的“EZVote”方案,来展示我们的攻击可应用于任何链上投票机制。
这种方案有几种可能的升级攻击方式。
简单的智能合约
针对链上投票系统最为简单的低协调攻击,涉及了贿选智能合约( vote buying smart contracts)。这种智能合约只需付钱给符合规则的投票用户(或者参与投票,或者如果投票是不匿名的,就选弃权)。在EZVote当中,智能合约可以是一个简单的合约,它负责保存你的ERC20 token(到达结束日期时释放),然后投yes选项,然后再将token返还给你。合约中所有的保证,都可以通过底层区块链强制实施。
这种方案的优点在于,它只需要底层系统中已固有的信任假设,但它也具有很大的缺点。一方面,在选举结束后,它有可能公开宣布购买了多少选票,因为在如今的智能合同系统中,这是处理支付流程所必需的。此外,对于有兴趣维护底层平台/系统健康的各方而言,他们可以审查出贿选的情况。
根据投票方案的性质和底层协议,这些缺点可能会有一些解决方案。例如,选民可以为买票人提供一个环形签名,用于证明他们在投赞成票的名单当中,这样就可以换取到贿选金。我们暂且不谈其实现细节。
总到来说,任何用于私有智能合约的机制,也可以用于私有投票贿选,以解决基于公共智能合约的攻击问题;在密码学上,等同于买家和卖家之间通过MPC(多方计算-Multiparty Computation)生成用于资金存储的密钥,然后签署两笔交易:一笔是投赞成票,一笔是在投票间隔结束后将资金释放给投票卖家。投票卖家只有在拥有保证退款和支付的交易后,才能把资金转移到这个密钥上。
这将类似于以前有关分布式证书生成的工作,其添加了安全分析,以确保公平性。如果不慎地使用这种方案,会在投票的过程中,造成妨碍用户资金的问题,使其无法用于其他用途(这种行为是可能的,但需要投票买方的合作,或者,可以使用可信/有担保的代管方)。
可信硬件与贿选
一个更为重要的贿选攻击方案,涉及到使用可信硬件,例如英特尔SGX。这种硬件有一个称为远程认证的关键特性。基本上,如果艾丽丝(Alice)和鲍勃(Bob)在互联网上通信,SGX实现的可信计算,可允许Alice向Bob证明:她正在运行某段代码。
可信硬件通常被视为一种你所运行的代码不是恶意的方法证明:例如,其在DRM中的应用,可用于证明用户不会复制仅临时授权给他们的文件(比如电影)。相反,我们可以使用可信硬件,通过支付或强迫的方式来束缚密码货币用户,让他们使用基于可信硬件的密码货币钱包,可证明地限制他们的运行行为(例如,强迫他们不要在选举中以某种方式投票)或者允许投票购买者实现信任最小化,但有限制地使用用户的密钥(例如,一名选票买家可强迫用户签名‘我给A投票’,但不能窃取或花费用户的钱)。
部署投票贿选最为简单的方式,是允许用户证明,他们正运行来自投票买家的恶意钱包代码,以换取贿选金,并利用远程认证技术确保双方的安全。
在我们的“EZVote”示例当中,用户只需要使用加载在英特尔SGX设备上的密码货币钱包,并运行投票买家的程序。 SGX能够向用户保证,钱包永远都不会窃取用户的资金(除非英特尔和投票买家勾结在一起)。对于用户而言,使用这一钱包和其他正常的以太坊钱包没有什么不同,他们可以转移自己的资金(虽然在这种情况下,投票买家不会支付贿选金)。用户可以运行自己的钱包,不需要信任第三方控制他们的资金安全。用户甚至不需要信任英特尔或可信硬件提供商,因为他们可以编译自己的钱包!
当预定义触发器的条件触发时,这种SGX程序将自动按照选票购买者的命令在EZVote上进行自动投票,并向投票买家发送收据。投票购买者本身也会运行一个SGX enclave,用于维护所有投赞成票的用户 ,以及他们的地址列表。鉴于SGX的信任,投票买方不需要看到成员用户的完整列表或总质押金额。在投票结束时,投票买家的SGX enclave将给那些没有转移资金或更改投票的用户支付贿选金。这个过程,可以由enclave定期地发布默克尔根(Merkle root)汇总链上的已支付用户来完成,并向每个最终得到贿选金的用户提供支付证明。在一些特别易受攻击的投票设计中,SGX enclave 可以通过简单地积累“赞成”票来提高其效率,并在投票结束时为他们提供报酬以及相应的公示。
隐藏的可信硬件卡特尔(Dark DAO)
而当可信硬件组合成DAO网络时,就会出现更令人担忧的攻击问题,从而产生一个以操纵密码货币投票为中心的无信任组织。
一个基本的 Dark DAO例子
上图概括了一个可能的体系结构。投票买家会通过运行SGX enclave网络(本身执行一个共识协议,这里显示为暗云,表明其从外部是不可见的)来支持这个DAO。用户将与这个 enclave网络进行通信,并提供他们正在进行投票贿选的证明。例如,当前余额为X币的以太坊钱包。这个“邪恶的钱包”证明运行了投票买家所提供的攻击代码,而投票买家则证明他们正在运行保证攻击结束后会给用户支付贿选金的代码(可能会结合一个基于智能合约的协议,使得这一交易更诚实地执行。)
投票买家可以跟踪有多少资金通过该系统进行了投票,并使用SGX内置的隐私特性,向外界隐藏这一事实。用户可以获得可证明的支付金,从而有动力参与这样的系统。而投票买家,可以得到一个可证明的保证,即客户永远不会进行与他们期望的投票政策相抵触的投票。
而使这个DAO组织变得黑暗的原因是,投票购买者不需要向任何人(甚至他们自己)透露有多少用户正在参与该系统。系统只需要简单地累积用户,为运行攻击者自定义钱包软件的用户支付贿选金,直到达到激活攻击的阈值。通过这种方式,失败的尝试需要不可探测性。更令人沮丧的是,任何小用户的个人激励,会明确指向加入该系统。如果小用户相信他们的投票无关紧要,他们很可能会选择接受回报,而不会去察觉边际下跌。这对于链上投票而言尤其危险,根据观察,这些投票系统的投票率都非常低。而那些不投票的用户,可能是非常理想的贿选目标。
而Dark DAO还可以通过发起诽谤运动等,进一步搞乱局面。比如,在爱丽丝(Alice)的支持下,鲍勃(Bob)可以运行一个 Dark DAO,以取消他的投票,因为他认为可能会失败。激活阈值、支付时间表、完全攻击策略、系统中的用户数量,等等都可以选择保密或者公开,这使得这种DAO最终可针对结构性激励变化进行调整。
由于这一组织实际是存在于链外的,所以并不存在区块生产者或其他系统参与者的卡特尔可以进行检测、审查,或者去阻止这种攻击。
这样的黑暗组织有几个直接的现实缺陷。首要的问题是,它需要在英特尔SGX上使用,所以其需要得到英特尔授予许可,这对于恶意软件来说不太可能发生。此外,发生在英特尔SGX身上的侧通道,隐藏软件后门或平台攻击,还是对这个Dark DAO钱包的审计,都可能会削弱该方案。尽管随着可信硬件的不断发展,此类攻击的成本极有可能大幅增加。最后,我们可预见到,其他可信硬件可以提供英特尔SGX的远程认证能力,这意味着此类攻击将不再需要SGX,这就是为什么我们要用可信硬件这个词,而不是直接使用“SGX”。例如,在一些安卓安全处理器上,远程认证是可以实现的。我们的方案,可应用于任何允许机密数据与远程证明的硬件设备。
针对经典方案CarbonVote & EIP999的攻击
为了证明这些投票贿选策略的有效性,我们首先看一下现有密码货币系统中执行的 coinvotes。也许最重要的此类投票就是 DAO CarbonVote。这次投票的操作很简单:把资金投入到一个地址,就代表该账户投了赞成票,而投到另一个地址,就表示反对票。每一个地址都是一个合约,并纪录给定地址的投票。CarbonVote前端会统计投票结果,并显示所有赞成和/或否定投票的账户净余额,而同一地址后发送的投票,会取代其先前的投票,这种机制允许用户更改主意。在投票结束后,系统会对赞成票进行快照,并用来衡量社区的情绪。这种投票方式正被用于其他有争议的生态系统问题,包括EIP-186 。
在此框架中,一种可能的最小化信任投票贿选智能合约,涉及了托管的使用,用户将以太币发送到一个保管这些以太币的ERC20 token合约,投票结束后自动返还。对于用户而言,他们每存入一个以太币,就会接收到1个 投票币。
在达到阈值时,这个预先设定的合约会投赞成票。当投票结束后,每一个投票币都可以完全退成原来的以太币。用户收回了他们原来的以太币,还可以收到投票买家为这次服务支付的贿选金。
我们已经实施了这类合约的一个完整的、开源的概念证明,它可以使任何投票购买者为合约的贿赂池(BRIBEPOOL)提供资金。用户在合约中临时锁定他们的以太币,可以从这个贿选池中得到贿选金,并在目标投票结束后收回其100%的以太币资金。实施一次攻击,贿选池就会提前给投票出售者支付贿选金(一旦他们锁定了币,投票就会得到保证)。
the DAO Carbonvote 投票贿选智能合约代码
用户也可以在锁定他们的以太币后出售他们的投票币,这实质上使得投票币成为了一种投票贿选的通证化衍生品。因为每一个ERC20 token在程序上,最终会接收到原有的以太币,这基本上创建了一个单向的漏斗,从基础资产变成了预定义用于投票的衍生资产。如果保证非负回报,并基本上可以选择之后抛售给其他类似不感兴趣的买家,那对投票结果不感兴趣的买家,应该总是会锁定他们的以太币。
此外,这个智能合约还可以通过使用诸如Town Crier(也可以组合多个oracle、预测市场等)来进行简化。因为 CarbonVote系统会在Etherscan上发布包括完整选民日志在内的结果,所以检查某人是否通过外部的工具进行的投票就很简单了,如果他们的投票在最终快照当中,并且符合投票购买者的偏好,则向他们支付贿选金。
像Dark DAO这样的模型也可以简单地被应用。 每个用户只需要运行一个钱包,每次交易转移后的某个时间,其也是在CarbonVote上(事实上,这可能成为很多钱包的标准行为)按期望的方式进行投票的。只有当此类投票注册过时,用户才会得到贿选金,因此这会鼓励用户确保自己的投票交易已纳入区块链。目前没有办法告诉你CarbonVote中有多少选票是通过这样的投票贿选卡特尔产生的,也没办法分辨多少投票是“合法”的。
这些方案中的任何一个,都具有在多个投票买主汇集资金时,最小化信任问题的能力;贿选智能合约可以简单地允许任何人向贿选池支付资金,而SGX网络,则可类似地开放构建。
而其他一些投票方案,例如EIP999,甚至存在更为严重的问题。在这些方案中,如果用户投票两次,就会选择后面的投票。而简单而猛烈的攻击方案,就是简单地从用户那里收集“是”和“否”的投票签名,在投票期结束前发送大量所选的签名,并依靠压垮区块链的能力,确保多数这样的投票能够继续存在。或者,因为合约部署人员能够为给定合约中的所有资金投票,所以另一种攻击,就是简单地强制用户在投票期间使用投票购买者部署的合约钱包,然后这些投票购买者就可以肆意地控制锁定在合约中的所有投票,而无视这些资金的托管。
比特币也不能解决这个问题。比特币社区通常依靠投币投票,类似的贿选计划也可以应用(就像本文中所述的以太坊智能合约,或者采用Dark DAO的方式,比特币本身并没有为投票贿选提供足够丰富的合约支持。)
攻击目标转到共识机制
精明的读者可能会指出,所有无需许可的区块链,本质上依赖于某种形式的无需许可投票,即共识算法本身。每当一个区块链就某些属性达成全球共识时,所发生的事情实质上就是无需许可(通常是币或PoW加权)投票。
在这种情况下,“贿选”可能会有一些探索,这并不奇怪。例如,以太坊上的智能合约,可通过审查、历史修订或鼓励空白区块
来攻击以太坊和其他区块链。这种攻击直接作用于工作量证明本身,根据他们的加权工作对矿工进行贿赂。目前没有理由能够证明pos系统能够免于类似的攻击,特别是在复杂的委托投票结构的情况下,这种结构的激励可能并不清楚,其形式分析可能并不完整或不存在。
关于贿选问题,与我们探索的Dark DAO类似的概念,我们称之为“Fishy DAO”,我们以经典的Flash游戏命名的它。在这个(超级好玩!)的游戏中,你最初会是一条小鱼。规则非常简单,你可以吃掉较小的竞争鱼类,但不能吃大小等同于或大于你的鱼类。你每吃一条小鱼,你就会变大一点,直到你最终(如果你幸运的话)成长为海洋主宰。而摆在我们面前的,不需要Flash和网络添加操作的一个游戏,就是 agar.io 。
它就像Fishy游戏一样,但这里的小鱼也可以和更大的鱼成群结队!
Fishy DAO可使用上述Dark DAO所使用的技术,并对区块链进行攻击。使用SGX之后,当攻击阈值达到时,Fishy DAO成员可接收不可转让的通知(DAO成员可以验证消息的真实性,但非成员不能辨别消息是否是伪造的),这允许他们在发动这种攻击前可以在短期内做空这个密码货币市场。每一次区块链Fishy DAO攻击,会对这个Fishy DAO带来一些好处。如果Fishy DAO未能到达要求的阈值,它就会逐渐消失,并把资金退还给参与者,当然,为了鼓励参与者招募更多的参与者,这个 Fishy DAO可能会燃烧一部分资金(如果未能达到阈值的话)。
Fishy DAO需要Dark DAO的技术,就和在开放市场中以智能合约执行一样,可观察的参与率,将为潜在的区块链token价格提供市场信号,而通过允许风险定价的方式,可使攻击变得无利可图。
而DAO成员与更广泛的生态系统参与者之间的信息不对称性,使得这种攻击是可行的。
其他应用
请注意,Dark DAO的影响远远超出上述。例如,一个以盈利为目的Dark DAO,购买了用户的基本收入身份,预付少量费用以获得用户定期的基本收入支付。或者运行一个邪恶矿池的Dark DAO,利用无法觉察且不可阻挡的攻击池,来攻击基于ASIC的pow密码货币。
人们也可以想象,在身份系统当中,身份制度本身可能也会存在针对购买行为的社会保障。例如,一些身份系统可以允许用户亲自撤销或管理身份,这可以有效防止身份盗窃。还有一些方法:贷款的经典解决方案是抵押贷款。有可能,像企业这样的“担保人”也可以通过物理/法律恐吓及合约,为无力承担抵押的用户,提供还款的社会保障。如果这种无需许可的基本收入体系与现行市场体系部署在一起,那么发薪日贷款和保释债券机构将非常适合这类业务,至少在美国是这样的(在其他地方,可能不会有机构这样做)。
区块链中的机制协调空间是很大的,并且其环境是敌对的。所有基于身份的投票或财务激励,都应非常小心地考虑底层无需许可模型潜在的生存性、可扩展性和安全性影响。
核心深入见解
也许你是一位略读这篇文章的学者,或者是一位想知道这些到底意味着什么的用户。从上面的思想实验中,我们可以发现一些有趣且令人惊讶的见解:
- 无需许可的电子投票*需要*可信硬件。也许最令人惊讶的结果就是这个了。在用户能够生成自己密钥的任何模型中,使用上述的可信硬件,低协调的贿赂攻击本质上是可能的。对此的唯一防御,就是使用更多的可信硬件:知道用户能够访问他们自己的密钥材料(因此不能被强迫或贿赂),这需要一些保证,用户已经看到他们的密钥。可信硬件,可以通过可信 硬件token设置通道(类似于政府使用电子投票促进民主)或通过基于SGX的系统(其保证任何选民已经将他们的关键资产透露给他们正运行的任何操作系统)来实现这一点。这固有地实施了多年以来一直使用的可信设置/生成假设的假设学术电子投票方案。显然,在存在可信硬件的情况下,任何投票都需要这样的假设,在没有这种假设的情况下,投票可以被证明是低摩擦的买入/卖出/贿赂/胁迫选票,这是一个令人惊讶的结果,对于链上投票而言具有严重影响。
- 投票和协调机制的空间是巨大的,并且理解它的人非常少。正如上述通过如何处理以太坊智能合约投票和投票更改的具体实例,很显然,广泛的设计决策从根本上改变了投票机制的激励结构(我们会在下文附录A中探讨这些)。这些机制极其复杂,并且可以通过其他协调机制(如智能合约和基于DAO的可信硬件)来改变它们的激励结构。这些机制的特性,特别是当多个这样的机制交互作用或被资源丰富的参与者主动攻击时,能够理解它们的人就更稀少了。任何此类机制都不应直接用于链上投票。
- 同一类别的贿选攻击对任何身份系统都有效。这些攻击不仅仅是为了投票。想象一下一个身份系统,它给用户一个基本收入的权利,其每周会支付一次。我可以先付现金,预先付款购买你的身份,从而得到下一年的收入份额,如果我的资金时值(time value of money)低于你的价值,那我确实应该这样做(往往意味着财富不对称)。对于涉及身份的任何系统,都会遇到这种情况:在相对较低的信任下,可以约束用户身份的行为,这样的限制可以在公开市场上进行买卖。而这对于任何拥有无需许可身份组件的链上经纪机制的健壮性而言,都会有严重和根本的影响。
- 链上投票从根本上会沦为财阀政治。投票和民主在根本上只依赖于无记名的投票假设,和仅存在于现实世界中的身份基础设施。而这些假设并没有传递到区块链上,使得相同的技术在一个无需许可的模型中基本无效。只要用户可以自己生成自己的密钥(见上文),外部的、甚至可信的身份系统也无法解决这个问题。
- 而硬分叉的治理可以为用户提供唯一的出路。上面提到的一个自然问题是,我们是否已经到达了财阀阶层。答案可能是“没有”,有一些证据表明,诸如比特币和以太坊这类区块链的自组织、非正式、基于分叉的治理模型,实际上提供了健壮的用户权限保护。在这个模型中,任何升级都必须为用户提供主动选择,并且如果用户组不同意规则更改,则用户可选择退出。另一方面,链上投票会产生一种自然默认的状态,尤其是疏忽或漠不关心的用户结合在一起时,这就会出现强大的反对分叉的惯性。
- 多链之间相互作用可以打破所有链的奖励性协调。重要且关键的是,我们探索过的Fishy DAO式攻击表明,多个竞争链有能力从根本上影响所有这些链的内部平衡。例如,当世界上只有一个智能合约系统 ——以太坊时,内部激励可能导致稳定的均衡。当出现第二个竞争者时,处于劣势的竞争者会发起贿赂攻击以摧毁他们的竞争对手,这种平衡可以被改变和破坏。一个关键的,并且令人惊讶的未开发研究领域,是区块链与区块链之间竞争的宏观经济学模型。我们直观地发现,某些关键的黑天鹅事件,目前正潜伏在复杂的区块链治理和互操作当中。
显然,这些都需要进一步的探索、调整和证明。但我认为,我们至少提供了一些线索,为什么我们会相信上述的原则分析框架。
结论
区块链链上投票的趋势,是由长期的人类投票和民主传统所启发的。不幸的是,在现实世界中我们可得到的保障措施,如强制私人/可否认投票,近似的身份控制,以及普遍欺诈行为的可归责,在无需许可的模型下是不可用的。当使用用户自己生成的公钥时,链上投票不能保证这些用户具有任何反强制保证。而所谓精心设计的投票方案,对解决这一问题并没有多大作用(在很多情况下会加剧问题)。链上投票机制进一步使激励机制复杂化,造成不稳定和混乱的激励机制,而这些机制随时可能被无需信任的智能合约或Dark DAO式的投票贿选计划所影响。
我们鼓励大家对任何链上投票的结果高度怀疑,特别是链上投票已成为供应链系统中决策制定的一个非常重要的组成部分。行业在设计此类投票系统时,应当将其用作信号,而不是决策,并且各种各样的投票机制也应当充当这样的角色。而没有这些保障,所有投票系统仍然有可能通过直接投票、投票贿选甚至投票通证化而退化为富豪政治游戏。
这样的攻击,对于所有基于区块链的投票系统而言,都具有重大的安全影响。
致谢
我们要感谢Patrick McCorry提供的帮助,在这篇文章的整个生命周期当中,他提供了全面的反馈及帮助,同时感谢他在投票贿选和链上投票系统方面进行的开拓性工作。
我们也感谢Omer Shlomovits和István András Seres对这篇论文早期版本的有益评论。
附录A——链上投票的不同因素
我们注意到,链上投票系统中的几个不同的因素:
- 投票改变能力:如果用户不能改变他们的投票,任何提供密码检查收据的方法,都可用于进行小规模的投票贿选。一个智能合约可以简单地在用户投票前贿赂他们。然而,大多数方案允许用户改变或撤回他们的选票,这意味着贿赂需要一些连续的时间分量(或者在投票结束后做)。.
- 智能合约/委托投票:谁负责为智能合约存储的资金投票?这是一个困扰现有设计的未决问题。原来的CarbonVote设置,允许任何合约调用一个函数进行投票,后来它更改了规则。EIP999投票方案允许合约部署人代表合约进行投票,这被广泛批评是影响选举结果的决定。然而,这两种设计都不是理想的。的确,从直觉上看,单一设计似乎很难公平地捕获智能合约中的所有托管细微差别:持有资金的智能合约,可以从简单的多重签名帐户,到复杂的具有自己收入流和合约间财务关系的去中心化组织。这些token当中,有哪些拥有投票权,以及如何公平地分配这些权利,这对建立一个公平的链上投票系统而言,仍然是一个完全未被探索的哲学要求。而强制合约作者提供显式功能也可能是不够的,这是因为这种功能的需求,在未来可以改变而无需向后兼容。(通过区块链投票或分叉)。
- 可否认性/可证明性:本文中所探讨的所有方案,都具有特别适用于投票贿选的特征:它们向选民提供了某种形式的信任最小化密码证明,即便是通过链上日志、安全网络接口或智能合约状态。这样的方案特别容易用于投票贿选,因为这易于智能合约逻辑来验证选票。学术文献中的一些传统电子投票方案,提供了一种称为强制抵抗的属性。在这些方案中,用户在遭遇强制的情况下,能够使用他们投票的密钥,以改变他们的想法,并且投票不能归因于单个用户。总的来说,拥有与任何长期身份相关的选票,尤其是那些持币的人,其隐私问题会非常严重。这样的担忧,将完全取消现实世界中任何严肃的投票系统的资格,并且应在所有深思熟虑的链上投票设计准则中被取消资格。