The first 50BTC block reward went to address 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa, though this reward can't be spent due to a quirk in the way that the genesis block is expressed in the code (this may have been intentional).

But where is this quirk? How would you change it to allow it to be spent?

4 Answers
4

When a node starts up it initializes its copy of the block database alongside the genesis block and then begins the synchronization process. For some reason, Satoshi decided not to add the coinbase transaction from the genesis block to the global transaction database. Thus all the nodes in the network would reject the block.

I'm not sure if this was done on purpose or if it was simply an oversight. In any event, it is forever bound to 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa.

How would you change it to allow it to be spent? Add this to the hardfork list
– Charles HoskinsonApr 20 '13 at 6:18

How do we know of it if it's not in the database?
– user5477Nov 20 '13 at 12:23

3

We know it's not in the database because if you do getrawtransaction 4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b via RPC calls it returns an error, even though you can go to a block explorer (like here) and see that this is the genesis block coinbase transaction.
– morsecoderNov 21 '14 at 19:22

In order to make the coinbase spendable, the following changes have to be made to validation.cpp (v0.16.2). Note: as mentioned this would be considered a hard fork.

Step 1 - Disable skipping the genesis block (which is intended to keep the bug as part of consensus), Line 1818:

// Special case for the genesis block, skipping connection of its transactions
// (its coinbase is unspendable)
if (block.GetHash() == chainparams.GetConsensus().hashGenesisBlock) {
if (!fJustCheck)
view.SetBestBlock(pindex->GetBlockHash());
// return true; <- comment this line out
}

I am assuming it was done so there is no way one person can fabricate more bit coins out of the norm established using the very first transaction. If this would not have been done, I would at this point classify it a scam. If these bit coins are spent, the person that spends them or has them has a way of counterfeiting bit coins, which would be accepted by the system, since the computers have no way of understanding what "a beginning is." Thumbs up for satochi. These need to stay unspent… just trust the "brains that know" on this one.