FACTORY NINJA

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.

  1. 01

    Connect

    Link a wallet on a mission chain. The board, the Dōjō and your Mon follow the same address.

  2. 02

    Brief

    Name the mission, write the tagline, pick the chain and the slug. The slug becomes the prototype's subdomain.

  3. 03

    Pledge

    Sign the Ninpō — the written promise to build or refund — and approve the $NINJA stake.

  4. 04

    Forge

    Build the prototype in the Dōjō with Sensei, the AI pair. Sensei usage is metered in $NINJA.

  5. 05

    Throw

    Deploy the prototype to <slug>.factory.ninja. The Shuriken: small, thrown, live.

  6. 06

    Verify

    The platform fetches the prototype URL. It must answer over HTTPS and serve something.

  7. 07

    Arm

    Set the goal, the deadline and the stake, register the brief, then create the mission on-chain.

  8. 08

    Live

    Backers commit ETH or USDC to the on-chain escrow. Progress is public and real-time.

  9. 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.

StateTriggerWhat it means
BUILDINGGates 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.
LIVEcreate() lands on-chain (gate 08).The mission is open. Backers commit the chain's native asset to the escrow contract.
FUNDEDThe 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 LAUNCHEDThe 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.
FAILEDThe 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 fee
0%
There is no fee address in the mission contracts, the factory or the locker. Gas is the only cost.
Supply
100%
One single-sided Uniswap v4 position holds the entire supply, in an ownerless locker with no withdraw path. Locked forever.
LP fees
100% burned
The mission flow sets no beneficiaries. Fees accrue to the locked position and are burned — nobody collects, including us.

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.

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 ide.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.

NetworkChain IDGasFaucet
Base Sepolia84532ETHCoinbase Developer Platform faucet0.1 ETH per 24h per address
Arc Testnet5042002USDC (native)Circle faucetGas is test USDC — 20 per 2h per address
Robinhood Chain Testnet46630ETHOfficial 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

Robinhood Chain Testnet

CHAIN 46630
MissionCampaign
not deployed
$NINJA
not deployed
LaunchFactory
not deployed
LaunchLocker
not deployed

Uniswap v4's PoolManager, PositionManager, Permit2 and Universal Router are Uniswap's canonical deployments. Source on GitHub.