Skip to main content
Dice のロールには運営者のシークレットが一切使われません。ベットが実行された時点で取得される Solana のスロットハッシュ、あなたのアカウントアドレス、そして個人のベットカウンターからオンチェーンで導出され、ベットを行ったのと同じトランザクション内で精算されます。運営者が選べるシードは存在せず、後から公開するものもありません。 このページでは、すべての Dice のロールの背後にある正確な仕組みを説明します。Dice は Provably Fair の仕組みの中で最も単純なケースです。運営者のシークレットがまったく存在しません。ロールは公開された入力から導出され、ベットを行うのと同じトランザクション内でオンチェーンで精算されます。

Dice にコミットのステップがないのはなぜですか?

Crash にコミットされたシークレットが必要なのは、ラウンドの進行中、結果が 確定しているが隠されている 必要があるからです。ダイスのロールにはそのような段階がありません。結果は、それを引いたのと同じ命令の中で使われます。そのため、シークレットをコミットする代わりに、導出には運営者の入力を一切使いません。コミットするものも公開するものもなく、運営者が有利に選べるシードもありません。 エントロピーは Solana ネットワーク自体から得られ、あなたのベットを識別する値と組み合わされます。
  • slothash:ベットのトランザクションが実行された時点での、Solana の SlotHashes sysvar の最新エントリ。これはネットワークが生成するエントロピーで、トランザクションの作成時点では分かりません(送信者は、トランザクションがどのスロットに取り込まれるかを正確に知ることができません)。
  • user:オンチェーンのユーザーアカウント(プログラムがあなたのウォレットから導出するアカウント)の32バイトのアドレス。これにより、ロールはプレイヤー間で独立します。同じスロットに取り込まれた2つのベットでも、異なるロールになります。
  • nonce:オンチェーンに保存され、プレイするたびに増加する個人のベットカウンター。これにより、同じスロット内であっても自分の連続したベットが互いに独立し、二重送信の防止も兼ねています。

Dice のロールの正確な式は?

再計算の際に重要な詳細:
  • ハッシュの入力は、次の順序どおりに連結したものです。ASCII タグ "dice"、スロットハッシュ、ユーザーアカウントのアドレス、そして 8バイトのリトルエンディアンでエンコードしたナンス。
  • サンプルは SHA-256 出力の先頭16バイトをビッグエンディアンの符号なし128ビット整数として読み取り、10,000 で剰余を取ったものです。
  • 128ビットのサンプルを 10,000 で剰余を取ることによる理論上の偏りは 2⁻¹¹⁴ 未満で、ハウスエッジより何十桁も小さいため、補正せずに記載するにとどめています。

勝利条件と配当

選択する勝率は 2% から 98% の範囲でなければなりません。現在のエッジ 1.5%(edge_bps = 150)では次のとおりです。 期待リターンはどの目標値でも同じです。勝率 × 倍率 ≈ 賭け金の 98.5%(切り捨てにより、最大1ベーシスポイント分ハウスに有利になります)。現在のエッジと上限は手数料と上限に記載しています。

保証されていること、されていないこと

プログラムによって強制されること:
  • ロールの導出と精算は、プログラムが自ら読み取る入力を使って、1つのオンチェーン命令の中で行われます。バックエンドがロールを提供することはなく、偽って報告することもできません。
  • 運営者は導出に一切入力を与えません。有利な結果が出るまで試行を繰り返せるサーバーシードは存在しません。
  • ナンスは正確に一致しなければならないため、同じベットが誤って(または悪意によって)2回プレイされることはありません。
  • すべてのプレイで導出の入力と結果がすべて公開されるため、過去のどのロールでも誰でも再計算できます。
正直な注意点:送信タイミング。 Dice のベットはガス代不要です。MCC のバックエンドがあなたに代わってトランザクションに署名し送信するため、いつ 送信するかは運営者が制御します。スロット N−1 のハッシュはスロット N の開始時に公開されるため、非常に低遅延な運営者であれば、ベットが現在のスロットに取り込まれた 場合 のロールを予測し、送信を遅らせて引き直すことが理論上可能です。この仕組みは、それが存在しないふりをするのではなく、この点を認めています(これをなくすには VRF オラクルが必要ですが、ベットごとのコストが少額ベットにおけるハウスの期待値を上回ってしまいます)。これを制約しているのは次の点です。
  • 取り込みは完全には制御できません。トランザクションが取り込まれる正確なスロットを決めるのは送信者ではなくネットワークです。
  • すべての入力が公開されるため、送信遅延のパターンや、全体の勝率と表示された確率とのずれは、公開データから誰でも測定できます。組織的な不正を隠し続けることはできません。

Dice のロールを検証するには?

すべてのプレイで、ベット自身のトランザクション内に DiceBetSettled イベントが発行されます。このイベントには、slothash、user、nonce、target_bps、direction、win_chance_bps、roll、multiplier_bps、is_win に加え、精算の完全な内訳など、必要な情報がすべて含まれています。検証方法:
  1. Solana エクスプローラーでベットのトランザクションを開き、イベントのフィールドを読み取ります(アプリの Dice 画面ではセッションの公平性データの入力値が表示され、ベット履歴からトランザクションにリンクしています)。
  2. sha256("dice" ‖ slothash ‖ user ‖ nonce) を再計算し、先頭16バイトをビッグエンディアンで読んで 10,000 で剰余を取り、イベントの roll と比較します。
  3. 勝敗の判定(アンダーは roll < target、オーバーは roll > target)と倍率を、上記の式と照合します。
エクスプローラーからイベントデータを読み取る一般的なヒントは、ラウンドを検証するを参照してください。 ゲーム自体の遊び方は、Dice ゲームガイドを参照してください。