在這一頁
輪盤(加密版)
在這一頁
簡介
本頁介紹的是加密版輪盤賭,通常在基於加密貨幣的賭場進行。我假設讀者已經熟悉傳統輪盤賭的基本規則。
公平公正的賭場
Bonus Code
SPOOKTOBER
分析
在 Crypto.Games 的遊戲中,輪盤賭採用單零輪盤,這在線上賭場中很常見。每次投注的莊家優勢為 1/37 = 2.70%。公平遊戲
以下關於密碼學應用的解釋假設讀者對相關術語和概念有所了解。有關基礎知識,請參閱我的“骰子(加密版)”頁面。以下是 Crypto.Games 上的輪盤遊戲如何產生 0 到 37 之間的隨機數,並將其用作遊戲結果。
- 像往常一樣,遊戲會公開下一次下注的伺服器種子的雜湊值,並讓玩家選擇自己的客戶端種子。
- 玩家下注,就像在傳統輪盤賭中一樣。
- 遊戲將按順序組合伺服器和客戶端種子。
- 遊戲將採用步驟 3 中組合種子的 SHA-512 雜湊值。
- 遊戲將從第 4 步開始,將 Hash 的兩個字元從十六進位轉換為十進位。
- 取步驟 5 中十進位數的末兩位數。
- 如果步驟 6 的結果為 0 到 36,則將其用作輪盤賭結果。
- 如果步驟 6 的結果為 37 或更大,則在雜湊中前進兩個位置並傳回步驟 5。
例子
首先,我會進入上面的公平遊戲介面。然後輸入任意客戶端種子,隨機字元即可。接下來,你需要複製貼上以下兩點:
- 您的客戶種子
- 下一個伺服器種子哈希,其標記為“下一個伺服器種子 SHA256”。
是否添加 Nonce 完全由您決定,Nonce 是自動添加到客戶端種子末尾的額外字元。我認為,如果賭場有意作弊,添加 Nonce 並不能提供任何保護。
在我們的例子中,這是您應該保留的證據。
下一個伺服器種子雜湊 = e7043dd7fe369b94518449d61162a0c960f54781a16548af63194b7fd9d6891a 客戶端種子 = b0x6vb0v6TYUIQWF6b0sd6f0y
接下來我進行了下注,如上圖所示。我在這裡下注了10個籌碼,每個籌碼價值0.000001 BTC(比特幣),總共下注0.00001 BTC(約10美分),押注紅色。
結果是7紅,所以我贏了。
接下來,我會依照以下步驟來驗證結果。在現實生活中,我只會在輸錢時才會糾結這個問題。如果賭場想作弊,我可能就輸了。
- 我按以下順序加入伺服器種子和客戶端種子:sMDGT5P10m071HAdTQkoYCLJ8vLXnwzq6ugfloMTb0x6vb0v6TYUIQWF6b0sd6f0y
- 我採用步驟 1 中組合種子的 SHA-512 雜湊值:
40cf0126a307d4d72900279d330499f6a5447c35ed838d6ec3fd2b53872df73ccac001686ddf05e024c5899205afa9d051686ddf05e024c5899205afa9d05510b
- 我取前兩個字符,即40。
- 我將十六進制的40轉換成十進制:4*16 + 0*1 = 64。
- 步驟4得到的十進制結果有兩位數,所以我就不去管它了。否則,我就取最後兩位數了。
- 64 大於 36,因此它不會作為輪盤賭的結果。
- 我在 Hash 中前進了兩個字符,它們是 cf。
- 我將 cf 轉換為十進位:c*16 + f = 12*16 + 15*1 = 207。
- 由於 207 有兩位以上的數字,所以我取右邊的兩位,即 07。
- 由於 7<=36,所以這成為遊戲的結果。
- 接下來,我檢查下注前給我的伺服器種子雜湊(以 e7043 開頭)是否與上次下注的伺服器種子相符。出於某種原因,賭場選擇使用 SHA-256 函數對其進行雜湊處理,而不是像 SHA-512 那樣使用雜湊處理組合字串。
- 在這種情況下,sMDGT5P10m071HAdTQkoYCLJ8vLXnwzq6ugfloMT 的雜湊值確實為e7043dd7fe369b94518449d61162a0c960f54781a16548af63194b7fd9d6891a,這確保了賭場對最後一次賭注的貢獻是注定的。
如果這一切聽起來太麻煩,我寫了一個程式來幫你完成。使用方法如下:
- 轉到PHP 沙盒。
- 在第 4 行輸入客戶端種子。
- 在第 5 行輸入伺服器種子。
- 在第 6 行輸入下一個伺服器種子的雜湊值。
- 按一下“執行程式碼”。
- 驗證遊戲結果,確認伺服器種子雜湊值是否與下注前提供的雜湊值一致。如果不匹配,則表示您被騙了。
我還有一份程式碼副本,您可以點擊下面的按鈕查看。
[劇透]
// Crypto.Games 的輪盤遊戲轉換 // 在第 4 行輸入客戶端種子,在第 5 行輸入伺服器種子。 $client_seed =“b0x6vb0v6TYUIQWF6b0sd6f0y”; $server_seed =“sMDGT5P10m071HAdTQkoYCLJ8vLXnwzq6ugfloMT”; $next_hash =“e7043dd7fe369b94518449d61162a0c960f54781a16548af63194b7fd9d6891a”; $color_array = 陣列(0,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,2,1,2,1,2,1,2,1,2,1,2,1,2,2,1,2,1,2,1,2,1,2,1); $位置=0; $combined_seed = $server_seed.$client_seed; echo "組合種子 = $combined_seed\n"; $combined_hash = hash('sha512', $combined_seed); $server_hash = hash('sha256',$server_seed); echo“組合種子的雜湊值=$combined_hash\n”; 做 { $first_two=substr($combined_hash,$position,2); $hex_to_dec=hexdec($first_two); $hex_to_dec%=100; 如果 ($hex_to_dec-->36) { $位置+=2; } } 當 ($hex_to_dec>36) 時; echo "伺服器種子的雜湊值 =\t $server_hash\n"; echo "遊戲結果 =\t$hex_to_dec "; 如果 ($color_array[$hex_to_dec]==0) { 回顯「綠色\n」; } elseif ($color_array[$hex_to_dec]==1) { 回顯“紅色\n”; } 別的 { 回顯“黑色\n”; } $server_seed_hash=hash('sha256', $server_seed); 如果 ($server_seed_hash==$next_hash) { echo "伺服器種子符合.\n"; } 別的 { echo“伺服器種子不符!\n”; echo "伺服器種子 =\t$server_seed\n"; echo「伺服器種子雜湊=\t$server_seed_hash\n」; echo“所謂的下一個哈希=\t$next_hash\n”; } // 程式 // 1. 將 Position 設定為 0。 // 2. 依序加入伺服器和客戶端種子以及伺服器種子。 // 3. 產生步驟 2 字串的 SHA-512 雜湊值。 // 4. 從步驟 3 中的雜湊「位置」開始,將前兩個字元從十六進位轉換為十進位。 // 5. 如果步驟4中的值變成0到36,那麼這就是遊戲結果。 // 6. 否則,將位置前進 2 並轉到步驟 4。 ? >[劇透]