導航:首頁 > 礦池算力 > stratum礦池通訊協議

stratum礦池通訊協議

發布時間:2025-10-19 04:36:14

1. 計算機stratum是什麼意思

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

2. 挖礦協議stratum

Stratum 協議於2012年底開發,專為擴展支持礦池挖礦而設計,取代了過時的getwork協議。其最初在Slush's pool's網站公布,隨後BTCGuild提供了備忘單形式的文檔。

在Stratum挖礦過程中,礦機使用subscribe方法連接礦池。連接後,礦機記錄礦池返回的數據,包括用於設置難度值、發送任務、Extranonce1和Extranonce2等信息。Extranonce1和Extranonce2用於增加搜索空間,是挖礦的關鍵元素。

礦機接著使用authorize方法向礦池授權,注冊賬號並添加礦工,礦池允許每個賬號添加任意數量的礦工,並分配錢包地址用於收益分配。某些礦池如F2Pool允許直接使用錢包地址挖礦,此時授權時不需注冊賬號。

礦池通過notify方法分配任務給礦機。任務包括任務號ID、前一個區塊的HASH值、coinbase、merkle_branch、區塊版本號、當前難度、當前時間戳、以及一個清除工作標志。有了這些信息和之前的Extranonce1和Extranonce2_size,礦機就能開始挖礦。

礦機開始挖礦,構造coinbase信息,將Extranonce2與coinbase合並。構建merkleroot,利用coinbase和merkle_branch進行哈希運算得到最終結果。之後填充區塊頭的剩餘欄位,進行挖礦。礦機使用submit方法向礦池提交工作量,礦池驗證難度和全網難度。

礦池使用set_difficulty方法調整礦機的難度值,以適應礦工的效率。難度值通過特定公式計算得出,表示任務難度相對於比特幣難度單位的倍數。如果礦機在規定時間內未提交結果,礦池將重新發送任務,連續三次未提交任務後認為礦機斷開連接,需要重新連接。

3. 輕松礦工能加密嗎

可以。
第一步,點擊礦池管理,第二步,滑條拉到最下面,點擊添加,第三步,礦池名稱可以隨意填寫,礦池地址請輸入支持SSL協議的地址+stratum+ssl://,第四步,點擊礦池選擇我們剛剛添加的SSL加密線路。
到這里輕松礦工NBMiner內核開啟SSL加密模式就好啦,然後點擊挖礦就可以開始了。

4. 鯨准研究院丨礦池行業分析報告

礦池的行業現狀與痛點:

礦池行業背景:挖礦有兩種方式,Solo挖礦與礦池挖礦。礦池模式降低了礦工的技術門檻,通過聚集算力實現共享與協作挖礦。然而,Solo挖礦存在硬碟和帶寬需求大、挖礦成功概率極低的問題。礦池的出現有效解決了這些問題,極大降低了門檻,使礦工只需提供算力即可參與挖礦,而無需關心復雜的挖礦技術細節。

市場格局:近三個月,礦池市場份額前六名占據總份額的79.2%,分別是BTC.com(25.5%)、螞蟻礦池(14.5%)、SlushPool(11.0%)、ViaBTC(10.0%)、BTC.TOP(9.2%)與F2Pool(9.0%)。前六名中,五家來自中國,其中BTC.com、螞蟻礦池、ViaBTC與比特大陸有直接關系。除這六家外,排名前十的礦池中僅有兩家來自國外。

行業痛點:礦池面臨DDoS攻擊風險、資金安全問題、傳播網路建設與優化、網路穩定性保障、數據結構復雜性管理以及確保充足的算力支持。

礦池經營模式介紹:

礦池協議與角色:礦池通過專用協議協調礦工,礦工通過賬號連接礦池伺服器,提供算力參與挖礦。常見協議包括Stratum與getBlockTemplate。礦池角色包括礦工(按貢獻份額獲得獎勵)、礦池管理員(收取手續費)。

准入條件與獎勵分配:礦池對所有礦工開放,獎勵由整個礦池共享。礦池設置難度閾值,達標礦工可分享獎勵。獎勵分配方式多樣,涉及固定結算(如PPS、PPS+)與滯後收益(如PPLNS)。

礦池分類:主要分為託管礦池與P2P礦池。託管礦池由公司或個人經營,收取管理費。P2P礦池則通過去中心化節點實現挖礦協作。

收益結算模式:礦池採用多種結算模式,包括PPS、PPLNS、PPS+、SOLO模式等,以適應不同礦工的收益需求。

領軍企業一覽:國際排名前六的礦池中,三家與比特大陸有直接關系,分別為BTC.COM、AntPool與ViaBTC。比特大陸系礦池憑借礦機價格優惠與快速獲取優勢,非比特大陸系礦池則通過差異化服務吸引用戶。

礦池的未來展望:行業內部競爭加劇,礦池市場趨向集中化,小礦池面臨退出。礦池生態建設需關注縱向深耕與橫向錢包生態發展。未來,礦池可能轉向採用PoS等共識機制,同時面臨行業內部與外部競爭的雙重壓力。

5. 以太坊stratum協議原理

參照比特幣的 stratum協議 和 NiceHash的stratum協議規范 編寫了一版以太坊版本的stratum協議說明.

stratum協議是目前最常用的礦機和礦池之間的TCP通訊協議。

以太坊是一個去中心化的網路架構,通過安裝Mist客戶端的節點來轉發新交易和新區塊。而礦機、礦池也同時形成了另一個網路,我們稱之為礦工網路。

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

礦機與礦池軟體之間的通訊協議是 stratum ,而礦池軟體與錢包之間的通訊是 bitcoinrpc 介面。

stratum是 JSON 為數據格式.

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

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

Client:

Server:

其中:

是 訂閱號 ;

080c是 extranonce ,Extranonce可能最大3位元組;

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

Client:

Server:

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

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

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

Server:

任務ID : bf0488aa ;

seedhash : 。每一個任務都發送一個seedhash來支持盡可能多的礦池,這可能會很快地在貨幣之間交換。

headerhash : 。

boolean cleanjobs : true 。如果設為true,那麼礦工需要清理任務隊列,並立即開始從事新提供的任務,因為所有舊的任務分享都將導致陳舊的分享錯誤。如果是 false 則等當前任務結束才開始新任務。

礦工使用seedhash識別DAG,然後帶著headerhash,extranonce和自己的minernonce尋找低於目標的share(這是由提供的難度而產生的)。

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

Client:

任務ID : bf0488aa

minernonce : 6a909d9bbc0f 。注意minernonce是6個位元組,因為提供的extranonce是2個位元組。如果礦池提供3位元組的extranonce,那麼minernonce必須是5位元組

Server:

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

6. 魚池礦池地址

常用的國內的礦池地址: 1. f2pool (魚池) eth.f2pool.com:6688 還可以使用以下備用地址: 中國區: stratum+tcp://eth.f2pool.com:6688 stratum+tcp://eth-backup.f2pool.com:6688 北美區: stratum+tcp://eth-na.f2pool.com:6688 stratum+tcp://eth-backup.f2pool.com:6688 歐洲區: stratum+tcp://eth-eu.f2pool.com:6688 stratum+tcp://eth-backup.f2pool.com:6688。
拓展資料
1.F2Pool魚池的加入,在提升崛起幣知名度和影響力的同時,將直接影響崛起幣的挖礦難度和網路穩定性。 大礦池的加入,有助於提高崛起幣挖礦難度和網路穩定性;並且隨著挖礦難度的提高,崛起幣區塊鏈的數據注冊成本特別是DPO防偽注冊成本會進一步降低;這是繼承自域名幣並且在代碼中決定的;DPO防偽注冊成本的降低,為DPO防偽的商業應用掃清了成本障礙,有助於打開崛起幣DPO防偽應用的市場,使之更具市場競爭力。
2.魚池創始人沈宇表示,「出售價值40億美元的比特幣」是一種諷刺。有用戶懷疑比特幣價格下跌是由於f2pool的出售造成的。在過去的10天里(2020年1月12日至1月22日),這個魚池已經流出了大約45000個比特幣,總計約14億美元。申玉回答說,目前魚池開采和生產的比特幣超過100萬枚,由於歷史悠久,這與大多數交易所地址都有關聯。 針對這一事件,數據提供商和數據分析平台cryptoquant也在twitter上證實,f2pool本身並沒有大量出售比特幣,拋售潮來自於參與魚池挖礦的巨鯨。最近魚池比特幣流出量的大規模增長,是由於隱量子將所有與魚池挖礦獎勵相關的地址標記為同一類型。
3.目前,cryptoquant正試圖解決地址標記集的問題。 根據cryptoquant數據,它監控著與礦池相關的所有地址,其中大部分是礦工客戶的地址,所以它的監控數據可能更能反映礦工客戶的行為,而不是礦池運營商的行為。f2pool的內部工作人員Jessica告訴記者,我們只提供技術服務。礦機的集中和大量外流與f2pool無關。 oklink的業務總監蔣子龍向我們的記者解釋說,准確地說,應該是礦池內的礦工買錢的情況。此外,根據cryptoquant的數據,出現大量「拋售」的日子是1月29日,最大的數量約為16000個btc,這並不是拋售。根據價格和數量,3月12日流出的btc將超過6000個,7月20日流出的btc將超過7000個。BTC流出對價格的影響不是很顯著,這可以理解為一個完全的易手或主力軍的信心沒有受到礦池的很大影響。

7. 比特幣礦池的協議stratum

轉自: https://zhuanlan.hu.com/p/23558268
getblocktemplate協議誕生於2012年中葉,此時礦池已經出現。礦池採用getblocktemplate協議與節點客戶端交互,採用stratum協議與礦工交互,這是最典型的礦池搭建模式。

與getwork相比,getblocktemplate協議最大的不同點是:getblocktemplate協議讓礦工自行構造區塊。如此一來,節點和挖礦完全分離。對於getwork來說,區塊鏈是黑暗的,getwork對區塊鏈一無所知,他只知道修改data欄位的4個位元組。對於getblocktemplate來說,整個區塊鏈是透明的,getblocktemplate掌握區塊鏈上與挖礦有關的所有信息,包括待確認交易池,getblocktemplate可以自己選擇包含進區塊的交易。

挖礦有兩種方式,一種叫SOLO挖礦,另一種是去礦池挖礦。前文所述的在節點客戶端直接啟動CPU挖礦,以及依靠getwork+cgminer驅動顯卡直接連接節點客戶端挖礦,都是SOLO挖礦,SOLO好比自己獨資買彩票,不輕易中獎,中獎則收益全部歸自己所有。去礦池挖礦好比合買彩票,大家一起出錢,能買一堆彩票,中獎後按出資比率分配收益。理論上,礦機可以藉助getblocktemplate協議鏈接節點客戶端SOLO挖礦,但其實早已沒有礦工會那麼做,在寫這篇文章時,比特幣全網算力1600P+,而當前最先進的礦機算力10T左右,如此算來,單台礦機SOLO挖到一個塊的概率不到16萬分之一,礦工(人)投入真金白銀購買礦機、交付電費,不會做風險那麼高的投資,顯然投入礦池抱團挖礦以降低風險,獲得穩定收益更加適合。因此礦池的出現是必然,也不可消除,無論是否破壞系統的去中心化原則。

礦池的核心工作是給礦工分配任務,統計工作量並分發收益。礦池將區塊難度分成很多難度更小的任務下發給礦工計算,礦工完成一個任務後將工作量提交給礦池,叫提交一個share。假如全網區塊難度要求Hash運算結果的前70個比特位都是0,那麼礦池給礦工分配的任務可能只要求前30位是0(根據礦工算力調節),礦工完成指定難度任務後上交share,礦池再檢測在滿足前30位為0的基礎上,看看是否碰巧前70位都是0。

礦池會根據每個礦工的算力情況分配不同難度的任務,礦池是如何判斷礦工算力大小以分配合適的任務難度呢?調節思路和比特幣區塊難度一樣,礦池需要藉助礦工的share率,礦池希望給每個礦工分配的任務都足夠讓礦工運算一定時間,比如說1秒,如果礦工在一秒之內完成了幾次任務,說明礦池當前給到的難度低了,需要調高,反之。如此下來,經過一段時間調節,礦池能給礦工分配合理難度,並計算出礦工的算力。

礦池通過getblocktemplate協議與網路節點交互,以獲得區塊鏈的最新信息,通過stratum協議與礦工交互。此外,為了讓之前用getwork協議挖礦的軟體也可以連接到礦池挖礦,礦池一般也支持getwork協議,通過階層挖礦代理機制實現(Stratum mining proxy)。須知在礦池剛出現時,顯卡挖礦還是主力,getwork用起來非常方便,另外早期的FPGA礦機有些是用getwork實現的,stratum與礦池採用TCP方式通信,數據使用JSON封裝格式。

先來說一下getblocktemplate遺留下來的幾個問題:

礦工驅動:在getblocktemplate協議里,依然是由礦工主動通過HTTP方式調用RPC介面向節點申請挖礦數據,這就意味著,網路最新區塊的變動無法及時告知礦工,造成算力損失。

數據負載:如上所述,如今正常的一次getblocktemplate調用節點都會反饋回1.5M左右的數據,其中主要數據是交易列表,礦工與礦池需頻繁交互數據,顯然不能每次分配工作都要給礦工附帶那麼多信息。再者巨大的內存需求將大大影響礦機性能,增加成本。

Stratum協議徹底解決了以上問題。

Stratum協議採用主動分配任務的方式,也就是說,礦池任何時候都可以給礦工指派新任務,對於礦工來說,如果收到礦池指派的新任務,應立即無條件轉向新任務;礦工也可以主動跟礦池申請新任務。

現在最核心的問題是如何讓礦工獲得更大的搜索空間,如果參照getwork協議,僅僅給礦工可以改變nNonce和nTime欄位,則交互的數據量很少,但這點搜索空間肯定是不夠的。想增加搜索空間,只能在hashMerkleroot下功夫,如果讓礦工自己構造coinbase,那麼搜索空間的問題將迎刃而解,但代價是必要要把區塊包含的所有交易都交給礦工,礦工才能構造交易列表的Merkleroot,這對於礦工來說壓力更大,對於礦池帶寬要求也更高。

Stratum協議巧妙解決了這個問題,成功實現既可以給礦工增加足夠的搜索空間,又只需要交互很少的數據量,這也是Stratum協議最具創新的地方。

再來回顧一下區塊頭的6個欄位80位元組,這個很關鍵,nVersion,nBits,hashPrevBlock這3個欄位是固定的,nNonce,nTime這兩個欄位是礦工現在就可以改變的。增加搜索空間只能從hashMerkleroot下手,這個繞不過去。Stratum協議讓礦工自己構造coinbase交易,coinbase的scriptSig欄位有很多位元組可以讓礦工自由填充,而coinbase的改動意味著hashMerkleroot的改變。從coinbase構造hashMerkleroot無需全部交易,

如上圖所示,假如區塊將包含13筆交易,礦池先對這13筆交易進行處理,最後只要把圖中的4個黑點(Hash值)交付給礦工,同時將構造coinbase需要的信息交付給礦工,礦工就可以自己構造hashMerkleroot(圖中的綠點都是礦工自行計算獲得,兩兩合並Hash時,規定下一個黑點代表的hash值總是放在右邊)

。按照這種方式,假如區塊包含N筆交易,礦池可以濃縮成log2(N)個hash值交付給礦工,這大大降低了礦池和礦工交互的數據量。

Stratum協議嚴格規定了礦工和礦池交互的介面數據結構和交互邏輯,具體如下:

1. 礦工訂閱任務

啟動挖礦機器,使用mining.subscribe方法鏈接礦池

返回數據很重要,礦工需本地記錄,在整個挖礦過程中都用到,其中:

Extranonce1,和 Extranonce2對於挖礦很重要,增加的搜索空間就在這里,現在,我們至少有了8個位元組的搜索空間,即nNonce的4個位元組,以及 Extranonce2的4個位元組。

2. 礦池授權

在礦池注冊一個賬號 ,添加礦工,礦池允許每個賬號任意添加礦工數,並取不同名字以區分。礦工使用mining.authorize方法申請授權,只有被礦池授權的礦工才能收到礦池指派任務。

3. 礦池分配任務

以上每個欄位信息都是必不可少,其中:

有了以上信息,再加上之前拿到的Extranonce1 和Extranonce2_size,就可以挖礦了。

4. 挖礦

1) 構造coinbase交易

用到的信息包括Coinb1, Extranonce1, Extranonce2_size 以及Coinb2,構造很簡單:

為啥可以這樣,因為礦池幫礦工做了很多工作,礦池已經構建了coinbase交易,系列化後在指定位置分割成coinb1和coinb2,coinb1和coinb2包含指定信息,比如coinb1包含區塊高度,coinb2包含了礦工的收益地址和收益額等信息,但是這些信息對於礦工來說無關緊要,礦工挖礦的地方只是Extranonce2 的4個位元組。另外Extranonce1是礦池寫入區塊的指定信息,一般來說,每個礦池會寫入自己礦池的信息,比如礦池名字或者域名,我們就是根據這個信息統計每個礦池在全網的算力比重。

2) 構建Merkleroot

利用coinbase和merkle_branch,按照上圖方式構造hashMerkleroot欄位。

3) 構建區塊頭

填充餘下的5個欄位,現在,礦池可以在nNonce和Extranonce2 里搜索進行挖礦,如果嫌搜索空間還不夠,只要增加Extranonce2_size為多幾個位元組就可輕而易舉解決。

5. 礦工提交工作量

當礦工找到一個符合難度的shares時,提交給礦池,提交的信息量很少,都是必不可少的欄位:

礦池拿到以上5個欄位後,首先根據任務號ID找出之前分配任務前存儲的信息(主要是構建的coinbase交易以及包含的交易列表等),然後重構區塊,再驗證shares難度,對於符合難度要求的shares,再檢測是否符合全網難度。

6. 礦池給礦工調節難度

礦池記錄每個礦工的難度,並根據shares率不斷調節以指定合適難度。礦池可以隨時通過mining.set_difficulty方法給礦工發消息另其改變難度。

如上,Stratum協議核心理念基本解析清楚,在getblocktemplate協議和Stratum協議的配合下,礦池終於可以大聲的對礦工說,讓算力來的更猛烈些吧。

閱讀全文

與stratum礦池通訊協議相關的資料

熱點內容
五軍對決統預力怎麼算 瀏覽:244
數字貨幣mate 瀏覽:508
區塊鏈技術與分布式的關系 瀏覽:688
aic是什麼數字貨幣 瀏覽:813
算力合約計算器 瀏覽:381
數字貨幣交易量大的時候 瀏覽:515
東經北緯農業區塊鏈6 瀏覽:825
股權區塊鏈應用6 瀏覽:545
amd4808g的挖礦算力 瀏覽:396
libra系的數字貨幣 瀏覽:239
stratum礦池通訊協議 瀏覽:614
礦工加入礦池一起挖幣 瀏覽:549
最近幾張成長最多的數字貨幣 瀏覽:949
微信里的錢算數字貨幣嗎 瀏覽:644
那裡還搞區塊鏈 瀏覽:40
區塊鏈產業上市 瀏覽:740
區塊鏈大賽含金量 瀏覽:478
大家區塊鏈互動百科 瀏覽:946
全世界區塊鏈上市 瀏覽:439
恆銀金融數字貨幣 瀏覽:679