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 2025 本站版權所有,禁止任意轉載 網路資訊雜誌 / 心動傳媒股份有限公司 聯絡電話:+886 2 29432416

探索更多來自 網路資訊雜誌 的內容

立即訂閱即可持續閱讀,還能取得所有封存文章。

Continue reading

Secret Link