btcpool之GbtMaker
一、简介
GbtMaker全称getblocktemplate maker,它通过getblocktemplate rpc接口从bitcoind获得挖矿所需数据,然后把该数据发送到kafka消息队列。
二、btc块头结构
GbtMaker从bitcoind获取的数据包含两部分,一是用于生成块头的数据,二是待打包的交易数据。所以要先了解比特币块头结构:

三、getblocktemplate
getblocktemplate rpc返回数据包括以下内容:
version:(数值)首选区块版本号
previousblockhash:(字符串)当前最新区块hash
height:(数值)下一区块高度
coinbasevalue:(数值)区块奖励+矿工费
bits:(字符串)下一区块的压缩目标
target:(字符串)下一区块目标,可由bits计算出来
mintime:(数值)下一区块时间的最小时间戳
curtime:(数值)当前时间戳
transactions:(数组)待打包到下一个区块的非coinbase交易,交易结构:
data:(字符串)16进制编码的交易数据
txid:(字符串)小端字节序16进制编码的交易id
hash:(字符串)小端字节序16进制编码的hash,包括witness数据
depends:(数组)。。。
fee:(数值)交易费
sigops:(数值)total SigOps cost, as counted for purposes of block limits
weight:(数值)total transaction weight, as counted for purposes of block limits
四、bitcoind ZMQ
bitcoind支持ZMQ通知监听者有新块或新交易到达,只需要在启动时配置相应选项(-zmqpubhashblock及-zmqpubhashtx)即可。监听者接收到bitcoind的新块通知后,立即调用getblocktemplate rpc接口获取新数据,然后将其发送到kafka消息队列。另外GbtMaker也会每隔段时间通过getblocktemplate rpc接口从bitcoind获取数据,然后将其发送到kafka消息队列。
五、rawgbt消息
GbtMaker从bitcoind获取挖矿数据后,打包成rawgbt消息发送到kafka消息队列。rawgbt消息包含三部分:
1、当前时间戳
2、getblocktemplate返回数据的hash,称其为gbthash
3、getblocktemplate返回数据的base64编码
btcpool之GbtMaker的更多相关文章
- btcpool之总架构
一.架构图 二.模块划分 整个btcpool分成GbtMaker.BlockMaker.JobMaker.StratumServer.PoolWatcher.statshttpd.sharelogge ...
- btcpool之BlockMaker
一.简介 BlockServer将StratumServer发送的solvedshare数据(块头和coinbase交易)与GbtMaker发送的rawgbt数据(其他交易)一起组装成一个块,然后通过 ...
- btcpool之StratumServer
一.简介 StratumServer(简称sserver)接收JobMaker发送的stratumjob消息,从http api获取用户列表,对外部矿机提供服务. 二.处理stratumjob消息 s ...
- btcpool之Stratum协议
一.简介 矿机(或挖矿软件)与矿池之间通过stratum协议通讯,它包括订阅.授权.下发难度.下发任务.提交share五种消息. 二.订阅(mining.subscribe) 矿机启动后,先和矿池建立 ...
- btcpool之JobMaker
一.简介 JobMaker从kafka消息队列接收rawgbt消息,然后解码该消息中的gbt数据,生成Job,发送到kafka消息队列. 二.StratumJob结构 StratumJob结构是Job ...
随机推荐
- Discovery Scanning
1.NetDiscover you performe layer 2 the comand : netdiscover -r 192.168.2.0/24 or use netdiscove ...
- ES6 语法学习(一)
1.let 和 const 关键字 let 与 var 的区别有: a.let 声明的变量只在当前的块级作用域内有效(块级作用域通俗的话就是被{}包裹起来的区域声明对象的{}例外). b.let 声明 ...
- 利用BootStrap Table插件实现自己的弹出框分页。
参考链接1: 官网:http://bootstrap-table.wenzhixin.net.cn/zh-cn/home/ 开始使用:http://bootstrap-table. ...
- getOrderValue 排序 sql server
GO -- =============================================-- Author: <Author,,rx.tang>-- Creat ...
- 《MySQL必知必会》整理
目录 第1章 了解数据库 1.1 数据库基础 1.1.1 什么是数据库 1.1.2 表 1.1.3 列和数据类型 1.1.4 行 1.1.5 主键 1.2 什么是SQL 第2章 MySQL简介 2.1 ...
- python基础篇_003_函数
python中的函数 1.函数的目的 .避免代码冗余 .增强可读性 2.函数的定义与调用 # 定义函数 使用关键字def """ 1.定义函数: def 函数名(): 函 ...
- leetcode算法题整理
一.线性表,如数组,单链表,双向链表 线性表.数组 U1.有序数组去重,返回新数组长度 A = [1,1,2] -> [1,2] 返回2 分析:其实一般数组的问题都可以用两个指针解决,一个指 ...
- [Codeforces Round #438][Codeforces 868D. Huge Strings]
题目链接:868D - Huge Strings 题目大意:有\(n\)个字符串,\(m\)次操作,每次操作把两个字符串拼在一起,并询问这个新串的价值.定义一个新串的价值\(k\)为:最大的\(k\) ...
- Selenium 3----获取断言信息
断言:把实际结果与预期进行比较. 一般可以通过获取title .URL和text等信息进行断言. title:用于获得当前页面的标题. current_url:用户获得当前页面的URL. text:获 ...
- nregistering JMX-exposed beans
https://blog.csdn.net/yang474231561/article/details/81738632 https://stackoverflow.com/questions/507 ...