Skip to main content

Overview

Ephemeral SPL Tokens let you hold and move SPL tokens inside a MagicBlock Ephemeral Rollup (ER) with the same low latency as any other delegated state, then settle back to Solana’s base layer. They are the token primitive behind MagicBlock’s private payments — but the primitive itself is general: a transfer can be public or private. Everything is powered by the on-chain Ephemeral SPL Token program (SPLxh1LVZzEkX99H6rqYizhytLWPZVV296zyYDPagv2), which implements MIMD 0013.

Ephemeral SPL Token program

On-chain program + hosted API. SPLxh1LV…

Quickstart

Delegate a token account, transfer on the ER, withdraw — end to end.

Building a prediction market or trading protocol?

See how token custody fits with session keys, price oracles, cranks, and settlement.

The model

A normal SPL token account lives on Solana’s base layer. To move tokens at ER speed, the Ephemeral SPL Token program introduces two account types.

Ephemeral ATA (eATA)

An ephemeral ATA is a program-owned PDA derived from [owner, mint] that holds a single u64 balance. It is not a real SPL token account — it is a lightweight balance record that can be delegated to the ER and mutated there at high speed.

Global Vault

The real tokens are custodied in a per-mint Global Vault — a PDA derived from [mint] that owns the SPL token account backing every eATA of that mint. Depositing moves real tokens into the vault and credits your eATA’s u64; withdrawing does the reverse.
An eATA tracks a balance; the Global Vault holds the actual tokens. One vault backs all eATAs for a given mint.

Delegation lifecycle

eATAs follow the standard Ephemeral Rollup lifecycle:
1

Deposit & delegate

Real tokens move into the mint’s Global Vault, your eATA is credited, and the eATA is delegated to a MagicBlock validator so it can be mutated inside the ER.
2

Transact on the ER

Transfer between eATAs inside the rollup at low latency. Transfers can be public or private (visibility).
3

Undelegate & commit

The eATA is committed and undelegated back to the base layer.
4

Withdraw

Tokens move out of the Global Vault back to a standard base-layer SPL token account.

Public vs. private

The primitive supports both:
  • Public — a normal fast transfer between eATAs on the ER.
  • Private (Private Payments) — the destination and settlement are shielded: private visibility, encrypted/queued settlement, and stealth handles (a human-readable name such as alice@magicblock.id that resolves to one or more destination keys). This is the use case behind the Private Payments guide.

Two ways to integrate

On-chain / SDK

Integrate directly in your own Anchor program and client with @magicblock-labs/ephemeral-rollups-sdk — delegate a token account, transfer on the ER, withdraw.

Hosted REST / MCP API

Let the hosted API build unsigned transactions for deposit, transfer, withdraw, balances, swap, and private payments.