隨著 GPU 挖礦越來越難回收成本很多人選擇乾脆自己來開礦池讓別人挖,一來你只需要負擔伺服器營運成本 (比挖礦電費少非常多),也不需要購入太昂貴的硬體 (和挖礦設備相比更是天壤之別),那究竟要滿足什麼條件才能開礦池呢?而實際操作又是如何?這篇將以「門羅幣」 Monero (XMR) 礦池為例來教大家怎麼從無到有架設一個礦池,而且這是一個 CryptoNight 通用礦池,換句話說你也能拿這套來挖 ETN、TRTL、ITNS ...等同樣算法的貨幣,可以說是 CP 值超高的礦池啊!
node-cryptonote-pool 就是一個基於 Node.js 的礦池系統,它能適用於每個 CryptoNote 的加密貨幣 (Bytecoin, Monero, QuazarCoin, HoneyPenny, etc..),基本上你目前看到的 CryptoNote 礦池大多都是使用這套系統所架設的,它不但提供了現成的網頁介面,還能讓使用者隨時查詢挖礦進度,當然這套系統也有不少 Fork 的版本,這次使用的是最原版的作為範例。
這次會選擇架設在 Linux (Ubuntu) 系統上,如果是使用其它發行版的 Linux 基本上操作也都是一樣的,可能只有少部份的指令需要更改,Windows 的話則多半需要手動到網站上下載相關套件 (Packages),使用上比較麻煩一些但理論上也都是可行的。
安裝礦池會需要以下套件,在 Windows 系統會需要逐一安裝,而 Linux 可以略過這個步驟,等會統一使用指令安裝即可。比較需要注意的是它要求的是 v0.10+ 的 Node.js 版本,建議你就乖乖的裝遠古時代的 v0.10 版畢竟 Node.js 不同版本間的相容性問題很容易報錯。
sudo apt-get install build-essential libtool autotools-dev autoconf pkg-config libssl-dev
sudo apt-get install libboost-all-dev git npm nodejs nodejs-legacy libminiupnpc-dev redis-server
sudo add-apt-repository ppa:bitcoin/bitcoin
sudo apt-get update
sudo apt-get install libdb4.8-dev libdb4.8++-dev
curl -sL https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh -o install_nvm.sh
bash install_nvm.sh
source ~/.profile
nvm install 0.10.48
nvm use 0.10.48
nvm alias default 0.10.48
nvm use default
cd monero
./monerod
wget -c --progress=bar https://downloads.getmonero.org/blockchain.raw
./monero-blockchain-import --verify 0 --input-file ./blockchain.raw
./monerod --detach
git clone https://github.com/zone117x/node-cryptonote-pool.git pool
cd pool
npm update
cp config_example.json config.json
node init.js
service apache2 start
sudo chmod 777 -R /var/www/html
基本上架礦池很簡單,只是大部份時間都花在同步區塊鏈上,當然後續怎麼找到人來挖礦也是難題,還得先自己測試出金 (多半都會去 Nicehash 買算力),那如果你看完之後覺得太麻煩了還是乖乖挖礦就好,可以參考這篇用 XMR-STAK 來挖 Monero 或其它 CryptoNight 的貨幣。
(一個架好的 TRTL 礦池範例)
node-cryptonote-pool 就是一個基於 Node.js 的礦池系統,它能適用於每個 CryptoNote 的加密貨幣 (Bytecoin, Monero, QuazarCoin, HoneyPenny, etc..),基本上你目前看到的 CryptoNote 礦池大多都是使用這套系統所架設的,它不但提供了現成的網頁介面,還能讓使用者隨時查詢挖礦進度,當然這套系統也有不少 Fork 的版本,這次使用的是最原版的作為範例。
node-cryptonote-pool
GitHub : https://github.com/zone117x/node-cryptonote-pool
安裝套件
安裝礦池會需要以下套件,在 Windows 系統會需要逐一安裝,而 Linux 可以略過這個步驟,等會統一使用指令安裝即可。比較需要注意的是它要求的是 v0.10+ 的 Node.js 版本,建議你就乖乖的裝遠古時代的 v0.10 版畢竟 Node.js 不同版本間的相容性問題很容易報錯。
- Node.js v0.10+
- Redis key-value store v2.6+
- libssl required for the node-multi-hashing module
- Boost is required for the cryptonote-util module
sudo apt-get install libboost-all-dev git npm nodejs nodejs-legacy libminiupnpc-dev redis-server
sudo add-apt-repository ppa:bitcoin/bitcoin
sudo apt-get update
sudo apt-get install libdb4.8-dev libdb4.8++-dev
curl -sL https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh -o install_nvm.sh
bash install_nvm.sh
source ~/.profile
nvm install 0.10.48
nvm use 0.10.48
nvm alias default 0.10.48
nvm use default
Linux 直接打上述指令即可完成全部的相關套件的安裝,要注意這會將 Node.js 預設為使用 v0.10.48 版本方便你之後使用 node-cryptonote-pool ,如果之後有別的用途要使用新版的 Node.js 記得再改回來。
同步 Monerod
再來就是到 Monero 官網下載適合你作業系統的 CLI 錢包,要注意這是需要同步區塊鏈的錢包,而且之後架設礦池也都必須隨時同步在最新的區塊高度。
./monerod
下載回 CLI 錢包後,CD 到它的路徑並測試看看能不能連上 Monero 並且同步區塊,你可以就放著給它同步 (可能跑個一整天),或是直接下載所有的區塊資料回來匯入,這會在下一步解釋。
使用指令可以將區塊數據下載回來,可以看到我 ^C 再重啟並且確認了它是可以續傳的,所以你未必要一次下載完,有事可以先關掉之後在同路徑下繼續下載,這個過程會比直接同步來的快很多,但仍然需要數個小時。
下載完成後就能用上述指令匯入並讀取,這個過程也是滿花時間的,確定匯入成功之後你就可以把 blockchain.raw 這個檔案給刪掉了,如果匯入失敗你還把它刪掉,那恭喜你可以再下載一次...。
然後使用上述指令能在背景運行 monerod,這樣就不需要佔一個終端機在那邊礙眼了,如果想關掉的話只要使用 ./monerod exit 即可。
安裝、啟動礦池
cd pool
npm update
再來就可以將礦池 Clone 回來並安裝啦,當然你也可以自己到 GitHub 下載完整檔案,要記得使用 v0.10.48 的 Node.js 安裝,如果剛剛在安裝套件時已經有設定好就沒有問題了。
接著將資料夾內的 config_example.json 複製並改名成 config.js,並且用文字編輯器開啟把裡面包括要挖的貨幣、礦池地址 (就是你剛剛同步好的錢包)、預設難度 ...等修改好,可以參考原作者在 GitHub 有附上註解的文件來修改。要特別注意 Daemon 和 Wallet 的 Port 設定,不同貨幣的預設 Port 會不一樣,最保險的方式就是在開啟 monerod 時就加上 --rpc-bind-port 18081 強制它開在某一個 Port。
現在就終於可以啟動你的礦池啦,正常來講應該能如上圖運作,如果出現錯誤可能是區塊尚未同步完成或 config.json 有沒有填妥的地方。這時候的礦池已經可以正常接收 Shares 了,但是還沒有 Host 前端的介面。
之後打開 website_example/config.js 設定你的礦池網站,由於我只是開來作個示範所以架在 127.0.0.1 (Localhost),雖然理論上也應該會 Forward 到外網,但如果是要供別人挖礦的話可以直接換成你自己的「靜態」外網 IP,還沒有申請固定 IP 的話可以暫時用 DDNS 之類的服務來達成。
那要怎麼 Host 這個前端網站呢?如果你有自己習慣的架站套件可以略過這步,我是使用 Ubuntu 就有內建的 Apache 架站組合包,Windows 也可以自己去下載回來裝。使用上述指令先開啟 Apache,如果沒裝的話則先用 sudo apt-get install apache2 安裝。
而架好的 Apache server 的根目錄就在 /var/www/html,我們先用上述指令取得這個路徑的修改權限方便之後的作業。
有修改權限後就能到 /var/www/html 內把原本 Apache 說明文件的 index.html 刪掉再將剛剛 website_example 的檔案都複製過來。
然後你到 http://localhost 就可以看到自己架的前端網站啦 (不過 XMR 區塊真的同步太久,所以我偷懶先開一個 TRTL 的當示範),如果有和礦池同步的話應該要可以看到 Network 裡面目前全網算力、區塊高度等訊息,那如果你想要別人也能看到你的礦池網站記得將防火牆的 Port 打開 (理論上 Apache 應該會幫你做),也要記得使用 SSL 架站以確保安全,這部份的話可以去參考 Cloudflare 等免費網站憑證。
基本上架礦池很簡單,只是大部份時間都花在同步區塊鏈上,當然後續怎麼找到人來挖礦也是難題,還得先自己測試出金 (多半都會去 Nicehash 買算力),那如果你看完之後覺得太麻煩了還是乖乖挖礦就好,可以參考這篇用 XMR-STAK 來挖 Monero 或其它 CryptoNight 的貨幣。
留言
張貼留言