Lightning Networkの基本 — Non-strict Forwarding
Published in
Nov 22, 2022
Lightning Network で転送のテストをしていると、指定したノードを経由しているものの指定していないチャネルを通っているという現象に出会うことがあります。
これは Non-strict Forwarding という仕様によるものです。
転送元ノードは通過するノードとチャネルを指定します。転送データはノードごとに暗号化されているため別のノードに送っても復号はできませんが、チャネルに対して暗号化されている訳ではないのでノード間についてはどのチャネルを使っても動作上問題はありません。
転送元ノードはどのチャネルを使って転送されたのかは把握できないので、違うチャネルを通ったのを知るのは自分が管理しているチャネルだった場合だけでしょう。
なお、Non-strict Forwarding は仕様として MUST ではありません。
では実際のところどうなっているかと LND の実装を見ていましたが、選択できる経路がある場合にはこうなっていました。
ランダムですね。
この行が追加されたプルリクエストが non-strict forwarding 対応なので間違いないでしょう。
特定のチャネルをリバランスしたいと考えて転送ルートを自作しても確実にそうなるとは限らないということになります。チャネル間ではなくノード間しかリバランスできないと考えた方がよいかもしれません。