(2017/11/5版)ByteballのWitnessを稼働しユーザーに利用して貰えるようになるまでの手順書(11/9追記あり)

in byteball •  7 years ago  (edited)

この記事はbyteballのwitnessを起動してモニタリングサイトに反映し、

外部からもwitnessとして正しく認識させるまでの技術的な手順を記したものとなります。

注意点として、手順の再現性や稼働後のwitness報酬の獲得はまだ検証段階なので、そのまま実行しても途中でうまく進めない場合があります。ubuntu以外のOSで行う場合は一部読み替えが必要です。

また、手順にセキュリティは一切考慮していませんし、解説も必要最小限のためubuntuやDockerの知識が全くない場合は導入難易度が高くなっています。

あらかじめご了承ください。

(2017/11/9 記事の末尾にwitnessの報酬獲得や仕様について追記しました)


環境 

Docker community Edition 

Mac https://store.docker.com/editions/community/docker-ce-desktop-mac 

Windows https://store.docker.com/editions/community/docker-ce-desktop-windows 

Dcokerは導入済みで、基本操作などは出来る前提で話を進めていきます。 

他のOSで設定する場合はコマンドや説明の読み替えが必要です。 


1:元となるubuntuの起動、ポートの開放

作業の土台となるubuntuを取得して、ポートを開放した上で起動します。 

docker pull ubuntu 

docker run -it -p 6611:6611 -p 80:80 -p 587:587 ubuntu 

*PC側のポート開放も必要です。環境によって違うので各自でポート開放方法を調べて行ってください。 


補足:ポートについて 

6611、80  byteball自体が使うポート 

587 gmailで使うポート。メールの送信手段に応じて変更してください。 


2:インストール、ソースのコピー

nodejsなど必要な物をインストールして、ソースコードをコピーする作業を行います。 

1行ずつコピペするのは面倒なので一括で実行できるようにしてあります。 

以下のコードを全てコピーして貼り付けてEnterで上記の作業が一気に終わります。 

終わるまでに時間がかかるのでしばらくお待ちください。 

cd;apt-get update;apt-get install -y nodejs npm nodejs node-sqlite3 git logrotate vim ssmtp;apt-get install -y -Y sendmail;sendmailconfig;update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10;git clone https://github.com/byteball/byteball-witness;cd byteball-witness;npm install bitcore-mnemonic;npm install;cd node_modules;rm -r byteballcore;rm -r headless-byteball;git clone https://github.com/byteball/byteballcore;git clone https://github.com/byteball/headless-byteball;cd byteballcore/ 


3:byteballのコンフィグ変更

まずbyteballcoreの設定 

cd byteballcore/ 

vim conf.js 

 ポート指定部分の1行だけ下記の通りに変更 

 exports.port = 6611; 

次にbyteball-witnessの設定 

cd ~/byteball-witness/ 

vim conf.js 

 同じくポート指定部分を下記のように変更 

  exports.port = 6611; 

     //exports.myUrl = 'wss://mydomain.com/bb'; 

     exports.bServeAsHub = false; 

 次に以下の行を変更します。 

  exports.permanent_pairing_secret = ‘ランダムな文字列を入れます。初期値のままにすると簡単に外部からハッキングできるので変更必須' 

  exports.control_addresses = ‘ウォレットのチャットからの操作を許可するアドレス。あとでwitnessのウォレットアドレスを取得する際に必要' 

  exports.payout_address = ‘witness報酬の支払い先。自分の管理するウォレットのアドレスを入れてください。’ 


補足:2行目で入れるアドレスはデバイスアドレスという普通のものとは違うアドレスです。 

自分のデバイスアドレスの確認の仕方 

まずはGUIウォレットを起動 

次に左メニューのSETTINGSから 

https://imgur.com/a/okNaZ

この画面の 

DEVICE ADDRESSをコピペ 

https://imgur.com/a/Q5cCu


4:メール送信設定

byteball-witnessは必要に応じてメール送信を行います。 

一見全く無関係に見えますが、設定しない場合起動中にエラーでwitnessが止まりますので必須作業です。 

まず、事前にgmailの新規発行を行っておきます。 

既存のものを使っても構いませんが、セキュリティリスクがあるため、専用のアドレスを作っておいた方がオススメです。 

ここでは[email protected]を作ったという体裁で進めます。 

なお、gmailで設定する際安全性の低いアプリからの実行を許可しておく必要があります。 

[アカウント設定→ログインとセキュリティ→アカウントにアクセスできるアプリ→安全性の低いアプリの許可: を有効に変更] 


cd /etc/ssmtp/ 

vim ssmtp.conf 

既存の項目は全て削除して以下のように書き換えてください。 

*hogeとかpasswordとなっている部分は各自の環境に合わせてください。 

[email protected] 

mailhub=smtp.gmail.com:587 

rewriteDomain=gmail.com 

hostname=gmail.com 

[email protected] 

AuthPass=password 

AuthMethod=LOGIN 

UseSTARTTLS=YES 

FromLineOverride=YES 


5:witnessの初回起動

cd ~/byteball-witness 

node start.js 

*デバイス名とパスワードを聞かれるので任意の値を入力。パスワードは起動毎に聞かれるので忘れないようにしましょう。 

cd /root/.config/byteball-witness/ 

vim conf.json 

*jsonファイルはこのように変更。名前の部分は変更不要。カンマと2−3行めのメールアドレスだけ任意の値にする。行頭は半角TAB 

2行目は各種警告やエラーメールの受け取り先。半日放置するだけで1000件レベルで大量に飛んできますので注意。 

3行目は先ほど設定したメールのアドレス。今回の場合は、[email protected] 

     "deviceName": "mydeviceName", 

     "admin_email": "[email protected]", 

     "from_email": "[email protected]


6:witness2回目の起動

cd ~/byteball-witness 

node start.js 

起動時に成功して入れば、このような行が出てくるはずなので、 

====== my pairing code: XXX 

XXXに当たる部分をコピーして控えておいてください。 

この後1〜3日ほど起動したまま放置します。HDDは少なくとも13~14GBほど消費します。 


補足:プロセスの管理

witness実行中にCTRL+Zのキーを押した後bgとコマンドを打ってあげるとバックグラウンドで実行してくれます。

エラーメッセージなどが出た場合はバックグラウンドでも関係なく表示されます。

ログを見たり設定を確認する必要が出てくるので基本バックグラウンド稼働推奨です。

fg コマンドでバックグラウンドからの復帰。

jobs コマンドで実行中のタスクを確認できます。何も出てこなければwitnessが落ちています。

kill %数字 コマンドで実行中のタスクを終了させる事ができます。エラーメッセージ後のwitness再起動がうまくいかない場合はタスクが残っている可能性があります。


7:自分のウォレットからwitnessのウォレットアドレスの確認

6で控えたペアリングコードでwitnessとの接続を行います。 

当然witnessは起動したままです。 

Chatタブの+Add a new deviceをクリック。 

https://imgur.com/a/DhBqj

下のACCEPT INVITATION FROM THE OTHER DEVICEをクリックして、 

https://imgur.com/a/1L0lc

次の画面にコピーした文字列を貼り付けて次に行くとデバイスが追加される。 

https://imgur.com/a/j6TYr


上で追加したチャットに入って 

address 

とメッセージを流すと 

向こうからウォレットのアドレスを返してくれますので控えておきましょう 

https://imgur.com/a/3UWQz

詳しくは 

https://github.com/byteball/headless-byteball

のRemote controlを参照。 


8:witnessへの送金

witnessが正常に稼働した場合、 

「witnessing failed: not enough spendable funds from [あなたのwitnessのウォレットのアドレス] for 488」 

といった内容のメールが来ると思います。 

詳しい事は不明ですが、witnessを稼働する際、少額のbyteballをwitnessに送ってやる必要があるようです。 

メールを受け取ったら7と同様にチャットに入った後、witnessのアドレスをクリックすると 

「Pay to this address」が出て来るのでそれをクリックしてください。 

あとは額を入れて送るだけですが、私の場合は100000bytesを送りました。 

正確なところは不明ですが、半分かもっと少ない額でも大丈夫だと思います。 

少なくとも1000bytesだとすぐに枯渇してエラーメッセージが出て来てしまいます。


9:ユーザーのwitnessリストの変更

最後にユーザーにお願いしてwitnessのリストの変更をしてもらってください。 

メールの警告が出てこなくなる100人が目標です。 

足りない場合、 

「only 99 spendable outputs left, will split an output of [witness内のウォレットに関係する額と思われる数値]」 

といったメールが届き、カウントが100になると止まります。 

補足:witnessリストの変え方 

ウォレットの左上の「三」をクリック。 

次にSETTINGをクリック。 

次にWitnessesをクリック。 

「Auto-update the witness list from the hub」左にスライドしてオフに。 

その下のリストのどれか一つ選んでクリック。 

アドレスを変更したいwitnessのウォレットアドレスに書き換えてsaveをクリック


補足:Witnessとして外部に認識されているかどうかの確認方法

https://byteball-cashback-witness.com/balance-and-withdrawal.php

にアクセスして、witnessのウォレットアドレスを入れてみてください。

Witnessになれている場合、赤枠で

「Witness addresses cannot use cashback witness system.」

というメッセージが出てきます。

それ以外の表示が出る場合はまだwitnessとして外部に認識されていません。何処かの手順でミスをしている可能性があります。


以上です。


冒頭にも書きましたが、報酬の獲得など検証中の部分はありますがこれでほぼ完全な手順となります。

witnessの非中央集権化が進むことで通貨としての信用性が上がる事を期待したいです。


(2017/11/9 追記)

witness報酬を獲得する動きが見られなかったので、tonychさんに質問してみました。

その回答の結果をもって、witnessに関しての検証は一通り終わりました。

*向こうの英語回答の解釈間違いはあるかもしれません。あったらご指摘ください。

・報酬獲得には十分な人数がwitnessリストを書き換える必要がある。具体的には教えてもらえなかったけど(私が10人をsmallと表現したことに対して)largeと表現してました。

・書き換えた人達が使った送信などを行なって支払った手数料の一部がwitnessに入る。書き換えてない人の分は適用されない。当然書き換えたユーザーが何もしなければwitness報酬は発生しない。

・witnessの稼働にはbytesが必要と思われる。時間とともに消費されていく。消費したbytesがどこに行くのかは未確認。私が検証した時は2~3日で100000bytesがなくなる程度のペースでした。

つまり今回の検証に関しては人数が足りないか登録者が特に使わなかったから報酬が確認できなかったと思われます。逆を言えばこの記事の設定手順自体は合ってると考えて良さそうです。


*おまけとして質問の際のやりとりも残します。私は英語が苦手なので主にgoogle翻訳を使って会話してます。

醜い文章ですがご容赦ください。


yamaoka [8:22 PM] 

Nice to meet you.

I have a question about witness.

I was able to launch witness and post it on the monitoring page.

witnessAddress:RSOWAONJBM5WTB7UKWHQOGDB4NSOKKOO

At that time I received an error mail “witnessing failed: not enough spendable funds from RSOWAONJBM5WTB7UKWHQOGDB4NSOKKOO for 441”, so I sent 100000 bytes to witness’s wallet according to the instructions.

But waiting for two days I am in trouble without payment of witness’ s reward.

(It is not a big deal)100000 bytes I sent is gone.

I asked Mr. portabella and I got the answer that you know something.

I am thinking that% of witness is too low(my max is 0.05% in this site:https://byteball.fr/stats.html).

Could you tell me if you can find a solution clue?

Thank you for reading.

https://byteball.slack.com/archives/D7NUMR3KR/p1510054713000091

byteball.fr

Byteball Witnesses monitoring service

byteball hub and redistributive witness service


tonych [10:10 PM] 

what happened after you sent the money?


yamaoka [10:23 PM] 

after sent money. i get mail like this”witnessing problem: only 11 spendable outputs left, will split an output of 25000”

As time went by, the counts went up (this case 11>12>13...>100.message stopped at 100)and the numbers at the end went down (100000>50000>25000>...)steadily.

The bytes sent to wallet of witness decreased steadily. When it fell below 500 bytes, a message saying that bytes were missing again arrived and if i leave it for a while, the user who registered in witness list can not send money. (edited)


tonych [10:26 PM] 

so it has burnt all the money

you don't earn anything if nobody names you a witness


yamaoka [10:34 PM] 

I asked the Japanese community for cooperation and asked some people (estimated to about 10 people) to change witness list.

Does that mean that the same thing happens even if the number of registrants is too small?

Or, if a person who changed witless list does not do anything (They do not send money nor deposit), will I get a phenomenon that I can not make any money?


tonych [10:50 PM] 

correct, the number should be large enough and they should send transactions (you earn a portion of the fees they paid)


yamaoka [10:55 PM] 

I understood well. Thank you very much.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!