Originally posted this in the Newbies forum, probably not the best place, it fell off rather quickly.
https://bitcointalksearch.org/topic/thinking-of-pinball-machine-that-takes-bitcoin-232971Reposting here, after some refinement.
Something I wanted to make for folks to try out at the Bitcoin conference that was in San Jose in May, but logistics and other factors didn't quite come together in time.
A pinball machine that takes Bitcoin....
I have some pinball machines, as do friends of mine. An appropriately themed game would be one of the newer, better games: Tron
The game would be set up in a public area, for all to see. Instead of quarters, I'd print out a barcode and attach it to the front of the game. Pay to that address and the game would credit up, and then you get to play it.
The hardware would be straightforward. A little embedded Linux ARM board, running the Bitcoin client. A large SD card would have plenty of room for the blockchain and the rest of the Linux environment. The board would have at least one GPIO output, that my software could control. A little custom circuit would have to be made, using a relay, isolated, to use the GPIO to temporarily close a switch that is normally open, so that the pinball machine can be coined up. To run the Bitcoin protocol, the Linux board would have an Internet connection via cellular modem.
The advantage of the little board running the Bitcoin protocol itself, is that it would be more self-sufficient. An alternative is to have it be merely a slave, connecting to another computer somewhere else, and then the only time the cellular modem would need to be used would be when it was actually time to credit up the game. This has the advantage of requiring much less expensive cellular data, however, then the game is slaved to that other computer, and if that link is lost, players will feel ripped off because they'd pay the Bitcoin but receive no game play!
Wherever it runs, it should be trivial to write a little daemon that continuously monitors a particular Bitcoin address, and detects incoming payments to that address. Since the game would be something of low value (BTC 0.01 or BTC 0.005 per play, I'm thinking), and the player is waiting immediately to play, and the whole thing is a proof of concept anyway, I would feel comfortable accepting payments with zero confirmations. There is a risk of double-spending, sure, but perhaps this could be mitigated by monitoring other points in the Bitcoin network (perhaps look up each transaction on blockchain.info or similar service, to detect double-spending attempts). Since players are anonymous, I wouldn't need to care about the source of the funds, or trying to match them up with an identity. Somebody halfway around the world could make a payment, causing the game to seemingly add credits to itself out of thin air
Since it would only be accepting payments, and not sending them out, the device need not have the address in its wallet. This gives it more security, since if somebody breaks into the game and swipes my board, all that is lost is the value of the hardware, no Bitcoin would be lost.
The only disadvantage of this design is that it uses the Bitcoin protocol directly, and the payment amounts are small, so the transaction fee becomes a factor, and it seems kind of silly to have each little game stay on the blockchain for all time. However, by using Bitcoin directly, instead of a middleman service, it becomes available to all players as an impulse buy, without anybody having to register and fund first at a middleman service.
So, anybody done this already? Wonder if there's anybody else in the Bitcoin community who is into pinball. The same concept applies to any other arcade game or amusement device, as well. Vending machines could also be used, but there'd be a conversion factor to take into account, as the vending product would probably still have to be bought with fiat.
Josh