PPCoin: Remove coinbase output in genesis block
[novacoin.git] / src / ppcoin / genesis.cpp
1 // Copyright (c) 2011 The PPCoin developers
2 // Distributed under the MIT/X11 software license, see the accompanying
3 // file license.txt or http://www.opensource.org/licenses/mit-license.php.
4 #include "../headers.h"
5 #include "../db.h"
6 #include "../net.h"
7 #include "../init.h"
8 #include "../main.h"
9 #include "../util.h"
10
11 using namespace std;
12 using namespace boost;
13
14 int main(int argc, char *argv[])
15 {
16     fPrintToConsole = true;
17     printf("PPCoin Begin Genesis Block\n");
18
19     // Genesis block
20     const char* pszTimestamp = "MarketWatch 07/Nov/2011 Gold tops $1,790 to end at over six-week high";
21     CTransaction txNew;
22     txNew.vin.resize(1);
23     txNew.vout.resize(1);
24     txNew.vin[0].scriptSig = CScript() << 486604799 << CBigNum(4) << vector<unsigned char>((const unsigned char*)pszTimestamp, (const unsigned char*)pszTimestamp + strlen(pszTimestamp));
25     txNew.vout[0].SetEmpty();
26     CBlock block;
27     block.vtx.push_back(txNew);
28     block.hashPrevBlock = 0;
29     block.hashMerkleRoot = block.BuildMerkleTree();
30     block.nVersion = 1;
31     block.nBits    = 0x1d00ffff;
32     block.nTime    = GetAdjustedTime();
33     block.nNonce   = 0;
34
35     CBigNum bnTarget;
36     bnTarget.SetCompact(block.nBits);
37
38     while (block.GetHash() > bnTarget.getuint256())
39     {
40         if ((block.nNonce >> 20) << 20 == block.nNonce)
41         {
42             if (block.vtx[0].nTime + 7200 < GetAdjustedTime() + 60)
43                 block.vtx[0].nTime = GetAdjustedTime();
44             block.nTime = GetAdjustedTime();
45             printf("n=%dM hash=%s\n", block.nNonce >> 20,
46                    block.GetHash().ToString().c_str());
47         }
48         block.nNonce++;
49     }
50
51     printf("PPCoin Found Genesis Block:\n");
52     printf("genesis hash=%s\n", block.GetHash().ToString().c_str());
53     printf("merkle  root=%s\n", block.hashMerkleRoot.ToString().c_str());
54     block.print();
55
56     printf("PPCoin End Genesis Block\n");
57 }