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.