GPU挖掘
硬件
算法是內存難解的,為了使DAG適合內存,每個GPU需要1-2GB內存,如果你得到錯誤提示:Error GPU mining. GPU memory fragmentation? 說明你沒有足夠的內存。GPU挖礦軟件是基於OpenCL實現的,AMD GPU會比同一水准的NVIDIA GPU更快。ASIC和FPGA相對低效因而被阻攔。要給芯片集成平台獲取openCL,嘗試:
- AMD SDK openCL
- NVIDIA CUDA openCL
Ubuntu Linux設置
對於這個快速指南,你會需要Ubuntu 14.04或15.04以及fglrx圖像驅動器。你也可以使用NVidia驅動器和其他平台,但是你必須要找到自己的方式來獲得有效的OpenCL安裝,比如Genoil的ethminer分叉。
如果你在用15.04,到“軟件與更新〉額外的驅動器”設置為“從fglrx為AMD圖形加速器使用視頻驅動器”。
如果你在用14.04,到“軟件與更新〉額外的驅動器”設置為“從fglrx為AMD圖形加速器使用視頻驅動器”。很遺憾,對於一些人來說,這種方法可能不管用,因為Ubuntu 14.04.02中有個已知的程序錯誤會阻止你轉換到GPU挖礦所必須的專屬圖形驅動器。
所以,如果你遇到這個程序錯誤,先到“軟件與更新〉更新”選擇“預發行的可靠更新提議”。然后,回到“軟件與更新〉額外的驅動器”設置為“從fglrx為AMD圖形加速器使用視頻驅動器”。重啟之后,值得檢查一下現在確實正確安裝了驅動器(例如通過再到“額外驅動器”)。
不管做什么,如果你在用14.04.02,一旦安裝之后,就不要改變驅動器或者驅動器配置。例如,aticonfig –initial的使用(尤其是-f, –force選項)會“破壞”你的設置。如果你偶然改變了配置,會需要卸載驅動器,重啟,再次安裝驅動器並重啟。
Mac設置
|
|
查看冷卻狀態:
|
|
Windows設置
下載最新的Eth++安裝,在安裝界面的“選擇組件”頁面選擇ethminer。
用geth使用ethminer
|
|
ethminer在端口8545(geth的默認RPC端口)和geth溝通。你可以通過給geth—rpcport選項來改變這種情況。ethminer會在任何端口發現geth。注意你需要用—rpccorsdomain localhos設置CORS標題。你也可以用-F http://127.0.0.1:3301 在ethminer設置端口。如果你想要在同一個電腦上挖幾個實例,設置端口是必需的,盡管有些沒有意義。如果你在私有鏈上測試,我們推薦你用CPU挖掘代替。
注意:你不需要把—mine選項給geth,或者在控制台開啟挖礦,除非你想要在GPU挖掘頂端做CPU挖掘。
如果ethminer的默認無效,試試用—opencl-device X來規定OpenCL裝置,其中X是{0, 1, 2,…}。用-M(基礎測試程序)運行ethminer時,你會看到這樣的文字:
|
|
為geth排錯:
|
|
為礦工排錯:
|
|
注意:GPU挖礦時,散列率信息在geth上不可用。
用ethminer檢查散列率,miner.hashrate總會報告0。
用eth使用ethminer
在單獨的GPU上挖礦
為了在單獨的GPU上挖礦,只需要用以下參數運行eth:
|
|
- -v 1 將冗長的信息設置為1。不要被信息刷屏。
- -a YOURWALLETADDRESS 設置挖礦獎勵會去的coinbase。以上地址只是一個例子。這一參數十分重要,確保不要在錢包地址出錯,否則會接收不到以太幣支出。
- —client-name “OPTIONAL” 設置可選擇的客戶端名稱,在網絡上確定身份。
- -x 50 請求大量的端點。幫助在開始找到端點。
- -m on 在挖礦開啟的狀態下實際啟動。
- -G 打開GPU挖掘。
客戶端運行時,你可以用geth附屬或[ethconsole]和它互動(https://github.com/ethereum/ethereum-console)。
在多個GPU上挖礦
用多個GPU和eth挖礦與用geth和多個GPU挖礦十分相似。確保eth節點和正確設置的coinbase地址一起運行: eth -v 1 -a 0xcadb3223d4eebcaa7b40ec5722967ced01cfc8f2 —client-name “OPTIONALNAMEHERE” -x 50 -j
注意我們也添加了-j參數以使客戶端有可用的JSON-RPC服務器與ethminer實例溝通。此外由於ethminer可以為我們挖礦,我們移除了與挖礦相關的參數。每個GPU都會執行一個不同的ethminer實例:
|
|
X是索引號碼,與你想ethminer用{0, 1, 2,…}的OpenCL裝置一致。為了輕松獲取OpenCL裝置列表,你可以執行ethminer —list-devices,它會提供一個OpenCL可以檢測到的所有裝置,以及每個裝置的一些附加信息。
下面是一個樣本輸出:
|
|
最終—no-precompute參數請求ethiminers不要提前創建下一個epoch的DAG。盡管不推薦這樣,因為每次epoch過渡的時候,你都會有一個挖礦中斷。
基准測試程序
挖礦能力通常以內存帶寬衡量。我們的實現寫在OpenCL上,很典型地在NVidia上被AMD GPU支持得更好。實驗證據確認了在價格方面,AMD GPU比對應的NVidia挖礦表現更好。
用基准程序測試單一裝置設置,你可以在基准測試程序模式下通過-M使用ethminer。
|
|
如果你有很多裝置,你會喜歡分別用基准程序測試,可以用–opencl-device選項,與之前章節相似: ethminer -G -M —opencl-device X 用ethminer —list-devices來列出可能的數字替代X {0, 1, 2,…}。 開始在Windows上挖礦,首先要下載geth windows binary。
- 解壓縮Geth (單擊右鍵選擇打開),啟用命令提示符。用cd 導航到 Geth數據文件夾的位置(例如cd / 到C: 盤)
- 輸入geth —rpc開啟geth。 進入以后,以太坊區塊鏈會開始下載。有時候防火牆肯能會阻止同步進程(阻止時會有提示)。如果被阻止,點擊“允許進入”。
- 首先下載安裝ethminer, C++挖礦軟件 (防火牆或Windows本身可能會有反應,允許進入)
- 打開另一個命令提示符 (保持第一個運行!)輸入cd/Program\ Files/Ethereum(++)/release改變目錄。
- 確保eth完成區塊鏈同步。如果同步不再進行,就可以在命令提示符輸入ethminer -G開啟挖礦進程。
此時可能會出現一些問題。如果有錯誤發生, 可以輸入Ctrl+C來中斷礦工。如果錯誤顯示(提示)“內存不足”,就說明沒有足夠的GPU內存來挖以太幣。
礦池挖礦
礦池挖礦是旨在通過聯合參與礦工的挖礦力來解決預期收益問題的合作社(挖礦的礦工的算力來解決預期收益問題的合作組織)。作為回報,通常收取0-5%的挖礦獎勵。挖礦池從中央賬戶用工作量證明提交區塊並按照參與人貢獻的挖礦力比例來重新分配獎勵。
警告:大多數挖礦池包含第三方,中心組件,意味着他們是不需信任的。換言之,挖礦池操作人可以把你的收入拿走。謹慎操作。有很多具備開源數據庫、不需信任的、去中心化的挖礦池。
警告:挖礦池只會外包工作量證明運算,他們不會使區塊生效或運行虛擬機來檢查執行交易帶來的狀態過渡。 這能有效地使挖礦池在安全方面像單個節點一樣表現,他們的增長會造成51%攻擊的中心化威脅。確保遵守網絡能力分配,不要讓挖礦池長得太大。
礦池
- coinotron
- nanopool
- ethpool — 可預測的單獨挖礦,非常規支出機制,附屬於etherchain.org。
- supernova
- coinmine.pl
- eth.pp.ua
- talkether — 非常規支出機制,部分去中心化
- weipool
- ethereumpool
- pooleum
- alphapool
- cryptopool
- unitedminers
- dwarfpool — 盡量避免(目前超過網絡的50%)
- laintimes — 停止使用
挖礦相關資源匯總
- 過去24小時以太幣鏈上領先的礦工
- 2015年8月挖礦池散表率分配
- 論壇上未維護的挖礦池列表
- cryptocompare上的挖礦盈利能力計算器
- cryptowizzard上的挖礦盈利能力計算器
- etherscan上的挖礦盈利能力計算器
- In The Ether上的挖礦盈利能力計算器
- etherscan上的挖礦難度表
POS vs POW
- https://www.reddit.com/r/ethereum/comments/38db1z/eli5_the_difference_between_pos_and_pow/
- https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity/
- https://www.reddit.com/r/ethereum/comments/42o8oy/can_someone_explain_the_switch_to_pos_how_and_when/
參考資料:
文章中的列表對應的鏈接可以參考《Ethereum Homestead Documentation》第67頁1.6.4 GPU mining