The tape stops.
The mark doesn't.
Tokenized stocks on Robinhood Chain trade all night and all weekend. The official price does not. MARK is the oracle that keeps marking them to market when Wall Street is asleep: a signed fair value with a confidence band, blended from the last official print, every Robinhood Chain pool, xStocks on Solana, and beta-adjusted index futures. Free to read, verifiable by anyone, and tradeable on-chain: long or short any name on the board with USDG, up to 10×, all weekend.
| Ticker | Official | Age | Mark | ± Conf | RH basis | Session |
|---|
01 · The problem
Every oracle goes dark at 4pm
Equity feeds freeze at the close. From Friday 16:00 to Monday 09:30 that number is 65 hours old, while TSLA on Robinhood Chain keeps printing every block. Perps, lending markets and prediction markets either freeze with it or quietly lie.
02 · The method
Weighted median, not a guess
Each regime has its own source weights. Sources that stray more than 8% from the preliminary median are rejected and reported. The confidence band widens with source dispersion and with hours since the close. Exact weights are in the docs.
03 · The proof
Signed. Public. On-chain.
Every mark is an ed25519-signed payload you can verify with one GET. Staked publishers push the same fixed-point integers to MarkOracle.sol, consumers read the median, and a bad report inside the window gets slashed.
Live proof · TSLAWhat the oracle sees right now
Same stock, five opinions. Wall Street's print, the extended session, each Robinhood Chain pool weighted by liquidity, the xStock on Solana, and the futures-implied move. MARK takes the weighted median and publishes the band.
| Source | Venue | Price | Weight | vs Mark |
|---|
IntegrateOne GET, or one call
GET https://markonrh.xyz/api/feed/TSLA/signed
{
"sym": "TSLA", "mark": 358.37, "conf": 2.55, "session": "closed",
"payload": "MARK|TSLA|35837818547|255764158|1788415417|CLOSED|101",
"sig": "6130240a80f9…", "pub": "7ba4b5370bdd…", "alg": "ed25519"
}
GET /api/verify?payload=…&sig=… → { "valid": true }// Solidity — Robinhood Chain
IMarkOracle mark = IMarkOracle(ORACLE);
MarkOracle.Price memory p = mark.getPrice(mark.feedId("TSLA"));
// p.price int64 USD·1e8 p.conf uint64 USD·1e8
// p.session 0 OPEN 1 PRE 2 POST 3 CLOSED p.reports uint8
require(p.session == 0 || p.conf * 100 < uint64(p.price), "band too wide");$MARKThe token pays for the truth
Reads
Paid pulls
pullPrice charges a fee in $MARK per on-chain read and streams it to the publishers whose reports were used. getPrice stays a free view so nobody is locked out of the number.
Publishers
Stake to post
Only staked publishers can push a report. Reports outside twice the accepted band are slashed 20% by the guardian, and the slash is paid to whoever caught it.
Feeds
16 names, day one
SPY, QQQ, NVDA, AAPL, TSLA, MSFT, AMZN, META, GOOGL, HOOD, COIN, MSTR, PLTR, GME, AMD, CRCL. Every one is a real tokenized stock with live Robinhood Chain pools.
TradeLong or short the mark, on-chain
Venue
USDG perps on Robinhood Chain
Deposit USDG, pick a name, pick a side, up to 10×. Your order carries a fresh oracle signature that MarkPerps.sol verifies before it fills.
Fills
Mark ± half the band
Longs buy at mark plus half the confidence, shorts sell at mark minus half. A wide weekend band is a wide spread, and it tightens the moment the tape reopens.
Counterparty
One liquidity pool
LPs provide USDG and take the other side of every position. They collect 8 bp per side and every liquidation remainder. Open interest is capped at four times the pool.
FAQQuestions people ask
What is MARK?
A fair-value oracle for tokenized stocks on Robinhood Chain. It publishes a price and a confidence band for each name every four seconds, 24/7, and signs every one of them.
Why not just use the last close?
Because the tokenized stock keeps trading after the close and the market keeps moving. A 65-hour-old number is not a price, it is a memory. MARK reads what is actually trading right now.
Where does the weekend price come from?
Every Robinhood Chain pool for the name weighted by liquidity, the same stock's xStock on Solana, and the beta-adjusted move in ES or NQ futures since the cash close. The last official print is in the blend too, with a weight that fades over three days.
How do I know it is not made up?
Every feed page lists each source, its price, its weight and its deviation from the mark, plus anything that was rejected. The signed payload verifies against the public key at /api/signer, and the contract verifies the same numbers on-chain.
What does the confidence band mean?
How far apart the sources are, widened by how long the tape has been closed. When the sources agree and the market is open it is a few basis points. On a quiet Sunday it is wider, and your fill pays that width.
How does trading work?
Deposit USDG on Robinhood Chain, open a long or short at up to 10×, close whenever you like. The contract fills at mark ± half the band, charges 8 bp per side to the liquidity pool, and liquidates positions that fall under 5% maintenance.
Who takes the other side?
The liquidity pool. Anyone can provide USDG to it, earn every fee and every liquidation remainder, and redeem their share whenever the pool still backs open interest.
Can a bad pool price move the mark?
Not on its own. The mark is a weighted median, and any source more than 8% from the preliminary median is rejected outright and shown on the feed page as rejected.
What is $MARK for?
Publishers stake it to post reports to the on-chain oracle, paid reads are charged in it and flow to those publishers, and slashes are paid out in it.
Can I build on the feed?
Yes. One GET returns a signed mark, one call to MarkOracle.sol returns the median of staked reports. Both use the same fixed-point integers, so what you verify off-chain is what settles on-chain.
Is a mark a guarantee?
No. It is the best available estimate with a stated band. Check the session and the band before trusting a number, exactly as you would with any oracle. Nothing here is investment advice.
Which names are listed?
SPY, QQQ, NVDA, AAPL, TSLA, MSFT, AMZN, META, GOOGL, HOOD, COIN, MSTR, PLTR, GME, AMD and CRCL. Every one is a real tokenized stock with live Robinhood Chain pools.