LoginSignup
1
0

More than 5 years have passed since last update.

XEM(NEM)ハーベストの停止をServerlessに自動検知&通知する

Last updated at Posted at 2018-01-28

はじめに

本記事は、XEM(NEM)のデリゲートハーベスティング(委任)をしている際、リモートノード(Super Node)の状態変化によってハーベスティングが停止してしまっていることを検知・通知するためのServerlessアプリケーションを紹介するものです。

Super Nodeによっては、結構、切断が発生してしまうのですが、確認するためにはNano Walletを開いて確認しなければならず、気が付かない間はハーベストが完全に止まってしまいます。ですので、久しぶりに開いて悲しい思いをすることになります・・・。それをナルハヤで気がつけるようにしよう!という試みです。

WS000093.png

いわゆるガチホする方で条件を満たす方は、できるだけハーベストの機会を逃したくないですよね!

利用の前提

  • XEMのデリゲート(委任)ハーベスティングを行っていること
  • AWSアカウントがあること

アーキテクチャ&動作概要

XemHarvestChecker.png

  1. CloudWatch Eventsのスケジュール(cron)で定期的にLambda Functionをトリガー。
  2. デリゲートハーベスティング委任先のリモートノード(Super Node)へリモートアカウントのステータスを確認。有効でない場合、SNS TopicへPublish。
  3. SNSから利用者へE-mailを送信。

実装

以下を利用しています。
- デプロイ ⇒ Serverless Framework
- ステータス確認 ⇒ NEM NIS API

以下の用にリモートノードへリクエストを送ると
const URL = 'http://' + IpAddress + ':7890/account/status?address=' + RemoteWalletAddress;

次のようなJSONオブジェクトがresponseとして返ります。このオブジェクトのstatusがUNLOCKED以外の場合は、ハーベストが有効になっていない状態となり、これをチェックしています。

{
    "cosignatories": [ ],
    "cosignatoryOf": [ ],
    "status": "LOCKED",
    "remoteStatus": "ACTIVE"
}

コーディングのレベルが低すぎて恥ずかしいのですが、GitHubに置いています。

使い方

Serverless.ymlのcustomセクションの項目をセットし、デプロイ(serverless deploy)します。

  • emailAddress
    • 通知先のメールアドレスを設定
  • accountId:
    • AWS Account ID(12桁の数値)
  • IpAddress
    • リモートノードのIPアドレス or ホスト名
  • RemoteWalletAddress
    • 委任ハーベスト用のリモートアカウント
    • nano Walletでサービス⇒デリゲートアカウント管理⇒デリゲートアカウントの有効化/無効化で確認。 remoteAcc.png

リモートノードと接続が切れた場合は、上記をLambdaの環境変数にしていますので、IpAddressを新しいリモートノードへ更新すればOKです。

おわりに

XEMのAPIは他にもたくさんあり、結構ドキュメントも揃っていますし、拡張も控えていますので、これからどんどん盛り上がりそうですね!いろいろ作ったり、こういった機能もサービス化してみたいところです。

XEMほしい・・・(ノ∀`)

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0