Aviatorのアルゴリズム解説:技術ガイド完全版
Aviatorの最も重要な特長の一つが、プロバブリーフェア(検証可能な公平性)アルゴリズムです。これは暗号技術を用いた仕組みで、どのプレイヤーでも、あるラウンドのクラッシュポイントが公正に決定され、操作されていないことを自分で検証できます。このガイドでは、その仕組み、背景にある数学、そして結果を自分で検証する方法を説明します。
「プロバブリーフェア」とは何か
従来のカジノゲームでは、運営側が結果を操作していないと信じるしかありません。プロバブリーフェアのシステムは暗号学的ハッシュ関数を使うことで、この「信じる」という前提を不要にします。いったん確定した結果を後から変更することは、数学的に不可能だからです。
基本原則は次のとおりです。
- ラウンドの前に、サーバーはハッシュを公開することで結果をコミット(確約)します
- ラウンドの後に、サーバーは原像(ハッシュの生成に使われたシード)を公開します
- コミットされたハッシュと公開されたシードが一致するかどうかを検証できます
- 一致すれば、結果は操作されていません
SHA-512ハッシュ関数
SHA-512(Secure Hash Algorithm 512-bit)は暗号学的ハッシュ関数で、プロバブリーフェアなゲームにとって重要な2つの性質を持っています。
性質1:決定性
同じ入力からは、常に同じ出力が得られます。
- 入力:"hello" → 出力:
9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043
性質2:原像攻撃への耐性
ハッシュ値から元の入力を逆算することは、計算上不可能です。世界中の計算能力を総動員しても、あるSHA-512ハッシュに対応する入力を見つけるには、宇宙の年齢より長い時間がかかります。
つまり、サーバーがラウンドの前にハッシュを公開した場合、後から元のシードを変更すると、まったく異なるハッシュになってしまい、すぐに見破られます。
入力値:サーバーシードと3つのクライアントシード
Aviatorのクラッシュポイントは、4つの入力値から生成されます。
サーバーシード
ラウンドの前にサーバーが生成するランダムな文字列です。サーバーはベットの受け付け前にこのシードのSHA-256ハッシュを公開し、ラウンド終了後にシード本体を公開します。
クライアントシード
そのラウンドで最初にベットした3人のプレイヤーのクライアントシードが集められ、ラウンドの詳細に表示されます。これらの値は互いに独立したプレイヤーから得られるため、運営側が合成後の入力値を事前に知ることはできません。
入力値の結合
サーバーシードと3つのクライアントシードを連結し、SHA-512でハッシュ化します。得られた128文字の16進数文字列が、クラッシュポイントを決定します。
クラッシュポイントの計算方法
Spribeは、SHA-512ハッシュを倍率に変換する正確な計算式を公開していません。以下の解説では、Bustabitによって広まったオープンな参照実装(ノンス付きのHMAC-SHA256ラウンドハッシュ)を使い、ハッシュがどのように倍率になり、その分布がP(crash ≥ x) = 0.97/xを満たすのかを示します。AviatorのSHA-512パイプラインも同じ原理に従っています。つまり、ハッシュの先頭ビットを取り出し、倍率に変換し、ハウスエッジを適用します。
この参照実装では、クラッシュポイントは次の決定的な手順で導かれます。
ステップ1:ラウンドハッシュを生成する
round_hash = HMAC-SHA256(server_seed, client_seed + ":" + nonce)これにより、64文字の16進数文字列が得られます。例:
a7b3c8d2e9f14056789012345678901234567890abcdef1234567890abcdef12ステップ2:ハッシュから数値を取り出す
ハッシュの先頭8文字(32ビット)を取り出し、16進数から10進数に変換します。
h = parseInt(hash.substring(0, 8), 16)
// Example: "a7b3c8d2" → 2,813,000,914hの最大値は2^32 − 1 = 4,294,967,295です。
ステップ3:クラッシュポイントの式を適用する
crash_point = floor((1 − houseEdge) × 2^32 / (2^32 − h)) / 100ここでhouseEdge = 0.03(3%)です。
簡略化すると次のとおりです。
crash_point = floor(0.97 × 4,294,967,296 / (4,294,967,296 − h)) / 100特殊ケース:即時クラッシュ
ハウスエッジを直接反映する別の条件があります。次の条件が成り立つ場合:
h mod 33 === 0...計算式の結果にかかわらず、ラウンドは1.00×で即座にクラッシュします。これは1/33 ≈ 3.03%の確率で発生し、ハウスエッジを確保する役割を果たします。
具体例で見てみましょう
あるラウンドのハッシュの先頭8桁の16進数が4f2a1b3cだとします。
h = 0x4f2a1b3c = 1,328,284,988
2^32 = 4,294,967,296確認:1,328,284,988 mod 33 === 0 でしょうか。いいえ → 計算式に進みます。
crash_point = floor(0.97 × 4,294,967,296 / (4,294,967,296 − 1,328,284,988)) / 100
= floor(4,166,117,577 / 2,966,682,308) / 100
= floor(1.4043...) / 100
= 140 / 100
= 1.40×このラウンドのクラッシュポイントは1.40×になります。
この式で正しい分布が得られる理由
P(crash ≥ x) = 0.97 / xという関係は、この構成から数学的に導かれます。
クラッシュポイントがx以上になるためには、ハッシュから得られる値hが次を満たす必要があります。
0.97 × 2^32 / (2^32 − h) ≥ x
→ 2^32 − h ≤ 0.97 × 2^32 / x
→ h ≥ 2^32 × (1 − 0.97/x)一様ランダムなhがこれを満たす確率は次のとおりです。
P(h ≥ 2^32 × (1 − 0.97/x)) = 1 − (1 − 0.97/x) = 0.97/xしたがって、ちょうどP(crash ≥ x) = 0.97/xになります。ハウスエッジの式は、クラッシュポイントの導出に数学的に組み込まれているのです。
結果を自分で検証する方法
ステップ1:ラウンドのデータを記録する
どのラウンドでも、終了後に次の情報を控えてください。
- サーバーシードのハッシュ(ラウンド前に表示)
- サーバーシード(ラウンド後に公開)
- 最初の3人のベットしたプレイヤーのクライアントシード
ステップ2:ハッシュのコミットメントを検証する
SHA-256(server_seed)を計算し、事前にコミットされたハッシュと一致することを確認します。一致すれば、コミット後にサーバーシードが変更されていないことになります。
ステップ3:クラッシュポイントを再計算する
上記の式を使って、シードからクラッシュポイントを再計算します。表示されたクラッシュポイントと一致すれば、そのラウンドは公正でした。
AviatorStatsのProvably Fair Checkerを使う
AviatorStats.comのProvably Fair Checkerツールを使えば、この一連の作業をすべて自動化できます。
- 公開されたサーバーシードと、ラウンドの詳細に表示される3つのクライアントシードを入力します
- ツールがSHA-512による結合を計算し、hを取り出し、クラッシュの式を適用して、期待されるクラッシュポイントを表示します
- ゲームに表示された結果と比較します。完全に一致するはずです
これにより、手計算をしなくても、ラウンドの公正性について暗号学的な確証が得られます。
プロバブリーフェアが保証すること、保証しないこと
保証すること:
- クラッシュポイントが、コミット後に変更されていないこと
- 結果が、シードによって数学的に決まること
- ハウスエッジが、規定どおりちょうど3%であること
- 誰でも過去のどのラウンドも独自に検証できること
保証しないこと:
- 特定のラウンドであなたが勝てること
- 結果の並びが、個々のプレイヤーにとって「公平」であること
- 戦略によって、組み込まれたハウスエッジを覆せること
- 過去の結果が将来の結果を予測すること(予測できません)
プロバブリーフェアのシステムは透明性を確保するための仕組みであり、勝つための道具ではありません。ゲームが表示どおりに運営されていることを保証するもので、それ自体には価値がありますが、長期的な期待値の数学とは別の問題です。
Aviator の分析ツールをご利用ください
当サイトのライブ統計、分布分析、トレンドチャート、provably fair 検証ツールで Aviator のデータを分析できます。すべてのツールは無料で、登録は不要です。
関連ガイド
ゲームガイド:
戦略と分析:
詐欺に関する警告:
プラットフォームガイド:
免責事項:この技術的な解説は教育目的です。アルゴリズムを理解しても、結果を予測する上での優位性は得られません。Aviatorの結果は、各ラウンドの前には暗号学的に予測不可能です。ギャンブルは必ず責任を持って行ってください。