17

Given the structure of the inputs in the transaction vin inputs array

{
    "txid" : "146183a58106544e81573e9f1ad13c7a2d7398dcaf42bb298fcea7858839d3b9",
    "vout" : 1,
    "scriptSig" : {
        "asm" :   "304502201fd8abb11443f8b1b9a04e0495e0543d05611473a790c8939f089d073f90509a022100f4677825136605d732e2126d09a2d38c20c75946cd9fc239c0497e84c634e3dd01 03301a8259a12e35694cc22ebc45fee635f4993064190f6ce96e7fb19a03bb6be2",
        "hex" : "48304502201fd8abb11443f8b1b9a04e0495e0543d05611473a790c8939f089d073f90509a022100f4677825136605d732e2126d09a2d38c20c75946cd9fc239c0497e84c634e3dd012103301a8259a12e35694cc22ebc45fee635f4993064190f6ce96e7fb19a03bb6be2"
}

I know that hex is the hexadecimal representation of the scriptSig, what's asm ?

1 Answer 1

17

The asm strands for assembly, which is the symbolic representation of the Bitcoin's Script language op-codes.

In this particular case we have 2 pieces of data that go to the execution stack.

The transaction signature:

304502201fd8abb11443f8b1b9a04e0495e0543d05611473a790c8939f089d073f90509a022100f4677825136605d732e2126d09a2d38c20c75946cd9fc239c0497e84c634e3dd01

And the public key of the input's address:

03301a8259a12e35694cc22ebc45fee635f4993064190f6ce96e7fb19a03bb6be2

Notice that the hex and the asm are almost the same except the 48 in the beginning and 21 towards the end. These are op-codes that tell the interpreter to put a specific amount of bytes to the stack. So in the case of the signature it tells to put 72 bytes (0x48) to the stack and 33 bytes (0x21) for the public key. Check here for more info https://en.bitcoin.it/wiki/Script#Constants

2
  • how is that 72 bytes = (0x48) ?
    – user380208
    Dec 15, 2017 at 14:05
  • 0x48 is hexadecimal for 72.
    – Andrew Chow
    Dec 15, 2017 at 14:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.