こんにちは。ビットコおじさんだよ。

おじさんは20,000XEMを元手に、ネム(XEM)のデリゲートハーベスティングをしているわけだけれども、最近はだいたい週1回ぐらいでハーベストされているよ。
(過去のハーベスティング状況は、カテゴリの「ハーベスティング」で見ることができるよ。)

0XEMとか0.15XEMとかも多いけど、まあハーベスティングされているだけいいかな?って思ってる。

でも!!

いつまでたってもハーベスティングされない!!ってことがあって、NanoWalletをチェックすると「ハーベストの状況」が「無効」とかになってることがあるよ。

ヽ(#`Д´)ノ ムキー!

しかも、スマホの「NEM Wallet+」だと、ハーベスト状況が無効になっていても「委譲ハーベスティング:ロックは解除されています」しか出ないので、安心してると全くハーベスティングされていないという罠。

いちいち、PCでNanoWalletを起動しないとハーベスト状況を確認できない・・・。

(;´Д`)

昨日もまた止まってた。おじさんが使ってるノードがだめなのかな?みんなは大丈夫なの?
誰かAPI使ってハーベスト状況が無効になったら教えてくれるアプリ作って!って思ってたけど、探してもなさそうだし、こうなったら自分で作るしかない!!

New Economy Movement(NEM) APIマニュアル和訳」を読むとNEMのAPIの使い方が書いてあるよ。
どうやら「3.1.4.アカウントステータスのリクエスト」ってのを使って、委任先ノードにリモートアカウントを渡せばステータスが返ってくるぽい。

うーん?
読んだだけではよくわからないので、直接URLを叩いて返ってくるJSONを見てみるよ!

ブラウザのURLに「委任先ノード:7890/account/status?address=リモートアカウント」を入れるよ。
委任先ノードとか、リモートアカウントっていうのはNanoWalletの「デリゲートアカウント(委任アカウント)管理」で設定してあるやつだよ。

nanowallet0
引用元:NanoWallet

ハーベストの状況が「有効」のときには、JSONの「status」が「UNLOCKED」で返ってくるね。

gas26

試しにデリゲートハーベスティングを停止して、ハーベストの状況を「無効」にしてみると、「status」が「LOCKED」になる。

gas27

これを定期的に調べれば、ハーベスティング止まってるかどうかがわかりそう!

.。゚+.(・∀・)゚+.゚

てことで、またGAS(Google Apps Script)に頼るよ。
GASの使い方とかは、関連記事を読んでね。

関連記事→「API入門(1)取引所のリアルタイムレートをゲット!

Googleドライブを開いて、「新規」から「Google Apps Script」を追加するよ。

gas28

今回は、WEBアプリケーションじゃないのでHTMLもいらないから、「myFunction」のままで大丈夫。
ソースはこんな感じ(↓)。
function myFunction() {
    // メール設定
  var mail_to = "自分のメールアドレス";
  var title = "ハーベスティングチェック";
  var text = "デリゲートハーベスティングが無効になりました。\nNanoWalletを確認してください。";
  
  try {
    // リモートアカウント
    var remote_account = "自分のリモートアカウント";
    // 委任先ノード
    var delegate_sn = "自分の委任先ノード";
    
    var sn_url = "http://" + delegate_sn + ":7890/account/status?address=" + remote_account;
    var response = UrlFetchApp.fetch(sn_url, { muteHttpExceptions:true });
    var json = JSON.parse(response.getContentText());
    
    if(json["status"] != "UNLOCKED")
    {
      MailApp.sendEmail(mail_to, title, text);
    }
  } catch(err) {
    // DNSエラーなどでデリゲートノードが見つからないとき  
    text = "委任先ノードが見つかりません。\nNanoWalletを確認してください。";
    MailApp.sendEmail(mail_to, title, text);
  }
}
自分のメールアドレス」と、「リモートアカウント」、「委任先ノード」を書き換えてね。
書き換えたら保存を押す。

gas29

名前を適当に付けてね。
おじさんは「ハーベスト状況チェッカー」にしておいた。

gas30

後は、ハーベスト状況チェッカーを定期的に動かせば完成!
プロジェクトのトリガーアイコンをクリックして、トリガーを設定するよ。

gas31

GASは、分単位でも動かせるけど、今回のプログラムはハーベスティングが止まってると、何回もメールを送ってくるので、あまり細かくするとメールがいっぱいきてもうるさいので6時間ぐらいにしておいた。
12時間に1回とか、1日1回とかでもいいかも。お好みで設定してね。
時間を選んだら「保存」をクリック。

gas32

承認が必要って言われる。

gas33

実行するアカウントを選択するよ。

gas34

「許可」をクリック。

gas35

設定はこれで完了!

(=゚ω゚)人(゚ω゚=)ぃょぅ!

ちゃんと動くかどうかをチェックするには、「実行」をクリックするよ。
今回のプログラムは、ハーベスト状況が有効になっていれば何も起きないよ。
ハーベスト状況が無効になっているか、委任先ノードが反応しない場合はメールがくるよ。

gas36

試しにデリゲートハーベスティングを停止してハーベスト状況を無効にしてから、GASを実行してみて、メールがくればプログラムは正しく動いているってことだね。

メールアドレス、リモートアカウント、委任先ノードは間違えないようにね!

ハーベスティングが止まるのは嫌だけど、これで待ちぼうけを喰らわずに済む!
動作確認したいから、はやく止まらないかなーとか思ったりして。

(※いつ止まるかわからないので、まだ実際にハーベスト状況が無効になるのを検出できるかどうかは不明だよ。理論的には検出できるはず。)

うーん。思ったよりもNEMのAPIは簡単に使えそう。
みんなもNEMのAPIで遊んでみてね!

じゃあまた。

 ← 応援ポチっとお願いします。

ビットコイン取引高日本一の仮想通貨取引所 coincheck bitcoin

bitFlyer ビットコインを始めるなら安心・安全な取引所で