【Umbrel】LNDで発生したルーティングをNode-REDで検知する方法

【Umbrel】LNDで発生したルーティングをNode-REDで検知する方法

結論

node-red-contrib-custom-websocketをインストールし、custom-websocket-inノードでLND REST APIの/v2/router/htlceventsを叩け。

node-red-contrib-custom-websocketモジュールのインストール方法

  1. UmbrelアプリストアでNode-RED(Bitcoin)をインストール
  2. SSHでログインして「docker exec -it node-red_web_1 bash」 を実行してNode-REDコンテナに入る
  3. 入ったら「cd /data && npm i node-red-contrib-custom-websocket」を実行してnode-red-contrib-custom-websocketモジュールをインストール。その後「exit」を実行してコンテナから抜ける。
  4. 「cd ~/umbrel/scripts/ && ./app restart node-red」を実行してNode-REDをリスタートする

custom-websocket-inノードの設定

Type
 Client Type
Name
 REST /v2/router/htlcevents
※ここは自分に分かりやすい内容に自由に書き換えて良い。

Urlについては鉛筆をクリックして設定

Url
 wss://10.21.21.9:8080/v2/router/htlcevents
※10.21.21.9はUmbrelアプリ用Dockerネットワーク内のLNDに割り当てられたIPアドレス。書き換える必要なし。

Headers
 {"Grpc-Metadata-macaroon":"HEREYOURMACAROON"}
※HEREYOURMACAROONの箇所でマカロンのダンプ値で置き換えること。Umbrelログイン後のLightning Nodeを選び、右上・・・からconnect walletを選択する。表示されたMacaroonをコピペすればよい。

Urlについては鉛筆をクリックして設定

CA証明書
 /lnd/tls.cert
※Node-RED(Bitcoin)において/lnd は /home/umbrel/umbrel/app-data/lightning/data/lnd と同じ。Node-REDの(Bitcoin)の無い方はこの場所を参照できないので注意。

このノードを設定してデプロイすればHTLCイベント(ルーティング)がLNDから止めどもなく通知が来る。
(来なかったらそれはあなたのノードがルーティングに使われてないから)

以下サンプル

HTLCイベントのKeyValueについてはここ参照

websocket-clientノードから来るmsg.payloadはStringなのでjsonノードでJSONオブジェクトに変換している。
msg.payload.result.event_typeの値を見てFORWARDならルーティングだと分かる。
msg.payload.result.settle_eventの値を見てプリイメジが入っているなら、すなわち空っぽでないなら転送成功だと分かる。

それぞれ”転送”、”ルーティング成功”で独自のリアクションを起こすノードにつなげれば面白いことができそう。(例:音を出す、Lチカ)

フローは以下からダウンロードできる。

Umbrel_node-red_flows.jsonはUmbrelアプリで入れたNode-RED(Bitcoin)向け。
rpi_node-red_flow.jsonはOSに直にいれたNode-RED向け。
違いはtls.cartへのパスが違うだけ。

【Tips】

  • UmbrelアプリのNode-RED(Bitcoin)ではラズパイのGPIOポートにアクセスできないと思われる。
  • デフォルトにあるwebsocketノードだとヘッダーにマカロンを付けられないので、上記カスタムノードを入れる必要があった。http requestノードでは上手く動かなかった。
  • マカロンについて。上記方法だとなんでもできるadmin権限のマカロンを使うことになる。動作確認するとrouter.macaroonでもHTLCイベントを拾ってこれるので気になる方はこちらをお勧めする。
    SSHでログインして「xxd -ps -u -c 1000 /home/umbrel/umbrel/app-data/lightning/data/lnd/data/chain/bitcoin/mainnet/router.macaroon」を実行してマカロンをダンプ。これをコピペする。
Remaining : 0 characters / 0 images
100

Sign up / Continue after login

Related stories

Writer

甘いもの大好きメタボ猫。マイペースなのはしょうがない。

Share

Popular stories

【Umbrel】BlueWallet Lightning & tailscaleで便利で快適なLightningウォレットを作ろう!

273

【Umbrel】LNURLが使いたいから自分で環境つくってみた

146

【Umbrel】LNDのtls.certってどんな時使うの?

102