Welchen BIP32-Ableitungspfad verwendet Electrum für Multisig?

Dieselbe Frage wie Welchen BIP32-Ableitungspfad verwendet Electrum?

aber für multisig. Danke.

Antworten (4)

Electrum verwendet BIP45.

m / purpose' / cosigner_index / change / address_index

Beispiel für Nichtänderung des ersten Mitunterzeichners und der ersten Adresse:m / 45' / 0 / 0 / 0

Siehe: https://bitcointalk.org/index.php?topic=1634517.15 und https://github.com/bitcoin/bips/blob/master/bip-0045.mediawiki

Die Aufnahme des Verwendungszwecks und des Mitunterzeichnerindex finde ich nicht vorhanden. Siehe meine Antwort unten. Also nicht BIP45.

Nach langem Ringen fand ich heraus, dass Electrum die folgende Root-Ableitung für normale und Multisig-Wallets verwendet. Zum Beispiel:

  • root/0/0für jeden Mitunterzeichner. Beispiel:

    • m/44'/0'/0'==> gemeinsamer Stammschlüssel (x)

    • x/0/0==> Adresse für den ersten Multisig-Empfang (von allen Mitunterzeichnern gemeinsam genutzte Schlüssel ableiten. Alle 3 Schlüssel müssen lexikografisch geordnet sein).

  • eine halbkompatible Form von BIP45 für Hardware Wallets. Ich habe es nicht getestet, aber hier ist der Code: https://github.com/spesmilo/electrum/blob/master/lib/base_wizard.py#L220

Referenzen:

Welchen BIP32-Ableitungspfad verwendet Electrum?

https://github.com/spesmilo/electrom/issues/2266

https://bitcointalk.org/index.php?topic=1819380

Ich finde, dass der Zweckcode nicht vorhanden ist. Siehe meine Antwort. Es ist unklar, was das m / 44'/0'/0, das den gemeinsamen Stammschlüssel generiert, in dieser Antwort bedeutet. Beginnend mit einem xprv generiert ein Pfad von 0/0 die Pubkeys, die verwendet werden, um die Einlösungsskripte und die entsprechende p2sh-Adresse zu erstellen, die von Electrum für die erste Empfangsadresse verwendet wird.
Dies gilt nur für Hardware-Wallets. für Brieftaschen, die elektrisch erzeugte Seeds verwenden, ist x nur m für p2sh und m/1' für p2wsh

Hier ist ein Deskriptor für ein 2-von-3, das von Electrum erstellt wurde.

Adressen erhalten:

sh(sortedmulti(2,XPUB_1/0/*,XPUB_2/0/*,XPUB_3/0/*))

Adressen ändern:

sh(sortedmulti(2,XPUB_1/1/*,XPUB_2/1/*,XPUB_3/1/*))

(Ersetzen Sie XPUB_1, XPUB_2, und XPUB_3durch Ihre drei öffentlichen Hauptschlüssel )

Here is what works for me when using bip32gen from bip32utils to generate the public keys which are used in the transaction, starting from an xprv master key.

For each xprv master key of a cosigner, use 0/0 for the first receiving address, 0/1 for the second, 1/0 for the first change address, 1/1 for the second change address.

Then use the corresponding public key for each cosigner, sorted into lexicographic order, when constructing the redeem script, and generate the corresponding p2sh address for each address which will be generated by Electrum.

So far as I can tell, there are no purpose codes or cosigner index, as per BIP44 or BIP45. This is with Electrum 3.2.3.

refs: https://bitcointalk.org/index.php?topic=1819380 https://bitcointalk.org/index.php?topic=1816926.msg18101203#msg18101203

Siehe diese andere Stackexchange-Diskussion: Welchen BIP32-Ableitungspfad verwendet Electrum?