首页 / 未分類 / 金色百科|挖礦通訊協議stratum是什么?

金色百科|挖礦通訊協議stratum是什么?

stratum協議是目前最常用的礦機和礦池之間的TCP通訊協議。先簡要說明挖礦的網絡架構。

比特幣是一個去中心化的網絡架構,通過安裝比特幣守護程序的節點來轉發新交易和新區塊。而礦機、礦池也同時形成了另一個網絡,我們稱之為礦工網絡。

礦工網絡分成礦機、礦池、錢包等幾個主要部分,有時礦池軟件與錢包安裝在一起,可合稱為礦池。

礦機與礦池軟件之間的通訊協議是stratum,而礦池軟件與錢包之間的通訊是bitcoinrpc接口。

0X03 stratum協議

1、任務訂閱

礦機啟動,首先以mining.subscribe方法向礦池連接,用來訂閱工作。

礦池以mining.notify返回訂閱號、ExtraNonce1和ExtraNonce2_size。

Client:{“id”:1,”method”:”mining.subscribe”,”params”:[]}

Server:{“id”:1,”result”:[[“mining.notify”,”ae6812eb4cd7735a302a8a9dd95cf71f”],”08000002″,4],”error”:null}123

其中:
ae6812eb4cd7735a302a8a9dd95cf71f是訂閱號;

08000002是ExtraNonce1,用于構建coibase交易;

ExtraNonce2_size為4,礦機ExtraNonce2計數器的字節數。

2、任務分配

該命令由礦池定期發給礦機,當礦機以mining.subscribe方法登記后,礦池應該馬上以mining.notify返回該任務。

Server:{“params”:[“bf”,”4d16b6f85af6e2198f44ae2a6de67f78487ae5611b77c6c0440b921e00000000″,?”010000000100000000000000000000000000000000000000000000000000000000000000?00ffffffff20020862062f503253482f04b8864e5008″,?”072f736c7573682f000000000100f2052a010000001976a914d23fcdf86f7e756a64a7a9688ef9903327048ed988ac00000000″,[“c5bd77249e27c2d3a3602dd35c3364a7983900b64a34644d03b930bfdb19c0e5″,?”049b4e78e2d0b24f7c6a2856aa7b41811ed961ee52ae75527df9e80043fd2f12″],?”00000002″,”1c2ac4af”,”504e86b9″,false],”id”:null,”method”:”mining.notify”}1

其中:

任務號:”bf”;

前個區塊HASH:

“4d16b6f85af6e2198f44ae2a6de67f78487ae5611b77c6c0440b921e00000000″;1

coinbase第一部分:

“010000000100000000000000000000000000000000000000000000000?00000000000000000ffffffff20020862062f503253482f04b8864e5008″;1

coinbase第二部分:

“072f736c7573682f000000000100f2052a010000001976a914d23fcdf86f7?e756a64a7a9688ef9903327048ed988ac00000000″;1

交易ID列表:

[“c5bd77249e27c2d3a3602dd35c3364a7983900b64a34644d03b930bfdb19c0e5”, “049b4e78e2d0b24f7c6a2856aa7b41811ed961ee52ae75527df9e80043fd2f12”];

區塊版本號:”00000002″;

nBit:”1c2ac4af”;

當前時間:”504e86b9″;
清理任務:如果為true,則礦機中止所有任務,馬上開始新任務;如果是false則等當前任務結束才開始新任務。

3、礦機登錄

礦機以mining.authorize方法,用某個帳號和密碼登錄到礦池,密碼可空,礦池返回true登錄成功。該方法必須是在初始化連接之后馬上進行,否則礦機得不到礦池任務。

Client:{“params”:[“miner1″,”password”],”id”:2,”method”:”mining.authorize”}

Server:{“error”:null,”id”:2,”result”:true}123

4、結果提交

礦機找到合法share時,就以”mining.submit“方法向礦池提交任務。礦池返回true即提交成功,如果失敗則error中有具體原因。

Client:{“params”:[“miner1”,”bf”,”00000001”,”504e86ed”,”b2957c02”],”id”:4,”method”:”mining.submit”}

Server:{“error”:null,”id”:4,”result”:true}

其中:

用戶名:”miner1″;

任務號:”bf”;

ExtraNonce2:”00000001″;

當前時間:”504e86ed”;

nonce:”b2957c02″;

5、難度調整

難度調整由礦池下發給礦機,以mining.set_difficulty方法調整難度,params中是難度值。

Server:{“id”:null,”method”:”mining.set_difficulty”,”params”:[2]}

礦機會在下一個任務時采用新難度,礦池有時會馬上下發一個新任務并且把清理任務設為true,以便礦機馬上以新難度工作。

0x03 一般通訊過程

一般的礦機與礦池通訊過程就如下所示:

本文来自网络,不代表币懂得立场,转载请注明出处:http://www.blogboleh.com/1544

币懂得作者

上一篇
下一篇

为您推荐

发表评论

您的电子邮箱地址不会被公开。

联系我们

联系我们

0898-88881688

在线咨询: QQ交谈

邮箱: email@zhutibaba.com

工作时间:周一至周五,9:00-17:30,节假日休息
关注微信
微信扫一扫关注我们

微信扫一扫关注我们

手机访问
手机扫一扫打开网站

手机扫一扫打开网站

返回顶部