The Magicblock questline is open ✨ start your adventure and earn points today |
The Magicblock questline is open ✨ start your adventure and earn points today |
The Magicblock questline is open ✨ start your adventure and earn points today |
The Magicblock questline is open ✨ start your adventure and earn points today |
The Magicblock questline is open ✨ start your adventure and earn points today |
The Magicblock questline is open ✨ start your adventure and earn points today |
The Magicblock questline is open ✨ start your adventure and earn points today |
The Magicblock questline is open ✨ start your adventure and earn points today |
The Magicblock questline is open ✨ start your adventure and earn points today |
The Magicblock questline is open ✨ start your adventure and earn points today |
The Magicblock questline is open ✨ start your adventure and earn points today |
The Magicblock questline is open ✨ start your adventure and earn points today |
The Magicblock questline is open ✨ start your adventure and earn points today |
The Magicblock questline is open ✨ start your adventure and earn points today |
The Magicblock questline is open ✨ start your adventure and earn points today |
The Magicblock questline is open ✨ start your adventure and earn points today |
The Magicblock questline is open ✨ start your adventure and earn points today |
The Magicblock questline is open ✨ start your adventure and earn points today |

Real-time Engine

For Solana Apps

Backed By

MagicBlock empowers builders to create real-time, free, and private experiences.

Stay on Solana. No bridges. No compromises.

In just a few lines of code you can integrate Ephemeral Rollups into your program.

rust
#[ephemeral]

#[program]


pub mod counter {

    use super::*;



    /// Initialize the counter.

    pub fn initialize(ctx: Context<Initialize>) -> Result<()> {

        let counter = &mut ctx.accounts.counter;

        counter.count = 0;
       Ok(())

    }


    /// Increment the counter.

    pub fn increment(ctx: Context<Increment>) -> Result<()> {

        let counter = &mut ctx.accounts.counter;

        counter.count += 1;

        Ok(())

    }



    /// Delegate the account to the delegation program

    pub fn delegate(ctx: Context<DelegateInput>) -> Result<()> {

        ctx.accounts.delegate_pda(

            &ctx.accounts.payer,


            &[TEST_PDA_SEED],


            DelegateConfig::default(),

        )?;

        Ok(())

    }
}

Why Build With MagicBlock?

Zero Latency

1ms block time and <50ms end-to-end thanks to co-location. Say goodbye to lag, wherever your users are.