开源矿工的备用矿池设计与实现
本文基于内核自有的备用矿池功能实现开源矿工的备用矿池,以后可能会脱离具体内核实现备用矿池。
设计和实现备用矿池的功能时充分体现了为什么开源矿工会有10多万行代码。
备用矿池分两种:
一种像Claymore通过写一个Claymore指定的文件实现;
一种像更合理的NBMiner通过正常的命令行参数实现,-o是主矿池-o1是备用矿池;
这两种的不同只是外部系统向内核内部系统传送信息的方式不同,claymore通过文件传送信息的方式对直接使用claymore原版挺方便但对像开源矿工这样的第三方程序来说导致引入了除命令行参数外的第二种向内核输入数据的方式。
通过硬编码功能完备的编程语言是可以实现特定于Claymore的备用矿池的,但开源矿工想做的通用,想一次性解决所有像Claymore这样的内核,为此需要抽象出其中的模式写出更多的代码,但如果掌握了规则会发现开源矿工10万行的代码如同1万行,因为所有地方都一致。
面向类Claymore内核的文件书写器
为了写内核的备用矿池文件,我们需要一个文件书写器,比如对应Claymore的内核配置会引用一个文件书写器,文件书写器需要知道往哪个位置写