1. 程式人生 > >GPU 挖礦:從零開始,擁有自己的比特幣

GPU 挖礦:從零開始,擁有自己的比特幣

以比特幣為代表的數字貨幣作為區塊鏈技術的重要應用,正在慢慢進入人們的視野,擁有自己的數字資產也是一件很酷的事情,如果你不想買,那麼最好的獲取方法就是挖礦。

挖礦之前,我需要作幾個簡單的說明,以澄清潛在的誤區:

首先,是不是數字貨幣只有比特幣呢?

答案顯然是否定的。數字貨幣行情分析網站非小號目前共收錄了 1700+ 種數字貨幣,其中市值前十名的為(2018 年 1 月 21 日):


除比特幣之外的數字貨幣一般被稱為“山寨幣”(altcoin)。這個詞並不是一個貶義詞,因為在山寨幣中有很多優秀的專案比如以太坊(ETH)、EOS 等等,但多數山寨幣仍是空氣幣這個現象確實是存在的,所以不少人制作了 SB 幣懵幣等網站調侃。


第二個誤區是,“比特幣這麼貴了,我一個都買不起呀?”

實際上,比特幣最小單位並不是 1,而是“聰”,沒錯,就是中本聰的“聰”。1 BTC = 1 億聰,也就是說最小單位是十的負八次方。但是人們習慣了貨幣的整數交易,對小數點後這麼多零有天生的認知障礙,因此很多人認為這是影響比特幣在現實世界中流通的重要原因之一。

最後,我們並不是要直接挖比特幣(再看一眼標題,還真沒說挖比特幣!!),而是挖山寨幣然後換成比特幣,最後也可以換成法幣。

為什麼不直接挖比特幣呢?


這裡有一張比特幣挖礦的難度變化圖,顯示其呈指數級上漲。也就是說在機器配置不變的情況下,你的 BTC 產出是越來越少的,同時由於 BTC 的設計機制,每個區塊產出的 BTC 也是在不斷減少的(當然 BTC 本身也是在不斷增值)。作為個人玩家娛樂挖礦的話,山寨幣是一個較好的選擇。如果把挖礦當做投資的話,還是推薦 BTC、ETH 這種主流的貨幣,也可以參考 

whattomine 的收益估算。

挖礦演算法

目前的挖礦機理都是基於 PoW(proof-of-work, 工作量證明)的,它通過大量簡單的重複運算產出一個符合要求的結果,並且這個結果很容易驗證。

舉個例子,為了通過考試不掛科,你需要不斷地大量練習,才能解出一道題,然而對於閱卷而言只需和標準答案對比一下就完了,幾乎不需要成本。PoW 的技術原理主要通過 hash 實現,這裡先不討論。

挖礦裝置

挖礦裝置主要經歷了從 CPU -> GPU -> FPGA -> ASIC 的變化,挖礦效率也是越來越強大。

與 GPU 相比,CPU 包含多數(對於挖礦計算而言)無用的控制單元等結構,因此價效比很低。這就好比讓兩個大學教授和 100 個小學生一起計算一些 10 以內的加減法,顯然小學生們計算的更快,教授就是大材小用了。

FPGA 的晶片生產困難,因此生存時間很短。在將 FPGA 中不需要的邏輯實現刪掉後, ASIC 礦機問世。

ASIC 礦機(也就是目前我們所說的礦機)是為挖礦量身定製的,因此挖礦速度非常快(價格也比較高),除了挖礦什麼都做不了。一旦遇上“礦難”,那你面對的就是一堆廢鐵,而顯示卡至少還有其他用處。


錢包

挖礦前需要準備一個錢包,存放自己的數字資產。這裡推薦使用位元派,它支援的幣種比較多,你也可以選擇其他錢包,但無論如何一定要儲存好私鑰,這是驗證使用者身份的唯一憑證。

除此之外你也可以選擇使用交易所的充值地址,這樣挖到的幣直接被轉入到交易所中,可以隨時賣了它,否則你需要先從錢包轉入交易所,這個過程會收取礦工費。

礦池

加入礦池相當於選擇組隊挖礦,因為一個人可能很難挖到一個幣,但是在礦池中就可以按照你的算力佔全礦池的算力比例來給你分配收益。這就好比一個人買彩票幾乎沒啥希望,但是如果規定一億個人一起買,中獎的平分的話,這樣收益就穩定多了。當然,礦池會收取一定的費用。

我們在 https://blockchain.info/pools 可以看到比特幣全球礦池的算力分佈。其中最大的礦池 btc.com 只支援比特幣和比特幣現金(BCH)兩個幣種,為了能夠挖到更小眾的山寨幣,我們可以選擇其他礦池。


接下來我用兩個礦池來挖兩個幣種,並分別使用開源閉源挖礦軟體。

蜜蜂礦池 —— HSR

蜜蜂礦池支援三個 GPU 挖礦幣種,以 HSR 為例進入 http://hcash.beepool.org 中,這裡有一份礦池的教程,我們還需要一個挖礦軟體,這裡我們使用開源挖礦軟體 ccminer

首先預設你已經安裝好了顯示卡驅動和 CUDA。

以 ubuntu 為例,先安裝依賴:

sudo apt-get install libcurl4-openssl-dev libssl-dev libjansson-dev automake autotools-dev build-essential

切換到 gcc/g++ 5 (CUDA 的要求),並 clone 倉庫:

sudo apt-get install gcc-5 g++-5
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 1
git clone https://github.com/tpruvot/ccminer

在開始編譯前,你需要檢查 nvcc_ARCH 以確保它和你的顯示卡型號是相容的:

在 wiki 中找到顯示卡對應 Compatibility 和與之對應的 nvcc_ARCH,然後按照說明修改 Makefile.am,最後編譯並執行:

./build.sh
./ccminer --version
./ccminer -a hsr -o stratum+tcp://hcash-pool.beepool.org:9509 -u HCHSsFEuYqkGsyJZTDfetomyPb8AYkCNwB.livc -p x -d 0,2,3

其中,

  • -a 為演算法,這裡對應的是 hsr,也就是我們要挖的
  • -o 為礦池伺服器地址
  • -u 為你的錢包地址,你需要把這個地址替換成你自己的(hsr)地址,其中 livc 為礦工名字
  • -p 密碼,預設即可
  • -d 指定 GPU 裝置,預設全部

BTW 是 BTC 最近分叉的一個幣,因此挖的人比較少。我們可以按照礦池的教程(http://uupool.cn/course/btw)直接下載挖礦軟體。

以 N 卡為例,礦池提供的 EWBF’s Zcash CUDA miner 是一個閉源挖礦軟體,其專案主頁釋出在 bitcointalk。可見它實際上是一個 Zcash(ZEC)的挖礦軟體,但因為 BTW 和 ZEC 的加密演算法完全一致,我們可以直接拿來用。

編輯 miner.cfg 配置檔案:

[server]
server btw.uupool.cn
port   3600
user   WY6MG5aAubs7E3xsjErgYh3ggAzSkow2QH(你的 BTW 地址)
pass   x

然後把下面兩個 additional server 刪掉即可,這是防止一個礦池連接出錯保證連線到備用礦池上,預設的兩個備用礦池應該是作者的錢包地址。

最後執行程式,

./miner --config miner.cfg

值得一提的是,閉源軟體由於作者的優化可能帶來更多的收益,但軟體作者也會收取一定的 dev fee, EWBF’s Zcash CUDA miner 預設收取開發者費用 2%,當然這個是可選的,你也可以通過 —fee 來調控比例甚至拒絕支付這筆費用,也可以通過一些方法 hack 掉開發者費用,當然我並不推薦這麼做,因為你只是損失了 1% 或 2% 的收益,而軟體的作者損失的是全部的收益。

挖礦部分到此結束,每天礦池會給你的錢包中轉入收益,比如:


今天我收到了 3761 個 BTW,在 coinegg 上目前是三毛錢一個,那我昨天的收益就是 3761*0.3 = 1128 元!!哈哈,其實對於 BTW 還並不能這麼算,因為 BTW 目前只上了這一個交易所,而且還沒有開放充值,也就是有大量的像我一樣的 BTW 礦工無法將 BTW 轉入到交易所賣掉,所以當開放充值時一定會被嚴重砸盤的。

對於 HSR,可以將它轉入到交易所換成 BTC(類似於股票交易),再通過場外交易賣成人民幣。有人問為什麼不直接賣成 RMB 呢?因為現在的交易所都是以 BTC 為單位的幣幣交易,這樣就可以跟法幣撇清關係,或者你也可以直接找人進行點對點的交易,這樣風險比較大。

幣幣交易所推薦幣安火幣,幣安是世界交易量第一的交易所,上面的幣都比較靠譜,而火幣自帶法幣交易,方便變現。這兩個都是中國人搞的,減少潛在的風險。

最後,不要指著自己的幾塊卡能挖出多少錢來,如果自己娛樂的話,找幾個看好的幣挖著玩玩,幾年後升值了也許能賺一點,如果將挖礦視為投資的話,你需要做充分的調研:對比不同的礦機、不同的挖礦軟體、不同的礦池、選擇最有發展前景的幣種,這樣才能獲取最大的收益。