According to the Wiki, the input script of the Genesis block consists of these bytes:
04FFFF001D0104455468652054696D65732030332F4A616E2F32303039204368616E63656C6C6F72206F6E206272696E6B206F66207365636F6E64206261696C6F757420666F722062616E6B73
We can break this down as follows:
0x04
: push 4 bytes0xffff001d
: the same value as the "bits" field of the Genesis block header0x01
: push 1 byte0x04
: push the value 4- remainder: ASCII encoding of the famous message "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks"
As far as I know, the first two values pushed to the stack (0xffff001d
and 0x04
) are unnecessary. Of course, so is the chancellor message, but at least its meaning is a bit more clear.
However, the push bits
/0x04
pattern also appears in other blocks. For example, the same pattern shows up in the next block (0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098).
I found this question, with an answer that speculates:
So 010445 are in fact part of 2 operations - 01 pushes 04 to the stack, 45 pushes the message to the stack. As to why push 04, beats me, maybe it was just testing to make sure something works? Some internal counter used by Satoshi during Genesis block creation? Since the script of a coin generation transaction is really meaningless, we might never know.
My questions:
- Are these initial push data operations necessary?
- If not, why do these items (bits and
0x04
) appear in more than one block? - Was adding this prefix to the coinbase transaction input script part of the default behavior of the original Bitcoin client?
- If not, wouldn't this be a signature for blocks that Satoshi mined?