Steven5538

Setup Your Own Ethereum Based Mining Pool

Word count: 688Reading time: 2 min
2017/12/10 Share

其實這是一件對工程師們來說不難的事情。
但直到我看到有團體在 Facebook 上以此斂財,實在是看不下去。

--

與其花 6000 元和三個小時照投影片操作,不如 donate ETH 給本文章作者我。
ETH - 0x9E3e086Dc41c28118163A73e3b4FbfF2c0b58b9a


預備知識

  1. 懂一點 Linux 操作
  2. 懂一點 BlockChain
  3. 懂一點 Programming

如果你都不懂也還是可以,知其然不知其所以然罷了。

前置準備

一台至少 1GB RAM 跟至少 50GB (取決於 Blockchain 帳本大小) 的 Server。
OS 選擇 Ubunutu 16.04 LTS。
如果你沒用過 GCP 免費的一年 300 美金折價卷,可以去 GCP 上開一台機器。

建置流程

開一台 Ubuntu 16.04。
安裝必要的套件。

1
2
3
4
5
6
7
8
apt update
apt install git
apt install build-essential libtool autotools-dev autoconf pkg-config libssl-dev
apt install libboost-all-dev git npm nodejs nodejs-legacy libminiupnpc-dev redis-server
apt install libdb4.8-dev libdb4.8++-dev
apt install golang
apt install nginx
apt install npm

根據你要架設的礦池裝對應的錢包同步套件 clone 回來,以 ETH 來說那就是:

1
git clone https://github.com/ethereum/go-ethereum

接著把套件裝起來。

1
2
cd go-ethereum
make geth

裝好後運行 build/bin/geth 待節點同步完成就可以使用了,你也可以用他產生錢包、挖礦、開發等,更詳細的操作可以去 Wiki 查看。

現在,設定好了節點,接下來就是把礦池架起來。

1
2
3
4
git config --global http.https://gopkg.in.followRedirects true
git clone https://github.com/sammy007/open-ethereum-pool.git
cd open-ethereum-pool
make

安裝 redis。

1
apt install redis

然後把礦池跑起來。

1
./build/bin/open-ethereum-pool config.json

config.json 可以參考目錄底下的 config.example.json 作相對應的修改。
你可以查看 Wiki 來對礦池做更多的修正。

有了礦池的後端,現在你還需要一個前端的頁面讓使用者看。

1
cd www

www/config/environment.js 做任何你想要的修改。
裡面的 ApiUrl: '//example.net/' 請務必更改為你的礦池網址。

接著將前端 install 起來。

1
2
3
4
apt install python-software-properties
add-apt-repository ppa:gias-kay-lee/npm
apt update
apt install npm
1
2
3
4
5
npm install -g [email protected]
npm install -g bower
npm install
bower install
./build.sh

最後的最後,把 nginx 設定好。

1
2
3
4
5
6
7
upstream api {
server 127.0.0.1:8080;
}

location /api {
proxy_pass http://api;
}

這樣,一個簡單的礦池就架起來囉!

後記

架設礦池本身是非常簡單的,但底下細部的參數調整則需要深入去研究。
如果你有仔細研究的話你就會發現一些事情:

  • 實際的 fee 跟前端顯示的 fee 是分開寫的,這代表的意義我想大家心中自明。
  • 挖到的礦是寫入 redis 紀錄並定時配發,這個環節是否會有資安問題呢?

更多細節,大家可以親手架設,慢慢體會。

CATALOG
  1. 1. 預備知識
  2. 2. 前置準備
  3. 3. 建置流程
  4. 4. 後記