ギャンブラーのための暗号技術

証明可能な公正とは - シード、ハッシュ、ノンス、検証の説明

ゲームにとらわれない明確なガイドで、最新の暗号カジノがプレイ前にどのように結果をロックし、後でどのように確認できるかを示しています。

プレー前のハッシュ・コミットメント
クライアントのシードコントロール
ベットごとのノンス
ポスト・ラウンド公開

コア・アイデア

カジノは公開ハッシュを持つ隠しサーバーシードにコミットする。あなたはクライアントシードを持参する。ベットごとにnonceがインクリメントされる。ラウンド終了後、サーバシードは公開され、誰でも公開ルールから結果を再計算することができる。

なぜ重要なのか

結果は事前にロックされる。ライブでの微調整はない。事後のリロールもない。標準的なSHA-256の実装であれば、自分で計算を確認することができる。

必要なもの

  • サーバーシード(ラウンド終了後に公開)
  • サーバーシードハッシュ(ラウンド前に公開)
  • 顧客シード
  • 賭けの不成立

証明可能なフェアの仕組み - ステップ・バイ・ステップ

1.プレ・コミットメント

カジノはランダムなサーバーシードを生成し、そのハッシュを公開する。例 ハッシュ = SHA-256(サーバーシード).プレーンなサーバーのシードは、決済が終わるまで隠されている。

2.クライアントシード

ブラウザでクライアントシードを選択または確認します。このシードを保持するか、セッション間で変更するかは、お好みに合わせてお選びください。

3.ノンス

各ベットは、新鮮なシードペアに対して0から始まるインクリメンタルNonceを使用する。これは出力の再利用を防ぎ、各ラウンドに一意の出力を結びつける。

4.結果計算

このゲームは、次のような価値を兼ね備えている。 HMAC-SHA256(serverSeed, clientSeed:nonce) または SHA-256(serverSeed + clientSeed + nonce) そして、バイトを結果にマッピングする。正確な仕様はゲームごとに公表される。

5.暴露と検証

決済後、サーバーのシードが公開される。それをハッシュして事前コミットメントと一致することを確認し、クライアントのシードとnonceで結果を再計算する。

重要だ: ゲームによってマッピングルールは異なる。ダイスは52ビットの整数を0~99.999にマッピングするかもしれない。クラッシュはバイトを乗数に変えるかもしれない。ブラックジャックはシャッフルされたデッキにマッピングするかもしれない。常にゲームページの公式仕様に従ってください。
セキュリティのヒント アカウントの秘密は決して共有しないでください。証明可能な公正さのために使用されるシードはパスワードではない。監査と結果生成のために設計されたランダムな文字列である。

例 - サイコロの目のマッピング (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をサポートしています。外部ツールや簡単なスクリプトを使うこともできます。