title: How to create a genesis block of my altercoin?
body: <p>I create my new altercoin,but when I first run it,it already shows:"No block source available 5 week(s) behind". 
  And I start anther computer in the LAN, they link succefully.
  I use the code of Datacoin.</p>
  
  <pre><code>static const uint256 hashGenesisBlockOfficial("f9f6d9a689f7a4093c71f397d8fe3fbef3a05cd6f919d51b4a9447aa22743dfb");
  static const uint256 hashGenesisBlockTestNet("f9f6d9a689f7a4093c71f397d8fe3fbef3a05cd6f919d51b4a9447aa22743dfb");
  
    // Genesis block
          qDebug()&lt;&lt;"Genesis block";
          const char* pszStartTopic = "The Times 26/Dec/2013 Chancellor on brink of second bailout for banks";//https://bitcointalk.org/index.php?topic=325735.0";
          CTransaction txNew;
          txNew.vin.resize(1);
          txNew.vout.resize(1);
          txNew.vin[0].scriptSig = CScript() &lt;&lt; 0 &lt;&lt; CBigNum(999) &lt;&lt; vector&lt;unsigned char&gt;((const unsigned char*)pszStartTopic, (const unsigned char*)pszStartTopic + strlen(pszStartTopic));
          txNew.vout[0].nValue = COIN;
          txNew.vout[0].scriptPubKey = CScript();
          CBlock block;
          block.vtx.push_back(txNew);
          block.hashPrevBlock = 0;
          block.hashMerkleRoot = block.BuildMerkleTree();
          block.nTime    = 1387977869 ;//http://www.unixtimestamp.com/index.php
          block.nBits    = TargetFromInt(6);
          block.nNonce   = 49030125;
          block.bnPrimeChainMultiplier = (uint64) 5651310;
  
          if (fTestNet)
          {
              block.nTime    = 1387977869 ;
              block.nBits    = TargetFromInt(4);
              block.nNonce   = 46032;
              block.bnPrimeChainMultiplier = (uint64) 211890;
          }
  
          //// debug print
          uint256 hash = block.GetHash();
          printf("%s\n", hash.ToString().c_str());
  
          qDebug()&lt;&lt;"hash:"&lt;&lt;hash.ToString().c_str();
          printf("%s\n", hashGenesisBlock.ToString().c_str());
          qDebug()&lt;&lt;"hashGenesisBlock:"&lt;&lt;hashGenesisBlock.ToString().c_str();
          printf("%s\n", block.hashMerkleRoot.ToString().c_str());
           qDebug()&lt;&lt;"block.hashMerkleRoot:"&lt;&lt;block.hashMerkleRoot.ToString().c_str();
          assert(block.hashMerkleRoot == uint256("a0c44c1b6dd50fcaa2bc1c4d7f8ca406506caee88578d751fb3824b41bc34d84"));
          block.print();
  
          assert(hash == hashGenesisBlock);
          {
              CValidationState state;
              assert(block.CheckBlock(state, true, true));
              assert(CheckProofOfWork(block.GetHeaderHash(), block.nBits, block.bnPrimeChainMultiplier, block.nPrimeChainType, block.nPrimeChainLength));
          }
  </code></pre>
  
  <p>Failed at <em>assert(CheckProofOfWork(block.GetHeaderHash(), block.nBits, block.bnPrimeChainMultiplier, block.nPrimeChainType, block.nPrimeChainLength));</em>.
  And the debug.log says:</p>
  
  <pre><code>    CBlock(hash=f9f6d9a689f7a4093c71f397d8fe3fbef3a05cd6f919d51b4a9447aa22743dfb, hashBlockHeader=7d6aeeb7ca2b87d2f48bbd7a675c8374691c4f44f0db1a10de66436bfbcb0188, ver=2, hashPrevBlock=0000000000000000000000000000000000000000000000000000000000000000, hashMerkleRoot=a0c44c1b6dd50fcaa2bc1c4d7f8ca406506caee88578d751fb3824b41bc34d84, nTime=1387977869, nBits=06000000, nNonce=49030125, vtx=1)
        CTransaction(hash=a0c44c1b6dd50fcaa2bc1c4d7f8ca406506caee88578d751fb3824b41bc34d84, ver=1, vin.size=1, vout.size=1, nLockTime=0, data.size=0)
          CTxIn(COutPoint(0000000000000000000000000000000000000000000000000000000000000000, 4294967295), coinbase 0002e703455468652054696d65732032362f4465632f32303133204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73)
          CTxOut(error)
  ERROR: CheckPrimeProofOfWork() : block header hash under limit
  ERROR: CheckProofOfWork() : check failed for prime proof-of-work
  </code></pre>
  
  <p>Anything else can I change to make the genesis block work?</p>