The rules
How Factory Ninja works
A mission lists with a live prototype, not a logo. Backers commit the chain's native asset to an on-chain escrow. Meet the goal and the escrow funds the build; miss it and every backer refunds.
01 — The founder flow
The Nine Gates
Nine steps from an empty wallet to a funded mission. Each gate costs something real — attention, signature or stake — so the missions that pass them are the missions that mean it.
- 01
Connect
Link a wallet on a mission chain. The board, the Dōjō and your Mon follow the same address.
- 02
Brief
Name the mission, write the tagline, pick the chain and the slug. The slug becomes the prototype's subdomain.
- 03
Pledge
Sign the Ninpō — the written promise to build or refund — and approve the $NINJA stake.
- 04
Forge
Build the prototype in the Dōjō with Sensei, the AI pair. Sensei usage is metered in $NINJA.
- 05
Throw
Deploy the prototype to <slug>.factory.ninja. The Shuriken: small, thrown, live.
- 06
Verify
The platform fetches the prototype URL. It must answer over HTTPS and serve something.
- 07
Arm
Set the goal, the deadline and the stake, register the brief, then create the mission on-chain.
- 08
Live
Backers commit ETH or USDC to the on-chain escrow. Progress is public and real-time.
- 09
Strike
Goal met: escrow and stake release to the founder and the token launches. Goal missed: backers refund.
Walk the gates in order at /start. Progress is saved locally per slug.
02 — States
Mission lifecycle
Five states, one direction. Every transition is an on-chain event or a creator signature — the board mirrors the chain, never the other way around.
| State | Trigger | What it means |
|---|---|---|
| BUILDING | Gates 01–06: the brief is registered, the prototype is not yet verified. | The prototype is being forged in the Dōjō. Private to the founder's Mon; never on the public board. |
| LIVE | create() lands on-chain (gate 08). | The mission is open. Backers commit the chain's native asset to the escrow contract. |
| FUNDED | The goal is met and release() executes (gate 09). | The escrow and the stake pay out to the creator. The mission token launches with locked liquidity. |
| FULLY LAUNCHED | The founder signs a production URL after funding. | The real product is live at the founder's own URL. The prototype stays as the archive of proof. |
| FAILED | The deadline passes with the goal unmet. | Each backer pulls their own refund. The stake returns to the founder — unless it was slashed. |
03 — Money
Escrow
The escrow contract holds the chain's native asset — ETH on Base and Robinhood Chain, USDC on Arc. It has exactly three ways out.
- Goal met
- release() sends the whole escrow plus the stake to the creator. The founder builds the real product with the funds — that is the point of a mission, not a pre-order.
- Deadline passed, goal unmet
- Every backer pulls their own commit back with refund(). Nobody — not the founder, not the platform — can route the escrow anywhere else.
- Abandoned mission
- The $NINJA stake is the cost of walking away. It is slashed only after a mission has already failed, by the contract owner's single on-chain power.
release() and refund() are permissionless: when the conditions hold, anyone can call them — no platform signature, no waiting on us.
04 — The gate
The prototype gate
Before a mission opens, the founder deploys a working prototype from the Dōjō and the platform fetches it: HTTPS only, it must answer, and it must serve something. A logo and a pitch deck list nowhere.
After funding, the prototype stays online at <slug>.factory.ninja as the archive of proof — the record the next mission is judged against.
05 — After the strike
Tokens
A funded mission launches its token through the launchpad. Plain ERC-20, fixed supply, no mint, no pause, no owner.
- Platform cut
- 1% of supply
- Sent to the immutable platform reserve at launch (MissionLaunchFactory, 100 bps). Not a trading-fee skim — the protocol takes no cut of swap fees.
- Supply
- 1B fixed
- 1% to the reserve, the backer share to escrow, the rest seeded as Uniswap v4 liquidity in an ownerless locker with no withdraw path. Locked forever.
- LP fees
- 100% to vault
- The mission launch names the creator fee vault as the sole recipient (10_000 bps). Trading fees accrue to it, not to the platform.
06 — The token of the platform
$NINJA
$NINJA pays for work and proves intent. Two uses today.
- Dōjō credits
- Sensei usage in the Dōjō is metered in $NINJA.
- Founder stake
- Escrowed per mission, returned when the mission settles, slashed on abandonment.
- Values
- 1,000 $NINJA stake per mission on the testnets. Mainnet values are not set.
$NINJA lives on Robinhood Chain Testnet (the home chain). Holding the stake there gates mission access on every chain — create and back on Base Sepolia or Arc still require ≥ 1,000 $NINJA on Robinhood. Testnet $NINJA is a separate throwaway token on each testnet — not bridged, no value. The mainnet token and its distribution are undecided.
07 — Words
Glossary
- Sensei
- The AI coding agent in the Dōjō. One who comes before.
- Dōjō
- The workspace at dojo.factory.ninja where prototypes are built.
- Mission
- A funded campaign: backers escrow capital for a deliverable the founder builds.
- Kunai
- The build phase. The tool that measures, not the weapon.
- Shuriken
- The prototype deploy. Small, thrown, delivered instantly.
- Ninpō
- The founder's written pledge, wallet-signed, shown on the mission page.
- Mon
- The reputation profile: the missions a wallet founded and backed.
- Jutsu
- A starter template in the Dōjō.
- Teisatsu · Kanchō · Kishu
- Backer tiers by contribution — scout, spy, raider.
- Nine Gates
- The nine-step founder flow, from Connect to Strike.
08 — Where this runs
Chains & faucets
Missions run on the three testnets. The mainnets are wired for the token launchpad only — mission escrow is not deployed there yet.
| Network | Chain ID | Gas | Faucet |
|---|---|---|---|
| Base Sepolia | 84532 | ETH | Coinbase Developer Platform faucet0.1 ETH per 24h per address |
| Arc Testnet | 5042002 | USDC (native) | Circle faucetGas is test USDC — 20 per 2h per address |
| Robinhood Chain Testnet | 46630 | ETH | Official faucetFaucet eligibility unverified |
Arc pays gas in native USDC — the same balance as the ERC-20 face at 0x3600…0000. Keep the 18-decimal native and 6-decimal ERC-20 faces apart.
09 — Source of truth
Contracts
Read the code before you trust the copy. Mission escrow on the testnets, token launchpad per chain — an address not deployed anywhere reads exactly that.
Base
CHAIN 8453- MissionCampaign
- not deployed
- $NINJA
- not deployed
- LaunchFactory
- not deployed
- LaunchLocker
- not deployed
Robinhood Chain
CHAIN 4663- MissionCampaign
- not deployed
- $NINJA
- not deployed
- LaunchFactory
- not deployed
- LaunchLocker
- not deployed
Arc
CHAIN 5042- MissionCampaign
- not deployed
- $NINJA
- not deployed
- LaunchFactory
- not deployed
- LaunchLocker
- not deployed
Base Sepolia
CHAIN 84532- MissionCampaign
- 0xa0bF2a9Ae83602D159F475414F0a1f65aB3f4C3D
- LaunchFactory
- 0xD67E1477f8668749328e46f75DCa78ad88CAa92E
- LaunchLocker
- 0xe2AD0B9456944241B16b16698F1FE58605a2A532
Robinhood Chain Testnet
CHAIN 46630- MissionCampaign
- 0x0004ce2a737736Cf059e4235EeB215051F160dAF
- LaunchFactory
- 0xF4AD3B2E524bc669954aC5d9b945996AA3049f0A
- LaunchLocker
- 0x99F62EC56d31Ff67766B77313Eb7FcE10055Da62
Arc Testnet
CHAIN 5042002- MissionCampaign
- 0x28443A50073115E2AB418C4C1FCF8A1F11da956e
- LaunchFactory
- 0x4668f9f2BD1695aAab378324bC66e2E6c8cC41B3
- LaunchLocker
- 0xD67E1477f8668749328e46f75DCa78ad88CAa92E
Uniswap v4's PoolManager, PositionManager, Permit2 and Universal Router are Uniswap's canonical deployments. Source on GitHub.