stratum協議挖礦
❶ 如何使用樹莓派CPU挖礦
用cpu挖礦:
CPU 挖礦的命令是:minerd.exe -a scrypt -o stratum+tcp://60.190.233.166:9327 -u 錢包地址 -p X -t 8 -s 15pause其中 -t 8 為使用的核心數! 其它參數沒必要改,對核心也沒有那麼多要求。
要是不需要用電腦, 只要改成比實際核心大就成了。不一定4核就一定得是4. 6 、8 一樣能用。只是每個進程的速度下降而以。總體速度完全一樣。
還有 這個參數改的是對系統的佔用率而不是真的物理核心佔用。 也就是說,是4核系統,要是改成2,並不是100%的佔用2個核心,而是50%系統CPU資源佔用;
順便推薦一個正在挖的礦池地址 stratum+tcp://60.190.233.166:9327
一般的池子默認都是收2%,國內幾個能找到的池子都收3-3.5%, 發現這個池子。
❷ 狗狗幣DOGE怎麼挖,買狗狗幣未來可以上漲嗎
狗狗幣DOGE怎麼挖,買狗狗幣未來可以上漲嗎?去年年底的時候出現了一種新的山寨幣——狗幣。目前狗幣已經穩居山寨幣第二位,僅次於萊特幣。那麼如果挖到狗幣呢?今天小編就來給大家分享一下我的狗幣挖礦經驗。
下載狗幣錢包,一般在狗幣官方網站上面就有,下載好狗幣錢包之後,安裝狗幣錢包,然後設置顯示語言為中文。
下載狗幣挖礦軟體,具體挖礦軟體大家可以在網路裡面搜索「cudaminer-2014-02-09」,這個軟體。具體針對的顯卡不同,挖礦軟體也不相同。而且還分 CPU 挖礦和 GPU 挖礦。由於我目前試用的是英偉達的顯卡,所以我們這里用英偉達的顯卡作為測試。
將你下載好的挖礦軟體解壓縮之後,根據你的電腦是64位還是32位選擇不同的版本,然後將挖礦軟體復制到如下目錄:C:\Users\你的用戶名\AppData\Roaming\DogeCoin文件夾中,具體如下圖所示:
選擇礦池,這里我們推薦使用 dogepool 礦池,進入下圖中顯示的地址,注冊你的帳號,然後建立你的礦工。
注冊成功之後,登錄帳號,創建你的礦工。點擊右上角你的用戶名,然後在下拉菜單中選擇「My Works」。在頁面底部,找到「Add a New Worker」然後輸入你要創建的礦工和密碼。如下圖所示:
注冊好礦工之後,我們開始配置文件,打開C:\Users\你的用戶名\AppData\Roaming\DogeCoin文件夾,然後在裡面新建文本文檔,添加如下內容:rpcuser=dogerpcpassword=wowaddnode=162.243.113.110addnode=146.185.181.114rpcport=22555server=1daemon=1然後保存文件為 Dogecoin.conf。
再新建一個文本文檔,然後,添加如下內容:MineWithAMDGPU.bat./cgminer –scrypt -o stratum+tcp://dogepool.pw:3333 -u USERNAME.WORKER -p PASSWORDMineWithNvidiaGPU.batcudaminer.exe -o stratum+tcp://dogepool.pw:3333 -O USERNAME.WORKER:PASSWORDMineWithCPU.batminerd -a scrypt -t 4 -s 6 -o stratum+tcp://dogepool.pw:3333 -O USERNAME.WORKER:PASSWORD修改裡面加粗的部分,其中 USERNAME.WORKER 為你在第五步裡面注冊的礦工,PASSWORD 為你的密碼。保存上述文本為 miner.bat 文件。
開始挖礦。雙擊運行 miner.bat 文件,運行結果如下圖的話,則說明你成功了。現在就享受你的狗幣挖礦吧。
❸ 請教「stratum from pool 0 requested work restart」是什麼意思
挖過礦的朋友都有這樣的煩惱,挖機有時挖著挖著就停工了,非要人去啟動一下,這可不能最大線度的發揮礦機的效率,本工具通過對顯卡的監視來判斷礦機是否工作,發現不工作自動重啟挖機,實現無人值守的挖礦,具體配置如下。
一、下載文件:
二、挖礦狗的程序說明
1、挖礦狗有三個文件,proDogMine.exe、cgminer.bat、cmDeep.bat;其中 proDogMine.exe是挖礦狗主程序,兩個批處理文件是挖礦批處理
2、下載礦機cgminer,挖礦狗只支持cgminer礦機不支持guiminer, 這是網上找的礦機地址:http://kuai.xunlei.com/d/LRRLYZZLTEXH
3、配置兩個挖礦批處理,兩個文件的配置過程一樣,之所以放兩個文件是考慮主備用礦池;用記事本打開cgminer.bat文件有三行如下:
------------------------------------------------------------------------------
cd F:\cgminer-2.11.3-win32
f:
cgminer -o http://btcguild.com:8332 -u xxxx -p xxxx
-------------------------------------------------------------------------------
1)把第一行cd後的路徑改成自己電腦上,剛下載的礦機路徑,注CD後要有一個空格(我的礦機放在F:\cgminer-2.11.3-win32)
2)第二行要輸入礦機目錄所在的盤(就是路徑中的盤符),如我的礦機放在F盤就輸入 F:
3)第三行是礦機的啟動配置,如果你用的是 http://btcguild.com 礦池,只要修改xxxx處, -u 後的是用戶名, -p 後而是密碼,如果你是在 http://deepbit.net 注冊的則要把 -o 後改成http://deepbit.net:8332,註:-o -u -p 後都要有空格分開。
4)cmDeep.bat 文件的配置可以和cgminer.bat一樣,當然你也可以把他改成另一個礦池,比如一個用http://btcguild.com:8332一個用http://deepbit.net:8332,挖礦狗每次重啟會調用不同的文件,這樣如果是因為挖池引起不能挖礦就可以自動切換礦池。
4、啟動礦狗監控程序:proDogMine.exe 界面如下圖:
1)程序啟動時如果提示「打開庫正常」,說明顯卡驅動載入沒有問題可以使用(本程序只針對ati顯卡其它顯卡沒測試)
2)判斷間隔:單位是毫秒,默認是半分鍾判斷一次即30000,可以不設置
3)點「啟動」挖礦狗會自動啟動挖礦批處理來完成,如果挖礦停止半分鍾後程序會重啟挖礦
4)打開就啟動:選擇這個選項每次啟動挖礦狗自動啟動監控,該選項和開機自啟動配合可以實現開機采礦的功能(把探礦狗的快捷鍵拉入Windows的啟動組可實現開機自啟動)。
如果程序給你有幫助不妨捐助一下小弟:
❹ 比特比怎樣挖
步驟一、注冊賬號以及賬號設置
1
首先,我們需要找一個操作方便產出穩定的比特幣礦池,然後通過挖礦客戶端軟體連接到指定的伺服器上挖礦。這里以「BTC Guild」網站為例,先打開這個網站,點擊左邊的用戶注冊。注冊過程比較簡單,輸入英文用戶名,密碼和確認密碼即可,如圖所示
2
注冊成功之後,我們會在網頁上看到一條這樣的信息「Your account has been successfully registered and logged in!」,意思是注冊成功並已登錄,如圖所示
3
我們點擊左上角的「Dashboard」按鈕,可以看到賬戶的整個監控狀態,如圖所示
註:在這個監控儀表盤中我們最為關心的是「Total Earnings」,這就是我們當前賬戶所掙的比特幣。以後只要我們打開網站,進入監控儀表盤就可以看到自己賬戶的相關信息了。
4
接下來請點擊頁面導航欄中的「Settings」。在設置頁面中,我們可以設置電子郵件地,比特錢包地址,更改密碼等,如圖所示
5
如果在帳戶中設置電子郵件地址,日後要是忘記密碼或者被盜的情況下,可以通過設置的電子郵件來恢復密碼。首先在「Email Address」一欄輸入我們的常用的電子郵件地,然後點擊「Change」按鈕,如圖所示
6
接下來頁面中會顯示一封確認郵件已經發送到我們之前設置的郵件中,如圖所示
7
然後我們打開自己的電子郵箱,找到 BTC Guild 發送的郵件。點擊確認鏈接即可,之後會在頁面中顯示我們的郵箱已經成功設置,如圖所示
8
如果我們在帳戶設置中設置了電子郵件的話,我們還可以對開采礦工的行為設置郵件通知。在設置頁面上找到「Idle Warnings」一欄,點擊下拉列表,選擇想要發送郵件的時間,然後點擊右邊的「Change」按鈕即可。當我們設置10分鍾以後,如果有礦工停止開采,系統會在10分鍾後自動向我們的郵件發送一封通知郵件。收到郵件以後,我們就知道具體是那個礦工罷工了。
9
另外在設置中,我們比較關心一個是「Bitcoin Wallet」即錢包地址。這個地址可以先不用設置,等我以後真正開採到了比特幣是再填寫也不遲。
10
帳戶設置完成以後,接下來我們要對「Worker」進行設置。什麼是 Worker 呢?就是我們之後在比特幣開采客戶端上要用到的登錄礦工帳戶名。系統會默認為我們創建一個礦工名,礦工名是以我們注冊帳戶名加一個下劃線和數字組成。比如我們注冊的帳戶是XXX,那第一個礦工名就叫「XXX_1」,如圖所示
11
如果我們要設置多個礦工名的話,在「Create Worker」一欄中輸入一個數字如「2」,再點擊「Create」按鈕即可添加一個新礦工的帳戶名,如圖所示
12
在 Worker 設置頁面里,我們還可以分別對礦式帳戶的開采支付模式進行設置。Payment method,即開采支付方法。這里有二種類型可供選擇,PPS和PPLNS,區別在於開采模式和手續費上。PPS的手續費為7.5%,而PPLNS的手續為3%。系統默認為採用 PPLNS,如果要更改,請點擊 Payment method 下方的「change」按鈕。
13
另外我們還可以對開采模式的難度進行選擇,如果我們的電腦有多個顯卡GPU,或者一些專用的機器的話,可以在 Minimum Difficulty 下對分別對礦工帳戶名進行設置,如圖所示
END
步驟二、下載挖礦客戶端軟體
1
當我們注冊設置完成以後,接下來請點擊頁面導航菜單中的「Support」,我們會看到客戶端的下載鏈接。
挖礦客戶端軟體有二種類型:
BFGMiner:命令行操作界面,可直接下載。
CGMiner: 也是命令行格式操作的,不過下載步驟過於復雜。
我們這里以下載 BFGMiner 為例,點擊如圖所示下載。
2
隨後會跳轉到挖礦工具的下載頁面,挖礦工具有二種格式,一種是32位系統,另一種是64位系統。根據自己的系統位數,下載相應的工具版本,如圖所示
3
挖礦工具客戶端大小不足5M,是一個 ZIP 壓縮文件。下載完成之後,找到並打開文件。點擊滑鼠右鍵,選擇「復制」選項,如圖所示
4
這里我以粘貼提取到桌面為例,如圖所示
END
步驟三、挖礦客戶端軟體詳細設置
1
打開挖礦目錄以後,雙擊點擊打開目錄下的「bfgminer」文件,如圖所示
2
接下來來看到 BFG minier 的窗口,在 URL 處輸入礦池的地址。礦池地址可以在 BTC GUILD 的 support 頁面中看到,如 stratum.btcguild.com:3333 ,按回車鍵,如圖所示
3
然後在 Username 後輸入自己先前在 BTC GUILD 網站上設置的礦工名,按回車鍵,如圖所示
4
隨後在 password 密碼處,可任意輸入,發圖所示
5
最後就可以看到上面有很多數字在變化,表示正在挖礦了。值得注意的是如圖標注的地方表示當前機器按鈕的速率,如圖所示
6
除了開采客戶端軟體上可以看當前開採的速度,我們還可以在 BTC Guild 網站上的 「Dashboard」頁面中的「Active Worker Summary」列表中看到每上礦工開採的具體速度,如圖所示
7
如果要關閉挖礦工具,直接 X 掉即可,也可以直接按 Q 鍵退出。如果想要多開幾個的話,在 BFG miner 目錄中再打開一個挖礦工具即可。
END
步驟四、CGminger命令行客戶端軟體
1
如果真要想挖礦的話,官方是推薦我們用「CGMiner」,也就是在命令提示符下運行的。在 BTC Guild 頁面上點擊「Support」,再點擊「CGMiner」下載鏈接頁面,選擇對應系統的版本,如圖所示
2
隨後會跳轉到 CGminer 的下載頁面,點擊如圖標注的鏈接。
3
然後選擇一個 CGminer 的版本,我這里下載一個 Windows 版本為例,如圖所示
4
這里以 Windows 版的 CGMiner 為例,下載完成以後,解壓到電腦中,如圖所示
5
打開CGMiner的目錄,找到「CGMiner 」,如圖所示
6
用滑鼠雙擊「CGMiner」會彈出一個命令行窗口,提示我們輸入連接伺服器的 URL 地址。輸入「stratum.btcguild.com:3333」,按鍵盤上的回車鍵,如圖所示
7
然後提示我們輸入「Username」即礦工帳戶名,按鍵盤上的回車鍵,如圖所示
8
接著輸入「password」密碼,按鍵盤上的回車鍵,如圖所示
9
稍等片刻,當客戶端與服務在建立連接之後就會看到機器開始開采了,如圖所示
10
若要退出開采,請在窗口上按鍵盤上的「Q」鍵。
❺ TIX彩幣如何挖礦
礦池:http://tix.botpool.net/index.php?page=gettingstarted 1. 創建賬戶 注冊 點這里, 或登陸(如果你已經有賬戶了) 添加 礦工 用於給挖礦程序登陸挖礦 2. 下載挖礦軟體 【必須使用專用版CG】 TIX專用版CG下載鏈接1 TIX專用版CG下載鏈接2 3. 配置挖礦程序 使用Stratum (推薦): 礦池介面1: stratum+tcp://wk3.botpool.net:4833 礦池介面2: stratum+tcp://wk6.botpool.net:4833 礦工號: Weblogin.Worker 密碼: Worker Password 如果您使用的命令行礦工: tixminer --scrypt -o stratum+tcp://wk3.botpool.net:4833 -u Weblogin.Worker -p Worker password多台機器,你還可以考慮創建多個礦工號, 點這里 4. 創建LotteryTicket 收款地址. 打開LotteryTicket 網站.下載 LotteryTicket 錢包客戶端 生成一個新的錢包地址,並輸入到您的帳戶頁面里。 5. cgminer設置 / FAQ Scrypt readme 詳細教程(LTC教程)
❻ 魚池礦池地址
常用的國內的礦池地址: 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流出對價格的影響不是很顯著,這可以理解為一個完全的易手或主力軍的信心沒有受到礦池的很大影響。
❼ 以太坊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:
一般的礦機與礦池通訊過程就如下所示:
❽ 狗狗幣挖礦 狗狗幣怎麼挖
一、下載cpu挖礦工具 地址https://sourceforge.net/projects/cpuminer/files/
四、運行start.bat
(8)stratum協議挖礦擴展閱讀:
Dogecoin,有人稱作「狗狗幣/狗幣」,誕生於2013年12月8日,基於Scrypt演算法,是國際上用戶數僅次於比特幣的第二大虛擬貨幣。
數字貨幣是民間發起的全球通用貨幣,不屬於某個國家,是屬於全人類,具有全球轉帳速度快的優點,如幾秒內就可以把錢由國內匯到美國,且費用低廉,並且總量不會像法幣一樣隨意增發,總量相對穩定。
礦機,就是用於賺取虛擬幣的電腦,這類電腦一般有專業的挖礦晶元,多採用燒顯卡的方式工作,耗電量較大。用戶用個人電腦下載軟體然後運行特定演演算法,與遠方伺服器通訊後可得到相應虛擬幣,是獲取比特幣的方式之一。
虛擬幣是指互聯網上面的一種虛擬出來的金錢。即高科技中代替實體貨幣流通的信息流或數據流。在信息技術高速發展的今天,實體貨幣遠遠不能滿足人們的資金流動需求了。
虛擬貨幣與支票和電匯不同,虛擬貨幣不能實現的價值,不能通過銀行轉賬,目前只能流通於網路世界,虛擬貨幣是由各網路機構自行放行,沒有形成統一的發行和管理規范。
❾ 比特幣礦池的協議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是什麼意思
stratum協議是目前最常用的礦機和礦池之間的TCP通訊協議。先簡要說明挖礦的網路架構。