Python

從 b58check 到十六進制並返回

  • July 3, 2016

我正在(使用 pybitcointools)操作一些正常地址以及一些 P2SH 並偶然發現以下內容:

情況1:

>>> b58check_to_hex('17rq8m5SW8XoZ9dHEkQyBfc5w2XQnQvznz')
'4b3d51202139ff109f6d10b637081f2de48d4b35'
>>> hex_to_b58check('4b3d51202139ff109f6d10b637081f2de48d4b35')
'17rq8m5SW8XoZ9dHEkQyBfc5w2XQnQvznz'

第二個命令是第一個命令的逆映射

案例二:

>>> b58check_to_hex('3BRu7EhouApLkW1EZ64T9o9yMuX5Rexz6f')
'6ad55439d8faab476bbc0f89183ce689f8f6985b'
>>> hex_to_b58check('6ad55439d8faab476bbc0f89183ce689f8f6985b')
'1AjtBhDNMGVxfLJoRzPrjAo3DPEMps6xEd'

第二個命令不是第一個命令的逆映射

這讓我很驚訝。有人可以給我一些關於為什麼會這樣的提示嗎?

謝謝

第二種情況是 P2SH 地址。您必須提供地址的版本號/魔術字節,對於 P2SH,它是 5。

>>> bitcoin.b58check_to_hex('3BRu7EhouApLkW1EZ64T9o9yMuX5Rexz6f')
'6ad55439d8faab476bbc0f89183ce689f8f6985b'
>>> bitcoin.hex_to_b58check('6ad55439d8faab476bbc0f89183ce689f8f6985b', magicbyte=5)
'3BRu7EhouApLkW1EZ64T9o9yMuX5Rexz6f'

要弄清楚地址的魔術字節是什麼,請使用以下命令:

>>> bitcoin.get_version_byte('3BRu7EhouApLkW1EZ64T9o9yMuX5Rexz6f')
5

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