How to implement Multisig transaction without using OP_CHECKMULTISIG

2

I've learned that OP_CHECKMULTISIG is a Bitcoin builtin opcode to validate Multisig transactions. Can I write Bitcoin script to validate the Multisig transactions without invoking OP_CHECKMULTISIG? If so, what do I need to change in the redeemScript?

Ju Chen

Posted 2018-05-09T21:02:44.987

Reputation: 21

Answers

2

Yes, you can use a redeemScript that has a lot of OP_CHECKSIGs and boolean operations. You would have to enumerate all possible combinations of signatures however.

As a simple example, if you used a 2-of-2 multisig, traditionally your redeemScript would be

OP_2 <pubkey1> <pubkey2> OP_2 OP_CHECKMULTISIG

and the scriptSig is then

OP_0 <sig1> <sig2> <redeemScript>

Without OP_CHECKMULTISIG, your redeemScript would be

<pubkey1> OP_CHECKSIG OP_SWAP <pubkey2> OP_CHECKSIG OP_BOOLAND

and the scriptSig would be

<sig2> <sig1> <redeemScript>

For more complex multisigs with more keys and m-of-n, the scripts will be much more complicated with more OP_SWAPs, OP_BOOLORs, and OP_BOOLANDs.

Andrew Chow

Posted 2018-05-09T21:02:44.987

Reputation: 40 910

There was also this very old tx with a more complicated script, which you and me have replied to: https://bitcoin.stackexchange.com/questions/71326/what-does-this-transaction-script-mean/71407#71407

pebwindkraft 2018-05-11T22:12:38.743