MOLT-1
The molting SPL token standard. A MOLT-1 token can change its name, ticker and image after launch. The mint, the supply, every balance and the pool stay exactly the same — only the skin changes.
01Abstract
MOLT-1 describes a fungible SPL token whose Metaplex metadata stays writable for its whole life, with the launchpad as the only update authority. A rewrite of that metadata is called a molt. A molt can be requested by the token's creator, committed in advance as a schedule, or produced automatically by a keeper that follows the market.
Nothing about ownership is touched by a molt. Holders keep the same token in the same account; their wallet simply shows a new name and image the next time it reads the metadata.
02Motivation
On most launchpads a token's identity is frozen the moment it is minted. If the meme fades, the only way forward is a new token, a new pool and a migration that splits the community. MOLT-1 separates the two layers that are usually welded together:
- The asset — mint, supply, balances, liquidity. Permanent.
- The skin — name, ticker, image, description. Replaceable.
A token can follow the culture instead of being left behind by it, and the community that holds it never has to move.
03Terminology
| Term | Meaning |
|---|---|
| Skin | The current name, symbol, image and description of a token. |
| Molt | One on-chain rewrite of the skin. |
| Instar | The molt counter. Instar 0 is the skin a token hatched with; each molt adds one. |
| Hatch | The launch transaction that creates the mint, metadata and pool. |
| Mode | Who decides the next skin: manual, scheduled or auto. |
| Keeper | The launchpad service that applies scheduled and auto molts. |
| Dormant | A token the keeper will never molt (see 4.2). |
04The molting token
4.1 Mint and supply
A MOLT-1 token is a classic SPL Token mint — not Token-2022 — with 6 decimals and a fixed supply of 1,000,000,000. The mint authority is revoked in the hatch transaction, so supply can never grow.
4.2 Metadata account
Metadata is created through Metaplex Token Metadata with is_mutable = true and the launchpad as update authority. The launchpad never hands that authority to anyone else and never flips mutability off.
If a token's metadata ends up immutable, or its update authority is not the launchpad, the token is marked dormant and the keeper skips it forever.
4.3 Skin limits
| Field | Rule |
|---|---|
| Name | 1–32 bytes (UTF-8), single line, no invisible or control characters |
| Symbol | 1–10 letters or digits, case kept as typed |
| Image | PNG, JPEG, WEBP or GIF, up to 5 MB, pinned to IPFS |
| URI | IPFS (served through a gateway), at most 200 bytes |
| Description | Optional, up to 500 characters, single line |
4.4 Off-chain document
The URI points to a standard Metaplex JSON document. MOLT-1 adds two attributes so explorers and marketplaces can show that the token molts:
{
"name": "Nymph",
"symbol": "NYMPH",
"image": "ipfs://…",
"description": "…",
"attributes": [
{ "trait_type": "Molts", "value": 2 },
{ "trait_type": "Mode", "value": "scheduled" }
]
}
05Molts
5.1 The transaction
A molt is exactly one Solana transaction with two instructions:
- Metaplex
UpdateMetadataAccountV2(discriminator15) writing the new name, symbol and URI. - A memo of the form
molt:shed:<instar>.
The launchpad signs and pays the fee. Holders sign nothing.
5.2 Invariants
A molt never changes:
- the mint address, supply or decimals;
- any balance or token account;
- the bonding curve or graduated pool;
- the update authority or the mutable flag;
- royalties, creators or collection fields.
5.3 Instars
Every molt increments the instar by exactly one. The full history of skins is append-only and public: each one is anchored by its memo on-chain, so anyone can rebuild a token's past from the chain alone.
06Molt modes
The creator picks a mode at hatch. It decides who chooses the next skin and when.
| Mode | Who decides | When | Can switch |
|---|---|---|---|
| Manual | Creator | Whenever they sign a request | To auto |
| Scheduled | Creator, in advance | Fixed offsets after hatch | No |
| Auto · trending | The market | Every keeper round | To manual |
Manual
Only the wallet that hatched the token can request a molt. The request is a signed message, valid for 5 minutes and usable once. Signing is free; the launchpad submits and pays for the transaction, so a token can molt by hand at most once a minute.
Scheduled
The creator commits up to 4 future skins at hatch, each with an offset in hours after launch. Offsets must strictly increase and stay within 720 hours (30 days). Upcoming skins stay hidden until they are applied, and the plan cannot be edited afterwards.
Auto · trending
Each keeper round, the token takes on the name, ticker and image of a Solana memecoin trending at that moment. Trending data comes from Birdeye, with DexScreener as fallback. The token never holds, buys or trades the coin it mirrors — it only borrows the look.
07Creator authorization
Creator actions are authorized with an Ed25519 signature over a human-readable message — not a transaction, so nothing can be moved by signing it. The server:
- rebuilds the exact message from the request fields;
- checks that the
issuedtimestamp is within the last 5 minutes; - verifies the signature against the wallet that hatched the token, and rejects a signature it has already seen.
# example message — field order and spacing are exact
Molt · request a molt
mint: <mint address>
name: Pupa
symbol: PUPA
image: ipfs://<cid>
description: -
issued: 2026-10-23T14:02:11.000Z
An empty description is written as -. To keep the current picture, image is its ipfs:// address. To change it, the new file travels inside the same request and image is sha256:<hex> of that file — the server checks the hash and pins the file only after the signature, the cooldown and the lease have passed. The metadata URI is not part of the message: the server pins the JSON and only then knows its address.
08The keeper
The keeper is the launchpad service that turns schedules and trends into molts. It runs two loops:
- Schedule loop — every 30 seconds, applies any scheduled skin that has come due.
- Trend loop — every
KEEPER_INTERVAL_MINminutes (30 by default), molts every auto token.
Trend assignments rotate each round, and a token is never handed the coin it is already mirroring.
09Concurrency and safety
Every molt — manual, scheduled or auto — goes through a single code path that first takes a lease on the token: a conditional write that only one worker can win. Leases expire after 3 minutes.
- If the on-chain transaction fails, the lease is released and the token keeps its current skin.
- If the trending sources are down, the keeper skips that round rather than guessing.
10Launch lifecycle
- Design — pick the first skin, socials and mode.
- Pin — image and metadata are pinned to IPFS.
- Hatch — one transaction creates the mint, metadata and bonding-curve pool, with an optional first buy by the creator. A fresh mint key signs it once and is discarded — after the pool exists it controls nothing.
- Verify — the server simulates the transaction before your wallet is asked to sign, and after it lands checks the pool, the creator and the metadata authority on-chain.
- Live — the token trades on its curve and molts by its mode.
- Graduate — liquidity migrates to a DAMM v2 pool.
11Market structure
| Parameter | Value |
|---|---|
| Curve | Meteora Dynamic Bonding Curve, quoted in SOL |
| Starting market cap | ≈ 30 SOL |
| Graduation | ≈ 550 SOL market cap (≈ 104 SOL in the curve) |
| Trading fee | 2% on the curve and on the graduated pool |
| Graduated liquidity | Migrated to Meteora DAMM v2 and locked permanently |
| Molt fee | None — the launchpad pays the transaction |
12Trust model
Holding the update authority gives the launchpad exactly one power: rewriting the skin. Everything that touches value is out of reach.
- rewrite name, ticker, image and description
- submit and pay for molts
- pause molting for a token (dormancy)
- mint, or change supply or decimals
- move or freeze any balance
- change the pool or touch graduated liquidity
Judge a molting token by its mint address, its history and its market — not by the skin it wears today.
13Integrating
13.1 Detecting MOLT-1 tokens
A token is MOLT-1 when all three hold:
- its metadata account is mutable;
- its update authority is the Molt launchpad;
- its hatch transaction carries the memo
molt:hatch.
13.2 Indexing molts
Watch for memos matching molt:shed:<n>. When you see one, re-read the metadata account and the JSON behind its URI. Cache by mint, never by name or ticker — those change.
13.3 HTTP API
The public API ships together with the launchpad. Planned endpoints:
| Endpoint | Returns |
|---|---|
POST /api/molt | Applies a creator-signed manual molt (section 7) |
GET /api/specimens?mint= | One token with every skin it has worn |
GET /api/specimens | Tokens with current skin, mode and instar |
GET /api/molts | Molt history, newest first, filterable by mint |
GET /api/trending | The trend set the keeper is using this round |
GET /api/config | Curve parameters, keeper interval, limits |
GET /api/keeper | Keeper status and the time of the next round |
14FAQ
Do holders have to do anything when a token molts?
No. Nothing is signed, claimed or migrated. The same tokens sit in the same account; only the name and image change.
Can a molt change my balance or the price?
A molt cannot touch balances, supply or the pool. The market may react to a new skin, but the molt itself moves no value.
Why does my wallet still show the old name?
Wallets and explorers cache metadata. Most pick up the new skin within minutes; some only refresh when you reopen the app.
Can a creator stop molting?
An auto token can switch to manual and simply never request another molt. A scheduled plan is fixed at hatch and runs to the end.
What if the keeper goes down?
Nothing breaks. Tokens keep their current skin until the keeper is back, then due scheduled skins are applied in order.
How do I find a token after it has molted?
By its mint address — it never changes. Every past skin also stays in the token's public history.
15Versioning
This is revision 1 of MOLT-1. Later revisions will only add to it. A token always keeps the guarantees of the revision it hatched under.