Electrum: как создавать защищенные общедоступные адреса с помощью кошелька HD BIP32

Пожалуйста, прокомментируйте точность этого объяснения.

Сценарий: главный открытый ключ скомпрометирован, поэтому все незащищенные общедоступные адреса могут быть сгенерированы и отслежены третьей стороной. Это сводит на нет конфиденциальность, полученную за счет предотвращения повторного использования адресов. (Однако третья сторона не может тратить биткойны с этих адресов).

Защищенные открытые ключи не могут быть сгенерированы из основного открытого ключа и априори не могут быть отнесены к владельцу незащищенных адресов, указанных выше.

Можно ли сгенерировать такие закаленные ключи в Electrum, и если да, то как?

Ответы (3)

Electrum использует несколько различных путей вывода для различных типов скриптов. Например, для устаревших адресов p2pkh (адреса, начинающиеся с 1) используется m/n/i, где m — расширенный закрытый ключ (xprv), полученный из начального числа, n — 0 для внешних и 1 для измененных адресов, а i — индекс адреса. с адресами, генерируемыми последовательно, начиная с 0. Electrum также позволяет вам создать кошелек, используя любой xprv, а затем предположит, что xprv — это m в пути деривации, и сгенерирует адреса относительно этого. Так что все, что вам нужно сделать, это восстановить свой кошелек из защищенного xprv, такого как m/1', и Электрум будет генерировать адреса относительно этого. Эти адреса не будут видны тому, у кого есть расширенный публичный ключ для m.

Чтобы сгенерировать кошелек с помощью m/1', вы можете использовать этот скрипт следующим образом:

electrum getmasterprivate| python3 xprv.py -m - -d "m/1'" -p|electrum -w wallet_name restore -

Можно ли сгенерировать такие закаленные ключи в Electrum, и если да, то как?

В Electrum невозможно сгенерировать защищенные ключи, потому что Electrum не позволяет вам вводить собственные пути деривации BIP 32. Закалка основана на путях деривации.

Я вообще не понял, чего ты хочешь.

Защищенные открытые ключи не могут быть сгенерированы из основного открытого ключа и априори не могут быть отнесены к владельцу незащищенных адресов, указанных выше.

Там вообще нет «защищенного xpub (расширенного открытого ключа)».

Есть только «защищенные дочерние элементы» или «нормальные (незащищенные) дочерние элементы» одного родительского xprv (расширенный закрытый ключ).

Обычные дочерние элементы получаются из родительского открытого ключа, в то время как усиленные дочерние элементы получаются из родительского закрытого ключа, так что любые защищенные дочерние элементы могут быть получены только с учетом родительского xprv (который содержит родительский закрытый ключ и родительскую цепочку). код).

В настоящее время Bitcoin Core использует защищенные дочерние элементы напрямую в качестве ключей получения/изменения адресов (получающими адресами будут m/0'/0'/0', m/0'/0'/1', m/0'/0'/2', ... и т. д.).

Насколько я знаю, Electrum в настоящее время не поддерживает такой вариант «защищенного адреса» . Однако этого можно добиться и с помощью других инструментов, таких как инструмент BIP39 Яна Коулмана.


Хотя @Abudussamad уже предоставил простой метод, я думаю, что его метод не соответствует стандарту.

Если бы вы просто следовали его руководству, ваши адреса получения были бы получены через «странные» пути вывода, такие как m/1'/0/0, m/1'/0/1, m/1'/0/2, m/1'/0/3, ... и т. д., а ваши адреса изменения были бы получены через m/1'/1/0, m/1'/1/1, m/1'/1/2, m/1'/1/3, ... и т. д.

Видите, ваши адреса будут на самом деле получены на глубине 3 , в то время как обычные кошельки Electrum получают свои адреса на глубине 2 :

Адресами получения будут m/0/0, m/0/1, m/0/2, ... и т. д., а адресами изменения будут m/1/0, m/1/0, m/1/0, ... и т. д.


На мой взгляд, для достижения этой цели лучше использовать стандартную схему BIP39/44/49/84.

BIP44/49/84 обеспечивают разделение между разными «учетными записями». Если xpub «аккаунта 0» уже был скомпрометирован, вы можете просто переключиться на «аккаунт 1», который не имеет какой-либо заметной связи со скомпрометированным «аккаунтом 0», пока родительская «монета» xprv (которая является производной все "счета" от 0 до 2^31) до сих пор держатся в секрете.

Это легко сделать с помощью мнемоники BIP39, хотя Electrum всегда показывает предупреждения об этом. После проверки «Использовать начальное число BIP39» в диалоговом окне параметров Electrum покажет вам три разных варианта типа адреса.

Например, если вы выбрали устаревший тип адреса, Electrum автоматически заполнит путь деривации расширением m/44'/0'/0'. Последним 0'был порядковый номер учетной записи 1-й учетной записи. Вы можете изменить это число на другое значение, например m/44'/0'/1'или m/44'/0'/2', которое соответствует 2-й или 3-й учетной записи соответственно.

Если затем вы решите использовать 3-ю учетную запись ( m/44'/0'/2'), ваши адреса получения будут m/44'/0'/2'/0/0, m/44'/0'/2'/0/1, m/44'/0'/2'/0/2, m/44'/0'/2'/0/3, ... и т. д., а адреса для сдачи будут m/44'/0'/2'/1/0, m/44'/0'/2'/1/1, m/44'/0'/2'/1/2, m/44'/0'/2'/1/3, ... и т. д.