如何对加密货币矿工进行编程?像 XMRig XMR-Stak MinerGate 等。
1 回答
您首先需要了解 PoW 的概念。简单地说 PoW 就是hashcash - 一个矿工哈希他们创建的块,增加一个随机的“nonce”(使用一次的数字),直到结果哈希满足“难度”要求。难度是根据过去 2 周块之间的时间计算的一个数字,它会改变以保持每 10 分钟(ish)生成块。对于要被接受的块,其哈希值必须低于难度值(当然,该块必须是有效的)。独奏挖矿软件通过轮询区块模板的硬币守护程序来工作(在某些情况下,这包含所有费用最高的交易,在其他情况下,您必须自己添加它们)创建“coinbase”交易(一次将向您支付奖励的交易)你找到一个有效的块,它被附加到交易列表的顶部)更新默克尔根包括新的 coinbase 交易并添加 nonce 的交易,然后对这个块进行散列 - 检查散列是否满足难度,如果不满足则增加 nonce。矿工一直这样做,直到: 1)矿工找到一个块 - 在这种情况下,它将块发送给守护进程 2)其他人找到一个块,在这种情况下,矿工再次启动(获取新的块模板 bla bla布拉)。
然而,大多数矿工都是矿池矿工——在这种情况下,矿工通过stratum+tcp 协议连接到矿池并请求一个“作业”,作业只是池希望您散列的一个字符串 - 池执行创建要散列的块的 jb,然后将散列所有连接的矿工的任务分开。例如,池可能会告诉 alice 用 nonce 0 到 nonce 15,000 散列块,并告诉 bob 用 nonce 从 15,001 到 30,000 散列,等等。然后矿池矿工提交工作结果。一旦矿工找到解决方案,他们就会告诉矿池并且矿池将区块发送到矿池守护进程,它会告诉其他矿工停止并开始处理新区块。然后,它根据他们完成的工作数量将奖励分配给矿工 - 尽管完成此操作的方式超出了此答案的范围)。
TLDR;你需要了解 PoW 是如何工作的,了解你想用什么方法来挖矿(单人或矿池),(如果是矿池)你需要了解 tcp+stratum 协议和(如果是单人)你需要了解您要为其制作矿工的硬币的 RPC。我会从阅读基本和简单的独奏者开始,然后构建你自己的。然后你可以考虑转向更复杂的矿池矿工。如果您希望您的矿工使用 GPU(大多数矿工都这样做),那么您需要了解 NVIDIA(例如 CUDA)和 AMD 的通用 GPU 接口。
我希望这对您进入密码世界的冒险有所帮助,并祝您好运和祝福!里奥·科尼利厄斯