Protocol documentation

Docs

How a launch works, where the trading fee goes, and what is actually deployed. Written to be checkable against the code, not to sell anything.

Status. Nothing is deployed. There is no factory, no curve and no basket on Robinhood Chain yet, so every address on this site reads SOON and every list is empty. This page describes the design as it stands, not a running system. No part of it has been audited, and the numbers in the parameters table are intentions rather than readings off a contract.

How a launch works

A launch is one transaction. It creates the coin, its curve and its basket together, and points the curve's fee at that basket. After it lands there is no owner step left: the creator cannot redirect the fee, pause a claim or withdraw what the basket holds.

Four things happen over the life of a coin, in this order:

  1. Launch. Name the coin, pick what its fee should buy, sign once.
  2. Trade. Buys and sells settle against the curve. Each one pays a fee into the basket.
  3. Draw. Anyone calls the draw, which spends the accumulated fee on the chosen equities. The caller pays the gas and keeps nothing.
  4. Claim. A holder burns coin and receives that fraction of the basket's holdings.

The coin's address is its identity. Names and tickers are not unique and are not checked, so two coins can carry the same name and remain two different addresses. Every page that shows a coin shows its address next to it for that reason.

The curve

There is no order book and no liquidity to seed. The entire supply is minted to a bonding curve at launch, and the curve is the counterparty: a buy takes coins from it and pays in, a sell returns coins and takes out. Price is a function of how much of the supply has been bought, so it moves with every trade and never waits for a market maker.

Nobody is allocated coins at launch. Not the creator, not the protocol, not an early list. The only way to hold the coin is to buy it on the same curve as everyone else, which is what makes the fee the only interesting mechanism on the page.

The quote asset

A curve is opened in exactly one asset, and that asset is what buyers pay with and what the fee arrives in. It can be the chain's native coin or one of the approved tokens on the chain, including the dollar.

The choice is not cosmetic. A coin quoted in the dollar keeps its fee income steady in dollar terms and needs buyers to hold dollars. A coin quoted in the native asset rises and falls against it, and its basket grows faster in the same conditions that make the quote asset itself worth more. The quote asset is fixed at launch, like everything else that matters here.

The fee

Every trade on the curve pays a fee, taken in the asset being paid, so the basket accumulates without a swap on each individual trade. The swap happens once per draw instead, which keeps a small trade from paying for a large one's routing.

The protocol takes its cut inside the draw, once, and the rest is spent on the equities:

feeIn      = tradeSize * 100 / 10000
protocolIn = accumulated * 1000 / 10000
toEquities = accumulated - protocolIn

The cut is designed to sit under a ceiling that is a constant in the contract rather than a setting, so it cannot be raised past it after launch. None of this is deployed, so none of it is enforced by code yet.

The basket

One coin, one basket. Nothing is pooled between coins, so a busy coin never funds a quiet one, and a claim against one basket cannot touch another.

A claim is pro rata on the supply:

claim = holdings * (coinsBurned / totalSupply)

There are no tiers, no snapshots and no allowlist. Burning half the supply claims half of every position the basket holds, in kind: the equity tokens themselves, not a receipt for them and not a dollar estimate of them.

Because the claim is a fraction of the supply rather than a per-wallet balance, the backing follows the coin. Selling the coin hands the claim to whoever buys it, with no transfer step of its own.

What it holds

The basket holds the tokenized equities that already trade on Robinhood Chain, at its own address. The holdings are a balance anyone can read on the explorer. While a basket is empty, this site shows it as empty rather than filling the gap with a projection.

What a creator chooses

At launch the fee is pointed at a template, at a custom set of weights across the listed equities, or at the coin itself. The choice is recorded with the coin and decides what every later draw buys. Weights are even unless the creator sets them, and nothing is rebalanced afterwards, because a rebalance is a trade nobody asked for.

Buyback and burn

The second thing a coin can do with its fee: instead of buying equities, the draw buys the coin on its own curve and destroys what it buys. Supply falls, the curve is unchanged, and nothing accumulates in a treasury.

In this mode there is nothing to claim, because nothing is held. The value goes into the supply rather than into a basket, so the effect shows up as a standing bid funded by the selling itself rather than as a balance you can redeem. A coin expected to be traded hard and held briefly fits this mode better than a basket. The full comparison is on the buyback and burn page.

Graduation

A curve that is bought out has nothing left to sell. At that point the coin moves to a public pool on the chain and trades there instead, with the liquidity from the curve locked into it. The curve stops being the counterparty and the price starts coming from the pool.

The basket is unaffected. It stays bound to the coin, it keeps paying claims at the same pro rata formula, and it keeps receiving whatever fee arrangement the pool provides. Graduation changes where the coin trades, not who the backing belongs to.

The equities

A basket can hold the tokenized equities listed on the stocks page: the large technology names, a pair of index tokens, and the chain's dollar. None of them are issued by us. They are the tokens that already exist on the chain, which is the only reason a basket can hold something real rather than a synthetic exposure of our own making.

Addresses for them are deliberately absent from this site until Tina's own contracts are live and a basket actually holds them. A price shown next to an empty basket would imply a position that does not exist.

What the design commits to

PropertyHow it is meant to hold
One basket per coinThe factory creates the basket in the launch transaction and binds it to that coin. There is no shared pool to reassign.
The fee cannot be redirectedThe recipient is set at launch and has no setter. A creator who wanted the fee in a wallet could not point it there afterwards.
A claim cannot be pausedBurning is a holder call with no owner check and no switch in front of it.
The owner cannot take the holdingsNothing in the basket is withdrawable except through a burn, and a burn pays the burner.
Nobody is allocated supplyThe whole supply is minted to the curve at launch. Creator and protocol buy on the same curve as anyone else.
The protocol cut has a ceilingA constant checked at construction and on any change, so the cut cannot be raised past it.
A donation does not reprice a claimThe claim is a fraction of supply applied to real balances, so a stray transfer into the basket is shared by every holder rather than repricing anyone.

What it does not guarantee

Not live yet

The contracts are not on chain. Until they are, this site does three things and no more: it describes the design, it reads SOON wherever an address belongs, and it refuses to display a price, a basket balance or a holder count it cannot read.

When the factory is deployed, the address arrives through /api/ca and every page picks it up without a redeploy. Explore, portfolio and payouts start filling from the chain at that point, and the parameters below switch from intentions to readings.

Contracts

FactorySOON
CurveSOON
Token$TINA SOON

Parameters

ParameterValue
Fee on every trade
Protocol cut of each draw
Ceiling on that cut
Baskets in the registryfactory not deployed
Chain
Claim delaynone
Supply allocated at launchnone, the curve holds it all

These are design figures from config.js, which is what the front end is configured with. Once the contracts exist, this page reads the same parameters back off them on load, and where the two disagree the contract wins and the row says so.

Front end

Static HTML, CSS and vanilla JavaScript. config.js is the source of truth for the brand, the chain, the basket templates and the addresses. Two serverless functions sit behind it: /api/rpc proxies JSON-RPC reads to Robinhood Chain, because the public node intermittently returns a malformed CORS header that browsers reject, and /api/ca serves the live contract address once there is one.

Nothing on these pages invents a number. Where a figure cannot be read, it is left blank or the page says the read failed.

Read it, then try it

The app lists baskets the moment the factory exists. Today it lists nothing, and says so.

Open the app