Permissionless Token Factory
A permissionless token factory is a contract anyone can call to deploy a new token — or a new token and its market — with no gatekeeper, no allowlist, no listing fee, and no privileged operator afterward. It is the difference between “apply to launch a token” and “call a function.”
The factory + clones pattern#
Deploying a fresh contract per token is expensive. The standard construction is a factory that stamps out minimal-proxy clones (EIP-1167): every token is a tiny proxy delegating to one shared implementation. Deployment cost collapses to roughly the cost of the proxy. Pair this with CREATE2 and each clone’s address is deterministic — a pure function of the factory, the implementation, and the salt — so the address is known before deployment and is identical across chains.
Determinism is what lets other contracts and other chains reference an instance that does not exist yet, and what lets a clone resolve to the same address everywhere while pointing at chain-local assets underneath.
Two-level factories#
A factory can be one level (factory → token) or two:
|
|
The prototype mints clones keyed by some identity (e.g. an original asset + symbol); each clone in turn issues individual tokens. A useful refinement: make() is idempotent — calling it with an existing key returns the existing clone instead of reverting — and the prototype is itself the canonical clone for a distinguished key (e.g. the native-asset pair). This is the structure behind par token issuance: a Reflector family is a clone keyed by (original, symbol), and each issue(name) inside it mints one par token.
What it confers#
- Composability — a known, deterministic interface and address per instance.
- Immutability — no operator means no upgrade, no fee switch, no pause to trust.
- No rent — gas only; the factory extracts nothing.
Caveats — ordered by severity#
- A family is only as trustworthy as whoever configured it. The first caller of
make()chooses the original, the symbol, the parameters. A factory that issues 1:1-backed tokens does not protect you from a clone wired to the wrong original or a squatted symbol. Verify the clone’s configuration, not just that “it came from the factory.” This is a fund-loss risk, not a cosmetic one. - Name/symbol collisions are inherent. Permissionless means anyone can issue a confusingly similar name. Idempotent
make()deduplicates an exact key; it does nothing about lookalikes. Identity must be established by address, never by displayed name. - Immutable means immutable. A factory deployed with a bug ships that bug forever. There is no admin to call.
What the factory cannot deploy#
A clone comes out of the factory with a name, a symbol and a decimals count, and with no icon anywhere. Nothing about deploying through a factory registers the token with a wallet, an explorer or an aggregator, and the fact that the deployment asked nobody’s permission is exactly why no registrar knows it exists. Token registration is the manual campaign that follows, and it is the one part of a permissionless launch that is not permissionless.
Prior art#
- Uniswap factory — the original permissionless pool factory; one
createPair/createPoolcall, no gate. - Token launchers — fair-launch and memecoin factories deploying token + LP in one transaction.
- Bitsy: Lepton — a permissionless fixed-supply token factory using
CREATE2+ EIP-1167. - Bitsy: Manifold / Reflector — two-level fair-launch and 1:1-mirror factories built on the same clone machinery.
External links#
- EIP-1167 — Minimal Proxy Contract
CREATE2(EIP-1014) — deterministic addresses- Reflector factory reference — a worked two-level factory