本章全部都是采礦。我們已經看到了一點礦工的信息以及比特幣如何依靠他們——他們驗證每一筆交易,他們構建和存儲所有的區(qū)塊,并且達成共識,對哪些區(qū)塊被包括在區(qū)塊鏈中形成共識。們也已經看到,礦工們?yōu)榇说玫搅艘恍┗貓?,但是我們還有很多問題沒有回答。誰是礦工?他們是如何進入系統(tǒng)的?他們是如何運作的?礦工的商業(yè)模式是什么?他們對環(huán)境有什么影響?在本章中,我們將回答所有這些問題。
5.1比特幣礦工的任務
你想進入比特幣礦業(yè)嗎?如果你這樣做了,我們不會完全阻止你,但要小心比特幣礦業(yè)與淘金熱有許多相似之處。歷史上的淘金熱充斥著年輕人匆匆去尋找財富的故事,不可避免地有許多人失去了他們擁有的一切。少數人認為它很富有,但即使是那些通常也忍受了很多困難的人。我們將在這一節(jié)中看到為什么比特幣礦業(yè)與傳統(tǒng)的淘金潮和其他快速致富方案有著許多相同的挑戰(zhàn)和風險。
但首先,看看技術細節(jié)。要成為比特幣礦工,你必須加入比特幣網絡并連接到其他節(jié)點。連接完成后,有六項要執(zhí)行的任務:
1.監(jiān)聽交易。首先,你要偵聽網絡上的交易,并通過檢查簽名是否正確以及所花費的輸出未被花費來驗證它們。
2.維持區(qū)塊鏈并監(jiān)聽新區(qū)塊。你必須維持區(qū)塊鏈。你首先要求其他節(jié)點在你加入網絡之前向你提供已經是區(qū)塊鏈的一部分的所有歷史區(qū)塊。然后,你將收聽正在廣播到網絡的新區(qū)塊。你必須通過驗證區(qū)塊中的每個交易并檢查該區(qū)塊是否包含有效的隨機數,來驗證你接收的每個區(qū)塊。我們將在本節(jié)稍后回到隨機檢查的詳細信息。
3.裝配候選區(qū)塊。一旦你擁有區(qū)塊鏈的最新版本,你就可以開始構建自己的區(qū)塊。為此,你將你聽到的交易分組到一個新的區(qū)塊中,擴展了你所知道的最新區(qū)塊。你必須確保你的區(qū)塊中包含的每個交易都是有效的。
4.找到一個使你的區(qū)塊有效的隨機數。這個步驟需要最多的工作,是礦工真正的困難點。我們將在短期內詳細看到這一點。
5.希望你的區(qū)塊被接受。即使你找到一個區(qū)塊,也不能保證你的區(qū)塊將成為共識鏈的一部分。這里有一點運氣成分;你必須希望其他礦工接受你的區(qū)塊,并開始在其上采礦,而不是在一些競爭對手的區(qū)塊上。
6.利潤。如果所有其他礦工都接受你的區(qū)塊,那么你就會獲利!在2015年初撰寫本文時,積分獎勵是25比特幣,目前價值超過6000美元。此外,如果區(qū)塊中的任何交易都包含交易費用,礦工也會收集。到目前為止,交易費一直是額外收入的適度來源,只有區(qū)塊收入的1%左右。
我們可以將礦工必須采取的步驟分為兩類。一些任務——驗證交易和區(qū)塊——幫助比特幣網絡,并且是其存在的基礎。這些任務是這些Bitcoin協(xié)議首先要求礦工的原因。其他任務——比賽找到區(qū)塊和利潤——對于比特幣網絡本身并不是必需的,但是旨在激勵礦工執(zhí)行基本步驟。當然,這兩個都是比特幣作為貨幣發(fā)揮作用的必要條件,因為礦工需要激勵來執(zhí)行關鍵步驟。
查找有效區(qū)塊。讓我們回到讓你找到一個隨機值使你的區(qū)塊有效的問題。在第3章,我們看到,目前主要有兩種基于哈希的結構。有區(qū)塊鏈,其中每個區(qū)塊頭指向鏈中的先前區(qū)塊頭,然后在每個區(qū)塊內有一個包含該區(qū)塊中所有交易的Merkle樹。
你做礦工的第一件事就是將你從待處理的交易池中獲得的一組有效的交易編譯成Merkle樹。當然,你可以選擇最多包含多少交易的區(qū)塊的總大小的限制。然后,你將創(chuàng)建一個帶有指向上一個區(qū)塊頭部的區(qū)塊。在區(qū)塊頭中,有一個32位的隨機字段,你不斷嘗試不同的隨機數,尋找一個使區(qū)塊的哈希值在目標之下的隨機數——大體上,開始于所需的零數。礦工可以以0的順序開始,并將其逐次增加1,尋找使區(qū)塊成為有效的隨機數。見圖5.1。

圖5.1:尋找一個有效的塊。 在這個例子中,礦工嘗試所有0的隨機數。 它不產生有效的哈希輸出,所以礦工然后會繼續(xù)嘗試一個不同的隨機數。
在大多數情況下,你將嘗試為每個單個可能的32位值進行隨機數,但不會產生有效的哈希。在這一點上,你將不得不進一步改變。請注意,在圖5.1中,您可以更改coinbase交易中的額外的隨機數。在你耗盡區(qū)塊頭的所有可能的隨機數后,你將更改coinbase交易中的額外隨機數——比如通過將它增加一個,然后再次在區(qū)塊頭中搜索隨機數。
當您更改coinbase交易中的隨機數參數時,整個Merkle交易樹必須改變(見圖5.2)。由于coinbase隨機數的變化將一直傳播到數上,所以在coinbase交易中改變額外的隨機數比改變區(qū)塊頭中的隨機數的操作更昂貴。因此,礦工大部分時間都在改變區(qū)塊頭中的隨機數,并且只有當他們耗盡區(qū)塊頭中的所有種可能的隨機數而沒有找到有效的區(qū)塊時,他們會改變coinbase隨機數。

圖5.2:更改coinbase交易中的一個隨機變量,一直在Merkle樹上傳播。
你嘗試的廣泛而絕大多數的通用機制不會奏效,但如果你堅持足夠長的時間,你最終會發(fā)現Coinbase交易中額外的隨機數的正確組合,以及區(qū)塊頭中產生的低于目標值的哈希的區(qū)塊的隨機數。當你找到這一點時,你想盡快宣布它,并希望你可以從中獲利。
大家都在解決同樣的難題嗎?你可能想知道:如果每個礦工都在按照我們所描述的方式遞增隨機數,那么礦工不就是在解決完全一樣的難題嗎?不是最快的礦工總是贏家嗎?答案是不!首先,礦工不太可能在同一個方面進行工作,因為每個礦工可能會包含一些不同的交易和不同的順序。但更重要的是,即使兩個不同的礦工正在處理相同的交易區(qū)塊,區(qū)塊仍然會有所不同?;叵胍幌?,在coinbase交易中,礦工們將自己的地址制定為新造幣的所有者。這個地址本身將導致傳播到Merkle樹的根的變化,這確保沒有兩個礦工在完全相同的謎題上工作,除非他們共享一個公鑰。這只會發(fā)生在兩個礦工是同一個采礦池的一部分(我們稍后會討論)的情況下,他們會進行溝通,以確保它們在coinbase交易中包含一個不同的隨機數,以避免重復的工作。
困難。實際上找到一個有效區(qū)塊有多困難?截止2015年3月,采礦困難目標(十六進制)為:
0000000000000000172EC0000000000000000000000000000000000000000000
所以任何有效區(qū)塊的哈希必須低于此值。換句話說,您嘗試的大約個隨機數中只有一個可以工作,這是一個非常大的數字。一個近似值是它比地球上人口的平方還要大。所有,如果地球上的每一個人都是自己的地球,其中每個都有七十億人,那么總人數將接近人。
確定難度。采礦難度每2016個區(qū)塊更改一次,每兩周發(fā)現一次。根據礦工在上一個2016個以前區(qū)塊期間的效率按照以下公式進行調整:
next_difficulty = (previous_difficulty * 2016 * 10minutes) / (time to mine last 2016 blocks)
請注意,2016*10分鐘恰好是兩周,所以如果區(qū)塊每10分鐘創(chuàng)建一個,那么2016個區(qū)塊將需要兩周的時間才能挖掘出來。因此,這個公式的效果是,要保持網絡平均每十分鐘發(fā)現一塊區(qū)塊的難度。兩周沒有什么特別的,但這是一個很好的權衡。如果周期短得多,難度可能由于每一時期發(fā)現的區(qū)塊數隨機變化而波動。如果這個周期長得多,那么網絡的哈希能力可能會變得太難平衡。
每個比特幣礦工獨立計算難度,只接受滿足他們計算難度的區(qū)塊。在不同分支機構的礦工可能不會計算相同的難度值,但任何兩名礦工在同一區(qū)塊上進行采礦時,也會對難度達成一致。這樣就可以達成共識。
從圖5.3可以看出,隨著時間的推移,采礦難度不斷增加。它不一定是線性增長或指數增長,而是取決于市場活動。采礦難度受到多少新礦工加入的因素的影響,反過來也可能受到比特幣目前匯率的影響。一般來說,隨著越來越多的礦工上線,采礦硬件的效率越來越高,發(fā)現區(qū)塊越來越快,難度也越來越大,以便大概需要10分鐘才能找到一個區(qū)塊。
在圖5.3中,你可以看到,在圖形的紅線上,即使整體網絡哈希率正在順利增長,也存在難度的階梯函數。哈希步驟的結果是,難度只每2016個街區(qū)調整一次。
查看網絡增長率的另一種方法是考慮平均找到一個區(qū)塊需要多長時間。圖5.4(a)顯示了區(qū)塊鏈中連續(xù)區(qū)塊之間經過了多少秒。你可以看到,這種情況逐漸下降,跳起來,然后再逐漸下降。當然,發(fā)生的情況是,每2016個街區(qū)重置區(qū)塊難度,平均區(qū)塊時間回到大約十分鐘。在下一個時期,難度保持不變,但越來越多的礦工上線。由于哈希功率已經增加,但難度并沒有,區(qū)塊發(fā)現地更快,直到在2016區(qū)塊之后或者大約兩個星期再次調整難度。

圖5.3:隨時間推移(2014年中期)的采礦困難。請注意,y軸以80,000 TH / s開始。

圖5.4(a):查找區(qū)塊的時間(2014年初)。請注意,y軸始于460秒。由于這一時期采礦業(yè)電力持續(xù)快速增長,在每兩周的窗口內,發(fā)現一個區(qū)塊的時間將逐漸減少。 來源:bitcoinwisdom.com

圖5.4(b):找到塊的時間(2015年初)。請注意,y軸以540秒開始。 隨著網絡增長放緩,找到每個區(qū)塊的時間更接近10分鐘,偶爾會在網絡哈希功率實際收縮的時期內結束。來源:bitcoinwisdom.com
盡管目標是平均每十分鐘發(fā)現一個區(qū)塊,但在2013和2014年的大部分時間里,平均接近9分鐘,并在每兩周的周期結束時接近8分鐘。快速計算顯示,這需要每兩周驚人的25%的增長率,或每年幾百倍的增長率。
毫不奇怪,這不是永遠可持續(xù)的,而在2015年,增長速度要慢得多(有時也是負面的)。在圖5.4(b)中,我們可以看出,隨著采礦能力更接近于穩(wěn)態(tài),發(fā)現每個區(qū)塊的周期將保持在10分鐘以內。它甚至可能需要超過10分鐘,在這種情況下會降低難度。 一旦被認為是不可想象的,這在2015年已經相當頻繁地發(fā)生了。
盡管迄今為止,該網絡的采礦權力沒有出現災難性的下滑,但沒有任何內在的原因說明這種情況不會發(fā)生。比特幣崩潰的一個提議方案是“死亡螺旋”,其中匯率下降使得礦業(yè)開采無利可圖,導致大量外流,從而導致價格進一步下跌。
5.2采礦硬件
我們已經提到礦工必須做的計算是非常困難的。在本節(jié)中,我們將討論為什么它在計算上是困難的,并且看看礦工用來執(zhí)行這種計算的硬件。
礦工計算困難的核心工作是SHA256哈希函數。我們在第1章中抽象地討論了哈希函數。SHA-256是通用密碼哈希函數,是2001年標準化的更大的函數系列的一部分(SHA代表安全哈希算法)。SHA-256是一個合理的選擇,因為這是Bitcoin設計時可用的最強密碼哈希函數。它可能在比特幣的壽命期間變得不那么安全,但是現在它仍然是安全的。 它的設計確實來自美國國家安全局(美國國家安全局),這導致了一些陰謀論,但它通常被認為是非常強大的哈希函數。
近距離看SHA-256。圖5.5顯示了更多關于SHA-256計算中實際發(fā)生的細節(jié)。 雖然我們不需要知道所有的細節(jié)來了解比特幣的工作原理,但是對于礦工們需要解決的任務有一個一般性的看法是很好的。
SHA-256保持256位的狀態(tài)。 該狀態(tài)分為八個32位字,這使得它對32位硬件進行了高度優(yōu)化。在每一輪中,狀態(tài)中的一些字被采取——一些采用小的按位調整——并且加在一起mod 32。然后,整個狀態(tài)被移位,結果是添加成為狀態(tài)新的最左邊的單詞。該設計受到更簡單的逐位線性反饋移位寄存器(LFSR)的啟發(fā)。
邊欄:SHA家族。SHA-256中的“256”來自其256位狀態(tài)和輸出。技術上SHA-256是SHA-2系列中幾個緊密相關的功能之一,其中包括SHA-512(其狀態(tài)較大,因此更為安全)。還有SHA-1,前一代具有160位輸出,現在被認為是不安全的,但仍然在Bitcoin腳本中實現。雖然包括SHA-256在內的SHA-2系列仍然被認為是加密安全的,但下一代SHA-3系列已經被比賽挑選了。SHA-3今天處于標準化的最后階段,但是Bitcoin被設計時它并不可用。
圖5.5只顯示了一輪SHA-256壓縮功能。SHA-256的完整計算可以進行64次迭代。在每一輪中,都有一些稍微不同的常數,所以沒有迭代是完全相同的。

圖5.5:SHA-256的結構。這是一輪壓縮功能。
礦工的任務是盡快計算此功能。記住,礦工們相互競爭,所以他們做得越快,就越賺錢。 為了做到這一點,他們需要能夠操縱32位字,做32位模塊化加法,還要做一些按位邏輯。
正如我們在短時間內將看到的,Bitcoin實際上需要將SHA-256應用到一個區(qū)塊兩次,以獲得節(jié)點使用的哈希。這是比特幣的怪癖。雙重計算的原因尚未完全明確,但在這一點上,這只是一些礦工必須處理的一切。
CPU采礦。 第一代采礦全部在通用計算機上完成——即通用中央處理單元(CPU)。實際上,CPU挖掘與運行如圖5.6所示的代碼一樣簡單。也就是說,礦工們以線性方式簡單地搜索隨機數,在軟件中計算SHA 256,并檢查結果是否為有效區(qū)塊。另外,在代碼中注意到,如上所述,SHA-256被應用了兩次。

在通用計算機上運行有多快?在高端臺式電腦上,你可能希望每秒計算大約2000萬次哈希(MH / s)。 以這個速度,平均在2015年初的難度級別()需要幾十萬年的時間才能找到一個有效的塊。 當我們說采礦是一個困難的時候,我們不開玩笑!
如果你今天在通用電腦上采礦,那么目前的困難就是CPU采礦不再有利可圖。在過去的幾年里,任何一個嘗試在CPU上挖掘的人都可能不了解Bitcoin是如何工作的,可能非常失望的是,他們從來沒有賺過錢。
GPU采礦。第二代開始時,當人們開始感到沮喪,他們的CPU是多么的緩慢,作為替換,他們開始使用他們的顯卡或圖形處理單元(GPU)。
幾乎每個現代PC都內置了一個GPU來支持高性能圖形。 它們的設計具有高吞吐量和高并行性,這兩者對于Bitcoin采礦非常有用。 比特幣挖掘可以容易地并行化,因為您可以嘗試使用不同的隨機存儲器同時計算多個哈希值。2010年,發(fā)行了一種名為OpenCL的語言。OpenCL是一種通用目的語言,用于在GPU上執(zhí)行圖形以外的其他操作。 這是一種高級語言,隨著時間的推移,人們在圖形卡上更快速地運行了許多類型的計算。這為Bitcoin在GPU上的挖掘鋪平了道路。
當時使用顯卡進行挖掘有幾個吸引人的屬性。一方面,它們很容易被業(yè)余愛好者設置。你可以在線訂購顯卡,或者在大多數大型消費電子產品商店購買。它們是公眾可以使用的最便捷的高端硬件。他們也有一些屬性,使他們特別好地比特幣挖礦。它們被設計用于并行,因此它們具有許多可用于同時進行SHA-256計算的算術邏輯單元(ALU)。一些GPU還具有對SHA-256非常有用的按位操作的具體指令。
大多數顯卡也可以超頻,這意味著你可以比實際設計的運行速度更快,如果你想承擔可能會導致過熱或故障的風險。這是游戲玩家多年來所要求的屬性。使用Bitcoin采礦,運行芯片比設計的速度要快得多,即使通過這樣做會引起一些錯誤。
例如,假設你可以運行顯卡快50%,但這樣做會導致SHA-256計算中的錯誤達到30%的時間。如果一個無效的解決方案被圖形卡錯誤地聲明為有效——很少會發(fā)生這種情況——你可以隨時在CPU上仔細檢查它。另一方面,如果錯誤地錯過了有效的解決方案,那么你永遠都不會知道。但是,如果你的超頻速度提高可以克服由于錯誤導致的輸出的減少,那么您仍然會向前推進。在上述示例中,與不超頻相比,吞吐量是1.5倍,而成功率是0.7倍。該產品為1.05,這意味著超頻將你的預期利潤提高了5%。人們花了相當多的時間優(yōu)化他們應該超頻給定芯片多少以最大化利潤。
最后,你可以從一個主板和CPU驅動許多顯卡。所以你可以拿你的電腦,它將運行你實際的Bitcoin節(jié)點,從網絡收集交易并組裝區(qū)塊,附加多個圖形卡,試圖找到正確的隨機數,使區(qū)塊的SHA-256有效。許多人創(chuàng)建了一些非常有趣的自制設置,如圖5.7所示,從單個CPU驅動許多GPU。這還處于比特幣的早期階段,礦工們仍然是大多數愛好者,沒有經驗的運行服務器,但他們想出了一些相當巧妙的設計,如何將許多顯卡放在一個小的地方,并保持足夠的運行。

圖5.7:用于Bitcoin采礦的家用GPU機架。你還可以看到他們用來構建原始冷卻系統(tǒng)的風扇。資料來源:LeonardH,cryptocurrenciestalk.com。
礦工與游戲玩家。根據民間傳說,2011年Bitcoin礦工購買了足夠的GPU來打亂正常的市場。這造成了游戲社區(qū)的摩擦,他們發(fā)現在當地電子商店中發(fā)現某些流行的GPU越來越困難。然而,有趣的是,它可能導致玩家對Bitcoin礦業(yè)的興趣增加,因為許多這些沮喪的游戲玩家了解了貨幣,以了解所有GPU所在的位置,其中的一些玩家自己成為了礦工!
GPU采礦的缺點。GPU采礦有一些缺點。GPU內置了很多硬件,用于進行無法用于采礦的視頻處理。具體來說,它們具有大量的在SHA-256中完全不使用的浮點單元。當你將很多的它們彼此相鄰時,GPU也不具有最大的冷卻特性。 它們不是像在圖中并排運行的那樣;它們被設計為在一個單獨的盒子中為一臺計算機做圖形計算。
GPU也可以擁有相當大的功率,所以相對于計算機需要使用大量的電力。另一個缺點是你必須建立自己的電路板或購買昂貴的電路板來容納多張顯卡。
在一個真正的高端顯卡上,你可能會高達200 MH / s,每秒可能達到2億次哈希,比使用CPU要好一個數量級。但是,即使這樣改進了性能,即使你真的進取心十足,并且一起使用了一百個GPU,平均來說,你仍然需要300多年才能在2015年初的難度水平上找到一個區(qū)塊。因此,今天,Bitcoin的GPU采礦基本上已經死亡,盡管它仍然有時在早期的代幣(altcoins)中出現。
FPGA開采。在2011年的一輪,一些礦工開始從GPU轉換到FPGA或現場可編程門陣列,在Bitcoin采礦的第一次實施之后,Verilog出現了一種用于編程FPGA的硬件設計語言。FPGA的一般原理是嘗試盡可能接近定制硬件的性能,同時還允許卡的所有者自定義或重新配置“在現場”。相比之下,定制的硬件芯片是在工廠設計的,而且永遠都在做同樣的事情。
FPGA比顯卡提供更好的性能,特別是在FPGA上進行簡單說明的“bit fiddling”操作。使用FPGA也可以簡化冷卻,與GPU不同,你理論上可以使用卡上幾乎所有的晶體管進行采礦。像GPU一樣,你可以將多個FPGA集成在一起,并從一個中心單元驅動它們,這正是人們開始做的(參見圖5.8)??傮w而言,可以比使用顯卡更加整齊,干凈地構建大量的FPGA。
使用FPGA仔細實施,你可以達到每秒GH / s或十億次散列。這肯定是超過CPU和GPU的性能優(yōu)勢,但即使你擁有一百個電路板,每個板卡具有1 GH / s的吞吐量,平均來說,在2015年初的難度水平,你仍然需要大約50年的時間才能找到一個比特幣區(qū)塊。

圖5.8:一個自制的FPGA機架。雖然沒有看到這里的冷卻設置,但這樣的機架需要一個冷卻系統(tǒng)。
盡管性能增益,FPGA開采的日子相當有限。首先,他們被驅動去挖掘難以開采的比特幣——在所有時間和超頻——比消費級FPGA真正的設計能力。正因為如此,許多人在采礦時看到FPGA中出現錯誤和故障。它也很難優(yōu)化32位加法步驟,這對于SHA-256來說至關重要。FPGA的訪問也不太方便——大多數商店都無法購買,而知道如何編程和設置FPGA的人數少于GPU。
最重要的是,盡管FPGA的性能提高了,但是對于GPU,每個性能的成本只是略微改善了。這使得FPGA采礦是一個相當短暫的現象。雖然GPU挖掘主導了大約一年左右,但是FPGA開采的日子更加有限——僅在定制ASIC到達之前持續(xù)了幾個月。
ASIC開采。今天的采礦由比特幣ASIC或專用集成電路主導。些芯片是專為比特幣采礦而設計,制造和優(yōu)化的芯片。有幾個大賣家將這些賣給各種各樣的消費者:你可以選擇稍大和更昂貴的型號,更緊湊的型號,以及具有不同性能和能耗聲明的型號。
設計ASIC需要相當多的專業(yè)知識,而且他們的交付時間也很長。 盡管如此,Bitcoin
ASIC的設計和制作卻令人驚訝。 事實上,分析師表示,這可能是集成電路歷史上最快的周轉時間,解決指定問題,并在人手中擁有一個工作芯片。部分原因是比特幣ASIC的前幾代比較麻煩,其中絕大多數都沒有提供承諾的性能數字。 比特幣ASIC已經成熟,現在有相當可靠的ASIC可用。
直到2014年,由于網絡哈希率的迅速增長,ASIC的壽命相當短暫,ASIC早期的大多數板卡在大約六個月內已經過時了。在這段時間內,大部分的利潤都產生在前面。通常,礦工將在頭六個星期內賺取ASIC一生預期利潤的一半。 這意味著運輸速度可以成為賺取利潤的關鍵因素。由于行業(yè)不成熟,消費者經常遇到航運延誤,板卡經常在到達時幾乎過時。隨著比特幣哈希能力的增長速度已經穩(wěn)定,采礦設備的使用壽命更長,但是在早期的時代,許多客戶沮喪,供應商的欺詐行為也受到指責。
對于比特幣的大部分歷史來說,礦業(yè)經濟學并沒有對那些想上網、訂購采礦設備、開始賺錢的小礦工有利。事實上,在大多數情況下,訂購礦業(yè)硬件的人都會因為他們當時的計算而虧損。直到2013年,比特幣的匯率才上漲到足以讓絕大多數客戶從虧損中獲利。
實際上,采礦一直是一個昂貴的方式來簡單地認為,比特幣的價格會上漲,許多礦工——雖然它們在比特幣采礦上賺了錢——如果他們把這些用于購買采礦設備上的錢投資比特幣,最終在賺取利潤的時候賣掉他們,這樣就會變得更好。
你仍然可以在今天訂購比特幣礦業(yè)設備,我們不想阻止這一點作為了解比特幣和加密貨幣的方式。不過,我們再次注意到,這不是一種賺錢的方法。一旦你考慮到電力和制冷的價格,大多數今天銷售的ASIC就不太可能為采礦獎勵而自付。
今天:專業(yè)采礦。今天,礦業(yè)大多從個人身上轉移到專業(yè)礦業(yè)中心。關于這些中心如何運作的確切細節(jié)并不十分了解,因為公司希望保護其設置以保持競爭優(yōu)勢。據推測,這些操作通過購買稍微更新和更高效的ASIC來保持盈利,而不是可用于折扣的批量銷售。在圖5.9中,我們看到了格魯吉亞共和國專業(yè)采礦中心的圖片。

圖5.9:BitFury采礦中心,格魯吉亞共和國的專業(yè)采礦中心。
在確定建立采礦中心的地點時,最重要的三個方面是:氣候,電力成本和網絡速度。特別是,你想要一個寒冷的氣候來保持冷卻成本最低。比特幣礦業(yè)的降溫特別具有挑戰(zhàn)性,據估計,比起傳統(tǒng)數據中心,每平方英尺的電力數量會增加一個數量級(并因此發(fā)出一個數量級的熱量)。你顯然想要便宜的電力。你還希望將快速網絡連接與Bitcoin對等網絡中的其他節(jié)點良好連接,以便你可以在宣布后立即收到新的區(qū)塊。據報,格魯吉亞和冰島是Bitcoin采礦數據中心的熱門目的地。
與金礦的相似點。雖然“采礦”可能似乎只是一個可愛的名字,但如果我們回顧并考慮采礦的演變,我們可以看到比特幣礦業(yè)和黃金開采之間有趣的相似之處。對于初學者來說,與許多年輕的業(yè)余人士一樣,急于想要盡快進入業(yè)務,這兩者都看起來有類似的淘金熱心態(tài)。
而比特幣開采,我們看到從CPU、GPU到FPGA的緩慢演變,直到目前的ASIC設計,黃金開采從鍋爐的個人向小團體轉移到水閘箱,進入采礦——由大型礦業(yè)組織組成,用水噴灑山坡——現代黃金開采往往利用巨大的開放露天礦從地球提取原料(見圖5.10)。無論是比特幣還是黃金,隨著時間的推移,對個人的友好性和可獲得性都在下降,大公司最終鞏固了大部分業(yè)務(和利潤)。在這兩個地方出現的另一個模式是,大多數利潤都成為了賣設備的收入,無論黃金鍋或ASIC采礦,都是個人希望致富的代價。

圖5.10:采礦的演變。可以看到比特幣礦業(yè)的演變與黃金開采的演變之間有明顯的平行。兩者最初都是對個人友好的,隨著時間的推移成為大公司控制的大規(guī)模運營。
未來。目前,ASIC采礦是比特幣盈利的唯一現實手段,對小型礦工來說不是很友好。這提出了一些關于將要發(fā)生的事情的問題。小礦工是否離開比特幣礦業(yè),還是有辦法重新融入其中?此外,ASIC采礦和專業(yè)采礦中心的發(fā)展是否違反了比特幣的原始愿景,即網絡中的每個人都用自己的電腦開采的完全分散的系統(tǒng)?
此外,如果這確實違反了Satoshi Nakamoto對Bitcoin的原始愿景,那么我們是否最好還是采用一種系統(tǒng),唯一使用CPU挖礦?在第8章中,我們將考慮這些問題,并考慮可能對ASIC不友好的替代形式的想法。
重復這個循環(huán)。在這里值得一提的是,幾個較小的altcoins確實使用了與SHA-256不同的難題,但在比特幣的采礦中也看到了類似的軌跡。我們將在第9章中更多地討論這些altcoins,但回想一下,ASIC設計芯片和發(fā)貨之間仍然有很長的交付時間,所以如果一個新的altcoin使用了一個新的謎題(即使只是修改版本的SHA-256) ,這將花費一些時間才能使用ASIC。通常情況下,開采將在比特幣是從CPU到GPU和/或FPGAs到ASIC(如果altcoin是非常成功的,像LiteCoin)。
因此,小規(guī)模礦工的一個策略可能是嘗試開創(chuàng)新的代幣,這對于大型礦業(yè)集團投資來說還不夠有價值,就像已經被成熟黃金礦區(qū)淘汰的小金礦礦工也許會嘗試勘探未經證實的新領域。當然,這意味著先鋒們面臨著重要的風險,即altcoin將永遠不會成功。
5.3能源消耗與生態(tài)
我們看到大型專業(yè)采礦數據中心已經占據了比特幣礦業(yè)的業(yè)務,以及如何將這種運動與金礦開采中的坑開采相結合。你可能會意識到,這些年來礦坑是造成環(huán)境破壞的主要原因。比特幣還沒有達到這個水平,但它開始使用大量的能量已成為討論的話題。 在本節(jié)中,我們將看到比特幣礦業(yè)正在使用多少能源,以及對貨幣和地球的影響。
熱力學極限。20世紀60年代,有一種被拉爾夫·蘭道爾(Ralph
Landauer)研制的Landauer原理的物理規(guī)律稱,任何不可逆的計算都必須使用最少的能量。邏輯不可逆計算可以被認為是丟失信息的計算。具體來說,刪除任何位的原則規(guī)定必須消耗最?。╧T ln 2)焦耳,其中k是波爾茲曼常數(約),T是開爾文電路的溫度,ln 2是2的自然對數,大約為0.69。每比特的能量很小,但這從基本物理上提供了能量消耗的一個較低的下限。
我們不會在這里做出推論,但是高層次的想法是,每次你以不可逆的方式翻轉一比特時,你必須使用最少的焦耳數量。源永不毀滅;它從一種形式轉換成另一種形式。在計算的情況下,能量主要是從電轉化,這是有用的,高品位的能源,轉化成散發(fā)到環(huán)境中的熱量。
作為加密哈希函數,SHA-256不是可逆計算。我們可以從第1章回想起,這是密碼哈希函數的基本要求。因此,由于不可逆計算必須使用一些能量,而Bitcoin采礦的基礎是SHA-256——不可逆轉,能源消耗是比特幣開采的必然結果。也就是說,Landauer原則的限制遠遠低于今天使用的電量。我們還沒有接近理論最優(yōu)消費的計算,但即使我們確實達到了理論上的最佳,我們仍然將使用能量來執(zhí)行比特幣開采。
比特幣礦業(yè)如何使用能源?過程中有三個步驟需要能量,其中一些步驟可能不那么明顯:
1.實體能量。首先,比特幣采礦設備需要制造。這就需要對原材料進行物理采礦,并將這些原材料轉化為Bitcoin采礦ASIC,這兩者都需要能源。這是實體的能量。一旦你在郵件中收到Bitcoin采礦ASIC,當然你已經消耗了很多精力——包括運輸能源,當然——在你甚至啟動它之前!
希望隨著時間的推移,實體能量將隨著越來越少的新產能投產而下降。隨著越來越少的人去購買新的采礦ASIC,他們將被不太快地淘汰,并且具體的能源將在多年和幾年的采礦中攤銷。
2.電力。當你的ASIC開機并開采時,它會耗電。這是一步,我們知道了由于Landauer的原理而消耗能量。隨著采礦設備的效率越來越高,電能成本將會下降。但由于Landauer的原理,我們知道它永遠不會消失;電能消耗將是比特幣礦工永遠的生活事實。
3.冷卻。消耗能源的第三個重要組成部分是冷卻設備,以確保其不會發(fā)生故障。如果你在非常寒冷的氣候條件下進行小規(guī)模運營,你的冷卻成本可能是微不足道的,但即使在寒冷的氣候下,只要你在一小段空間內獲得足夠ASIC,你將不得不花費額外的費用來冷卻你的設備產生的所有廢熱。一般來說,用于冷卻采礦設備的能量也將是電力的形式。
規(guī)模開采。當大規(guī)模經營時,實體的能源和電力都有所減少(每單位完成的采礦工作)。構建可在大數據中心運行的芯片成本更低廉,你可以在不需要太多電源的情況下更高校地提供電源。
然而,在冷卻方面,通常情況正好相反:冷卻成本隨著你的規(guī)模會越來越大。如果你想要運行一個非常大的操作,并且在一個地方擁有大量的Bitcoin采礦設備,在你的設備周圍區(qū)域散熱的空氣較少。因此,你的冷卻預算將按規(guī)模(每單位完成的采礦工作)增加,除非你將物理區(qū)域與你使用的芯片數量一起縮小。
估計能源消耗。整個比特幣系統(tǒng)使用了多少能源?當然,我們無法計算出這一點,因為這是一個分散化的網絡,礦工在所有地方運營,而無需準確記錄他們在做什么。但是,有兩種基本的方法可以估計比特幣礦工集體使用的能量。我們要基于2015年初的價值做一些粗略計算。我們必須強調,這些數字非常粗糙,因為一些參數很難估計,也因為它們的變化很快。最多應該把它們視為數量級的估計。
自上而下的方法。第一種方法是自上而下的方法。 我們從簡單的事實開始,每次發(fā)現一個區(qū)塊,今天給礦工提供價值約6500美元的25比特幣。每秒大約11美元,這是在比特幣經濟中憑空創(chuàng)造出來的,并給了礦工。
現在我們來問一下這個問題:如果礦工把這11美元每秒都轉成電,他們可以買多少錢?當然,礦工們實際上并沒有把所有的收入都用在電力上,但是這將為所用的電力提供一個上限。電力價格差異很大,但我們可以用這樣的估計,美國的工業(yè)生產電費每千瓦時(千瓦時)約為10美分,或相當于每兆焦耳3美分(MJ)。如果比特幣礦業(yè)公司花費每秒賺取的11美元來購買電費,他們可以每秒購買367兆焦耳,消耗穩(wěn)定的367兆瓦(兆瓦)。
能量和能量單位。在國際單位制(SI)中,能量以焦耳為單位。瓦特是功率單位,其中一瓦特被定義為每秒一個焦耳。
自下而上的方法。估計成本的第二種方法是使用自下而上的方法。在這種方法中,我們來看一下礦工實際計算的哈希數,我們通過觀察每個區(qū)塊的難度來了解。如果我們假設所有的礦工都在使用最有效的硬件,我們可以得出電力消耗的下限。
目前,商業(yè)上可獲得的礦山鉆井平臺中最好的效率數據約為3 GH/s/W。也就是說,最前沿的ASIC聲稱每秒執(zhí)行30億次哈希,同時消耗1瓦的功率。整個網絡的算力約為350000000 GH/s,或相當于每秒350 petahash(PH / s)。 把這些結合在一起,我們看到每秒的哈希效率需要大約117兆瓦。當然,這個數字排除了所有的冷卻能量和這些芯片中的所有實體能量,但是我們正在進行一個最佳的計算并得到一個下限,這樣就可以了。
結合自上而下的自下而上的方法,我們可以得出一個大致估計,比特幣礦工的電力使用量大概在幾百兆瓦左右。
兆瓦是多少?直覺來說,我們可以看看大型發(fā)電廠的產量。世界上最大的發(fā)電廠之一,中國的三峽大壩是一座萬兆瓦的發(fā)電廠。典型的大型水電站生產約1000兆瓦。作為世界上最大的核電站,日本的Kashiwa崎崎是一座7000兆瓦的工廠,而平均核電站約為4000兆瓦。一個主要的燃煤電廠生產約2000兆瓦。
據我們的估計,整個比特幣網絡正在耗費大型電廠10%的電力。雖然這是一個相當數量的能量,但與人們在地球上使用電力的所有其他事情相比,它仍然很小。
比特幣礦開采是否浪費?經常說比特幣“浪費”能量,因為SHA-256計算上的能量消耗不起任何其他有用的目的。重要的是要認識到,任何支付系統(tǒng)都需要能源和電力。 使用傳統(tǒng)貨幣,大量能源消耗印刷貨幣和運行的ATM機,硬幣分選機,收銀機和支付處理服務,以及在裝甲車中運輸貨幣和金條。你也可以同樣地認為,所有這些能量都被“浪費”,除了維持貨幣體系以外,它不具有任何目的。所以,如果我們把比特幣視為一個有用的貨幣體系,那么支持它所需的能量并不是真的被浪費了。如果我們可以用較少的能源密集型的謎題來取代比特幣的采礦,而且還有一個安全的貨幣,那就是積極的變化。 然而,我們在第8章中會看到,我們不知道是否真的有這可能。
再生能源。使比特幣更環(huán)保的另一個想法是捕捉比特幣開采產生的熱量,用它來做一些有用的事情,而不是僅僅加熱大氣。這種從計算中獲取余熱的模型稱為數據爐方法。這個概念是,不是購買一個傳統(tǒng)的電加熱器來加熱家庭或加熱家中的水,你可以購買一臺加熱器,作為Bitcoin采礦設備,開采比特幣,并將你的家庭作為該計算的副產品加熱。事實證明,這樣做的效率并不比購買電加熱器要差得多,對于家庭消費者來說,這樣做并不比將加熱器插入互聯(lián)網連接以及電源插座更復雜。
這種方法有一些缺點。盡管它與使用電加熱器一樣高效,但電加熱器本身的效率遠低于燃氣加熱器。此外,夏季(或至少北半球的所有人),每個人都關閉比特幣礦機時會發(fā)生什么情況?根據人們需要的熱量,采礦哈希力可能會季節(jié)性下降。它甚至可能在天氣比平均氣溫更暖和的日子下降!如果數據爐模型實際上陷入困境,這將對比特幣共識產生很多有趣的影響。
用現金換電。Bitcoin提出的另一個長期問題是它可能提供將電力轉化為現金的最有效手段。想象一下,Bitcoin采礦ASIC是一種易于獲得的商品,主要的采礦成本是電力。事實上,這意味著提供免費或低成本的電力對新形式的濫用是可以接受的。
在世界上許多國家,政府補貼電力,特別是工業(yè)用電。除此之外,他們經常這樣做是為了鼓勵工業(yè)企業(yè)去他們的國家。但比特幣提供了一種將電力轉化為現金的好方法,如果補貼的電力被大規(guī)模轉換為比特幣,這可能會導致政府重新考慮該模式。電力補貼旨在吸引有助于國家經濟和勞動力市場的企業(yè),補貼比特幣礦業(yè)可能沒有預期的效果。
一個更大的問題是,在人民的家園,大學,酒店,機場,辦公樓等,全球有數十億個免費電源插座。人們可能試圖插上采礦設備,以便在其他人支付電費時可以獲利。事實上,他們可能會使用過時的硬件,而不用為升級勞神,因為他們不會支付電費。考慮到世界上每一個電源插座都有可能為比特幣開采潛在的未經授權使用的電源進行監(jiān)控,這是相當令人畏懼的。