C++ Litecoin/比特币如何在C+中根据难度划分uint256目标值+;
我几乎完成了在js中实现litecoin/bitcoin miner只是为了好玩,我只是不知道如何找到目标。正如docs所说,这是最大/难度,但如果难度是(例如)62,我如何在0x00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF和62之间执行除法 所以我从litecoin钱包源代码中得到unit256类,但这个类没有除法运算符。所以我将uint256转换为在uint256类中实现的doubleC++ Litecoin/比特币如何在C+中根据难度划分uint256目标值+;,c++,math,hex,bitcoin,C++,Math,Hex,Bitcoin,我几乎完成了在js中实现litecoin/bitcoin miner只是为了好玩,我只是不知道如何找到目标。正如docs所说,这是最大/难度,但如果难度是(例如)62,我如何在0x00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF和62之间执行除法 所以我从litecoin钱包源代码中得到unit256类,但这个类没有除法运算符。所以我将uint256转换为在uint256类中实现的doub
double getdouble() const
{
double ret = 0.0;
double fact = 1.0;
for (int i = 0; i < WIDTH; i++) {
ret += fact * pn[i];
fact *= 4294967296.0;
}
return ret;
}
double getdouble()常量
{
双ret=0.0;
双重事实=1.0;
对于(int i=0;i
但现在我需要将这个巨大的双精度字符串转换为十六进制字符串。据我所知,这个字符串将代表miner的目标。或者我需要这个双变量转换回uint256,并从中获取十六进制。有什么建议吗?谢谢 所以解决方案很简单:
void setdouble(double val)
{
double ret = val;
double fact = 1.0;
for (int i = 0; i < WIDTH; i++) {
double a = ret / fact;
pn[i] = (uint32_t)a;
fact *= 4294967296.0;
}
}
void setdouble(双值)
{
双ret=val;
双重事实=1.0;
对于(int i=0;i
你不能走那条路。难度没有足够的精度来计算目标。你只能从目标到困难。你的工作单元应该包括目标。好的,我写的miner使用stratum协议,stratum不给我十六进制格式的目标,他们只给我当前的难度。那我怎么才能找到目标呢?谢谢