OMY is the TON-native event oracle. Resolve real-world facts on-chain by economic game — for prediction markets, bridges, insurance, and RWA.
// React to truth on-chain
match (msg) {
OracleResult => {
// always dedupe — at-least-once delivery
if (settled.contains(msg.questionId)) return;
settled.set(msg.questionId, true);
// settle YOUR contract on msg.answer
if (msg.answer) payout(winners);
else refund(holders);
}
}OMY turns truth into a market. Ask a question, post a bond, propose an answer. If nobody disputes, the answer is accepted. If they do, both sides risk capital and the economic game decides. Honest reporting becomes the only rational strategy.
Existing oracles on TON deliver prices — numeric feeds, sub-second. Useful, but they can't answer "did event X happen?". That gap blocks prediction markets, insurance payouts, bridge attestations, RWA settlement, and conditional payments of every kind.
OMY fills it with the most battle-tested model in DeFi: the optimistic oracle, ported to TON's actor model. Native bonds in USDT, committee at launch, stake-weighted DVM in Phase B.
In most cases the truth settles in a single transaction. Disputes are the rare escalation — and when they happen, capital is at stake on both sides.
Anyone asserts an answer and locks a USDT bond. The bond is refundable — if the proposer is right.
A challenge window opens. Anyone with conviction can dispute by posting their own bond. No challenge means the proposed answer is accepted.
Nobody disputes. The proposer's bond is refunded, the consumer receivesOracleResult with the truth. One transaction, no arbitration cost.
A disputer challenges with their own bond. The resolver settles — committee at launch, stake-weighted DVM in Phase B. Winner takes back their bond plus half of the loser's; the other half goes to treasury.
One oracle. Any consumer. Click a card to explore — each is a real product pattern that a TON team could ship on top of OMY.
On-chain markets for any future event. Users buy YES or NO shares with USDT; the winning side claims $1 per share on the oracle's answer.
The SDK is a single TypeScript file. Drop it in, build theCreateAssertion body, send it to the factory. The oracle handles the rest — your consumer just listens for theOracleResult callback.
import { buildMeta, buildCreateAssertion } from '@omy/sdk';
const meta = buildMeta({
identifier: 1n,
callbackRecipient: myContract,
question: beginCell()
.storeStringTail('Did X happen?')
.endCell(),
});
const body = buildCreateAssertion({
id: 1n, resolver, bondAmount: 1_000_000n,
liveness: 3600, meta,
});
// → send body to OracleFactoryOpen source. MIT licensed. Built in Tolk.