Eric Zhang
Architect @DoraFactory @DoraHacks
DAOrayaki 是一个去中心化的研究者组织和去中心化媒体,通过 DAO的形式去中心化地资助世界各地的研究者进行研究、翻译、分析等工作。DAOrayaki 由早期的 DAO 组织 DAOONE 核心成员发起,得到了Dora Factory基础设施的支持。欢迎通过文末方式提交DAO的研究,瓜分10000USDC赏金池!了解去中心化自治组织(DAO),探讨最新治理话题,关注DAO的发展趋势,欢迎加入DAOrayaki社区!

关于这篇文章的背景,请参考《二次方投票和二次方资助》(https://matataki.io/p/6113 )。在这篇文章发布后的一个月,BSC基金会在DoraHacks开发者平台HackerLink上运行了BSC生态第一轮二次方资助(https://hackerlink.io/grant ),并在其后的15天中收到了全球超过60个开发者团队提交的项目。
在《二次方投票和二次方资助》中,我介绍了Vitalik的博客《Quadratic Payments》所提到的三个问题:身份伪造攻击(Identity Bribery)、勾结(Collusion)、理性忽视问题(Rational Ignorance)。这三个问题其实不限于二次方投票,而是链上治理机制所遇到的通用问题。因此,这些问题的解决方案不仅可以使得二次方投票更规模化和更安全,还可以惠及更多链上治理的机制。
这篇文章的目标是为设计一种“非合作二次方投票”,或“抗勾结二次方投票”的机制做准备。在这种场景下,投票者无法相互之间合作,因此就没有了勾结的可能性。这种机制一个基础框架是,Vitalik Buterin在Ethresear上发表的文章《Minimal anti-collusion infrastructure》[1] (MACI)。因此,我们先解释MACI的机制,从而为进一步探讨如何使用MACI改进二次方投票,消除勾结(Collusion)的可能性。
MACI: Minimal Anti-Collusion Infrastructure
MACI是“最小化抗勾结框架”。背景材料参考Vitalik Buterin 的博客https://ethresear.ch/t/minimal-anti-collusion-infrastructure/5413 ,以及《On Collusion》 https://vitalik.ca/general/2019/04/03/collusion.html
很多的链上治理应用需要“抗勾结”这个特性,但同时又需要区块链对交易执行以及抗审查、保护隐私的保证。投票是有这种需求的一个重要场景,因为很明显在投票中,抗勾结是必须的,同时对执行结果的正确性的要求是很高的,需要保护计票过程,最后,还需要防止对投票者的审查。
设置
假设有一个智能合约\(R\),包含一个公钥的列表 \(K_1 ... K_n\), 以及一些必要的函数,可以把这些公钥注册到智能合约中。另外,只有符合以下两个条件验证身份的参与者的公钥可以进入到R中:
账户属于一个“合法”的参与者(一个独立的人,某个社区的成员,比如拥有某个国家的国籍、在一个论坛上有足够高的声誉、持有不少于某个数量的Token…)
账户持有人个人控制密钥(例如,如果需要的话,可以打印出来以证明)
每一个用户需要stake一笔钱: 如果任何人泄漏了自己的私钥,那么得到私钥的人可以直接取走这笔钱,从而这个账户就会从列表中被移除。这个机制抑制了任何人把私钥交给别人。
另外,假设有一个操作员(\(operator\)),他有一个私钥\(k_\omega\), 和一个对应的公钥\(K_\omega\).
最后,假设有一个机制 \(M\), 它是一个函数 \(action^n \rightarrow Outputs\), 其中,函数的输入是\(n\)个参与者的行为,输出是这个函数定义的某种输出结果。例如,一个简单的投票机制是一个函数,根据输入的值,输出出现次数最多的那个值。
执行
在起始时间\(T_{start}\),\(operator\)开始一个其实状态\(S_{start} = {i: (key=K_i, action = \phi)}, i \in 1...n\).
在起始时间\(T_{start}\)和结束时间\(T_{end}\)之间,任何注册的参与者可以向R发送消息,消息用参与者自己的私钥\(k\)加密。有两种消息:
约定行为: 例如投票。参与者需要发送加密过的消息 \(enc(msg = (i, sign(msg = action, key = k_i)), pubkey = K_\omega)\), 其中\(k_i\)是这个参与者当前的私钥,\(i\)是参与者在\(R\)中的id
更新密钥: 参与者需要发送加密过的消息\(enc(msg = (i, sign(msg = NewK_i, key = k_i)), pubkey = K_\omega)\), 其中\(NewK_i\)是参与者要变更的公钥, \(k_i\)是这个参与者当前的私钥
这时,操作员的工作是按照消息上链的先后顺序处理每一个消息。具体的处理过程:
使用操作员私钥解密消息。如果解密失败,或者解密对应的信息无法解码成为以上的两类信息,则直接跳过这条信息
使用\(state[i].key\)验证消息的签名
如果解码后的消息是约定的行为(\(action\)),那么设置\(state[i] = action\), 如果解码后的消息是一个新的公钥,那么设置\(state[i].key = NewK_i\)
在\(T_{end}\)之后,操作员必须公布输出状态 \(M(state[1].action, ... , state[n].action)\), 同时给出一个ZK-SNARK,证明这个输出是正确的结果。
为什么这个机制是抗勾结的
假设一个参与者想要证明他做过什么,例如做过\(action\) \(A\),他可以引用一个链上的交易\(enc(msg = (i, sign(msg = A, key = k_i)), pubkey = K_\omega)\),并且提供一个零知识证明,验证这笔交易的确是包含\(A\)的加密信息。但是,他无法证明他没有发出别的交易,例如他可能发出过一笔更早的交易,把公钥换成了一个新的\(NewK_i\),因此前面的证明也就变得没有意义了,因为如果他更换过密钥的话,他可能已经做了别的动作。
参与者还可能把私钥给其他人,但是这样做的话那个人拿到私钥后就可以立即试图修改密钥。这样的话 1) 有50%的成功率,2) 会导致拿到密钥的人直接拿走之前stake的存款。
MACI未解决的问题
接收方在可信硬件环境中,或者接收方在可信多签的情况下,卖出私钥
原有的私钥在一个可信的硬件环境中的攻击,这个环境可以防止私钥变更为任何攻击者们不事先知道的私钥
第一种情况,可以通过特别设计的复杂签名机制,而这种设计对可信硬件和多签不友好。不过这种设计需要确保验证函数对ZKP友好。
第二种情况可以通过“面对面零知识证明”解决,例如,参与者可以把私钥拆解为\(x + y = k_i\),公布\(X = x*G\) 和 \(Y = y*G\), 并且给验证者展示两个信封,分别包含\(x\)和\(y\); 验证者打开一个,检查公布的\(Y\)是正确的,然后检查\(X + Y = K_i\)。
非合作二次方投票
这种机制可以用来改进包括投票在内的多种链上治理机制。在二次方资助中,当资金池规模非常大的时候,或者当二次方资助被用于更大的场景时(例如大选、国会审批预算等场景),勾结就会成为一个必须被解决的问题。因此,设计一个抗勾结二次方投票(Anti-collusion quadratic funding)机制,可以规模化二次方资助。
[1]Vitalik Buterin, Minimal anti-collusion infrastructure,
https://ethresear.ch/t/minimal-anti-collusion-infrastructure/5413
通过 DAO,研究组织和媒体可以打破地域的限制,以社区的方式资助和生产内容。DAOrayaki将会通过DAO的形式,构建一个满足人们需求,一个民主治理和所有人都可以利用的公共媒体系统,从而实现真正意义上的去中心化。欢迎通过以下方式提交DAO的研究,瓜分10000USDC赏金池!了解去中心化自治组织(DAO),探讨最新治理话题,关注DAO的发展趋势,欢迎加入DAOrayaki社区!
欢迎加入DAOrayaki社区!
官方网站:daorayaki.org
Discord server: https://discord.gg/2UjpmPH9
Medium: https://medium.com/@daorayaki
Email: daorayaki@dorafactory.org
微信助手:DAOrayaki-Media

详情请参考:
Dora Factory支持去中心化DAO研究组织DAOrayaki
历史文章:
DAO的构建与设计
通证工程共享(Token Engineering Commons):分析权益持有者、通证和治理过程
DAO 治理策略
DAO 投票治理
DAOrayaki|Vitalik Buterin:超越代币投票的治理
DAOrayaki | 去中心化仲裁:Kleros、Aragon、Jur
DAO代币治理
DAOrayaki|DAO 通过财政多元化为下一个加密冬天做准备
DAO治理攻击
DAOrayaki|DAO 的漏洞:自治的假想与治理弹性评估模型
DAOrayaki|公地弹性:去中心化技术社区治理中的“弹性”
DAOrayaki|算法治理实验:DAO治理动态、韧性及崩溃
二次方融资(Quadratic Funding)的攻击与防守
一份前瞻性暂停使用The DAO的呼吁(2016.5.27)
二次方投票、融资资助
二次方资助V2协议: 抗女巫攻击、公平和规模化的链上二次方投票累进税系统提高二次方资助的公平性
二次方融资(Quadratic Funding)的攻击与防守
预测市场
Futarchy | 价值投票,对赌信仰,用钱说话,口说无凭
基于 Futarchy治理的案例:Amoveo、Tezos、Gnosis
罗宾·汉森经典论文(一)|Futarchy:我们应该价值投票、对赌信仰吗?
罗宾·汉森经典论文(二)|Futarchy:我们应该价值投票、对赌信仰吗?
罗宾·汉森经典论文(三)|Futarchy:工程设计25个问题
罗宾·汉森经典论文(四)|Futarchy:工程设计25个问题
公共物品、奥斯特罗姆
DAOrayaki|公地弹性:去中心化技术社区治理中的“弹性”
NFT、NFT DAO
DAOrayaki|NFT 市场:去中心化的创造力还是 1990 年代的电子商务?
DAO 行业发展
DAOrayaki解读|DAO与全球经济秩序-新自由主义的黄昏(一)
DAOrayaki首发| SEC.gov代币安全港提案2.0
DAOrayaki|去中心化自治组织(DAO)行业发展月报(2021.6)
DAOrayaki | DAO 行业9月上旬发展一览
DAO 媒体
DAOrayaki|文艺复兴时期的创造者和下一个媒体模式的崛起
DAOrayaki|去中心化媒体:web 3.0时代民主、隐私与价值共享的机遇
DAOrayaki 生态合作