What is the functional difference between createmultisig and addmultisigaddress in bitcoincore (v 0.10)?

To be clear, I understand how both function. ie. multisigCmd n ["address1 public key as hex", "address in Base58 format", "more JSON entries..."] (where n is the n of m value, and a JSON list of eiher hex pubkeys or Base58 addresses follows).

However, the output for the multisigCmd (createmultisig and addmultisigaddress, respectively) is:

  • createmultisig: ==> 3outputEqualsPay2scriptBTCAddress, script as hex
  • addmultisigaddress: ==> 3outputEqualsPay2scriptBTCAddress (no script!)

Both commands give identical output addresses (ie 3outputEqualsPay2scriptBTCAddress) when the same JSON data input is used. So the difference, really, is only that the former outputs the redeeming hex script. Am I missing something? Why the need for 2 commands rather than, for example, a single command with a -hex_script_output flag?

2 Answers 2

  • createmultisig creates a P2SH multisig address for use in raw transactions. It outputs the redeem script because you'll need that to spend any payments sent to the P2SH address.

  • addmultisigaddress adds a P2SH multisig address to your Bitcoin Core wallet, allowing you to track and spend payments received by that address. It doesn't output the redeem script because Bitcoin Core stores that for you. (You can retrieve it later with validateaddress.)

  • Of course, that makes perfect sense. I've noticed the new v0.10 help function partitions the 2 functions under the Tx and Wallet categories, respectively. The categories would've clarified the query for me as past versions of help were not clearly delineated Feb 15, 2015 at 1:09

I know this is old, but I'd like to comment from the point of view of more recent bitcoin code. Both createmultisig and addmultisigaddress now output the redeem script.

Using the redeem script seems only necessary for manually signing a raw transaction with signrawtransactionwithkey, which appears redundant (for ordinary usage), as the set of PSBT commands do all of that automatically. createpsbt, decodepsbt, walletprocesspsbt, finalizepsbt, sendrawtransaction.

This is what brought me here searching for the practical difference between createmultisig and addmultisigaddress. I think what we are left with is only whether it adds it to your wallet. I was confused, because at first it appears that you need to create it and then add it, but in practice you can go straight to addmultisigaddress.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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