A. 以太坊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:
一般的礦機與礦池通訊過程就如下所示:
B. 電腦挖礦對電腦有什麼要求嗎怎麼挖的快
下載輕松礦工
注冊以太錢包
復制錢包地址到挖礦軟體 開始挖礦
挖到的幣 拿到交易市場可以賣掉
就這么簡單
C. 魚池礦池怎麼了
魚池礦池不穩定,有可能會被關停。
1、魚池,2013年4月在北京成立,是全球領先、中國最早的比特幣礦場;魚池已發展成為全球最大的比特幣、萊特幣、以太幣、零幣綜合數字貨幣礦池;礦池技術持續保持領先,收益公開透明,採用獨創架構,有效防範DDoS攻擊。隨著整個比特幣網路的計算水平呈指數級上升,單個設備或少量算力無法在比特幣網路上獲得比特幣網路提供的區塊獎勵。
2、在全網算力提升到一定程度後,獲得獎勵的低概率促使一些「比特幣」上的極客開發了一種可以結合少量算力進行聯合操作的方法。以這種方式建立的網站稱為「礦池」。
拓展資料:
1)礦池是比特幣挖礦的全網,統稱為礦池。整個礦池分為很多礦池,魚池就是其中之一。魚池通過購買實體礦機接入礦池後,大家通過算力一起挖礦。挖出硬幣後,將分發給每個人。付出多少算力才能得到相應數量的幣;
礦池的存在,降低了比特幣等虛擬數字貨幣的挖礦難度,降低了挖礦門檻,真正2)礦池實現了人人都可以參與的比特幣挖礦理念。但它的弊端也非常明顯,因為算力連接到礦池。作為一個礦池,它將掌握極其龐大的算力資源。在比特幣的世界裡,算力代表記賬權,算力就是一切。如果單個礦池的算力達到50%以上,就很容易對比特幣等類似的虛擬數字貨幣發起51%的攻擊,後果非常可怕。
3)礦池可以讓剩餘49%算力的礦池失效,瞬間退出競爭,破產。礦池算力超過50%。如果發起51%的攻擊,很容易占據全網所有有效算力。壟斷記賬權、雙重支付等行為可以通過51%攻擊進行,一筆錢可以多次使用,這將直接破壞比特幣的信用體系,使其信用消失。壟斷分配權,由於單個礦池(或多礦池聯盟)通過51%攻擊占據全網算力,可快速排擠剩餘礦池,使其倒閉。由於沒有競爭,礦池可以自行分配收入,向礦工收取高額手續費等高額稅費。
D. 有誰了解礦池一般採用哪種收益模式不同收益模式的區別是什麼
個人怎樣選擇礦池?
礦池費用
目前礦池的分配方式主要有:PPS、PPS+、FPPS、PPLNS以及SOLO模式。
在相應分配方式上,礦池以一定的費率收取礦工部分收益作為礦池費用。
PPS:收益穩定,只要礦機正常工作就有收益,收益和提交的工作量有關,和礦池幸運值、交易手續費無關。
PPS+ (Pay Per Share Plus) 結算方式是對傳統 PPS 結算方式的一種改進,在傳統的 PPS 結算方式基礎上,增加了礦工費的分配。
FPPS:Full PPS(完全PPS),對包括交易費在內的全部區塊收益進行分配。 相比傳統的PPS結算模式(不分配交易費)可提升 10%-20% 左右收益。
PPLNS (Pay Per Last N Shares) 結算方式下,礦池每發現有效的區塊, 根據過去 N 個難度周期中用戶算力占礦池算力的比例進行分配。 這種方式下礦工的收益和礦池的出塊相關,礦工收益不穩定,但長期平均收益更高。
SOLO 結算方式下,全部收益分配給挖出該塊的礦工,其他礦工不參與分配,礦池收取極少手續費,用於礦池運營和維護。
個人如何選擇礦池:
1.首先,考慮能連上的礦池;
2.其次,選擇你的分配模式,追求穩定還是高收益。一般建議選擇PPS或者大礦池的PPLNS;
3.最後,根據分配模式選擇支持的礦池,從中選擇連接速度快的,收益好的;
4.另外,選擇1-2個備用礦池,以供不時之需。
E. 什麼是礦池
礦池指的是:
由於比特幣全網的運算水準在不斷的呈指數級別上漲,單個設備或少量的算力都無法在比特幣網路上獲取到比特幣網路提供的區塊獎勵。
在全網算力提升到了一定程度後,過低的獲取獎勵的概率,促使一些「bitcointalk」上的極客開發出一種可以將少量算力合並聯合運作的方法,使用這種方式建立的網站便被稱作「礦池」。
(5)礦池難度調整擴展閱讀:
礦池的存在降低了比特幣等虛擬數字貨幣開採的難度,降低了開采門檻,真正實現了人人皆可參與的比特幣挖礦理念。
但其弊端也非常明顯,因為算力接入礦池,作為礦池來說,將掌握極其龐大的算力資源,在比特幣世界中,算力代表著記賬權,算力即是一切,如果單家礦池算力達到50%以上,將可以輕易對比特幣等類似的虛擬數字貨幣發動51%攻擊,其後果是非常可怕的:
礦池可使掌握剩餘49%算力的礦池顆粒無收,瞬間退出競爭並倒閉破產,礦池算力超過50%以上,如果發動51%攻擊,將能輕易占據全網全部有效算力。
F. 如何計算挖礦每天所獲得的收益
雖然每個人擁有的礦機數量不同,想算出自己的每日收益,其實很簡單,優質的比特幣站點都有相關的軟體幫你計算出最終收益,但是你想知道收益的產出原理嗎?
那麼各位要先明白挖礦的基本信息:
區塊·獎勵(BlockReward): 每挖出一個新的區塊,系統會給礦工的獎勵比特幣,目前區塊的獎勵是6.25比特幣。
算力(Hashrate): 算力(也就是哈希值碰撞)是比特幣網路處理能力的度量單位。即為礦機計算哈希函數輸出的速度。比特幣網路必須為了安全目的而進行密集的數學和加密相關操作。
例如,當網路達到10Th/s的哈希率時,意味著它可以每秒進行10萬億次計算。
難度(Difficulty): 比特幣系統的難度是動態調整的,每挖2016個塊便會做出一次調整,調整的依據是前面2016個塊的出塊時間,如果前一個周期平均出塊時間小於10分鍾,便會加大難度,大於10分鍾,則減小難度,目的是為了保證系統穩定的每過10分鍾產出一個塊,所以難度調整的時間大概是2周(2016* 10 分鍾)
比特幣網路初始難度定義為1,即Difficulty=1,它所表示的意思是,比特幣網路剛開始運行的時候,每進行2^48/(2^16-1)≈2^32次Hash計算,理論上能挖出一個區塊。
隨著挖礦算力的提升,比特幣挖礦難度在不斷提升,當挖礦難度為D時,理論上挖出一個新區塊需要進行D*2^32次哈希運算。
礦工的算力為H(單位為hash/s),他每天(24小時)的幣產出為P,挖礦難度為D,系統獎勵為R,那麼:
難度X6.25獎勵(R)X時間=比特幣產出
P=H×x6.25×(24×60×60)D×232
數學不好的小夥伴不要慌,可以直接通過相關網站查詢到當天全網算力難度,編寫此文章時當天難度為【16.95T】
假設礦工算力為1TH/s(即10^12H/s),
當前的難度=16.947.802.333.946(16.95T)
加上系統當前的區塊獎勵=6.25比特幣,
計算可以得出1T每天(24小時)
可以獲得收益=0.00000742BTC
當然,這只是一個最基礎的PPS收益演算法,除了區塊獎勵外,還有打包交易的曠工費,這部分的計算和礦池的結算方式有所相關。
礦池還有多種結算方式。以上介紹的是最為基礎的結算方式PPS(PayPer Share)。根據礦工提交的有效工作量來結算收益。
目前比特幣礦池主要的結算還有FPPS和PPS+等等,可以讓你在基礎上獲得而外的獎勵。
目前基本上收益方式多為選擇PPS+結算的礦工,他們與礦池的關系相當於打工者與公司的關系,礦工的收益不受礦池幸運值波動的影響。不管礦池幸運值如何,PPS結算方式下,只要礦工算力、挖礦難度、系統獎勵確定了,礦工的收益就是確定的,拿穩定的「工資」。
數學不太好的,實在看不懂的小夥伴。記得關注今日礦工,一起研究挖礦小樂趣。
G. 以太坊礦池有哪些
1. Ethpool(Ethermine)ETHpool.org是第一個官方的以太坊礦池。此前由於工作量超負荷,該礦池不接受新用戶,只接受老客戶。因此,許多新礦工被迫轉向單獨挖礦,因為那時還沒有其他可替代的礦池。在Ethpool上挖礦,必須安裝以太坊的C++ETH版本。? 市場佔有率:23%? 當前礦池算力:399.1GH / s? 挖礦獎勵結算模式:PPLNS? 費率:1.0%? 網址:https://ethpool.org/2. NanopoolNanopool雖然是新礦池,但已經是目前以太坊上最大的礦池之一。份額(Share)的復雜性是靜態的,相當於50億。在該礦池上進行挖礦的最低哈希率僅為5 Mhesh / s。此外,此礦池根據PPLNS方案計算挖礦獎勵,其中N是最近10分鍾內所有接受的份額。(註:PPLNS全稱Pay Per Last N Shares,即根據最近的N個股份來支付收益。)Nanopool的伺服器遍及全球,官網頁面簡潔直觀。但是這個礦池的最低支付門檻相對較高,建議連接3個伺服器,避免等待長時間的付款期。? 市場佔有率:8%? 當前礦池算力:16,176.3GH / s? 挖礦獎勵結算模式:PPLNS? 費用:1.0%? 網址:https://eth.nanopool.org/3. F2Pool(魚池)F2Pool是2019年最受歡迎的礦池之一。F2pool的伺服器主要位於中國、其他亞洲國家和美國。F2pool.com因其開放性,可訪問性和易用性而備受礦工喜愛。礦工在F2Pool上注冊後才可以挖礦。以太坊挖礦需要一個顯卡礦機。 ? 市場佔有率:10%? 當前礦池算力:19.38TH / s? 挖礦獎勵結算模式:PPS+? 費率:2.5%? 網址:https://www.f2pool.com/4. Sparkpool(星火礦池)在ETH,GRIN和BEAM生態系統中,最強大的中國資源庫是Sparkpool,它是與全球礦工合作的開放資源。在挖礦之前,你需要配置礦機。基於AMD GPU處理器的以太坊挖礦收益更高。它需要快閃記憶體改進的BIOS並調整MSI Afterburner或AMD驅動程序設置中的超頻選項。 ? 市場佔有率:29%? 當前礦池算力:56.96TH / s? 挖礦獎勵結算模式:PPS +? 費用:1.0%? 網址:https://www.sparkpool.com/5. Dwarfpool在DwarfPool,礦工的信用等級分為RBPPS或HBPPS。使用RBPPS,只要有A值,你就可以獲得對應獎勵(死塊除外)。HBPPS計提演算法是基於時間的股份支付。每小時計算一次所有推廣和發現的區塊。該礦池具有經過優化的最佳挖礦引擎,拒絕率較低,透明且詳細的統計信息。每小時進行一次支付結算,伺服器遍布世界各地。? 市場佔有率:6%? 當前礦池算力:2377109 MH / s? 挖礦獎勵結算模式:HBPPS? 費用:1.0%? 網址:https://dwarfpool.com/6. MiningPoolHubMiningPoolHub允許礦工通過挖礦獲利,並根據不同支付系統的匯率來交易數字貨幣。該礦池使用PPLNS演算法確定用戶獎勵。提款手續費為0.9%。? 市場份額:3.7%? 當前礦池算力:7.05T / s? 挖礦獎勵類型:PPLNS? 費用:1.0%?
H. 比特幣普通電腦挖礦不要經過礦池要怎麼挖
全網的算力以及出塊情況可以到淘比特http://www.taobtc.net/看
1.首先作為節點礦池,礦池建設的本身需要添加節點文件,顯示在比特幣錢包下方的連接數,增加節點後連接數能達到幾十個連接甚至更多,要看你添加的節點有多少,有效減少無效的share。
2.礦工需要固定挖礦設備的算力難度,要怎麼做呢?在你的挖礦設備啟動bat裡面設置即可。
比如你的單個挖礦設備是10g,你就在bat文件里,用戶名(既錢包地址)後面加/1000+10。比如我的bat里-/1000+10-p1,這是什麼意思呢?意思就是說你的這個設備是10g算力,你在p2pool礦池挖礦使用固定難度10g的難度。如果你是1g的設備就在後面寫/1000+1,這樣難度就固定了,有效提高了設備效率。
I. 比特幣礦池的協議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協議的配合下,礦池終於可以大聲的對礦工說,讓算力來的更猛烈些吧。
J. 現在比特幣礦池收益一天比一天少是什麼原因
因為在比特幣總數量(2100萬枚)固定的前提下,單台礦機挖礦收益和全行業挖礦的礦機數量成反比:全行業挖礦的礦機數量增加,全網算力(是行業內所有礦機算力的總和)增加,挖礦難度增大,挖礦速度變慢,單台礦機挖礦收益降低。
比特幣(Bitcoin)的概念最初由中本聰在2008年11月1日提出,並於2009年1月3日正式誕生 。根據中本聰的思路設計發布的開源軟體以及建構其上的P2P網路。比特幣是一種P2P形式的數字貨幣。比特幣的交易記錄公開透明。點對點的傳輸意味著一個去中心化的支付系統。