Wallet

壓縮 WIF 的私鑰:哪一個是正確的?

  • November 12, 2020

這就是我們如何從私鑰中找到 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。


此外,似乎:

  • 在 Electrum 中導入的未壓縮 WIF 最終生成一個未壓縮的 Base58 地址,
  • 導入 Electrum 的壓縮 WIF 最終生成一個壓縮的 Base58 地址

這似乎很明顯。但我想確保最後的 WIF 壓縮和地址壓縮確實是相關的。

我們能否得出結論,在將它們導入 Electrum 時,使用壓縮或非壓縮的 WIF(都編碼相同的私鑰)將決定公鑰(以及最終的地址)最終是壓縮的還是非壓縮的?壓縮?

似乎#1是正確的而不是#2。

是的,#1 是正確的。編碼器將為您將01標誌字節添加到私鑰的末尾。通過在 #2 中手動執行此操作,您將導致私鑰具有一個不正確的附加字節。

引用自:https://bitcoin.stackexchange.com/questions/68065