Pre-launch · Built on Radix DLT

The truth
will out.

OTER is an optimistic oracle on Radix: ask any verifiable question on-chain. A bonded answer settles unchallenged after a public challenge window — or goes to a jury of staked voters casting timelock-sealed ballots.

Example claims

“ETH traded above $4,000 at the strike time.”

TRUE · settles unchallenged

The lifecycle

How OTER works

Three stages take a question to the fork. Almost every question takes the quiet branch — the vote exists so that nobody ever needs to call it.

01 · Ask

A question is posted

Any dApp or person posts a verifiable question — an election, a price level, a real-world event — with a reward for resolving it.

02 · Propose

A bonded answer lands

A proposer posts the answer and locks a bond behind it. The bond is skin in the game: it pays whoever proves the answer wrong.

03 · Challenge

The challenge window opens

The answer sits in public. Disputing it costs a counter-bond, so challenges only come when someone expects to win.

No dispute Most questions

Time passes. Nothing happens.

The window closes untouched and the answer stands. Honest answers are built to take this branch — that is what makes the oracle optimistic.

Disputed 04 · Vote

Staked voters decide, sealed

Timelock-encrypted ballots: no peeking while voting is open, no burying a losing vote after it.

05 · Settle

The verdict lands on-chain

A losing bond is slashed 80 / 15 / 5 — winner, correct voters, protocol. Any Radix contract reads the settled outcome atomically.

Under the hood

Same optimism.
Harder guarantees.

Optimistic oracles live or die on their dispute game. OTER rebuilds that game with sealed ballots, bonded incentives, faster cycles, and Radix-native atomic settlement.

tlock commit–reveal

Ballots stay sealed until reveal

Votes are timelock-encrypted to a future round of drand’s distributed beacon. While voting is open, no one — juror, whale, or the platform itself — can read a single ballot. Once the beacon fires, reveal is permissionless: no last-mover advantage, no quietly burying a losing vote.

radixdlt-scrypto #2092

Randomness, done honestly

Anti-whale jury sampling is built into the tally engine — and deliberately switched off until its randomness can be verified on-chain. We upstreamed the BLS verification that makes drand beacons checkable in-contract into the Radix engine itself, rather than shipping a sampler anyone could game.

pull-based settlement

Consumers read verdicts atomically

A Radix contract pulls the settled outcome inside its own transaction — no callbacks, no keeper bots, no push queue to stall or front-run. One settled truth can drive any number of dApps at once.

bonded incentives

Being wrong costs real money

Answers and disputes are both bonded, and stake backs every vote. On settlement the losing bond is slashed: 80% to the winner, 15% to correct voters, 5% to the protocol. If a round fails quorum instead, bonds refund and no committed vote is rewarded or slashed.

48 h vote cadence

Escalations catch the next cycle

A full cycle is 24 h of sealed voting, a 12 h reveal, and 12 h to re-propose and dispute. A question that fails quorum re-enters the very next cycle — roughly twice the turnaround of classic optimistic-oracle schedules, where a 24 h reveal pushes it a full extra round. Reveal itself takes minutes; the window is sized to split the day so there is always a re-entry slot.

√stake voting power

Whales get the square root

Voting power grows with the square root of stake: doubling a position buys about 41% more vote, not twice as much. Capital still counts — domination doesn’t scale.

Participate as a voter

Put your stake behind the truth

01

Stake

Stake into the voter pool to join the jury. Voting power scales with the square root of stake — a deliberately concave curve that blunts whales and keeps small jurors relevant.

02

Vote

When a dispute goes to a vote, you cast a sealed ballot on the claim — timelock-encrypted so nobody sees your vote, or anyone else’s, until the reveal.

03

Earn

Voters on the winning side of a settled verdict earn vote rewards plus a 15% share of the slashed bond. Voting against a settled verdict costs you stake — paid to those who got it right.

Participate as a Builder

Launch products with the OTER Oracle as your backbone

OTER settles natural-language questions about real-world events — weather, sports, elections, prices, anything universally verifiable. That makes it a natural resolution backbone for prediction markets, and it is exactly how Tahuna will use it.

The kind of question a market settles on OTER

“Did the incumbent win the 2026 election?”

use scrypto::prelude::*;
/// Long / Short Pair — tokenizes bounded exposure to a single OTER request.
/// The Radix-native take on an optimistic-oracle settlement contract: it PULLS
/// the settled outcome inside its own atomic transaction. No oracle callback,
/// no keeper push — settlement can't be front-run, and a broken consumer can
/// never brick the oracle for everyone else.
#[blueprint]
mod long_short_pair {
struct LongShortPair {
resolver: Global<OterResolver>, // the OTER resolver for this market
request_id: String, // the question both tokens track
collateral: Vault, // backs every minted long+short pair
long: ResourceManager, // mint / burn the LONG side
short: ResourceManager, // mint / burn the SHORT side
}
impl LongShortPair {
/// Redeem long and/or short tokens for collateral, once OTER has settled.
pub fn settle(&mut self, long: Bucket, short: Bucket) -> Bucket {
// Read the outcome in-transaction; reverts cleanly until it's settled.
let outcome = self
.resolver
.get_settled_request_outcome(self.request_id.clone());
assert!(outcome != RequestOutcome::TooEarly, "request not settled yet");
let (l, s) = (long.amount(), short.amount());
self.long.burn(long);
self.short.burn(short);
// Outcome1 -> longs take all, Outcome0 -> shorts take all, else split.
let payout = match outcome {
RequestOutcome::Outcome1 => l,
RequestOutcome::Outcome0 => s,
_ => (l + s) / dec!(2), // DrawOrInvalid
};
self.collateral.take(payout)
}
}
}
Explore the oracle app

Datasheet

Protocol specification

rev. 2026-06 · defaults

Challenge window

4 h

default — configurable per question

Vote cycle

48 h

24 h sealed commit · 12 h reveal · 12 h to re-propose and dispute

Re-vote latency

Next cycle

an escalated question re-enters immediately — it never waits out an extra round

Consensus

70%

supermajority of revealed voting power

Quorum

EMA

eases in at 5% for the cold start, then grows and settles to real participation — no hand-set constant

Voting power

√stake

concave weighting against plutocratic capture

Losing bond

80/15/5

100% slashed — winner / correct voters / protocol

Batch size

25

questions per vote cycle

Failed round

3 tries

bonds refund, nobody slashed; then a time-boxed close as invalid — admin can expedite, never decide

Unstake cooldown

7 days

unstaking starts a timer before withdrawal

Settlement

Atomic

consumers pull the verdict in their own transaction — no callbacks

Outcome types

Yes/No/Draw

plus DAO governance votes — new outcome types plug in as adapters

Early ecosystem

Projects building on the OTER Oracle

Launch updates

Be first to know when OTER goes live.

Mainnet milestones, testnet access, and protocol deep-dives. One email when it matters — nothing else.

No spam. Unsubscribe anytime.