Ephemeral Rollup Lifecycle

An Ephemeral Rollup (ER) is a temporary high-speed execution environment on Solana. Accounts are delegated to an ER, transactions execute with near-instant finality, and state is committed back to the Solana base layer.

Lifecycle Overview

  Solana Base Layer              Ephemeral Rollup
  ─────────────────              ────────────────
        │
   1. DELEGATE ──────────────────────► Account cloned
        │                                    │
        │                             2. EXECUTE
        │                                transactions
        │                                (gasless, fast)
        │                                    │
   3. COMMIT ◄───────────────────────── State synced
        │                                    │
        │                             4. Continue or...
        │                                    │
   5. UNDELEGATE ◄───────────────────── Final commit
        │                                  + return
   Account restored
   with latest state

1. Delegate

Delegation transfers ownership of a Solana account to the MagicBlock Delegation Program. The account is then cloned to the target ER validator.

Using the Console

CLI:

mb-console er delegate <ACCOUNT_ADDRESS> --project my-game

The ER region is determined by the project configuration.

Web: Project page → Accounts → “Delegate Account” → paste address → confirm.

MCP: delegate_account tool with account address and project name.

What Happens

  1. A transaction is sent to the Delegation Program (DELeGGvXpWV2fqJUhqcF5ZSYMS4JTLjteaAMARRSaeSh)
  2. Account ownership transfers to the Delegation Program
  3. The ER validator clones the account state
  4. The account is now writable on the ER

Delegation Status

Check whether an account is delegated:

mb-console er status <ACCOUNT_ADDRESS>

Returns:

{
  "isDelegated": true,
  "validator": "devnet-us.magicblock.app",
  "validatorPubkey": "MUS3hc9TCw4cGC12vHNoYcCGzJG1txjgQLZWVoeNHNd",
  "delegatedAt": "2026-03-06T12:00:00Z"
}

2. Execute

Once delegated, transactions targeting the account are routed to the ER via the Magic Router. Execution is fast and optionally gasless.

Magic Router

The Magic Router automatically detects whether an account is delegated and routes transactions accordingly:

  • Delegated accounts → routed to ER
  • Regular accounts → routed to Solana

Endpoint: https://devnet-router.magicblock.app

You don’t need to change your transaction code. Point your connection to the Magic Router and it handles routing transparently.

Performance

MetricSolanaEphemeral Rollup
Block time400ms~50ms
Transaction fee0.000005 SOL0 (gasless)
Confirmation~500ms~100ms

3. Commit

Committing writes the current ER state back to the Solana base layer. This is how ER state becomes finalized on-chain.

mb-console er commit <ACCOUNT_ADDRESS> --project my-game

Commit Modes

ModeDescriptionUse Case
ManualExplicit commit via consoleOn-demand sync
PeriodicAuto-commit at intervalsBackground sync
On UndelegateAutomatic with undelegationSession end

Cost

Each commit costs 0.0001 SOL (paid on base layer).

4. Undelegate

Undelegation performs a final commit and returns account ownership to the original program.

mb-console er undelegate <ACCOUNT_ADDRESS> --project my-game

After undelegation:

  • Account state is finalized on Solana
  • Account is writable on Solana again
  • ER no longer tracks this account

Session Fee

Each ER session (delegate → undelegate cycle) costs 0.0003 SOL.

Account State Diff

The Console provides a diff view between ER state and base layer state:

mb-console er diff <ACCOUNT_ADDRESS>

This shows what data has changed on the ER since the last commit.

Web: Project → Accounts → click account → “State Diff” tab.

Managing Multiple Accounts

Delegate accounts one at a time and list all delegated accounts:

mb-console er delegate <ACCOUNT_1> --project my-game
mb-console er delegate <ACCOUNT_2> --project my-game

mb-console er list --project my-game

Error Handling

ErrorCauseResolution
Account not foundInvalid addressVerify the account exists on Solana
Already delegatedAccount is on another ERUndelegate first, then re-delegate
Insufficient fundsNot enough SOL for feesFund wallet with devnet SOL
Validator unavailableER node is downTry a different region

Next Steps