Skip to main content

Quick Access

Check out basic randomness example:

Step-By-Step Guide

Any Solana program can request and consume verifiable randomness onchain within seconds using the MagicBlock VRF SDK. By the end of this guide, you’ll have a working example that rolls a dice using verifiable randomness.
1
Write your Solana program as you normally.
2
Add CPI hooks that request and consume randomness via callback from a verified oracle.
3
Deploy your Solana program using Anchor CLI.
4
Send transactions to generate and consume randomness onchain.

Roll Dice Example

Roll Dice GIF The following software packages may be required, other versions may also be compatible:
SoftwareVersionInstallation Guide
Solana2.3.13Install Solana
Rust1.85.0Install Rust
Anchor0.32.1Install Anchor
Node24.10.0Install Node

Code Snippets

  • 1. Write program
  • 2. Request & Consume Randomnness
  • 3. Deploy
  • 4. Test
A simple roll dice program where player initialize state account to store, request and consume randomness:
pub const PLAYER: &[u8] = b"playerd";

#[program]
pub mod random_dice {
    use super::*;

    pub fn initialize(ctx: Context<Initialize>) -> Result<()> {
        msg!(
            "Initializing player account: {:?}",
            ctx.accounts.player.key()
        );
        Ok(())
    }

    // ... Additional instructions will be added here
}

/// Context for initializing player
#[derive(Accounts)]
pub struct Initialize<'info> {
    #[account(mut)]
    pub payer: Signer<'info>,
    #[account(init_if_needed, payer = payer, space = 8 + 1, seeds = [PLAYER, payer.key().to_bytes().as_slice()], bump)]
    pub player: Account<'info, Player>,
    pub system_program: Program<'info, System>,
}

/// Player struct
#[account]
pub struct Player {
    pub last_result: u8,
}
⬆️ Back to Top

Solana Explorer

Get insights about your transactions and accounts on Solana:

Solana RPC Providers

Send transactions and requests through existing RPC providers:

Solana Validator Dashboard

Find real-time updates on Solana’s validator infrastructure:

Server Status Subscriptions

Subscribe to Solana’s and MagicBlock’s server status:

MagicBlock Products