Quickstart
How to integrate Ephemeral Rollups in your Solana Program
From an integration perspective, using Ephemeral Rollups is similar to writing a multi-threaded program. Programs can offload work to an Ephemeral Rollup session to process transactions in a low-latency, high-throughput SVM runtime. The SVM runtime is provisioned just-in-time, and transactions are processed by nodes from the decentralized networks of ephemeral validators.
Ephemeral Rollups can be used with any program that targets the Solana blockchain. We maintain a library of common integrations for:
Lifecycle of the Integration
The lifecycle of integrating Ephemeral Rollups in your program is as follows:
Write your program
Write your Solana program as you normally would, using Anchor, native Rust, Bolt, C, or even assembly.
Add delegation and undelegation hooks
Accounts that are delegated can be used as writable in an Ephemeral Rollup session.
Deploy your program on Solana
Deploy your program directly on Solana.
Execute transactions
Execute transactions on-chain or off-chain using any SDKs that complies with the SVM RPC specification (web3.js, Solana Rust SDK, Unity SDK, or others).
These public RPC endpoints are currently free and supported for development:
Smart Router Devnet: https://devnet-rpc.magicblock.app
Solana Devnet: https://api.devnet.solana.com
ER Devnet: https://devnet.magicblock.app
Add delegation and undelegation hooks
Empower your program with ultra-latency transactions by adding delegation and undelegation hooks. Simply add two functions from the native Rust SDK to your program.
Delegation
Delegation
is the process of transferring ownership of one or more of your program’s PDAs
to the delegation program. Ephemeral Validators will then be able to use the PDAs
to perform transactions in the SVM runtime and commit the state.
In Rust programs, you can use the ephemeral_rollups_sdk
crate to delegate accounts.
Install it with:
Then use the delegate_account
function to delegate an account to the delegation program.
Both delegation and undelegation are CPIs that can be integrated in existing instructions of your program
Undelegation
Undelegation
is the process of transferring ownership of the PDAs
back to your program.
On undelegation, the state is committed and it trigger the finalization process. Once state it validated, the PDAs
are unlocked and can be used as normal on mainnet
Additionally, custom CPI can instruct the ephemeral validators to commit
and finalize
a state or close
a session.
Note that commit and undelegation accept a list of accounts. These accounts are committed atomically to the base layer which allows to maintain state consistency of dependent accounts
Frontend
To make it easier to integrate via the frontend, we created the Magic Router. You send transactions directly to the magic router, and we can determine for you whether it should be routed to the Ephemeral Rollup or base layer.
Differing from the standard Solana RPC flow, we need to first request the blockhash from the Magic Router, since it’ll differ based on route.
Our current Solana DevNet Magic Router endpoint is: https://devnet-rpc.magicblock.app, however this is subject to change.