Bitcoin Forum

Bitcoin => Bitcoin Discussion => Topic started by: rebuilder on July 20, 2012, 08:33:31 AM



Title: Automated arbitration agents
Post by: rebuilder on July 20, 2012, 08:33:31 AM
Hi,

I was discussing gambling and Bitcoin with a colleague, and it occurred to us there's a need for computerized arbitration. What I mean is, currently, to place a bet, you have to either just trust whoever you're betting against, or use a third party as escrow. Obviously this is a problem for people other than gamblers as well.

What if you could have a truly neutral third party? A non-human one?

I'll try to outline what I had in mind. I'm not that IT-savvy, so there are glaring errors in this idea. Which is why I'm posting here.

The program is written. The source is released into the wild, and anyone can compile it[1]. On compilation, the program creates a set of encryption keys not known to any person. [2] It is then run, and provided CPU time and possibly seeded with some funds to let it purchase more elsewhere. A protocol would be needed to let the program negotiate for CPU cycles among different servers. The program propagates and distributes its functions redundantly among these servers.[3] Redundancy implies the program does not trust any single server operator, and will perform any computation performed on one server on several others in order to guard against tampering. Tasks are performed at the lowest logical level possible and distributed among varied servers to make analysis of the actual commands being run harder.

The program begins to advertise itself, saying it is willing to perform tasks for payment. The gambling case provides an example task: Two persons wish to bet on the results of a sports match. They send a request to the program instance, essentially saying "We are persons A and B. Send us a pair of BTC addresses, and we will each send X BTC to one of them, plus your fee for services rendered. Your service will be to monitor the status of Sporting Event X and, depending on the outcome, send all funds minus your fee to address A or B, depending on who predicted the result correctly."[4]

The program will then see the outcome of the Sporting Event, and, provided both A and B have sent funds, will pay the winner. To do this, it uses the funds it has received as its fee to rent CPU time with which it performs the operations required of it.



[1] How does a user know an instance of the program comes from the source code publicly posted, given the program should obfuscate itself to prevent tampering?
[2] Is this possible? To what extent can a program run without being subject to tampering with its internal logic?
[3] Insert magic
[4] Some kind of logical syntax would take the place of this sentence, and of course the actual content of the bet needs to be provided.


So, the tl;dr:

Is it possible to create a self-propagating, de-centralized, open source program that would take bitcoins as payment in exchange for performing tasks set out in a limited syntax, using the bitcoin to pay for serverspace?  Essentially, can a program be entirely autonomous and incorruptible, while still taking input from users?


Title: Re: Automated arbitration agents
Post by: HostFat on July 20, 2012, 09:02:55 AM
https://en.bitcoin.it/wiki/Agents
https://bitcointalk.org/index.php?topic=60198.0


Title: Re: Automated arbitration agents
Post by: rebuilder on July 20, 2012, 09:09:02 AM
That'll teach me to search... Thanks!


Title: Re: Automated arbitration agents
Post by: Mike Hearn on July 20, 2012, 11:35:49 AM
Also see here:

https://en.bitcoin.it/wiki/Contracts#Example_4:_Using_external_state

What you want is essentially an oracle agent.