轉自: 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協議的配合下,礦池終於可以大聲的對礦工說,讓算力來的更猛烈些吧。
❷ 購買的T數等於算力大小么為什麼需要有效算力持續增長
購買的T數實際上是獲得的有效算力的最大上限值,但不意味著買入即獲得有效算力。假設你購買100T,有效算力會從0開始線性增長,收益也會隨著線性增加。如果封裝了50T的數據,表明你當前的算力為50T,而非100T。
全網的有效處理持續增長,如果節點的有效處理不增長,所佔比相對就會越來越小,所分得的收益只會越來越少。舉個例子:假設節點A平均每天的有效處理增長為1T,節點B平均每天的有效處理增長為3T,到了第10天,A的有效處理為10T,B的有效處理為30T,而全網總的有效處理為200T,則兩者的收益:
A可以拿到10T/200T,即全網收益的1/20
B可以拿到30T/200T,即全網收益的3/20
❸ 區塊鏈中什麼是礦池(區塊鏈中什麼是礦池的)
什麼是礦池礦場?在全網算力提升到了一定程度後,單台機器挖到塊的概率變得非常的低。這種現象的發展,促使一些「bitcointalk」上的極客開發出一種可以將少量算力合並聯合運作的方法,使用這種方式建立的網站便被稱作「礦池」(MiningPool)。
?
礦池的收益分配主要有:PPLNS、PPS、PROP三種形式。
?
所謂的比特幣礦場就是建造一個工廠,將數十台、數千台采礦機器放在一起進行數學運算和挖掘比特幣。這涉及電力消耗問題。一個礦場的成本包含:建設成本、設備成本、維護成本網路成本、還有其他成本。
礦場跟礦池有什麼區別?礦場跟礦池都分不清楚,千萬別進場挖礦,容易被宰。總的來說,礦場就是人們為了管理方便,選擇一個電費比較低廉的地方,例如作為消納區的四川,將許多礦機放在一起進行挖礦,這個地方就是礦場。而礦池的話,實際上就是一個網路平台,它是將不同空間的礦機的算力有機結合,然後進行挖礦,提高挖礦效率,屆時挖礦得到的收益也會按一定的分配機制分配收益。要是還是不懂,那就找一個專門挖礦的礦企詳細問問,世鏈礦業就不錯,他們家在海外諸多地區都有礦場的,例如美國、俄羅斯等,網路了解清楚了再入場??
什麼是礦池?礦池是一個組隊挖礦的伺服器。比特幣每10分鍾產生一個區塊,會有千萬人競爭,而這個區塊最終只歸1個人所有,其它人都顆粒無收。你也許要挖5年才能獲得一個區塊。組隊挖礦就是,一旦隊伍里任何人獲得了一個區塊,就將區塊中的貨幣按大家的性能分給大家,這樣大家就能很快地獲得比特幣。
比特幣礦池:什麼是比特幣礦池礦池是比特幣(數字貨幣)等P2P密碼學虛擬貨幣開采所必須的基礎設施,一般是對外開放的團隊開采伺服器,其存在意義為提升比特幣開采穩定性,使礦工薪酬趨於穩定。目前全球算力較大的礦池有魚池(F2Pool)、蟻池(AntPool)、幣網(BWPool)、國池(BTCCPool)、BitFury。除了BitFury,其餘都來自中國。
隨著參與挖礦的人數越來越多,比特幣全網的算力不斷上漲,單個設備或少量的算力都很難再挖到比特幣。這時候,礦池誕生了。
比特幣礦池運作原理
礦池突破地理位置的限制,將分散在全球的礦工及礦場的算力進行聯結,一起挖礦。
礦池負責信息打包,接入進來的礦場負責競爭記賬權。
由於集合了很多礦工的算力,所以礦池的算力佔比大,挖到比特幣的概率更高。
舉例
假設100萬人參與比特幣挖礦,全網400P算力,其中90%的礦工為1P(1000T)以下的算力,如果投入一台1T礦機,將佔全網算力的40萬分之1,理論上平均每40萬個10分鍾能挖到一個區塊,也就是7.6年才能挖到一個區塊然後一次性拿到50個比特幣。
那麼,假如我再找9個擁有1T算力礦機的礦工,達成協定,我們總共10個人,其中任何一個人挖到區塊,都按照每人的算力佔比來進行平分,那麼我們就是一個整體,總共10T算力,那麼平均0.76年即可挖到一個區塊,然後算下來到我們手上的就是0.76年開採到5個比特幣,如果組織100人、1000人、1萬人甚至10萬人呢?
如果是10萬人,那麼平均100分鍾就能挖到1個區塊,作為團隊的一份子,我的收入將會趨於穩定。
這就是礦池的基本原理,即大家組隊進行比特幣開采,可以參考彩票中的合買。
當然,以上只是對礦池的基本原理和性質進行簡單的描述,實際情況會非常復雜。
礦池是一個全自動的開采平台,即礦機接入礦池——提供算力——獲得收益。
礦池挖礦所產生的比特幣獎勵會按照每個礦工貢獻算力的佔比進行分配。
相較單獨挖礦,加入礦池可以獲得更加穩定的收益。
希望這個回答對你有幫助
❹ MiningCity鏄浠涔堬紵BTCV鎬庝箞鎸栵紵
涓銆佷粈涔堟槸MiningCity錛
MiningCity鏄涓欏瑰¤錛屾棬鍦ㄥ皢閭d簺甯屾湜鍥㈢粨鑷宸辯殑鍔涢噺澧炲姞寮閲嘼tc姣旂壒甯/btcv姣旂壒甯佷繚闄╁簱鏈轟細鐨勪漢浠鑱氶泦鍦ㄤ竴璧楓侻iningCity鑷村姏浜庢墦閫犲叏鐞冩渶澶т簯綆楀姏鐭誇笟鍩庯紝鐩存帴璐涔癕C鎺橀噾涔嬪煄浜戠畻鍔涙寲鐭跨渷鏃剁渷鍔涚渷蹇
闅忕潃MC鐭誇笟鍩庡競鍙戝睍澹澶э紝Mining City 鐭挎睜宸插湪 BTC.com 鍜 Blockchain.com 涓婃帹鍑猴紝榪欐槸涓氬唴涓や釜鏈鍙椾俊浠誨拰閫忔槑鐨勭綉絝欍俠tcv_瀵規帴_a788796
浜屻佷粈涔堟槸浜戠畻鍔涙寲鐭匡紵
浜戠畻鍔涚敱澶у瀷鐭垮満鎻愪緵綆楀姏璐涔版湇鍔★紝鐢ㄦ埛鍙浠ラ氳繃璐涔扮畻鍔涘悎綰︼紝璧氬彇鐩稿簲綆楀姏鎵鎸栫殑甯佺嶏紝鑳藉熷厤闄や釜浜烘寲鐭挎墍甯︽潵鐨勭熆鍦哄緩璁俱佺熆鏈鴻劇疆銆佹寲鐭垮櫔闊崇瓑綣佺悙鐨勬ラわ紝鍙闇鍦ㄥ鉤鍙拌よ喘浜戠畻鍔涘悎綰︼紝鍗沖彲瀹炴椂寮鍚姣旂壒甯佺瓑鐭垮竵鎸栫熆銆
浜戠畻鍔涚殑浼樺娍鏄錛
1.鎸栫熆鐢佃垂姣旇嚜鐢ㄧ數渚垮疁
浜戠畻鍔涚殑鐢佃垂鍥犱負鏄澶у瀷鐭垮満鎸栫熆錛屽浗鍐呭崟浣嶇數浠蜂竴鑸鍦0.35-0.42鍏冨乏鍙籌紝瀹剁敤鐢電殑0.8鍏冧互涓婏紱MiningCity鍝堣惃鍏嬫柉鍧︾熆鍦虹敤鐢靛潎浠蜂竴姣涘氫竴搴︼紱鐩稿瑰崟浣嶇敤鐢典究瀹3鍊嶏紝鍗犳嵁浜嗚緝澶х殑浼樺娍錛
2.瀵規瘮鑷鎸栫熆錛屼簯綆楀姏鏀剁泭鏇寸ǔ瀹
浜戠畻鍔涚殑鏀剁泭鍙戞斁姣忓ぉ閮戒細鎸塒PS鏀剁泭瀹氭椂緇欎粯錛岃繖鏈熼棿浣犳棤闇鎷呭績鍗曚竴鐭挎満闂棰樹互鍙婂仠鐢電瓑鍏朵粬鍋滄満椋庨櫓閫犳垚鐨勬敹鐩婃崯澶憋紝鎵浠ヤ簯綆楀姏鐨勬敹鐩婂規瘮浼犵粺鎸栫熆鏂瑰紡錛屾敹鐩婅佺ǔ瀹氱殑澶氾紱
3錛氭棤闇鑷宸辨搷浣滄寲鐭匡紝鐭挎満鏃犻渶緇存姢錛屽潗浜琚鍔ㄦ敹鍏
鎸栫熆鐭挎満鏄24灝忔椂婊¤礋鑽瘋繍琛岋紝鑷鎸栫熆寰堝規槗鍙楀埌綆楀姏鏉挎崯鍧忋佺熆鏈轟腑姣掋佺數鍔涙晠闅滅瓑浼犵粺鐭垮伐鏈澶寸棝鐨勭熆鏈虹淮鎶ら棶棰樸備簯綆楀姏鎸栫熆鐨勮瘽錛岃繖浜涘氨鏃犻渶鎷呭績錛屽洜涓轟綘涔扮殑鍙鏄綆楀姏鍚堢害鏀剁泭錛屽叾浠栭棶棰樻偍閮芥棤闇鎷呭績銆
MiningCity涓瀹剁姽澶浜虹殑鐭垮満錛屾寲涓や釜甯侊紝涓鏄痓tc姣旂壒甯侊紝涓鏄痓tcV姣旂壒甯佷繚闄╁簱錛堝牚姣10騫村墠鐨勬瘮鐗瑰竵閲囩熆鑹鏈猴紝鑷2019.12.21錛1涓婄嚎娑ㄥ箙20鍊嶏級2020鏁璇鋒妸鎻
涓夈佷粈涔堟槸BTCV姣旂壒甯佷繚闄╁簱錛
閫氳繃寮哄寲鐨勯槻鐩楁妧鏈鎴愪負浠峰艱串鈃忕殑鎵嬫點傦紙浣跨敤涓変釜瀵嗛掗鍙紜淇24灝忔椂鍐呭嶅師鍙鑳界殑浜ゆ槗錛屼笁涓瀵嗛掗鍒嗗埆涓猴細鏃ュ父璁塊棶鐨勫瘑閽ャ佹仮澶嶄氦鏄撶殑瀵嗛掗銆佹彁鍗囦氦鏄撻熷害鐨勫瘑閽ワ級涓庢瘮鐗瑰竵瀹屽叏鐩稿悓錛孊TCV鐨勬繪暟閲忎負 21,000,000 鏋氥
濡傚浘紺猴細鑷20191217鍒涗笘鍖哄潡涔嬪悗鐨4騫村崐鏄鎸栫熆綰㈠埄鏈
錛堝傚浘紺猴細鑷20191217鍒涗笘鍖哄潡涔嬪悗鐨4騫村崐鏄鎸栫熆綰㈠埄鏈燂級
鐪熷疄瀹炰綋鐭挎満綆楀姏鍚堢害鎸栫熆錛24灝忔椂鎸栫熆鍙瀹炲湴鑰冨療錛涗竴嬈℃姇璧勬寲鐭誇笁騫達紱澶╁ぉ鎻愰噾搴揵tcv
🉑鍚屾椂鍙戣搗澶氱瑪鎻愮幇
🉑姣忓ぉ鎻愮幇N嬈
🉑0.0001btc璧
🉑鍒拌處鐏板父蹇
🉑騫沖彴0鍏嬫墸
鍥涖丅TCV鎬庝箞鎸栵紵鏀剁泭鎬庝箞鏍
渚濅釜浜洪庨櫓鍠滃ソ錛宐tc涓巄tcv🉑浠ユ寲涓縐嶏紝涔熷彲浠ヤ袱涓涓騫舵寲
鐨嗗洓涓閰嶅(鎴栧叾鏁存暟鍊) 瀵瑰簲綆楀姏(綆楀姏瓚婂ぇ鎸栧竵瓚婂)
500錛1000錛2000錛3500錛 5TH 10TH 20TH 35TH
⚒MiningCity鍥涚岯TCV鎸栫熆鍚堢害錛屼換鍚涢夋嫨
500緹庨噾(3550鍏)錛5T綆楀姏錛屾瘡澶╂寲0.1涓猙tcv錛屼笁騫存寲110涓猙tcv錛
1000緹庨噾(7100鍏)錛10T綆楀姏錛屾瘡澶╂寲0.2涓猙tcv錛屼笁騫存寲220涓猙tcv錛
2000緹庨噾(14200鍏)錛20T綆楀姏錛屾瘡澶╂寲0.4涓猙tcv錛屼笁騫存寲440涓猙tcv錛
3500緹庨噾(24850鍏)錛35T綆楀姏錛屾瘡澶╂寲0.7涓猙tcv錛屼笁騫存寲770涓猙tcv錛
姣忎喚鍚堢害鍙浠ユ寲3騫達紒鍙浠ヨよ喘澶氫喚錛岀畻鍔涜秺澶ф寲甯佽秺澶氾紒
涓夊勾鍐呮瘮鐗瑰竵淇濋櫓搴撲環鏍間笉鍙橈紝鍒╂鼎4鍊嶃
涓夊勾鍐呮瘮鐗瑰竵淇濋櫓搴撲環鏍兼定5鍊嶏紝鍒╂鼎20鍊嶃
涓夊勾鍐呮瘮鐗瑰竵淇濋櫓搴撲環鏍兼定10鍊嶏紝鍒╂鼎40鍊嶃
褰撶劧錛屾偍涔熷彲浠ラ夋嫨璁よ喘BTC姣旂壒甯侀噰鐭垮悎綰︺傞壌浜庢枃絝犵瘒騫咃紝鏈鏂囦笉鍐嶈禈榪般