Oracleless Game Theoretical Betting

Dear all, recently Betting Platform was proposed. This made me think of how possibly we could make a decentralized betting platform and attract more usage of our coin.

Why betting is good for ツ?

Grin is a privacy enhanced and scalable coin. Betting is gambling, so it is highly regulated in most jurisdiction, at the same time it is a popular hobby. I believe a decentralised betting algorithm run on a privacy enhanced blockchain would be a good way to popularise ツ.

Naive implementation

The most obvious way to create a betting platform for ツ would be using oracles. One oracle to fetch betting odds and another oracle to fetch results. The payments would be subject to adaptor signature from the oracle.

Problem with this design is it is not fully decentralised. The oracle decides the outcomes, oracles are centralised services.

In further sections I will explain my idea for a fully decentralised betting platform which does not require any oracles.

Oracleless betting

Before diving into the idea, I would like to say that I do not consider any technical details. Let us just assume it is possible to lock funds and make conditional payouts using adaptor signatures. For now let’s skip the details how outputs are managed and whether such conditional payouts are even possible.

Getting rid of odds oracle

Before modern betting platforms started people used “pool betting”. You might see in movie scenes people saying “I bet $5 for ” and you don’t hear a question “what are the odds of ?”. In the pool betting people bet money on particular outcome and payout depends on how much money was bet on that event in total.

For example, a football match occurs. People bet 1000ツ in total on this match. Team A wins. Only 10 people bet on team A. In such case each of them gets reward of 100ツ.

Pool betting is less advanced than modern betting. Harder to estimate possible profits as rewards depend on the amounts. It brings disadvantages, but technically, it does not require any oracle as the rewards can be decided by the smart contract based entirely on the data within the contract.

Getting rid of results oracle

This part is going to be more controversial. I propose the participants to secretly vote on the event outcome. Imagine if you want to bet 1ツ on outcome A, you also need to include a security deposit of 20X the ammount of bet, so you transfer 21ツ. After the event is done. Let us say your reward should be 2ツ if outcome A occurs. You request a payout of 22ツ, which consists of your bet, your reward and your security deposit.

Depending on how people request their payouts the contract decides who should lose the deposit. If most people vote for outcome A using their payout requests, the contract will seize the security deposit of those who requested rewards for remaining outcomes.

The security model is based on game theory. It is a case of prisoner’s dilemma under which the utility function is constructed in a way that makes it non-profitable for the participant to attempt cheating. If the security deposit is large enough, the expected value of profits will be always lower in case of cheating attempts.

I will add that I am not a matematician and certainly not an expert on game theory. It is just an idea, I look forward for other people to comment!

How such platform would work?

We intentionally skipped the low level details, but we could say such a betting algorithm would be fully P2P. Basically people could run their betting nodes and broadcast bets. Anyone could create an event and anyone could bet on events proposed by others. People would surely coordinate and communicate outside of the P2P network, as given the pool betting disadvantages, it is better to have one event with large amounts rather than same event duplicated many times with smaller amounts. Hopefully people communicating would not be sufficient to break the prisoner’s dilemma scheme, it would need to be managed in a way t ensure there is always lack of coordination during the outcome voting.

I look forward for your comments!


after many years, Grin will be used for something.


This kind of bet requires two betting parties to fund a 2-of-2 output which can be spent all to one party or all to the other party in txs with adaptor signatures, once the oracle signs the correct outcome.
In this case both parties must trust the oracle to sign exactly one outcome. They can also guard against a silent oracle by returning the original funds after a timeout.

Transfer to whom?

1 Like

Depends on the technicalities which are purposely ignored in this description. In case of account-based blockchain (like Ethereum) it could be transferred to a smart contract escrow account. In case of UTXO blockchain it would probably need to be a shared by many parties output with conditional payout based on adaptor signature.

Another question would be, what would happen with lost deposit? Should it become a reward to the winners? Unclear if that wouldn’t break the game theory of this scheme.