AsicBoost到底是個什麼技術?讓礦圈炸了。
昨晚的一則快訊引爆了礦圈,快訊稱位元大陸釋出了S9新韌體,新韌體用於實現“顯性Asic Boost”功能。不少朋友問我這是項什麼技術,大家如此關注。其實簡單的從礦工朋友切身利益來說,就是使用該項技術可以降低功耗10%-20%(AsicBoost官網資料顯示)。那麼AsicBoost到底是什麼,今天我們就來揭開它的神祕面紗。
一、比特幣的核心演算法:SHA256
首先我們來簡要梳理下比特幣的挖礦原理,比特幣的挖礦是對區塊頭(blockheader)做兩次SHA256運算,運算出來的結果必須小於當前難度週期所對應的難度目標。區塊頭有80個位元組,包括4位元組的版本號(Version)、32位元組的父區塊雜湊(Previous Hash),32位元組的當前候選區塊打包交易的Merkle Root,4位元組的時間戳(timestamp),4位元組的難度,4位元組的隨機數(Nonce)。在挖礦過程中,版本號、父雜湊、難度都是確定的,礦機需要去不斷修改隨機數來運算,而隨機數只有4位元組,只能做2^ 32次運算。因此礦工還需要修改Coinbase交易,得到新的Merkle Root,即每2^32次雜湊後更改一次。隨著算力的暴漲,獨立礦機已經幾乎不能出塊,礦工都選擇加入礦池來挖礦。挖礦過程就變成了礦池給不同的礦機發送不同的job,礦機計算出的share提交即可。
在做區塊頭的SHA256時,需要64位元組一組去處理,很明顯80位元組超出了,這就需要用48位元組的填充位將塊頭補充至128位元組,填充位全填寫0,所以被稱作padding-zero。
這樣區塊頭就被分成了前後兩組來運算,結合上圖可以看出,Merkle Root的前28個位元組和後4個位元組被分開了。
二、AsicBoost
從圖2中我們不難看出,Merkle Root很尷尬,被分割在兩個組中,而區塊頭的結構是寫死不能修改的,於是AsicBoost就誕生了,2016年3月Dr. Timo Hanko提出了白皮書,後經過不斷完善,最終確定了兩種優化的方法,一種就是Version-rolling,另一種是Merkle Root Collisions。不過目前都是第一種實現方式,第二種暫時沒人宣稱使用。
這邊就重點介紹一下Version-rolling。
Version-rolling(版本輪動)。4位元組的Version總共有32個位,只有前3位是固定的,其他位用在技術升級或者軟分叉時候的投票時使用,可是在實際應用過程中,不可能同時有29個軟分叉投票吧,如果我們只取4位來用,那麼就多了2^4次,也就是說在收到同一個任務後,可以進行2^4輪的2^32次運算,降低了礦機接受資料的次數,從而降低了功耗,據AsicBoost.com測算,可以降低約20%的功耗,當然實際使用效果還要經過長期的測試。隨著越來越多的人湧入 ofollow,noindex"> 區塊鏈 世界,全網算力一直處於不斷攀升的階段,挖礦的利潤可能會進一步下降,20%的功耗節約對於礦工來說可能也是一筆不小的錢。
感興趣的朋友也可瞭解一下Merkle Root Collisions(梅克爾根碰撞)。如圖2所示,32位元組的Merkle Root被分割成兩組來做SHA256運算,第一部分為28位元組,第二部分為4位元組。Merkle Root Collisions的原理就是構建出很多後4個位元組相同的Merkle Root,這樣在隨機數固定的情況下,我們只需要對區塊頭的前半部分做SHA256運算,而後半部分是不變的。這種方法的本質是一個32位的雜湊碰撞,根據“生日悖論”,找到一組碰撞需要的嘗試次數其實並不多。嘗試新的Merkle Root通常有兩種方法:一是修改Coinbase交易,但這裡有個問題,礦池可能會惡意打空塊,因為當區塊只有coinbase交易的時候,要保證Merkle Root後4個位元組要容易的很多;第二是交換任意交易的順序,這種方法的問題是,在隔離見證(Segwit)中,雜湊運算量會增加一倍。隔離見證引入了一個全新的Witness Merkle Tree和Witness Merkle Root(見圖3),如果修改交易順序,那麼Witness Merkle Tree也會更改,這就導致了在原有Merkle Tree中的coinbase交易進一步更改,從而使得整個Merkle Tree需要從下到上重新計算一次,增加了一倍的工作量,而我們都知道在之前更新的bitcoin core version中,早已經全面支援了隔離見證。
昨日官方公告還表示R4、T9、T9+、S9i、S9j能啟用“顯性Asic Boost”功能的新韌體也將在本週內釋出,而幣印礦池(Poolin.com)已率先支援Asic Boost,礦工更新韌體後不需要多餘操作,連線礦池就可直接開挖!
參考連結
韌體下載地址:
https://service.Bitmain.com/support/download
官方公告:
https://blog.bitmain.com/en/new-firmware-activate-overt-asicboost-bm1387-antminer-models/
AsicBoost官網:
BDPL官網:
https://github.com/slushpool/stratumprotocol/blob/master/stratum-extensions.md
Slushpool的stratum擴充套件協議:
https://github.com/slushpool/stratumprotocol/blob/master/stratum-extensions.md
Bitmex關於隱形AsicBoost的論述:
https://blog.bitmex.com/graphical-illustration-of-a-bitcoin-block/
Gregory Maxwell關於AsicBoost的提案:
https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-April/013996.html
來源:微信公眾號幣印礦池
AD:
鄭重宣告:本文版權歸原作者所有,轉載文章僅為傳播更多資訊之目的,如作者資訊標記有誤,請第一時間聯絡我們修改或刪除,多謝。