비트코인의 창세 블록은 파낸 것이 아닌가?

비트코인의 창세 블록은 파낸 것이 아니라 코드에 쓰여 죽은 것이라고 한다.
호기심의 부추김 아래 귀로 들은 것을 거짓으로 보고 눈으로 본 것을 사실로 여기는 융통성이 없는 관념을 품고 있다.비트코인의 원본 코드를 봤는데 창세 블록이 정말 코드에 쓰여 있는 것을 발견했다.
코드 경로:https://github.com/bitcoin/bitcoin/blob/master/src/chainparams.cpp
중점 코드 세션;
static CBlock CreateGenesisBlock(uint32_t nTime, uint32_t nNonce, uint32_t nBits, int32_t nVersion, const CAmount& genesisReward)
{
    const char* pszTimestamp = "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks";
    const CScript genesisOutputScript = CScript() << ParseHex("04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f") << OP_CHECKSIG;
    return CreateGenesisBlock(pszTimestamp, genesisOutputScript, nTime, nNonce, nBits, nVersion, genesisReward);
}

왜 이것이 확실히 창세 블록의 내용이라는 것을 알았을까. 왜냐하면 창세 블록의coinbase에 유명한 tag가 있는데 바로 위의 타임스 신문 첫 번째 내용이기 때문이다.
The Times 03/Jan/2009 Chancellor on brink of second bailout for banks
그러나 이것은 부족하다. 이것은 코인베이스 거래를 구성하는 내용일 뿐이다. 광산을 파는 것은 사실nonce라는 파라미터를 확정해야 한다. 즉, 이nonce 값을 코드에 써서 죽여야 이 블록이'파낸'것이 아니라'쓴'것이다.계속해서 이 파일에서CreateGenesisBlock 함수의 인용을 찾습니다.그래서 아래의 코드를 발견했다
genesis = CreateGenesisBlock(1231006505, 2083236893, 0x1d00ffff, 1, 50 * COIN);
consensus.hashGenesisBlock = genesis.GetHash();
assert(consensus.hashGenesisBlock == uint256S("0x000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f"));
assert(genesis.hashMerkleRoot == uint256S("0x4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"));

이로써 창세 블록이 확실히 코드에 쓰여 있는 것이지 파낸 것이 아니라는 것을 확신하게 되었다.
(전문 완성)

좋은 웹페이지 즐겨찾기