2.5 總結

挖礦成本

我們現在來看一下挖礦經濟學。前文提到過,作為礦工挖礦是十分昂貴的。按現在的難度,找到下一個單獨的區塊需要計算1020個哈希值,區塊獎勵約是25個比特幣,按照現在的比特幣匯率,是不小的一筆錢。這些數據可以讓我們簡單地計算出挖礦是否賺錢。我們可以用這個簡單的邏輯來做這個決定:

如果:

挖礦獎勵>挖礦成本

那麼:

礦工賺錢

條件是:

挖礦獎勵=區塊獎勵+ 交易費

挖礦成本=硬件成本+ 運營成本(電費、空調費等)

基本上,礦工的挖礦獎勵就是區塊獎勵和交易費。礦工自己與總的支出相比較,包括硬件和電費成本。

但這個簡單的公式也有幾個複雜的地方:第一,硬件投資是固定的,但電費是個變量,隨時間變化。第二個複雜之處是,礦工得到的獎勵取決於他們發現區塊的速度,這不僅取決於他們硬件的能力,還取決於他們的計算能力佔全球計算能力的比例。第三是挖礦產生的成本通常是用美元和其他傳統貨幣表示的,但他們得到的獎勵是比特幣。所以這個方程在任何時候都有一個隱藏的因素,就是比特幣的匯率。第四,到目前為止,我們都假設礦工會誠實地遵守協議。但礦工有可能選擇用一些其他的挖礦策略,而不總是試圖延展最長的有效分支。所以這個方程沒有囊括所有礦工可以用到的不同策略的細微差別。事實上,要想分析挖礦是否有意義,是一個博弈論問題,沒有那麼容易找到答案。

到此為止,我們已經較好地理解了比特幣如何實現去中心化。我們現在總結一些關鍵點,放在一起以便更好地理解。

我們首先從身份開始。根據我們知道的,比特幣協議不需要真實世界的身份就可以參與。任何用戶任何時刻都可以製造一對匿名的鑰匙。如果愛麗絲想付給鮑勃比特幣,比特幣協議裡沒有詳細說明愛麗絲如何得知鮑勃的地址。在這些匿名的鑰匙對用作身份的情況下,交易其實是向整個點對點網絡廣播的信息,把比特幣從一個地址轉到另一個地址。比特幣只是交易輸出,我們在下一章節會深入討論這個問題。

不存在所謂「1比特幣」這樣的東西

比特幣沒有固定面額,不像美元。具體來說,沒有「1比特幣」這樣的特別名稱。比特幣只不過是交易輸出,在現在的規則裡,它們可以是精確到小數點後8位的任意值。可能的最小價值是0.000 000 01 BTC(比特幣),我們稱之為1個中本聰(比特幣的發明人)。

比特幣點對點網絡的目標,是把所有新的交易與新的區塊傳播到所有比特幣節點。但這個網絡很不完美,只能盡其所能來傳遞信息。這個系統的安全性不是來自點對點網絡的完美,而是來自我們本章中重點討論的區塊鏈和共識協議。

當我們說一個交易被放進了區塊鏈,我們真實的意思是這筆交易已被確認了許多次。對於多少次確認足以讓我們確信交易已包含在內,並沒有一個固定的數字,但6次是個常用的數目。一筆交易收到的確認越多,你就越可以確信這筆交易被放進了區塊鏈。經常會有一些孤塊,或者沒有進入共識鏈的區塊。有很多原因可以導致一個區塊變為孤塊。這個區塊可能包含一個不正當交易,或者試圖雙重支付。也有可能是網絡延遲,這裡指的是,兩個礦工可能相隔幾秒找到了新的區塊,這兩塊幾乎同時被廣播到網上,那其中一塊肯定會被丟棄。

最後我們看了哈希謎題與挖礦。礦工是決定參與創造新區塊競爭的特殊類型節點。如果其他礦工繼續在他們的區塊上搭建的話,對於他們努力的回報是新造的比特幣(新區塊獎勵)和已經存在的比特幣(交易費)。很微妙也很重要的一點是:假設愛麗絲比鮑勃的計算能力要強大100倍,但這並不意味著愛麗絲一定能夠贏得找到下一區塊的競賽,而是愛麗絲和鮑勃發現新區塊的概率比率是100︰1。長期下來,鮑勃找到的區塊數量是愛麗絲的1/100。

我們預計礦工們會處在經濟平衡點附近,意味著他們得到的獎勵大致等於他們在硬件與電費上的花費。理由是如果一個礦工持續虧錢,他會停止挖礦。反之,如果硬件和電費固定的情況下,挖礦利潤很高,那更多的挖礦設備會加入網絡。計算能力的增加會導致難度提高,每個礦工預期的回報便會降低。

比特幣深度使用了分佈式共識的概念。在傳統貨幣系統中,共識的作用是有限的。具體來說,有一個共識過程來決定貨幣的匯率。這在比特幣裡當然也是對的——我們需要圍繞比特幣價值的共識。但在比特幣裡,我們還需要對賬本情況的共識,這是由區塊鏈來完成的。換句話說,甚至你擁有多少比特幣的算法都是依賴共識的。當我們說愛麗絲擁有一定數量的比特幣,我們真實的意思是說在比特幣點對點網絡,在區塊鏈中記錄的所有愛麗絲地址上擁有的比特幣數量總額。這是比特幣系統的一個終極真相:擁有比特幣就是其他節點對給定的一方擁有這些比特幣的共識。

最後,我們必須對整個系統的規則達成共識,系統規則有時不得不改變。比特幣規則改變有兩種:對應為軟分叉與硬分叉。我們把關於它們區別的詳細討論放到第3章和第7章中。

啟動加密貨幣

另一個微妙的概念是「自舉過程」(bootstrapping)。比特幣系統裡三個不同的想法——區塊鏈的安全性、挖礦生態系統的健康程度,以及貨幣的價值在相互作用。我們顯然希望區塊鏈安全,這樣比特幣才能成為一種可行的貨幣。想要區塊鏈安全,就要保證黑客不能傾覆共識過程。這反過來意味著,一個黑客不能夠製造一大堆挖礦節點來佔據50%以上的新區塊生成。

但如何實現這一點呢?前提條件是有一個健康的挖礦生態系統,其中大部分節點是誠實的、遵守協議的。但健康的挖礦生態系統的前提條件又是什麼呢——我們什麼時候可以保證大多數礦工會把大多數計算能力運用到解哈希謎題的競爭中呢?好吧,只有在比特幣價位高時他們才會這麼做,因為他們收到的獎勵是比特幣而他們的花費都是美元。所以幣的價值越高,礦工就越有動力這麼做。

那如何保障幣的價值又高又穩定呢?只有用戶普遍相信區塊鏈的安全性才會發生。如果他們認為網絡隨時會被攻擊者顛覆,那比特幣作為貨幣將一文不值。所以你可以看到區塊鏈的安全性、挖礦生態系統的健康程度和貨幣的價值這三者之間相互依賴、相互作用的關係。

因為這三者之間的循環依賴關係,其中一個的存在可以用另一個的存在推測出來。在比特幣初創之時,這三者都不存在。除了中本聰自己,沒有人在運行挖礦軟件。比特幣作為貨幣沒有什麼價值。事實上,因為沒有很多人挖礦,區塊鏈也很不安全,任何人都可以輕易顛覆這個過程。

這三者在比特幣的世界如何從無到有並沒有一個簡單的解釋。媒體的關注是其中一個因素——聽到比特幣的人越多,感興趣挖礦的人就越多。挖礦的人越多,人們就會對區塊鏈的安全越有信心,因為更多挖礦活動在進行,以此類推。附帶提下,每種其他虛擬貨幣想要成功也需要想辦法通過自舉過程解決這個問題。

51%攻擊

我們考慮一下如果共識失敗,並且存在一個在比特幣網絡裡實際掌握了絕大部分挖礦計算能力的51%攻擊者,會發生什麼情況。我們考慮多種可能的攻擊,分析哪些可能被這樣的攻擊者實際使用。

首先,攻擊者可以從現存的地址裡偷幣嗎?你可能猜到了,不行,因為除非你能推翻加密方法,否則從現存地址偷幣是不可能的。它不足以顛覆共識過程。這樣說還不是很清楚。我們不妨假設,51%攻擊者製造了一個不正當的區塊,裡面有一筆不正當交易把幣從不受其控制的地址轉移到自己的地址。攻擊者可以假裝這是一筆正當的交易,繼續在這個區塊上建造,甚至可以把它變成一個最長的支鏈。但其他誠實節點不會簡單地接受這個存在不正當交易的區塊,它們還是會在網絡中找到之前最後一個正當的區塊,基於此繼續挖礦。所以將會發生的是,鏈上出現了我們稱之為分叉的情況。

現在想像一下這個攻擊者想把這些非法的幣花掉,付給某個商家鮑勃用來買他的商品或者服務。鮑勃可以假定運行著自己的比特幣節點,而且是一個誠實節點。那鮑勃的節點會因為含有不正當的交易而拒絕這個非法的分支。因為那裡面的數字簽名不吻合。所以鮑勃的節點會忽略這個最長的支鏈,因為這是一個非法的支鏈。而因此,這不足以顛覆共識。你需要推翻加密方法偷取比特幣。所以我們認為,這個攻擊對51%攻擊者來說是不可能的。

我們應該注意到這是一個想像的實驗。如果實際中真的有51%攻擊的跡象,可能會發生的是開發者會注意到並採取應對措施。他們會升級比特幣軟件,我們可以期待系統規則(包括點對點網絡)可能會做出改變,使得這樣的攻擊難以成功。但我們無法準確預測。所以,我們是在一個簡化的模型上討論51%攻擊,但除此之外系統規則並沒有改變和扭曲。

我們考慮另一種攻擊。51%攻擊者可以壓制其他交易嗎?比如攻擊者特別討厭某個用戶卡羅爾。他知道卡羅爾一些地址,想使屬於這些地址的幣都無法使用。這可能嗎?由於攻擊者控制了區塊鏈的共識過程,他可以輕易地拒絕創造包含來自卡羅爾地址的交易的新區塊,他還可以進一步拒絕在含有類似交易的區塊上延展。但他不能阻止這個交易被廣播到整個點對點網絡,因為網絡不依賴於區塊鏈或者共識,我們假設攻擊者還沒完全掌控網絡。他不能阻止這個交易被發送到絕大部分節點上,所以即使他成功了,大家也都知道發生了攻擊。

攻擊者可以改變區塊獎勵嗎?比如說攻擊者開始假裝把區塊獎勵由25個幣改成100個幣?這是對系統規則的改動,因為他沒有控制所有誠實節點上運行著的比特幣軟件備份,所以同樣不可能。這和為什麼攻擊者無法裝入一筆非法交易的道理是一樣的。其他節點不會輕易認可區塊獎勵提高,所以他也無法使用這些區塊。

最後,這個攻擊者會摧毀大家對比特幣的信心嗎?好吧,讓我們想像一下會發生什麼。如果有很多雙重支付嘗試,諸如節點不延展最長的有效分支,以及發生其他攻擊,那麼人們有可能會覺得比特幣不再是一個他們可以信賴的去中心化賬簿。人們會對貨幣失去信心,我們可以預料到比特幣匯率會重挫。實際上,如果人們知道有一方控制了51%的哈希算力(hash power),即使這個人沒有發動任何攻擊,大家也可能會對比特幣失去信心。所以,這不僅僅是可能,事實上任何形式的51%攻擊都會摧毀大家對貨幣的信心。這其實是51%攻擊可以實現的最主要的實際威脅。考慮到在攻擊比特幣,實現51%多數的過程中,財政角度的巨大花費,我們討論的這些攻擊都會變得不切實際。

我們希望至此你對比特幣的去中心化管理有了一個完整的瞭解。你也應該理解了比特幣裡的身份如何工作、交易是如何被傳播和驗證的、比特幣裡點對點網絡的作用、如何用區塊鏈達成共識、函數難題與挖礦是怎麼回事。這些概念為理解比特幣的更多微妙細節和細微差別提供了堅實的理論基礎,是一個良好的出發點。這些我們在後續章節中會進一步看到。

延伸閱讀

比特幣白皮書:

Nakamoto, Satoshi. 「Bitcoin: A Peer-to-Peer Electronic Cash System.」 2008.

下載地址:https://bitcoin.org/bitcoin.pdf.

最初的基於工作量證明的介紹:

Back, Adam. 「Hashcash—A Denial of Service Counter-measure.」2002.

下載地址:http://www.hashcash.org/papers/hashcash.pdf.

Paxos共識算法介紹:

Lamport, Leslie. 「Paxos Made Simple.」 ACM Sigact News 32(4), 2001: 18-25.

《區塊鏈:技術驅動金融》