Swipe-feed prediction market with a trading-desk agent under every bet. Settling onchain on Arbitrum via a verified parimutuel vault. USDC tickets from $0.50.
Hunch is a mobile-first prediction-market app, settling onchain on Arbitrum One. You swipe through real markets — right for YES, left for NO — with a trading-desk agent doing the work underneath every bet. Tickets start at $0.50 USDC.
Bets settle through HunchParimutuelVault, a verified smart contract on Arbitrum One (0xD8832E0156BD7Dd99C38d0b2EE2694E928116114). Betting is gasless: the bettor signs an EIP-3009 authorization for native Arbitrum USDC, an operator relays it and pays gas, and funds land in contract escrow attributed to the signer. Payouts are pull-pattern, always go to the bettor, and the contract has no admin path over staked funds — no pause, no custody, no rug surface. The on-chain payout engine is differential-tested against the off-chain one: both provably pay identical amounts.
This is proven end-to-end, not theoretical: a real gasless bet has been placed and escrowed in the vault on Arbitrum One — YES on the monthly $ARB market, signed from a connected wallet, relayed by the operator, $1.00 held in contract escrow (tx 0x3cf9…e196e6).
Four markets are live on Arbitrum today — recurring daily and monthly $ARB up/down rounds (CoinGecko), a 4-outcome market on Arbitrum stablecoin supply reaching $10B (Dune), and a binary market on Arbitrum DeFi TVL reaching $2B (DefiLlama). Every one resolves from code-readable onchain or market data, not a human operator.
The agent layer is the product. On every position it does best-execution routing, automated take-profit/stop-loss, news and social surveillance, a per-position impact feed tagging each event ↑/↓/◦ for your specific side, and a Twitter agent that turns any tagged post into a one-tap bet. LLM output never touches the money path — deterministic code executes; the agent finds, explains, ranks, and monitors.
Hunch runs in production today (its original settlement path is on Base), and Arbitrum is where the onchain story goes deep: more vault-settled markets, the agentic x402 betting rail wired onto the vault, and a path to Arbitrum as the primary settlement home.
<p>We integrated Arbitrum One as a full onchain settlement rail and proved it end-to-end with a live bet. The rail is isolated from the existing Base path (byte-identical, untouched); Arbitrum markets carry one extra field and settle through a smart contract instead of an off-chain sink.</p><p><strong>Smart contract — </strong><code data-inline="true" spellcheck="false">HunchParimutuelVault</code><strong>, live and source-verified on Arbitrum One</strong></p><ul><li><p>Deployed at <code data-inline="true" spellcheck="false">0xD8832E0156BD7Dd99C38d0b2EE2694E928116114</code> (verified — Sourcify + Blockscout exact match).</p></li><li><p>~330 lines, Solidity 0.8.24, OpenZeppelin 5.</p></li><li><p><code data-inline="true" spellcheck="false">betWithAuthorization</code>: bettor signs an EIP-3009 ReceiveWithAuthorization for native Arbitrum USDC (<code data-inline="true" spellcheck="false">0xaf88…5831</code>); operator relays and pays gas, so the gasless UX matches Base. Funds escrow in-contract, attributed to the signer.</p></li><li><p><code data-inline="true" spellcheck="false">resolve(id, outcome, observationHash)</code>: oracle role, with the observation hash committing the data reading.</p></li><li><p><code data-inline="true" spellcheck="false">claim</code>/<code data-inline="true" spellcheck="false">claimFor</code>: pull-pattern payouts that always go to the bettor; never pausable; no admin path over stakes.</p></li><li><p>Payout math mirrors the off-chain engine exactly (single participant → full refund; empty winning pool → treasury; else floored pro-rata).</p></li></ul><p><strong>Proven end-to-end on production.</strong> A real human, gasless bet is escrowed in the vault on Arbitrum One: YES on <code data-inline="true" spellcheck="false">arb-up-down-monthly</code>, $1.00 ($0.98 net + $0.02 fee, 1.96 shares), signed from a connected wallet (<code data-inline="true" spellcheck="false">0x9bed…35dc</code>), relayed by the operator (<code data-inline="true" spellcheck="false">0x2E48…3834</code>), bet tx <code data-inline="true" spellcheck="false">0x3cf9761ea5bbf6badff149923ce2f331b683065a68ea2e783c33ee8276e196e6</code>. On-chain vault state confirms it: market open, participantCount 1, $1.00 escrowed, netPool $0.98, deadline 2026-07-01. The DB row reads <code data-inline="true" spellcheck="false">filled / confirmed / arbitrum</code>. Funds are in the contract, not an EOA.</p><p><strong>App wiring</strong> (behind a <code data-inline="true" spellcheck="false">HUNCH_ARBITRUM_RAIL</code> flag): client signing branch, binary and N-way trade routes with lazy market creation on first bet, a resolve cron that mirrors onchain, and a payout cron that pushes <code data-inline="true" spellcheck="false">claimFor</code> only after cross-checking the onchain <code data-inline="true" spellcheck="false">payoutOf</code> equals the off-chain amount. Per-trade settlement-chain column with Arbiscan links. Two fixes shipped during the buildathon made bets placeable from any wallet (not just the embedded one) and made Add Funds read the Arbitrum balance — the difference between "deployed" and "a human can actually bet."</p><p><strong>4 markets live on production, all settling on Arbitrum:</strong></p><ul><li><p><code data-inline="true" spellcheck="false">arb-up-down-daily</code> — recurring daily $ARB up/down, fresh onchain round each day (CoinGecko).</p></li><li><p><code data-inline="true" spellcheck="false">arb-up-down-monthly</code> — 30-day $ARB rounds (CoinGecko).</p></li><li><p><code data-inline="true" spellcheck="false">arb-stables-10b-when</code> — 4-outcome date window for Arbitrum stablecoin supply → $10B (Dune).</p></li><li><p><code data-inline="true" spellcheck="false">arb-defi-tvl-2b</code> — binary milestone, Arbitrum DeFi TVL → $2B by Jul 31 (DefiLlama).</p></li></ul><p><strong>Engineering rigor:</strong> the off-chain <code data-inline="true" spellcheck="false">computeMarketPayouts</code> and the on-chain <code data-inline="true" spellcheck="false">Differential.t.sol</code> assert the same fixtures, proving both settlement engines pay identical amounts. Foundry suite is 41/41 (fuzz + 3 invariants), plus a fork e2e against real Circle USDC on Arbitrum One (deploy → signed bets → resolve → claimFor → sweep). App gate — typecheck, lint, 1134 vitest, build — is green.</p>
<p>NA</p>