FC2ブログ

stratum-mining を改造して、クライアントのマイナーへメッセージを送るの巻 - 大人の自由研究

大人の自由研究 ホーム » 仮想通貨 » stratum-mining を改造して、クライアントのマイナーへメッセージを送るの巻

stratum-mining を改造して、クライアントのマイナーへメッセージを送るの巻


 それにしても、yescryptR16 の Cryply Mining Pool が淋しい、国産じゃないからか!?淋しすぎっる。
 そんな時こそ大人の自由研究。

 今回は stratum-mining を改造して、クライアントのマイナー達へメッセージを送る 事を試してみた


 Stratum mining protocol には、client.show_message というものがある。
 これを使えば、接続しているマイナー達へメッセージが送信できるっぽい。
 まぁ、メッセージが来たところで、ログ見てないと意味が無いので、気付かない事、99.9%だろうけど(汗)

 試しに、以下の行を mining/subscription.py へ入れてみる
self.connection_ref().rpc('client.show_message', [ "Welcome to cryply.ukkey3.space! Please enjoy mining!", ])

 場所は、'mining.set_difficulty' を クライアントへ送っている辺りへ。

 クライアントのマイナーで接続を試みると。。。


[2018-03-07 21:31:28] Starting Stratum on stratum+tcp://cryply.ukkey3.space:3332
[2018-03-07 21:31:28] 4 miner threads started, using 'yescryptr16' algorithm.
[2018-03-07 21:31:28] MESSAGE FROM SERVER: Welcome to cryply.ukkey3.space! Please enjoy mining!
[2018-03-07 21:31:28] Stratum difficulty set to 0.05
[2018-03-07 21:31:29] yescryptr16 block 33310, network diff 0.006


 いいねw
 ちゃんとクライアントのマイナー画面に表示される!

 そこで、ふと。
 プログラムにメッセージ文を埋め込んでしまうと、変更する度に、stratumを立ち上げ直さないとダメだ。
 ファイルから読む?
 いちいち、ファイルオープンさせるのも嫌だし
 って事で、memcached を使ってみる事にした。
 memcached 初体験w

 memcached にメッセージ文を保存して、stratumプログラムから読んでクライアントへ送信。
 メモリアクセスなのでパフォーマンス的にも問題なかろうw

 送信メッセージは2箇所にしてみた。
 1箇所目は、上の部分。これからマイングを始めるからよろしくね!って感じで
 2箇所目は、クライアントからの submit 時。マイニングしてくれたありがとう!って感じでしょうか。

 変更箇所はこちらを御覧ください。

 そして、試しに以下へ接続してみてください
./cpuminer -a yescryptr16 -o stratum+tcp://cryply.ukkey3.space:3332 -u Username.WorkerName -p WorkerPassword
 きっと、ウェルカムメッセージが表示されるハズです。
 ※ちゃっかりと、Cryply Mining Poolへ誘導w

 あまり、マイナーさんには関係無い機能ですが(汗)
 プールを運営してる側としては、一斉に情報を伝える手段としてあっても良いかと。
 例えば、メンテナンスのお知らせや、イベントの告知、そして、一番使いたかったのが、マイナーソフトのアップグレード通達。
 新しいマイナーへ切り替えて下さいよーってメッセージを出すって事も可能。

 ※接続マイナーのバージョンを判断してメッセージの出し分けも出来るが、面倒だったので(汗)

 そしたメッセージの設定用に簡単なプログラムを作成
import lib.settings as settings
import pylibmc

# Wellcome Message
msg_w = 'Welcome to cryply.ukkey3.space! Please enjoy mining!'
sec_w = 0 # expire (sec) 0:no time limite

# submit Mining Message
msg_s = 'Thank you for mining!!'
sec_s = 3600 # expire (sec) 0:no time limite


mc = pylibmc.Client([settings.MEMCACHE_HOST + ":" + str(settings.MEMCACHE_PORT)], binary=True)
mc.set(settings.MEMCACHE_PREFIX + 'msg_welcome', msg_w, sec_w)
mc.set(settings.MEMCACHE_PREFIX + 'msg_submit', msg_s, sec_s)

 最後の2行で Key,Value と有効期限を指定している。

 これは楽しいw



関連記事
コメント(管理者承認後に公開します)

※未入力可能。メールアドレスは公開されますので、ご注意ください。
非公開コメント

トラックバック

http://ukkey3.jp/tb.php/795-0e4cfa53