Docs v2 · testnet

Introduction

The event & dispute layer for tokenized stocks

Chainlink tells your contract the price. Novak tells it what happened. Novak resolves real-world facts about Robinhood Stock Tokens — dividends and splits, trading halts, “was NVDA above $230 at the close” — once, lets anyone dispute them through bonded committees, and serves the final answer to every contract that asks. Prediction markets, range markets and lending protocols all read the same answer instead of each running its own oracle.

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

1

Real-world source

Chainlink · ERC-8056 · RH API · FRED

2

Resolver quorum

N-of-M exact match

3

Dispute window

per event (e.g. 10 min)

4

Committees

Tier 1 ≤7 · Tier 2 ≤15

5

Finalized fact

stored once

6

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

Event layer

What it does

Registry, quorum, finalization, composition (AND / OR / NOT / BEFORE / WITHIN), pull-based Event Bus.

Where

contracts/

Piece

Dispute layer

What it does

Bonded Tier-1 → Tier-2 committee ladder with a VOID floor and pull payments.

Where

contracts/DisputeManager.sol

Piece

TreasuryVault

What it does

Splits every market fee in thirds per event and pays the people who got it right.

Where

contracts/TreasuryVault.sol

Piece

Range markets

What it does

LMSR market over N price ranges (“Where will NVDA close?”), settled by threshold events.

Where

derivatives/DistributionMarket.sol

Piece

Yes/no markets

What it does

USDG parimutuel market on any event, with refunds on VOID.

Where

derivatives/Market.sol

Piece

Lending guard

What it does

Pauses liquidations of a stock token while a risky event is open.

Where

consumers/StockLendingGuard.sol

Piece

Resolver node

What it does

Discovers events, observes 4 real sources, votes in committees, keeps, claims rewards.

Where

resolver/

Piece

SDK

What it does

Typed client, spec encoders, the 53-feed catalog, ladder helpers.

Where

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

Who answers first

Novak

A quorum of authorized resolvers, each posting evidence

Optimistic oracle with token-vote escalation

A single bonded proposer
Hard disputes go to

Novak

Randomly drawn resolver committees (≤7, then ≤15)

Optimistic oracle with token-vote escalation

A vote weighted by governance-token holdings
If nobody can agree

Novak

Event is Voided → markets refund

Optimistic oracle with token-vote escalation

The vote still picks an answer
Who gets paid

Novak

Resolvers and voters who matched the final outcome, from fees

Optimistic oracle with token-vote escalation

Proposer/disputer bonds; voter rewards
Scope

Novak

Narrow: stock-token facts with machine-checkable sources

Optimistic oracle with token-vote escalation

General: any question in plain language

Honest status

Testnet only (Robinhood Chain testnet, chain 46630); sources are read from mainnet. Three resolvers run today (quorum 2 of 3), all operated by the team — the quorum and committee rules are built for many independent operators, and onboarding them is next. Committees are drawn by commit-reveal among resolvers (no VRF on Robinhood Chain). The contracts are unaudited. See the threat model.

Where to go next