Provably Fair(証明可能な公平性)検証ツール
「Provably Fair(証明可能な公平性)」という言葉は、仕組みまで説明されることがあまりありません。これは、結果が前もって決まっていて、あとから書き換えられていないことを暗号の技術で確かめる方法です。ここではシードとノンスから実際に結果を計算し直し、その手順をひとつずつたどれます。
Provably Fair はどう動いているのか
封筒に答えを入れて先に封をしておき、終わってから開けて見せる。考え方としては、それに近いものです。
- 先に「封」をする:運営側は秘密の文字列(サーバーシード)を用意し、そのSHA-256ハッシュだけを前もって公開します。ハッシュから元の文字列を割り出すことはできません。
- プレイヤーも材料を出す:プレイヤーは自分でクライアントシードを決められます。こうすることで、運営側の都合だけで結果を決められなくなります。
- 結果をつくる:
HMAC-SHA256(サーバーシード, "クライアントシード:ノンス")の値から乱数を取り出し、ゲームの結果に置き換えます。ノンスは1回プレイするごとに1ずつ増えていきます。 - あとから「開封」する:シードを切り替えると、それまで使っていたサーバーシードが公開されます。そのハッシュが最初に示された値と一致するか、計算し直しても同じ結果になるかは、誰でも確認できます。
バイト列 = HMAC-SHA256(server, client + ":" + nonce) 乱数 = b0/256 + b1/256² + b2/256³ + b3/256⁴ ダイス = floor(乱数 × 10001) ÷ 100
乱数の取り出し方や、それをゲームの結果にどう割り当てるかは、運営によってまちまちです。このツールでは、よく見かける方式のひとつを使って流れを説明しています。
💡 誤解されやすいポイントですが、Provably Fair で確かめられるのは「結果が前もって決まっていて、途中で書き換えられていない」ということだけです。ハウスエッジ(胴元の取り分)は配当の設定にもともと組み込まれており、公平性が証明されていても、長く続けたときの期待値はマイナスのままです。
よくある質問
Provably Fairのゲームなら、勝ちやすくなりますか?
なりません。証明されるのは「結果が書き換えられていない」という点だけで、配当に組み込まれたハウスエッジはそのまま残ります。
公開されたハッシュから、サーバーシードを当てることはできますか?
SHA-256は一方向にしか計算できない関数なので、ハッシュから元の文字列を突き止めるのは現実的には不可能です。
ここに入力したシードは、どこかに送られますか?
送られません。計算はお使いのブラウザに備わったWeb Crypto APIで行っていて、サーバーには何も届きません。