Introduction
The event & dispute layer for tokenized stocks
Chainlink feeds read
53
33 stocks · SGOV · 19 crypto (mainnet, read-only)
Dispute tiers
2
≤7 then ≤15 resolvers · 66% to decide
Fee split
⅓ · ⅓ · ⅓
resolvers · committee/insurance · treasury
Contract tests
138
Foundry · + 35 SDK/resolver tests
The problem
Robinhood Stock Tokens trade around the clock on Robinhood Chain, but the events that move them happen off-chain: a dividend changes the token's multiplier, a halt stops trading, earnings land after the bell. Chainlink's stock feeds answer one question — what is the price right now — and their own docs say they don't provide corporate-action calendars or pause triggers. So every app that needs “did X happen?” either trusts a single admin key, or bolts on a general-purpose optimistic oracle whose hard disputes end in a token-holder vote.
What Novak does
Real-world source
Chainlink · ERC-8056 · RH API · FRED
Resolver quorum
N-of-M exact match
Dispute window
per event (e.g. 10 min)
Committees
Tier 1 ≤7 · Tier 2 ≤15
Finalized fact
stored once
Every consumer
EventBus.readOutcome
Each fact is a Novak event with a precise spec (source, threshold, time). Independent resolvers observe the source and submit what they saw plus an evidence hash; once enough agree, the outcome is proposed. Anyone can challenge it with a bond during the dispute window, which hands the question to a randomly drawn committee of resolvers. If even the larger second committee can't reach 66%, the event is Voided — consumers refund instead of paying a guess. There is no token vote at any step.
What ships today
Piece
What it does
Where
Piece
What it does
Where
Piece
What it does
Where
Piece
What it does
Where
Piece
What it does
Where
Piece
What it does
Where
Piece
What it does
Where
Piece
What it does
Where
| Piece | What it does | Where |
|---|---|---|
| Event layer | Registry, quorum, finalization, composition (AND / OR / NOT / BEFORE / WITHIN), pull-based Event Bus. | contracts/ |
| Dispute layer | Bonded Tier-1 → Tier-2 committee ladder with a VOID floor and pull payments. | contracts/DisputeManager.sol |
| TreasuryVault | Splits every market fee in thirds per event and pays the people who got it right. | contracts/TreasuryVault.sol |
| Range markets | LMSR market over N price ranges (“Where will NVDA close?”), settled by threshold events. | derivatives/DistributionMarket.sol |
| Yes/no markets | USDG parimutuel market on any event, with refunds on VOID. | derivatives/Market.sol |
| Lending guard | Pauses liquidations of a stock token while a risky event is open. | consumers/StockLendingGuard.sol |
| Resolver node | Discovers events, observes 4 real sources, votes in committees, keeps, claims rewards. | resolver/ |
| SDK | Typed client, spec encoders, the 53-feed catalog, ladder helpers. | sdk/ (@novakoracle/sdk) |
Two ways to ask an oracle
Price oracle
“What is NVDA's price, right now?”
Answered per request. Every consumer re-reads and re-interprets it.
Novak
“Was NVDA ≥ $230 at Friday's close — and did it pay a dividend that week?”
Answered once, disputable, then a standing on-chain fact any contract can read or compose.
Novak vs a token-vote oracle
Novak
Optimistic oracle with token-vote escalation
Novak
Optimistic oracle with token-vote escalation
Novak
Optimistic oracle with token-vote escalation
Novak
Optimistic oracle with token-vote escalation
Novak
Optimistic oracle with token-vote escalation
| Novak | Optimistic oracle with token-vote escalation | |
|---|---|---|
| Who answers first | A quorum of authorized resolvers, each posting evidence | A single bonded proposer |
| Hard disputes go to | Randomly drawn resolver committees (≤7, then ≤15) | A vote weighted by governance-token holdings |
| If nobody can agree | Event is Voided → markets refund | The vote still picks an answer |
| Who gets paid | Resolvers and voters who matched the final outcome, from fees | Proposer/disputer bonds; voter rewards |
| Scope | Narrow: stock-token facts with machine-checkable sources | General: any question in plain language |
Honest status
Where to go next
Architecture
Start
Mainnet sources → resolvers → testnet contracts, and the one rule every consumer follows.
Resolver network
Protocol
How facts are observed, agreed on, evidenced and paid for.
Disputes & committees
Protocol
Bonds, the 66% rule, Tier-2 escalation and the VOID floor.
Range markets
Markets
LMSR pricing over threshold-event ladders, with a worked example.
Integrate your market
Build
Settle your own prediction market on Novak outcomes.
Deployed contracts
Reference
Every live address on Robinhood Chain testnet.