Edited at

【ハードフォーク対応2018/7/11暫定版】Kotoのプールを立ててみよう

More than 1 year has passed since last update.


はじめに

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」を選びました。

01.png


サーバーの準備完了

1分ほどで構築が完了し、IPアドレスが自動で割り振られます。

02.png


ファイアウォールの設定

DigitalOceanのファイアウォール機能で、SSHポート、HTTPポート、kotoポート、Stratumポートなどを開けておきます。

04.png


サーバーの設定


インスタンスへの接続

Windowsの場合は「PuTTY」を使用します。

メールで送られてきたパスワードを使用し、rootでログインします。

ログイン後、新しいパスワードを設定します。

03.png


ユーザーの作成

ログインができたら、まず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 コンフィグファイルを作成、設定します。


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


config.json

        <中略>       

"port": {公開用ポート番号},
"stratumHost": "{ドメイン名}",

     <中略>


vi coins/koto.json


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


koto-testnet.json

        <中略>       

"symbol": "TOKO",

     <中略>


vi node_modules/stratum-pool/lib/transactions.js


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


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をインストール