Bitcoin Forum

Bitcoin => Project Development => Topic started by: bitfair on June 04, 2013, 11:34:13 PM



Title: Distributed Prediction Market
Post by: bitfair on June 04, 2013, 11:34:13 PM
I find Prediction Markets extremely interesting tools for information aggregation and forecasting. With Intrade now folded, I am really missing a good source of information, and I think a decent prediction market for Bitcoin would attract a lot of positive attention (how many journalists quoted Intrade during the presidential campaign?) and provide plenty of useful information.

[Please, don't make me explain once again what is wrong with the parimutuel BetsOfBitcoin and BitBet model!]

After coding several working examples of a Bitcoin prediction market (launch ready!), I realize that I do not have the time to operate it [even though it could probably be quite lucrative].

That is why I have been thinking a lot lately about how to take myself out of the whole equation, and I have come up with a design for distributed prediction markets. The idea is pretty simple and I have coded up the basic foundation - now I thought it would be time to throw the idea out there and see what the response is like, and get ideas of how it can be improved.

The basic idea is simple, let me illustrate with an example:
Alice wants to create a prediction market for a [binary] question with outcomes Q=0 or Q=1. She then creates 18 bitcoin addresses, and announces: if you believe there is a 10% chance Q=1 send bitcoins to ADDRESS1, if you believe there is a 10% chance Q=0 send bitcoins to ADDRESS2, etc. A simple trade matching engine matches transactions with each other when their prices (probabilities) intersect as they appear in the blockchain. Furthermore, all participants can verify the transactions, trades and see which transactions are unmatched because it is in all in the blockchain for everyone to see - as long as all the participants have agreed on how the transactions will be matched. So everybody can see and verify the trades and the order book. When the outcome is determined, the matched trades can be paid out by Alice, who controls the addresses, and the unmatched orders can be returned [all to their originating address].

It is pretty foolproof, but it has some drawbacks: (1) trades/updating book happens in blocks every ten minutes (2) not always a good idea to return funds to senders address, etc.

The code I have written so far is simply to monitor the blockchain, match trades and hold the order book. It is not quite ready to be distributed yet, it's very rudimentary.

Depending on the feedback here, I may release it pretty soon.

Any suggestions, questions or comments? Would anybody consider using such a distributed prediction market?

[If you want to see it happen faster, help me justify spending more time on it: 1LCxFUwBWchSf9nRnNNSRGDEygm5iv52p1]


Title: Re: Distributed Prediction Market
Post by: bluemeanie1 on June 05, 2013, 05:13:24 AM
it's possible to create a booking system using Bitcoin.

The value of Q could come from a trusted 3rd party sports outcome publishing service.  For instance you have a special authority that publishes sports outcomes in a known format, RSA signed, and they are known to be reliable.  It wouldn't be hard to do for every major sport.

ex.

  you want to bet 100BTC that Mets will win vs. Cubs on June 9th, 2013

  "METS(6/9/2013)-WIN" is published and signed by the Authority if Mets win.  "CUBS(6/9/2013)-WIN" is published and signed by the Authority if Cubs win.

  Then a TX is created with two inputs, the STAKE(coming from the betters account) and the WINNINGS(coming from the bookie)

  The scriptPubKey then checks to see if the signature for the win-code is correct, if so releases the funds to the better.

  Another TX is created with one input, the STAKE(coming from the betters account)

  The scriptPubKey then single checks for a signed win-code for "CUBS(6/9/2013)-WIN", if so released funds to the house.

  Thus the authority only signs codes according to the sports outcome.  If Mets win, then there is no signed "CUBS(6/9/2013)-WIN" ever in existence, only a signed "METS(6/9/2013)-WIN" which allows the better to redeem his winnings.

  It might be possible to do this with ONE transaction, but I'm not completely sure.

You could create similar scenarios for political outcomes.  Thus all you need to do is create a special service that publishes this information and these betting transactions could be created.  It would require practically no technology, you could do it with command line Bitcoind, GPG and Google Docs.

-bm


Title: Re: Distributed Prediction Market
Post by: mrkent on June 05, 2013, 05:19:44 AM
I would like to see any prediction market. Host it on tor if you have to.


Title: Re: Distributed Prediction Market
Post by: bluemeanie1 on June 05, 2013, 05:31:12 AM
I would like to see any prediction market. Host it on tor if you have to.

you dont have to host anything.  In the system I describe above, you simply need to PUBLISH the signed predefined outcome codes.  If the code that indicates a win is published, the coins can be released to the winners account.

obviously to make this fun and usable you would want to automate all these things.


Title: Re: Distributed Prediction Market
Post by: bluemeanie1 on June 05, 2013, 06:09:58 AM
there are distinct advantages to this 'bookie' system.

bets are irreversible, cannot be voided.

the bookie and gambler can be totally anonymous.

gambler does not need to contact bookie to redeem winnings, it is automatically redeemable when the codes are published.


Title: Re: Distributed Prediction Market
Post by: bitfair on June 05, 2013, 10:55:24 AM
it's possible to create a booking system using Bitcoin.

The value of Q could come from a trusted 3rd party sports outcome publishing service.  For instance you have a special authority that publishes sports outcomes in a known format, RSA signed, and they are known to be reliable.  It wouldn't be hard to do for every major sport.

ex.

  you want to bet 100BTC that Mets will win vs. Cubs on June 9th, 2013

  "METS(6/9/2013)-WIN" is published and signed by the Authority if Mets win.  "CUBS(6/9/2013)-WIN" is published and signed by the Authority if Cubs win.

  Then a TX is created with two inputs, the STAKE(coming from the betters account) and the WINNINGS(coming from the bookie)

  The scriptPubKey then checks to see if the signature for the win-code is correct, if so releases the funds to the better.

  Another TX is created with one input, the STAKE(coming from the betters account)

  The scriptPubKey then single checks for a signed win-code for "CUBS(6/9/2013)-WIN", if so released funds to the house.

  Thus the authority only signs codes according to the sports outcome.  If Mets win, then there is no signed "CUBS(6/9/2013)-WIN" ever in existence, only a signed "METS(6/9/2013)-WIN" which allows the better to redeem his winnings.

  It might be possible to do this with ONE transaction, but I'm not completely sure.

You could create similar scenarios for political outcomes.  Thus all you need to do is create a special service that publishes this information and these betting transactions could be created.  It would require practically no technology, you could do it with command line Bitcoind, GPG and Google Docs.

-bm


That would be a very clever system indeed. It's along the lines of the idea of contracts championed by Mike Hearn (https://en.bitcoin.it/wiki/Contracts#Example_4:_Using_external_state (https://en.bitcoin.it/wiki/Contracts#Example_4:_Using_external_state)), which is currently under development. It's mind-blowing in itself, but difficult to say when it will be ready for testing/general use.

Some kind of service would need to be built around it to facilitate the matching of bettors, and "the oracle" would need to be fed regularly with event outcomes by a trusted party.

there are distinct advantages to this 'bookie' system.

bets are irreversible, cannot be voided.

the bookie and gambler can be totally anonymous.

gambler does not need to contact bookie to redeem winnings, it is automatically redeemable when the codes are published.

I see the same advantages of such a system.

The system I have in mind is a little more primitive, however, and works with existing Bitcoin features. Easier to explain by example - I can try setting up an example and running it here on the forum, anybody know of any upcoming events that would be fun to predict?


Title: Re: Distributed Prediction Market
Post by: bluemeanie1 on June 05, 2013, 01:23:34 PM
Quote
That would be a very clever system indeed. It's along the lines of the idea of contracts championed by Mike Hearn (https://en.bitcoin.it/wiki/Contracts#Example_4:_Using_external_state), which is currently under development. It's mind-blowing in itself, but difficult to say when it will be ready for testing/general use.

Some kind of service would need to be built around it to facilitate the matching of bettors, and "the oracle" would need to be fed regularly with event outcomes by a trusted party.

yes that's right.  Mike Hearn's idea is a bit more complex than mine.

Quote
The system I have in mind is a little more primitive, however, and works with existing Bitcoin features. Easier to explain by example - I can try setting up an example and running it here on the forum, anybody know of any upcoming events that would be fun to predict?

you could do everything in this forum as long as you

  • Had a trusted party who would publish the right signed outcome codes according to the event in question
  • Used bitcoind to properly create the transactions

so we could technically make such 'bets' right here in bitcointalk.

maybe we should try it?

I can develop the TX codes if so.

-bm


Title: Re: Distributed Prediction Market
Post by: bluemeanie1 on June 05, 2013, 06:04:17 PM
good thing Pete Rose didn't have this.


Title: Re: Distributed Prediction Market
Post by: mrkent on June 05, 2013, 07:18:26 PM
I meant that you said you have code ready to launch a centralized prediction market. I'm saying you should open business.