Warning, long post. Skip to last like for LT;DR version.
I though a little about in-store usage of bitcoins and physical bitcoins over the last few days. I actually convinced myself that using physical bitcoins in stores is better than using a smartphone
* it's definitely faster to take a piece of paper out of your pocket, just like you would a bill, than to take out the phone, unlock it, start the Bitcoin app, enter password, scan a QR code, enter amount, press Send, wait, then wait for the tx confirmation from the store "register". Using physical bitcoins means give a paper to the clerk, who will scan the QR code and sweep the funds and (optionally) send you the remainder (change). 15 seconds versus 2 minutes (2 minutes if the store is kind enough to accept 0-confirmation transactions).
* it's safer for you (the buyer). You only carry with you some bills, no need to store a wallet on your phone. So you can now "safely" install that naked pics app you wanted, without fear of losing your coins.
* it's safer for the seller, too. They don't need to wait for confirmation and a double spend is a lot more difficult to time right. This will allow buying valuable stuff without waiting 1 hour for 6 confirmations.
Having said that, I looked at the physical coins that exist now. They are all very nice (I want to get my hands on a Casascius coin, nao!), but I don't think they will work in real life, because I believe they were created with a few wrong ideas in mind:
* it's assumed they will be passed along untouched. For that reason, the private key is protected with a hologram, so the person receiving can check if it's still untouched. This means the person receiving them knows how to detect a forged/openend hologram.
* as I believe that's not the case (clerk in store, remember? not security/hologram/forgery specialist), then the receiver must check the balance by scanning the QR code. So then, all those holograms are useless...
* they are mighty expensive. One of the reasons stores might accept BTC is because they can dodge card/bank fees - so they can lower their prices. Then why would the buyer pay even more for using a physical Bitcoin? He will probably prefer to pay cash...
* you need to trust the issuer. That's simply too unbitcoiny. Sorry guys, I do believe you're trustworthy, but this is a bad idea.
So here's another idea (it's not new, I'm sure you already know about "cold storage" and I know 1-2 products who have related - paper backup - functions).
Let's use a very simple bill that basically just has on it a QR code of the private key, plus the amount on it (5 BTC, for example). No protection, no fancy logos and colors. Something that you can print on your own cheap inkjet, cut and use in store. Remember they will be used only once, after sweeping the funds, the clerk will throw them away (recycle). Something like this:http://blog.mybox.ro/wp-content/files/PaperCoins-1327877209.pdf
I'm sure the design can be improved a lot. I created some glabels templates and a bash script to generate PDF files of PaperCoins from a simple CSV file. You can find them here:https://github.com/ovidiusoft/bitcoin-scripts/tree/master/PaperCoins
I would love to hear you oppinions on this (and maybe get a better design? is 10x5 cm too small?), and also I would like to ask developers what they think about adding such a feature to their clients:
* Option "Create PaperCoins", where the user selects the number of bills to create and amounts on each. The software creates N new addresses, sends the amounts and produces a PDF or prints the bills. Also, mark those addresses as "don't use" except sweep the funds back (if you didn't use the bills for some reason).
I will write another bash script that does exactly this for Electrum. I also have some other random ideas, like:
* encode the "remainder" (change) address into the QR code. For example, the QR code might be a string "FUNDSKEY=<private-key>,VALIDAMOUNT=<expected-amount>,REMAINDERADDRESS=<address>". This needs discussion, as the software used in stores needs to know about it.
* it would be nice if developers will consider using some design standards, like: bill should be rectangle, amount is in the left/center of the bill, QR code on the right, (if printed) remainder address on the back of the bill. I am thinking it would be easier for the sellers - they will easily recognize a bitcoin bill, no matter who/what printed it.
That's all. What do you think?Update:
See this post https://bitcointalk.org/index.php?topic=61818.msg723880#msg723880
for a script for Electrum users, that automatically creates new PaperCoins addresses and funds them. Also see README file at the URL above.Update 2:
Some ideas about the QR code format: https://github.com/ovidiusoft/bitcoin-scripts/blob/master/PaperCoins/QR-code-format.txt
TL;DR ? Download PDF in 1st link, print, cut. PaperCoins!