random_u32、random_u8_with_range、random_bool のような helper utilities により、[u8; 32] の出力を簡単に実用的な値へ変換できます。request と consume の手順は ephemeral execution window 内で行われるため、ユーザーは外部サーバーに依存せず、検証可能な公平性を備えたリアルタイム結果を得られます。
フロー

- あなたのプログラムは CPI で MagicBlock VRF program を呼び出し、queue に request を追加します。
- ランダムネス request が queue に入ると、oracle が request を取り出してランダムネス計算を行います。
- 完了すると、結果と proof が MagicBlock VRF program に返されます。proof の検証後、VRF program は事前定義された関数を通じてあなたのプログラムへ callback し、ランダムネスを “consume” します。
MagicBlock の VRF Program はオープンソースで監査済みです。製品概要については Solana VRF 概要を参照してください。
オラクルキュー
すべてのランダムネス request は、**オラクルキュー(oracle queue)**アカウント(RequestRandomnessParams の oracle_queue フィールド)を指定します。他のすべての Solana アカウントと同様にこのキューも Solana 上に存在しますが、**委任された(delegated)**キューは ephemeral rollup の内部からのみ直接書き込み可能で、委任されていないキューはベースレイヤーで直接書き込み可能です。トランザクションが実行される場所に合ったキューからランダムネスをリクエストしてください——Solana ではベースレイヤーのキューを、ephemeral rollup 内部では委任されたキューを使用します。可能な限りアドレスをハードコードせず、ephemeral_vrf_sdk::consts の定数を参照してください。
| ネットワーク | ベースレイヤーキュー | 委任されたキュー(ephemeral rollup) |
|---|---|---|
| Mainnet | DEFAULT_QUEUECuj97ggrhhidhbu39TijNVqE74xvKJ69gDervRUXAxGh | DEFAULT_EPHEMERAL_QUEUE5hBR571xnXppuCPveTrctfTU7tJLSN94nq7kv7FRK5Tc |
| Devnet | DEFAULT_QUEUECuj97ggrhhidhbu39TijNVqE74xvKJ69gDervRUXAxGh | DEFAULT_EPHEMERAL_QUEUE5hBR571xnXppuCPveTrctfTU7tJLSN94nq7kv7FRK5Tc |
| Localnet | DEFAULT_TEST_QUEUEGKE6d7iv8kCBrsxr78W3xVdjGLLLJnxsGiuzrsZCGEvb | DEFAULT_EPHEMERAL_TEST_QUEUESc9MJUngNbQXSXGP3F67KvKwVnhaYn6kcioxXNVowYT |
Mainnet と Devnet は同じデフォルトキューアドレスを使用します——異なるのは接続するクラスターだけです。Localnet は専用のテストキューを使用し、これはローカルバリデーターが Devnet から複製します。
DEFAULT_TEST_QUEUE / DEFAULT_EPHEMERAL_TEST_QUEUE 定数は VRF SDK に同梱されています。Audit
監査レポート全文を読む
Quickstart
ランダムネス機能の追加方法を学ぶ

