一、架构图

二、模块划分

  整个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. 1、在Centos上安装Grafana

    1.如果你想将老版本的Grafana升级为新版本的Grafana,可以阅读链接中的文档指南: http://docs.grafana.org/installation/upgrading/ 2.使用y ...

  2. figlet

    figlet https://aotu.io/notes/2016/11/22/figlet/  教程 npm i figlet --save-dev var figlet = require('fi ...

  3. thinkphp使用PHPExcel导出

    thinkphp3. 将PHPExcel下载包放在项目\ThinkPHP\Library\Vendor\PHPExcel thinkphp5 将PHPExcel下载包放在项目\vendor\PHPEx ...

  4. docker - 容器lxc

    容器:是在用户空间进行隔离的组件叫做容器 常用的容器有lxc ----libcontainer---runc 需要隔离的资源有: Rootfs:每个容器对应的一个目录做为根目录 User: Hostn ...

  5. spark MLlib BasicStatistics 统计学基础

    一, jar依赖,jsc创建. package ML.BasicStatistics; import com.google.common.collect.Lists; import org.apach ...

  6. Linux终端复用神器-Tmux使用梳理

    Tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授权.使用它最直观的好处就是,通过一个终端登录远程主机并运行tmux后,在其中可以开启多个控制台而无需再“ ...

  7. Git permission denied(public key) 解决方法

    1. 在Linux上: # ssh-keygen       ##一定用 id_rsa.pub # cat /root/.ssh/id_rsa.pub 2. copy 整个文件内容到剪切板 3. 打开 ...

  8. 工作笔记——使用Jest时遇到的一些问题

    最近公司想要从mocha+karma的前端单元测试方式转换到Jest,然后任务就分配给我了,好吧,在这之前连单元测试是什么都不知道.硬生生的开始写单元测试了,写这篇文章的初衷是因为在配置Jest的过程 ...

  9. 安装Visual C++ 6.0后报错:应用程序无法正常启动(0xc0000142)

    最近在安装Visual C++ 6.0时,本来想用个中文版的,结果刚安装好就报了这个错误 百度后发现是由于汉化后的Visual C++ 6.0与win10不兼容造成的 解决办法就是替换程序,把中文版的 ...

  10. HDU3072 Intelligence System

    题目传送门 有个中文版的题面...和原题稍有不同 /* Description “这一切都是命运石之门的选择.” 试图研制时间机器的机关SERN截获了中二科学家伦太郎发往过去的一条短信,并由此得知了伦 ...