CSRAGE

Provably Fair CS2

すべての結果は暗号的に検証できます。プレイヤーもハウスも改ざんできません——自分で証明できます。

仕組み

1

コミット

プレイ前にランダムな server seed を生成し、その SHA-256 hash を表示します。これでコミットメントが固定され、あとから変えられません。

SHA256(server_seed) → a3f8c1d…
2

プレイ

あなたの client seed と増加する nonce が server seed と組み合わさり、HMAC-SHA256 で結果が決まります。

HMAC(server, client:nonce:0) → result
3

検証

シードをローテーションすると、前の server seed が公開されます。元のコミットメントとハッシュが一致するか確認し、自分で結果を再現してください。

✓ Hash matches → outcome is authentic

ゲーム検証

ケースを開くたびに HMAC-SHA256 で、server seed(鍵)とメッセージ からランダムな float を導出します。

float は 1〜100,000 の チケット になります。ケース内の各アイテムは連続したチケット範囲を持ち、合計はちょうど 100,000。あなたのチケットを含む範囲のアイテムが結果です。

verify-case.js
1const crypto = require('crypto');
2
3function verifyCaseRoll(serverSeed, clientSeed, nonce) {
4  const hmac = crypto.createHmac('sha256', serverSeed);
5  hmac.update(`${clientSeed}:${nonce}:0`);
6  const buf = hmac.digest();
7
8  const float =
9    buf[0] / 256 +
10    buf[1] / 65536 +
11    buf[2] / 16777216 +
12    buf[3] / 4294967296;
13
14  const ticket = Math.floor(float * 100000) + 1;
15  return { ticket, float };
16}
17
18// Verify the server seed commitment
19function verifyHash(serverSeed, expectedHash) {
20  const hash = crypto.createHash('sha256')
21    .update(serverSeed).digest('hex');
22  return hash === expectedHash;
23}
24
25// Each case item owns a ticket range.
26// All ranges sum to 100,000.
27// The item whose range contains your ticket wins.

ケースロールを検証

あなたのシード

アクティブなシードペアの確認、client seed の変更、またはローテーションして現在の server seed を公開できます。

シード履歴

server seed が公開済みの過去のシードペア。以前のゲームの検証に使えます。

About this page

ハウスは結果を操作できるのか?

いいえ。ラウンドの前に、アクティブなserver seedの SHA-256 ハッシュを公開します。実際のシードはプレイ中は秘密のままですが、ハッシュは固定されています。異なる結果を設計するためにシードを交換した場合、新しいシードは異なるハッシュを生成し、ローテーションした瞬間にそれをキャッチすることになります。独自のclient seedとゲームごとのnonce を組み合わせると、すべてのロールが事前にコミットされ、事後に再現可能となり、サーバーが気に入らない結果を「再実行」する余地がなくなることを意味します。

server seed、client seed、nonceとは何ですか?

server seedは、バックエンドによって選択される長いランダムな値であり、使用中は秘密に保たれます。 SHA-256 ハッシュのみが公開されます。client seedはランダムな値で、デフォルトで生成されるか、設定で自分で選択した値です。 nonce は、アクティブなシードペアでゲームが行われるたびに 1 ずつ増加するカウンターです。この 3 つは一緒に HMAC-SHA256 関数に供給されます。同じ入力は常に同じ結果を生成するため、あらゆるスピンをバイトごとに再現できます。

検証するためにシードをローテーションする必要があるのはなぜですか?

検証には平文のserver seedが必要ですが、プレイ中にそれを公開すると、誰でも次の結果を予測できるようになり、すべてのポイントが無効になります。ローテーションはこれを解決します。ローテーションすると、現在のserver seedが廃止されて公開され、将来の再生のために新しいserver seed (新しいハッシュを持つ) がコミットされ、nonceがリセットされます。その瞬間から、ローテーション済みseedでプレイされたすべてのゲームを確認できるようになり、次のゲームは新しいシードでコミットされます。

独自のclient seedを設定できますか? 設定する必要がありますか?

はい。 「設定」→「Provably Fair」を開き (または、このページで「あなたのシード」までスクロールし)、単語、数字など、任意のclient seedを入力して、[回転] をクリックします。その瞬間から、あらゆる結果がシードに混合されるため、ハウスはそれを事前に予測することはできません。フィールドを空白のままにしておくと、強力なランダムなフィールドが生成されます。どちらの運用でも Provably Fairです。カスタムシードを設定すると、主に安心感が増し、友人に結果を説明するときにより良い監査ストーリーが得られます。

シードをローテーションするにはどうすればよいですか?

[設定] → [Provably Fair] (またはこのページの [シード] パネル) に移動し、[シードを回転] をクリックします。ローテーションにより現在のserver seedがすぐに明らかになるため、server seedでプレイされた過去のすべてのゲームを確認し、新しいserver seedを生成してそのハッシュを公開し、選択したclient seed (空白の場合は新しいランダムなシード) を適用して、次のラウンドに備えてnonceをゼロにリセットできます。クールダウンはありません。クリーンに監査したいセッションの直前も含め、好きなだけローテーションできます。

nonceとは何ですか?なぜそれが重要なのでしょうか?

nonce は、現在のserver seed/client seedのペアでプレイされるラウンドごとに 1 ずつ進むゲームごとのカウンターです。これが、たとえシードペアが同じであっても、連続するゲームをユニークなものにするものです。すべてのnonceが異なる HMAC 出力を生成し、したがって異なる結果が生成されます。ラウンドを検証するときは、使用された正確なnonceを提供する必要があります。そうしないと、検証者は異なる (そして間違った) 結果を再現します。

ケースバトルs ではフェアネスの扱いがどのように異なりますか?

ケースバトルでは、ロビー内のすべての座席で単一のコミットされたサーバーシードを共有しますが、各座席は同じ共有ケースに対して独立したロールを必要とします。シートごとの個人client seedなしでこれを機能させるには、HMAC 入力で共有server seed、ラウンドnonce、およびプレーヤーのユーザー ID を混合します。各シートのロールは固有で検証可能であり、共有server seedはバトルが終了すると公開されるため、誰でもバトル中のスピンをリプレイできます。

ルーレット、Mines、ブラックジャック、またはケースラウンドを確認するにはどうすればよいですか?

このページの検証ツールを開いて、一致するゲームを選択します。各検証者には、公開されたserver seed (必要に応じて最初にローテーション)、ラウンド時のclient seed、およびラウンドnonceが必要です。さらに、Minesのmine count、ケースのケース ID、バトルのシートのユーザー ID などのゲーム固有の入力が必要です。ベリファイアは、サーバーが生成した正確な結果を再現します。結果がゲームの画面に表示されたものと異なる場合は、シードを保存し、すぐにサポートに連絡してください。

client seedを失ったり、nonceを保存しなかったりした場合はどうなりますか?

アクティブなシードペアと決着したすべてのラウンドのnonceはアカウントに保存されるため、後で「設定」→「Provably Fair」から、またゲーム内履歴 (ケース開封、ハンド履歴、Mines履歴など) から取得できます。値を書き留めずにシードをローテーションしても問題はありません。前のシードペアはアーカイブされて表示されたままになるため、いつでもそのラウンドを確認できます。

Provably Fairは規制当局の監査と同じものですか?

いいえ、それは別物です。Provably Fairとは「どのラウンドもサーバーが事前にコミットした入力からだけ結果が決まっている」ことを保証するしくみであり、プラットホームが後から好きな結果を選びなおせないという意味になります。その一方で、それ単体ですべてのゲーム長期ハウスエッジや払い戻しの正当性、特定法域でのコンプライアンスまで保証するわけではありません。CSRAGE は Provably Fairに内部統制と(必要なら)第三者レビューを重ねていますが、両者が同義ではなく補完的な関係にあるとお考えください。

あなたの検証ツールを使用する代わりに独自の検証ツールをスクリプト化できますか?

はい。すべてのゲームの正確なアルゴリズムは、このページにプレーンな JavaScript で文書化されています。暗号化プリミティブ (コミットメントハッシュの SHA-256、ラウンドごとの描画の HMAC-SHA256) は、主要な言語の標準ライブラリ関数であるため、スニペットを Python、Go、Rust、またはその他のものに移植できます。独立した検証者はコミュニティ全体を支援します。スクリプトが画面上の結果と一致しない場合は、入力を保存して、リファレンス実装を比較できるように連絡してください。

もっとプレイするとオッズは有利に変化しますか? それとも不利になりますか?

いいえ。各ラウンドの結果はシードペアとそのラウンドのnonceにのみ依存します。あなたの履歴、レベル、連勝記録、残高などは RNG に反映されません。長いセッションでは、根本的な確率が変化するのではなく、ラウンドを重ねるごとに分散が平準化されるため、気分が異なります。検証者はそれを証明しています。単一ラウンドを単独でリプレイでき、結果はそのラウンドの入力以外には依存しません。