开源矿工的备用矿池设计与实现

本文基于内核自有的备用矿池功能实现开源矿工的备用矿池,以后可能会脱离具体内核实现备用矿池。

设计和实现备用矿池的功能时充分体现了为什么开源矿工会有10多万行代码。

备用矿池分两种:

一种像Claymore通过写一个Claymore指定的文件实现;

一种像更合理的NBMiner通过正常的命令行参数实现,-o是主矿池-o1是备用矿池;

这两种的不同只是外部系统向内核内部系统传送信息的方式不同,claymore通过文件传送信息的方式对直接使用claymore原版挺方便但对像开源矿工这样的第三方程序来说导致引入了除命令行参数外的第二种向内核输入数据的方式。

通过硬编码功能完备的编程语言是可以实现特定于Claymore的备用矿池的,但开源矿工想做的通用,想一次性解决所有像Claymore这样的内核,为此需要抽象出其中的模式写出更多的代码,但如果掌握了规则会发现开源矿工10万行的代码如同1万行,因为所有地方都一致。

面向类Claymore内核的文件书写器

为了写内核的备用矿池文件,我们需要一个文件书写器,比如对应Claymore的内核配置会引用一个文件书写器,文件书写器需要知道往哪个位置写以及写什么内容。

向什么位置书写

文件书写器向小编给定的位置书写(小编作为一个外部系统向开源矿工系统输入信息的唯一途径是开源矿工启动时从阿里云下载的server.json,这个server.json会在界面上发生用户活动时检测到更新时刷新),要写向的这个位置应是一个相对位置,最终的完整位置应由运行时根据当时的上下文信息计算得到。

书写什么内容

书写小编指定的内容,但小编指定的内容中会有变量,这些变量需要在写之前根据当前的上下文信息赋值。以Claymore为例,小编给定的内容会是POOL: {pool1}, WALLET: {wallet1}/{worker1}, PSW: x, ESM: 0, ALLPOOLS: 0这样的内容,里面的大括号括住的是变量,这些变量需要运行时在写文件之前填充上,其中任何一个大括号括住的位置从环境中得不到值则表示不匹配(如同计算机语言的函数调用和函数签名不匹配),不匹配的书写器将被忽略,这是一个错误,如果一个书写器被运行时索引出来准备执行那么它一定是匹配的,否则就是BUG。
是不是很熟悉?文件书写器像什么?是不是像个函数?向什么位置书写和写什么内容是它的入参,而书写的内容中又有大括号括住的如同{pool1}这样的东西,{pool1}这是函数体中用到的父级作用域中的变量,对于开源矿工来说它依然是一个纯函数因为它只从上下文中读取变量的值而并没有写,对于开源矿工来说这个函数没有输出,因为它输出到外部文件系统中去了。

这个设计是可以支持钱包地址形式和用户名密码形式的备用矿池的,只需给内核关联两条文件书写器记录,一条书写器中有{wallet1}这样的变量导致它只会在上下文中有钱包地址时执行,另一条书写器中有{userName1}变量导致它只会在上下文中有用户名时执行。值得指出的是{wallet1}、{userName1}虽然和{wallet}、{userName}不同,但{wallet1}的值和{wallet}相同因为{wallet1}直接只是{wallet}的别名,而{userName1}和{userName}很可能不同,因为用户名密码形式的备用矿池会在界面上拥有对应{userName1}的输入框。

类NBMiner的备用矿池同理,但不需要文件书写器。

当我们说开源矿工是一个完备的系统时我们指的是它内部具有和外部环境足够多的映射信息,完备的系统可以通过调整自己的内部空间排布和行为方式节能高效的应对环境的变量从而让生命周期更长。

开源矿工官网:https://ntminer.com

开源矿工的备用矿池设计与实现相关推荐

  1. 开源矿工的备用矿池设计与实现 —— 抽象,阅读有难度

    开源矿工的备用矿池设计与实现 本文基于内核自有的备用矿池功能实现开源矿工的备用矿池,以后可能会脱离具体内核实现备用矿池. 设计和实现备用矿池的功能时充分体现了为什么开源矿工会有10多万行代码. 备用矿 ...

  2. “误收”2100 个以太坊之后,星火矿池是退是分?

    编者按:本文来自36氪战略合作区块链媒体"Odaily星球日报https://www.odaily.com/"(公众号ID:o-daily,APP下载https://downloa ...

  3. Chia官方:有关Chia官方矿池的重要解读,费率更加透明,爆块更稳定

    6月3日,万众期待的Chia官方矿池协议测试版会议终于召开了,不过本次会议主要针对矿池运行商和开发者,和农民关系不大.接下来我们一起通过官方的PPT内容,为大家作进一步的解读. Chia创始人:&qu ...

  4. linux++挖矿模式,矿池挖矿PPLNS+分配模式解析,长期挖矿收益会更高

    原标题:矿池挖矿PPLNS+分配模式解析,长期挖矿收益会更高 还记得2017年年底,比特币疯狂暴涨吗?不知造就了多少百万富翁,千万富翁.区块链近两年发展如日中天,人们对数字货币的投资热情日益高涨.现在 ...

  5. 神鱼发怒,揭露矿圈“扣块攻击”,矿池江湖暗流涌动

    作者 | 王佳建 这两天,格力与奥克斯空调正面硬刚的新闻抢占了各大媒体头条. 格力实名举报奥克斯生产的8个型号空调虚假宣传,能效不合格.奥克斯称对方恶意造谣,不正当竞争. 12日,中国知名矿池鱼池(F ...

  6. 如何看待矿池抽税激励社区开发者?如何看待EOS?——BCH极客大赛江卓尔专访

    本次BCH极客大赛期间,我们还特别邀请了莱比特矿池BTC.TOP的CEO江卓尔做了专访.看看他是如何看待矿池抽税激励社区开发者?如何看待EOS?下一个牛市在哪里?如何看待区块链存储敏感信息?中国可能在 ...

  7. 开源矿工和轻松矿工接入ssl

    NBminer内核 请在网址前面加入ethproxy+ssl 例子:-o ethproxy+ssl://ethssl.fish-pool.com:7688 ====================== ...

  8. 区块链:4、矿池算力集中问题及51%攻击问题

    区块链:4.矿池算力集中问题及51%攻击问题 一.矿池算力集中的问题 1.矿工及任务 以公共区块链分布式账本为基础的加密货币,如比特币.以太币等,需要靠分布在世界各地的矿工(mine)不停地运作来维持 ...

  9. 鲸交所抢滩PoS 25亿美元市场,正式上线鲸矿池

    共识机制是区块链的核心之一,决定了数据的不可篡改性及系统良性的运转,在进化中不断迭代.一种共识,一波机遇.PoW共识,造就了矿池和矿机生意的风生水起,直到发改委的一纸政令,矿机被列入了"淘汰 ...

最新文章

  1. vue 去除路由时候的#
  2. C语言函数返回1和返回0究竟哪个好?
  3. C语言: GDB调试技术(一)
  4. 直通车运营系统优化之账户结构设置
  5. 【ruby】ruby学习笔记之--环境搭建
  6. 前端工作学习相关网站收集整理
  7. CRM Online Outlook Client Configuration Wizard
  8. ubuntu遇到的 the system is runing low-graphics mode 问题
  9. 架构师速成6.4-开发框架
  10. 如何实现BootStrapTable的动态表格
  11. public 函数_C++:11友元函数、友元类
  12. 《关于动态社交网络建模和分析的教程》的读书笔记
  13. 安装ANSYS、SolidWorks、MATLAB等软件出错解决办法汇总(此大乘佛法可解决99.9%的问题)
  14. 台式计算机屏幕亮度在哪调,电脑亮度怎么调?教您电脑亮度在哪里调
  15. 互联网创业的五大定律
  16. 电赛公开课整理(一),电路基础,截图+模电知识【15000字】【原创】
  17. vscode如何同时运行多个vue项目
  18. HBuilder发布H5,nginx部署
  19. Linux——文件的权限管理、acl列表、特殊权限位、练习2
  20. cst是什么时间(Cst是什么检查)

热门文章

  1. OpenCV-图像无缝克隆函数演示(c++)
  2. uni-app实现全局音乐播放器
  3. 逆袭共享单车、打脸王思聪,共享充电宝究竟凭什么?
  4. Unity2019.3.2f下载
  5. 小朱opengl学习笔记(二)-----小白入门案例介绍
  6. Android10.0 获取不到IMEI问题
  7. 二十几岁为什么是人生的一道坎
  8. linux系统维护篇:网络流量查看及带宽测试
  9. 【路径规划】基于禁忌搜索算法求解初始点和终点确定的取送货路径问题matla代码
  10. 什么样的地推才叫牛逼?他们给出了教科书般的示范