btcpool之StratumServer】的更多相关文章

一.简介 StratumServer(简称sserver)接收JobMaker发送的stratumjob消息,从http api获取用户列表,对外部矿机提供服务. 二.处理stratumjob消息 sserver从kafka消息队列中接收JobMaker发送的StratumJob消息.先判断该Job是否超时或重复,若是则不进行后续处理.保存该Job.接着判断该Job的prevBlockHash(上一区块哈希)是否与最近一次广播的Job的prevBlockHash是否相同,若不同,则将之前所有Jo…
一.架构图 二.模块划分 整个btcpool分成GbtMaker.BlockMaker.JobMaker.StratumServer.PoolWatcher.statshttpd.sharelogger及slparser这几部分,各模块之间通过kafka消息队列通讯. 三.GbtMaker GbtMaker是getblocktemplate maker的简称,它通过getblocktemplate rpc接口从比特币核心(bitcoind)获取挖矿所需要的数据,然后将该数据(称其rawgbt)发…
一.简介 BlockServer将StratumServer发送的solvedshare数据(块头和coinbase交易)与GbtMaker发送的rawgbt数据(其他交易)一起组装成一个块,然后通过submitblock rpc接口提交给比特币节点,节点再将该块广播到区块链上. 二.处理rawgbt消息 BlockServer收到GbtMaker发送的rawgbt消息后,先判断之前是否已收到了该rawgbt,若是则忽略不处理.否则,解码该rawgbt中的所有交易并这些交易和gbthash对应保…
一.简介 JobMaker从kafka消息队列接收rawgbt消息,然后解码该消息中的gbt数据,生成Job,发送到kafka消息队列. 二.StratumJob结构 StratumJob结构是JobMaker的核心数据结构,其字段如下: 三.coinbase交易 The first transaction in a block, called the coinbase transaction, must have exactly one input, called a coinbase. Th…
一.简介 矿机(或挖矿软件)与矿池之间通过stratum协议通讯,它包括订阅.授权.下发难度.下发任务.提交share五种消息. 二.订阅(mining.subscribe) 矿机启动后,先和矿池建立TCP连接,然后向矿池发送订阅消息,消息内容如下: {"id":1,"method":"mining.subscribe","params":[]} 矿池收到矿机的订阅消息后,响应消息内容如下: {"id":1…
一.简介 GbtMaker全称getblocktemplate maker,它通过getblocktemplate rpc接口从bitcoind获得挖矿所需数据,然后把该数据发送到kafka消息队列. 二.btc块头结构 GbtMaker从bitcoind获取的数据包含两部分,一是用于生成块头的数据,二是待打包的交易数据.所以要先了解比特币块头结构: 三.getblocktemplate getblocktemplate rpc返回数据包括以下内容: version:(数值)首选区块版本号 pr…