satoshi0x avatar

I knew the Genesis Block was hard coded, never saw- til 0.01 ALPHA main.cpp

satoshi0x

Published: 21 Sept 2022 › Updated: 21 Sept 2022I knew the Genesis Block was hard coded, never saw- til 0.01 ALPHA main.cpp

I knew the Genesis Block was hard coded, never saw- til 0.01 ALPHA main.cpp

I found this on github. Practically all the // commented in lines are what we know as the genesis block.

I knew it was "hardcoded" but I've never seen those comments in any other main.cpp Bitcoin files, even earlier ones! See below:

    // Genesis Block:
    // GetHash()      = 0x000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
    // hashMerkleRoot = 0x4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b
    // txNew.vin[0].scriptSig     = 486604799 4 0x736B6E616220726F662074756F6C69616220646E6F63657320666F206B6E697262206E6F20726F6C6C65636E61684320393030322F6E614A2F33302073656D695420656854
    // txNew.vout[0].nValue       = 5000000000
    // txNew.vout[0].scriptPubKey = 0x5F1DF16B2B704C8A578D0BBAF74D385CDE12C11EE50455F3C438EF4C3FBCF649B6DE611FEAE06279A60939E028A8D65C10B73071A6F16719274855FEB0FD8A6704 OP_CHECKSIG
    // block.nVersion = 1
    // block.nTime    = 1231006505
    // block.nBits    = 0x1d00ffff
    // block.nNonce   = 2083236893
    // CBlock(hash=000000000019d6, ver=1, hashPrevBlock=00000000000000, hashMerkleRoot=4a5e1e, nTime=1231006505, nBits=1d00ffff, nNonce=2083236893, vtx=1)
    //   CTransaction(hash=4a5e1e, ver=1, vin.size=1, vout.size=1, nLockTime=0)
    //     CTxIn(COutPoint(000000, -1), coinbase 04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73)
    //     CTxOut(nValue=50.00000000, scriptPubKey=0x5F1DF16B2B704C8A578D0B)
    //   vMerkleTree: 4a5e1e

    // Genesis block
    char* pszTimestamp = "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks";
    CTransaction txNew;
    txNew.vin.resize(1);
    txNew.vout.resize(1);
    txNew.vin[0].scriptSig     = CScript() << 486604799 << CBigNum(4) << vector<unsigned char>((unsigned char*)pszTimestamp, (unsigned char*)pszTimestamp + strlen(pszTimestamp));
    txNew.vout[0].nValue       = 50 * COIN;
    txNew.vout[0].scriptPubKey = CScript() << CBigNum("0x5F1DF16B2B704C8A578D0BBAF74D385CDE12C11EE50455F3C438EF4C3FBCF649B6DE611FEAE06279A60939E028A8D65C10B73071A6F16719274855FEB0FD8A6704") << OP_CHECKSIG;
    CBlock block;
    block.vtx.push_back(txNew);
    block.hashPrevBlock = 0;
    block.hashMerkleRoot = block.BuildMerkleTree();
    block.nVersion = 1;
    block.nTime    = 1231006505;
    block.nBits    = 0x1d00ffff;
    block.nNonce   = 2083236893;

        //// debug print, delete this later
        printf("%s\n", block.GetHash().ToString().c_str());
        printf("%s\n", block.hashMerkleRoot.ToString().c_str());
        printf("%s\n", hashGenesisBlock.ToString().c_str());
        txNew.vout[0].scriptPubKey.print();
        block.print();
        assert(block.hashMerkleRoot == uint256("0x4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"));

    assert(block.GetHash() == hashGenesisBlock);

Source: https://github.com/kyuupichan/bitcoin-0.01/commit/7be8b0c93b45c3900714e2a6d743a5814bf9074b#diff-5a916c7e0e920f2ce3fe1521956bab2f1adcbd064d69cd07d930b8cc597a1010

Leave I knew the Genesis Block was hard coded, never saw- til 0.01 ALPHA main.cpp to:

Written by

Biz Dev (devcoin.org A-Team)

Read more #bitcoin posts


Best Posts From satoshi0x

We have not curated any of satoshi0x's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.

More Posts From satoshi0x