【发布时间】:2014-01-23 12:40:48
【问题描述】:
我几乎完成了在 js 中实现莱特币/比特币矿工只是为了好玩,我只是不知道如何找到目标十六进制。正如文档所说,它是最大/难度,但如果难度是(例如)62,我该如何在 0x00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 和 62 之间进行除法?
所以我从莱特币钱包源获得了 unit256 类,但这个类没有除法运算符。所以我将 uint256 转换为在 uint256 类中实现的 double
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;
}
但现在我需要将这个巨大的双精度转换为十六进制字符串。据我了解,这个字符串将代表矿工的目标。或者我需要这个双变量转换回 uint256 并从中获取十六进制。有什么建议吗?谢谢!
【问题讨论】:
-
你不能那样做。难度没有足够的精度让您计算目标。你应该只从目标到困难。你的工作单位应该包括目标。
-
好的,所以我写了使用地层协议的矿工,地层不给我十六进制格式的目标,他们只给我当前的难度。那我怎么能找到目标呢?谢谢!