Each language version is independently generated for its own context, not a direct translation.
这是一篇关于Kite(风筝)协议的论文,它旨在解决去中心化自治组织(DAO)中投票的一个核心痛点:如何在把投票权交给别人时,不让别人知道你把票给了谁。
为了让你轻松理解,我们可以把 DAO 想象成一个巨大的“社区业主委员会”,而 Kite 就是给这个委员会设计的一套**“匿名转交权杖”**系统。
1. 背景:为什么我们需要 Kite?
现状:像“公开点名”的投票
在现在的 DAO(比如 Nouns DAO)里,如果你不想亲自研究每个提案,你可以把投票权“委托”给一个你信任的代表(Delegate)。
- 问题:这种委托是完全公开的。就像你在业主群里大声宣布:“我把我的票交给老王了!”
- 后果:如果你后来发现老王投错了,或者你想把票转给更靠谱的小李,你很难开口。因为如果你公开把票从小李转走,老王可能会觉得没面子,或者社区里的人会议论纷纷(“怎么又换人了?”)。这种社交压力让大家不敢随意更换代表,导致投票权被“锁定”在少数人手里。
Kite 的解决方案:像“匿名快递”
Kite 就像是一个隐形的快递系统。
- 你可以把票“寄”给老王,但没人知道是寄给了老王。
- 老王自己也不知道是谁把票寄给了他,他只知道“哦,我收到了一些票”。
- 如果你想把票转给小李,你只需悄悄把票“寄”过去,老王和小李都不会知道这次变动,社区里的人更不知道。
- 唯一公开的:大家只知道“有人把票转走了”或者“有人收到了票”,但具体是谁转给谁,完全保密。
2. Kite 是如何工作的?(核心机制)
想象一下,Kite 使用了三种魔法道具:
A. 加密的“投票权包裹” (Homomorphic Encryption)
- 比喻:你的投票权是一个上了锁的透明箱子。
- 原理:虽然箱子是透明的(大家能看到里面有个箱子),但锁住了,没人知道里面具体有多少票(比如是 100 票还是 1000 票)。
- 操作:当你把票委托给老王时,你不是把箱子打开给他,而是把整个箱子(加密后的数据)发给他。系统可以在不打开箱子的情况下,把老王收到的所有箱子加在一起(同态加密),算出老王总共有多少票,用来投票。
B. 零知识证明 (Zero-Knowledge Proofs)
- 比喻:就像**“盲盒验证”**。
- 原理:当你把票转给老王时,你需要向系统证明:“我确实有票,而且我确实把票给了老王(或者某个匿名组)”,但你不需要把票的数量或老王的具体身份直接展示出来。
- 作用:这就像你向保安证明“我手里有票”,保安只看到一张“验证通过”的纸条,却看不见票数和名字。这确保了没有人能伪造投票权。
C. 匿名集 (Anonymity Set) —— 混入人群
- 比喻:“混入人群”。
- 原理:为了更隐私,当你委托时,系统不会只把票给老王一个人。它会随机拉上另外几个代表(比如 9 个人),组成一个10 人的“匿名小组”。
- 操作:你告诉系统:“我把票给了这 10 个人里的某一个。”
- 结果:外人只知道你给了这 10 人组里的某个人,但完全猜不到具体是老王还是其他人。这就好比你在人群中扔了一个球,大家知道球进了这 10 个人的圈子,但不知道进了谁的手。
3. Kite 解决了什么问题?
- 消除社交压力:你可以随时根据代表的表现,悄悄把票转给其他人,不用担心得罪前任代表。
- 防止“票权锁定”:在现在的系统中,因为怕得罪人,大家不敢换代表。Kite 让换代表变得像呼吸一样自然,促进了更健康的民主流动。
- 双重模式:
- 代表可以公开投票:如果你信任老王,你可以让他公开投票,这样大家能监督他( accountability)。
- 代表可以私下投票:如果你希望代表完全按自己的判断投,也可以让他匿名投。
- 但委托过程永远是私密的。
4. 实际效果如何?(性能)
作者们真的在以太坊区块链上实现了这个系统(基于现有的 Governor Bravo 合约)。
- 速度:虽然加密计算比较慢,但在普通电脑上,委托投票(最慢的一步)大概需要 7 秒到 167 秒(取决于你想多隐私,匿名组越大越慢)。
- 结论:虽然有点慢,但对于“一年只投几次票”或者“偶尔换一次代表”来说,这个时间是完全可以接受的。就像为了隐私,多等一会儿是值得的。
总结
Kite 就像给 DAO 投票系统装上了“隐身斗篷”。
它允许你自由地把投票权交给任何人,或者随时收回,而不需要向任何人解释。它保护了选民的选择自由,消除了更换代表时的社交尴尬,同时依然保证了投票结果的准确和可验证。
一句话概括:Kite 让你能悄悄地把票交给最合适的人,而不必担心被围观或指指点点。
Each language version is independently generated for its own context, not a direct translation.
Kite:DAO 中投票权隐私委托协议技术总结
1. 研究背景与问题 (Problem)
去中心化自治组织(DAO)的治理通常依赖于代理投票(Proxy Voting)机制,即成员将投票权委托给代表(Delegate),由代表在提案上进行投票。虽然现有的 DAO 治理系统(如 Compound 的 Governor Bravo 和 OpenZeppelin 的 Governor)支持代理投票,但它们存在一个核心缺陷:委托关系是公开的。
- 社会摩擦与重新委托困难:在当前的公开委托模型中,当选民(Voter)撤销对代表 A 的委托并转投给代表 B 时,这一行为是链上公开的。这会导致选民面临巨大的社会压力(Social Friction),因为公开“背叛”代表可能引发冲突,导致选民不敢自由地重新分配投票权。
- 现有方案的局限性:现有的隐私投票方案要么不支持委托,要么仅支持公开委托。虽然有一些研究探讨了区块链上的隐私委托,但它们通常要求复杂的中间人、匿名通道,或者无法在保持代表问责制(Accountability)的同时实现委托隐私。
- 核心需求:需要一种机制,允许选民自由地委托、撤销和重新委托投票权,而不泄露他们委托给了谁,甚至让被委托的代表也不知道是谁委托给了自己,同时保留代表投票记录的可审计性(可选)。
2. 方法论 (Methodology)
论文提出了 Kite,一种基于零知识证明(ZK)和同态加密的协议,旨在实现 DAO 中的私有委托(Private Delegation)。
2.1 核心设计原则
- 委托隐私:选民委托给谁的信息被完全隐藏。链上仅记录“发生了委托/撤销委托”这一事实,不记录目标代表。
- 代表不知情:被委托的代表无法得知具体是谁委托了投票权。
- 可审计性:代表可以公开投票(以便选民监督)或私有投票。
- 无循环委托:Kite 设计确保每个选民只能委托自己的投票权,不能委托他人的,从而避免液民主(Liquid Democracy)中可能出现的委托循环问题。
- 信任假设:依赖一个“计算公告板”(Computing Bulletin Board,通常由区块链实现)和一个计票委员会(Tally Committee,TA)。TA 负责最终解密计票结果,但在协议运行过程中不泄露中间数据。
2.2 技术架构与组件
Kite 结合了以下密码学原语:
- 加法同态加密(Additively Homomorphic Encryption):用于在加密状态下对投票权进行累加和更新,无需解密即可计算总票数。
- 零知识证明(zk-SNARKs):
- 委托证明:证明选民确实拥有投票权,且构造的加密向量是合法的(即除了目标代表外全为 0,且目标代表处的值等于选民持有的代币数)。
- 投票证明:在私有投票场景下,证明代表提交的是加密后的投票权(经过重随机化)或零值,且未重复投票。
- 默克尔树(Merkle Tree):用于高效地验证选民在特定快照时刻的代币持有量。
- 匿名集(Anonymity Set):为了优化性能和隐私平衡,委托时选民可以选择一个匿名集(包含目标代表和其他随机代表),证明委托发生在该集合内,而非特定指向某一人。
2.3 协议流程
- 设置(Setup):TA 生成公钥,建立代币持有者列表的默克尔树,并部署智能合约。
- 注册/注销:选民注册为代表时,智能合约锁定其代币,防止重复使用。
- 委托/撤销(核心):
- 选民生成一个加密向量,其中目标代表的索引位置加密了其代币数量,其他位置加密为 0。
- 选民生成 ZK 证明,证明该向量合法且其拥有相应代币。
- 智能合约验证证明,将加密向量同态加到代表的总投票权列表中,并记录委托标识符(Commitment)。
- 撤销时,选民需提交原始的加密向量(或其哈希),智能合约验证后同态减去该值,并解锁代币。
- 选举与投票:
- 选举开始:记录投票权快照(Snapshot),防止选举期间代币转移影响结果。
- 公开投票:代表直接提交加密的总投票权到对应选项。
- 私有投票:代表提交加密向量(目标选项为加密的总投票权,其他为 0),并重随机化(Re-randomize)其加密的投票权,防止通过链上公开数据反推投票内容。
- 计票(Tally):TA 使用私钥解密最终的同态累加结果,计算各选项的百分比并上链。
3. 主要贡献 (Key Contributions)
- 首个支持私有委托的 DAO 协议:Kite 是第一个允许 DAO 成员在不暴露委托关系的情况下自由委托、撤销和重新委托投票权的协议。
- 灵活的问责机制:支持“公开委托 + 公开投票”、“公开委托 + 私有投票”以及“私有委托 + 公开投票”等多种组合。特别是私有委托 + 公开投票,既保护了选民的社交隐私,又保留了代表对选民负责的能力。
- 通用性与兼容性:Kite 被设计为现有流行 DAO 治理合约(如 Governor Bravo)的扩展,无需改变核心治理逻辑即可集成。
- 形式化安全证明:在通用可组合性(Universal Composability, UC)框架的变体 SUC 下,严格证明了协议的安全性,确保在存在静态敌手的情况下,委托隐私和计票正确性得到保障。
- 实际实现与评估:
- 基于 Solidity 和 Noir(zk-SNARK 框架)实现了完整原型。
- 扩展了 ERC20 标准以支持代币锁定机制。
- 提供了详细的性能评估,证明了在消费级硬件上的可行性。
4. 实验结果 (Results)
作者在 MacBook Air (M2, 8GB RAM) 上对 Kite 进行了性能评估:
- 委托操作延迟:
- 委托是最耗时的操作,取决于匿名集的大小(隐私级别)。
- 在消费级机器上,委托证明生成时间范围为 7 秒 到 167 秒。
- 对于典型的匿名集大小(5, 10, 20),证明时间在几秒到一分钟之间,处于可接受范围。
- 由于委托是低频操作(一旦设置可长期有效),而投票是高频操作,因此整体用户体验延迟较低。
- 链上 Gas 成本:
- 验证 ZK 证明的 Gas 成本是固定的(约 40 万 Gas)。
- 通过将所有验证逻辑合并到一个主验证器合约(Master Verifier Contract),显著降低了部署成本(相比单独部署多个验证器合约节省了约 1200 万 Gas)。
- 委托和撤销操作由于涉及同态向量运算,Gas 成本最高,但仍在合理范围内。
- 隐私与效率权衡:
- 匿名集越大,隐私性越强,但证明时间和 Gas 成本线性增加。
- 系统允许用户根据需求动态选择匿名集大小(如 5, 10, 20)。
5. 意义与影响 (Significance)
- 提升 DAO 治理质量:Kite 解决了 DAO 治理中“重新委托”的社会摩擦问题,鼓励选民根据代表的表现灵活调整投票权,从而优化治理决策的民主性和响应速度。
- 平衡隐私与问责:Kite 巧妙地平衡了“委托隐私”和“代表问责”之间的矛盾。它允许选民在不暴露政治立场的情况下更换代表,同时允许代表公开投票以接受监督,这是现有系统难以兼顾的。
- 推动隐私技术在区块链的应用:该工作展示了如何利用零知识证明和同态加密解决复杂的链上治理问题,为未来更复杂的隐私保护投票系统(如防胁迫投票)奠定了基础。
- 实际落地潜力:通过作为 Governor Bravo 的扩展实现,Kite 具有极高的可部署性,能够直接应用于 Nouns DAO 等现有大型 DAO,解决其实际面临的治理痛点。
总结:Kite 通过创新的密码学设计,成功在去中心化环境中实现了“黑盒委托”,既保护了选民的隐私和自由,又维持了 DAO 治理的透明度和可审计性,是 DAO 治理隐私保护领域的重要突破。