8

Is there some good example on how to process a basic tx's scriptsig and get the recipient's address from the raw transaction?

ThePiachu
  • 42,931
  • 25
  • 138
  • 347

1 Answers1

7

In the output there is a field "scriptPubKey" that for a standard transaction looks like this:

OP_DUP OP_HASH160 62e907b15cbf27d5425399ebf6f0fb50ebb88f18 OP_EQUALVERIFY OP_CHECKSIG

The hex number is what you get the address from; this is the result of step #3 in https://en.bitcoin.it/wiki/Technical_background_of_Bitcoin_addresses. To get the address continue the process in that example. (Though, arguably the hardest part is calculating Base58Check, for which an example is not given.)

Also relevant is https://en.bitcoin.it/wiki/Script#Standard_Transaction_to_Bitcoin_address.

Meni Rosenfeld
  • 19,650
  • 35
  • 70
  • 2
    Hmm, nothing like using the wiki entry I wrote against me ;) (the first one). And the base 58 is not much of a problem, already programmed that awhile ago. – ThePiachu Dec 16 '11 at 07:28
  • Has the Script been changed since the Genesis Block? I am having some problems figuring out how to process this scriptPubKey from that block: 4104678AFDB0FE5548271967F1A67130B7105CD6A828E03909A67962E0EA1F61DEB649F6BC3F4CEF38C4F35504E51EC112DE5C384DF7BA0B8D578A4C702B6BF11D5FAC – ThePiachu Dec 17 '11 at 01:37
  • This transaction uses the https://en.bitcoin.it/wiki/Script#Standard_Generation_.2F_transaction_to_IP_address type. In it you have the public key itself before any hashing (step #1). The public key in the genesis block is 04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f, I'm not sure where you got this value from. – Meni Rosenfeld Dec 17 '11 at 16:37
  • It's the same public key, but with opcodes added on both sides - push 0x41 bytes on the left and checksig on the right. So it is a raw scriptpubkey dump from https://en.bitcoin.it/wiki/Genesis_block – ThePiachu Dec 17 '11 at 22:49