Provably fairは、暗号資産ギャンブルでいちばん誤解されがちな言葉。プレイヤーはそのバッジを「カジノが誠実である保証」みたいに扱いがちだけど……違う。これは“ある1つの超ピンポイントなこと”についての保証でしかない。そして、provably fairの実装が完璧でも、数学が許す以上のスピードであなたの資金を削り取ったり、出金をじわじわ引き延ばしたり、技術的な言い分で勝ち分を無効にしたり、暗号学的な約束を1つも破らずにそれらをやってのけることは可能……。大事なのは、そのシールが「何をカバーしていて」「何をカバーしていないか」を正確に知ること。答えは、マーケが匂わせるよりずっと狭い。
1段落でわかるProvably Fair
Provably fairのゲームは、あなたがベットする前に結果をコミットし、ベットが確定したあとに検証できる形にする。カジノは、すでに選んである秘密(シークレット)の“暗号化された指紋”を公開する。あなたは自分側のランダム要素を足す……。ゲームは両方を公開された数式で組み合わせる。ラウンド後、カジノが秘密を公開し、あなたは自分で数式を再実行する。出てきた答えがゲーム表示と一致していれば、カジノは後出しで結果を決めていない。約束はそれだけ。そこを超える「provably fairの説明」は、間違ってるか、売り文句っぽいだけ。
今の段落、もう一回ゆっくり読んで「違う」って言える? :)1ラウンドを作る3つの入力
Every provably fair round is built from three values... The server seed is a random string the casino generates and hides.... Before any betting starts, the casino publishes a hash of that seed, usually SHA 256. The hash is a one way fingerprint.... If the casino tries to swap the seed later, the new fingerprint will not match the one it already showed you, and the lie is mathematically visible. Actually, The client seed is yours. most platforms let you type it in or randomize it client side... This is the input that breaks the casinos abliity to precompute the outcome, because the casino cannot know your seed when it locked in its own.公平のために言うと、nonceはカウンター。0から始まって、ベットごとに増えていき、同じserver seedとclient seedでも毎ラウンド違う結果になるようにする……。3つのうち2つはずっと公開されていて、残り1つはラウンド終了後に公開される。
見落とされがちだけど、ここでは見逃さない :)ここでHMAC SHA256が実際にやってること
マジで、3つの入力はHMAC SHA256に入れられて、64文字の16進文字列が吐き出される。その文字列は長いhexの並びとして扱われ、ゲームの結果マッピング関数がその桁を噛み砕いて、使える形にする。クラッシュの倍率、ダイスの出目、カードのドロー、Plinkoの落ち先。マッピングはゲームごとに違うけど、常に決定的(deterministic)。同じ入力なら、同じ出力。いつでも、どのマシンでも、アルゴリズムを知っていれば同じ結果になる。

だからprovably fairは、ダイス、クラッシュ、Plinko、ハイロー、マインズ……みたいなゲームに多い。結果のパターンが小さくて、機械的にシンプルだから。hex文字列を1〜100の数字にするのは簡単。hex文字列を、50スピンのMegawaysラウンド(カスケードリール、倍率、リトリガー、スキャッター発動、そしてbuy bonusのサイドゲーム)にマップするのは簡単じゃない。技術的には可能……でも商業的にはほぼ存在しない。大手スロットプロバイダで、それを出荷したところはない。
今の段落、もう一回ゆっくり読んで「違う」って言える? :)実際にベットを検証する方法
検証プロセスは、プレイヤーがほぼやらない部分。だから、もし不正したくなるカジノがいたら都合がいい。手順は短い。
実務的には、まずベット前に、公開されているserver seed hashをコピー。保存しておく……これでカジノはロックされる。次に、自分のclient seedを設定……プラットフォームが自動入力したものをそのまま受け入れない。デフォルトclient seedの罠は本当にあるし、カジノが両方の要素を選べるなら保護の半分が消える。3つ目、ラウンドをプレイ。nonceが増えていくのを見ておく。4つ目、検証したくなったら、カジノ側でseedのローテーションができる。ローテーションすると、カジノが古いserver seedを公開する。5つ目、その公開されたserver seedを自分でハッシュ化して、最初に約束されていた指紋と一致するか確認。それからserver seed+自分のclient seed+nonceを公開アルゴリズムに入れて、結果が一致するかチェック……一致すれば、そのラウンドは正しい。ハッシュが一致しなければ、カジノが途中でseedを差し替えたってこと。これはprovably fairが捕まえるために設計された、最も深刻な不正。
経験が視点を変えるこのためのツールもある。多くのprovably fairプラットフォームは検証ツール(verifier)を公開してる……独立したオープンソースの検証ツールもある。実際に欲しいのはそっち。カジノの検証ツールを信じてカジノの結果を確認するのは、論理がぐるぐる回ってるだけ。
Provably Fairが本当に証明すること
リストは短くて具体的。あなたがベットした後に、カジノが結果を決めていないこと。コミットから公開までの間に、カジノがserver seedを差し替えていないこと。公開された入力で、公開されたアルゴリズムを回したこと……以上。3つだけ。全部メカ的。全部暗号学的。全部本物。
これ、見た目よりデカい。小さくない。provably fairがなければ、中央集権型カジノは結果生成を一方的にコントロールできる。あなたは運営の言葉、監査ラボの言葉、規制当局の言葉を信じるしかなく、1回のスピンすら自分で検証できない。provably fairは信頼の層を1枚剥がして、数学に置き換える。便利。重要……でも「誠実さ」と同じ意味ではない。
証明しないこと
ここで多くのマーケページは静かにフェードアウトする。provably fairは、ゲームがカジノの言うハウスエッジになっていることを証明しない。エッジはハッシュじゃなく、結果マッピング関数の中にある。カジノは、公開上は1%のエッジのprovably fairダイスを動かしつつ、マッピングがこっそり6%のエッジを出すようにしても、各ラウンドは検証に通る……暗号は「不誠実なマッピング」に対して誠実に動く。
次行くよ..!それに、乱数生成の分布が統計的にクリーンであることも証明しない。ハッシュ出力は見た目ランダムで、理論上は一様分布。でも実務では、実際の結果分布がアルゴリズムの約束通りか確認するには、何百万ラウンドとカイ二乗検定が必要。ほとんどのプレイヤーはそんなテストをしない。
出金が支払われることも証明しない。利用規約が守られることも証明しない。大勝ち後に理由なくアカウントが閉じられて勝ち分が没収されないことも証明しない。消化中のボーナスが、あなたが払えるベットサイズでは統計的にクリア不可能になるよう“わざと”書かれていないことも証明しない……これらの問題は、provably fairが解決する「結果の不正」より、全部デカい。
見落とされがちだけど、ここでは見逃さない :)それに、provably fairはほとんどのカジノゲームには適用されない。ライセンスされたプロバイダのスロット、ライブディーラー、そして大手スタジオの多くのジャックポットはprovably fairじゃない……RNG認証か、物理的に配られてるだけ。ホームページのprovably fairバッジは、だいたい自社(in-house)ゲームだけを指してる。
Provably Fair vs 認証RNG:並べて比較
| Property | Provably Fair | Certified RNG |
|---|---|---|
| Player can verify a single round | Yes | No |
| House edge can be verified | No (mapping not auditable round by round) | No (audit is statistical, not per round) |
| Trust required in operator | Low for outocme integrity | High |
| Trust required in third party | None (math is public) | Audit lab and regulator |
| Coverage | Crash, dice, Plinko, hi lo, mines | Slots, live, jackpots, table games |
| Statistical certification | None by default | Yes (eCOGRA, iTech Labs, GLI, BMM) |
| Resistance to post bet manipulation | Strong (cryptographic) | Procedural only |
| Useful against bonus fraud | No | No |
| Useful against withdrawal stalling | No | No |
正直に読むなら、この2つは別の問題を解いてる……認証RNGはTier 1市場の規制当局を満たすために設計された。provably fairは、規制当局を間に挟まなくてもいい、暗号資産ネイティブなゲームで運営の裁量を減らすために設計された。競合として扱うと、どっちも意味が崩れる。まともな暗号資産カジノは、必要なゲームには認証RNGを使い、恩恵があるゲームにはprovably fairを使う。どちらか一方しかやってないカジノは、どこかを手抜きしていて、プレイヤーはその分を織り込むべき。
短期はノイズ、長期はシグナル。デフォルトClient Seedの罠
ぶっちゃけ、現実世界のprovably fair実装で一番悪用されやすい弱点はclient seed。数学が成立するのは、カジノがserver seed hashにコミットした時点で、あなたのseedを知らないから。もしカジノがあなたのclient seedを割り当てるなら、その保護は消える。カジノは式の両方を選べて、結果を事前計算し、それでも「provably fairでした」と言えてしまう。
必ず自分でclient seedを設定しよう。適当に打つ。キーボードをガチャガチャでもいい。文字列そのものは重要じゃない。重要なのは、カジノが生成していないこと。自分で設定しにくい/分かりにくいプラットフォームは、最低でもイエローフラグ。
同意できないことがあっても、それでOK。向いてる場所/向いてない場所
正直、provably fairは結果空間が小さくて決定的なゲームに向いてる。クラッシュはハッシュを倍率にマップする……ダイスはハッシュを数字にマップする。Plinkoはハッシュを左右の選択列にマップする……マインズはハッシュを盤面配置にマップする。こういうのはクリーンな1パスのマッピング。
実プロバイダのスロットは別物。Pragmatic PlayやNetEntのスロットは、リールの重みテーブル、ボーナストリガー、フリースピンのリトリガー、スティッキーワイルド、拡張ワイルド、倍率、そしてbuy bonusのサイドマーケットまで、全部がアニメーション付きのソフトウェアで、スタジオが運営にライセンスする。これらのスロットは、どこで遊んでもprovably fairではない。暗号資産カジノのホームページのバッジがカバーしてるのは、ほぼ確実に自社のダイスやクラッシュだけ……それが重要かどうかは、あなたが何を遊ぶか次第。