How do you know when setting up a brand-new node if the hard-coded genesis block is the correct one WITHOUT looking it up?
1) The only way I see is that you remember (at least) the hash of the genesis block of the Bitcoin you refer to AND make sure that the software does assume zero accounts at this point.
2) If your node software uses another checkpoint, you have to make sure again that the block is the correct one (by verifying its hash) AND make sure that the software does assume the correct balances for all accounts in existence for that Bitcoin you refer to.
Speaking of computing: this can be done by the very same subroutine:
def start_from_checkpoint(checkpoint_block, balances)
for 1) start_from_checkpoint(genesis_block, [])
for 2) start_from_checkpoint(checkpoint_block5, [...............................])
There is simply no difference, not from an abstract point of view and not from an computing point of view. All differences are made up AFAICT. Maybe, you could prove me otherwise.
Who or what gets to decide the checkpoint block?
Either you have to have a consensus (back to the
distributed consensus problem), or the protocol
must handle it. But if the protocol handles it,
you still have the isolated node attack problem.
The difference with the genesis block is that
its not a moving target. You establish it
as consensus when the reference client is
released. .(right?)