Post
Topic
Board Кодеры
Re: diff_to_bits
by
~DefaultTrust
on 25/09/2020, 13:54:21 UTC
Но ведь в лайте сложность считается по другому. в цгмайнере ведь:

   d64 = truediffone;
   if (opt_scrypt)
      d64 *= (double)65536;
   d64 /= diff;

Если сделать так, будет работать?

static uint8_t diff_to_bits(double diff)
{
//   uint64_t diff64;
        uint64_t diff64 = 0x0000ffff00000000ULL;  //Для BTC:  0x00000000ffff00000000ULL
   uint8_t i;

   diff /= 0.9999847412109375;
   diff *= (double)2147483648.0;
   if (diff > 0x8000000000000000ULL)
      diff = 0x8000000000000000ULL;
   /* Convert it to an integer */
   diff64 = diff;
   for (i = 0; diff64; i++, diff64 >>= 1);

   return i;
}



Одинаково сложность считается.
Просто в для майнинга лайте сложность искусственно занижается чтобы майнить легче было.

Вобщем диф это целое число. Чем число меньше тем майнить (находить блок для дифа) - сложнее. Чем диф больше - тем майнить легче. В битке как видишь максимальный диф ограничен числом 0x8000000000000000ULL. Это чтобы совсем уж халявные блоки майнерам не доставались ни при каких условиях.
Ну попробуй закомментарить это условие и домножить диф на 65536 или еще на что-нибудь побольше. Это будет означать только то, что ты разрешишь в своем майнере искать более простые блоки.