В настоящее время я читаю исходный код Electrum, чтобы понять, как перейти от семени (12 слов) к адресам (в обычном формате). Есть ли у кого-то общая картина этого процесса?
Точнее, я ищу код Python (автономный, запускаемый из Electrum), который может это сделать.
Возьмите семя s
(можно 12 слов из словаря на 2048 слов, но не обязательно)
Предположим, что s
это действительное начальное число (т.е. is_new_seed(s)
это True
означает, что bh2u(hmac_sha_512(b"Seed version", s.encode('utf8')))
оно имеет префикс '01'
); код для is_new_seed здесь.
Для нашей цели (получить адреса) мы должны сначала создать закрытый ключ из s
? Как?
или
Должны ли мы создать главный открытый ключ из s
? Как?
Учитывая 3. или 4., как создать 20 первых публичных адресов?
Пример ввода: s = 'x8'
(да, это допустимый (небезопасный, потому что слишком простой) сид, вы можете попробовать его в Electrum — создайте кошелек из существующего сид )
Пример вывода:
1LNvv5h6QHoYv1nJcqrp13T2TBkD2sUGn1
1P6rnf6VUfSUUWES6wTyjfx9dTFqXdrjLM
1AQ6TNtD2eEdQjwpVpkPSdcvJiiLKziKZz
...
Electrum использует BIP 32 для перехода от начального значения к закрытым и открытым ключам. Затем из этих ключей получаются адреса. Публичные ключи также получаются из закрытых ключей, за исключением кошельков только для просмотра.
Полная спецификация BIP 32 доступна здесь .
Фредсбенд
Баш
Фредсбенд