
編者按:區塊鏈涉及到的技術很多,從互聯網底層到不明覺厲的密碼學,可是往往關注幣價者多而研究技術的人少。牛市的時候,大家為了炒幣也會努力學習,熊市的時候,反正也沒啥事,我覺得可以更加努力學習。作為一個文科生,我當然會有很多理科生看起來覺得很白痴的問題。作為一個記者,我不難找到業內懂的人用人話給我解釋,而且他們往往不會當面嫌棄我。
這是小明學習筆記第六期,如果有其他有趣問題,歡迎投稿和提問。
---------這是華麗麗的正文分割線---------
回顧過往,小明學習筆記已經從週更變成月更,這一篇距離上一篇可以說是季更了。由於我現在的工作主要是編輯了,所以一般是帶著記者出去採訪和寫稿,很少自己單獨寫稿,所以學習筆記的更新估計也是綿綿無絕期。
這期要分享的是礦池,首先要感謝xDAG 的核心開發者謝銳,同時他也是xDAG 官方挖礦軟件的設計者,年前給我科普了很多這方面的知識。
我最早了解這個行業是在2017 年採訪ViaBTC微比特,當時楊海坡總結,礦池就像礦工的聯盟,把大家聚起來挖礦。這個確實已經是礦池非常本質而且通俗的解釋。
我們都知道,隨著比特幣而誕生的PoW 共識機制,其挖礦的過程本質就是在做隨機數碰撞,誰猜中者這個隨機數誰就可以獲得記賬權、成為這輪的出塊人。因為是亂猜,所以單位時間內猜的次數越多,猜中的概率就越大。
隨著專業礦機等設備出現,比特幣、萊特幣等幣種全網挖礦算力增加,大部分的礦工靠自己solo挖礦已經很難挖到幣,礦池應運而生。礦池就像一個聯盟,把這些零散的礦工甚至是礦場集合起來一起挖礦,按算力佔比給礦工收益,二級標題二級標題
礦池究竟把什麼任務給到礦工?
神魚也曾經總結,礦池其實就是在分派任務給大家算。不過,我想知道得更細節,就是礦工們究竟在算什麼?礦池又是怎麼分配任務的呢?
《淺談礦池和礦場(礦池篇)》這篇文章舉了個例子說明挖礦的過程:“礦池將區塊難度分成很多難度更小的任務下發給礦工計算,礦工完成一個任務後將結果提交給礦池,叫提交一個share。假設全網難度要求n 的值為100,即前100 個比特位為0,礦池可能會給礦工分配一個任務,要求前30 位為0,然後再從所有提交的任務中,尋找有沒有湊巧前100 位為0 的目標值。”
謝銳告訴我,理論上,礦池給礦工分配任務的方式可以有兩種:
第一種,礦池只是一個節點,打包交易的還是礦工。礦池會把任務的完整信息給到到礦工,礦工打包交易、然後廣播。礦工知道完整信息,但是需要填的東西比較多,簽名也是礦工籤的。
第二種礦池節點直接打包,給到礦工的是結果的中間狀態,或者說非完整信息,礦工填完他要填的東西。塊最後的組合由礦池來做。礦工把nounce 發給礦池,簽名是礦池。
“唯一不會變的是,你接入這個礦池的數據同步方式。”
看完上面兩種方式,顯然大部分商業運營礦池會選擇第二種,挖礦收益的分配就是按照簽名。如果我既是礦工也是礦池主,兩種沒有區別,大可選擇第一種。
看到上面說的nounce 值,你大概會有點懵逼,這其實就是我們常說的PoW 過程中要碰撞的那個隨機數,下面還會解釋。
圖片描述圖片描述
二級標題
二級標題
再說說礦機的抗AISC 屬性
這篇文章
這篇文章這篇文章。
為什麼會有冗餘?舉個假設性的例子(不准確但有助理解),比如5+5 ,FPGA 可能沒有5 這個概念,就要變成1+1+1+1+1,ASIC就可以直接算5+5。這讓我想起王嘉平接受Odaily採訪時說過一句話:在計算機領域,靈活性/通用和高效往往是衝突的。
“ASIC 最強的就是並行計算,FPGA稍微差一點。其實本質上沒有抗ASIC,只能讓它反推的每一步更難,比如要求把東西放在內存裡算,比如需要算方差,需要把每個數據都放進內存,GPU 到FPGA 到ASIC,(ASIC)需要的顯存芯片可能是GPU 的100 倍。(要不要研發某個幣種的AISIC 礦機)只看成本和收益。”通俗來說,可以理解為研發一台挖以太坊的ASIC 礦機比研發比特幣ASIC 礦機更難,而且同樣時間下研發出來的芯片,對比起普通CPU/GPU 效果提升不明顯。比特幣可能是提升了成千上萬倍,以太可能提升了幾倍到幾十倍,效果劃不來。
類似的分析也可在公開資料看到,比如耳朵財經的這段話:
“Ethereum使用了Ethash算法,前身為Dagger算法(Vitailk發明),其目的是為了抵制ASIC礦機。如何抵制ASIC礦機呢?通過將挖礦和內存帶寬相捆綁,即降低其他硬件的運算優勢,從而達到挖礦設備平等這一理念。
Ethash算法沒有阻擋ASIC礦機的出現,只是拖延了出現的時間。
綁定內存帶寬意味著可以通過提高內存帶寬速度來提高算力,或者在相同內存帶寬速度下降低功耗,只不過目前內存帶寬價格過高以及ETH價格過低,從成本上考慮,ASIC礦機相較GPU來得不夠划算。
Litecoin使用的是密碼學家兼程序員Colin Percival於2009年發表的論文Stronger Key Derivation via Sequential Memory-hard Functions上所發明的scrypt算法。原理和Ethash較為相似,都是提高挖礦時內存的使用成本,延緩ASIC礦機的出現。
2014年,Zeusminer研發出了專門針對scrypt算法的ASIC礦機。這也說明通過綁定某一硬件(如內存)從而抬高挖取的使用成本是沒有辦法完全杜絕ASIC礦機。 ”
現在大部分號稱抗ASIC 的挖礦算法,都是將內存和計算捆綁。
以太中文網還整理了一下不同PoW 算法部署ASIC 之後挖礦效率增長倍數:
SHA256 約1000倍
Scrypt和NeoScrypt 約1000倍
X11和X16R 約1000倍
Equihash 約100倍
Cuckoo Cycle 約100倍
二級標題
二級標題
礦池的收益分配模式
最後簡單提下礦池的收益分配模式,其實這個已經有很多文章解釋過。礦池的分配模式大類有兩種:
第一種是實際出塊情況分幣:時間週期內,礦池挖到多少塊,就按照算力比例分配所得挖礦收益。
這種方式的時間週期一般按挖出塊的時間為止,即兩次挖到塊的時間之內的算力分佈比例分配收益;也可以每天結算,如果你所在的礦池爆了好幾個塊,當天的收益就很高,如果礦池一天都沒有挖到什麼塊,那麼所有人今天都沒有收益。這稱為PPLNS(Pay Per Last N Shares)。
第二種即按理論值分幣:時間週期內(一般是一天),理論上礦池能得到多少收益,按照算力比例給礦工分錢,相比上一種穩定。
借用這篇文章裡的一個例子:假如在某10 分鐘,你為某礦池提供了1 T 算力,當時該礦池算力共為100 T,全網算力1000 T,比特幣網絡平均每10 分鐘出一個塊,出塊獎勵為12.5 個BTC,礦池佔全網總算力的十分之一,礦池收益期望值為1.25 個BTC,你的算力佔礦池算力的百分之一,無論礦池是否挖到區塊,你的收益都是理論收益1.25 BTC。這種稱為PPS(Pay Per Share)。由於PPS 模式下,礦池承擔風險,所以費用的比率會更高。
大概在2018 年8 月,魚池上線了新的ETH礦池,採用PPS+分配模式,跟PPS 有點不同,手續費2.5%,這種模式是固定塊收益採取了理論收益模式+轉賬手續費採用了挖多少分多少的模式。
行文至此礦池的基本知識科普得差不多了。突然想起最近(我是在年前採訪的……)看文章看到以太坊的空塊率多了很多,我又順便問了一下礦池為什麼要挖空塊,得到的回答是省時間:“挖空塊的好處,不用同步數據,也不用下載,而且上傳更快,(不過短時間內)出塊太多會提升難度。”
想知道得更詳細,可以參考《科普入門| 空塊是什麼?為什麼礦工要挖空塊? 》這篇文章:
“挖空塊技術唯一的優勢就在於,因為空塊只有一條信息,空塊礦工省去了'打包'大量信息的時間。這使得空塊礦工挖完這個區塊,直接就可以開始下一個區塊的挖礦。
如果是大礦場甚至礦池級別的硬件,這一操作說起來只是節省了幾秒鐘的時間,不過大礦池幾秒鐘時間的算力,秒秒鐘幾百萬上下真是一點也不誇張啊。
一般情況下,礦池是不喜歡挖到空塊的。畢竟節省那點時間,也值不到收益的6%~8% 啊。
我是Odaily編輯盧曉明,探索真實區塊鏈,爆料、交流請加lohiuming,煩請備註姓名、單位、職務和事由。
我是Odaily編輯盧曉明,探索真實區塊鏈,爆料、交流請加lohiuming,煩請備註姓名、單位、職務和事由。
我是Odaily編輯盧曉明,探索真實區塊鏈,爆料、交流請加lohiuming,煩請備註姓名、單位、職務和事由。
之前第一期學習的是虛擬機(《小明學習筆記| 一文看懂區塊鏈跨鏈機制》),第二期是跨鏈(),第三期),第三期,第四期是《,第四期是《參考文章:》,第五期是《參考文章:》
參考文章: