Author

Topic: what change need make to accept old blockchain block's (Read 320 times)

newbie
Activity: 14
Merit: 0
I try make  altcoin bassed on old Litecoin sources, end i try to convert it for latest available sources. How i can do this ? What need for this ?

I try simple download it on old wallet, then run new. But mine new or download them from other wallet no possible. I try find info how do this. But find noting.

I have this error when trying download block's from peer's
Code:
   ERROR: AcceptBlockHeader: Consensus::ContextualCheckBlockHeader: 90e718e6878f4b7ae4de4ae83db75881d00ca017f5a117c2054798bcb76c4178, bad-version(0x00000002), rejected nVersion=0x00000002 block (code 17)
    2017-07-28 04:12:10 ERROR: invalid header received
    2017-07-28 04:12:10 ProcessMessages(headers, 162003 bytes) FAILED peer=0
    2017-07-28 04:12:10 receive version message: /Satoshi:1.0.0/: version 70002, blocks=3293, us=x.x.x.x:12815, peer=1
in
Code:
   validator i have this settings
    
            // Check proof of work
        if (block.nBits != GetNextWorkRequired(pindexPrev, &block, consensusParams))
            return state.DoS(100, false, REJECT_INVALID, "bad-diffbits", false, "incorrect proof of work");
    
        // Check timestamp against prev
        if (block.GetBlockTime() <= pindexPrev->GetMedianTimePast())
            return state.Invalid(false, REJECT_INVALID, "time-too-old", "block's timestamp is too early");
    
        // Check timestamp
        if (block.GetBlockTime() > nAdjustedTime + 2 * 60 * 60)
            return state.Invalid(false, REJECT_INVALID, "time-too-new", "block timestamp too far in the future");
    
        // Reject outdated version blocks when 95% (75% on testnet) of the network has upgraded:
        // check for version 2, 3 and 4 upgrades
        if((block.nVersion < 2 && nHeight >= consensusParams.BIP34Height) ||
           (block.nVersion < 3 && nHeight >= consensusParams.BIP66Height) ||
           (block.nVersion < 4 && nHeight >= consensusParams.BIP65Height))
                return state.Invalid(false, REJECT_OBSOLETE, strprintf("bad-version(0x%08x)", block.nVersion),
                                     strprintf("rejected nVersion=0x%08x block", block.nVersion));
    
        if (block.nVersion < VERSIONBITS_TOP_BITS && IsWitnessEnabled(pindexPrev, consensusParams))
            return state.Invalid(false, REJECT_OBSOLETE, strprintf("bad-version(0x%08x)", block.nVersion),
                                     strprintf("rejected nVersion=0x%08x block", block.nVersion));
    
        return true;
    }
in genesis block settings i have
Code:
       genesis = CreateGenesisBlock(1498204210, 215446, 0x1e0ffff0, 1, 500 * COIN);
   
    but i have in old sources this setting
Code:
   
            // Check that the block chain matches the known block chain up to a checkpoint
            if (!Checkpoints::CheckBlock(nHeight, hash))
                return state.DoS(100, error("AcceptBlock() : rejected by checkpoint lock-in at %d", nHeight));
    
            // Don't accept any forks from the main chain prior to last checkpoint
            CBlockIndex* pcheckpoint = Checkpoints::GetLastCheckpoint(mapBlockIndex);
            if (pcheckpoint && nHeight < pcheckpoint->nHeight)
                return state.DoS(100, error("AcceptBlock() : forked chain older than last checkpoint (height %d)", nHeight));
    
            // Reject block.nVersion=1 blocks (mainnet >= 710000, testnet >= 400000)
            if (nVersion < 2)
            {
                if ((!fTestNet && nHeight >= 710000) ||
                   (fTestNet && nHeight >= 400000))
                {
                    return state.Invalid(error("AcceptBlock() : rejected nVersion=1 block"));
                }
            }
            // Enforce block.nVersion=2 rule that the coinbase starts with serialized block height
            if (nVersion >= 2)
            {
                if ((!fTestNet && nHeight >= 710000) ||
                   (fTestNet && nHeight >= 400000))
                {
                    CScript expect = CScript() << nHeight;
                    if (vtx[0].vin[0].scriptSig.size() < expect.size() ||
                        !std::equal(expect.begin(), expect.end(), vtx[0].vin[0].scriptSig.begin()))
                        return state.DoS(100, error("AcceptBlock() : block height mismatch in coinbase"));
                }
            }
        }
Jump to: