🛠️ 建立私密投票系统并不容易,但这是值得的!
我们知道这可能会涉及技术细节,因此我们会尽量保持清晰和简明。我们将分解需求并说明我们如何设计一个安全、私密和可验证的投票系统。
准备好了吗?
🧩 核心需求:
› 在客户端加密投票并将其加密存储在链上
› 在市场活跃时保持投票值隐蔽
› 仅在市场关闭后解密投票
› 将每个投票与其用户关联,以准确更新声誉
以下是我们如何实现这一点的。👇
🔐 首先,加密:
→我们使用 Drand Network (@drand_loe) 提供的 TLE(时间锁加密),它允许我们使用公钥加密投票,而这些投票仅能由未来由 Drand Network 发布的私钥解密。
→用户使用 Drand 的公钥和盐值在链外加密他们的投票。这确保了投票的私密性,并且难以猜测。加密后,投票作为密文提交给合约。
投票结束后会发生什么?🤔
📊 市场关闭后:
› Olas Coordinator 使用 Drand 发布的私钥解密各个投票
› Olas Coordinator 汇总投票,创建 Merkle Tree 并计算最终结果。
› 汇总结果(即 Merkle Root、最终结果)再次提交到链上的合约
› Olas 合约使用随机性神谕(目前正在尝试 @pragmaoracle、@cartridge_gg VRF 和 @chainlink VRF 来满足我们的随机性需求)随机选择投票,这些投票被解密并与 Merkle Tree 进行验证,以达到统计上确保投票被正确汇总的目的。
不过,还有更多需要改进的地方。
目前,加密投票在市场结算后变为公开。
完全私密?那是下一个目标!我们正在探索先进的密码学技术,如同态加密,以便永远保持投票的私密性。未来的更新中会有更多相关信息。💭