すりごまの鯖缶?ブログ 2缶目

鯖管のことだったりプログラミングのことだったりマイクラのことだったり

MonaCoin採掘

ここんところ数日かけてMonaCoin採掘してました。
15Monaぐらい集まりました。

採掘中ふと、いいアイデアが生まれたので、実装するためにMonaCoinを外部から操作する方法を調べました。
今回はその調べた結果&実験結果です。

MonaCoinとは

2ch発の仮想通貨です。
現在のレートは4~5円です。はっきり行って儲けなんて考えないほうが良いレベルです。
というか、着想がゲームのようにコインを集めるだけというものだったので、価値なんて元からないのです。

MonaCoinを操作する。

下準備

monacoin-qt か monacoind を準備しましょう。
こいつらが無いと管理できません。

通信方法

Json-RPCです。つまりJsonです。
Basic認証で制限をかけて、APIを用いて管理します。

データテンプレ

POST / http/1.1
Host: localhost
Authorization: Basic Base64-Encode
Content-type:Content-type: application/json
Content-Length:サイズ

{"method":"メゾット","params":[パラメータ],"id":ID}
  • Base64-Encode : "ユーザー名:パスワード"をBase64エンコードしたものです。Basic認証のデータです。
  • サイズ : データのサイズ。つまりJsonのデータ長。
  • メゾット : 何をしたいのかを入れます。API一覧参照。
  • パラメータ : APIにつけるパラメータを入れます。当たり前ですがJson形式です。
  • ID : 数字のIDです。どの処理のデータなのかを調べるためのものです。

通信サンプル

いちいちHTTPプロトコルまで書くとクソ長くなるので端折ります。
また、データテンプレで説明したものも書きません。

Monaを送る
{"method":"sendmany","params":["送信元ラベル", {"送信先アドレス":金額},1,"コメント"],"id":ID}
  • 送信元ラベル : 送信元のWalletのラベルです。
  • 送信先アドレス : 送信先のアドレスです。
  • 金額 : 送る金額です。feeは含まれません。
  • コメント : コメントです。送信時に付きます。必要ないです。

送信先アドレスと金額をカンマ区切りで繰り返すと複数に送れるかも?

Difficultyを取得する
{"method":"getdifficulty","params":[],"id":ID}
Walletの暗号化を一時的に解除する
{"method":"walletpassphrase","params":["パスワード",秒数],"id":ID}
  • パスワード : 暗号化時にかけたパスワードです。
  • 秒数 : 解除する秒数です。

結論

楽しかった。
これからNode.js勉強します。