0

I need clarification on multisig hd wallets. Let's imagine we have a 2/3 multisig. The first key is generated by the user on a mobile wallet, the second is kept on a server while the third is off-line (for emergencies). In an hd wallet the seed is generated from the seed phrase and, from this, the Master Private Key.

How does the generation of the other 2 Master Keys happen?

What do these keys share?

When new private keys are generated by the user are new keys derived also on the server?

2 Answers 2

1

HD is really about back-ups and wallet recovery, a multisig address can be created from any public keys regardless how/where they were generated. Heck you could use the same public key 3 times, although I wouldn't recommend it I'm just trying to prove a point.

To answer your exact questions:

How does the generation of the other 2 Master Keys happen?

Do you want 2 more master keys, or do you just think you need them? Additional master seeds are not necessary, but if you want more master keys then create additional HD seeds.

What do these keys share?

The master keys? They shouldn't share anything, again not relevant to creating a multisig address.

When new private keys are generated by the user are new keys derived also on the server?

Private keys are not needed to create a multisig address, just the public keys. If you only want one HD seed to back-up, then use different accounts for each key pair. By accounts I'm referring to the derivation path, for example Account 1 Index 0: m/0/0/0/0, Account 2 Index 0: m/0/0/1/0, Account 3 Index 0: m/0/0/2/0, this would produce 3 key pairs, all with an index of 0 and the public key of each would be used to create the multisig address.

1

Private keys are simply 256bit random numbers. A seed phrase is simply a different way to generate 256bits of randomness in a more human-readable way.

So, to answer your questions

How does the generation of the other 2 Master Keys happen?

You need to securely generate a 256bit random number. This can be done in software. You can also generate them in a HSM. Regardless, for a secure, multi-sig setup, these keys must be generated on different machines, and ideally using different random number generation schemes.

What do these keys share?

For your example, they should share nothing. The user's key and the service/backup keys should be as independent as possible, and hopefully never be active on the same machine.

When new private keys are generated by the user are new keys derived also on the server?

Each master private key must be kept on separate machines, otherwise, you're nullifying most of your multi-signature benefits. Derivations using the private key should only be done when as needed for signing, and the derivations must be independent for each key.

Derivation of the public key can be done on any machine (it's public information). This can help with generating derived multi-sig addresses that can be computed anywhere.

1
  • So the generations happen independently. Do they work as if they were independent wallets? I don't understand how they can agree to sign a transaction.
    – MaXbeMan
    Sep 23, 2020 at 18:27

Your Answer

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

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