How do I use Multisig transactions to handle escrow needs? I want to do a private escrow between me and someone else for a Bitcoin miner, and it will take weeks or months for that miner to arrive.


I think multisig is an easy trust-free way to accommodate this.  What is the correct sequence of actions that I can use to handle this?
Is there a way to also have arbitration in case either party refuses to release the funds?
There are two basic templates for using multisig for "escrow", 2-of-2 and 2-of-3. In both cases, you can currently use bitcoin-qt's raw transaction API to create the addresses and transactions.



In 2-of-2 you do the following:


Create a multisig address which requires signatures from both the buyer and seller.
The buyer sends funds to this address.
Seller ships the product.
When the product arrives, the buyer and the seller sign a transaction sending the funds from the multisig address to the seller.
If the order is cancelled amicably, the buyer and seller sign a transaction sending the funds from the multisig address to the buyer.


This doesn't require any 3rd party, but it does have several failure modes, e.g. extortion, negligence and so on.



In 2-of-3 you do the following:


Find a relatively trustworthy escrow/mediator.
Create a multisig address requiring 2 signatures out of the buyer, seller and mediator.
Buyer sends funds to this address.
Seller ships the product.
When the product arrives, buyer and seller sign a tx sending funds to seller.
If the product doesn't arrive, mediator verifies this fact, and buyer and mediator sign a tx sending funds to buyer.
If the product arrives but buyer refuses to pay, mediator verifies this fact, and seller and mediator sign a tx sending funds to seller.


This requires a 3rd party, but the trust requirement is limited. As long as buyer and seller cooperate the mediator doesn't do anything. A problem requires 2 out of 3 parties to defect, unlike traditional escrow where the escrow can ruin it himself.