Builder console

Design a fact. Ship it to any market.

Describe what should be resolved, see exactly what goes on-chain, and copy the code that plugs it into your own prediction market or AMM — or create it on Robinhood Chain testnet right here.

Configure

Preview

Will NVDA be at or above $0 at Oct 12, 2026, 2:15 AM?

Source
chainlink.price-at.v1
Asks
Is NVDA at or above $0?
Chainlink feed
Nvidia 0x379EC4f7C378F34a1B47E4F3cbeBCbAC3E8E9F15
Measured at
Oct 12, 02:15 AM (the round in effect then)
Staleness limit
72 h — older rounds make resolvers abstain
Observation window
Oct 12, 02:15 AM → Oct 13, 02:15 AM
Quorum
2 identical answers
Dispute window
30 minutes after quorum
Payload
v2 · (bool outcome, uint64 occurredAt)
Connect to create it on testnet:
import { NovakClient, getDeployment, robinhoodTestnet, SOURCES, sourceId, encodePriceAtSpec, Comparator } from "@novakoracle/sdk";

const novak = new NovakClient(publicClient, walletClient, getDeployment(robinhoodTestnet.id));

const tx = await novak.createEvent({
  specVersion: 2,
  sourceId: sourceId(SOURCES.priceAt),
  openTimestamp: 1791771300n,
  observationDeadline: 1791857700n,
  disputeWindowSeconds: 1800n,
  quorumThreshold: 2,
  spec: encodePriceAtSpec({
    feed: "0x379EC4f7C378F34a1B47E4F3cbeBCbAC3E8E9F15", // NVDA/USD, Chainlink on Robinhood Chain mainnet
    threshold: 0n, // $0 (8 decimals)
    comparator: Comparator.Gte,
    at: 1791771300n,
    maxStaleness: 259200n,
  }),
}, account);
const eventId = await novak.getCreatedEventId(tx);

Addresses come from getDeployment(46630) in the SDK. Full guide: Integrate your market.