Кошелек: как сгенерировать публичный расширенный ключ?

Насколько я понимаю, когда я хочу создать HD-кошелек, нужен ли мне закрытый ключ, который является производным расширенного открытого ключа?

Итак, мой вопрос: если я кодирую портфель биткойнов в java, как я могу сгенерировать этот открытый расширенный ключ из закрытого ключа (я предполагаю, что закрытый ключ похож на закрытый пароль?)?

Спасибо за вашу помощь,

возможно, это поможет разобраться: chimera.labs.oreilly.com/books/1234000001802/… и вы можете проверить bitcoin.stackexchange.com/questions/tagged/bip32 и bitcoin.stackexchange.com/questions/tagged/bip32 . +hd-кошелек . Дайте нам знать, если вы все еще что-то упускаете :-)

Ответы (1)

Как правило, закрытый ключ и чейн-код (эти две части составляют расширенный закрытый ключ) генерируются одновременно из семени. Семя может быть либо случайно сгенерированным числом, либо производным от мнемоники из 12 слов, такой как детали BIP 39. Когда у вас есть семя, BIP 32 объясняет:

Вычислите I = HMAC-SHA512(Key = «Семя биткойна», Data = yourSeed) Разделите I на две 32-байтовые последовательности, IL и IR. Используйте parse256(IL) в качестве главного секретного ключа и IR в качестве основного кода цепочки.

Таким образом, в основном вы берете 512-битный хэш семени и делите его на две 256-битные половины, одна из которых является закрытым ключом, а другая — кодом цепи. А из закрытого ключа можно получить открытый ключ.