MCPcopy Create free account
hub / github.com/BTCGPU/BTCGPU / DigishieldCalculateNextWorkRequired

Function DigishieldCalculateNextWorkRequired

src/pow.cpp:146–171  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

144}
145
146unsigned int DigishieldCalculateNextWorkRequired(arith_uint256 bnAvg, const CBlockIndex* pindexLast, const CBlockIndex* pindexFirst, const Consensus::Params& params)
147{
148 if (params.fPowNoRetargeting)
149 return pindexLast->nBits;
150
151 int64_t nLastBlockTime = pindexLast->GetMedianTimePast();
152 int64_t nFirstBlockTime = pindexFirst->GetMedianTimePast();
153 // Limit adjustment
154 int64_t nActualTimespan = nLastBlockTime - nFirstBlockTime;
155
156 if (nActualTimespan < params.DigishieldMinActualTimespan())
157 nActualTimespan = params.DigishieldMinActualTimespan();
158 if (nActualTimespan > params.DigishieldMaxActualTimespan())
159 nActualTimespan = params.DigishieldMaxActualTimespan();
160
161 // Retarget
162 const arith_uint256 bnPowLimit = UintToArith256(params.PowLimit(true));
163 arith_uint256 bnNew {bnAvg};
164 bnNew /= params.DigishieldAveragingWindowTimespan();
165 bnNew *= nActualTimespan;
166
167 if (bnNew > bnPowLimit)
168 bnNew = bnPowLimit;
169
170 return bnNew.GetCompact();
171}
172
173unsigned int BitcoinGetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHeader *pblock, const Consensus::Params& params)
174{

Callers 1

Calls 6

UintToArith256Function · 0.85
GetMedianTimePastMethod · 0.80
GetCompactMethod · 0.80

Tested by

no test coverage detected