Introduction
MPL-Distro
Last updated August 27, 2026
MPL-Distro is a Solana program that distributes an existing SPL token to a list of wallets or legacy NFT holders. It stores a compact Merkle root on-chain instead of the full recipient list.
Summary
MPL-Distro commits a recipient list as one on-chain Merkle root, holds the tokens in a vault, and records each successful claim so it cannot be reused.
- Distribute an existing SPL token mint without storing the full recipient list on-chain.
- Target wallet addresses or current holders of specific legacy NFT mints.
- Choose permissionless, recipient-only, or permissioned claim submission.
- Recover unclaimed tokens and unused receipt-rent subsidies after the claim window.
Build a Distribution
Create, fund, and claim from a wallet distribution.
Deliver Claims in Production
Store proofs, run a claim page or API, and recover unclaimed tokens.
Choose a Distribution Type
Compare wallet and legacy NFT allocation models.
CLI
Create, fund, inspect, and recover distributions from the terminal.
MPL-Distro Distribution Model
A Merkle tree turns the recipient list into one 32-byte hash (the root). Each recipient later proves they are on that list with a short proof, so the full list never has to live on-chain.
- The distribution authority builds an off-chain list containing each recipient, amount, and optional nonce.
prepareDistributioncreates the Merkle root and one proof per allocation.createDistributionstores the root, claim window, mint, and access rules.deposittransfers the full token allocation to the distribution's associated token account.distributeordistributeToLegacyNftverifies a proof and creates a permanent claim receipt.withdrawreturns unclaimed tokens after the distribution is inactive.
Store the Claim Data
The program stores only the Merkle root, not the recipient list or proofs. Preserve each allocation's address, amount, nonce, and proof in a database or downloadable claim file.
MPL-Distro Distribution Types
MPL-Distro supports wallet-address allocations and legacy NFT-mint allocations through separate claim instructions.
| Distribution type | Merkle leaf identity | Claim instruction | Best for |
|---|---|---|---|
Wallet | Wallet or other public key | distribute | Allowances, contributor rewards, and direct token airdrops |
LegacyNft | Legacy NFT mint | distributeToLegacyNft | Rewards claimed by the NFT's current token-account owner |
The LegacyNft type pays the wallet that currently owns a listed NFT mint. See Legacy NFT Distribution for which NFTs qualify and how ownership is checked.
MPL-Distro Allowed Distributor Modes
The allowed distributor mode controls who may submit a valid Merkle claim transaction.
| Mode | Required signer | Behavior |
|---|---|---|
Permissionless | Any payer | A service or third party can submit claims on behalf of recipients |
Recipient | Recipient wallet or legacy NFT owner | The beneficiary must approve the claim |
Permissioned | Configured distributor | Only one designated distributor may submit claims |
Permissionless submission does not redirect tokens: the program always sends the allocation to the recipient's canonical associated token account.
MPL-Distro Protocol Fees
A successful Merkle claim charges a protocol fee, paid by the claim transaction payer.
| Instruction | Solana |
|---|---|
| distribute / distributeToLegacyNft | 0.002 SOL* |
* Receipt subsidies do not cover this fee.
See Protocol Fees for the current amounts across Metaplex programs.
Notes
MPL-Distro's on-chain checks protect claims but do not replace off-chain allocation validation.
totalClaimantsis metadata and does not cap the number of valid proofs.- Deposits are not checked against the sum of all Merkle allocations; fund the vault with enough tokens before claims begin.
- Claim receipts are not closed, so their rent remains allocated.
- The program targets the original SPL Token program rather than Token-2022.
- MPL-Distro does not provide vesting, streaming, partial claims, or structured program events.
FAQ
What is MPL-Distro used for?
MPL-Distro distributes an existing SPL token allocation to a fixed list of wallet addresses or legacy NFT mints through Merkle proofs.
Is MPL-Distro a token launchpad?
No. MPL-Distro distributes an existing mint; use Genesis when you need a token generation event, sale, launch pool, or bonding curve.
Can someone pay transaction fees for recipients?
Yes. Permissionless distributions let any payer submit a valid claim for a recipient, while Recipient and Permissioned modes restrict who may submit it.
Does MPL-Distro support vesting?
No. MPL-Distro releases each Merkle allocation in one claim; use Genesis project vesting for schedule-based project allocations.
Glossary
MPL-Distro uses Merkle proofs and deterministic accounts to verify and record token allocations.
| Term | Definition |
|---|---|
| Distribution | Program account containing the token mint, Merkle root, time window, authority, and claim totals |
| Distribution authority | The wallet that can update configuration, deposit tokens, and recover unclaimed funds |
| Merkle tree | Off-chain structure that produces the on-chain root and one proof per allocation |
| Merkle root | A 32-byte commitment to the complete off-chain allocation list |
| Merkle proof | Sibling hashes that prove one allocation belongs to the committed tree |
| Claim receipt | PDA proving one (distribution, recipient, amount, nonce) allocation was claimed |
| Nonce | A number that distinguishes otherwise identical recipient and amount leaves |
| Token base units | Smallest mint denomination; a 6-decimal token uses 1_000_000 units per 1.0 token |
| Receipt subsidy | Optional SOL held by the distribution PDA to reimburse claim-receipt rent |
