user56046: I have 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
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
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
    genesis = CreateGenesisBlock(1498204210, 215446, 0x1e0ffff0, 1, 500 * COIN);

but i have in old sources this setting

        // 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"));
            }
        }
    }

what i need to change for it's start accept block's

user51948: The issue here is with:
  (block.nVersion < 3 && nHeight >= consensusParams.BIP66Height)

Your block has version 2, but I assume the block you are trying to download is higher than BIP66Height so it rejects it.
Its very difficult and requires a lot of expert know-how to modify the source code of a coin, and it sounds like you probably don't have the experience/skillset needed at this point, so I'd like to gently suggest you spend some more time learning about how bitcoin and the altcoin you are working on are coded, etc. before trying to make this modification, because you can't just copy and paste code from bitcoin into an altcoin and expect it to work. Different coins just aren't compatible with each other in that way.

56046: <p>I have 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 ?</p>

<p>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. </p>

<p>I have this error when trying download block's from peer's</p>

<pre><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
</code></pre>

<p>in</p>

<pre><code>validator i have this settings

        // Check proof of work
    if (block.nBits != GetNextWorkRequired(pindexPrev, &amp;block, consensusParams))
        return state.DoS(100, false, REJECT_INVALID, "bad-diffbits", false, "incorrect proof of work");

    // Check timestamp against prev
    if (block.GetBlockTime() &lt;= pindexPrev-&gt;GetMedianTimePast())
        return state.Invalid(false, REJECT_INVALID, "time-too-old", "block's timestamp is too early");

    // Check timestamp
    if (block.GetBlockTime() &gt; 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 &lt; 2 &amp;&amp; nHeight &gt;= consensusParams.BIP34Height) ||
       (block.nVersion &lt; 3 &amp;&amp; nHeight &gt;= consensusParams.BIP66Height) ||
       (block.nVersion &lt; 4 &amp;&amp; nHeight &gt;= 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 &lt; VERSIONBITS_TOP_BITS &amp;&amp; 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;
}
</code></pre>

<p>in genesis block settings i have</p>

<pre><code>    genesis = CreateGenesisBlock(1498204210, 215446, 0x1e0ffff0, 1, 500 * COIN);

but i have in old sources this setting

        // 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 &amp;&amp; nHeight &lt; pcheckpoint-&gt;nHeight)
            return state.DoS(100, error("AcceptBlock() : forked chain older than last checkpoint (height %d)", nHeight));

        // Reject block.nVersion=1 blocks (mainnet &gt;= 710000, testnet &gt;= 400000)
        if (nVersion &lt; 2)
        {
            if ((!fTestNet &amp;&amp; nHeight &gt;= 710000) ||
               (fTestNet &amp;&amp; nHeight &gt;= 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 &gt;= 2)
        {
            if ((!fTestNet &amp;&amp; nHeight &gt;= 710000) ||
               (fTestNet &amp;&amp; nHeight &gt;= 400000))
            {
                CScript expect = CScript() &lt;&lt; nHeight;
                if (vtx[0].vin[0].scriptSig.size() &lt; 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"));
            }
        }
    }
</code></pre>

<p>what i need to change for it's start accept block's</p>
 51948: <p>The issue here is with:</p>

<pre><code>  (block.nVersion &lt; 3 &amp;&amp; nHeight &gt;= consensusParams.BIP66Height)
</code></pre>

<p>Your block has version 2, but I assume the block you are trying to download is higher than BIP66Height so it rejects it.</p>

<p>Its very difficult and requires a <strong>lot</strong> of expert know-how to modify the source code of a coin, and it sounds like you probably don't have the experience/skillset needed at this point, so I'd like to gently suggest you spend some more time learning about how bitcoin and the altcoin you are working on are coded, etc. before trying to make this modification, because you can't just copy and paste code from bitcoin into an altcoin and expect it to work. Different coins just aren't compatible with each other in that way.</p>
