Electrum 2.0 me ha estado causando cierta frustración, en la medida en que parece ser una implementación no estándar de BIP32/BIP39 (carteras HD, semilla mnemotécnica, respectivamente). La billetera en cuestión es una billetera multisig 2of2 (todas P2SH), con la segunda clave pública extendida creada en pybitcointools usando
bip32_privtopub( bip32_master_key( sha256("a password") ) )
,
luego importado a Electrum.
Dada la semilla de 13 palabras, que en sí misma no es estándar ya que la última palabra es una suma de verificación, se ha demostrado que es imposible exportar la xpriv
clave de Electrum.
¿Cómo se convierte una semilla mnemotécnica en una clave privada extendida estándar BIP32 (dado que el propio cliente no lo permitirá)? : EDIT1 : con gran dificultad, mira mi respuesta a continuación
(REENFOCADO) PREGUNTA : *por qué Electrum:
Hay una forma alternativa de extraer la clave privada extendida maestra (xprv): en la consola de Electrum, simplemente escriba esto:
wallet.get_master_private_key('x/', gui.password_dialog())
O para la clave privada maestra de una billetera creada con Electrum 1.x, es:
wallet.get_seed(gui.password_dialog())
Nunca escriba su contraseña o una clave privada en la consola. En otras palabras, no hagas esto:
wallet.get_seed('my-password')
Todo lo que escribe en la consola se almacena temporalmente dentro de su archivo de billetera sin cifrar para que funcione la función de historial de comandos (a la que se accede a través de la flecha hacia arriba).
Thomas Voegtlin, el desarrollador de Electrum explica el razonamiento en los primeros 10 minutos de esta entrevista. Creo que también publicó lo mismo en la lista de correo de desarrolladores de Bitcoin hace algún tiempo.
Su punto principal contra BIP39 es que no incluye un número de versión y el requisito del diccionario de lista de palabras para implementarlo.
Nota: julio de 2017, Electrum v2.8.3... el comando ahora es:
getmasterprivate()
El cuadro de diálogo de la contraseña aparecerá automáticamente;)
Acabo de encontrar esto en /r/Bitcoin: , así que aparentemente hay un exe para hacer esto, pero no soy exactamente un juego, ya que Chrome marcó la descarga del enlace.
Parece que Electrum usa: m/0/0
para direcciones de billetera y m/1/0
para cambiar direcciones.
EDITAR: Se envió una solicitud de extracción para el código que extrae la semilla raíz de la frase semilla de Electrum 2.0:
def electrumv2_extract_seed(words, password=''):
"""Takes Electrum v2.0 13 word mnemonic string and returns seed. Only works on English for now"""
# clean-up unicode characters
mnemonic = words[:]
try:
mnemonic = unicodedata.normalize('NFC', unicode(' '.join(words.lower().strip().split()))).encode('utf-8') # a string of 13 words
except Exception as e:
raise Exception(str(e))
rootseed = pbkdf2.PBKDF2(str(mnemonic), str('electrum' + password), 2048, macmodule=hmac, digestmodule=hashlib.sha512).read(64)
return rootseed
def electrumv2_mnemonic_to_mprivkey(words, password=''):
return bip32_master_key(electrumv2_extract_seed(words, password=''))
Esto es para usar con pybitcointools como from bitcoin import *
en Python 2.7
mago de ozzie
Christopher Gurnee
mago de ozzie
wallet.get_master_private_key('x/', None)
sin contraseña FWIW, no""