Global Feed Post Login
Replying to Avatar Bitcoiner Post

It's a mathematically derived numeric value. It's derived by dividing the maximum possible target value by the target for the current block.

Here is the code of the math behind it from source code.

#include

#include

inline float fast_log(float val)

{

int * const exp_ptr = reinterpret_cast (&val);

int x = *exp_ptr;

const int log_2 = ((x >> 23) & 255) - 128;

x &= ~(255 << 23);

x += 127 << 23;

*exp_ptr = x;

val = ((-1.0f/3) * val + 2) * val - 2.0f/3;

return ((val + log_2) * 0.69314718f);

}

float difficulty(unsigned int bits)

{

static double max_body = fast_log(0x00ffff), scaland = fast_log(256);

return exp(max_body - fast_log(bits & 0x00ffffff) + scaland * (0x1d - ((bits & 0xff000000) >> 24)));

}

int main()

{

std::cout << difficulty(0x1b0404cb) << std::endl;

return 0;

}

Avatar
John Galt 1y ago

My brother in code, this is epic. So great that this community can answer in very specific terms. Thank you. I learned something new today.

Reply to this note

Please Login to reply.

Discussion

Avatar
Bitcoiner Post 1y ago

You are so very welcome. That's what attracted me to Bitcoin. I can learn something the rest of my life. Have a good one bro!

Avatar
Bitcoiner Post 1y ago

Thank you! 👍 🙏

Thread collapsed
Thread collapsed