標籤:

SatoshiDice 的數學和運作原理是什麼?

SatoshiDice交易量佔了bitcoin的一半,這個賭博網站的原理是什麼?


大致流程

用戶給SatoshiDice(簡稱SD)的地址打錢 -&> SD判斷你是否中獎 -&> 根據輸贏打錢給用戶

判斷是否中獎

檢查hmac_sha512(key, txid:vout)結果的第一位元組是否小於對應賠率的幸運數,比如最大賠率要求幸運數字為1,那麼你這筆投注的hmac_sha512的第一個位元組必須是"00000000"。

其中hmac_sha512是使用SHA512的哈希運算消息認證碼 hmac_百度百科

key是SD自己持有的密鑰,每天更換並會公布之前使用的key。SD將未來10年所用的每個key的SHA256哈希值存在hash.keys文件中,這個文件的哈希值又已經通過一筆特殊的交易記錄在Block Chain中blockchain.info 的頁面 (右邊每筆的金額對應兩位元組的哈希值),這樣足以證明SD在這筆交易前已經有了這樣一個文件。這個文件可以在這裡下載 http://legacy.satoshidice.com/static/hash.keys

最近用的key見這裡 http://legacy.satoshidice.com/secretlist.php。

txid是你打錢的這筆交易的id,實際上是這筆交易的哈希,由於一筆交易可能有多個輸出,這裡需要vout指出其中第幾個輸出是給SD的。

用戶可以檢查SD是否作弊

下載前面的hash.keys文件,hash.keys的哈希值已經寫在block chain中,你可以根據這個值判斷下載的文件是否正確。接著就只要看你投注那天SD所用key的哈希是否和這個文件中對應日期的哈希一致。這樣SD無法用別的key來作弊。而hmac_sha512的結果可以去Calculate a SHA-512 hash這樣的在線網站計算,剩下的就是比較你的第一個位元組是否小於對應的幸運數了。

用戶無法作弊

用戶只知道當天key的哈希值,無法知道實際使用的key。

SatoshiDice會賠錢嗎?

每個賠率對應的幸運數是精心計算過的,數學期望上肯定是SD賺錢,當然不能作弊的情況,遇上賭神一樣是要賠的。SD官方的統計在這裡 Satoshi Dice -- Statistical Analysis


推薦閱讀:

TAG:比特幣Bitcoin |