Skip to content

Latest commit

 

History

History
68 lines (51 loc) · 1.71 KB

GbtMaker.md

File metadata and controls

68 lines (51 loc) · 1.71 KB

btcpool矿池-GbtMaker模块解析

核心机制总结

  • 监听Bitcoind ZMQ中BITCOIND_ZMQ_HASHBLOCK消息,一有新块产生,将立即向kafka发送新Gbt
  • 另默认每5秒间隔(可从配置文件中指定)主动RPC请求Bitcoind,获取Gbt发送给kafka
  • Gbt消息大小约2M,含交易列表

GbtMaker命令使用

GbtMaker用于从比特币节点获取挖矿模板,并发送给kafka。

gbtmaker -c gbtmaker.cfg -l log_dir
#-c指定gbtmaker配置文件
#-l指定日志目录

gbtmaker.cfg配置文件

gbtmaker = {
  //rpc调用间隔(秒)
  rpcinterval = 5;
  //启动时是否检查zmq
  is_check_zmq = true;
};

bitcoind = {
  //指定zmq地址和端口
  zmq_addr = "tcp://127.0.0.1:8331";
  //指定rpc地址和端口,如http://127.0.0.1:8332
  rpc_addr    = "";
  //指定rpc账号和密码,格式如username:password
  rpc_userpwd = "";
};

kafka = {
  //指定kafka集群
  brokers = "1.1.1.1:9092,2.2.2.2:9092,3.3.3.3:9092";
};

挖矿模板范例

getblocktemplate.txt

GbtMaker流程图

KAFKA_TOPIC_RAWGBT消息

return Strings::Format("{\"created_at_ts\":%u,"
	"\"block_template_base64\":\"%s\","
	"\"gbthash\":\"%s\"}",
	(uint32_t)time(nullptr), EncodeBase64(gbt).c_str(),
	gbtHash.ToString().c_str());

参考文档