ByteballでWitnessを起動する為の手順書(暫定版)
概要
この記事は私がByteballのwitnessを動かした際の手順をまとめた資料となります。
Byteball公式で手順が紹介されていないため、ソースコードを独自に調査して無理やり動かしており間違いや無駄がある可能性が大いにあります。
またUbuntuで動かすことを想定しているため、 説明に使われているコマンドやその挙動がOS毎によって異なる場合があります。 セキュリティも一切考慮してません。
おおまか流れ
まずnode.js,gitなどを導入して、npm installでローカルディレクトリにnode_modulesフォルダの生成。
次にgithubから必要なByteballのコードをコピーしてWitness以外はnode_modules内に配置。
最後に設定ファイルを書き換えてjacascriptを起動といった手順になります。
この記事の手順で出来ること
Byteballのwitnessをエラーなく動かすことが出来ます。
モニタリングサイトなどへの反映は確認できていない為、設定やモジュールに不足がある可能性が高いです。
追加手順が分かった場合は追記します。
環境
・Ubuntu(64bit)日本語Remix 14.04 (おそらく16でも可)
https://www.ubuntulinux.jp/japanese
・Oracle VM VirtualBox 5.1.30(仮想環境に入れる場合のみ)
・10GB以上のHDD空き容量(20〜30GB以上推奨)
*Ubuntuの初期設定は既に出来ているものとして省略します。
手順
1:npm、gitなど必要なパッケージのインストール
最初に node.jsなどのパッケージを取得します。
ubuntu初期設定でそのまま取得するとバージョンが古すぎて後でエラーが出るので最新版を導入します。
sudo apt-get update
sudo apt-get install -y nodejs npm node-sqlite3 git logrotate
次に n package を導入します
sudo npm cache clean
sudo npm install n -g
最後に n package を使って node をインストールします。
sudo n stable
sudo ln -sf /usr/local/bin/node /usr/bin/node
*ubuntu独自のエラーを回避してnodeコマンドを使う為に少し回りくどい方法をとっています。
2:Githubから必要なByteballのコードを取得する
ホームディレクトリに移動
cd
コードの取得
sudo git clone https://github.com/byteball/byteball-witness
後程設定変更でファイルをいじるため、必要に応じて権限を解放してください。
*変更例:byteball-witness以下のファイルが全ユーザーが読み書き可能に。
sudo chmod -R 777 byteball-witness
3:npmコマンドで必要なパッケージを取得
npm経由でさらにパッケージを追加導入します。
ここでnpm installコマンドを使ってnode_modulesフォルダを生成します。
cd ~/byteball-witness/
sudo npm install bitcore-mnemonic
sudo npm install
(エラーが出るようならsudoなしで投入するとうまく行く場合があります。)
cd node_modules
Byteballのjavascript(start.jsなど)にrequire()関数が使われており、他のByteballのコードの参照先がnode_modules内になっています。
今回は便宜上Byteballwitness内にnode_modulesフォルダを作りましたが、どこに生成しても特に問題ないと思います。
残りのByteballのコード取得
GitHubから必要なコードをコピーします。
cd ~/byteball-witness/node_modules
sudo git clone https://github.com/byteball/byteballcore.git
sudo git clone https://github.com/byteball/byteball-hub.git
sudo git clone https://github.com/byteball/headless-byteball.git
sudo git clone https://github.com/byteball/byteball-relay.git
4:コンフィグの変更
最初は/home/[username]/.config/byteball-witness/conf.json を開きます
*ターミナル、ファイラーどちらでも問題なし。読み込み専用になっている場合は権限変更してください。
権限変更例:全ユーザーに書き込み権限付与
sudo chmod a+w 変更したいファイル名
ファイルを開くと下記のようになっていると思うので、
{
"deviceName": "byteball"
}
このように直して保存
{
"deviceName": "byteball",
"admin_email": "[email protected]",
"from_email": "[email protected]"
}
それぞれのメールアドレスは任意のものを入れてください。
行頭の部分は半角TABスペース、それ以外の余計なスペースや文字列は全部削除してください。
余計な半角スペースが一個あるだけで挙動が大幅に変わるようです。
次に、 home/byteball-witness/conf.js を開きます。
変更箇所
exports.payout_address = 'WHERE THE MONEY CAN BE SENT TO'
→報酬の受け取り先と思われます。自分のByteballウォレットのアドレスで問題ないと思います。
次は~/byteball-witness/node_modules/byteall-hub/conf.cs
変更箇所
exports.bServeAsHub = false;
→trueになっている場合はfalseに。
最後に~/byteball-witness/node_modules/headless-byteball/conf.js
変更箇所
exports.payout_address = 'WHERE THE MONEY CAN BE SENT TO’;
→報酬の支払い先。手持ちのウォレットのアドレスを入れてください
5:Witnessの起動
まずディレクトリを移動
cd ~/byteball-witness
次に起動します
sudo node start.js
問題がなければデバイス名やパスワードを聞かれるので適宜入力してください。
設定ファイルに不足がある場合はこのような画面になり停止します。
設定が正しく出来ていればこのような画面になり、CTRL+Zで停止するまで動き続けます。
裏ではByteballのブロックデータなどを取得している為、HDDに空き容量がないとエラーで停止します。
私が確認できたのはここまでです。
ここから先に関しては未検証ですが、分かり次第随時追加していきます。
説明は以上です。
最後に
ここまでの長文を読んでいただきありがとうございます。
今回の内容は仮想環境で何度か再現をしたのでおそらく問題ないと思いますが、細かいエラーなどは都度対応が必要になると思います。仮想環境なら場合によってクローン機能などを駆使してやり直す工夫も必要です。
技術的な質問等をしていただいても構いませんが私自身linux系はほとんど何も知らないので解決は期待しないでください。google先生に聞いた方がいいと思います。
参考サイト
https://qiita.com/seibe/items/36cef7df85fe2cefa3ea
https://gitlab.com/snippets/1548253
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230871/?rt=nocnt