Docs

How Immoto works, in the order things happen. Every number on this page is enforced by immutable contracts; the addresses are at the bottom. Launching a collection? Read the creator handbook.

Creator handbook → · agents: /llms.txt

Quick start

  1. Connect a wallet and switch to Arc (chain id 5042; testnet 5042002). Gas is paid in USDC — there is no separate gas token.
  2. Hold USDC on Arc. Bridge or transfer it; on testnet use the Circle faucet.
  3. Buy a seat on the Launch page. The panel shows the exact cost with every fee line before you confirm.
  4. Stake it on My Seats. From that block it earns a share of every swap fee in the protocol, streamed in USDC.
  5. Claim whenever you like, sell back to the pool at the current price, list the NFT on any marketplace, or use a staked seat as the license to launch a collection.

The unit

IMMOTO is a DN-404 pair: an ERC-20 token and an ERC-721 collection that mirror each other. Holding one whole unit (1.0 IMMOTO) materializes an NFT — the portrait is rendered fully onchain from the seat's id and a committed seed. Selling below a whole unit dissolves the NFT again (last acquired first); buying back a whole unit gives you the next free id. There are 5,042 seats: 4,992 on the launch curve, 50 in the protocol treasury (never staked by the protocol).

Contracts do not receive NFTs by default (so a pool or a vault holding IMMOTO never mints portraits); a contract that wants them can opt in.

Launch curve

The curve is a single-sided Uniswap v4 position owned by the protocol's POL vault. Nobody bought in before you: there is no presale, no whitelist, no team allocation. Buyers' USDC stays in the pool forever, so the pool always has a bid.

TrancheSeatsPrice bandUSDC in the pool at the end
140% · 1,997 seats10 → 40 USDC≈ 40,000 USDC
235% · 1,747 seats40 → 200 USDC≈ 156,000 USDC
325% · 1,248 seats200 → ∞never sells out

Right after a launch, buys carry a surcharge that fades linearly from 27% to 0 (paid to stakers) so bots cannot sweep the cheap tranche: one minute for IMMOTO, one hour by default for collections, ten seconds for launch tokens. Primary sales — the first time a unit leaves the pool — also pay a 10% mint fee.

Trading

The pool is a real Uniswap v4 pool, open to any swapper and all four swap kinds (exact-in and exact-out, buy and sell). This app routes through the Immoto router, which also lets you buy a collection with USDC in a single transaction (two hops). A Uniswap interface, an aggregator or your own contract can swap in the same pool and pays the same fee.

Quotes on this site are exact: the router pays what the quoter says or reverts. Every buy shows the pool price, the swap fee, the launch surcharge (if any) and the mint fee (if the unit is a primary sale) as separate lines.

Staking and tenure

Stake a seat and it becomes a position NFT: the token sits in escrow, the NFT stays in your wallet and can be sold on marketplaces — tenure and pending rewards travel with it. The portrait lights up while staked and shows tenure marks.

Staked forWeight
0 – 7 days×1.00
7 – 30 days×1.50
30 – 90 days×2.00
90+ days×3.00

Weights change at the boundaries; anyone can poke a seat to apply its new tier (this app does it for you). Unstaking starts a 3-day cooldown with zero weight and resets tenure; withdrawing returns exactly 1.0 IMMOTO with the same id. A seat used as a collection license is locked for 30 days. Nothing is burned, nothing is locked forever.

Rewards

Fees are collected by the hook into destination-locked pots. Anyone can flush a pool: the staker share is sent to the reward engine and streamed linearly over 7 days to every staked seat in proportion to weight; the POL share goes to the vault; dev and creator shares wait to be claimed by their owners. Rewards are pull-based: you claim, in USDC (from the IMMOTO pool) and in IMMOTO (from collections). If a native payout fails (Arc blocklist), the amount stays pending and can be claimed later.

While nobody is staked the clock freezes — nothing is lost; the first staker restarts the stream.

Fees

PoolTradeFeeWhere it goes (‰)
IMMOTO/USDCbuy / sell3%stakers 90 · dev 5 · POL 5
IMMOTO/USDCrouter hop (to or from a collection)1%stakers 90 · dev 5 · POL 5
Collection/IMMOTObuy / sell2%collection stakers 65 · IMMOTO stakers 15 · creator 10 · POL 5 · dev 5
IMMOTO / collectionslaunch surcharge on buys27% → 0 over 1 minute (IMMOTO) · 1 hour (collections)stakers
Launch token / quotebuy / sell2%creator 50 · IMMOTO stakers 17.5 · dev 7.5 · burn 25
Launch tokenlaunch surcharge on buys99% → 0 over 10 sIMMOTO stakers
Launch tokenlaunch fee1 USDCIMMOTO stakers
any poolmint fee on primary sales10% of the pool priceIMMOTO: dev · collections: 5 dev / 5 creator

There is no LP fee and no protocol fee at the Uniswap level. Fees are always taken in the pool's quote currency (USDC for IMMOTO, IMMOTO for collections); a buy that specifies the USDC amount pays its mint fee in the collection token instead. The table shows the values at deployment; the owner can re-tune a pool's fee and split within hard caps (fee at most 10%, mint fee at most 20%, the split only among the pool's existing destinations) — every page reads the live values from the chain, and every change is logged onchain. Curve and tiers are immutable.

One pool, for life

Every collection, IMMOTO included, has exactly one AMM pool: its Immoto pool. The token is locked to that pool — it cannot be moved into any other pool, so nobody can spin up a fee-free copy, and every swap, from any interface, pays the stakers. This is what makes a staked seat a claim on the whole protocol's volume rather than on this website's.

Everything else is free: send the token wallet to wallet, list the NFT on any marketplace, hold it in any contract. The lock is permanent by design; there is no “graduation”.

Protocol liquidity

‰50 of every fee goes to the POL vault. Anyone can call compound(): the vault's USDC becomes a bid band just below the price and its IMMOTO an ask band just above, in the IMMOTO/USDC pool — permanent, unremovable, no swap involved. The hook rejects every liquidity removal, from anyone, forever.

Collections

Once the IMMOTO pool holds 100,000 USDC, anyone with a staked seat can launch a collection: name, symbol, supply (100–100,000 units) and a start price in IMMOTO. The whole supply goes onto the same three-tranche curve, priced in IMMOTO (p0 → 4·p0 → 20·p0 → ∞), against a single-sided pool the vault opens with zero capital. The creator receives no tokens.

The staked seat is the license: it is locked for 30 days and, as long as it stays staked, the creator earns ‰100 of the pool fee and half of the mint fee, plus the ERC-2981 royalty (5%, ERC721-C enforced) on marketplaces. If the seat is unstaked or sold, that share is redirected to IMMOTO stakers until the collection is relicensed with another staked seat.

Buying a collection with USDC is two hops in one transaction: USDC → IMMOTO (1% hop fee) → collection (2%). Every collection trade routes through the IMMOTO pool and every collection's POL share deepens it.

Launch tokens

Anyone can launch a plain token — no seat, no license. The whole supply goes on the same three-tranche curve (p0 → 4·p0 → 20·p0 → ∞) against a single-sided pool that never sells out and whose liquidity can never be withdrawn. The token is an ordinary ERC-20: it can be moved and traded anywhere from block one; the Immoto pool is simply the deepest market it has. “Graduation” is a badge (backing ≥ the creator's target), nothing moves.

Paired asset. USDC, IMMOTO, or an ERC-20 the owner has allowlisted (tokenized stocks as they arrive on Arc). Buyers of USDC- and IMMOTO-paired tokens pay USDC; for IMMOTO-paired tokens the router buys IMMOTO on the way in (1% hop to IMMOTO stakers), so every trade buys IMMOTO and the token's backing is IMMOTO.

Fees. 1 USDC to launch, streamed to IMMOTO stakers. Every trade pays 2% of the quote leg: 1% to the creator, 0.5% to the protocol (‰700 IMMOTO stakers / ‰300 dev) and 0.5% burn: that share buys IMMOTO in the IMMOTO/USDC pool (paying the 3% fee to stakers like any other buy) and sends it to the sink, an address nobody controls; IMMOTO-paired tokens sink their IMMOTO directly. Buys in the first 10 seconds after a launch pay a 99% → 0 surcharge (to IMMOTO stakers); the creator's own first buy inside the launch transaction is exempt.

Backing is the honest number on every token page: the quote the pool holds, which is what sells are actually paid from — usually far below a headline market cap. Tokens paired with IMMOTO move together: buying any of them buys IMMOTO, and a broad sell-off compounds through the hub in the same way.

Art for a collection

Art can be set before launch on the Create page, so every unit has metadata from its first block, and changed later from the collection page by the creator (until frozen — freezing is permanent). Three options:

Protocol placeholder. Symbol, id and state on cream paper; never broken on marketplaces.

Metadata files. One JSON file per unit — units are numbered #1 to #N — on IPFS or Arweave, in the OpenSea format (name, description, image, attributes); the token's metadata becomes <base><id>.json. A second base URI, optional, gives staked and cooling-down units a different look.

Onchain renderer. A contract implementing tokenURI(uint256 id, uint8 state, uint256 tenure) that returns a data URI, like Immoto does for its own portraits. State and tenure let the art react to staking.

Arc specifics

Arc's native gas token is USDC (18 decimals in the EVM), so the app shows one balance. Blocks are ~0.5 s. Native transfers can fail for blocklisted addresses; every payout in Immoto is a pull, and a failed claim simply stays pending. Arc has no onchain randomness; trait assignment comes from a seed committed once at deployment.

Contracts

The contracts cannot be upgraded. The owner can pause swaps and staking for the first 12 months only (never claims or withdrawals), ban contract venues by codehash, re-tune fees and splits within hard caps, set the defaults for new launches and collections, and allow paired assets. Curve, tiers, supply, the sink and the router are fixed at deployment; liquidity can never be removed by anyone. Every owner action is an onchain event. Source: the repository linked in the footer.

Risks

  1. Smart-contract risk. The contracts cannot be upgraded and are unaudited until the audit report is published here. A bug can result in the total loss of funds. Use only what you can afford to lose.
  2. Permanent liquidity. USDC and IMMOTO placed in the pool by the protocol can never be withdrawn by anyone, including the team. Selling is the only way out and is always at the pool's current price.
  3. No guarantee of value or yield. The price of IMMOTO and of every collection follows a bonding curve and market demand. Staking rewards depend entirely on trading volume; they can be zero. Sophisticated traders can exchange IMMOTO claims inside the Uniswap PoolManager without paying the fee; only trades that deliver real tokens pay stakers.
  4. Fees. Every swap pays a 3% (IMMOTO) or 2% (collection) fee to stakers, dev and protocol liquidity; primary sales pay a 10% mint fee; buys right after a launch pay a surcharge that fades to zero (one minute for IMMOTO, up to an hour for collections, ten seconds for launch tokens). Fees are never refunded. The owner can re-tune a pool's fee and split within hard caps (fee at most 10%; the split only among that pool's existing destinations) and can pause swaps during the first 12 months; every such change is an onchain event.
  5. Cooldowns and locks. Unstaking takes 3 days and resets tenure. A seat used as a collection license is locked for 30 days. Nothing is locked forever.
  6. Launch tokens. Anyone can launch a token with any name, symbol or image, including ones that imitate an existing project; the contract address is a token's only identity. Backing — the amount the pool actually holds — is what sells are paid from and is usually far below a headline market cap. Tokens paired with IMMOTO move together with IMMOTO.
  7. Independent project. Immoto is an independent project. It is not affiliated with, endorsed by or operated by Circle, Arc, Uniswap Labs or any exchange. Third-party wallets, marketplaces and routers are outside the protocol's control.
  8. Eligibility. You confirm that you are not a resident of, or acting on behalf of a person in, a jurisdiction where using this protocol is prohibited, and that you are not on any sanctions list. Nothing here is investment, legal or tax advice.

Terms of use

This website is an interface to immutable smart contracts on the Arc network. By using it you agree that: (1) you use it at your own risk and are solely responsible for your transactions, keys and compliance with the laws of your jurisdiction; (2) the software is provided “as is”, without warranty of any kind, and no party involved in building or hosting it is liable for any loss; (3) nothing on this site is investment, legal or tax advice, and no return is promised or implied; (4) the interface may be changed, paused or discontinued at any time — the contracts keep working without it; (5) you are not a person, and not acting for a person, subject to sanctions or resident in a jurisdiction where using this protocol is prohibited; (6) Immoto is independent and not affiliated with Circle, Arc, Uniswap Labs or any wallet, exchange or marketplace you may use with it.

The notice shown on your first visit is a summary of this section; accepting it is stored only in your browser.

Glossary

Seat
One unit of IMMOTO: 1.0 token and, while whole and held by a wallet, one NFT.
Liquid seat
A seat that trades as a token; its NFT dissolves if the balance drops below 1.0.
Position
A staked (or cooling-down) seat: the token is in escrow, the NFT is transferable and carries tenure and rewards.
Tenure
Time since the seat was staked; sets the reward weight; reset by unstaking.
Cooldown
The 3-day wait between unstake and withdraw; zero weight during it.
Curve
The three single-sided tranches that sell the supply; USDC that enters never leaves.
Primary sale
A unit leaving the pool for the first time (tracked by a high-water mark); pays the 10% mint fee.
Hook
The Uniswap v4 contract that charges the fee, splits it into pots and enforces the routing lock.
POL
Protocol-owned liquidity: the vault's permanent positions in the IMMOTO/USDC pool.
License
The staked seat that authorises a collection; locked 30 days; earns the creator share while staked.
Flush
Permissionless call that moves collected fees from the hook's pots to their destinations.

FAQ

Can I lose my seat?+

Only by selling it. Nothing is burned, no position expires, the protocol never takes principal.

Why does the price only go up along the curve?+

Because the pool is single-sided and USDC never leaves: every buy moves the price up the curve, every sell moves it down along the same curve. The curve is the market; there is no other source of supply.

Do I earn if nobody trades?+

No. Rewards are swap fees; zero volume means zero rewards. Tenure keeps building, so your weight is higher when volume returns.

Can I trade on Uniswap or an aggregator?+

Yes — same pool, same fee. The pool is open to any swapper; only moving the token into a different pool is impossible.

Can the team change the fees, pause my funds or take the liquidity?+

Fees and splits: yes, within caps written into the contracts (a pool's fee can never exceed 10%, and a split can only move money among that pool's existing destinations — the owner cannot add itself as one). Your funds: never — liquidity removal always reverts, claims and withdrawals cannot be paused, and pots already collected keep their split. The owner can pause swaps and staking during the first 12 months and ban contract venues by codehash.

What happens to a collection whose creator disappears?+

It keeps trading; the creator share is redirected to IMMOTO stakers until someone relicenses it with a staked seat. The art stays as last set; if frozen, it stays forever.