We met up on January 4 to talk about the bitcoin genesis block. Here are Stephen’s notes he prepared for the discussion group.
Yesterday marked the 14th anniversary of the bitcoin genesis block, which is timestamped January 3, 2009.
What is a genesis block?
A genesis block is the first block in a blockchain. It’s unique because it does not reference a previous block and because it is typically hardcoded into node software. Bitcoin’s genesis block has several more unique qualities.
Why hardcode it into the software?
Let’s look at the bitcoin genesis block
You can find the genesis block in a block explorer by searching for “0”. Here it is on mempool.space.
What are some unique qualities to this block? Hint: you don’t have to be too technical to notice, just look at the mempool.space page.
Bitcoin signet and Bitcoin testnet both share the same unique feature in their genesis blocks, however, the block hashes are different.
How do we know when the genesis block was mined?
The timestamp would be sufficient in a trusted scenario, but this is bitcoin. The message in the coinbase transaction helps us to know that it would be impossible to mine the block before January 3, 2009. However, we don’t have precise evidence that it was mined on this date exactly.
- October 31, 2008 – Satoshi released the Bitcoin whitepaper to the Cryptography mailing list.
- January 8, 2009 – Satoshi releases Bitcoin v0.1 to the Cryptography mailing list.
- January 9, 2009 – Satoshi mines more blocks
- January 10, 2009 – Hal Finney responds on the mailing list and makes the now famous tweet
Why is it that there is a 6 day gap between block 0 and block 1?
Nobody knows for certain, but there are theories:
- Satoshi was inspired by the Times headline, and mined the first block with a timestamp in the past to match the headline.
- Satoshi had difficulty mining the first block and so he had to mine the first block for 6 days, but kept the timestamp and message persistent through all the attempts.
- Satoshi mined it on Jan 3, then spent the next 6 days testing the bitcoin software and network. He then trashed the test blocks and started fresh, re-using the January 3 genesis block (this is called the prenet hypothesis).
In this bitcointalk.org post, Sergio Demian Lerner (future creator of the RSK sidechain) comments on some of this. He reasons that Satoshi likely used a single CPU. He also points out that the genesis block has a higher difficulty (43 zero bits instead of the 32 difficulty at the time) and he calculates that if Satoshi mined for 6 days, he would have a 17% chance of mining this block. Why did Satoshi opt for this higher difficulty? Did he get lucky? Did he use some massive computing infrastructure? If so, why only use it on the first block? (This user, however, disputes that the extra leading zeroes are significant).
Sergio also points out that there is no routine in Satoshi’s source code for generating a genesis block. Therefore, Satoshi was using some other software to mine the block, though we don’t know how different it was. Perhaps it was a custom script written entirely for the purpose of mining the genesis block, or perhaps he simply modified the main client’s source code temporarily to mine the first block.
Interestingly, Satoshi had actually been fiddling with the genesis back as far back as 2008. This man on bitcointalk.org shares some early bitcoin source code which Satoshi shared with him on November 16, 2008, a mere 2 weeks after the release of the whitepaper. You can go back to the mailing list to find Satoshi discussing how he had been working on the source code for the past year and a half, and he mentions how he will share the “main files” with you by request.
The genesis block coinbase tx spent to this address:
You can see the address balance here.
Interestingly enough, the output is unspendable. This is because of how the bitcoin client is coded. Bitcoin Core maintains a block database and a transaction database, distinct from the raw block data stored on disk. If it starts up and finds the block database empty, it insert the hardcoded genesis block data. However, it skips adding the genesis coinbase to the transactions database.
- Charles Hoskinson explains on Bitcoin StackExchange
- Theymos explains on Reddit
- Code that skips the genesis TX
Was this an accidental oversight? Or did Satoshi feel it wasn’t fair to claim these coins since he mined them as the only network participant?
Nobody knows, as Satoshi disappeared before anyone noticed this quirk of the genesis coinbase.
It is believed that other outputs belonging to this address are spendable, assuming that Satoshi has the private key to this address. Even that is not known.
Wait, other outputs?
So who was Satoshi?
It’s interesting that in a comment on this Stack post, Bitcoin Core dev Pieter Wiulle remarks:
> Even though the Genesis block (almost) satisfies all rules that other blocks have to satisfy (and even more, see bitcointalk.org/index.php?topic=172009.0), it is not actually validated by full nodes. It’s just a hardcoded starting point, and it would actually have worked just as well if it did not carry any proof of work.
Did Satoshi know this and decide to mine the block anyway to send a message or set some kind of precedent? Or was this an oversight, making him only human?
A scientist named Jens Ducrée wrote this scholarly article diving into a lot of circumstantial evidence about the identity of Satoshi. Did the Satoshi live in the UK, giving him early access to the Times print edition? Or did Satoshi have a close friend in the UK? Was he an individual genius or a team of people? Where did he go after disappearing on December 12, 2010?
But most importantly: does Jens know how to use the spellchecker or work with a proofreader?