关于这篇文章的背景,请参考《二次方投票和二次方资助》。在这篇文章发布后的一个月,BSC基金会在DoraHacks开发者平台HackerLink上运行了BSC生态第一轮二次方资助,并在其后的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 InfrastructureMACI是“最小化抗勾结框架”。背景材料参考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 ightarrow Outputs), 其中,函数的输入是(n)个参与者的行为,输出是这个函数定义的某种输出结果。例如,一个简单的投票机制是一个函数,根据输入的值,输出出现次数最多的那个值。 (责任编辑:admin) |