a hundred seats of private inference on Robinhood Chain. the cap per seat comes from the coin's own tax. what the seats do not spend by the 20:00 utc bell buys $QUOTUM on the pair and burns it; the seat keeps the key and nothing else. this page is the whole mechanism, in words, with the contracts and the questions people ask.
keys go live mon 28 sep 2026 13:30 utc · addresses below are posted at launcha seat is one wallet holding 0.01% of the supply of $QUOTUM in the staking contract. there are a hundred seats, one per wallet. the next wallet waits in a queue that the contract keeps and the page reads from the chain.
the staking contract has no owner, no pause and no withdraw path. the keeper can only mark idle seats and release them after two idle sessions, and only when someone waits in the queue.
the chain runs all day. the market the coin is priced against does not: nvda trades its session 13:30 to 20:00 utc on nyse trading days. so the session is a state, not a switch. the key never turns off.
| state | window, utc | cap |
|---|---|---|
| session open | 13:30 to 20:00, trading days | full |
| after the bell | 20:00 to 13:30 | half |
| weekend | fri 20:00 to mon 13:30, nyse holidays | a quarter |
the cap is set at the open and counted at the bell. one session, one bell, one burn.
the cap per seat is the smallest of three numbers, computed at 13:30 utc by the sink from what the chain shows:
in words: a seat can spend at most fifty dollars a session; never more than its share of the tax actually collected in the last day; and never more than the seat itself is worth. with no seat taken at the open the tax is shared as if by one. the tax is the 1% creator tax of the $QUOTUM / NVDA pair on Pons, collected in nvda. the page prints the tax, the seats and the resulting cap every minute. if the tax dies the cap prints $0 and the page says so.
after the bell the same number is halved, at the weekend quartered. usd is the provider's dollar of inference, never a share price.
at 20:00 utc the keeper first writes the check of every seat's key on chain with report(): spent, and not spent. then it rings bell(). the sink adds up not spent = cap − spent over every live seat and:
burn(). the supply drops by exactly the tokens in the Burned event, with the dollars, the nvda and the average price beside them.Died with the reason; the nvda of a refused buy stays for the next bell.
no seat receives a token. the seat keeps its key; the leftover of every seat goes to the burn. nothing is minted, the supply only goes down.
spent cap is different money: the nvda behind it is owed to the inference provider, forwarded by forward() to one published payment address, and paid with a receipt.
one key per seat, bound to the seat's wallet. no key exists before the seat's lock is an event on chain (SeatTaken); then the keeper issues a venice key in private-only mode, sign a message from the seat wallet on the seat page to receive it. the key's limit is the seat's cap for the session. when the seat is freed the key is deleted. any openai-compatible client works.
# the base url is posted with the keys at launch
from openai import OpenAI
client = OpenAI(base_url="posted at launch", api_key="your seat key")
r = client.chat.completions.create(
model="deepseek-v4-pro",
messages=[{"role": "user", "content": "..."}],
)
# receipt: tokens in, dollars out. nothing else is kept.
every model behind a seat runs in venice's private mode: zero data retention, contract-enforced. venice keeps the key id, timestamps, model and token counts for billing; no prompt or response is stored. the model list with prices is on the home page. when the cap is spent the key answers 402 until the next open.
two things are not on the chain and are stated as such: the spend per seat, and the payment to the provider.
report() as Reported(session, seat, usd, receiptHash). the receipt file for a session is at /api/receipts?session=N, one row per seat; hash is keccak256 of the row's json without its hash field. hash the row again and compare with the event.the keeper is one process with its own key. it can open a session, report spend, ring the bell, forward what is owed and release idle seats. it cannot move a stake or send nvda anywhere but the payment address and the pair. its state is public at /api/receipts?state=1.
Robinhood Chain, chain id 4663. all three are immutable, have no owner and no admin withdraw of any asset. sources are verified on Sourcify in english.
| contract | role | address |
|---|---|---|
| $QUOTUM | the coin, Pons v2, pair NVDA, 1% creator tax | posted at launch |
| QuotumStaking | stake, seats, queue, release | posted at launch |
| TaxSink | tax recipient; cap, bell, burn, forward | posted at launch |
| PriceObserver | session twap of the pair, nvda/usd read | posted at launch |
| payment address | the bridge to the provider, used for nothing else | posted at launch |
Open(session, capUsd, tax24hUsd, liveSeats) at 13:30 utcReported(session, seat, usd, receiptHash) through the sessionBurned(session, usd, nvdaIn, tokens, twap), Died(session, usd, reason), Bell(session, spentUsd, burnedUsd) at 20:00 utcForwarded(nvda) when what is owed leaves for the payment addressTransfer to the zero address on $QUOTUM: the burn itself, readable in any explorerSeatTaken, SeatQueued, SeatFreed, Idle from the staking contract| Pons factory | 0x7eD598BcEf8bd9Edd8C97A195C6d13f40801EC7e |
| Pons escrow | 0xd3AFEB2a57f70eF218Aa82451c51B2fb0416Ac9e |
| NVDA | 0xd0601CE157Db5bdC3162BbaC2a2C8aF5320D9EEC |
| chainlink RHNVDA / USD | 0x379EC4f7C378F34a1B47E4F3cbeBCbAC3E8E9F15 |
the observer builds its own time-weighted price from spot samples; anyone can poke() once per block, and more samples make the average harder to move, not easier. if fewer than twelve samples cover the session the bell buys nothing and the leftover dies with the reason.