Initial commit
This function generate the genesis for any coin.
This commit is contained in:
50
creategenesis.cpp
Normal file
50
creategenesis.cpp
Normal file
@@ -0,0 +1,50 @@
|
||||
// Copyright (c) 2010 Satoshi Nakamoto
|
||||
// Copyright (c) 2009-2014 The Bitcoin Core developers
|
||||
// Copyright (c) 2014-2017 The Dash Core developers
|
||||
// Copyright (c) 2017-2017 The Pura Core developers
|
||||
// Distributed under the MIT software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
Mining algorithm
|
||||
|
||||
const arith_uint256 maxUint = UintToArith256(
|
||||
uint256S("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"));
|
||||
|
||||
static void MineGenesis(CBlockHeader &genesisBlock, const uint256 &powLimit, bool noProduction) {
|
||||
if (noProduction) genesisBlock.nTime = std::time(0);
|
||||
genesisBlock.nNonce = 0;
|
||||
|
||||
printf("NOTE: Genesis nTime = %u \n", genesisBlock.nTime);
|
||||
printf("WARN: Genesis nNonce (BLANK!) = %u \n", genesisBlock.nNonce);
|
||||
|
||||
arith_uint256 besthash;
|
||||
memset(&besthash, 0xFF, 32);
|
||||
arith_uint256 hashTarget = UintToArith256(powLimit);
|
||||
printf("Target: %s\n", hashTarget.GetHex().c_str());
|
||||
arith_uint256 newhash = UintToArith256(genesisBlock.GetHash());
|
||||
while (newhash > hashTarget) {
|
||||
genesisBlock.nNonce++;
|
||||
if (genesisBlock.nNonce == 0) {
|
||||
printf("NONCE WRAPPED, incrementing time\n");
|
||||
++genesisBlock.nTime;
|
||||
}
|
||||
// If nothing found after trying for a while, print status
|
||||
if ((genesisBlock.nNonce & 0xffff) == 0)
|
||||
printf("nonce %08X: hash = %s \n(target = %s)\n",
|
||||
genesisBlock.nNonce, newhash.ToString().c_str(),
|
||||
hashTarget.ToString().c_str());
|
||||
|
||||
if (newhash < besthash) {
|
||||
besthash = newhash;
|
||||
printf("New best: %s\n", newhash.GetHex().c_str());
|
||||
}
|
||||
newhash = UintToArith256(genesisBlock.GetHash());
|
||||
}
|
||||
printf("Genesis nTime = %u \n", genesisBlock.nTime);
|
||||
printf("Genesis nNonce = %u \n", genesisBlock.nNonce);
|
||||
printf("Genesis nBits: %08x\n", genesisBlock.nBits);
|
||||
printf("Genesis Hash = %s\n", newhash.ToString().c_str());
|
||||
printf("Genesis Hash Merkle Root = %s\n", genesisBlock.hashMerkleRoot.ToString().c_str());
|
||||
printf("Genesis Hash Merkle Root = %s\n", genesisBlock.hashMerkleRoot.ToString().c_str());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user