Сжатый закрытый ключ к WIF: какой из них правильный?

Вот как мы можем найти WIF из закрытого ключа:

private_key = '000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f'
decoded_private_key = bitcoin.decode_privkey(private_key, 'hex')
wif = bitcoin.encode_privkey(decoded_private_key, 'wif')
# 5HpHgWkLaovGWySEFpng1XQ6pdG1TzNWR7SrETvfTRVdKHNXZh8

Но как сжать WIF?

Я должен делать:

private_key = '000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f'
compressed_private_key = private_key + '01'
wifcomp1 = bitcoin.encode_privkey(bitcoin.decode_privkey(private_key, 'hex'), \
             'wif_compressed')
# KwDidQJHSE67VJ6MWRvbBKAxhD3F48DvqRT6JRqrjd7MHLBjGF7V

или

wifcomp2 = bitcoin.encode_privkey(bitcoin.decode_privkey(compressed_private_key, 'hex'), \ 
            'wif_compressed')
# KwFfpDsaF7yxCELuyrH9gP5XL7TAt5b9HPWC1xCQbmrxfFzfMakg

Кажется, что № 1 правильный, а не № 2.


Также кажется, что:

  • несжатый WIF, импортированный в Electrum, в конечном итоге создает несжатый адрес Base58,

  • сжатый WIF, импортированный в Electrum, в конечном итоге создает сжатый адрес Base58.

что кажется очевидным. Но хотелось бы быть уверенным, что сжатие WIF и сжатие адресов в конце действительно связаны.

Можем ли мы сделать вывод, что использование сжатого или несжатого WIF (оба кодируют один и тот же закрытый ключ) будет определять при их импорте в Electrum, будет ли открытый ключ (и, следовательно, в конечном итоге адрес) сжатым или несжатым? сжатый?

Это отвечает на вторую часть вопроса: «[сжатый ключ WIF] не является сжатым закрытым ключом . Это закрытый ключ с маркером, указывающим, что его соответствующий общедоступный ключ должен быть сжат. Этот дополнительный маркер занимает дополнительный байт».

Ответы (1)

Кажется, что № 1 правильный, а не № 2.

Да, №1 правильный. Кодер добавит 01байт флага в конец закрытого ключа для вас. Делая это вручную в # 2, вы получите закрытый ключ с дополнительным байтом, который неверен.