Development

如何從 pk_script 獲取地址?

  • November 22, 2013

我們在 wiki 中有範例:

[...]
Output 1:
40 4B 4C 00 00 00 00 00                           - 0.05 BTC (5000000)
19                                                - pk_script is 25 bytes long

76 A9 14 1A A0 CD 1C BE  A6 E7 45 8A 7A BA D5 12  - pk_script
A9 D9 EA 1A FB 22 5E 88  AC
[...]

什麼是 pk_script?是否可以將其轉換為離線的比特幣地址(未與網路同步)?這個怎麼做?

編輯:

好的,我現在了解更多:

pk_script
76 (OP_DUP)
A9 (OP_HASH160)
14 (Bytes to push)
1A A0 CD 1C BE  A6 E7 45 8A 7A BA D5 12 A9 D9 EA 1A FB 22 5E (Data to push)
88 (OP_EQUALVERIFY)
AC (OP_CHECKSIG)

AI 明白我應該使用b58encode_check“數據推送”來獲取比特幣地址。我找到了實現 b58encode_check (<https://pypi.python.org/pypi/base58>)的python庫並嘗試了它:

for byte in (0x1A, 0xA0, 0xCD, 0x1C, 0xBE,  0xA6, 0xE7, 0x45, 0x8A, 0x7A, 0xBA, 0xD5, 0x12, 0xA9, 0xD9, 0xEA, 0x1A, 0xFB, 0x22, 0x5E):
   buffer += chr(byte)
print b58encode_check(buffer)

但我得到了3RoCeq4K8ddPW6ugcheFoXK4GC2Ajo7ZF看起來不像比特幣的地址。我做錯了什麼?

維基。基本上您必須從 scriptPubKey 中提取 20 字節的pubKeyHash(顯示為要推送的字節)並將其轉換為Base58 (在wiki中也有描述。無需線上執行此操作。

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