データから見るLNのパブリックノードの全体図
ライトニングネットワークの可視化を行ってくれる「ライトニングエクスプローラー」と呼ばれる種類のサービスには数社あり、老舗の1ML.comや最大手のAmboss.space、さらには人気ブロックチェーンエクスプローラーのmempool.spaceなどが参入しています。大量のデータを集めてユーザーに見つけやすくすることで価値を提供しているこれらのサービスですが、実はブロックチェーンエクスプローラー同様、彼らが収集しているデータの多くは一般的なライトニングユーザーにも収集可能なものです。
というわけで、ライトニングネットワークを流れてくるゴシップ情報を保存する仕組みを構築してみました。今回は自分のノードが受信した約10日分のライトニングネットワークのゴシップデータをもとに気づいたことを取り上げてみます。
・サポートされているほどノードの多様性はない
・ルーティングに活用される手数料設定の分布
・可視化される「迷惑なノード」
サポートされているほどノードの多様性はない
ライトニングネットワークを縦横無尽に伝播していく「ゴシップ」と呼ばれるノードやチャネルに関する更新情報ですが、その中には大きく分けてnode_announcement(ノードについての情報)、channel_update(チャネルの開設や設定変更についての情報)の2つがあります。まずはnode_announcementを見ていきましょう。
まず、ノードが公表できるアドレスにはIPv4、IPv6、Tor(v2)、Tor(v3)、hostnameという5種類ありますが、10日間で収集したおよそ6900ノード分のnode_announcementの中ではTor(v2)とhostnameは使用しているノードはありませんでした。
TorV2、Hostnameは設定ゼロ
| Network | Count |
|---|---|
| TorV2 | 0 |
| Hostname | 0 |
| IPv6 | 140 |
また、IPv4アドレスを公開しているノードはそのうち30%ほどと想像したより多かったです。(Umbrelなどの普及で圧倒的にTor v3だけが多いと思っていました。ただし、公開チャネルがないノードはnode_announcementが伝播されないのでそれを含めると圧倒的にTor v3が多い可能性があります。)
LNの通信にデフォルトの9735番以外のカスタムのポート番号を設定しているノードも非常に少なかったです。
カスタムポート番号の設定
| Network | Count |
|---|---|
| IPv4 | 202 |
| TorV3 | 9 |
| IPv6 | 8 |
遊び心のあるデータとしては、ライトニングノードはイメージカラーを設定できるのですが、一番多いのはオレンジかな?と思いきや、LNDの規定値の#3399ff(シアンと青色の中間)が一番多かったです。CLNのデフォルト色 #ffa500、Eclairのデフォルト色 #49daaaはランクインしませんでした。2位はRaspiBlitzの既定値ですが、3位もおそらく何かの既定値か団体的に決めている色だと思います。ご存じの方は教えてください。
色の分布、上位10色
| Color code | 日本語 | Count |
|---|---|---|
| #3399ff | 青・シアン中間(LND既定値) | 3007 |
| #68f442 | 明るい緑色(RaspiBlitz既定値) | 641 |
| #ff5000 | 赤みの強い橙色 | 321 |
| #000000 | 漆黒 | 120 |
| #ff9900 | オレンジ色 | 52 |
| #ff0000 | 赤 | 24 |
| #0000ff | 青 | 24 |
| #ffff77 | パステルイエロー | 22 |
| #f7931a | ビットコインオレンジ | 20 |
| #ff3333 | 蛍光赤 | 15 |
ルーティングに活用される手数料設定の分布
次に、channel_updateで見つけた情報をいくつか取り上げます。Channel_updateはチャネルの開設時や手数料設定などの更新時に配信されるものなので、分析することでそのノードのルーティングの状況や戦略を窺い知ることができます。
まず、チャネルのルーティングはデフォルトでは有効ですが、「無効化」することもできます。ネットワーク全体でいうとチャネルの1/4ほどが無効化されているようです。これはルーティングノードでなければあまり意識したことがない設定かもしれませんが、チャネルの相手がオフラインであったり、残高がローカルに全くないときなどに無効化することで中継の失敗を防ぎ、ネットワーク全体の送金成功率を上げることができます。
無効化されているチャネル
| Channel status | Count |
|---|---|
| Disabled | 10858 |
| Enbaled (default) | 32140 |
次に手数料関連を見ていきましょう。
先週も少し触れたInbound Feesの設定から見ていきます。
Inbound Feesは最近のバージョンのLNDしかまだ対応していないので、もしプラスの値に設定してしまうとそれ以外のライトニングノード実装からの送金は失敗してしまいます。ただ、パブリックチャネルの中でもそもそも設定しているものは5%程度で、プラスに設定されているものはわずか0.1%でした。実際、自分のノードでもチャネルの20%ほどにしか設定していませんが、これはリバランスしたい特定のチャネル経由の流入を促すのに使いたい機能だからです。
Inbound Feesに対応するチャネル数
| Category | Count |
|---|---|
| 未設定 | 40721 |
| マイナスの値(推奨) | 2260 |
| プラスの値(非推奨) | 20 |
また、チャネルの中継手数料はBase Fee(固定金額)+Feerate(従量料金)となっていますが、Base Feeについてみていきます。一般的には1 sat(1000 msat)に設定されているので、むしろ1 satより大きな金額になっているチャネルを調べてみました。
Base Fee >1 satのチャネル
| Category | Count |
|---|---|
| 該当チャネル数 | 2211 |
| 最大値(msat) | 4294967295 (32ビット自然数で表せる最大値) |
| 最頻値(msat) | 10000 (10 sat) |
| 中央値(msat) | 10000 (10 sat) |
グラフにしたら面白いかと思って散布図にしてみたら、明確に選ばれやすい値(キリが良い10のN乗の値や2 sat・5 sat、4バイト自然数・整数最大値など)が目立ちました。一番多いのは10 satでした。

しかし大半のチャネルはここには該当しないです。逆にBase Feeをゼロに設定しているチャネルを見てみましょう。Zero-Base-Fee Routingという概念があり、「全員がBase Feeをゼロに設定した方が送金経路選択の最適化問題が解きやすい(変数が減る)」というメリットがあるとされているため、一部のルーティングノードが積極的にBase Feeをゼロに設定しています。(少額の支払いにとっては大きな手数料削減になるので、そういうノードにとっては小さい送金を中継する可能性が高くなると考えられます)

Rene Pickhardtが推奨するZero Base Feeについてはこちらの記事をご覧ください。
Zero Base Feeチャネル
| Category | Count |
|---|---|
| 該当チャネル数 | 16754 |
| うちFeerateもゼロのチャネル数 | 2100 |
実はネットワークの全チャネルの数割がZero Base Feeを採用していることがわかりました!また、そのうち2100本はFeerateもゼロの完全なるZero-fee Routingを行っています。慈善事業なのか、残高がローカルに偏っているのをなんとしてでもリバランスさせたいのかは詳細を見ないとわかりません。ちなみにZero Base FeeではないがFeerateがゼロのチャネルも1333本ありましたが、これらはローカルに偏った残高をリバランスさせたいものと考えられます。
最後にルーティングにおいてチャネルの無効化のように「中継を防ぐ」役割を果たすFeerateが極端に高く設定されたチャネルと、Max_htlc_msat(中継可能最大金額)が極端に低く設定されたチャネルを見てみましょう。
一般的にFeerateは0.1% (1000ppm)が規定値とされ、日常的に見る範囲としては0~0.5% (0~5000ppm)あたりが多いです。今回は1% (10000ppm)以上のチャネルを抽出してみました:
Feerate > 1% (10,000ppm)
| Category | Count |
|---|---|
| 該当チャネル数 | 496 |
| 最大値 | 214783647 ppm (32ビット整数最大値) |
| 中央値 | 10000 ppm |
| 最頻値 | 10000 ppm |

max_htlc_msatを1sat(1000msat)以下に設定しているチャネル
| Category | Count |
|---|---|
| 該当チャネル数 | 75 |
| 1000msatに設定しているチャネル数 | 50 |
| 1msatに設定しているチャネル数 | 25 |
これらのチャネルも現実的にはルーティングは発生しません。
なお、max_htlc_msatについてはチャネルサイズとの比較でもっと深い分析ができますが、今回はデータ取得の都合上割愛させていただきます。(通常はチャネルサイズほぼ全体が上限になるが、意図的にそれより小さくしているチャネルを判別する必要がある)
可視化される「迷惑なノード」
今回のデータ収集を通じてもう1つ得られた知見があります。それはライトニングのP2Pネットワークに大量のゴシップを流す「迷惑なノード」の存在です。
一応ライトニングでchannel_updateなどのゴシップ情報を流すと、受け取ったそれぞれのノードが必要か判断して、必要ならほかのノードへと伝播させます。その際、同じチャネルについてのゴシップがあまり頻繁すぎるとP2Pネットワークが輻輳してしまう(通信で混雑して正常に機能しなくなってしまう)恐れがあるので、ノードが判断して頻繁過ぎるゴシップは無視します。一般的には1時間に1回は多すぎ、最大でも3時間に1回程度にとどめ、基本は1日1回くらいが「お行儀が良い」とされます。
しかし、LNDの既定の設定だとなんと同じチャネルについて1分間に10回までゴシップの処理が許可されているのです!これを逆手にとってゴシップで大量の更新を流してくるノードの存在が確認されました。
以下はデータ収集していた約10日間で大量にゴシップを送ってきたノード一覧です:
Nodes with most gossip (top 10)
| Node ID | Alias | Gossip count | No. Channels | Gossip/chan/day |
|---|---|---|---|---|
| 028268dcb4c68311613dd3bbb0164f7685b6710022bfa6dcce639acd44695049a2 | ⚡blitz⚡ | 69309 | 44 | 157 (!) |
| 023631624e30ef7bcb2887e600da8e59608a093718bc40d35b7a57145a0f3db9af | speedupln.com | 65480 | 68 | 96 (!) |
| 02baf6b8593c1e45655072e27efcde1d92b74cff22c9c6b5ed53e0f611678e5e21 | BNW | 29877 | 36 | 111 (!) |
| 035adfeca8fc95de5e2e9dbf9be39ac577b510e7dad0ad9287117d01f282eb667a | TennisNbtc | 20539 | 93 | 22 |
| 02ceb27f3d4e32b83f37dff8bad8cc802dc0f380ca0193e90514ae25bc32c7542e | HydraNode | 17850 | 82 | 22 |
| 0217890e3aad8d35bc054f43acc00084b25229ecff0ab68debd82883ad65ee8266 | 1ML.com node ALPHA | 17649 | 1758 | 1 |
| 035e4ff418fc8b5554c5d9eea66396c227bd429a3251c8cbc711002ba215bfc226 | WalletOfSatoshi.com | 16637 | 1330 | 1 |
| 02c953421bc7f07be6052920e46843d11e6d3ffc9986177c91f140d76c6ed3a3d4 | LNT.chengdu | 16566 | 870 | 2 |
| 03a93b87bf9f052b8e862d51ebbac4ce5e97b5f4137563cd5128548d7f5978dda9 | cyberdyne.sh | 15580 | 263 | 6 |
| 02f1a8c87607f415c8f22c00593002775941dea48869ce23096af27b0cfdcc0b69 | Kraken 🐙⚡ | 15272 | 1171 | 1 |
1日あたりの1チャネルあたりゴシップ数を見ると、上位3つのノードが異常に多いことがわかります。彼らは自動化しているスクリプトでmax_htlc_msatを(送金を中継するごとに?)更新しており、ネットワークの帯域幅に相対的に大きな負担をかけています。そもそもmax_htlc_msatを事細かに更新したからといって防げる中継失敗はそんなに多くないので、ネットワークからみた視点でも費用対効果が悪い情報伝達です。
個人的にはこのようなノードの行為が許されないようにlnd.confの設定を厳しくすべきだと思います。上記3ノードだけで受け取ったゴシップの12%ほどを占めていたので、P2Pネットワークでのマナー違反の影響を実感しました。
次の記事
読者になる
一緒に新しい世界を探求していきましょう。


ディスカッション