ギャンブラーのための暗号技術
証明可能な公正とは - シード、ハッシュ、ノンス、検証の説明
ゲームにとらわれない明確なガイドで、最新の暗号カジノがプレイ前にどのように結果をロックし、後でどのように確認できるかを示しています。
クライアントのシードコントロール
ベットごとのノンス
ポスト・ラウンド公開
コア・アイデア
カジノは公開ハッシュを持つ隠しサーバーシードにコミットする。あなたはクライアントシードを持参する。ベットごとにnonceがインクリメントされる。ラウンド終了後、サーバシードは公開され、誰でも公開ルールから結果を再計算することができる。
なぜ重要なのか
結果は事前にロックされる。ライブでの微調整はない。事後のリロールもない。標準的なSHA-256の実装であれば、自分で計算を確認することができる。
必要なもの
- サーバーシード(ラウンド終了後に公開)
- サーバーシードハッシュ(ラウンド前に公開)
- 顧客シード
- 賭けの不成立
証明可能なフェアの仕組み - ステップ・バイ・ステップ
1.プレ・コミットメント
カジノはランダムなサーバーシードを生成し、そのハッシュを公開する。例 ハッシュ = SHA-256(サーバーシード).プレーンなサーバーのシードは、決済が終わるまで隠されている。
2.クライアントシード
ブラウザでクライアントシードを選択または確認します。このシードを保持するか、セッション間で変更するかは、お好みに合わせてお選びください。
3.ノンス
各ベットは、新鮮なシードペアに対して0から始まるインクリメンタルNonceを使用する。これは出力の再利用を防ぎ、各ラウンドに一意の出力を結びつける。
4.結果計算
このゲームは、次のような価値を兼ね備えている。 HMAC-SHA256(serverSeed, clientSeed:nonce) または SHA-256(serverSeed + clientSeed + nonce) そして、バイトを結果にマッピングする。正確な仕様はゲームごとに公表される。
5.暴露と検証
決済後、サーバーのシードが公開される。それをハッシュして事前コミットメントと一致することを確認し、クライアントのシードとnonceで結果を再計算する。
例 - サイコロの目のマッピング (JavaScript)
// 擬似実装:SHA-256 -> [0, 99.999]の数値
非同期関数 sha256(hexStr){
const bytes = new TextEncoder().encode(hexStr);
const hash = await crypto.subtle.digest('SHA-256', bytes);
return Array.from(new Uint8Array(hash)).map(b=>b.toString(16).padStart(2,'0')).join(');
}
function toNumberFromHash(hash){ // 最初の52ビット〜13ビットを取る。
// 最初の52ビット〜13文字の16進数を取る
const slice = hash.slice(0,13);
const asInt = parseInt(slice,16);
const max52 = Math.pow(2,52);
return (asInt / max52) * 100; // 0 - 100
}
非同期関数 diceResult(serverSeed, clientSeed, nonce){
const input = `${serverSeed}:${clientSeed}:${nonce}`;
const hash = await sha256(input);
const roll = toNumberFromHash(hash);
return Math.min(99.999, roll);
}
実際のゲームでは、サーバシードをキーとし、文書化されたバイトスライシングポリシーを持つHMACを使用することができる。公式仕様に従ってください。
例 - コミットメントの検証 (Python)
インポートhashlib
def sha256_hex(s: str) -> str:
return hashlib.sha256(s.encode()).hexdigest()
server_seed = "REVEALED_AFTER_ROUND"
published_hash = "HASH_SHOWN_BEFORE_ROUND"
assert sha256_hex(server_seed) == published_hash, "コミットメントの不一致"
print("Commitment verified")
ゲームタイプ別の一般的なマッピングパターン
| ゲーム | ハッシュ法 | マッピング | 備考 |
|---|---|---|---|
| ダイス | HMAC-SHA256(serverSeed, clientSeed:nonce) | 最初の52ビット~0~99.999 | ノンスごとに決定論的 |
| クラッシュ | SHA-256またはHMACバリアント | 乗数曲線への変換 | スペックではバイアスを避ける方法を定義している |
| 鉱山 | SHA-256ストリーム | バイトオーダーで明らかになるタイル | 基板レイアウト再現可能 |
| プリンコ | HMAC-SHA256 | ビットからの左右ペグステップ | 行数はパススペースに影響する |
| ブラックジャック | SHA-256ベースのシャッフル | フィッシャー・イェーツがシード by バイト | デッキオーダー再現 |
選手チェックリスト - 迅速な検証フロー
- プレーする前にサーバーのシードハッシュをコピーするか、フェアネスパネルに表示されていることを確認する。
- ゲームが許可している場合、クライアントシードを設定するか、自動生成された値を保存します。
- ラウンド終了後、公開されたサーバーのシードとnonceをベットからコピーする。
- サーバーのシードをハッシュし、コミット前の一致を確認する。
- 公開スペックを使って結果を再計算し、ベット結果と比較する。
いずれかのステップで失敗した場合は、ベットID、シード、nonce、フェアネスパネルのスクリーンショットをサポートまでご連絡ください。
ユーザーにとってのベストプラクティス
- 隔離を希望する場合は、セッションとセッションの間にクライアントシードを交代させる。
- 高額賞金ラウンドのベットIDを記録し、後で確認する。
- セカンド・オピニオンが必要なら、ハッシュ用の独立したツールを使うこと。
- シードとパスワードを混同しないでください。
避けるべき赤旗
- プレー前のサーバーシードハッシュなし
- ハッシュから結果へのマッピングの公開はなし
- 同じ入力で再現性のない結果
- 不明瞭なボーナス条件に絡む出金遅延
賭け金なしの報酬で、証明された公正なオリジナルをプレーする
コード使用 ビップ Duelで即座にキャッシュバックを受け取り、Crash、Dice、Mines、Plinko、Blackjackなどの監査フレンドリーなゲームをお楽しみください。
証明可能な公正さは利益を保証するか
いや、それは透明性を保証するものであって、期待値を保証するものではない。あなたのEVはハウスエッジとあなたの選択に依存する。
モバイルで検証できますか?
はい。最近のほとんどのブラウザはSHA-256をサポートしています。外部ツールや簡単なスクリプトを使うこともできます。
