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에서 사용자에게 전자 메일을 보냅니다.

  • 구현



    다음을 이용하고 있습니다.
    - 배포 ⇒ 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에서 サービス⇒デリゲートアカウント管理⇒デリゲートアカウントの有効化/無効化 에서 확인.



  • 리모트 노드와 접속이 끊어진 경우는, 상기를 Lambda의 환경 변수로 하고 있으므로, IpAddress를 새로운 리모트 노드에 갱신하면 OK입니다.

    결론



    XEM의 API는 그 밖에도 많이 있어, 상당히 문서도 갖추어져 있고, 확장도 앞두고 있으므로, 앞으로 점점 고조될 것 같네요! 여러가지 만들거나 이런 기능도 서비스화하고 싶은 곳입니다.

    XEM 원해・・・(노∀`)

    좋은 웹페이지 즐겨찾기