Post
Topic
Board Announcements (Altcoins)
Re: [ANN] AGAcoin (currency for the Amiga community and others) - Developers wanted!
by
juantellez
on 28/02/2018, 20:26:51 UTC
Looking in my last push i saw it will never change the diff, could somebody check if this look's good? it should be working after height 535020

Code:
// Limit adjustment step
    int64 nActualTimespan = pindexLast->GetBlockTime() - pindexFirst->GetBlockTime();
    printf("  nActualTimespan = %"PRI64d"  before bounds\n", nActualTimespan);
    if(pindexLast->nHeight+1 > 535020)
    {
    // From Digibyte to implement Digishield
        static const int64 nAveragingInterval = 10; // 10 blocks
        static const int64 nAveragingTargetTimespan = nAveragingInterval * nTargetSpacing; // *10       
        static const int64 nMaxAdjustDown = 16; // 16% adjustment down
        static const int64 nMaxAdjustUp = 8; // adjustment up
       
        static const int64 nMinActualTimespan = nAveragingTargetTimespan * (100 - nMaxAdjustUp) / 100;
        static const int64 nMaxActualTimespan = nAveragingTargetTimespan * (100 + nMaxAdjustDown) / 100;
       
        if (nActualTimespan < nMinActualTimespan)
            nActualTimespan = nMinActualTimespan;
        if (nActualTimespan > nMaxActualTimespan)
            nActualTimespan = nMaxActualTimespan;
    }
    else if(pindexLast->nHeight+1 > 10000)
    {
        if (nActualTimespan < nTargetTimespan/4)
            nActualTimespan = nTargetTimespan/4;
        if (nActualTimespan > nTargetTimespan*4)
            nActualTimespan = nTargetTimespan*4;
    }
    else if(pindexLast->nHeight+1 > 5000)
    {
        if (nActualTimespan < nTargetTimespan/8)
            nActualTimespan = nTargetTimespan/8;
        if (nActualTimespan > nTargetTimespan*4)
            nActualTimespan = nTargetTimespan*4;
    }
    else
    {
    if (nActualTimespan < nTargetTimespan/16)
            nActualTimespan = nTargetTimespan/16;
        if (nActualTimespan > nTargetTimespan*4)
            nActualTimespan = nTargetTimespan*4;
    }

    // Retarget
    CBigNum bnNew;
    bnNew.SetCompact(pindexLast->nBits);
    bnNew *= nActualTimespan;
    bnNew /= nTargetTimespan;

    if (bnNew > bnProofOfWorkLimit)
        bnNew = bnProofOfWorkLimit;