Specimen (ERC-721)
Registers an existing ERC-20 as a type card.
token address pair address contenthash bytes32 templateId uint32 parentId uint256 bornBlock uint64
Settlement layer · type specimens
A registry of primary specimens on Ethereum L1. Identity and lineage live in contract state. Everything else is decoration.
.--.
|o_o | pepe: "where is truth"
|:_/ |
// \ \
(| | )
/'\_ _/`\
\___)=(___/
|
v
┌───────────────────┐
│ website / ui │ ← feels
│ (not canon) │
└─────────┬─────────┘
│ reads
v
┌───────────────────┐
│ L1 Lectotype │ ← IS canon
│ ERC-721 specimen │
│ + events │
└─────────┬─────────┘
│ points at
v
┌───────────────────┐
│ existing ERC-20 │
│ + Uni pair │
└───────────────────┘
pepe rule: if not on L1, it didn't happen
bytes32 contenthashes.
pepe finds token on L1
|
v
┌────────────────────┐
│ does Uni pair exist│
│ + liq floor ok? │
└─────────┬──────────┘
no / \ yes
/ \
v v
┌────────┐ ┌─────────────────┐
│ sad │ │ post bond │
│ pepe │ │ register(...) │
│ exit │ │ mint specimen │
└────────┘ └────────┬────────┘
|
v
┌─────────────────┐
│ challenge window│
│ (N days) │
└────────┬────────┘
/ \
nobody someone
disputes disputes
| |
v v
┌────────────┐ ┌─────────────┐
│ bond back │ │ arb writes │
│ card final │ │ winning │
│ │ │ contenthash │
└────────────┘ └─────────────┘
rare pepe: one specimen per token. forever.
Registers an existing ERC-20 as a type card.
token address pair address contenthash bytes32 templateId uint32 parentId uint256 bornBlock uint64
Archetype IDs. Thin enum, not lore.
id → labelHash permissionless or gated
Genealogy as state + events.
Forked(child, parent) Migrated(from, to) parentId on specimen
Proof of historical balance → stamp.
storage / Merkle proof verify on L1 soulbound or 1155
┌──────────┐
│ template │
│ #0001 │
└────┬─────┘
│
┌────────────┼────────────┐
v v v
┌──────────┐ ┌──────────┐ ┌──────────┐
│ specimen │ │ specimen │ │ specimen │
│ α │ │ β │ │ γ │
│ parent:0 │ │ parent:α │ │ parent:α │
└────┬─────┘ └──────────┘ └──────────┘
│
v
┌──────────┐
│ specimen │
│ δ │
│ parent:α │ ← fork / rename / migrate
└──────────┘
galactus pepe: the graph IS the product
chart sites decorate. we own the edges.
Permissionless mint without friction fills the shelf with noise. Draft gate:
contenthash / parent / template can be disputed; winner written back on L1.
spam pepe ──post──► [register]
|
liq too smol?
/ \
yes no
| |
v v
REVERT bond locked
|
wait N days
|
challenged?
/ \
yes no
| |
v v
resolve bond → pepe
on L1 card stays
Expect roughly 200–400k gas per register. Pack structs. Fat events for indexers; skinny SSTORE. Multicall for curator backfill of historical specimens. Immutable v1 preferred; if upgradeable, UUPS + timelock.
┌─────────────────────────────────────┐
│ fat EVENT logs cheap to emit │
│ skinny SSTORE expensive, rare │
│ bytes32 only no strings fren │
│ multicall backfill curator pays │
└─────────────────────────────────────┘
|
v
pepe pays gas once → canon forever
[1 NFT] → [2 backfill] → [3 open mint]
|
v
[4 explorer]
|
v
[5 caught?]
apu: "we ship when pepe can read a card on-chain"
┌─────────┐ ┌─────────┐ ┌─────────┐
│ basket │ │ launch │ │ trade │
│ token │ │ pad │ │ ui │
└────┬────┘ └────┬────┘ └────┬────┘
│ │ │
└───────────────┴───────────────┘
|
v
NO. (clueless pepe leaves)