I'm trying to create and build a working fork of Bitcoin -- in order to understand how it works at the source code level. I see a lot of articles explaining how to create altcoins but they are not very helpful for the learning purpose as they skip a lot of details and tend to tell you what to do without explaining why.
Regarding this question, I couldn't find any article/document even remotely mentioning anything about the public key used for generating the genesis block -- I believe this is an important things to know, at least because it's been used to generate the genesis block of Bitcoin. Looking at the source code:
Bitcoin 0.1.5 - main.cpp @1490:
txNew.vout.scriptPubKey = CScript() << CBigNum("0x5F1DF16B2B704C8A578D0BBAF74D385CDE12C11EE50455F3C438EF4C3FBCF649B6DE611FEAE06279A60939E028A8D65C10B73071A6F16719274855FEB0FD8A6704") << OP_CHECKSIG;
Bitcoin 0.8.0 main.cpp @2715
txNew.vout.scriptPubKey = CScript() << ParseHex("04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f") << OP_CHECKSIG;
These two public keys are same. First one appeared in the very first version of Bitcoin -- as far as I can see in the Github repo. Second one is the latest usage before it being totally removed from the source code.
My questions are:
What is this public key? Is this [supposedly] Satoshi's personal public key or just a random key generated for the sake of generating the genesis block?
Is there any other application for this public key or it's only useful when generating the genesis block? e.g. signing transactions? verifying the integrity of the mined blocks?
There are different formats used for Public/Private key pairs. What is the format used for this specific key? Is there any built-in API/utility inside the Bitcoin source that could be used for generating or testing the validity of the key?
What are the consequences of using a broken/invalid public key at this stage? Given the fact that the genesis block is unspendable.