礦機雜談

引言
由於本人從事了多年嵌入式硬體的開發,對礦機很有興趣,近幾天花了一點時間研究了一下礦機的發展歷程。
什麼是挖礦
使用PoW共識機制的加密貨幣,需要通過解決謎題來競爭區塊的生成權,並隨區塊的誕生髮行新貨幣。具有代表性的有比特幣、萊特幣、達世幣、以太坊、門羅幣等。
求解謎題的過程就叫挖礦,求解謎題參與競爭需要使用的裝置就稱為礦機,礦機消耗電力,求解謎題,最終生成區塊,獲得獎勵。
而執行礦機,獲得收益的人群,我們親切的稱他們為礦工。
每種加密貨幣使用的PoW演算法不盡相同:
比特幣:SHA-256
萊特幣:Scrypt
達世幣:X11
以太坊:Ethash
門羅幣:CryptoNight
打個比方來說,挖礦就是一場持續不斷進行的“飢餓遊戲”,全世界的礦工都會參與,而遊戲的獎品就是數字代幣。
礦機分類
加密貨幣的挖礦裝置分為以下幾種:
1. CPU
2. GPU
3. FPGA
4. ASIC
1. CPU礦機
在一種加密貨幣發展的早期,使用者稀少,挖礦競爭並不激烈,使用普通的CPU即可挖到區塊。
最早,BTC的創世區塊就是由中本聰用他的電腦挖出來的。
但是隨著算力的不斷提升,用電腦CPU挖礦現在是一件得不償失的事情。因為收益很少,根本無法覆蓋電費。
2. GPU礦機

隨著挖礦人群的增多,礦工間的競爭加劇,比CPU更適合挖礦的GPU,也就是我們常說的顯示卡開始加入,GPU的挖礦速度大約是CPU的幾十倍。
你肯定聽說過在2010年的5月18號,一個佛羅里達的程式員小哥用1W個BTC買了2個匹薩,這必然是歷史上最昂貴的匹薩!即使現在BTC價格走低,這2個披薩也價值400多萬人民幣。所以現在每年的5月18日就成為了幣圈的匹薩節。
但你有沒有想過一個問題: 為什麼這個程式設計師小哥有這麼多的BTC ?
因為他是 使用GPU挖礦的第一人 。
在他之前的大部分挖礦都是使用CPU的,他覺得CPU挖礦不過癮,然後發現GPU要比CPU挖礦快800倍,於是就在比特幣還不普及的階段,他用GPU挖了大量的比特幣。根據他發的帖子記載,當時他每一天的收益是幾千枚BTC,這也不奇怪為什麼拿出1W枚來換取披薩了。
幾年以後這個程式設計師接受採訪,他表示並不後悔,他覺得: 購買匹薩在當時證明了比特幣的貨幣交易屬性,是一件值得驕傲的事情。 他很自豪成為用BTC買披薩的第一人。
親愛的小夥伴,你看完後有沒有受到啟發? 你現在還有機會成為用BTC購買驢肉火燒的第一人 ^_^
3. FPGA礦機
CPU和GPU屬於通用裝置,所以挖礦程式只能利用晶片的一部分電晶體。於是,更加專業的FPGA被用來挖礦。

要了解FPGA礦機,就得先解釋一下FPGA是什麼。FPGA(Field-Programmable Gate Array),中文名叫做 現場可程式設計門陣列 。
比較通俗的理解是,FPGA就是把一大堆邏輯器件(比如與門、非門、或門、選擇器)封裝在一個盒子裡,盒子裡的邏輯元件如何連線,全部由使用者(編寫程式)來決定。這就好比我們買了一套樂高玩具,怎麼拼就看熊孩子了。
根據寫入程式的不同,FPGA就可以實現任意的功能,而挖礦自然也不在話下。而且由於FPGA靈活度高,可以支援不同的演算法:不僅可以支援比特幣的SHA256演算法,也可以支援GPU礦機擅長的萊特幣的Scrypt演算法。
FPGA的缺點是晶片產量不及CPU和GPU,程式設計難度較大,裝置成本更高。但是,由於FPGA減少了CPU和GPU中那部分挖礦不能利用的電晶體,相比同時代的CPU、GPU礦機,算力效能不佔優,但功耗要低很多。
對於礦工來說,挖礦開支的大頭並不是昂貴的礦機,而是電費。因此只要功耗低,用電少,FPGA礦機的總體收益是高於CPU和GPU的。
4. ASIC礦機
但當加密貨幣的價值變得足夠高之後,挖礦裝置的終極形態將會出現,這就是ASIC。
ASIC的全稱是 專用積體電路 ,也就是說,針對加密貨幣專門從零開始設計一款新的晶片,晶片設計的難度非常大。同時,晶片生產(流片、封裝、測試)的啟動成本極高,動輒要幾百萬RMB。
這一切都造成了ASIC礦機產能低、價格高昂。不過由於ASIC礦機的晶片是完全針對PoW演算法開發,ASIC礦機的速度非常快,比FPGA礦機的速度高一個數量級,單位能耗下完成的挖礦任務也更多。
目前全球最大的ASIC礦機生產商是位元大陸,憑藉自行研發的挖礦晶片,其生產的螞蟻礦機幾乎壟斷了整個市場。

由於ASIC礦機容易壟斷,在利益的驅使下,現在礦機廠商有很強的動力去開發ASIC礦機。
總體上說,礦機的演進過程為: CPU→ GPU → FPGA → ASIC 。
技術演變
所以某個幣種的ASIC礦機一旦出現,CPU、GPU、FPGA就會陷入挖礦收益低於電費的情況,很快這三者就會銷聲匿跡。
由於ASIC礦機的出現,挖礦的門檻將會極大的提高,挖礦將會變得集中化,最後集中到少數幾個寡頭手中。目前來看,這並不符合加密貨幣和區塊鏈去中心化的思想,容易出現“礦霸”。礦霸掌握著大量的算力,對整個電子幣生態的發展有著非常大的影響,2017年比特幣的擴容、隔離見證、比特幣現金分叉等等事件,無不顯示出礦霸的巨大影響力。
為了避免礦霸的出現,減少算力集中化的趨勢,比特幣之後出現的加密貨幣在對抗ASIC上做出了很多嘗試。
萊特幣使用的Scrypt演算法,通過使用大量記憶體的方式,限制ASIC的效率,增大ASIC的設計難度。然而,隨著萊特幣價格的高漲,演算法缺陷被找到,ASIC礦機最終被設計出來。
達世幣使用X11演算法,使用11種Hash演算法的組合,將原來只需要針對一種演算法設計ASIC,變成了需要針對11種演算法,這進一步提高了ASIC的設計難度和成本。最終,ASIC礦機還是被設計出來。
經過了萊特幣和達世幣的嘗試,加密貨幣的設計者們慢慢總結經驗和教訓。
到現在為止,以太坊和門羅幣的演算法設計相對成功,目前,尚未設計出ASIC礦機,以顯示卡礦機為主。
而在ASIC礦機的出現後,FPGA礦機已經逐漸淡出人們的視線。因為ASIC是為專一功能打造,算力與功耗相較FPGA更具優勢,所以現在基本已經看不到FPGA礦機,取而代之的是ASIC礦機與GPU礦機。
當然,FPGA礦機並沒有死掉,現在依然有團隊在研發新的FPGA礦機,針對某些沒有出現ASIC礦機的幣種(如以太坊和門羅幣),FPGA礦機或許有一天會東山再起,取代這個幣種的GPU礦機。
但一旦這個市場的利益最夠大,最終肯定會有礦機廠商研發出針對這個幣種的ASIC礦機,形成新一輪的迭代。最終還是符合 GPU → FPGA → ASIC的規律。