开源矿工的备用矿池设计与实现 —— 抽象,阅读有难度
开源矿工的备用矿池设计与实现
本文基于内核自有的备用矿池功能实现开源矿工的备用矿池,以后可能会脱离具体内核实现备用矿池。
设计和实现备用矿池的功能时充分体现了为什么开源矿工会有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这样的内容,里面的大括号括住的是变量,这些变量需要运行时在写文件之前填充上,其中任何一个大括号括住的位置从环境中得不到值则表示不匹配(如同计算机语言的函数调用和函数签名不匹配),不匹配的书写器将被忽略。 是不是很熟悉?文件书写器像什么?是不是像个函数?向什么位置书写和写什么内容是它的入参,而书写的内容中又有大括号括住的如同{pool1}这样的东西,{pool1}这是函数体中用到的父级作用域中的变量,对于开源矿工来说它依然是一个纯函数因为它只从上下文中读取变量的值而并没有写,对于开源矿工来说这个函数没有输出,因为它输出到外部文件系统中去了。
这个设计是可以支持钱包地址形式和用户名密码形式的备用矿池的,只需给内核关联两条文件书写器记录,一条书写器中有{wallet1}这样的变量导致它只会在上下文中有钱包地址时执行,另一条书写器中有{userName1}变量导致它只会在上下文中有用户名时执行。值得指出的是{wallet1}、{userName1}虽然和{wallet}、{userName}不同,但{wallet1}的值和{wallet}相同因为{wallet1}直接只是{wallet}的别名,而{userName1}和{userName}很可能不同,因为用户名密码形式的备用矿池会在界面上拥有对应{userName1}的输入框。
类NBMiner的备用矿池同理,但不需要文件书写器。
当我们说开源矿工是一个完备的系统时我们指的是它内部具有和外部环境足够多的映射信息,完备的系统可以通过调整自己的内部空间排布和行为方式节能高效的应对环境的变量从而让生命周期更长。
转载于:https://www.cnblogs.com/ntminer/p/10992902.html
开源矿工的备用矿池设计与实现 —— 抽象,阅读有难度相关推荐
- 开源矿工的备用矿池设计与实现
开源矿工的备用矿池设计与实现 本文基于内核自有的备用矿池功能实现开源矿工的备用矿池,以后可能会脱离具体内核实现备用矿池. 设计和实现备用矿池的功能时充分体现了为什么开源矿工会有10多万行代码. 备用矿 ...
- “误收”2100 个以太坊之后,星火矿池是退是分?
编者按:本文来自36氪战略合作区块链媒体"Odaily星球日报https://www.odaily.com/"(公众号ID:o-daily,APP下载https://downloa ...
- Chia官方:有关Chia官方矿池的重要解读,费率更加透明,爆块更稳定
6月3日,万众期待的Chia官方矿池协议测试版会议终于召开了,不过本次会议主要针对矿池运行商和开发者,和农民关系不大.接下来我们一起通过官方的PPT内容,为大家作进一步的解读. Chia创始人:&qu ...
- linux++挖矿模式,矿池挖矿PPLNS+分配模式解析,长期挖矿收益会更高
原标题:矿池挖矿PPLNS+分配模式解析,长期挖矿收益会更高 还记得2017年年底,比特币疯狂暴涨吗?不知造就了多少百万富翁,千万富翁.区块链近两年发展如日中天,人们对数字货币的投资热情日益高涨.现在 ...
- 神鱼发怒,揭露矿圈“扣块攻击”,矿池江湖暗流涌动
作者 | 王佳建 这两天,格力与奥克斯空调正面硬刚的新闻抢占了各大媒体头条. 格力实名举报奥克斯生产的8个型号空调虚假宣传,能效不合格.奥克斯称对方恶意造谣,不正当竞争. 12日,中国知名矿池鱼池(F ...
- Bytom矿池接入协议指南
矿机配置 https://gist.github.com/HAOYUatHZ/a47400bde4a138825faef415387b532c 固件升级 https://service.bitmain ...
- 如何看待矿池抽税激励社区开发者?如何看待EOS?——BCH极客大赛江卓尔专访
本次BCH极客大赛期间,我们还特别邀请了莱比特矿池BTC.TOP的CEO江卓尔做了专访.看看他是如何看待矿池抽税激励社区开发者?如何看待EOS?下一个牛市在哪里?如何看待区块链存储敏感信息?中国可能在 ...
- 开源矿工和轻松矿工接入ssl
NBminer内核 请在网址前面加入ethproxy+ssl 例子:-o ethproxy+ssl://ethssl.fish-pool.com:7688 ====================== ...
- 区块链:4、矿池算力集中问题及51%攻击问题
区块链:4.矿池算力集中问题及51%攻击问题 一.矿池算力集中的问题 1.矿工及任务 以公共区块链分布式账本为基础的加密货币,如比特币.以太币等,需要靠分布在世界各地的矿工(mine)不停地运作来维持 ...
最新文章
- Ubuntu16.04桌面系统如何配置和启动wireshark
- 尚硅谷Java视频教程导航(学习路线图)
- cocos creator基础-基本控件知识
- superset设置自动刷新
- oracle 同义词_Oracle迁移到MySQL,必须要搞明白这几个问题
- 怎么用python表白_如何正确使用Python进行表白?这是个值得思考的问题!
- HTML5博客个人日志记录网页模板
- 为什么Python 4.0不会像Python 3.0
- python模板语言_你应该(或许)没使用过的 3 种 Python 模板语言 | Linux 中国
- 快1倍,我在 M1 Max 上开发 iOS 应用有了这些发现
- copy constructor和copy assignment operator的区别
- python代码控制机械臂_Dobot 机械臂
- ttf,eot,woff,svg,字体格式介绍及使用方法
- 解读SIM卡、USIM卡、UICC卡、eSIM卡的区别
- python 入门书籍-入门python有什么好的书籍推荐?
- 用计算机的声音编辑工具录制一段语音信号,传媒2020年7月《影视录音基础》课程考试在线作业考核试题题目【标准答案】...
- [hihocoder]1238 : Total Highway Distance
- XiaoHu日志 6/17~6/19
- vue-quill-editor富文本编辑器保存标签乱码
- SERC 2013 E Skyscrapers
热门文章
- Go(上):go基础 续
- 从“学习”到“引领”,源自中国的“渐变”会掀起新手机设计潮吗?
- 【数通网络交换基础梳理2】三层设备、网关、ARP表、VLAN、路由表及跨网段路由下一跳转发原理
- SAP母子订单(汇总订单)详解测试_SAP刘梦_新浪博客
- 10年技术管理实战不传心法
- obs studio 在windows10 系统下编译安装过程
- 流密码-python实现RC4加密
- 好未来宣布全资收购CodeMonkey,拓展B端市场
- 工信部出手,一键解除手机绑定账号
- 【TVM】User Tutorial--Introduction