一家に一台ライトニングノードがある状況を仮定しましょう。家族でライトニングノードを共有したいが、お互いのトランザクションを知ったり、お互いの残高を勝手に送金されたくない。そのようなときに、1台のノードで複数のアカウントを実現する方法は既にいくつかあります。最近、それをLnd自体に搭載されるFaradayという機能群に追加しようという動きに気づきました。本日はこれがLndHubなどライトニングノードを複数人で共有するための既存のソリューションとどう違うのかを見ていきます。

FARADAYとは

最大手のライトニングノード実装であるLndを事業者向けに使いやすくするための追加機能群で、現在はチャネルのマネジメント(パフォーマンス管理)やアカウンティング機能(指定した期間の履歴出力機能) を提供しています。Lndと同じく、Lightning Labsが開発しており、利用にはLndに加えて別途インストールする必要があります。簡単に言うならば、Lnd用の拡張パックですね。1機能単位ではなく、機能群全体がひとまとめになって提供されています。ここに、同じノードで複数のアカウントを使用できる機能が追加されようとしています。おそらくカストディアルウォレット機能のあるLappを意識していると思われます。

ライトニングノードを共有する

冒頭でも触れましたが、いくら簡単に立ち上げられるようになってもビットコインやライトニングのノードが1人1台あるシナリオは考えにくく、家族や村の人、事業者のユーザーなどが共有するケースが多いと思います。その際にアカウント機能が必要になり、カストディアルウォレットなどはそのシステムを独自に実装したり、いくつかある規格を利用しています。

ビットコインの世界ではカストディアルなサービスは批判されがちですが、特にライトニングにおいてカストディアルなサービスが与えられるポジティブな影響は過小評価されていると思います。
日本では基本的に交換業ライセンスがないと手が出せない領域ですし、規制による攻撃リスクもとても大きい業態ではありますが…。
既存の方式との違い

では、既存の方式にはどのようなものがあるのでしょうか。シンプルなものから見ていきます。1つはマーチャント向け決済ソリューションであるBTCPay Serverを使ってライトニングノードを複数のユーザーで共有する方法。一番単純なこの方法では、1つのノードで全てのインボイスの発行や送金を行い、データベースでユーザー別の残高を管理します。もう1つはHosted Channelsという、カストディアルな「仮想チャネル」をユーザーごとに割り当てる方法。こちらは全てのユーザーがあたかも個別のライトニングノードを保有しているかのようにライトニングネットワークを利用できることが特徴です。今日の本題ですが、本格的にFaradayがやろうとしていることと似てくるのはLndHubでしょう。サイトにある”Open source bank"という表現がぴったりです。LndHubはカストディアルウォレットのBluewalletが開発した規格で、個別のユーザーにID・パスワードを割り当てて残高を管理します。ユーザーはLndHubに対応したUIにそのID・パスワードを入力すれば、好みのUIを利用して送金や受け取りができます。(裏ではID・パスワード認証でインボイスの発行や支払いをリクエストしており、直接ライトニングノードを使用しているわけではありません。)

例えばLntxbotというテレグラムのライトニングウォレットを、スマホのBluewalletアプリからBluewalletのウォレットと同様に利用することができます。つい先日、これをする方法についてSpotlightに記事を書きました。簡単です。

では、今回Faradayのために開発されている機能がLndHubとどう違うのかというと、・LndHubはアカウント機能の実現に特化した、比較的小さな独立したミドルウェアである・FaradayはMacaroonを活用してアカウントの権限を設定しているなど、Lndに強く結びついているという、独立性の違いが何より大きいと感じます。さて、LndHubとFaradayに導入されるアカウント機能では、果たしてどちらが「いい」のでしょうか?この答えは意外と複雑なのです。

LNDは「大きくなりすぎている」?

私はこの独立性の違いに、ライトニング実装の思想の対立に近いものを感じます。ライトニングノードの実装にはLnd, c-lightning, Eclair, Ptarmiganなどいくつかありますが、マーケットシェアは圧倒的にLightning LabsのLndが大きいです。そしてLndは本体に大量に機能を盛り込んでいくことから、肥大化していると批判されることがあります。実際にLndは他の実装と比べてかなり必要スペックが高く、特にFaradayと組み合わせた場合は型落ちのRaspberry Piでは心細いかもしれません。また、マーケットシェアがLndに偏っていることもビットコインノードと同様にネットワークの耐障害性の面から問題視されることがあります。それに対して、c-lightningは動作が軽快な本体と、ユーザーが必要に応じて追加できるプラグイン機能という構成を取っていますが、この形は初心者向けとは言えません。シェアの偏りは簡単に解決する話ではありませんし、オンチェーンでBitcoin Coreが主流のように今後もLndが現在と同じく圧倒的に優勢のまま成長していく可能性もありますが、Lndの肥大化(「暴走」?)はライトニング開発者の間でも意見が割れるテーマということは知っておくと良いかもしれません。

個人的にはLndのお手軽さはありがたいのですが、例えばファイアウォールのような機能、LndHubのような機能も、どのノード実装を利用しているかに関わらず組み合わせて利用できることがベストだと感じます。
開発しているオークションサイトのPaddleはHodl invoiceの関係で特にLndの利用が向いていたのですが、違うサービスを開発するときはc-lightningも試してみたいです。Spotlightの小川さんやLntxbot / Etleneum / LNURLなどの発明で知られる鬼才fiatjafもc-lightning推しです。笑

FaradayのAccountsシステムのデモ動画https://www.youtube.com/watch?v=URc5cMNWvQI

FaradayのGitHubページhttps://github.com/lightninglabs/faraday

LndHubのAboutページhttp://lndhub.io/about

LntxbotをBluewalletで使用する方法を記したSpotlight記事https://spotlight.soy/detail?article_id=0q4hm067w