##はじめに
Zcashフォークで国産の仮想通貨「Koto」のマイニングプールを構築する方法を記載します。
オープンソースのZcashマイニングプール「z-nomp」をKoto用に独自にカスタマイズした「k-nomp」を使用します。
また、Kotoは2018/8/4にハードフォークが予定されており、今回それに対応したブランチで構築します。
##手順
###サーバーの準備
####ドメインの取得
ドメインが必要な場合は、ドメイン取得代行サイトで任意のドメインを取得してください。
####サーバーの用意
Linuxサーバーを立ち上げます。
今回DigitalOceanで、OSは「Ubuntu Server 16.04.4 x64」、
サーバーは「4GB 2vCPUs 80GB 4TB」を選びました。
####サーバーの準備完了
1分ほどで構築が完了し、IPアドレスが自動で割り振られます。
####ファイアウォールの設定
DigitalOceanのファイアウォール機能で、SSHポート、HTTPポート、kotoポート、Stratumポートなどを開けておきます。
###サーバーの設定
####インスタンスへの接続
Windowsの場合は「PuTTY」を使用します。
メールで送られてきたパスワードを使用し、rootでログインします。
ログイン後、新しいパスワードを設定します。
####ユーザーの作成
ログインができたら、まずrootとは別のユーザー(今回はubuntu)を作成し、sudo権限を付与します。
adduser ubuntu
Adding user `ubuntu' ...
Adding new group `ubuntu' (1000) ...
Adding new user `ubuntu' (1000) with group `ubuntu' ...
Creating home directory `/home/ubuntu' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for ubuntu
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
gpasswd -a ubuntu sudo
Adding user ubuntu to group sudo
###ユーザーの変更
ubuntuユーザーでログインします。
sudo su - ubuntu
####Ubuntuのアップデート
Ubuntuをアップデートして再起動します。
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo reboot
###kotodのビルド
####パッケージのインストール
下記コマンドを実行して必要なパッケージをインストールします。
sudo apt-get install build-essential pkg-config libc6-dev m4 g++-multilib autoconf libtool ncurses-dev unzip git python python-zmq zlib1g-dev wget bsdmainutils automake curl
####kotoのインストール
下記コマンドを実行してkotoをインストールします。
git clone https://github.com/KotoDevelopers/koto.git
cd koto
./zcutil/fetch-params.sh
./zcutil/build.sh -j$(nproc)
※少し時間がかかります
cd src
sudo cp kotod /usr/local/bin
sudo cp koto-cli /usr/local/bin
sudo cp koto-tx /usr/local/bin
####kotoの設定
cd
mkdir .koto
cd .koto
vi koto.conf
コンフィグファイルを作成、設定します。
rpcuser=username
rpcpassword=password
rpcallowip=127.0.0.1/32
rpcport=8432
daemon=1
server=1
gen=0
####kotodの起動
下記コマンドでkotodを起動します。
kotod
Koto server starting
####プールアドレスの確認
下記コマンドで、プールアドレスを確認します。
koto-cli getaddressesbyaccount ""
[
"k1もしくはjzから始まるkアドレス"
]
####kアドレスの作成
下記コマンドで、支払用kアドレスを作成します。
koto-cli getnewaddress ""
k1もしくはjzから始まるkアドレス
####zアドレスの作成
下記コマンドで、シールド用zアドレスを作成します。
koto-cli z_getnewaddress
zから始まるzアドレス
###プールの設定
####redisのインストール
下記コマンドを実行してredisをインストールします。
cd
sudo apt-get install redis-server
####パッケージのインストール
下記コマンドを実行して必要パッケージをインストールします。
sudo apt-get install build-essential libsodium-dev
####nodejsとnpmのインストール
下記コマンドを実行してnodejsとnpmをインストールします
sudo apt-get install -y nodejs npm
sudo npm cache clean
sudo npm install n -g
sudo n v9
sudo npm i npm -g
sudo apt-get purge -y nodejs npm
sudo ln -sf /usr/local/bin/node /usr/bin/node
sudo ln -sf /usr/local/bin/npm /usr/bin/npm
####nodejsとnpmのバージョン確認
node -v
npm -v
####pm2のインストール
下記コマンドを実行してpm2をインストールします。
sudo npm install -g pm2
###k-nompのインストール
####k-nompのビルド
下記コマンドを使用してk-nompをビルドします。
※ハードフォーク対応版ブランチからcloneします。
git clone -b koto-hf-dev https://github.com/yoshuki43/k-nomp
cd k-nomp
npm update
※途中で躓く場合はnpm audit fix
を一度実行から再度npm update
して下さい。
npm install
####k-nompの設定
cp config_example.json config.json
vi config.json
<中略>
"port": {公開用ポート番号},
"stratumHost": "{ドメイン名}",
<中略>
vi coins/koto.json
{
"name": "Koto",
"symbol": "KOTO",
"algorithm": "yescrypt",
"requireShielding": true,
"nSubsidySlowStartInterval": 43200,
"nSubsidyHalvingInterval": 1051200,
"payFoundersReward": false,
"percentFoundersReward": 20,
"maxFoundersRewardBlockHeight": 849999,
"foundersRewardAddressChangeInterval": 17709.3125,
"vFoundersRewardAddress": [],
"kotoFoundersReward": [
{
"comment": "for mainnet",
"address": "k3EEgqMM8jpaGW6XXUHpv3kDprMfm1x1VEf",
"start": 335600,
"last": 1072799
}
],
"txfee": 0.0004
}
vi coins/koto-testnet.json
<中略>
"symbol": "TOKO",
<中略>
vi node_modules/stratum-pool/lib/transactions.js
<中略>
var nVersionGroupId = (txVersion & 0x7fffffff) >= 3 ? util.packUInt32LE(0x2e7d970) : new Buffer([]);
<中略>
cp pool_configs/koto_example.json pool_configs/koto.json
vi pool_configs/koto.json
{
"enabled": true,
<中略>
"address": "{k1もしくはjzから始まるkアドレス}",
<中略>
"zAddress": "{zから始まるzアドレス}",
<中略>
"tAddress": "{k1もしくはjzから始まるkアドレス(上のaddressとは別のアドレス)}",
<中略>
"rewardRecipients": {
"{k1もしくはjzから始まるkアドレス(手数料を受け取りたいアドレス)}": 1.0
<中略>
}
####k-nompの起動
sudo pm2 start init.js --name k-nomp
####pm2のスタートアップ登録
pm2 startup
[PM2] Init System found: systemd
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/local/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u ubuntu --hp /home/ubuntu
sudo env PATH=$PATH:/usr/local/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u ubuntu --hp /home/ubuntu
pm2 save
####ログの確認
pm2 logs
##おわりに
今回Kotoのハードフォーク対応プールの構築方法を記載しました。
ファイアウォールの設定などは各VPSのファイアウォール機能やufw等で適宜行って下さい。
もしプールを構築された場合は、KotoのDiscordチャンネルまでご一報頂けますと幸いです。
またご不明な点があれば上記チャンネルの「ROZ - mofumofu.me#1977」までお申し付け下さい。
##参考サイト
ubuntu ユーザを追加して sudo 権限をつける
kotoをUbuntuにインストール
kotoのプールを作成
Ubuntuに最新のNode.jsを難なくインストールする
Node.jsのデーモン化ツールpm2をインストール