The Cardano Ballot: developing a decentralized voting app (cardanofoundation.org)
在筹备像2022年Cardano峰会这样的国际活动时,涉及多个活动部分,不同的团队负责不同的方面,以确保事情尽可能地顺利进行。7月下旬,Cardano基金会的元数据工具团队接到一个新任务。通过开发一个任何人都可以轻松使用的投票应用程序来支持峰会。该应用程序还应该既利用Cardano区块链的可能性,又能在链上验证每张投票。
只有两个月的时间来开发一个优雅的、功能齐全的解决方案,元数据工具团队开始了一段紧张的工作和探索。今天,该团队与整个Cardano基金会一起,很高兴地介绍Cardano Ballot。
奠定投票应用程序的基础
对Cardano Ballot的主要要求意味着一个应用程序不仅要为Cardano峰会服务,还要展示Cardano区块链的优势和潜力。它需要以一种能够让每个人都能为社区选择的演讲者和峰会提名者投票的方式来设计和构建。投票也将免费提供给用户,并且每个用户有一个投票限制。
元数据工具团队考虑了许多设计模式,有些使用元数据交易,有些使用本地资产、智能合约或Hydra可扩展性解决方案。还考虑了重新利用现有的Cardano投票解决方案的方案。
我们很快就发现,无法依赖基于赌注ada数量的加权投票模型。我们需要确保每个用户的投票权重相等,这些模型自然无法提供这样的保证。此外,团队发现在限制一个钱包只能投一票方面存在一些困难。
在开发过程中,Cardano Ballot演变成一个Web3投票应用程序,它采用了Cardano基金会新的开源钱包连接器,使用户能够连接一个支持CIP 30和CIP 8标准的Cardano钱包。该团队实施了两种不同的方法来验证用户的钱包:要么求助于Discord机器人,要么求助于SMS消息。利用CIP 8消息签名和钱包的股权地址,我们要求用户签署通过这两种方法之一提供的秘密消息,从而验证连接的钱包的所有权。
开发这个新的钱包连接器库的决定有两个方面。首先,我们需要一个Cardano Ballot的解决方案,通过大量的试验和错误,我们发现在各种钱包项目中存在许多与钱包连接有关的问题,这意味着我们不会从中获得最佳使用。其次,团队希望为未来的Cardano开发者提供一个开源的解决方案,以消除与目前问题相关的可能的工作量和负担。
培养开源工具和优化效用
除了确定的钱包问题,开源的钱包连接器库试图提供一个不依赖现有序列化库的轻量级解决方案。因此,我们开发了定制的React组件,以提供优先考虑钱包连接和CIP 8消息签名的功能。最终的结果是一个开源的钱包连接器,使任何开发者或项目能够无缝地引入Cardano钱包连接和认证。我们希望这个新的钱包连接器能增强Cardano开发者的旅程,并帮助克服我们团队遇到的钱包连接按钮和组件的有限标准化问题。
有了连接和验证的Cardano钱包,用户现在可以为峰会不同演讲者和奖项类别的各种提名者起草Cardano选票。Cardano选票草案还必须使用CIP 8标准进行签名,这时它就可以作为投票提交。通过这种方式,该应用程序利用CIP 8来验证连接的钱包和签署选票草案。该团队还求助于CIP 8,以便为该应用程序创建一个签到功能。
在开发和实施开源钱包连接器的过程中,很明显,目前Cardano生态系统中的移动设备支持是非常有限的。此外,在不同的钱包中,CIP 8标准的实施方式存在一些相当大的差异。
今后,Cardano基金会还打算发布一个开源的JAVA CIP 8验证器和分析器,可以被纳入Cardano项目。这个JAVA CIP 8验证器和解析器能够对CIP 8签名进行反序列化,并专门设计用于支持SundaeSwap治理的数据提取工作流程。同样,该库支持使用流行的JAVA编程语言进行CIP 8签名解析的通用化。
让投票在链上进行
一旦Cardano选票被签署并提交给系统,该团队就面临着决定什么能提供一个理想的选择来编写链上投票的挑战。所选择的方法必须包含一些考虑因素,包括对透明度和验证的关注,以及对区块链的负责任使用。
一些正在进行的讨论对区块链的主网络–通常被称为第一层–是否应该被用作数据库进行了辩论。在Cardano Ballot的情况下,这将意味着将所有签署的选票写在链上。这当然会提供所需的透明度和验证特性,但它也引起了人们的关注。
在了解了Merkle树及其对验证的意义后,团队开始确定一个负责任的解决方案,提供透明度和验证,同时不利用Cardano的第一层作为数据库。在这个设计和开发的综合阶段,开始与不同的社区拥有的项目进行对话。
在与Voteaire的会谈中,尽管团队确定了许多使用案例,该项目提供了一个理想的解决方案,但很明显,与他们的投票解决方案整合需要在链上写入所有的投票,因此不符合我们的要求。此外,还出现了一些确保每个用户只投一票的现有问题。尽管如此,与Voteaire的讨论被证明是非常宝贵的。他们深入研究了关于分散式投票的现有问题的关键信息,并以具有成本效益的方式向用户提供可验证的解决方案。
另一方面,SundaeSwap最近实施了一个治理模式,采用merkle树作为验证数据的手段,而且不需要将整个数据写入Cardano区块链。与SundaeSwap的深入讨论,以及他们愿意分享他们在开发解决方案时学到的宝贵经验,使我们能够为Cardano选票的验证机制确定一个可行的解决方案,提供透明度和验证,但不需要在链上写入大量的数据。此外,它以最小的成本做到这一点。
与SundaeSwap的合作也是Cardano基金会与Cardano社区合作的一个例子。这也是基金会不断努力展示和帮助生态系统成熟的一部分。
从Cardano选票到区块链效用
在设计和开发 Cardano Ballot 的过程中,Metadata Tools 团队遇到了 Cardano 开发生态系统中值得称赞的方面,以及可以从进一步探索和开发中受益的领域。怀着继续与生态系统合作的愿望,我们现在正在记录和分析改善Cardano开发者和用户体验的潜在路径。
虽然Cardano Ballot是专门为2022年Cardano峰会设计的,但它引发了围绕企业级解决方案和实施它所需的讨论。整个Cardano基金会,尤其是元数据工具团队都知道对自我主权身份(SSI)的研究和开发在不断增长。我们同样知道在Cardano上发行去中心化标识符(DID)的项目,如Atala Prism、RootsID、IAMX和Sidetree-Cardano。此外,如果目标是设计和开发一个真正可互操作的身份解决方案,那么SSI中存在的众多标准和系统–如DIF、W3、Trust Over IP、KERI–应该得到考虑。
Cardano Ballot最终将被重构为一个开源库。我们希望它能对社区内的其他人有用,并用于2022年Cardano峰会以外的目的。
这个开发项目为团队提供了一个大开眼界的经验,因为我们发现了Cardano开发者旅程中需要进一步讨论的领域。正是考虑到这一点,Cardano基金会计划在2022年Cardano峰会上举办钱包连接器和DApp研讨会,以及主持围绕CIP标准、分散投票等的讨论。
元数据工具团队和Cardano基金会邀请整个Cardano社区首先为演讲者类别投票,随后为首届Cardano峰会奖投票。我们也希望在峰会上看到每个人的身影或虚拟,并期待继续与Cardano社区合作。