¿Qué ruta de derivación BIP32 usa Electrum para Multisig?

La misma pregunta que ¿Qué ruta de derivación BIP32 usa Electrum?

pero para multisig. Gracias.

Respuestas (4)

Electro utiliza BIP45.

m / purpose' / cosigner_index / change / address_index

Ejemplo de no cambio del primer cosignatario y primera dirección:m / 45' / 0 / 0 / 0

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

Encuentro que la inclusión del código de propósito y el índice del cosignatario no están presentes. Vea mi respuesta a continuación. Por lo tanto no BIP45.

Después de mucha lucha, descubrí que Electrum usa la siguiente derivación de raíz para billeteras normales y multisig. Por ejemplo:

  • root/0/0para cada consignatario. Ejemplo:

    • m/44'/0'/0'==> clave raíz compartida (x)

    • x/0/0==> dirección para la primera recepción multisig (derivar en todas las claves compartidas de los cosignatarios. Las 3 claves deben estar ordenadas lexicográficamente).

  • alguna forma semi-compatible de BIP45 para carteras de hardware. No lo probé, pero aquí está el código: https://github.com/spesmilo/electrum/blob/master/lib/base_wizard.py#L220

referencias:

¿Qué ruta de derivación BIP32 usa Electrum?

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

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

Encuentro que el código de propósito no está presente. Mira mi respuesta. No está claro qué significa m/44'/0'/0 generando la clave raíz compartida en esta respuesta. Comenzando con un xprv, una ruta de 0/0 genera las claves públicas utilizadas para construir los scripts de canje y la dirección p2sh correspondiente utilizada por Electrum para la primera dirección de recepción.
esto es solo para billeteras de hardware. para billeteras que usan semillas generadas por electrum x es solo m para p2sh y m/1' para p2wsh

Aquí hay una descripción de un 2 de 3 creado por Electrum.

Recibir direcciones:

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

Cambiar direcciones:

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

(Reemplace XPUB_1, XPUB_2y XPUB_3con sus tres claves públicas maestras)

Esto es lo que funciona para mí cuando uso bip32gen de bip32utils para generar las claves públicas que se usan en la transacción, a partir de una clave maestra xprv.

Para cada clave maestra xprv de un codeudor, use 0/0 para la primera dirección de recepción, 0/1 para la segunda, 1/0 para la primera dirección de cambio, 1/1 para la segunda dirección de cambio.

Luego, use la clave pública correspondiente para cada cosignatario, clasificada en orden lexicográfico, al construir el script de canje, y genere la dirección p2sh correspondiente para cada dirección que generará Electrum.

Por lo que puedo decir, no hay códigos de propósito o índice de cofirmantes, según BIP44 o BIP45. Esto es con Electrum 3.2.3.

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

Vea esta otra discusión de intercambio de pila: ¿Qué ruta de derivación BIP32 usa Electrum?