robinscribeapp

Docs · protocol reference

How robinscribeapp works.

The inscription protocol, the rsc-20 token standard, the mint vault, marketplace settlement, and the indexer API — all on one page.

01 overview

Fully on-chain inscriptions

robinscribeapp writes data permanently onto the Robinhood chain using calldata inscriptions: a transaction whose data field carries the payload as UTF-8 bytes. Nothing is stored in contract state — the chain itself is the storage layer, and the transaction is the proof.

The app is an indexer. Your wallet signs and broadcasts the transaction; the indexer reads it back over RPC, validates it, decodes the calldata, and assigns the next sequential inscription number. Anything the indexer accepts can be independently re-derived from chain data alone.

  • Identity — your wallet address. No accounts, no off-chain signatures.
  • Payloads — up to 1024 bytes of UTF-8 text or JSON per inscription; images ride as base64 data:image/… URIs up to 64KB.
  • Flat fee — every inscription (text, JSON, image, deploy) costs 0.0003 ETH, paid to the RobinscribeVault alongside the calldata.
  • Mints — rsc-20 mints pay the fee per repetition: x10 costs 0.003 ETH, x500 costs 0.15 ETH.
  • Content id — every inscription gets an rsc1… id derived from sha256(number:author:content).

02 rsc-20

The rsc-20 token standard

rsc-20 is a JSON inscription convention in the spirit of BRC-20. Deploys are open to everyone — the first deploy of a tick wins and every token gets its own page at /token/<tick>.

Deploy — 0.0003 ETH, like any inscription

{ "p": "rsc-20", "op": "deploy", "tick": "rsc", "max": 21000000, "lim": 420 }
  • tick — 3-8 letters or digits, unique.
  • max — total supply cap.
  • lim — amount credited per single mint.

Mint — 0.0003 ETH per mint, paid to the vault

{ "p": "rsc-20", "op": "mint", "tick": "rsc", "amt": 420 }

amtis the amount you mint, and it must be a whole multiple of the token's lim. The example above is a single mint of $RSC (lim = 420) for 0.0003 ETH. One transaction can carry up to x500 mints — "amt": 4200 is x10 — and the fee scales linearly, verified against the transaction value:

MultiplierYou receive ($RSC, lim = 420)Mint fee
x14200.0003 ETH
x104,2000.003 ETH
x5021,0000.015 ETH
x250105,0000.075 ETH
x500210,0000.15 ETH

The final mint of a token is clipped to the remaining supply. There is no transfer op: the mint inscription itself is the asset — sell it on the marketplace and the balance it carries moves to the buyer.

Referrals — 10% of the mint fee

Every token page gives you a personal link, /token/<tick>?ref=0xYourWallet. Mints routed through it carry an optional ref field in the on-chain payload, and the referrer earns 10% of the mint fee. Self-referrals earn nothing; earnings show up under my assets.

{ "p": "rsc-20", "op": "mint", "tick": "rsc", "amt": 420, "ref": "0xReferrer…" }

03 vault

The RobinscribeVault contract

Every inscription is sent to the vault contract with the payload in calldata and the fee in value. The vault accepts any calldata through its payable fallback, so the inscription stays raw on-chain while the fees accumulate in the contract balance.

The fees belong to the community. Once the mint completes, early access participants can claim the accumulated inscription and mint fees from the vault — the platform does not keep them.

The indexer refuses to index an inscription unless tx.to == vault and tx.value ≥ reps × 0.0003 ETH (reps = 1 for everything except multi-mints).

04 marketplace

Listings and settlement

  • Tokens only — the marketplace trades rsc-20 mint inscriptions exclusively, with a separate order book per token. Plain text, JSON, and image inscriptions are not listable.
  • Listing — an on-chain op: the holder etches {"p":"rsc-20","op":"list","num":2,"price":0.001} from my assets. The indexer verifies ownership and opens the ask.
  • Settlement— the buyer pays the seller directly with an on-chain ETH transfer. The indexer verifies the payment transaction (recipient and amount must match the listing) and reassigns the inscription — and any rsc-20 balance it carries — to the buyer's wallet.
  • Cancel — also an on-chain op: {"p":"rsc-20","op":"cancel","num":2} from the seller closes the ask. Filled listings are final.

A payment transaction can settle only one listing — the indexer rejects reused hashes.

05 indexer api

HTTP endpoints

EndpointMethodDescription
/api/inscribePOSTIndex an inscription tx: { txHash } (deploys and mints are auto-detected)
/api/inscriptionsGETLedger feed — q (num · rsc1 id · address · txhash), kind, before, limit
/api/statsGETTotals: inscriptions, scribes, bytes
/api/tokensGETAll deployed rsc-20 tokens with mint progress
/api/tokens/[tick]GETToken detail: supply, mints, top holders
/api/assetsGETHoldings for ?address=0x… — inscriptions, per-tick balances, open listings
/api/marketGET · POSTOrder book · list / buy / cancel actions

Chain configuration. The indexer verifies transactions against the RPC set in RHC_RPC; the wallet network comes from NEXT_PUBLIC_RHC_CHAIN_ID / NEXT_PUBLIC_RHC_RPC, and the vault address from MINT_CONTRACT / NEXT_PUBLIC_MINT_CONTRACT. Until the Robinhood chain RPC is configured, the platform runs in devnet mode and indexes inscriptions without on-chain verification.