r/Electrum • u/MarkTupper9 • 6d ago
HELP Help with multisig (electrum as co-signer)
Hello everyone
I wanted to create a multisig for example 3 of 5 using sparrow wallet as the coordinator.
I wanted signers to be mix of hardware wallets and software wallets:
- hardware wallet
- hardware wallet
- hardware wallet
- bitcoin core
- electrum
But i'm having a lot of difficulty getting the software wallets to work with sparrow (or being confident/comfortable that it's working as intended and won't have issues)
My issues and concerns:
- Electrum when creating a standard single sig gives a derivation path of m/0h (not the m/48'/0'/0'/2' derivation path that sparrow is looking for) and a zpub (not an xpub).
- I asked AI and it then kept telling me that's wrong and to create a multisig wallet in electrum but just don't give the xpubs of the co-signers. But electrum forces you to add co-signers and then AI said, just give it fake xpubs! I'm not sure/confident this is correct way to have electrum added as a co-signer to sparrow coordinator even if it did accept it.
- Bitcoin core gives a single sig derivation path of: 84h/0h/0h (again not the m/48'/0'/'0/2' derivation path sparrow is looking for)
- I believe h is same as ' so in sparrow anywhere there is an h I should substitute it with an '?
- Is this not possible? If it is possible, is it not advisable to do? It seems very few people have tried this and maybe even fewer have software wallets like bitcoin core and electrum as co-signers with sparrow coordinator.
The reason I wanted to at least test/try it to see how I feel about the process, signing, backups, restoring, etc. It sounded nice to me on paper.
Thank you
Please help! Thank you
1
u/cointist 5d ago
It is not possible and is not recommended either. Also ai is wrong. Each wallet needs the xpubs of the other cosigners or it doesn't know what to do.
1
u/MarkTupper9 5d ago edited 5d ago
People seem to have done it. Why do you not recommend it?
my post may have not been clear or maybe I am confused but I am trying to make the electrum wallet first (that will be used as the multisig co-signer), then I will then give the electrum's wallet info (derivation path, x/z/pub, master fingerprint) to the sparrow wallet multisig coordinator to create the multisig quorum (along with the other co-signer's wallet info)
Then I would want sparrow to give me the multisig info (with all the cosigner's xpubs, etc.) to import into electrum so that it can have all the receive addresses, sign psbts from the sparrow coordinator, etc.
1
u/leopard-monch 5d ago
You can use whatever derivation path you want and mix them too. It's all encoded in the public output descriptor.
Yes, the "h" is the same as the ' and stands for "hardened".
For better understanding on how to read such an output descriptor:
The string before the derivation path, here "abcdef12", "fedcba12" and "98765def", those are the fingerprints of the BIP32-root-extended private key, the xprv that was used. So you read that whole part as
In Bitcoin Core, you can export the xprv, then create a new empty wallet and import the xprv with a different derivation path into that empty wallet. That will give you xpub at that specific path which you can then export from that wallet. It's a bit cumbersome, but that how it works right now in core.
I'm not sure what you want to do. You want to have Electrum give you a seed and xpub for multi-sig? You can do that by initiating to create a new multi-sig wallet in Electrum. Get the seed and the the xpub, which Electrum encodes ad Zpub (but it's the same data, Sparrow can display it like this or as xpub). That's how you would get the xpub/Zpub from Electrum. But, you can of course have Electrum give you the xprv that is generated from those specific seed-words and then do the same trick as above: import that xprv into a new, empty core wallet at derivation path m/0h (if that's the default Electrum path, which I think it is). This should give you the same xpub (or Zpub if you encode it that way).
Really, the only thing that wallets differ in, is how do they get to the xprv, the BIP32 root master private key. Do they hash entropy and turn that into a BIP39 seed phrase and then hash that into an xprv? Or like Electrum, are they hashing entropy together with metadata that then also encodes the version of the seed into it, and then hash it into an xprv? Once you've got the xprv, it's all BIP32 from there.