BitCoin三部曲:比特幣挖礦實戰 三大作業系統動手實際挖

在上一期《BitCoin二部曲:挑選最佳挖礦工具》中,筆者介紹了挖取BitCoin前的事先準備動作;接下來,筆者將會實際示範向讀者介紹,如何利用三大電腦作業系統平台(Windows、Mac、Linux)實戰挖礦。

多數情況下,挖礦程式都會優先自動使用GPU挖礦。為了確保GPU是被優先使用,第一件要確定的事情就是電腦裡面的繪圖卡驅動程式要被正確安裝,作業系統也要能完全辨識。另外,在Linux之類的Unix-Like作業系統下,如果沒有完整編譯好的挖礦程式版本,需要先自行安裝一些必要的函式庫,以便執行之後相關的指令編譯。若遇上有CUDA或是AMD OpenCL的挖礦程式,步驟也許還會多上一些,因為要裝的函式庫更多;這樣的好處是原生編譯出來的挖礦程式執行效能會比較好。本文筆者會針對各個平台的安裝使用逐一介紹,並特別提醒要額外安裝的函式庫(Mac/Linux)。

用Windows挖礦最簡單

Windows作業系統的挖礦最簡單,單純使用CPU的話,在Windows 7執行GUIMiner幾乎可以不用特別安裝函式庫(如果是Windows XP必須另外安裝微軟的Visual C++ 2008 Redistributable Package)。GUIMiner對AMD支援OpenCL的繪圖卡有較佳的表現,使用AMD繪圖卡的讀者一定要用。

打開GUIMiner的網頁(guiminer.org),點選首頁上的Download字樣,就會自動下載GUIMiner。

 

下載回來的GUIMiner是一個7-zip自動解壓縮檔,執行後預設會解壓縮到目前存放的目錄。

 

解壓縮完成的GUIMiner資料夾裡面有一個GUIMiner主程式,滑鼠雙擊執行。

 

如果安裝的是不支援OpenCL的繪圖卡,則會跳出提醒畫面。但不管是要用GPU或是CPU挖礦,這都不會受影響,反正按OK繼續就好。

 

GUIMiner的主畫面可以自行選擇礦池伺服器,而世界各地主要的伺服器也都內建在裡面,包含筆者介紹的slush’s pool。在Username欄位填入worker名稱、旁邊Password則是該Worker對應的密碼、Device則是選擇要用來運算的裝置、下面CPU Affinity的核取方塊可以勾選要使用的處理器核心,最後按下Start Mining之後就可以開始挖礦了。

 

按下View的選單,啟用Show summary與Show console會出現額外的兩個分頁,可以查看更多的資訊。

 

不要懷疑,在Windows環境下挖礦真的就是這麼簡單。值得一提的是,若是在虛擬機器跑Windows的環境下執行GUIMiner,可能會造成部分功能失常。而Mac版的GUIMiner介面與Windows版本大致相同,容筆者在說明Mac的GUI Miner使用時再一併介紹。接下來先從Mac與Linux平台挖礦操作說起。

需要文字介面輔助的Mac OS X

筆者使用的是最新版Mac OS X 10.8,由於在Mac環境下多數人都是使用圖形化介面,但在軟體安裝過程中會需要用到文字介面,加上筆者支援CUDA繪圖卡的機器都是Mac,所以文字與圖形化介面的兩種挖礦軟體都會介紹。

Mac OS X下面示範的是編譯poclbm這個挖礦軟體,poclbm事實上就是GUIMiner的核心,差異僅在於有沒有被包裝成圖形化介面而已。要編譯poclbm之前,要先安裝Xcode這套開發工具,然後從Xcode開啟命令列模式相關工具。完成環境設定後,再開始編譯工作與執行挖礦。

Xcode請直接從App Store安裝,需要使用約2GB左右的硬碟空間。

 

在Xcode的主選單,找到偏好設定(Preferences)。

 

將偏好設定視窗切換到Download頁面,在Components的分頁裡面有一個Command Line Tools的項目,點選右邊的Install按鈕即可安裝;Xcode會自動下載必要的安裝檔案並設定完成。

 

接著要安裝PyOpenCL的函式庫,這是一個用Python寫的模組。

基本上使用OS X 10.7以上都不用太擔心內建Python版本太舊的問題。主要經由GitHub進行安裝,開啟終端機後依序輸入以下指令即可:

git clone http://git.tiker.net/trees/pyopencl.git cd pyopencl git submodule init git submodule update python configure.py python setup.py build

完成以上指令的輸入,Python會開始編譯PyOpenCL,建立一個之後要被拿來安裝的套件。

 

編譯的過程中會看到很多Warning的字樣,可以略過不管,主要的程式並沒有出錯。等到命令輸入的提示又出現,輸入make編譯。編譯完成後再輸入sudo python setup.py install,接著會被要求輸入管理員權限的密碼,密碼正確會開始安裝。

 

等到出現Finished processing dependencies for pyopencl==2013.1字樣後,表示PyOpenCL已安裝完成2013年1月版本。

 

完成PyOpenCL安裝後,如果玩家使用的是內建AMD Redeon繪圖卡的Mac,就能運用機器裡面的繪圖卡。使用NVIDIA的玩家記得先安裝最新版的CUDA驅動程式,之後可以從偏好設定裡面升級新版。完成繪圖卡驅動程式的安裝,我們要繼續以終端機執行poclbm這個挖礦程式。

NVIDIA最新的CUDA驅動程式請到NVIDIA的Developer Zone下載。

 

安裝完成CUDA驅動程式後,OS X的偏好設定裡面會多出一個CUDA的項目。

 

為了確保獨立顯卡被強制開啟,請把OS X裡面能源節約器的「自動圖形切換」取消勾選。

 

一樣先從github取得poclbm的原始碼

 

終端機執行以下指令:git clone https://github.com/m0mchil/poclbm.git cd poclbm/

以上的指令分別是下載poclbm與切換到下載後的資料夾,接著我們要做最重要的事:與礦池建立連線,開始計算的工作。在poclbm的資料夾下輸入指令
python poclbm.py http://worker的名稱:密碼@api.bitcoin.cz:8332 –verbose
執行之後就開始連線挖礦了!

挖礦的時候,poclbm會先列出所有可計算裝置,自動選擇GPU作為挖礦的計算來源。如果讀者想要自行指定挖礦裝置,可以用參數-d加上裝置編號。例如筆者的裝置0是CPU、裝置1是GPU,預設會用裝置1執行,但是筆者想要用裝置0,於是多下了指令-d 0

強迫用CPU計算,通常裝置0都是CPU,所以終端機的指令要改成python poclbm.py http://worker的名稱:密碼@api.bitcoin.cz:8332 –verbose -d 0

 

使用poclbm挖礦,要確認其有沒有在工作,最簡單的方法就是檢查終端機是否在動作。一個典型的訊息就是列出與礦池主機的通訊埠,時間、裝置、計算效率(每秒處理的數據量)還有資料被接收的狀況。除此之外,如果讀者想要發揮1台電腦所有的計算效益,不妨開啟2個終端機視窗,同時讓poclbm執行CPU與GPU的挖礦。

OS X雖然有簡單人性的介面,但是使用終端機操作以上的工作卻難免小複雜。如果讀者想要多使用一點記憶體,透過OS X版本的GUIMiner也是可以。執行之後的畫面同Windows版本,筆者利用下面圖說解釋GUIMiner的操作方式。

查看終端機的挖礦狀態訊息,可以看到挖礦的工作不斷再更新。如果有出現accepted的字樣,表示階段性的區塊驗證結果正確。狀態訊息中最後一個Rej的項目,表示驗證的區塊中有多少是失敗的。分子是失敗的區塊數目,分母是已經處理完成的區塊(也就是每出現一次accepted,就會加1),最後計算出對應的百分比。

 

Mac版的GUIMiner介面跟Windows版差異不大,先選擇礦池的伺服器之後,填入Worker的名稱,旁邊輸入密碼後,選擇裝置就可以開始執行挖礦。下面狀態列會出現目前資料處理的情況與每秒運算量。GUIMiner同時間可以處理多個礦池,如果你的處理器核心夠多,可以讓不同的核心與不同的礦池互動。

 

若是嫌狀態列的資訊太少,從選單開啟Summary,可以顯示完整的處理結果,列出速度、被接受與失敗的數量。

 

Console的內容通常是列出礦池的開採狀況,例如發現新的區塊。

 

專業玩家適用的Linux

Linux版本的分支非常多,對於硬體支援的情形也不一定,在繪圖卡驅動程式的設定上也頗有難度(尤其是安裝NVIDIA的CUDA驅動程式)。對於多數Linux玩家而言,可能也不會準備太高檔的繪圖卡。大致上Linux下的操作跟OS X的終端機指令執行並沒有太大的差別,玩家可能要做的事情就是逐一把套件庫依照作業系統的安裝方法裝好。

例如:gcc的編譯工具,在Ubuntu下的安裝就是sudo apt-get install g++。然後git這個版本控管的工具預設也不會有,所以執行sudo apt-get install git,Ubuntu會自動連線到網路上的套件庫伺服器,下載後自行完成安裝設定。同理,PyOpenCL也是一樣(套件庫的名稱是python-pyopencl),請讀者自行完成Linux下的安裝。筆者這邊主要討論的是純CPU的挖礦工具cpuminer。

Linux每一個分支,都有自己的套件安裝管理工具。執行挖礦前所需的工具或者函式庫通常可透過指令安裝,例如Ubuntu用apt-get;Fedora用yum。圖片示範的是Ubuntu安裝git的情形。

 

cpuminer要使用的Linux套件主要有以下幾個:make、gcc、libcurl、jansson。只要下好正確的安裝指令sudo apt-get install make gcc libcurl4-openssl-dev libjansson-dev,基本上就可以建立好正確的編譯環境,上面的幾個套件都很常見,至少筆者在Raspberry Pi的Raspbian與桌機的Ubuntu上都成功安裝(這兩個作業系統都是根基於Debian開發的)。

接著從cpuminer的載點下載之後,經過configure與make之後,就能產出cpuminer的執行檔minerd,配合參數直接與礦池溝通後開始挖礦。

下載cpuminer-1.0.2適用Linux與BSD的版本後解壓縮。指令是:wget http://yyz.us/bitcoin/cpuminer-1.0.2.tar.gz tar xfv cpuminer-1.0.2.tar.gz

 

切換到解壓縮後的資料夾,並配置編譯環境後編譯執行檔。指令是:cd cpuminer-1.0.2 ./configure make

 

 

cpuminer-1.0.2經過編譯後,主程式是minerd。跟範例的Bitcoin.cz礦池溝通挖礦,指令為./minerd –url http://api.bitcoin.cz:8332 –userpass worker名稱:密碼成功執行之後,cpuminer會使用所有的處理器核心(thread)開始運作。

 

cpuminer出現PROOF OF WORK RESULT: ture (yay!!)的訊息,代表挖礦的結果正確,被礦池接受了。

硬體的優劣直接影響挖礦成果

礦池網站通常會提供網頁介面或是API,讓礦工可以隨時查看挖礦的結果。BitCoin.cz的介面非常簡單,所得的收益直接看Total reward這個欄位就知道。Total reward是Unconfirmed reward(未確認獎勵,黃色)與Confirmed reward(確認獎勵,綠色)的總和;反觀紅色的Estimated reward則是會先高估然後依實際計算效率一直遞減,參考意義不大。

從Total reward的地方,就可以知道現在當礦工真的是在賺辛苦錢,金額累積速度實在太慢。

每個礦工是否正常運作,可以從Workers這裡看出,並藉由最後送出運算資料的時間(Last Share),判斷計算節點是否存活。並由Mhash/s*的地方,查看單一設備的計算效能。Found blocks就算了,筆者測試用的機器計算能力太小,不太可能找到新的區塊(找到新區塊的礦工可以分配到多一點BitCoin)。

Workers的部分,可以用來判斷挖礦機器是否正常運作(與礦池持續溝通,送交結果)。Mhash的數值越大越好,表示計算的效能理想。

 

另外,在Linux介面下可能沒有辦法用瀏覽器查看挖礦結果,所以筆者用Ruby簡單寫了一個範例(需先安裝JSON與JSONPATH兩個RubyGems),來存取BitCoin.cz這個礦池所提供的API。這個API主要是回傳JSON格式的結果,經過剖析後就成了可視度高的訊息,有興趣的讀者可以自己研究看看。

從BitCoin.cz的個人頁面上方,點選Manage API tokens之後,就可以看到礦池提供的兩個API,都是用JSON格式回報挖礦的運作情形;也可以自己寫程式顯示自己想看的資訊。

 

以Ruby撰寫的程式範例,剖析BitCoin.cz的礦池。

require ‘rubygems’

require ‘open-uri’

require ‘json’

require ‘jsonpath’

 

json= JSON.parse(open(“https://mining.bitcoin.cz/accounts/profile/json/203034-8210a3277140d425f51bb3b6eac307bf“).read)

 

puts “Username: “+json[‘username’]

puts “Rating: “+json[‘rating’]

puts “Send threshold: “+json[‘send_threshold’]

puts “Estimated reward: “+json[‘estimated_reward’]

puts “Confirm reward: “+json[‘confirmed_reward’]

puts “Unconfirmed reward: “+json[‘unconfirmed_reward’]

puts “Wallet: “+json[‘wallet’]

執行寫好的Ruby程式範例,顯示目前的挖礦收益。

 

筆者在狂熱的時候,曾把手上所有能跑挖礦的計算資源都投入了,但是有一些裝置的挖礦效果,讓筆者覺得根本是在浪費電,例如Raspberry Pi就是一例,儘管它的耗電量不高。另一個比較驚艷的結果,就是GPU威力真的不同凡響。由於筆者手上沒有高規格的繪圖卡、處理器,只有1台老Mac mini(2010年的Core 2 Duo 2.53GHz機種)跟1台MacBook Pro(2010年的機種,使用第1代的Core i5 2.4GHz處理器)。

以現在的角度來看,這2台機器都已經夠老了,但是這2台機器都內建NVIDIA繪圖晶片,而且具備CUDA的功能。Mac mini雖然搭載的是GeForce 9400的晶片,但是每秒的運算效能平均是1.85MH(Mega Hashrate),CPU也不過1.5MH左右。MacBook Pro規格看起來不錯,但是因為時脈也沒有特別高,所以跑出來的成績沒有比Mac mini的CPU成績好,反而是內建的GeForce GT 330M繪圖卡,每秒5.1MH的成績相對高(很抱歉,讓讀者見笑了,用這麼低規格的機器在跟人家玩BitCoin Mining)。

由以上筆者的經驗可以看出GPU對挖礦有很大的優勢,所以把現在閒置的中高階繪圖卡出來挖礦,還能稍微廢物利用一下。

因為工作關係與實驗需要,筆者手上剛好有Amazon的AWS EC2平台、微軟Azure,與美國一家業者名為DirectSpace的VPS服務(使用xVM虛擬化技術)。這個三個平台跑出來的成果當然沒有實體機器好,但是筆者希望藉由執行挖礦的成效,來判斷這幾家業者的效能到底如何?因為這些IaaS的平台,都不會告訴消費者確切的規格,頂多就是報告裡面有多少處理器核心。從每個核心跑出來的Hashrate,就知道他們的能耐。

筆者自己的測試結果是,如果只論效能,AWS或者Azure的性價比都不及一些VPS服務。每個核心跑出來的成績,連1M都不到(1M=1000K),但是收費價格卻不便宜,每個月都要近50美元。反倒筆者租用月租不到10美元的VPS,提供三核心每個核心都比AWS單一核心好,但略遜於Azure。這個比較的意義只是拿來參考效能,因為IaaS業者通常有較高的Availability穩定性保證,這也是費用相對高的原因。

所以,現階段拿雲端服務來跑挖礦肯定不划算,每個月挖到的礦連付雲端服務的費用都不夠。(順便也報告一下,AWS那個不用錢的Free Micro,穩定性非常差,每秒跑出來的成績從140khash到400khash不等。大概是因為計算資源採共享的關係,不像AWS相對較高的規格或是Azure有保證固定能用的計算資源。不過想用免錢AWS的讀者也是可以參考看看。)

用Azure以Linux虛擬化平台Small的規格實際執行cpuminer,單一核心跑出來的成績都在830khash左右。穩定性不錯,但是總共就只有1個核心。微軟Azure的介面也值得稱讚,簡單且容易使用。Small的報價是1個月1,340元台幣。

 

Amazon的AWS EC2 Large Instance穩定,總共2個核心各可以跑出每秒640khash的成績,但是費用不低按小時計費,1個月就要175美元。反觀微軟Azure規格居中的Linux虛擬機器,同樣雙核心1個月只要2,680元,比Amazon真的便宜不少。

「工業用」專業挖礦機

看到Amazon跟Azure的報價,真的是吃力不討好對吧!筆者也不想浪費錢測試更貴的Amazon GPU EC2服務,每小時報價超過3美元,雖然挖礦力相對強,但是整體來看一樣是賠錢的事,還不如把投入雲端挖礦的錢,拿去轉投資中高階繪圖卡實在(如果服務的單位有超級電腦閒置的計算資源,那就另當別論,但是被發現用來挖礦可能免不了被懲處)。

但是投資中高階繪圖卡,千萬不要忽略一件事:「電源供應器也要跟著升級!」給中高階繪圖卡用的電源供應器可不是光華商場店家隨機殼附的那種350W可以負荷,少說要用600W以上的產品。如果串連多張繪圖卡跑SLI或是CrossFire X,肯定要用更高檔的1,200W電源供應器。這1顆也都要好幾千元,不比繪圖卡便宜。用了瓦數高的電源供應器之後,相對就是耗電量增大,每個月電費馬上變貴,還有可能因為電線老舊無法負載,一啟動自組的土炮挖礦機房間馬上跳電。

電費零成本的玩法,恐怕就是在學校的研究室或者辦公室偷偷投入挖礦吧!(想要從事以上高風險半竊電行為,後果請自行負責,與筆者一概無關)

由於BitCoin現在當紅,也有業者投入了挖礦機具的研發,推出「工業用」的產品(好像只要1個產品掛上工業用的名稱之後,感覺就會變得特別厲害)。繪圖卡串連挖礦,雖然有效果但是耗電,對於單純想要挖礦的人也有設定不易的困擾,光看前面的教學就很折磨人了。現在就有廠商投入特殊應用積體電路ASIC(Application-specific Integrated Circuit)的開發,這種電路具備特定的邏輯設計。

以挖礦需求而言,就是拿來解256bit的雜湊函數,整個電路就只有這個功能而已。不像CPU或是GPU這種超大型積體電路複雜,還會消耗很高的電量。目前國外最知名的廠商,非BUTTERFLYLABS這家美國公司莫屬,他們的產品就只有挖礦機而已,入門款1台報價274美金,每秒可以挖出5GH的效能(1G=1,000M),比起投資繪圖卡,買這台可能比較划算。而最高規格的機種,每秒效能是1,500GH,目前已經銷售一空,售價肯定是天價,因為次一階的機器只有50GH,就要報價2,499美元。

這台有30倍效能的機器,打折後賣7.5萬美金也不誇張(從5GH賣274、25GH賣1,249到50GH賣2,499美金,可以看出售價跟效能有正比的倍數關係)。1,500GH的機器目前是銷售一空還要預定的狀態,可見買家對BitCoin的未來是多麼有信心。筆者在新加坡的商業時報也看到新加坡也有廠商投入ASIC的挖礦機研發,看來挖礦現在已經是另一種軍備競賽了。

筆者在BUTTERFLYLABS的網站上沒有看到任何的說明書(網站上只提到要用USB與電腦連接,透過他們的設定軟體讓機器運作),只看到國外有玩家購買5GH的測試文;他是配合1台Raspberry Pi安裝MinePeon,建立一個自用的礦池後開始挖礦,每秒可以實際產出的計算效能是5.4GH,比網站宣稱的效能還要多12.5%。

現在每天可以得到的收入是0.25左右的BitCoin,換算起來大概是32美元(看到這個數據,更慶幸筆者沒有下去玩Amazon的GPU Mining,一天的費用至少就72美元)。如果可以脫手獲利,理論上不到1個月就可以攤提機器的成本。

這台由BUTTERFLYLABS推出1,500GH計算效能的挖礦機,目前買還要預約。配合智慧型操作面板,幾乎可以不用電腦,只要插電跟接網路線就開始挖礦。其他機種雖然都可以購買,但也都處於預購的狀態。(圖片來源:http://goo.gl/i8PdP)

虛擬貨幣從來沒有過的商機

沒想到不過是一個虛擬貨幣BitCoin,竟然讓廠商跟玩家(應該改稱呼投資人)都投入挖礦的競賽。趁著現在還相對容易挖到礦的時候,趕緊投入第2波的掏金熱,比起拿現金直接投入股票市場,用機器挖礦算是相對低風險的玩法。先不論買ASIC架構的挖礦機,至少組挖礦用的電腦之後還能拿來打電玩,或者丟到網拍變現。

BitCoin適合長期持有,還是短期炒作?下一期再跟大家報告關於BitCoin的市場投資。

關於我們

自1990年創刊UXmaster雜誌,1991年獲得美國LAN Magazine獨家授權中文版,2006年獲得CMP Network Computing授權,2009年合併CMP Network Magazine獨家授權中文版,2014年轉型為《網路資訊》雜誌網站,為台灣中小企業協助技術領導者落實企業策略,了解網路規劃及應用,為企業網路應用、管理、MIS、IT人員必備之專業雜誌網站。


與我們聯絡

加入《網路資訊》雜誌社群

© Copyright 2017 本站版權所有,禁止任意轉載 網路資訊雜誌 / 心動傳媒股份有限公司 聯絡電話:+886 2 29432416