Bitcoin Forum

Bitcoin => Bitcoin Technical Support => Topic started by: smoothie on June 23, 2014, 09:24:11 PM



Title: CREATEMULTISIG ERROR
Post by: smoothie on June 23, 2014, 09:24:11 PM
When I run:

Code:
createmultisig 2 '["1Fq44ntZgpwaTJEQMMrAhkLkfmbYbJoRra","12sTephw2t8CrrZhQLe28745VeZTzDitZs"]'

I get the following error:


no full public key for address 1Fq44ntZgpwaTJEQMMrAhkLkfmbYbJoRra (code -1)


1Fq44ntZgpwaTJEQMMrAhkLkfmbYbJoRra is part of another wallet, meaning the private key is not in the wallet that the above command in the console is being run from.

But if I take another address that is created within the same wallet as 12sTephw2t8CrrZhQLe28745VeZTzDitZs I get:

Code:

{
"address" : "3QwKgdbvQQCn4JYSwkXVyTbs2nRTF7RRcU",
"redeemScript" : "522103acfd5c70eee92235e7076a968d6c3894b3b19f16748be52a0509d99b2c3605092103251eea800835f59a88e7163cb6d97ded08e58e9d23ddccb0c95805991c17280852ae"
}

Is there a way to run createmultisig command while having two addresses from different wallets?

What am I missing?


Title: Re: CREATEMULTISIG ERROR
Post by: grue on June 23, 2014, 09:38:03 PM
no, you need both public keys


Title: Re: CREATEMULTISIG ERROR
Post by: smoothie on June 23, 2014, 09:42:11 PM
no, you need both public keys

So there is no way to truly create a multisig address/wallet without having all private keys involved (moreso in the same place the generation of the multi-sig address is being created)?

Does this imply that there is no way to truly have a secure multi-signature bitcoin address?

Seems if it is required to have all private keys in one place to generate a multi-signature address then the address generated isn't truly secure as the party creating the multisig addy could just keep all the information.

Is there really no other way to do this securely?


Title: Re: CREATEMULTISIG ERROR
Post by: smoothie on June 23, 2014, 10:04:04 PM
I guess I'm supposed to run validateaddress command on both addresses to get the pubkey for both to create the multisig?

Seems to work when do a test.

Does this sound right?


Title: Re: CREATEMULTISIG ERROR
Post by: grue on June 23, 2014, 10:10:35 PM
I guess I'm supposed to run validateaddress command on both addresses to get the pubkey for both to create the multisig?

Seems to work when do a test.

Does this sound right?
yes


Title: Re: CREATEMULTISIG ERROR
Post by: smoothie on June 23, 2014, 10:15:44 PM
I guess I'm supposed to run validateaddress command on both addresses to get the pubkey for both to create the multisig?

Seems to work when do a test.

Does this sound right?
yes

Okay awesome. Thanks for the validation.  :)


Title: Re: CREATEMULTISIG ERROR
Post by: DeathAndTaxes on June 23, 2014, 10:20:48 PM
no, you need both public keys

So there is no way to truly create a multisig address/wallet without having all private keys involved (moreso in the same place the generation of the multi-sig address is being created)?

No that is no correct.  You need all the PubKeys not all the private keys to create the multisig address.  

As a side note, it would have been nice if Bitcoin had supported ECDSA PubKey recovery but it doesn't.  That would have allowed creating multisig txs using the PubKeyHash instead and the PubKeyHash can be decoded from the address.  It doesn't and likely never will, which makes creation of the multisig address involving multiple parties less user friendly.  Most users don't know how to obtain a PubKey from their wallet (or even know there is such a thing as a PubKey or that it isn't the same thing as the PubKeyHash).

Quote
I guess I'm supposed to run validateaddress command on both addresses to get the pubkey for both to create the multisig?
validateaddress only returns the PubKey if "isMine" is true so it is useful for a simplistic test but not very useful for a real world solution.   If the keys are in multiple wallets then it would need to be run on each address which has the private key (and that assumes all parties are using bitcoin-core).   For example if I was one of the signers in your multisig tx, you can't determine the PubKey for this address 1NbCxn5NnFF4y9EWzU3YZcJZGuYsoRN4HZ with the address alone because it has never been spent from and thus isn't publicly known.


Title: Re: CREATEMULTISIG ERROR
Post by: smoothie on June 23, 2014, 10:56:47 PM
no, you need both public keys

So there is no way to truly create a multisig address/wallet without having all private keys involved (moreso in the same place the generation of the multi-sig address is being created)?

No that is no correct.  You need all the PubKeys not all the private keys to create the multisig address.  

As a side note, it would have been nice if Bitcoin had supported ECDSA PubKey recovery but it doesn't.  That would have allowed creating multisig txs using the PubKeyHash instead and the PubKeyHash can be decoded from the address.  It doesn't and likely never will, which makes creation of the multisig address involving multiple parties less user friendly.  Most users don't know how to obtain a PubKey from their wallet (or even know there is such a thing as a PubKey or that it isn't the same thing as the PubKeyHash).

Quote
I guess I'm supposed to run validateaddress command on both addresses to get the pubkey for both to create the multisig?
validateaddress only returns the PubKey if "isMine" is true so it is useful for a simplistic test but not very useful for a real world solution.   If the keys are in multiple wallets then it would need to be run on each address which has the private key (and that assumes all parties are using bitcoin-core).   For example if I was one of the signers in your multisig tx, you can't determine the PubKey for this address 1NbCxn5NnFF4y9EWzU3YZcJZGuYsoRN4HZ with the address alone because it has never been spent from and thus isn't publicly known.

Yes I misspoke. But as you can see I was able to figure out that I needed to run validateaddress on both addresses from different wallets to create the multisig address.

In essence to create the multisig you don't need the private keys to create the pubkey via the validateaddress command, but each party would need access to the private key of their address being used in the multisig creation to create pubkey for it. It is an indirect usage of the private keys to create the multisig addy.

This would be assuming all parties were using bitcoin-core, yes.

Yes I know I can't determine the PubKey for your address in that example. But in my simplistic test I used two separate wallets created from the satoshi client and it appears to work.