XEM(NEM)ハーベストの停止をServerlessに自動検知&通知する
はじめに
本記事は、XEM(NEM)のデリゲートハーベスティング(委任)をしている際、リモートノード(Super Node)の状態変化によってハーベスティングが停止してしまっていることを検知・通知するためのServerlessアプリケーションを紹介するものです。
Super Nodeによっては、結構、切断が発生してしまうのですが、確認するためにはNano Walletを開いて確認しなければならず、気が付かない間はハーベストが完全に止まってしまいます。ですので、久しぶりに開いて悲しい思いをすることになります・・・。それをナルハヤで気がつけるようにしよう!という試みです。
いわゆるガチホする方で条件を満たす方は、できるだけハーベストの機会を逃したくないですよね!
利用の前提
- XEMのデリゲート(委任)ハーベスティングを行っていること
- AWSアカウントがあること
アーキテクチャ&動作概要
- CloudWatch Eventsのスケジュール(cron)で定期的にLambda Functionをトリガー。
- デリゲートハーベスティング委任先のリモートノード(Super Node)へリモートアカウントのステータスを確認。有効でない場合、SNS TopicへPublish。
- 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
リモートノードと接続が切れた場合は、上記をLambdaの環境変数にしていますので、IpAddressを新しいリモートノードへ更新すればOKです。
おわりに
XEMのAPIは他にもたくさんあり、結構ドキュメントも揃っていますし、拡張も控えていますので、これからどんどん盛り上がりそうですね!いろいろ作ったり、こういった機能もサービス化してみたいところです。
XEMほしい・・・(ノ∀`)
Author And Source
この問題について(XEM(NEM)ハーベストの停止をServerlessに自動検知&通知する), 我々は、より多くの情報をここで見つけました https://qiita.com/second113/items/d69b618f7a37582c633b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .