Blocks fail to create in Altcoin

I have cloned litecoin and i am creating altcoin. I have successfully mined genesis block using GenesisH0 and compilation all works fine.

I am trying to mine new coins in mainnet, When i try to create new blocks, it fails, no blocks are ever created in mainnet why? I can do in testnet or regtest but not in mainnet. I am running only locally in my MacOSX machine.

./src/litecoind -daemon ./src/litecoin-cli generate 10

it hangs. I see this in my debug.log

2018-02-19 17:47:39 keypool keep 2 2018-02-19 17:47:39 CreateNewBlock(): block weight: 900 txs: 0 fees: 0 sigops 400 2018-02-19 17:47:57 CreateNewBlock(): block weight: 900 txs: 0 fees: 0 sigops 400 2018-02-19 17:48:16 CreateNewBlock(): block weight: 900 txs: 0 fees: 0 sigops 400 2018-02-19 17:48:33 CreateNewBlock(): block weight: 900 txs: 0 fees: 0 sigops 400 2018-02-19 17:48:52 CreateNewBlock(): block weight: 900 txs: 0 fees: 0 sigops 400 

This is my mainnet chainparams.cpp.

class CMainParams : public CChainParams { public:     CMainParams() {         strNetworkID = "main";         consensus.nSubsidyHalvingInterval = 100000;         consensus.BIP34Height = 710000;         consensus.BIP34Hash = uint256S("fa09d204a83a768ed5a7c8d441fa62f2043abf420cff1226c7b4329aeb9d51cf");         consensus.BIP65Height = 918684; // bab3041e8977e0dc3eeff63fe707b92bde1dd449d8efafb248c27c8264cc311a         consensus.BIP66Height = 811879; // 7aceee012833fa8952f8835d8b1b3ae233cd6ab08fdb27a771d2bd7bdc491894         consensus.powLimit = uint256S("00000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");          consensus.nPowTargetTimespan = 3.5 * 24 * 60 * 60; // 3.5 days         consensus.nPowTargetSpacing = 2.5 * 60;         consensus.fPowAllowMinDifficultyBlocks = false;         consensus.fPowNoRetargeting = false;         consensus.nRuleChangeActivationThreshold = 6048; // 75% of 8064         consensus.nMinerConfirmationWindow = 8064; // nPowTargetTimespan / nPowTargetSpacing * 4         consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].bit = 28;         consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = 1199145601; // January 1, 2008         consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = 1230767999; // December 31, 2008          // Deployment of BIP68, BIP112, and BIP113.         consensus.vDeployments[Consensus::DEPLOYMENT_CSV].bit = 0;         consensus.vDeployments[Consensus::DEPLOYMENT_CSV].nStartTime = 1485561600; // January 28, 2017         consensus.vDeployments[Consensus::DEPLOYMENT_CSV].nTimeout = 1517356801; // January 31st, 2018          // Deployment of SegWit (BIP141, BIP143, and BIP147)         consensus.vDeployments[Consensus::DEPLOYMENT_SEGWIT].bit = 1;         consensus.vDeployments[Consensus::DEPLOYMENT_SEGWIT].nStartTime = 1485561600; // January 28, 2017         consensus.vDeployments[Consensus::DEPLOYMENT_SEGWIT].nTimeout = 1517356801; // January 31st, 2018          // The best chain should have at least this much work.         consensus.nMinimumChainWork = uint256S("0x00000000000000000000000000000000000000000000002ebcfe2dd9eff82666");          // By default assume that the signatures in ancestors of this block are valid.         consensus.defaultAssumeValid = uint256S("0x59c9b9d3fec105bdc716d84caa7579503d5b05b73618d0bf2d5fa639f780a011"); //1353397          /**          * The message start string is designed to be unlikely to occur in normal data.          * The characters are rarely used upper ASCII, not valid as UTF-8, and produce          * a large 32-bit integer with any alignment.          */         pchMessageStart[0] = 0xfb;         pchMessageStart[1] = 0xc0;         pchMessageStart[2] = 0xb6;         pchMessageStart[3] = 0xdb;         nDefaultPort = 26201;         nPruneAfterHeight = 100000;          genesis = CreateGenesisBlock(1518803474, 2297622, 0x1e0ffff0, 1, 50 * COIN);         consensus.hashGenesisBlock = genesis.GetHash();         assert(consensus.hashGenesisBlock == uint256S("0x336bcc5731fba75254090bcd460d2e514c0ba86f91f7ef30ba48ff8a32e99c5e"));         assert(genesis.hashMerkleRoot == uint256S("0xd240c6e48edac265167f85ae2e6de488287fe89c0152343e1cb27216ce282d27"));          // Note that of those with the service bits flag, most only support a subset of possible options         //vSeeds.emplace_back("seed-a.litecoin.loshan.co.uk", true);         //vSeeds.emplace_back("dnsseed.thrasher.io", true);         //vSeeds.emplace_back("dnsseed.litecointools.com", true);         //vSeeds.emplace_back("dnsseed.litecoinpool.org", true);         //vSeeds.emplace_back("dnsseed.koin-project.com", false);          base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1,11);         base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1,5);         base58Prefixes[SCRIPT_ADDRESS2] = std::vector<unsigned char>(1,50);         base58Prefixes[SECRET_KEY] =     std::vector<unsigned char>(1,176);         base58Prefixes[EXT_PUBLIC_KEY] = {0x04, 0x88, 0xB2, 0x1E};         base58Prefixes[EXT_SECRET_KEY] = {0x04, 0x88, 0xAD, 0xE4};          vFixedSeeds = std::vector<SeedSpec6>(pnSeed6_main, pnSeed6_main + ARRAYLEN(pnSeed6_main));          fDefaultConsistencyChecks = false;         fRequireStandard = true;         fMineBlocksOnDemand = false;          checkpointData = (CCheckpointData) {             {                 {  0, uint256S("0x336bcc5731fba75254090bcd460d2e514c0ba86f91f7ef30ba48ff8a32e99c5e")},              /*   {  4032, uint256S("0x9ce90e427198fc0ef05e5905ce3503725b80e26afd35a987965fd7e3d9cf0846")},                 {  8064, uint256S("0xeb984353fc5190f210651f150c40b8a4bab9eeeff0b729fcb3987da694430d70")},                 { 16128, uint256S("0x602edf1859b7f9a6af809f1d9b0e6cb66fdc1d4d9dcd7a4bec03e12a1ccd153d")},                 { 23420, uint256S("0xd80fdf9ca81afd0bd2b2a90ac3a9fe547da58f2530ec874e978fce0b5101b507")},                 { 50000, uint256S("0x69dc37eb029b68f075a5012dcc0419c127672adb4f3a32882b2b3e71d07a20a6")},                 { 80000, uint256S("0x4fcb7c02f676a300503f49c764a89955a8f920b46a8cbecb4867182ecdb2e90a")},                 {120000, uint256S("0xbd9d26924f05f6daa7f0155f32828ec89e8e29cee9e7121b026a7a3552ac6131")},                 {161500, uint256S("0xdbe89880474f4bb4f75c227c77ba1cdc024991123b28b8418dbbf7798471ff43")},                 {179620, uint256S("0x2ad9c65c990ac00426d18e446e0fd7be2ffa69e9a7dcb28358a50b2b78b9f709")},                 {240000, uint256S("0x7140d1c4b4c2157ca217ee7636f24c9c73db39c4590c4e6eab2e3ea1555088aa")},                 {383640, uint256S("0x2b6809f094a9215bafc65eb3f110a35127a34be94b7d0590a096c3f126c6f364")},                 {409004, uint256S("0x487518d663d9f1fa08611d9395ad74d982b667fbdc0e77e9cf39b4f1355908a3")},                 {456000, uint256S("0xbf34f71cc6366cd487930d06be22f897e34ca6a40501ac7d401be32456372004")},                 {638902, uint256S("0x15238656e8ec63d28de29a8c75fcf3a5819afc953dcd9cc45cecc53baec74f38")},                 {721000, uint256S("0x198a7b4de1df9478e2463bd99d75b714eab235a2e63e741641dc8a759a9840e5")}, */             }         };          chainTxData = ChainTxData{             // Data as of block 59c9b9d3fec105bdc716d84caa7579503d5b05b73618d0bf2d5fa639f780a011 (height 1353397).             1516406833, // * UNIX timestamp of last known number of transactions             19831879,  // * total number of transactions between genesis and that timestamp                     //   (the tx=... number in the SetBestChain debug.log lines)             0.06     // * estimated number of transactions per second after that timestamp         };     } }; 

why is mainnet not creating new blocks in my machine?

How to create an altcoin

I’d like to create a Litecoin fork. This is purely for educational purposes. Any tips on how to get started? I’ve googled for guides online but I can’t find any good ones. Info is scattered all over the place. Thanks for your help!

Generating first block after genesis block in PoS altcoin

I’m currently developing a test altcoin in educational purposes, and can’t for some reason generate first pow blocks after generating genesis block. Couple of years ago i successfully made workable fork of fork of dash (or something similar with terribly outdated codebase), but I’m totally unable to reproduce it with modern codebase.

So, to the point. I used PIVX repo, changed chainparams.cpp accordingly:

  • removed old checkpoints;
  • generated new keys;
  • updated ports all over the codebase;
  • changed pchMessageStart numbers;
  • updated unixtime;
  • changed coin name all over the codebase;
  • generated genesis (and it was correct, i checked it many times);
  • compiled it;
  • launched coind;
  • launched cpuminer, and it failed with the following in log:

    2019-02-28 16:55:09 ERROR: CheckProofOfWork() : hash doesn’t match nBits
    2019-02-28 16:55:09 ERROR: CheckBlockHeader() : proof of work failed
    2019-02-28 16:55:09 ERROR: CheckBlock() : CheckBlockHeader failed
    2019-02-28 16:55:09 CreateNewBlock() : TestBlockValidity failed

I re-generated genesis with code in chainparams.cpp – it was the same as with genesis generator. I tried gen=1 and setgenerate true, and again received the same error, and hashespersec=0 in getmininginfo.

I started searching the web, and found a lot of same questions without any answer. For example, this one looks absolutely same – Cannot mine Genesis / First Block (PIVX Fork / Clone)

I tried the kind of solution from this thread – https://bitcointalk.org/index.php?topic=2152157.0;prev_next=next – but without any success too.

I assumed that maybe i’m missing something, and tried to do the same with some other PIVX forks. The first one was this – https://github.com/IchibaCoin/ICHIBA – with the same error. The second one was this – https://github.com/cruxcoinsource/CruxCoin – with the same error too. Then i scratched my head, thought deeply, and run diff for all files in /src/ folder of both coins with my testcoin. Files were totally same and differed only where they were different between crux and ichiba.

I tried all possible combinations of bools in this part of chainparams.cpp:

fMiningRequiresPeers = true; fAllowMinDifficultyBlocks = false; fDefaultConsistencyChecks = false; fRequireStandard = true; fMineBlocksOnDemand = false; fSkipProofOfWorkCheck = false; fTestnetToBeDeprecatedFieldRPC = false; fHeadersFirstSyncingActive = false; 

And when fMineBlocksOnDemand was set to true, command setgenerate true returned that wallet keypool is empty, and keypoolrefill command had no effect.

What am i doing wrong?..)))

What was the first altcoin?

I’m aware that LiteCoin is (was?) the “silver” to bitcoin’s “gold”.

The question is:

What was the first altcoin? Was it actually LiteCoin or was there something else?

For the purposes of “alt coin”

  1. What was the first fork of bitcoin
  2. What was the first altcoin that more than, say, 10 people mined?