自比特幣誕生之初,社區(qū)就一直在爭(zhēng)論是否應(yīng)對(duì)抗日益強(qiáng)大的挖礦硬件。在比特幣的早期階段,挖礦是通過(guò)CPU(大多數(shù)計(jì)算機(jī)中的標(biāo)準(zhǔn)處理單元)完
自比特幣誕生之初,社區(qū)就一直在爭(zhēng)論是否應(yīng)對(duì)抗日益強(qiáng)大的挖礦硬件。
在比特幣的早期階段,挖礦是通過(guò)CPU(大多數(shù)計(jì)算機(jī)中的標(biāo)準(zhǔn)處理單元)完成的,這使得普通人可擁有參與比特幣挖礦的機(jī)會(huì),因?yàn)檫@不需要使用專(zhuān)門(mén)的計(jì)算機(jī)硬件。
隨著時(shí)間的推移,一些礦工開(kāi)始使用更強(qiáng)大的硬件,以便在競(jìng)爭(zhēng)中取得優(yōu)勢(shì)。
在第二階段,礦工們開(kāi)始使用GPU(一種功能更強(qiáng)大的“圖形處理單元”,通常被用于游戲和3D渲染)進(jìn)行挖礦。一般而言,GPU要比CPU貴一些,但普通人還是可以負(fù)擔(dān)得起的。
再然后,比特幣挖礦進(jìn)入了ASIC時(shí)代,所謂ASIC代表“特定應(yīng)用集成電路”,它們是針對(duì)特定哈希算法而進(jìn)行優(yōu)化的專(zhuān)用挖礦硬件。ASIC礦機(jī)被用于加密貨幣挖礦,且絕大多數(shù)只能用于這種應(yīng)用。就效率而言,ASIC礦機(jī)明顯要比GPU要更加強(qiáng)大。
隨著ASIC礦業(yè)經(jīng)濟(jì)形成,制造新ASIC設(shè)備的公司要比其它挖礦公司更具優(yōu)勢(shì),而且他們還控制著ASIC礦機(jī)供應(yīng)。而制造一種新ASIC硬件線所需的大量前期投資,也減少了能夠參與這項(xiàng)業(yè)務(wù)的參與者。對(duì)于大型礦業(yè)公司來(lái)說(shuō),這存在著巨大的規(guī)模經(jīng)濟(jì),使得普通礦業(yè)公司更難參與競(jìng)爭(zhēng)。
正因?yàn)槿绱?,很多加密貨幣?xiàng)目都試圖防范ASIC。值得注意的是,在比特大陸和其他礦業(yè)公司在2018年初宣布開(kāi)發(fā)門(mén)羅幣(Monero)專(zhuān)用ASIC設(shè)備后,門(mén)羅幣開(kāi)發(fā)者通過(guò)硬分叉改算法,以繼續(xù)保持門(mén)羅幣的“ASIC抗性”(目的是盡可能地分散挖礦)。從那時(shí)起,門(mén)羅幣有過(guò)幾次硬分叉嘗試,試圖抵抗ASIC設(shè)備的侵入,并抑制這類(lèi)設(shè)備的發(fā)展。
同樣,第二大公鏈以太坊,其大部分歷史中也都是“抗ASIC”的(從1.0版本開(kāi)始,以太坊的哈希算法Ethash就被設(shè)計(jì)為抗ASIC),然而,隨著時(shí)間的推移,ASIC設(shè)備制造商還是追上了腳步。
因此,以太坊社區(qū)中的很多人現(xiàn)在又開(kāi)始為ProgPow算法的實(shí)現(xiàn)而爭(zhēng)論(ProgPow對(duì)Ethash進(jìn)行了一些修訂,目的是讓以太坊再次具有抵抗ASIC的能力)。
盡管這些項(xiàng)目都在努力保持對(duì)ASIC的抵制,但很難始終保持領(lǐng)先。
由于在抗ASIC的區(qū)塊鏈上使用ASIC挖礦專(zhuān)用硬件,可產(chǎn)生比其他礦工更大的優(yōu)勢(shì),大型礦機(jī)商就被鼓勵(lì)開(kāi)發(fā)ASIC設(shè)備。這就意味著,ASIC礦工與區(qū)塊鏈開(kāi)發(fā)者之間,會(huì)存在著一場(chǎng)類(lèi)似貓捉老鼠的游戲。
通過(guò)Nonce分布研究ASIC
有趣的是,通過(guò)研究nonce分布,我們可觀察到ASIC挖礦在某些鏈上的興起,以及隨后開(kāi)發(fā)者試圖阻止它們的嘗試。
工作量證明(PoW)挖礦過(guò)程中,會(huì)反復(fù)哈希運(yùn)算一個(gè)區(qū)塊的header,直到其哈希值小于協(xié)議定義的目標(biāo)值。這是通過(guò)將區(qū)塊頭作為輸入,然后通過(guò)加密哈希算法來(lái)實(shí)現(xiàn)的,對(duì)于比特幣而言,該算法就是安全哈希SHA-256算法(且連續(xù)應(yīng)用了兩次)。
為了在無(wú)需完全重建新區(qū)塊頭的情況下,為每次嘗試獲取不同的哈希,在區(qū)塊頭中,需納入一個(gè)向礦工提供的特殊字段:nonce字段。這是礦工可更改的任意數(shù)字,以便修改區(qū)塊頭并生成小于目標(biāo)哈希值的哈希。該nonce,是一個(gè)從0到每個(gè)協(xié)議所設(shè)置上限的數(shù)字。
假設(shè)在理論上,任何一個(gè)nonce都可能導(dǎo)致一個(gè)獲勝的哈希,那么期望nonce隨機(jī)選擇并因此均勻分布就不無(wú)道理了。然而,對(duì)很多區(qū)塊鏈進(jìn)行分析后,我們發(fā)現(xiàn),只有很少的區(qū)塊鏈遵循這一預(yù)期。對(duì)此的解釋是多種多樣的,但nonce挑選策略的變化,往往與新挖礦硬件的引入有關(guān),這表明不同的挖礦硬件具有不同的nonce挑選策略。
2019年1月初,Twitter用戶@100trillionusd首次注意到了比特幣的這種模式。而進(jìn)一步的分析,在其他鏈上已顯示出了一些奇怪的模式,比如門(mén)羅幣、以太坊以及萊特幣。
比特幣
最著名的nonce分布自然是比特幣的,在其歷史早期,比特幣呈現(xiàn)出一個(gè)共同模式:很多nonce接近于0。這可以用一個(gè)簡(jiǎn)單的策略來(lái)解釋?zhuān)摬呗园槊總€(gè)哈希遞增nonce。由于比特幣早期的算力是非常低的,挖礦只使用CPU進(jìn)行,在檢查所有可能的nonce值之前,通常會(huì)找到一個(gè)獲勝的哈希。而Sergio Lerner利用這一事實(shí),對(duì)屬于中本聰?shù)谋忍貛胚M(jìn)行了最認(rèn)真的鑒定。
在 GPU挖礦被引入之后,nonce空間看起來(lái)是隨機(jī)的。但在區(qū)塊高度達(dá)到400000左右時(shí),出現(xiàn)了一種目前尚無(wú)法解釋的新模式,個(gè)別礦工會(huì)選擇一些細(xì)條紋nonce值。
BitMEX研究院對(duì)此模式進(jìn)行了大量研究,但始終沒(méi)有找到明確的解釋。
查看(整個(gè)歷史過(guò)程中)比特幣區(qū)塊nonce的直方圖,可以清楚地看到這種模式,以及低nonce的顯著性。
對(duì)于更細(xì)粒度的分析,有興趣的朋友可以查看bit(位)的分布。比特幣中的nonce字段由4字節(jié)或32位組成。對(duì)nonce 32位中每一位的平均值進(jìn)行分析,顯示出了一些有趣的模式:
在比特幣的歷史之初,較高的bit(位)通常被設(shè)置為0,因?yàn)榈V工們的nonce選擇策略只是簡(jiǎn)單地增加bit(位)。低字節(jié)(圖表底部的最后8 bit)似乎總是與某種模式一起使用,但直到最近才在低bit(位)中觀察到模式的變化。
門(mén)羅幣
應(yīng)用nonce分析方法,最有趣的研究對(duì)象就要屬門(mén)羅幣(Monero)了。
門(mén)羅幣每6個(gè)月通過(guò)硬分叉進(jìn)行一次升級(jí),而在過(guò)去的幾次升級(jí)中,其開(kāi)發(fā)者還對(duì)工作量證明算法進(jìn)行了一些調(diào)整,以避開(kāi)專(zhuān)用的ASIC挖礦硬件。這些硬分叉中的第一個(gè)是有爭(zhēng)議的,因?yàn)樗鼘?dǎo)致了幾個(gè)分叉項(xiàng)目及資產(chǎn)。
因此,我們可以研究這些變化對(duì)nonce分布的影響。
乍一看,我們可以注意到幾個(gè)有趣的模式,但當(dāng)我們將網(wǎng)絡(luò)難度和預(yù)定的硬分叉(調(diào)整PoW算法)疊加到這個(gè)圖表上時(shí),事情就變得更有趣了。
我們可以看到,這3次PoW升級(jí)都導(dǎo)致了網(wǎng)絡(luò)難度的下降,其中有2次停止了之前存在的nonce模式。有趣的是,這些相同的nonce模式的引入,也與網(wǎng)絡(luò)難度的急劇上升有關(guān)。
通過(guò)觀察這些nonce分布模式,我們可以看到第一次分叉在阻止第一代專(zhuān)用硬件方面的有效性。此外,我們還可以看到一些礦工在第二次分叉之后,迅速運(yùn)用上了第二代硬件,而后又被第三次硬分叉挫敗。
以太坊
乍一看,以太坊的nonce空間幾乎沒(méi)有顯示任何nonce分布模式或不規(guī)則。
而仔細(xì)看,在區(qū)塊高度達(dá)到7,000,000后,我們可以看到,空間底部有一些較暗的水平線。
如果放大,你可以看到從數(shù)字2000000到4000000之間的底部斜線。這些可能是一個(gè)簡(jiǎn)單的nonce挑選策略的特征:從0開(kāi)始,每次嘗試時(shí)遞增nonce。
區(qū)塊的nonce直方圖顯示,隨著時(shí)間的推移,值較低的nonce會(huì)略微占據(jù)優(yōu)勢(shì):
但是,如果我們觀察nonce的每一bit隨時(shí)間的平均值,就會(huì)發(fā)現(xiàn)一個(gè)非常有趣的模式(請(qǐng)注意,以太坊的nonce由64位組成,而不是比特幣中的32位):
從大約第1,380,000個(gè)區(qū)塊開(kāi)始,nonce的中間位開(kāi)始被設(shè)置為0,這比其他位要頻繁得多。隨著時(shí)間的推移,其他位也開(kāi)始有非隨機(jī)使用。有趣的是,粗略地看一下整個(gè)nonce分布或直方圖,并不能揭示這種模式,因?yàn)檎{(diào)整中間位并不會(huì)明顯影響nonce的直方圖。
有趣的是,以太坊經(jīng)典(ETC)的nonce位分布顯示了完全相同的模式:
頂部的白色垂直條紋表明一些礦工正在從0開(kāi)始增加nonce。
比特大陸于2018年4月宣布了首款公開(kāi)已知的Ethash ASIC礦機(jī),并表示將于同年7月中旬首次交付。在前一個(gè)圖表中同時(shí)標(biāo)注兩個(gè)日期顯示了一些非常有趣的事:
乍一看,在Antminer E3發(fā)布時(shí),以太坊和ETC區(qū)塊的(bit 41) 位41平均值下降了。加入時(shí)間點(diǎn)后,模式更加引人注目:
在2018年3月中旬之前,位41的平均值徘徊在0.5左右(這是假設(shè)灰色水平虛線表示的均勻分布的預(yù)期值)。然而,從那時(shí)起,在兩條鏈上,它開(kāi)始以同樣的速度逐漸被設(shè)置為0。而只有以太坊在第一次交付計(jì)劃發(fā)生時(shí)(2018年7月16日),其平均值急劇下降。
查看當(dāng)時(shí)排名前5的礦池,我們可以看到,位41的平均值在所有礦池中都開(kāi)始下降,但從7月16日開(kāi)始,即 E3礦機(jī)首次交付日起,它的值在兩大中國(guó)礦池(Sparkpool和F2Pool)中進(jìn)一步下降。
戰(zhàn)斗還在繼續(xù)
隨著progpow的逼近以及門(mén)羅幣開(kāi)發(fā)者繼續(xù)努力抵抗ASIC,針對(duì)專(zhuān)用硬件的戰(zhàn)斗可能不會(huì)很快結(jié)束。隨著戰(zhàn)爭(zhēng)的進(jìn)行,我們將密切關(guān)注,并繼續(xù)尋找nonce中的信號(hào)。
主流幣網(wǎng)絡(luò)一周數(shù)據(jù)匯總
近期的大波動(dòng),也使得比特幣持有者的持倉(cāng)分布發(fā)生了較大的變化。
目前的快照顯示,成本在13000美元以上的比特幣已屬于少數(shù),大量的幣成本在2000美元至13000美元之間,近400萬(wàn)比特幣(占總供應(yīng)量的22%)的成本基礎(chǔ)低于500美元。
這里我們展示了10月24日(大幅波動(dòng)前)和10月26日(大幅波動(dòng)后)的比特幣分布變化。成本基礎(chǔ)在13000美元以上或7000美元以下的比特幣,幾乎沒(méi)有任何活動(dòng),這表明價(jià)格上漲還不足以激勵(lì)這些持有人出售。相反,成本在7000美元至8500美元之間的比特幣,最有可能被賣(mài)出(盡管由于交易所正常的熱錢(qián)包活動(dòng),這些數(shù)字可能被稍微夸大了)。另外,在9000美元至12000美元的范圍內(nèi),有少量比特幣確實(shí)出現(xiàn)了一些鏈上運(yùn)動(dòng)。(灑脫喜)