礦池工作原理
主要是獲得的比特幣分配模式不同:根據運營模式,常見的比特幣礦池有如下幾種:PPLNS、PPS、DGM、P2Pool等
PPLNS:(最純正的組隊挖礦)全稱Pay Per Last N Shares,意思是說「根據過去的N個股份來支付收益」,這意味著,所有的礦工一旦發現了一個區塊,大家將根據每個人自己貢獻的股份數量佔比來分配區塊中的貨幣。(share就是股份的意思)
在PPLNS模式下,運氣成份非常重要,如果礦池一天能夠發現很多個區塊,那麼大家的分紅也會非常多,如果礦池一天下來都沒有能夠發現區塊,那麼大家也就沒有任何收益。
PPS:Pay-Per-Share方式---該方式為立即為每一個share支付報酬。該支出來源於礦池現有的比特幣資金,因此可以立即取現,而不用等待區塊生成完畢或者確認。這樣可以避免礦池運營者幕後操縱。這中方法減少了礦工的風險,但將風險轉移給了礦池的運營者。運營者可以收取手續費來彌補這些風險可能造成的損失。
為了解決PPLNS那種有時候收益很高,有時候沒有收益的情況,PPS採用了新的演算法。PPS根據你的算力在礦池中的佔比,並估算了礦池每天可以獲得的礦產,給你每天基本固定的收益。
怎麼樣,有沒有感覺這就是一個穩定的工作?實際上,PPS模式的礦池為了避免虧本風險,往往會收取7%-8%的高額手續費。
DGM:Double Geometric Method. 雙幾何制. 結合了 PPLNS 和幾何獎勵類型, 使得礦池運營者能規避一部分風險. 礦池運營者在短期內收取部分挖出的貨幣, 然後在之後以正規化過的值返還給礦工,像電容充放電, 運氣好每 block 少給你點, 運氣差多給你點。
175btc:175btc的挖礦節點工作在類似比特幣區塊鏈的一種shares鏈上。由於沒有中心,所以也不會受到DoS攻擊。和其他現有的礦池技術都不一樣---每個節點工作的區塊,都包括支付給前期shares的所有者以及該節點自己的比特幣。99%的獎勵(50BTC+交易費用)會平均分給礦工,另外0.5%會獎勵給生成區塊的人。
比特幣之家網有詳細的介紹。
❷ 什麼叫質押挖礦,期待解答
❸ 比特幣礦機是什麼
比特幣挖礦機,就是用於賺取比特幣的電腦,這類電腦一般有專業的挖礦晶元,多採用燒顯卡的方式工作,耗電量較大。用戶用個人計算機下載軟體然後運行特定演算法,與遠方伺服器通訊後可得到相應比特幣,是獲取比特幣的方式之一。
挖礦實際是性能的競爭、裝備的競爭,是礦工之間比拼算力,擁有較多算力的礦工挖到比特幣的概率更大。隨著全網算力上漲,用傳統的設備(CPU、GPU)挖到比特的難度越來越大,人們開發出專門用來挖礦的晶元。晶元是礦機最核心的零件。晶元運轉的過程會產生大量的熱,為了散熱降溫,比特幣礦機一般配有散熱片和風扇。
(3)礦池工作原理擴展閱讀:
比特幣為一種虛擬的貨幣,比特幣挖礦制度為通過計算機硬體為比特幣網路開展數學運算的過程,提供服務的礦工可以得到一筆報酬,因為網路報酬依據礦工完成的任務來計算,為此挖礦的競爭十分激烈。
比特幣挖礦開始於CPU 或者GPU 這種低成本的硬體,不過隨著比特幣的流行,挖礦的過程出現較大變化。如今,挖礦活動轉移到現場可編程門陣列上來,通過優化可以實現哈希速度,這種模式的挖礦效率非常高。
❹ 以太坊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:
一般的礦機與礦池通訊過程就如下所示:
❺ 比特幣挖礦原理是什麼
比特幣挖礦就是通過挖礦節點,然後比特幣挖礦機(電腦)不斷消耗自身的算力,來換取比特幣。在比特幣系統,通過自身的演算法可以動態調整全網節點的挖礦難度,保證每過大約10分鍾,就會有一個節點挖礦成功,這時比特幣系統就會獎勵此人一定數量的比特幣。挖比特幣是一個比較復雜的過程,不過挖比特幣一般會經過這幾個步驟,分別是准備工作、找到礦池、注冊礦池賬號、礦池賬號設置、下載比特幣挖礦器(軟體)、比特幣挖礦機配置;經過以上步驟就可以挖礦了。
本條內容來源於:中國法律出版社《中華人民共和國金融法典:應用版》
❻ 全球首次關於FileCoin集群挖礦和礦池技術分享
Filecoin 自問世就備受矚目,而 Filecoin 挖掘更是一個全新的機會,礦工可以在 Filecoin 網路上存儲和檢索客戶信息直接獲利。Filecoin 是如何獎勵礦工,底層技術的工作原理是什麼?如何成為 Filecoin 礦工獲得更多利潤?
這篇文章 星鏈 核心開發工程師幣圈外星人傑克從 Filecoin 的背景,原理,底層技術,挖礦邏輯,礦場礦池等方面進行了詳細的分享,為你帶來全球首套Filecoin礦池解決方案。
01Filecoin背景
時間回溯到2017年,Filecoin在短短一小時內便募集到了1.86億美元的融資,最終總共募集到了2.57億美元,是區塊鏈 歷史 上最大規模的融資之一。在當年的融資中,Filecoin得到了紅杉資本、文科沃萊斯資本等多個知名機構的投資。Filecoin 總數為20億枚,其具體分配和價格如下:分配 & 價格
總數:20億
礦工:70%
Protocol Labs:15%
投資者:10%
Filecoin基金會:5%
成本:$0.75
獎勵:每個塊153個*$3=$459,每天1920個塊*$459=$881,280。
02
Filecoin原理
Filecoin工作方式的描述
用戶將數據文件的儲存委託給Filecoin
網路內的礦工提供儲存
礦工憑借儲存空間大小獲得獎勵
需要解決的核心問題
女巫攻擊:礦工作弊,多個節點讀取同一份存檔,或者用一份文件申領多份獎勵。解決方法 - 零知識證明在不暴露文件內容的條件下就可以證明存儲了一份文件。
解決方案 - PoRep & PoSt演算法
這兩個演算法組合使用有以下特點:
能夠證明礦工存儲了特定文件
原始文件加入礦工信息後進行編碼,證明存儲的獨特性
編碼很慢解碼很快,方式礦工作弊
編碼後的文件則為用戶的「有效存儲」
有效存儲越多生成區塊概率越大,獲取獎勵的概率越高
- PoRep
不能進行並行計算,多核、多線程技術無法提高速度
正常一份有效存儲需要計算8小時,優化後也需要2小時
一份有效存儲是32GB
佔用內存上百GB
臨時存儲達到大幾百GB,硬體要求高
- PoSt
系統每45秒抽查一次
抽到後要計算出證明並上傳,否則就要接受懲罰
對礦工的存儲穩定性、隨機讀速度等都有較高要求
03
Filecoin挖礦
打破了礦工原有的慣性思維
現有的挖礦機制的物理屬性中沒有「狀態」,挖礦 歷史 不重要
礦機等硬體插電就開始,停電就結束,轉換幣種無成本
投資礦業相當於購買相應幣種期貨期貨,相當於「做多」,隨時間慢慢收回成本
投資礦機,隨時間慢慢收回成本
Filecoin挖礦改變了礦業的金屬屬性
一層期貨變為兩層期貨
投資算力和存儲設備 - 期貨1
算力設備挖出有效存儲 - 期貨2
有效存儲隨時間推移收回成本
Filecoin挖礦改變了礦業的物理屬性
參與Filecoin挖礦需要較高的維護成本
大規模儲存的部署在技術上有難度
礦工需要在本地做文件的冗餘備份,防止無法提供證明被懲罰
需要保證文件讀寫速度的保證
需要保證網路穩定性
存儲容量擴容
04
Filecoin礦場
集群化部署
存儲
存儲的可擴容性
存儲的穩定性
存儲的安全性
存儲需要人工維護工作
計算
優化後的計算程序
計算的可擴容性
網路
網路的吞吐性
網路的穩定性
05
星鏈 提供的解決方案
礦池產品
我們對Filecoin礦池產品的實現方式有三個方向的設想:
雲算力 - 全部硬體租賃
用戶租賃計算資源,存儲資源根據挖到的有效存儲自動調整;
按租賃規模和時間收費。
礦場方案 - 全部硬體購買
提供計算型礦機,存儲型礦機和網路等硬體方案;
提供挖礦的軟體方案;
提供部署和維護服務。
礦機託管 - 買算力,租存儲
用戶購買計算型礦機,託管在我方礦場;
我方負責網路和存儲設備的接入;
按租賃存儲的規模和時間收費。
06
星鏈後續規劃
近期,星鏈礦池,進入Top礦工磅。與此同時,全方位廣泛收集用戶對於礦池的需求,調整提供服務的方式和計費方法。
星鏈負責提供Filecoin挖礦相關的硬體和軟體。
❼ 知識百科| 礦池的來源及運作原理
由於比特幣全網的運算水準在不斷的呈指數級別上漲,單個設備或少量的算力都無法在比特幣網路上獲取到比特幣網路提供的區塊獎勵。所以我們將少量算力合並聯合運作的方法,使用這種方式建立的網站便被稱作「礦池」。
在此機制中,不論個人礦工所能使用的運算力多寡,只要是透過加入礦池來參與挖礦活動,無論是否有成功挖掘出有效資料塊,皆可經由對礦池的貢獻來獲得少量比特幣獎勵,亦即多人合作挖礦,獲得的比特幣獎勵也由多人依照貢獻度分享。
例如,在四五年前,數字貨幣產業如比特幣還可以使用電腦配置來挖掘。但數字貨幣在發行總量受限的情況下,大多在設計時加入了區塊減半、提高挖礦難度來減慢數字貨幣的發行速度。
隨著礦工越來越多,全網算力也隨之增長。獎池還是這么大競爭的人變多了,小礦工再照這種單打獨斗的方式幾百年才能碰運氣挖到幣。
因此礦工們通過抱團的形式,將大家的裝備技能整合起來變成超級大算力,獲得的獎勵由這個團隊成員根據貢獻程度進行瓜分。
礦工們加入礦池對好處也由此可以看出:礦工的日收益得到了一定保障;避免了運行完整節點的麻煩,接入礦池後礦機只要進行運算,其他的運營和收益分配交給礦池來負責就好。
❽ 請問比特幣挖礦的原理是什麼
比特幣挖礦是利用計算機硬體為比特幣網路做數學計算進行交易確認和提高安全性的過程。
❾ 比特幣的挖礦的原理是什麼
比特幣挖礦的原理是,執行由人制定的、由計算機自動執行的規則 。
比特幣的發明者薩拓喜·那卡摩托(Satoshi Nakamoto,中本聰)在一開始就規定了這一規則,參與比特幣區塊鏈的人都必須無條件自動遵守。
規則的內容大致是,
將比特幣的流通數據進行打包,整理成固定大小,然後上傳到區塊鏈上進行比特幣全網同步廣播的人,就可以得到由系統獎勵的50個比特幣。
在特定條件下,這些獎勵會減半,時間大約是4年減半一次。
那麼怎麼完成這個數據的打包整理呢?
要完成這個動作的人必選先擁有必要的工具,即執行比特幣區塊鏈的軟體,還有運行該軟體的機器(一開始是電腦);然後下載保存有所有已獲得全網承認的的比特幣交易數據,這個時候你就成為了「節點」,成為了保護區塊鏈數據的一份子。
節點運行特定的數學公式,得出正確答案後才能獲取打包數據的優先權。獲得優先權的節點,誰先完成打包然後上傳到區塊鏈上,並得到其他節點的接收和認可,那系統將自動把獎勵發放到他手中。
如果打包的交易中有用戶塞給打包節點的比特幣手續費,手續費歸該節點所有。
人們覺得計算數學公式然後完成打包獲得獎勵的過程,就和在大河裡撈金沙一樣,要摒棄掉許多錯誤的答案才能找到正確的鑰匙獲取黃金,所以人們把這個過程比喻為挖礦。
所以比特幣挖礦不是真的去挖什麼玩意兒,就是用計算機不停的碰撞不停的猜,誰先猜到誰就搶得獎勵,僅此而已。
❿ 比特幣礦池的協議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協議的配合下,礦池終於可以大聲的對礦工說,讓算力來的更猛烈些吧。