Docs
Under the hood
The stack: a persistent crown store, live reads from both venues, and an onchain registry settled by score attestations.
The stack
Crown state lives in Redis: the sitting CEO, crowning time and price per ticker, plus each wallet's cooldown clock and crown count. Scores are read from the venues directly. Tokenized-share balances come from Robinhood Chain over RPC, and perp notional comes from the Hyperliquid info API. The platform holds no funds at any point.
Wallet
files a takeover
Score engine
reads both venues
House rules
cooldown, cap, threshold
Crown store
CEO + dividend stream move
Score attestations
The CrownRegistry contract on Robinhood Chain records every crown onchain and enforces the same rules in Solidity: the score threshold, the 48 hour cooldown, the 3-crown cap, and the 12% firing. The Hyperliquid leg of a score cannot be read from another chain, so takeovers settle against an EIP-712 attestation of the full score, signed by the platform scorer key. Anyone can verify an attestation against the published signer; only the scorer can mint one. Crowned, Deposed, and Fired events form the public ledger that dividend payouts settle against.
API reference
| Endpoint | Method | What it does |
|---|---|---|
| /api/crowns | GET | every crown with live dividend accrual |
| /api/crowns/{symbol} | GET | one crown's live snapshot |
| /api/score?symbol=&wallet= | GET | a wallet's real score, per venue leg |
| /api/takeover | POST | file a takeover; house rules enforced |
| /api/firings | GET | the termination record |
| /api/health | GET | store, chain, and Hyperliquid status |
Responses are JSON, unauthenticated, and rate-limited at the edge. The takeover endpoint is geo-gated in the same regions as the app.