Rust製仮想通貨(BitZeny)マイニングツール ManukaZeny


ManukaZenyとは

有名BitZenyマイニングツールであるcpuminerをRustでラップしたツールです。
リポジトリ:https://github.com/miyagaw61/ManukaZeny

機能

Slackへの状況通知

プロセスの開始・終了とハッシュレートの平均をSlackで通知します。

予備アドレスに自動切換え

プロセスが落ちたり、接続に失敗したりした場合に、予備のアドレスに自動で切り替えることができます。

Ctrl+C(SIGINT)で終了時、minerdも同時にkill

ManukaZenyを終了させてもバックグラウンドで走らせているminerdが残り続け、重くなってしまうということはありません。

スクリーンショット

上記のスクリーンショットでは、一つ目は接続不可能な存在しないアドレス、二つ目は接続可能な存在するアドレスを指定した場合の挙動です。
接続失敗した後、次の新たなアドレスを用いてマイニングを再試行しているのがわかると思います。
現状では、リトライ回数は3回になっています(アップデートで変わる可能性があります)。

導入

cpuminerの導入

導入方法はcpuminerを参考にしてください。
最後のmakeが終了すると、「minerd」というバイナリが生成されているはずです。
無事生成されていたら、パスを通してください。

ManukaZenyの導入

cargo install --git https://github.com/miyagaw61/ManukaZeny

Slackの情報を環境変数に設定

SlackのエンドポイントURLとチャンネルを環境変数に設定します。
SlackのAPI利用開始については、こちらを参考にしてください

export RUSGIT_SLACK_URL=[slack-url] 
export RUSGIT_SLACK_CHANNEL=[slack-channel] 

RUSGIT_SLACK_CHANNNEL環境変数の例
#manukazeny
@username

JSONファイルの準備

ManukaZenyはJSONで書かれた設定ファイルを読み込み、挙動を変えます。

{ "addresses": ["ABC", "IJK", "XYZ"] }

addressesプロパティにはウォレットのアドレス(ユーザー名)を設定してください。

実行

引数にJSONファイルを渡して実行してください。

manukazeny start [json-file]

終了

manukazeny stop

機能追加予定

JSONのプロパティ追加

・oオプション(プールアドレス)
uオプションはウォレットアドレス、oオプションがプールアドレスです。

・リトライ回数

・スレッド数

・その他細かい設定項目

nohupを上回るdeamon機能

探して見つかれば実装します。なければnohupしてください。
supervisor とか deamonize とか良さそう?

Slackだけでなくメールでの通知も可能にする

https://sendgrid.com/ を使用するつもりです。

Webからグラフでステータスを確認できるようにする

KibanaとかGrafanaとかになるのかなぁ

RPC

リモートプロシージャコールで遠隔から制御できるようにします。

TLS実装

TLS通信を実装してセキュリティを向上させます。

貢献

機能追加依頼やバグ等を発見した際には、issueを建てていただくか @miyagaw61 へ連絡していただければ対応します。