How it works
The data path is a centralized convenience; the verification path is not. A forged score produces a mismatched root and fails.
No privileged signer
settle takes no authority signer. Anyone can call it; nobody can settle a false outcome.
Verified on-chain
The proof is recomputed against an anchored Merkle root, not trusted from an oracle key.
Bring your own token
Node-native, no framework. Runs on a free TxLINE World Cup tier token you supply.
Runs headless
no privileged keySettlement doesn't need a browser. The keeper is an independent process — any keypair, no authority signer — that polls open markets and settles each the moment its match finalises.
every tick:
for each Open market:
proof = fetch(fixtureId, statKey) // TxLINE game_finalised?
if (proof) settle(market, proof) // CPI validate_stat → Resolved
else if (expired) refund(market) // deadline + grace passed
else wait // still in window
game_finalised proof exists → CPI validate_stat → market Resolved.
never finalised past deadline + grace → funds returnable by anyone.
still inside the window → do nothing this tick, re-check next poll.
Independent of this app and the SDK. keeper source
The market app you're using is a consumer of this SDK — the same interface a third party would use, importing the client, builders, and constants from the package.
Open the reference appRead the source
Built and verified on Solana devnet — one full create → place → settle → claim lifecycle. Not published to a registry yet.