How is PSZ Timestamp encoded in Bitcoin core code?

2

In Chainparams.cpp of the Bitcoin Core source, the encoded PSZTimestamp is as follows

04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73

The original string is

The Times 03/Jan/2009 Chancellor on brink of second bailout for banks

If you convert that into HEX using any String to Hex converter online, you get

5468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73

And this is a substring of the encoded PSZTimestamp from the 16th character. My question:

What are the first 16 character derived from? 04ffff001d010445

Barney Chambers

Posted 2018-07-23T11:21:35.340

Reputation: 333

Answers

4

04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73

The above is actually Bitcoin Script, not just byte data.

This breaks down to:

04         # PUSH the next 4 bytes
ffff001d   # This is the same as the nbits for the block, which was the target for the genesis block difficulty
01         # PUSH 1 byte
04         # PUSHed 1 byte - I'm not entirely sure what this 4 represents
45         # PUSH the next 69 bytes (0x45 == 69)
# The text
5468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73

Raghav Sood

Posted 2018-07-23T11:21:35.340

Reputation: 15 741