Lightning Node Connectプロトコルが描くLN×Webの未来は?
11月30日にLightning LabsがLightning Terminalというアプリケーションの刷新を発表しました。その内容は「Web版の新設」-オンラインでアクセスできるWebページから自身のノードを管理できるというものでした。
自身のライトニングノードにつなげる種類のLappsは基本的にセルフホストするアプリケーションというのが常識でしたが、今回のLightning Terminalの作りはLightning Labsが今後どのようにライトニングをWebと絡ませていきたいのかに深く関わっています。
新生Lightning Terminalがこれまでとどう違うのか、どういう仕組みでノードと接続しているのか、そしてその仕組みのどのような応用が期待されているかを見ていきましょう。
LIGHTNING TERMINAL
Lightning Terminalはライトニングノードの管理、特にチャネルのバランスの管理に特化したユーザーインターフェースです。チャネルとバランスの一覧や最近中継した送金などを閲覧することができ、UI上でLoopを使ったリバランスを行うこともできます。
チャネルバランスの管理機能はこれから増やしていく予定のようです。従来はUmbrelやPC上にインストールするアプリケーションとしてのみ提供されていましたが、新たにWeb版がブラウザからアクセスできるようになりました。
Lightning Terminal (Web版): https://terminal.lightning.engineering/#/
LIGHTNING NODE CONNECT
ブラウザ上のアプリケーションを自身のノードに接続するには、ライトニングノードのIPアドレスとポート、TLS証明書とMacaroonという情報が必要になります。これらの情報を手動で別々に入力するのは手間なので、全てを1つのURLあるいは大きなQRコードにまとめたLndconnectという規格があります。(モバイルLNウォレットを自宅のノードに繋いだことのある方などは見たことがあるかもしれません。)
今回のLightning Terminalでは、より簡便でセキュリティ面でセンシティブな情報をユーザーが扱わずに済む”Lightning Node Connect (LNC)”という新しいプロトコルが採用されました。(現時点でこれを利用するにはLightning Terminal Daemonをノード上で動かす必要があります。)
ライトニングノード同士が通信の開始に使うプロトコルであるNoise Protocolとパスワードを利用した鍵交換(PAKE)を組み合わせたことで、Webアプリにノードが作成した10単語のワンタイムパスワードを入力するだけで、パスワード作成時に設定した権限でWebアプリからgRPC APIが利用できます。
LNCではポート転送などを設定する知識のないユーザーも簡単に利用できるよう、ユーザーとアプリケーション双方がプロキシを介して接続することでNAT越えを実現しています。プロキシ自体が通信を盗み見ることはできませんが、プロキシサーバを何を基準に選択するかという疑問と、プロキシサーバがSPoF(単一障害点)なのではないかという印象を受けました。(実際にはWebアプリ運営者が提供する?)
Web開発者向けに上記の機能がWASM (Webアセンブリ)としてコンパイルされ提供されており、ブラウザ内でJavascriptを使って利用できます。将来的にはこのWASM部分がより広範なブラウザ用ライトニングSDKとして拡充される方向性のようです。
LNCの詳細についてはLightning Labsの技術ブログまで。https://lightning.engineering/.../2021-11-30-lightning.../
従来のLAPPSとの違い
Webに公開されるタイプのLappsは主に事業者のノードからインボイスを発行したり、支払いが完了したときに更新するなどするウェブアプリで、ユーザーのライトニングノードと接続するものは非常に少ないです。確かに権限を限定し期限を設定したMacaroonを生成し利用すれば、Lndconnectなど既存の方法でアプリケーションごとに権限を設定して接続することもできますが、ユーザーに必要な知識レベルが高く、ミスを犯したときのセキュリティ面でのリスクも比較的大きくなってしまいます。
LNCはウェブ上に他者が公開したアプリケーションに自分のノードを接続するより簡便な方法を提案しています。アプリケーション側にインボイスを発行する権限を渡すことでPlay to Earnのゲームの支払いを自動的に受け取ったり、なにかの購読に関するLSATの購入をワンクリックで承認したりという風にWebでのLNの利用フローを改善することができるでしょう。
将来的にはメタマスクのようなクローム拡張機能としてノード自体のインターフェイス、あるいはライトニングノード自体が登場すれば、LNノードの署名機能も応用しやすくなるかもしれません。(インボイスの発行はまだしも、送金や署名に関しては都度確認しながら承認できることが必須なので。)
Lightning LabsがLSAT、NAT越えのプロキシやブラウザ利用を念頭に置いたノード接続機能などを作っていることからもわかるように、どうもLightning Labsはこのビジョンで開発を進めているようです。
使ってみる
Lightning Node Connectはまだα版としての提供であり、まだLND本体には実装されておらず、仕組みも思ってた以上に複雑なので他のアプリケーションが出てくるのもかなり先だと考えられます。仕様が安定してきたら他のLNノード実装にも導入できるように標準が提案されるそうです。
いまLNCを使ってみるなら、UmbrelアプリのLightning Terminalをインストールしてから、Web版のLightning Terminalに接続してみる方法がお手軽そうです。もちろん、LNDとLightning Terminalを単体でそれぞれインストールして使うこともできます。
私が試してみたところ、確かにノードのトランザクション履歴、ルーティング履歴などがWebアプリ上で確認できました。
次の記事
読者になる
一緒に新しい世界を探求していきましょう。
ディスカッション