一、架构图

二、模块划分

  整个btcpool分成GbtMaker、BlockMaker、JobMaker、StratumServer、PoolWatcher、statshttpd、sharelogger及slparser这几部分,各模块之间通过kafka消息队列通讯。

三、GbtMaker

  GbtMaker是getblocktemplate maker的简称,它通过getblocktemplate rpc接口从比特币核心(bitcoind)获取挖矿所需要的数据,然后将该数据(称其rawgbt)发送到kafka消息队列。

四、BlockMaker

  BlockMaker的作用是将StratumServer提交过来的solvedshare数据(包括block头、coinbase交易)和GbtMaker发送的rawgbt中的交易一起组成一个block,然后通过submitblock rpc提交给比特币核心。

五、JobMaker

  JobMaker解码GbtMaker发送的rawgbt,将coinbase交易按extraNonce拆分成coinbase1、extraNonce及coinbase2三部分;同时根据rawgbt中的交易生成merkle branch哈希数组,以方便用于和coinbase交易一起生成merkle root。然后将这些数据(称其stratumjob)发送到kafka消息队列。

六、StratumServer

  StratumServer除了要和各模块交互外,还要和miners交互。miner向StratumServer注册,StratumServer将该miner的extraNonce1(一般为session id,其和extraNonce2一起组成extraNonce)返回给miner。StratumServer收到stratumjob数据后,将所需要的挖矿数据下发给miner(通过mining.set_difficulty和mining.notify消息)。miner挖到一个share后,提交给StratumServer(通过mining.submit消息),若StratumServer检测该share满足爆块条件(块头哈希小于爆块target),则将该share数据(称其solvedshare)发送到kafka,然后由BlockMaker处理。若改share是有效share,则将该share数据(称其为share)发送到kafka。

七、PoolWatcher

  PoolWatcher的功能是监听其他大矿池的爆块,当其监听到其他矿池爆块后,发送空的rawgbt消息,StratumServer收到该消息后,通知miner停止挖矿。

八、statshttpd

  statshttpd收到share消息后,对算力进行统计,并提供web界面用于算力查看。

九、sharelogger

  sharelogger将收到的share消息保存到磁盘,以供slparser分析。

十、slparser

  slparser从磁盘加载并解析share消息,然后计算收益,并提供web界面用于查看收益。

btcpool之总架构的更多相关文章

  1. IBM总架构师寇文东谈程序员的职业规划

    有些年轻的程序员向我咨询,将来的路该怎么走?俗话说,条条大路通罗马.不同的路都能走向成功,到底选择哪条路,取决于自己的兴趣.可能有程序员会问:如果还没有找到自己的兴趣怎么办?我的建议是多尝试,努力做, ...

  2. IBM 总架构师:话说程序员的职业生涯

    作者:IBM 软件集团大中华区总架构师 寇卫东 有一些年轻的程序员向我咨询,将来的路应该怎么走?俗话说,条条大路通罗马.不同的路都能走向成功.到底选哪条路,取决于自己的兴趣.可能有程序员会问:如果还没 ...

  3. Spring Cloud 微服务项目实现总架构一

    Spring Cloud 服务是一种分布式服务,包括配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,主节点选举, 分布式session, 集群状态等公共组件. 一  注册机 ...

  4. 从数据分析系统总架构理解BI工具的价值所在

    ​现如今,应用商业智能BI工具的企业是越来越多了,由此也可见企业对数据分析的重视.因此,掌握一定的数据分析知识对"打工人"来说是非常重要的.现在小编就来跟大家一起来了解一下商业智能 ...

  5. [网站性能1]对.net系统架构改造的一点经验和教训

    文章来源:http://www.admin10000.com/document/2111.html 在互联网行业,基于Unix/Linux的网站系统架构毫无疑问是当今主流的架构解决方案,这不仅仅是因为 ...

  6. 《Inside UE4》-2-GamePlay架构(一)Actor和Component

    <Inside UE4>-2-GamePlay架构(一)Actor和Component     <Inside UE4>-2-GamePlay架构(一)Actor和Compon ...

  7. (转)对.net系统架构改造的一点经验和教训

    在互联网行业,基于Unix/Linux的网站系统架构毫无疑问是当今主流的架构解决方案,这不仅仅是因为Linux本身足够的开放性,更因为围绕传统Unix/Linux社区有大量的成熟开源解决方案,覆盖了网 ...

  8. 对.net系统架构改造的一点经验和教训(转)

    在互联网行业,基于Unix/Linux的网站系统架构毫无疑问是当今主流的架构解决方案,这不仅仅是因为Linux本身足够的开放性,更因为围绕传统Unix/Linux社区有大量的成熟开源解决方案,覆盖了网 ...

  9. 对.Net系统架构改造的一点经验和教训

    如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 在互联网行业,基于Unix/Linux的网站系统架构毫无疑问是当今主流的架构解决方案 ...

随机推荐

  1. 关于Idea模块化部署web项目,Web Resource Directories作用

    问题由来:接到某个所谓“将web工程中部分代码抽出打包,但待打包部分代码还需要在现场部署时能做微调”的需求. 解决方法:将待打包部分代码作为一个module,让工程依赖该模块,满足抽离打包与现场可调试 ...

  2. CodeForces - 833B The Bakery

    题解: 线段树经典应用 首先暴力$f[i][j]$表示考虑前i位分成j段的最大值 转移$f[k][j-1]+cost(k+1,i)$枚举k转移 不同数的经典套路就是从它到它前驱这一段 于是维护每个数前 ...

  3. CodeForces 958F3 Lightsabers (hard) 启发式合并/分治 多项式 FFT

    原文链接http://www.cnblogs.com/zhouzhendong/p/8835443.html 题目传送门 - CodeForces 958F3 题意 有$n$个球,球有$m$种颜色,分 ...

  4. 服务器资源监控插件(jmeter)

    零.引言 我们对被测应用进行性能测试时,除了关注吞吐量.响应时间等应用自身的表现外,对应用运行所涉及的服务器资源的使用情况,也是非常重要的方面,通过 实时监控,可以准确的把握不同测试场景下服务器资源消 ...

  5. git Disconnected:No supported authentication methods available问题解决

    在本地克隆gitlab上的项目,报如下错误:Disconnected:No supported authentication methods available(server sent:publick ...

  6. CSS(五)

    定位 关于定位 我们可以使用css的position属性来设置元素的定位类型,postion的设置项如下: relative 生成相对定位元素,元素所占据的文档流的位置不变,元素本身相对文档流的位置进 ...

  7. linux进阶指令

    1.df  查看磁盘空间  2.free   查看内存使用 -m 表示以mb位单位查看 total    总大小 used   使用过的空间 free 空闲的空间 shared 共享内存 buffer ...

  8. 13、vue.js简单入门

    本篇导航: 介绍与安装 vue常用指令 一.介绍与安装 vue是一套构建用户界面的JAVASCRIPT框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层, ...

  9. [LeetCode] Binary Tree Pruning 二叉树修剪

    We are given the head node root of a binary tree, where additionally every node's value is either a ...

  10. [LeetCode] Robot Room Cleaner 扫地机器人

    Given a robot cleaner in a room modeled as a grid. Each cell in the grid can be empty or blocked. Th ...