Take counsel of your pillow.
How a bet works
You bet by sending a native XRP Payment to a market’s pool account. Two tags carry the meaning:The outcome index you are backing.
counsel’s attribution tag, which marks the Payment as a counsel bet.
Parimutuel pools
Bettors stake into outcome pools. When the market resolves, the participants on the winning side split the entire pool, including the losing stakes, after a flat 3% protocol fee. There is no order book and no counterparty matching. The pool itself is the market, and the pool is the odds. The payout formula is exact:| Symbol | Meaning |
|---|---|
T | Gross pool, the sum of all stakes across all outcomes |
r | Fee rate, typically 0.03 |
W | Total staked on the winning outcome |
sᵢ | An individual winning stake |
The fee is taken from the whole gross pool before the split. It is never applied selectively on winners’ returns.
Indicative odds and the final line
counsel shows a live tote board. While a market is open, each outcome displays an indicative implied probability and an indicative payout per unit, recomputed in real time as XRP flows in:implied_prob=outcome_drops / total_dropspayout_per_unit= indicative XRP returned per 1 XRP staked if that outcome wins, after the fee
bet_cutoff. An early bettor cannot lock a price seen before close.
Resolution
Markets resolve in one of two ways, by family.Family A: crypto price
Resolves automatically against the native XLS-47 price oracle.
Family B: real world
Resolves by an operator-proposed outcome, then a bonded dispute window, then a multisig committee finalization.
Voided pools
A pool is voided and fully refunded, with no fee taken, when it cannot resolve cleanly. This covers a one-sided pool (no losing side to split), a market with no winner, a cancelled event, and a stale oracle. In every void case, stakes are returned in full.Fully on-chain and verifiable
Every action in counsel’s lifecycle leaves an on-chain trace:- Market definitions are JSON memos on a Payment to the registry account.
- Bets are tagged XRP Payments (
DestinationTag= outcome index,SourceTag= counsel attribution). - Resolutions are published as memos referencing the oracle value or evidence hash.
- Payouts are committee-multisigned XRP Payments with a payout memo attached.
Trust model
counsel is custodial-transparent, not trustless. Stakes sit in per-market pool accounts secured by a multisigSignerList with the master key disabled. No single key can move funds from a pool: settlement requires a committee threshold of signatures. Everything is on-chain and recomputable, so the custody is transparent and auditable even though it is not fully trustless.
The canonical developer path
Bots are first-class in counsel. A bot is an ordinary XRPL client: it reads a market, fetches an unsigned bet Payment, signs it with its own key, and submits it. The public API is read-only REST with no API key.Fetch an unsigned bet intent
GET /markets/:id/bet-intent?account=...&outcome=...&amount=... returns an unsigned XRPL Payment plus the projected odds after your stake.What you can do
- Bet on markets: open crypto-price and real-world markets at counsel.markets.
- Copy-trade: mirror a leader’s open bets non-custodially. You sign each mirror in your own wallet, sized to your own stake, with projected odds shown before you sign.
- Run bots: the public API returns unsigned bet Payments with projected post-stake odds, and a bot is an ordinary XRPL client.
Next steps
How it works
The bet, close, resolve, and payout lifecycle, with oracle and multisig mechanics.
Place a bet
Connect a wallet, select an outcome, and submit a bet Payment.
API reference
Read-only REST endpoints for markets, positions, feeds, profiles, and the leaderboard.
counsel-js SDK
Fetch an unsigned intent, sign with your own key, and submit.
Copy trading
Mirror a leader’s open bets non-custodially, sized to your own stake.
Discord
Ask questions and follow development with the counsel community.