85XA85XA

Strike, explained

A peer-to-peer way to wager on future events without a bookmaker. Two people stake the same amount, each says how likely they think the outcome is, and the better-calibrated side wins.

What is Strike?

Strike is a peer-to-peer prediction protocol. Two players stake the same amount on a future event and each declares a belief — a confidence percentage. When the outcome is known, the better-calibrated side takes a share of the other's stake.

Everything runs on-chain: EventRegistry holds the catalog of events; WagerHouse holds seats, beliefs, stakes, and settlement.

Event lifecycle

open ──lock──▶ locked ──resolve──▶ resolved ──claim──▶ ✓
  │                │
  └──void──▶ voided ─────claim────────────────────▶ refund
  • open — anyone can take a seat, set a belief.
  • locked — cutoff reached; beliefs frozen, awaiting oracle.
  • resolved — outcome recorded; payouts computed per seat.
  • voided — event cannot resolve; stakes fully refundable.

Seats and beliefs

A seat is a stake plus a belief in basis points (0..10000 = 0..100%). Every seat in the same event stakes the same fixed amount, denominated in the event's asset (native RC or any ERC-20). Belief can be updated freely while the event is open.

How payouts are scored

Strike scores calibration with Brier loss: (belief − outcome)². Lower is better. A player who called 80% on an event that resolved YES scores 0.04; a player who called 30% scores 0.49 — the 80% side wins.

Ties refund both stakes. Winners keep their own stake and receive the counterparty's stake.

Currencies

Each event picks its currency at creation. address(0) is native RC; any ERC-20 (stablecoin, tokenized stock) works with an approve() before taking a seat.

FAQ

Why beliefs instead of yes/no?
A percentage carries information a binary can't. Scoring rewards calibration — 100% vs 0% simply reproduces a classic all-or-nothing bet.
Is this affiliated with Robinhood?
No. Strike is an independent project deployed on Robinhood Chain.

Contract reference

Function signatures pulled straight from the ABIs used by this observer.

EventRegistry
  eventCount()                             → uint256
  getEvent(uint256 id)                     → Event
  createEvent(string title, string uri,
              address oracle, address asset,
              uint256 stake, uint64 cutoff,
              uint64 resolve)              → uint256 eventId  (payable)
  lock(uint256 eventId)
  resolve(uint256 eventId, uint8 outcome)   // 1=yes 2=no

WagerHouse
  takeSeat(uint256 eventId, uint16 bps)    → uint256 seatId   (payable)
  setBelief(uint256 eventId, uint256 seatId, uint16 bps)
  claim(uint256 eventId, uint256 seatId)   → uint256 payout
  seatCount(uint256 eventId)               → uint256
  getSeat(uint256 eventId, uint256 seatId) → Seat
  seatsOf(address player)                  → SeatRef[]