Voting
在特定日期之前保密數據
背景:基於乙太坊的投票系統
假設使用者可以投票。使用者必須從 10 項中選擇 1 項。我相信可以創建支持這種選擇的智能合約。
但是:參與者不能在投票輪中確定獲勝項目,因為這會影響結果。我知道不可能使用鏈上加密。
我相信一個可能的解決方案是創建一個由 2 輪組成的投票系統:
- 在第一輪中,選民送出他們首選選項的雜湊值。他們的私鑰的一部分被用作“鹽”,因為否則人們仍然可以弄清楚投票的內容。注意:此雜湊是在鏈下計算的!
- 在第二輪中,選民送出他們喜歡的選擇,包括第一輪使用的鹽。只有當這些項目的雜湊值與第一輪的雜湊值匹配時,智能合約才會接受投票。
我的問題是:這行得通嗎?還是有更好的解決方案?
您可以使用此處描述的實現,它實際上使用了您在此處建議的完全相同的想法。 https://blog.colony.io/token-weighted-voting-implementation-part-1-72f836b5423b
您描述的是送出-顯示投票方案。有一個名為 Partial-Lock Commit Reveal 的實現,您的代幣將轉換為您允許使用的投票數,並且您的代幣在整個投票期間被鎖定。
我們正在為我們的乙太坊應用程序使用 PLCR 投票模型,讓社區通過投票加入或退出申請人來管理系統資料庫。
您可以查看 github 上的項目以獲取範例:
https://github.com/AdChain/AdChainRegistry
ConsenSys 還在 Solidity 中開源了 PLCR 實現: