マスターノード 構築編

仮想通貨のマスターノードの運用には、24時間運転で、固定IPアドレスのサーバーが必要です。
ということで、レンタルのVPS(仮想プライベートサーバー)がおすすめです。

前提のOS

基本は、コインに合わせてください。大抵はUbuntu16.04に対応しています。

 

1.コイン用ソフトインストール

コインのホームページに指定されている linux 用のファイルへのリンクを右クリックして、「リンクのアドレスをコピー」します。

その後、linux で操作します。root 権限は必要ありません。

$ wget アドレスをペースト

$ wget https://github.com/.. という感じになります。

 

Saving to: ‘linux.zip’

 

linux.zip               100%[===============================>]  23.17M   343KB/s    in 3m 8s

 

2018-09-08 01:44:36 (126 KB/s) - ‘linux.zip’ saved [24300368/24300368]

$ ls -l

total 23732

-rw-rw-r-- 1 masternodes masternodes 24300368 Jul 16 16:06 linux.zip

 

(1)   zip ファイルの場合

展開した後、実行権限を追加する必要があります。

コイン名d が、デーモン本体(バックグラウンドで処理する本体のことを linux ではデーモンと呼びます)

コイン名-cli が、コマンドライン操作用(デーモンと通信して操作する)

コイン名-qt が、GUI操作用(マスターノードでは使わない)

以下は、例です。コインごとに変わります。

$ unzip linux.zip

Archive:  linux.zip

   creating: linux/

  inflating: linux/hth-cli

  inflating: linux/hth-qt

  inflating: linux/hth-tx

  inflating: linux/hthd

$ cd linux

$ chmod +x hth-cli hthd

(2)   tar.z, taz, tar,gz など tar っぽい場合

$ tar xvf digiwage-1.1.0-x86_64-linux-gnu.tar.gz

digiwage-1.1.0/

digiwage-1.1.0/bin/

digiwage-1.1.0/bin/digiwage-cli

digiwage-1.1.0/bin/digiwaged

digiwage-1.1.0/bin/digiwage-qt

digiwage-1.1.0/bin/digiwage-tx

digiwage-1.1.0/bin/test_digiwage

digiwage-1.1.0/bin/test_digiwage-qt

digiwage-1.1.0/include/

digiwage-1.1.0/include/bitcoinconsensus.h

digiwage-1.1.0/lib/

digiwage-1.1.0/lib/libbitcoinconsensus.so

digiwage-1.1.0/lib/libbitcoinconsensus.so.0

digiwage-1.1.0/lib/libbitcoinconsensus.so.0.0.0

$

 

実行ファイルを bin ディレクトリへコピーします。

必要なファイルは2つ。コイン名d と コイン名cli です。

$ cd ファイルのあるディレクトリ

$ cp coin-cli coind ~/bin

たまに、-cli がない場合がありますが、その時は、d cli の代わりになります。

 

$ ls ~/bin

例:

masternodes@bjsoftab4:~/work$ ls ~/bin

charity-cli  charityd 

masternodes@bjsoftab4:~/work$

 

 

2.初期ディレクトリ作成

デーモンを初回起動すると、エラーメッセージとともに、自動的に最小限必要なファイルが作成されます。

. で始まる隠しディレクトリに作成されます。

以下の例では、charity coin です。


$ charityd

以下の例だと、ホームディレクトリ .charity というディレクトリです。

masternodes@bjsoftab4:~/linux-master$ charityd

Error: To use charityd, or the -server option to charity-qt, you must set an rpcpassword in the configuration file:

/home/masternodes/.charity/charity.conf

It is recommended you use the following random password:

rpcuser=charityrpc

rpcpassword=DuaJTjR5KCLyvjCS1gXGXauaX9PWGLMqDgyTSLfgfQmC

(you do not need to remember this password)

The username and password MUST NOT be the same.

If the file does not exist, create it with owner-readable-only file permissions.

It is also recommended to set alertnotify so you are notified of problems;

for example: alertnotify=echo %s | mail -s "Charity Alert" admin@foo.com

rpcuser= rpcpassword= の行を含んだファイルを作成します。rpcpassword はランダムに作成された文字列なので、そのままで構いません。覚える必要もありません。

nano エディタを起動します。

$ nano .charity/charity.conf

終了するには、Ctrl + x を入力。編集結果をどうするかの確認がでます。y で保存n で破棄、Ctrl+c で編集に戻ります。

Save modified buffer (ANSWERING "No" WILL DESTROY CHANGES) ?

 Y Yes

 N No           ^C Cancel

 

3.コインをスタートする

 デーモンとして起動する。オプションとして -daemon を指定すると、ログアウトしても動き続けます。

$ charityd -daemon

コマンドラインで、動作状態をチェックする

何回か実行して、blocks が増えていれば、同期中です。

$ charity-cli getinfo

 

注意:

1.Chroot jail の中で実行した場合、初期ノード( DNS Seed ) の名前解決ができないので、同期しません。

まず同期を確認してから、 peers.dat を作成した後ならば、Chroot jail の中で実行できます。

2.万一同期しない場合は、ファイアウォールの解除を先にしてください。(詳細は後述)

 

4.マスターノード用資金を準備

同期している間に、マスターノードを準備します。(この章は、windows のウォレットで実行しても構いません。)

 

4.1 送金先アドレスを作成

以下の例では、マスターノード名(alias) mn1 です。

$ charity-cli getaccountaddress mn1

アドレスが表示されるのでメモする。

 

4.2 マスターノードのプライベートキーを作成

$ charity-cli masternode genkey

プライベートキーがでるので、メモする。この結果を後で使います。

メモし忘れると、アクセス不能になります。

備考:失敗しても、4.2からやり直して、新しいキーを作れば大丈夫です。

 

4.3 送金

4.1で作成したアドレスに、CryptBridge などから

​​「ぴったり 必要なコインを一回で送金する」​​

ここが、割と間違うケース多い。ミスすると別のアドレスを作って送金するなど、やり直しです。

送金は、以下で可能です。

$ charity-cli sendtoaddress 送金先アドレス 金額

 

4.4  マスターノード用送金データ確認

getinfo していると、そのうち、Balance (残高) 1000 になります。

そうなるとブロックチェーンの同期が終わっているので、以下でデータが確認できます。この結果を後で使います。

$ charity-cli masternode outputs

{

    "4f40008f84a7544509283c3c419a91ab9ec5d5fb74c6818b294fca2ccce87c98" : "0"

}

この場合、

output_txid が、4f40008f84a7544509283c3c419a91ab9ec5d5fb74c6818b294fca2ccce87c98

output_index が、

です

 

5.マスターノードを作成

マスターノードとして実行するための設定ファイルを作成します。この章は、マスターノード用のVPS です。

 

まず、デーモンを止める

$ charity-cli stop

VPSIPアドレスを確認する。VPSサービスのページを見るか、ifconfig コマンドを使う。

masternodes@bjsoftab4:~$ ifconfig

ens3      Link encap:Ethernet  HWaddr 56:00:01:a9:2b:f3

          inet addr:192.168.30.40  Bcast:192.168.55.255  Mask:255.255.252.0

        

.charity/charity.conf を編集する

$ nano .charity/charity.conf

rpcallowip=127.0.0.1

server=1

listen=1

daemon=1

maxconnections=256

masternode=1

masternodeprivkey=マスターノードのプライベートキー

externalip=IPアドレス

 

Ctrl + x で書き込みます。

ほかのコインだと、port とか設定することもあるので、詳しくは、コインごとの手順を見てください。

 

.charity/masternode.conf を編集する(windows のウォレットの場合は、windows 側で実行します)

書き方は、以下の通り。下記の 3300 は、マスターノードのポート コインごとに大抵違う

マスターノード名  IPアドレス:ポート  マスターノードのプライべートキー output_txid  output_index

mn1 192.168.30.40:3300 foobaarfoobarfoobar 4f40008f84a7544509283c3c419a91ab9ec5d5fb74c6818b294fca2ccce87c98 0

 

6.マスターノードを起動

その前に、ファイアウォールのポートを開きます。閉じたままでも動くコインがありますが、外部からはマスターノード停止と判断されます。

(1)  さくらインターネットの場合

iptablesが初期設定なので、root 権限で、ファイルを編集します。

$ sudo nano /etc/iptables/iptables.rules

:OUTPUT ACCEPT [0:0] の後に以下を追加 ポート番号は適宜変更

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3300 -j ACCEPT

 

(2)  Vultr の場合

ufw なので、手順は、もう少し簡単。

$ sudo ufw allow 3300

$ sudo ufw reload

 

デーモンを起動する

charity-cli stop するとか、linux を再起動したら、とりあえず、毎回手動でスタートしてください。

$ charityd -daemon

ここまでうまく設定できていると、状態が確認できるはず。

$ charity-cli masternode list-conf

{

    "masternode" : {

        "alias" : "mn1",

        "address" : "IPアドレス:ポート",

        "privateKey" : "プライベートキー",

        "txHash" : "output_txid",

        "outputIndex" : "output_index",

        "status" : "MISSING"

    }

}

まだ、スタートする指示を出していないので、表示されるだけです。

マスターノード起動 (windows のウォレットの場合は、windows 側で実行します)

$ charity-cli masternode start-alias mn1

{

    "alias" : "mn1",

    "result" : "successful"

}

注意: コインによっては、masternode start-alias false mn1 とか、masternode start だけとかバリエーションがある

 

7.マスターノード確認

$ charity-cli masternode status

コインによって表示が違うけど、status が以下になっていればOK

    "status" : "Masternode successfully started"

 

うまくいかなかった例

charity-cli masternode status

{

    "vin" : "CTxIn(COutPoint(0000000000000000000000000000000000000000000000000000000000000000, 4294967295), coinbase )",

    "service" : "[::]:0",

    "status" : "Not capable masternode: Hot node, waiting for remote activation."

}

 この場合は、起動できてないので、charity-cli masternode start-alias mn1 で起動指示を出しなおしてみます。

 

あとは、残高を確認しつつ、気長に報酬が振り込まれるのを待ちましょう。

$ charity-cli getbalance

masternodes online の、コインごとの詳細で、平均報酬間隔(AVG masternode reward frequency)があります。

2〜3倍待てば、初回報酬が入ります。

入らない場合はやり直しです。

 

また、どこかのタイミングで、wallet.dat を保存しておいてください。

これさえ残っていれば、別のマシンでも、ウォレットを復元できます。

 

8.マスターノードやり直し

masternode としての動作を止める。

$ charity-cli stop

.charity/charity.conf を編集する。行頭に # をつけて、masternode をコメントにする。

$ nano .charity/charity.conf

# masternode=1

$ charityd -daemon

マスターノード用にロックされた残高を確認する。

$ charity -cli listlockunspent

マスターノード用残高のロックを解除する。

$ charity-cli  lockunspent true

残高を取引所に戻して最初からやり直す。

$ charity-cli sendtoaddress 送金先アドレス 金額

ウォレットとしての動作を止める。

$ charity-cli stop

データファイルを全部削除する (残高がゼロなら、wallet.dat はバックアップ不要です)

$ rm -rf .charity

2.からやり直す または、あきらめる(汗

以上です。