Electrum 2.0 вызывает у меня некоторое разочарование, поскольку он кажется нестандартной реализацией BIP32/BIP39 (HD-кошельки, мнемоническое семя соответственно). Рассматриваемый кошелек представляет собой кошелек с мультиподписью 2 из 2 (все P2SH), при этом второй расширенный открытый ключ создается в pybitcointools с использованием
bip32_privtopub( bip32_master_key( sha256("a password") ) )
,
затем импортирован в Электрум.
Учитывая начальное число из 13 слов, которое само по себе является нестандартным, поскольку последнее слово является контрольной суммой, оказалось невозможным экспортировать xpriv
ключ из Electrum.
Как мнемоническое семя преобразуется в расширенный закрытый ключ стандарта BIP32 (если сам клиент этого не позволит)? : EDIT1 : с большим трудом см. мой ответ ниже
(ПЕРЕФОКУСИРОВАНО) ВОПРОС : *почему Электрум:
Существует альтернативный способ извлечения основного расширенного закрытого ключа (xprv): в консоли Electrum просто введите следующее:
wallet.get_master_private_key('x/', gui.password_dialog())
Или для главного закрытого ключа кошелька, созданного с помощью Electrum 1.x, это:
wallet.get_seed(gui.password_dialog())
Никогда не вводите свой пароль или закрытый ключ в консоль. Другими словами, не делайте этого:
wallet.get_seed('my-password')
Все, что вы вводите в консоль, временно хранится в файле вашего кошелька в незашифрованном виде , чтобы функция истории команд (доступная через стрелку вверх) работала.
Томас Фёгтлин, разработчик Electrum, объясняет аргументацию в первые 10 минут этого интервью. Я думаю, что он также разместил то же самое в списке рассылки разработчиков биткойнов некоторое время назад.
Его главный аргумент против BIP39 заключается в том, что он не включает номер версии и требование словаря списка слов для его реализации.
Примечание. Июль 2017 г., Electrum v2.8.3... теперь команда:
getmasterprivate()
Диалоговое окно пароля появится автоматически ;)
Я только что нашел это в /r/Bitcoin: , так что, видимо, для этого есть exe, но я не совсем игра, так как загрузка ссылки была помечена хромом.
Оказывается, Электрум использует: m/0/0
для адресов кошельков и m/1/0
для адресов сдачи.
РЕДАКТИРОВАТЬ: был отправлен запрос на получение кода, который извлекает корневое семя из семенной фразы 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=''))
Это для использования с pybitcointools , как from bitcoin import *
в Python 2.7 .
Волшебник Оззи
Кристофер Герни
Волшебник Оззи
wallet.get_master_private_key('x/', None)
без пароля FWIW, не""