🛠️ 建立私密投票系統並不容易,但這是值得的!
我們知道這可能會涉及技術細節,因此我們會儘量保持清晰和簡明。我們將分解需求並說明我們如何設計一個安全、私密和可驗證的投票系統。
準備好了嗎?
🧩 核心需求:
› 在客戶端加密投票並將其加密存儲在鏈上
› 在市場活躍時保持投票值隱蔽
› 僅在市場關閉後解密投票
› 將每個投票與其用戶關聯,以準確更新聲譽
以下是我們如何實現這一點的。👇
🔐 首先,加密:
→我們使用 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 進行驗證,以達到統計上確保投票被正確彙總的目的。
不過,還有更多需要改進的地方。
目前,加密投票在市場結算後變爲公開。
完全私密?那是下一個目標!我們正在探索先進的密碼學技術,如同態加密,以便永遠保持投票的私密性。未來的更新中會有更多相關信息。💭