Good Evening-

I'm trying to execute an unusual 3-way transaction, where in one of the parties is not known at the start.

PartyA would initiate the transaction, and provide funding. My thought was that he would transfer 1BTC to a dedicated wallet.

He'd then also start the transaction, and name Party B as one required signature.

For the third signature, he'd approach 5 random strangers. He'd give them any and all information necessary to complete the transaction (including the private key of the wallet he just made if nec).

The first one who could propose a deal, and convince PartyB to accept it, would receive their share of the money.

For instance, c1 might offer B to split 80/20, where-as c2 offers to split 50/50. PartyB signs the proposed offer from c2, and it can then execute.

It looks like there might be a way to do this with multiple signatures and p2sh, but I'm not quite sure how to make it work yet. Any thoughts or comments welcomed.

  • Good Evening to you too sir. I would suggest looking into how the parameters for OP_CHECKSIG works (en.bitcoin.it/wiki/OP_CHECKSIG).
    – John Henry
    Sep 4 '13 at 17:53
  • How do you prevent Party A from approaching his friends, instead of strangers? Are you assuming that Party A is not going to cheat?
    – Nick ODell
    Oct 23 '14 at 19:10
  • Is party A even necessarily a part of the process other than providing the original funding?
    – morsecoder
    Dec 22 '14 at 22:58

Yes, P2SH seems to be the way to go here. If you do a redeem script like:

redeemScript: DUP HASH160 {B's pub key id} EQUALVERIFY CHECKSIGVERIFY 1 {c1 pub key} {c2 pub key} {c3 pub key} {c4 pub key} {c5 pub key} 5 CHECKSIG

Hash it and use the P2SH hash as the address. Then you could spend this output with a scriptSig like:

scriptSig: {any one of c1-c5's signatures of the transaction} {B's signature} {redeemScript}

I'd do some testing with these on a testnet network before doing this for real.


strongcoin.com offer a escrow service:


you could also use


They provide a platform for transaction arbitration which is open source.

https://coinb.in/multisig/ - This allows you to use the multi-sig functionality in bitcoin which you can use for escrowed trades as well.

I only just stumbled across this one: http://www.coinsigner.com/Howitworks.html but it looks to provide some kind of arbitration,

  • Please don't use URL shorteners.
    – Nick ODell
    Oct 23 '14 at 19:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.