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 bytesof UTF-8 text or JSON per inscription; images ride as base64data:image/…URIs up to64KB. - 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 fromsha256(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:
| Multiplier | You receive ($RSC, lim = 420) | Mint fee |
|---|---|---|
| x1 | 420 | 0.0003 ETH |
| x10 | 4,200 | 0.003 ETH |
| x50 | 21,000 | 0.015 ETH |
| x250 | 105,000 | 0.075 ETH |
| x500 | 210,000 | 0.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
| Endpoint | Method | Description |
|---|---|---|
/api/inscribe | POST | Index an inscription tx: { txHash } (deploys and mints are auto-detected) |
/api/inscriptions | GET | Ledger feed — q (num · rsc1 id · address · txhash), kind, before, limit |
/api/stats | GET | Totals: inscriptions, scribes, bytes |
/api/tokens | GET | All deployed rsc-20 tokens with mint progress |
/api/tokens/[tick] | GET | Token detail: supply, mints, top holders |
/api/assets | GET | Holdings for ?address=0x… — inscriptions, per-tick balances, open listings |
/api/market | GET · POST | Order 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.
robinscribeapp