Coins at the races

This is an outline for an idea I had on how to operate a betting system on horse races that uses the Bitcoin blockchain (or any other block chain that allows easy creation of new wallet addresses) as the underlying accounting mechanism. I’ll refer to horse racing because that is what I know, but other games with similar sets of outcomes (such as Association/American Football, car racing, …) can also be modelled with it. This post is a WIP and dumping ground for ideas, so it may change in the future.

I’ll refer to both the betting system (as in the engine that manages payouts and such) and to the system surrounding it (a website listing races that can be bet on, the outcomes, etc…) as “the operation”. “Betting engine” refers to the actual software implementing the betting system.

The rough outline

  • Every outcome for a race has its own bitcoin address. These are generated as soon as the betting engine learns of a race taking place and has enough data (such as starters, definitive non-starters, etc).
  • Outcomes and their addresses are listed on the operation’s website
  • To place a bet, a punter transfers their stake to the outcome’s address
  • A bet is considered “placed” once it has been confirmed on the blockchain (with a threshold of 3 or more confirmations)
  • Bets placed after the off-time will be refunded (minus the transfer fee, but including the vig)
  • After a race is final, the operation will evaluate the results and payouts and transfer winnings back to the punters (minus transfer fees and vigorish)

Putting this on the block chain is, in my opinion, one of those rare “the block chain is actually useful in this case” scenarios: keeping a publicly visible (and appendable!) ledger is what block chains do. Nothing more and nothing less.

Using a public chain instead of private accounts kept in some database somewhere (which is what regular gambling operations do) allows punters to verify the behaviour of the operation, and it makes entry and exit easy for them: there is no minimum payout limit, there is no long-winded verification and transfer of funds, and they’re free to immediately take their funds and leave the market if they so choose.

It combines the upsides of in-store betting with cash money and betting in an online operation, while removing some of the downsides for punters, since the operation is focused only on providing a properly managed book.



  • Pool sizes are visible from the block chain and always public knowledge
  • Punters don’t need accounts at the operation, they only need BTC
  • Players who can’t gamble fiat money for some reason or another (such as they are from countries with very restrictive legislation on gambling) can participate

The operation

  • No need to maintain an internal ledger or punter accounts
  • No need to provide a large API for institutional punters or punters who wish to automatically place bets: the operation only needs to publish the outcome->address mapping before the race


  • Placing bets does not rely on the operation’s systems
  • The distribution of winnings is visible on the block chain, allowing players to verify that the operation does not short them and that all winnings are distributed fairly


There are a few downside I can think of off the top of my head. I’ve split them up into downsides from the punter perspective and downsides from the perspective of the operation:


There is inherent friction with requiring punters to buy BTC before playing: Punters need to be aware of how to transfer BTC to other accounts, but that is a requirement for gambling fiat money as well if you’re not doing in-store or on-track betting for cash.

Placing bets needs to be done relatively early compared to fiat gambling: if a bet is placed just seconds before the start of a race, it may not be confirmed by the block chain in time to be considered for the pools. Depending on the view point, this may also be an upside because it encourages players to place bets early, thus making the pool sizes reflect the actual market opinion on a particular outcome more closely

The operation

Punters need to trust the operation to fairly distribute the winnings. They need to trust fiat money gambling operations as well, so this is not too big of a downside.

“Up selling” punters may be harder to do than in fiat gambling: since punters don’t have accounts, it’s harder to do promotion events (like “Place 100¤ on races in England and get 10¤ free” or “Place more than 30¤ on races today and get free live streaming”). IMHO, this is not that much of a downside, but I’m a bit of a purist: the job of the operation is to provide smooth bet handling, fair odds and a balanced book to punters. There are other services (such as ATR or Sky Sport) that provide things like live streams

Things I haven’t considered yet

This is a rough list of things I haven’t considered to deeply (or bothered to write down) yet:

  • Data acquisition: how and where to obtain race-related data
    • There are providers for this, with an associated cost, of course
  • Availability: Make this available on the clearnet or as an .onion service? Do both? What are the implications either way?
  • Establishing trust: a new betting operation needs players to trust them “blindly”, because it hasn’t yet established a reputation for diligently handling bets and especially payouts
  • What services to provide, specifially:
    • Bare bones would just be “these are the races on day yyyy-mm-dd, here are the possible outcomes and their addresses”
    • Better would be to provide punters with (meta)data about participants, tracks and races:
      • How did this horse perform in the last X races (i.e. form data)
      • How did the jockey perform?
      • When was the last event on this track? How is the track structured (surface)?
      • What is the price money in this race? What is the racing type (gallop, trot, …)
    • Should the operation provide fixed odds betting? This requires really good book making not to be a losing proposition, or a 3rd party service to provide odds
    • Should the operation provide accumulator bets (i.e. bets covering more than one race), stable bets (bets on combinations of horses), head-to-head pairings or similar “fancy” bet types?

Terms used

  • Vig or vigorish: the overhead and fees collected by the operation
  • Punter/player: someone (or something) placing a bet
  • Outcome: a possible result of a particular race, such as “Starter 3 arrives first at the finish” (the classical “win” bet) or “Starter 5 arrives at one of the first 3 places” (a European-style “show” bet)
  • Pool or pool size: the total stake placed on a particular outcome
  • Fiat money: currency as established by a state. Basically anything that you can use to pay your taxes in some jurisdiction.
  • Fiat gambling: placing bets denominated in Euros, Pounds, Dollars or anything else considered fiat money
  • in-store betting: Placing bets in a dedicated betting store, usually for cash money
  • on-track betting: The same as in-store betting, only at the race tracks