月份: 2021 年 6 月

二、為什麼比特幣挖礦很耗電?

為什麼挖比特幣很耗電?
要了解這個問題前,我們先必須了解一下,挖礦軟體的發展。

最早開始,挖礦軟體都是採用CPU來運算的方式,透過分散式的軟體持續性的接受區塊資料,執行加密運算,再將運算完的結果回傳,完成一次這樣的流程,便算是完成一次的工作。最早開始時,比特幣也是透過CPU運算的方式來計算這樣的獎勵。

但使用CPU來運算雖然可以完成運算,但是就運算的效率來說是非差低的。而當時顯卡大廠輝達(nVidia)在他們的顯示卡的驅動程式中,為了讓電腦進行高速的影像學習、深度運算,有推出一套CUDA運算函式庫,可以使用顯卡的運算單元來進行計算,由於顯卡的運算架構與CPU不同,往往CPU的核心以當時來說,可能8核心就已是非常高規格了,但顯卡的架構不同,一張顯卡的核心數量可能是CPU的十至百倍,當有適合的指定集可以做運算時,使用顯卡來運算的效率也會有相當於CPU十至百倍甚至更快的速度。但即使使用顯卡來運算,並不至於對於當前的能源使用有很大的影響。

隨著時間演進,比特幣也漸漸的開始有價值了,因此對於挖礦的需求也漸漸的上升。
這時開始有人使用ASIC晶片來進行挖礦軟體的運算,而什麼是ASIC呢? 簡單來說,是一種客製化的運算晶片,可以針對特定的指令來做最佳化的運算晶片。而要製造ASIC晶片並非是一件容易的事,而且要大量量產的話更是需要龐大的資金。這時不得不談一間在比特幣圈人人都知道的公司「比特大陸」(Bitmain),他們開發出有著比顯卡高上千倍以上運算效率的挖礦機器,採用ASIC的晶片,以多個晶片組合為一台挖礦機器,並搭配設計好的軟體,讓挖礦不再像先前一樣需要複雜的設定。也因此讓許多想要靠著挖礦發財的人購買了大量的機器來進行比特幣的挖礦。但這樣的挖礦機器,由於組合了很多晶片為一台機器,需要的功耗都是上千瓦以上,而且使用ASIC挖礦的人並不會只使用單一台礦機來挖,而是數十台,甚至數百台的機器,也因此對於用電量就顯得非常的可怕,更會有人挺而走險,以偷電的方式來挖礦。

綜合以上來看,我們可以知道讓挖礦成為一個耗電的代名詞乃是由於ASIC挖礦機的產生,礦工為了求收益最大化,而讓單位時間使用的能源不斷上升,對於挖礦產生的負面觀感也越來越重。
以上是針對比特幣的說明,有鑑於ASIC是一種耗電且會破壞挖礦生態的原因,讓大部份的資源集中於少數的個體,違背了去中心化的本意。因此,後起之秀的以太坊的加密貨幣對於ASIC晶片在運算的演算法,就了化的工夫,為的是不要讓ASIC礦機再有機會被用來挖礦,讓整個加密貨幣的生態平衡遭到破壞,也因此以太幣的挖礦就變成是顯卡專用的挖礦程式了,但這又造成當今的缺顯卡潮,而這又是另一個故事了。讓我們之後再來分享。

一、挖礦究竟是在挖什麼?

目前大家對於挖礦的印象就是會耗費很多能源(電力)、主要是在挖虛擬的貨幣、因為很多人都用顯示卡去挖礦導致顯示卡一貨難求… 等等。其實這些只是一種對於挖礦這件事而產生的現象而已,並非是原本這項技術主要的目的。

所謂的挖礦,其實就是一種分散式運算系統的概念,或者也可以稱呼做【去中心化】系統。為何要這樣稱呼呢?
其實這只是相對應於傳統的電腦運算架構而產生的稱呼,傳統的電腦計算架構,主要是會有一部伺服器,由伺服器指派工作或是傳送資料給客戶端或運算端的架構,所有的工作分配或是資料儲存的工作都是位於伺服器端,也就是我們稱呼的 Client-Server 架構,這樣的架構雖然分工很明確,但是當Client 連線的數量變多時,Server端的壓力就會非常的大。也因此,相對於 Client-Server 架構,發展出分散式的處理架構,而這中間最夯的就是目前的加密貨幣的運算架構了,以專業一點的名詞來稱呼就稱為【區塊鏈】。

要瞭解區塊鏈的技術,實在是有點太難了,我們可以從P2P的架構來思考,傳統檔案式的P2P架構,就可以說是一種區塊鏈的前身了,而檔案式P2P的發展目的,就是為了能夠分享檔案,卻不需要高額的伺服器頻寬,讓伺服器不會因為同時間多人下載而無法負荷,反之,在P2P的架構底下,檔案同時間越多人下載,在其技術的層面上來看,是會讓總頻寬越大,進而使得下載速度越快,其他的案例也可以想想SETI的外星人訊號運算、Folding@Home的蛋白質摺疊運算系統等等,都是分散式運算系統的一些可以模擬參考的實例。

而加密貨幣及區塊鏈真正的起源,可以說是由比特幣開始,最早比特幣由幾位專業的技術人員包含中本聰等人所發展出來的,最早開始比特幣的區塊鏈只可以說是一種交易的計算與儲存媒介,而參與這個計算架構的每一員,都會因為有付出電腦的運算力,而獲得等值的代幣作為獎勵,最早開始這個代幣並沒有任何價值,而且在早期由於要推廣這個運算架構,提供的代幣獎勵的數量很高,但實質上並沒有太高的價值,可以想像是遊戲中的虛擬幣而已,不存在任何實體的價值。但隨著以太幣的出現,出現了加密貨幣的數位合約開始,開發者可以透過數位合約在以太網上架構自己的服務,從此之後各式各樣的加密貨幣如雨後春筍般的出現,世面上有90%以上的加密貨幣是由乙太網的數位合約衍生出來的。

接下來要探討的是為什麼去中心化在目前這個世代是一個重要的議題?
首先要先說明加密貨幣的一個基本的原理,當今天產生一筆交易後,這筆交易會傳送到網路上的每個節點來運算,當運算量超過一定的次數後,這筆交易才會被認定為一筆成功的交易,而這個交易的資料會分散於整個網路的節點當中,也因此在這個去中心化的網路架構中,就會具備了以下的特點:
1. 不可否認性:由於資料經過許多節點認可後才成為一筆成功的交易,因此要修改這筆資料同時也是必須經過所有的網路節點運算後才能成立,且所有的記錄都是會被存在於整個交易網路的資料中。
2. 不可修改性:所有的交易記錄會儲存於每個全節點的錢包當中,每個人都會擁有一份完整的交易備份資料,也因此光修改個人的錢包是無法讓這個資料生效的,錯誤的資料在網路中將會被多數決的資料修正。
當具備了以上的特性後,我們可以想像,在傳統的資料庫系統中,當駭客要修改單一筆資料時,只需取得相關的權限便可修改一筆交易資料,而在區塊鏈的架構中是相對困難非當多的,同時當網路持續存在時,便可以保障這個資料會永久的存在。

但並非區塊鏈就是完美無缺的,其實也因為每筆交易都必須經過一定數量的節點運算認可後,才能成為一筆成功的交易,那麼一筆交易的時間就會耗費相對長的一段時間,可能是數十分鐘至數小時不定。而且如果短時間內交易量過大時,交易的速度可能會因此更加緩慢。

以上是對於挖礦原理的一些簡述,之後會有專門的主題來討論到底為什麼挖比特幣會很耗電,為什麼顯卡會缺貨,到底拿去挖什麼幣?