##はじめに
Ethereumフォークで国産の仮想通貨「Nekonium」のパブリックノードを構築する方法を記載します。
##手順
###サーバーの準備
####ドメインの取得
ドメイン取得代行サイトで任意のドメインを取得してください。
今回はバリュードメインで「nekonium.site」というドメインを取得しました。
####サーバーの用意
Linuxサーバーを立ち上げます。
今回はAWSの「Ubuntu Server 16.04 LTS (HVM), SSD Volume Type」を選びました。
インスタンスタイプはとりあえず「t2.micro」にしておきます。
####固定IPの取得
インスタンスが立ち上がったら、「Elastic IP」でグローバル固定IPを取得します。
今回は「13.250.141.96」が割り当てられました。
####固定IPを関連付ける
「アクション」から、先ほど作成したインスタンスにグローバル固定IPを割り当てます。
####ファイアウォールの設定
「セキュリティグループ」のインバウンド設定から、今回使用するTCPの「8293」ポートを空けておきます。
####DNSの設定
今回割り当てられたグローバル固定IPをドメイン名に紐付けます。
バリュードメインのDNS設定からAレコードのワイルドカードを「13.250.141.96」に設定します。
###サーバーの設定
####インスタンスへの接続
Windowsの場合は「PuTTY」を使用します。詳しい接続方法はAWSのページを参照してください。
[Linux インスタンスへの接続 - AWS Documentation]
(https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/AccessingInstances.html?icmpid=docs_ec2_console)
####Ubuntuのアップデート
ログインができたら、まずUbuntuをアップデートして再起動します。
sudo apt-get update
sudo apt-get dist-upgrade
sudo reboot
####build-essentialのインストール
下記コマンドを実行してbuild-essentialをインストールします。
sudo apt-get install build-essential make
####Goのインストール
下記コマンドを実行してGoをインストールします。
wget https://storage.googleapis.com/golang/go1.9.2.linux-amd64.tar.gz
sudo tar -xvf go1.9.2.linux-amd64.tar.gz
sudo mv go /usr/local
export GOROOT=/usr/local/go
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
export GOPATH=$HOME/go
go version
と入力してgo version go1.9.2 linux/amd64
と出力されればインストール成功です。
####gnekoniumのインストール
下記コマンドを実行してgnekoniumをインストールします。
mkdir nekonium
cd nekonium
git clone https://github.com/nekonium/go-nekonium
※もしgitがインストールされていない場合は、sudo apt-get install git
を実行して下さい。
cd go-nekonium
export GOROOT=/usr/local/go
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
export GOPATH=$HOME/go
make gnekonium
####gnekoniumの初回起動
#####ブロックチェーンの同期
下記コマンドを実行してブロックチェーンの同期を行います。
build/bin/gnekonium --fast --cache=256 console
少し時間がかかります。(15分くらい)
※注意 --cache=512
だとインスタンスのメモリ容量が足りず失敗します。
#####同期終了
Fast sync complete, auto disabling
と表示されれば同期が成功したことになります。
####パブリックノードの開始
PuTTYでセッションを開きなおして下記コマンドを実行するとパブリックノードが開始されます。
cd nekonium/go-nekonium
build/bin/gnekonium -rpc --rpcaddr 0.0.0.0 --rpcport 8293
####動作確認
ノードが動作しているか確認するには別セッションで下記コマンドを実行します。
curl -s -X POST --data '{"jsonrpc":"2.0","id":0,"method":"eth_getBalance","params":["アドレス","latest"]}' http://nekonium.site:8293/
アドレス
にはNekoniumのアカウントを入力して下さい。
16進数でアカウントの残高が表示されれば無事動作していることになります。
####セッションを維持するには
現状のままだとセッションが途切れたりPuTTYを終了したりするとgnekoniumも終了してしまいます。
解決方法としては下記コマンドで仮想ターミナルを使用してパブリックノードを開始します。
tmux new -s gnekonium
cd nekonium/go-nekonium
build/bin/gnekonium -rpc --rpcaddr 0.0.0.0 --rpcport 8293
Ctrl+bのあとにdを押すと元の画面に戻りますが、このままPuTTYを終了してもgnekoniumの実行を持続することができます。
##おわりに
これでパブリックノードの構築が完了しました。
他のドメインレジスタやVPSサービス、Linuxディストリビューションを使用する際は適宜読み替えて下さい。
次回はSSL通信に対応したNekoniumのパブリックノードの構築方法を投稿したいと思います。
##参考サイト
Installation Instructions for Ubuntu - Go Ethereum
EthereumノードにJSON-RPC API経由でアクセスする - Qiita