#include
#include
#include
namespace bts
{
const fc::bigint& max224()
{
static fc::bigint m = [](){
char data[224/8+1];
memset( data, 0xff, sizeof(data) );
data[0] = 0;
return fc::bigint(data,sizeof(data));
}();
return m;
}
uint64_t difficulty( const fc::sha224& hash_value )
{
if( hash_value == fc::sha224() ) return uint64_t(-1); // div by 0
auto dif = max224() / fc::bigint( (char*)&hash_value, sizeof(hash_value) );
// TODO... restore this dif >>= 24;
int64_t tmp = dif.to_int64();
// possible if hash_value starts with 1
if( tmp < 0 ) tmp = 0;
return tmp;
}
} // bts