Development
如何從 pk_script 獲取地址?
我們在 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中也有描述。無需線上執行此操作。