Forget "difficulty insurance" and pursue the lockup idea. You're on to something important. Come up with a way to do distributed escrow as a two-phase cryptographic protocol. Something that works like this:
- A sends N locked bitcoins to B to buy something. A cannot spend those Bitcoins again, but B can't spend them yet.
- A gets whatever B was supposed to send them.
- A unlocks the N locked Bitcoins. B can now spend them.
That's enough for little transactions, up to maybe $10 or so. This is better than "escrow services"; there's no escrow service which can run off with the money. (It happens. Big problem on eBay.) Both sides can lose, with un-spendable Bitcoins in limbo. Since neither side has the money, both sides will probably try to come to some agreement. Make that work and hook it into some popular shopping cart program.
There's a fancier version, with an arbitrator.
- A sends N locked Bitcoins to B, with an arbitration service listed in the transaction.
- A doesn't get whatever B was supposed to send them.
- A sends a token to the arbitration service requesting arbitration.
- Cases:
- B sends their token, accepting arbitration.
- A wins. The arbitration service unlocks the Bitcoins in favor of A.
- B wins. The arbitration service unlocks the Bitcoins in favor of B.
- B does nothing, and after some period of time, loses by default.
- or
- A fails to unlock the locked Bitcoins they owe to B
- B sends a token to the arbitration service requesting arbitration.
- cases as above.
A solution has to have the following properties:
- The transaction is anonymous unless submitted to arbitration.
- The unlocking operation is a 2 out of 3 cryptographic protocol.
A and B can unlock, or A and the arbitrator can unlock, or
B and the arbitrator can unlock.
- Operations involving an arbitrator have a delay (days to weeks)
That may be overkill, but it would be useful to have it available for larger transactions. (Like "pre-orders" from Butterfly Labs, perhaps.)
This would make Bitcoin ripoffs much harder, and make the sale of goods using Bitcoins much safer.
The lockup idea is actually fairly trivially from a technical perspective. The hard part is the arbitration service actually being able to be trusted and unlocking things. They need a way to be able to judge. This likely isn't straightforward, and it's hard to know if that entity can be trusted. That entity may conspire with the parties to hijack the coins, etc... Judging these things is also going to be expensive.
That being said, I certainly wouldn't be opposed to doing this. In the end, it's something I'd like to get more into, and it's a bit more general purpose than I envisioned (I wanted to stick to arbitrating things that are easy to judge, such as difficulty), but it's not impossible.
You may want to see my external state posts for more information on this. Escrow is one key thing that it can be used for. I've already gotten the lock-up functionality to work on testnet, so it's just a matter of building it.