Итак, я пытаюсь реализовать криптовалюту для школьного проекта, но я застрял в части проверки блоков, майнинге. Я использовал этот код, который нашел в Интернете, и адаптировал его к своему проекту:
void Block::MineBlock(int nDifficulty)
{
std::string cstr(nDifficulty + 1, '\0');
for (int i = 0; i < nDifficulty; i++)
{
cstr[i] = '0';
}
cstr[nDifficulty] = '\0';
std::string str(cstr);
do
{
nNonce++;
blockHash = generateHash();
} while (blockHash.substr(0, nDifficulty) != str);
this->checked = true;
}
Мой nDifficulty установлен на 1. Это нормально, что он зацикливается до бесконечности? Вот также функция generateHa sh:
std::string Block::generateHash()
{
std::stringstream ss;
ss << index << timestamp << filename << nNonce << prevHash;
return sha256(ss.str());
}