Docs
What this site will and will not tell you.
The rule
A figure is younger than its harvest, or it does not exist. Every number Messis prints is dated from the harvest that produced it. A coin that has never been harvested gets no number at all — not a zero, not a dash, not a progress bar at 0%. Its card shows the words instead of the digits.
This is not a style guide. It is a type: Figure cannot be constructed without a Harvest, Harvest cannot be constructed outside lib/harvest.ts, and the alternative — Unharvested — has no numeric field on it at all. A component that narrows to that branch has nothing to print even if it wants to.
The cost is real and worth stating: a new coin here shows nothing until its first harvest. No projected yield, no basket value, no encouraging zero. By every conventional launchpad measure that is worse.
How a harvest works
- 01
A coin is launched
A Pons V2 bonding curve on Robinhood Chain. Nothing about the coin is special.
- 02
Its fees point at a vault
The curve's creator-fee recipient is a vault contract rather than a wallet.
- 03
The vault is harvested
Accumulated fees are swapped into a fixed basket of tokenized stocks at fixed weights. This is the event every figure is dated from.
- 04
The basket is held
The stock tokens sit in the vault against the coin's holders.
Step four is where it stops. Moving a basket to a holder is settlement, and settlement is not built — see below.
What is read and what is frozen
| Frozen in config | Read from chain, every request |
|---|---|
| Vault, coin, curve and creator addresses | Whether each vault has ever harvested |
| Coin name and ticker (immutable on the contract) | The creator’s split, in basis points |
| Basket leg weights | Every stock-token balance the vault holds |
| Stock ticker, name, sector, price-feed flag | The block all of the above was read at |
The addresses were taken from the public index of the protocol whose vaults the field reads, on 2026-09-08, narrowed to the 24 built by factory 0xf317a077f6e643ed0a200c21ad8f4fd41ed5f3f1 so that one decoded ABI applies to all of them. Names and tickers were read from each coin’s own name() and symbol() — 24 of 24 decoded — and frozen, because they cannot change and reading them per request would spend a rate limit on a fixed answer.
Readings are cached for 30 seconds and every page prints the block and how long ago. A figure is as of a reading and never becomes “now”; saying so is more honest than re-reading on every request and calling the result live.
How the vault ABI was decoded
The vaults are EIP-1167 minimal proxies — 45 bytes, with the implementation address hardcoded in the bytecode. No source was published, so the two selectors this site depends on were pulled out of the implementation’s dispatcher by scanning for PUSH4 constants, then confirmed against 30 vaults with a control in both directions:
| Selector | What it is | How that was established |
|---|---|---|
| 0x413043ba | creatorSplitBps | matched the published split on 30 of 30 vaults, exactly |
| 0x820d52b0 | zero if and only if never harvested | zero on all 20 that had never harvested, non-zero on all 10 that had, nothing wrong in either direction |
The second is deliberately not called lastHarvestBlock. It agrees with that field about whether a harvest ever happened, but its value does not match it — naming it after a number it does not equal would be a claim the reading does not support.
What cannot be read at all
Three things the reference card carries are missing from ours, and their absence is deliberate:
- Market capneeds the curve's reserves and a price. Only 20 of the 52 stock tokens here carry a Chainlink feed.
- Change %needs a price history, which needs both a feed and an archive node. Neither is available.
- Holdersneeds an index of every transfer. The public RPC prunes past roughly 2.8 hours at this chain's 0.101s blocks, and the explorer API answers 403.
A slot the reader takes for a measurement, filled with a dash or a plausible number, is the exact move this project exists to refuse. So those columns are not on the card.
What is and is not built
The contracts are deployed on Robinhood Chain and one vault has harvested for real: fees swapped through Uniswap V3 pools into stock tokens, an epoch allocated, and a claim paid out to zero remaining. The coins on the front page are somebody else’s vaults, read live and shown under this rule — because a rule that has never refused anything has not been tested.
- Vault factory0xA454F6C3…8b63b7
- Vault implementation0x6C9fDFf1…5A7ae6
- Swap venue0xAc560e82…8A10e4
- Wallet connectionbuilt — it reads an address and asks for no signature
- Settlement of holder claimsbuilt — one epoch per harvest, a merkle root per epoch, and claiming; proved on mainnet
- $MESS token0x5c549244…936528
- Its Pons curve0x083E1a7e…714fAe
- Buyback and burnthe token has burn(uint256), but the treasury needs a MESS/WETH pool and there is none at any fee tier — $MESS still trades on its Pons curve
- Treasury sharenot deployed, and treasuryBps is 0 until it is; switching it on means a NEW factory, because nothing here has a setter
- Harvest and payout ledgerneeds its own indexer, recording events as they happen
Risks
Not investment advice. Tokenized stocks carry issuer and market risk, and these ones carry a specific one worth naming: their issuer can still mint more and can freeze a holder’s balance. That was read on chain, not assumed — both authorities were active when checked.
A vault, once created, cannot be altered by its operator: it is a minimal proxy with no admin slot and no setter, and its implementation exposes no owner, no rescue and no emergency withdrawal. That is a genuine constraint and it is why this architecture was copied rather than reinvented. It is not a guarantee about anything else.