Я нашел решение!Это не совсем поле pdiff в коде, но в blockchain.cpp есть функция:
double GetDifficulty(const CBlockIndex* blockindex)
{
if (blockindex == nullptr)
{
return 1.0;
}
int nShift = (blockindex->nBits >> 24) & 0xff;
double dDiff =
(double)0x0000ffff / (double)(blockindex->nBits & 0x00ffffff);
while (nShift < 29)
{
dDiff *= 256.0;
nShift++;
}
while (nShift > 29)
{
dDiff /= 256.0;
nShift--;
}
return dDiff;
}
для биткойнов начальные nBits равны 0x1d00ffff, поэтому поле dDiff выше становится равным 1, а nshift равно 1D.Для моей частной версии я установил nBits в 0x1f0fffff и должен рассчитать dDiff как
double dDiff =(double)0x000ffff / (double)(blockindex->nBits & 0x00ffffff);
, а поле nShift для меня - 0x1f, поэтому я изменил условия на while(nShift < 31)
и while (nShift > 31)
.выполнив команду bitcoin-cli getdifficulty
я получил 1 в качестве начальной сложности.