1
I'm working on extracting output addresses from tx messages in BITCOIN packets.
Currently, I extract address from output scripts which starts with 0x76(OP_DUP) like this :
76 a9 14 6d 1d 74 58 95 6e 80 cd b4 c3 3f 1e d5 8e 91 c4 92 1a 85 d0 88
but i don't have any idea about some output scripts which start with 0xA9(OP_HASH160).
As an example, i don't know in below example, what is the raw script, which is used to generate output address?
a9 14 16 52 33 02 f2 ee d0 e0 aa 6a 4c 1d 0a 41 39 6f c2 6f 53 6e 87
How i can extract output address from output scripts which start with -xA9?
thanks, can you splain how you calculate "33j3G4xMEn4CtKL5iYnsr97ww67wYh8TPY" from this raw script : "16523302f2eed0e0aa6a4c1d0a41396fc26f536e" ?? – Saeed – 2019-05-18T09:26:26.927
That's just Base58Check. You first append 0x05 to the redeem script. Then you double hash it with sha256 and then append the first 4 bytes at the end to
0x05+redeemscript. Those first 4 bytes is the checksum. Then you base58 encode it. – Ugam Kamat – 2019-05-18T09:57:07.793Thank you a lot !
you mean that
redeem script is "16523302f2eed0e0aa6a4c1d0a41396fc26f536e" then A1 is equal to "0516523302f2eed0e0aa6a4c1d0a41396fc26f536e"
then A2 is sha256(sha256(first)) and then checksum is first 4 bytes of A2. then answer is base58encode(first+checksum) .
but answer is not equal to "33j3G4xMEn4CtKL5iYnsr97ww67wYh8TPY" ! – Saeed – 2019-05-18T10:22:51.370
1@Saeed I have edited my answer with a python script that shows you how to get the address from the redeem script. I think the common mistake most people do is hashing the plain script rather than using the bytes from the hexadecimal. – Ugam Kamat – 2019-05-18T11:30:45.220
Thanks a lot. it is correct. but, what about the other op codes? it seems that each op code has a different method to extract an output address. how i can extract address from other types of op_code like "0x00" and "0x40" and etc? – Saeed – 2019-05-19T07:06:15.373