Byteballを使ったアプリやシステムを開発するための情報wikiです。現時点では管理人個人のメモとなっています。編集したい方はSlack経由でYamaokaまでご連絡下さい。

この記事はbyteballのwitnessを起動してモニタリングサイトに反映し、
外部からもwitnessとして正しく認識させるまでの技術的な手順を記したものとなります。
ただし手順にセキュリティは一切考慮していませんし、解説も必要最小限のためubuntuやDockerの知識が全くない場合は導入難易度が高くなっています。
あらかじめご了承ください。

環境

Docker community Edition
Mac https://store.docker.com/editions/community/docker...
Windows https://store.docker.com/editions/community/docker...
Dcokerは導入済みで、基本操作などは出来る前提で話を進めていきます。
他のOSで設定する場合はコマンドや説明の読み替えが必要です。

稼働条件

  • 24時間常時稼働するパソコン、サーバーもしくはそれに相当するマシン。
  • 最低でも20GB以上のHDDスペース。日毎に消費量が増えていくと考えられる。
  • witnessの稼働にはbytesが必要で時間とともに消費されていく。消費したbytesがどこに行くのかは未確認。起動時に検証した時は2~3日で100000bytesがなくなる程度のペース。

Witness報酬獲得条件

  • 十分な人数がwitnessリストを書き換える必要がある。具体的な人数は非公開。
  • 書き換えた人達が使った送信などを行なって支払った手数料の一部がwitnessに入る。書き換えてない人の分は適用されない。書き換えたユーザーが何もしなければwitness報酬は発生しない。

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の新規発行を行っておきます。
既存のものを使っても構いませんが、セキュリティリスクがあるため、専用のアドレスを作っておいた方がオススメです。
ここではhoge@gmail.comを作ったという体裁で進めます。
なお、gmailで設定する際安全性の低いアプリからの実行を許可しておく必要があります。
[アカウント設定→ログインとセキュリティ→アカウントにアクセスできるアプリ→安全性の低いアプリの許可: を有効に変更]
cd /etc/ssmtp/ 
vim ssmtp.conf
既存の項目は全て削除して以下のように書き換えてください。
*hogeとかpasswordとなっている部分は各自の環境に合わせてください。
root=hoge@gmail.com 
mailhub=smtp.gmail.com:587 
rewriteDomain=gmail.com 
hostname=gmail.com 
AuthUser=hoge@gmail.com 
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行目は先ほど設定したメールのアドレス。今回の場合は、hoge@gmail.com
{ 
     "deviceName": "mydeviceName", 
     "admin_email": "mymail@mail.com", 
     "from_email": "mymail2@mail.com" 
} 

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内のウォレットに関係する額と思われる数値]」 
といったメールが届き、上の99カウントの箇所が100になると止まります。
最初は0から2の間のことが多いです。
補足:witnessリストの変え方
ウォレットの左上の「三」をクリック。
次にSETTINGをクリック。
次にWitnessesをクリック。
「Auto-update the witness list from the hub」左にスライドしてオフに。
その下のリストのどれか一つ選んでクリック。
アドレスを変更したいwitnessのウォレットアドレスに書き換えてsaveをクリック

補足:Witnessとして外部に認識されているかどうかの確認方法
https://byteball-cashback-witness.com/balance-and-...
にアクセスして、witnessのウォレットアドレスを入れてみてください。
Witnessになれている場合、赤枠で
「Witness addresses cannot use cashback witness system.」
というメッセージが出てきます。
それ以外の表示が出る場合はまだwitnessとして外部に認識されていません。何処かの手順でミスをしている可能性があります。
以上です


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

このページへのコメント

補足:Witnessとして外部に認識されているかどうかの確認方法
こちらの確認方法なのですが、my single addressの部分を入力するという認識であっていますか?
またWitnessとして認識させるためには100人以上登録させる必要があるのでしょうか?
それとも同期を取るだけで良いのでしょうか?

0
Posted by daidai 2019年03月06日(水) 10:31:43 返信

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

当サイトは寄付歓迎です

Byteball
[1MB] [10MB] [100MB]

メニュー

メニュー



開発者ガイド

キャッシュバックプログラム

ウォレットを使用したユーザー認証(翻訳)
(調査中)JSON-RPC経由でByteballにアクセスする
コード解説(headless-byteballのstart.js)(作成中)

実用テクニック

【メニュー編集】

メンバーのみ編集できます