Messis
Launch

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

  1. 01

    A coin is launched

    A Pons V2 bonding curve on Robinhood Chain. Nothing about the coin is special.

  2. 02

    Its fees point at a vault

    The curve's creator-fee recipient is a vault contract rather than a wallet.

  3. 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.

  4. 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 configRead from chain, every request
Vault, coin, curve and creator addressesWhether each vault has ever harvested
Coin name and ticker (immutable on the contract)The creator’s split, in basis points
Basket leg weightsEvery stock-token balance the vault holds
Stock ticker, name, sector, price-feed flagThe 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:

SelectorWhat it isHow that was established
0x413043bacreatorSplitBpsmatched the published split on 30 of 30 vaults, exactly
0x820d52b0zero if and only if never harvestedzero 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 factory0xA454F6C38b63b7
  • Vault implementation0x6C9fDFf15A7ae6
  • Swap venue0xAc560e828A10e4
  • 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 token0x5c549244936528
  • Its Pons curve0x083E1a7e714fAe
  • 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.