Creating bitcoin put and call options with colored coins
I think it is possible to create put and call options for the USD/BTC price with low trust requirements using colored coins.
Heres an example:
You might want to buy a put option to hedge your downside risk on the bitcoin exchange rate. Say the price of bitcoin is currently $450. You buy an option to sell Counterparty A a certain number of bitcoins on July 31, 2014 at $400. If the price of bitcoins is less than $400 on July 31, then obviously you exercise your option and sell the coins to Counterparty A at $400 / BTC. If the price is higher than $400, then your options expires worthless.
Now heres where the idea gets unique: Rather than settling in dollars, if the contract is written for settlement in bitcoins, then it would be possible for Counterparty A to prove that they are adequately capitalized to settle put options in bitcoins rather than dollars. A reserve of bitcoins spendable with the same script used to issue the colored assets automatically become the proof of reserves.
So now Counterparty A has shown they have sufficient reserves to make good on the put options. Next, we must somehow force transfers from the reserve address to the outstanding colored coins, should the puts expire in the money. I dont think this process can be entirely trustless because we need to agree on the bitcoin/USD price; however, I think by using multisig with keys held by neutral third parties, that we could at least make it completely transparent. Any fraud should be obvious and provable.
There is one catch of course: The reason you buy a put option in the first place is to hedge your downside risk. But if the price of bitcoin completely collapses, receiving settlement in bitcoins would be impossible since they would no longer have any value. I dont think this is a show stopper, but it would mean that the put options would be able to settle in bitcoins for all values of bitcoin greater than, say, $100 / BTC. The floor price could be made lower by increasing the bitcoin reserves held at the colored coin address. Put options with lower floors would be more valuable.
You may not to have the risk of settle in bitcoins if there exists a USDCoin token.
Would this work:
1. Assume another party (e.g. Fed or whoever) is running USDCoin, issueing USD tokens which they guarantee is redeemable for cash.
2. Assume an oracle service (also another party) which will be known to sign the transaction given that a script (could be in the metadata) evaluates to true, in this case BTCUSD < 400 AND date >= Jul 31st.
3. Create 3-of-3 multisig address with you, oracle service and Counterparty A. With this address as the input:
a. All of you sign an NlockTime transaction dated August 2nd, transferring 400 USDCoins to CounterParty A. CounterParty A gets to keep this transaction to broadcast if the option is not exercised on by August 2nd.
b. Both you and counterpartyA sign a transaction containing metadata condition "BTCUSD < 400 AND date >= Jul 31st", which the oracle will sign if is true, giving you 400 USDCoin and CounterpartyA 1 BTC.
4. Counterparty A, knowing that they can get the money back using above transaction if option is not exercised by August 2nd, constructs and signs a transaction with SIGHASH_ANYONECANPAY and the outputs:
a. to the multisig address sending 400 USDCoin (they would sign an input for this one)
b. to their own address containing the price of the put option.
5. You take the transaction above, add your input to pay output b as the price of the option, and broadcast the transaction. This will put the 400 usdcoins into the multisig address.
6. Come Aug 1st, if BTCUSD < 400, the oracle service will sign the multisig transaction in 3b for you and you can get 400 USDcoins. If you don't redeem by Aug 2 then CounterPartyA can just redeem their USDCoins.
This would not require you to trust counterpartyA, but would require trust of USDCoin's issuer and also the oracle service. Since both of them are (hopefully) large and unrelated to CounterPartyA and run a business by taking fees, they should not have interest in cooperating with either you or the option counterparty.