Solidity
在區塊鏈上隱藏答案/投票
我知道每筆交易在區塊鏈上都是可見的,但是否有可能創建一個允許人們變相投票的 DApp?直到投票過程結束才展示他們的投票?
您正在尋找承諾方案。通常,承諾方案有兩個階段:送出和揭示階段。一個簡單的承諾方案如下:
- 送出階段:如果 Alice 想要送出一個值
x
,她必須生成一個隨機數r
(假設r
應該超過 100 位)並發送H(x||r)
,其中H
是一個加密安全的雜湊函式,||
代表連接)。由於H
在密碼學上是安全的,因此在計算上找到 的原像是不可行的H(x||r)
(即它的機率可以忽略不計)。此屬性稱為計算綁定。此屬性確保沒有人(甚至 Alice)可以更改 Alice 的承諾值x
。- 揭示階段:愛麗絲揭示她的選擇
x'
和r'
。Bob 檢查是否H(x||r)==H(x'||r')
. 如果匹配則接受,否則拒絕。可以使用離散對數問題建構其他更精細的承諾方案。