「証明可能な公平性」を平易な言葉で説明
各ラウンドが開始される前に、サーバーはサーバーシードのSHA-256ハッシュを公開することでコミットします。ハッシュは一方向の指紋であり、シードをそこから逆算することはできません。また、クライアントシード(自分で設定するか、デフォルトを受け入れます)とラウンドノンス(各ラウンドごとに1ずつ増加します)も確認できます。
ラウンドが終了すると、サーバーは元のサーバーシードを公開します。それをクライアントシードおよびnonceと組み合わせてハッシュ化します。結果として得られるハッシュ値は特定の数値に対応し、その数値がラウンドの結果(クラッシュポイント、サイコロの出目、プリンコのスロット等)に対応します。計算結果が実際に確認した内容と一致すれば、そのラウンドは公正でした。一致しない場合、プラットフォームが不正を行ったことになります。
Crashの正確なアルゴリズム
- サーバーシードをハッシュ化する:公開されたサーバーシード文字列を取得し、SHA-256を計算します。
- サーバーシードとクライアントシードおよびノンスを結合します。形式は hmac-sha256(serverSeed, clientSeed + ":" + nonce) です。
- 結果のハッシュの最初の13文字の16進数を取得します。
- 10進数の整数に変換します。
- クラッシュポイントを計算: crashPoint = floor((100 * 2^52) / (2^52 - h)) / 100、ハウスエッジ調整を含む。
- ラウンドで確認したクラッシュポイントと照合してください。一致すれば正直な証明です。
実例:Crashラウンドの検証
これらの入力を使った仮想的なラウンドを例に挙げます(数字は読みやすさのため短縮しています)
サーバーシード(公開済み):a1b2c3d4e5f6...
クライアントシード:myclientseed42
ノンス:137
ゲーム内に表示されるクラッシュポイント: 2.47x
hmac-sha256('a1b2c3d4e5f6...', 'myclientseed42:137')を実行します。出力の最初の13文字の16進数を取得します。10進数に変換します。上記の式に代入します。結果は2.47倍。一致しました。このラウンドは正当です。
どのプログラミング言語のハッシュ関数ライブラリでも同じ答えが得られます。結果は決定論的です。検証を一度設定すれば、プレイするすべてのラウンドで実行できます。
Diceの正確なアルゴリズム
- hmac-sha256(serverSeed, clientSeed + ":" + nonce)を計算します。
- 最初の5文字の16進数を取得します。
- 整数iに変換します。
- ロール = (i × 100) / 16^5 を計算し、小数第2位まで四捨五入します。
- 表示されたロールと比較します。一致 = 誠実。
クライアントシードが重要な理由
自分でクライアントシードを設定することができます。ほとんどのプレイヤーはデフォルトのまま使用し、変更することはありません。最大限の信頼性を求める場合は、クライアントシードを定期的に変更してください(Shuffleでは「設定 → Provably Fair → Set Client Seed」から変更可能です)。変更するたびに以前のサーバーシードコミットメントが無効化され、新しいものが生成されます。
セッション中にシードを変更しても期待リターンは変わりません。これは、プラットフォームがあなたのクライアントシードを事前に知った上で不利なロールのシーケンスを準備できないことを意味します。この保護は統計的なものではなく、暗号技術的なものです。
よくある誤解
- プロバブリーフェアはハウスエッジを変更しません。Crashは依然として99% RTPです。Diceも依然として99% RTPです。アルゴリズムは正直ですが、数学的にはハウス側がわずかに有利です。
- 証明可能な公平性は次の結果を予測させるものではありません。サーバーシードはコミット後に公開されるため、ラウンドが終了するまで予測は暗号学的に不可能です。
- 「証明可能な公正性」は、スロット、テーブルゲーム、ライブカジノには適用されません。これらはサードパーティのRNG(スロット)または物理的なハードウェア(ライブテーブル)で動作しており、iTech Labsまたは同等の機関による監査を受けています。
- プラットフォームはオリジナルゲームで証明可能な公平性を持ちながら、スロットを操作したり入金を保留したりすることが可能です。証明可能な公平性が対象とするのは、自社開発の乱数生成の完全性という特定のリスクのみです。
- 不一致を発見した場合は、サポートに連絡する前にすべてをスクリーンショットしてください(シード、ナンス、結果、検証計算)。不一致は極めてまれであり、ほとんどの場合は検証側のユーザーエラーです。
ステップバイステップ: 自分でラウンドを検証する方法
-
1
Shuffleの設定 → Provably Fairを開く
現在のサーバーシードハッシュ、クライアントシード、ノンス範囲が表示されます。
-
2
ラウンドをプレイして結果を記録する
結果がどうであれ、記録しておく。
-
3
サーバーシードをローテーションする
「新しいサーバーシードを使用」をクリックするか、プレイして新しいシードに進みます。前回のサーバーシードが公開されます。
-
4
公開されたサーバーシード、クライアントシード、およびナンスをコピーします
3つとも、シード履歴ビューに表示されます。
-
5
任意の言語でハッシュを実行
Python、JavaScript、オンラインSHA-256ツールすべてが利用可能です。プレイしたゲームには上記のアルゴリズムをご使用ください。
-
6
比較する
計算した結果がゲーム内の結果と一致すれば、そのラウンドは公正だったことになります。任意のラウンドで繰り返し検証できます。
証明可能な公平性の機能としてのメリットとデメリット
What we like
- 信頼不要、数学的に独立して検証可能
- あなたのアカウントでプレイされたすべてのラウンドを網羅する公開シード履歴
- プラットフォームが自社RNG結果を不正操作することを暗号技術で防止
- 業界標準の実装、Stake、Roobet、BC.Gameと同じSHA-256コミット・リビール方式
- スクリプトを設定すれば、1ラウンドあたりの検証時間は約30秒です
What we don't
- スロット、ライブカジノ、またはスポーツブックの結果は対象外
- 開発者以外にとっては検証計算が容易ではない
- ほとんどのプレイヤーは実際には検証を行わず、実用的なメリットが損なわれている
- 証明可能な公平性は、出金に関する紛争やKYC遅延から保護するものではありません
- サーバーシードを頻繁に回転させるのはUX上の手間がかかる
よくある質問
自分で試してみましょう。コードMAXBETで始めて、Diceを1ラウンドプレイし、結果を検証してください。計算は必ず合います。
ShuffleでMAXBETを受け取る →