独自ドメインでLightning Addressを設定する方法、どれがいい?
最近ツイッター(X)に対して思うところがあり、将来的なことを見据えてNostrに力を入れることにしました。というわけで、週に1回つぶやく程度だったアカウントをちゃんと整備して、クライアントもちゃんと選んで、1日数回見ています。
きっかけは以下のポッドキャストにおけるMatt Odell氏の「XはKYCを半強制してくる」という予想でした。広告モデルとしてもユーザーデータが多いことに越したことはありませんし、スパムやボット対策にもなりますから全然ありえる話だと思います。
イーロン・マスクがトルコ政府の圧力に負けて選挙期間中に野党候補のアカウントを凍結したこと、Twitter Blue認証やスパム対策・ボット対策、そして広告ビジネスとデータ収集の相性を考えたときに、1.ツイッターがユーザーのKYCを進めるインセンティブがあること、2.そのKYC情報を元に不利益な扱いを受ける可能性が決して小さくないこと、というOdell氏の見立てが印象的でした。
さて、TwitterになくてNostrにある神機能の1つが"Zap"です。過去にも何回か触れているように、ZapとはLNURL規格を応用した投げ銭の形態で、投げ銭を行うとNostrリレーにその内容が流れるというものです。ほとんどのクライアントが対応しています。
このZapを受け取るためにはLightning Addressというものが必要になります。(LNURLベタ書きは多くのクライアントで廃止済み。) Lightning Addressについては過去記事でも触れています。

今日は手軽に独自ドメインのLighning Addressを手に入れられる方法を調べてみました。
・大半の人はWallet Of Satoshiなどのカストディアルウォレットが提供するLightning Addressを利用している。大抵の場合は金額・預入期間に照らし合わせてそれでいい。
・独自ドメインでLightning Addressが欲しい場合はセルフホストするか、第三者のサービスに一部の役割を担ってもらうことになる。いずれの場合もDNS設定はユーザーが行う。
・独自ドメインのLightning Addressは目立つしかっこいい。企業やブランドを重視するユーザーはぜひ試してみてほしい。
・独自ドメインのLightning Addressを作る手段としてブリッジサーバー、Alby、独自ドメインはできないが新参のZaplocker、セルフホストを比較した。
Lightning Addressの95%がカストディアル
多数のNostrリレーにわたってZapを集計しているサイトZapalyticsによるとLightning Addressを設定しているNostrユーザーは11,494人で、そのうち93.34%がカストディアルウォレットが提供するものだそうです。
(Zapalyticsのサイトがダウンしているので、最新のデータ取得は一昨日のキャッシュのソースコードに当たる必要がありました…。以下のツイートは半年前ですが、正常に読み込むときはこのようなグラフが表示されます。)
Ran some analytics on zaps on nostr, it's quite terrible...
— Carman (@benthecarman) March 21, 2023
~95% of users have their lightning address set to a custodial wallet
~91% of all zaps by volume have gone to a custodial wallet@walletofsatoshi is the clear winner of 50% of users and 67.5% of volume pic.twitter.com/6KRtv6LIr8
内訳はWallet Of Satoshiが46.9%、Albyが27.8%と二社で4分の3を占めています。これらのウォレットはユーザー数も多く、Lightning Addressも勝手に付与されるため気軽に利用できるという特徴があります。
実際のZapにおいても支払先(支払いを受け取ってZapイベントを発する主体)は90.91%がカストディアルと、ユーザー数と比べてセルフカストディが健闘しているものの、やはり送金額の9割がカストディアルなLightning Address宛でした。こちらもWallet Of Satoshiが59.2%とリードしていますが、続くのはln.tips、Alby、jb55、Bitcoin Jungle、stacker.newsとサービス名や個人名も含まれているのが印象的です。累計額は約4.56 BTCでした。
※Zapイベントは支払先の自己申告制なので、架空のデータを計上することも技術的には可能です。一応、その疑いが強いZapは排除して集計しているようです。また、Zapalyticsが収集しきれていないZapがどこかのリレーで流れている可能性もあるので、この値は参考程度に。
ちなみにこのデータを見てライトニングの利用が95%カストディアルだという判断を下す人もいますが、それはデータの誤読です。あくまでLightning AddressというDNS設定やサーバーを立てることを伴う、ライトニングノード以上にセルフホストのハードルが高い特殊な用途だからです。ライトニングのユーザー全体の中でカストディアルウォレットの割合とはまた別の概念です。(そちらも相当高いとは思われますが、アクティブユーザーの95%ではない気がします。また金額が大きいほどセルフカストディのコスパが改善するので、金額の割合はもっと低いでしょう。)
このように、Lightning Addressを設定しているNostrユーザーのほとんどがWallet Of Satoshi、Alby、Zbd.ggなどのカストディアルサービスを利用しています。逆に独自ドメインを使っていると「強者」感、コミット感が出てかっこいいのではないでしょうか。そう考えて、いかに手を抜いて独自ドメインでLightning Addressを使用できるか調べてみました。
ブリッジサーバーという老舗ソリューション
さて、冒頭でリンクしたLightning Address紹介記事でも軽く触れていましたが、独自ドメインで使用したい人向けにコミュニティで運営されているブリッジサーバーがいくつかあります。これらは主にbridgeaddrというOSSのインスタンスで、これはセルフホストにも使えます。
BridgeaddrはLNURLサーバーを代行してくれるため、そこから自分のノードへとRPC接続を許し、インボイスを発行させます。もし他者のブリッジサーバーを利用する場合は必ずInvoice Macaroonを渡しましょう。間違ってインボイス発行以外もできるMacaroon (Admin Macaroonなど)を渡してしまうと資金流出のおそれがあります。インボイス発行だけなら(大量にインボイス発行して放置するDoS攻撃以外に)悪用されません。

DNS設定でCNAMEをブリッジサーバーに向け、自身のライトニングノードへの接続のためにいくつかのTXTレコードを設定するだけで使用できます。(ライトニングノードのIPまたはドメインを公開する手段は用意する必要があります。Torだけではだめです。)
例としてbridgeaddr発明者のfiatjaf自身が運営するbridgeaddr.fiatjaf.comが使えます。またlnaddress.me (bolt.observerが運営)などもあるので、このサイトなどから探してみてください。
Zaplockerという新参は独自ドメインはできないが、セルフカストディとUXを両立
今回の記事のもう1つのきっかけとなったのがZaplockerというサービスの登場です。ノンカストディアルなLightning Addressを非常に簡単なステップでセットアップできます。
自分のノードに接続したAlbyブラウザ拡張を用意し、ZaplockerでLOGINボタンを押してAlbyで認証し、ユーザー名@zaplocker.comとZap時に通知するRelayを設定するだけという非常に簡単な仕組みになっています。Albyを通してZaplockerノードにリクエストできるのはインボイスの発行だけ(そのように権限を設定する)なのでセキュアです。

あくまで独自ノードを運用していることが前提になっているためカストディアルウォレットよりはハードルが高いですが、DNSの設定やLNURLサーバーの立ち上げなどが必要ない分かなりスマートに利用できます。独自ドメインが使えれば最高ですが、やはりDNS設定のサポートが面倒そうで非対応なのでしょうか。
セルフカストディを諦めても独自ドメインは使えるAlby
AlbyはLightning Addressを付与してくれるカストディアルウォレットでもあり、自分でノードを運用していればそこに接続するクライアントにもなります。そして実はカストディアルウォレット+独自ドメインでLightning Addressが使えます!
DNSの設定も解説してくれています↓

ただし、あくまでLightning Addressの問い合わせを受けるために自前のウェブサイトが必要になります。ウェブサイトはあるけどノードは運用したくない、でも独自ドメインのLightning Addressがほしい!という方には最適解かもしれません。
ちなみにプロトコル通りに
https://<your_domain>/.well-known/lnurlp/<your_username>
へアクセスされると、そのテキストファイルの中身にAlbyへのURLが入っているため、Albyのカストディアルウォレットを利用していることはバレます。そこまで調べる人がいれば。
ちなみにBridgeaddrやZaplockerでもLNURLサーバーは自分のものではないので、Zapの際に「運営者のノードに支払うインボイス」を送金者に表示してZapを横取りされないことをトラストする必要はあり、資金自体のカストディよりはマシなものの決してトラストレスではありません。
独自ドメインでLightning Addressを作るなら…
自前のノードを持たない場合
自前でノードを持たないのであれば選択肢はAlbyに限られる気がします。この場合、独自ドメインで小さなファイルをホスティングできる必要があります。(サイトに内容がなくてもいいですが、<domain>/.well-known/lnurlp/<username>.jsonファイルだけは必ずホストする必要があります)
ちょっと調べればGitHub Pagesなどでできるのでお手軽です。LNURLサーバーもウォレットもAlbyが担当しますが、大した金額を扱わない場合、長期間置きっぱなしにしない場合もカストディアルウォレットは許容範囲内のリスクかと思います。
ノードはあるがサーバーは立てたくない場合
JSONファイル置き場はGitHub Pagesなどで簡単に作れる類のものですが、LNURLサーバーはそうでもありません。そんな場合はBridgeaddrを使ったブリッジサーバーを利用しましょう。ドメインの設定などをするだけでJSONデータのホスティングとLNURLサーバーの役割を果たしてくれます。
誤って送金権限のあるMacaroonをDNSレコードに設定して全世界に公開してしまわないように注意しましょう!
また、もしノードがTorのみの場合、Torアドレスを公開してもいいですが、送金者がTorに対応していない場合はZapしてもらえません。それが嫌なら外部からノードに接続できるIPかドメインを用意しましょう。
ノードもあるしLNURLサーバーも立てられる場合
Satdressやbridgeaddrをセルフホストする選択肢もありますが、他人にサービス提供する必要がなければそこまでしなくて大丈夫です!上記で言ったように、GitHub Pages + LNURLサーバー + 自前のノードでやりましょう。BTCPay Server、Lnbitsなどを導入すればそこに専用の拡張アプリも入ってると思います。この方針で行くならある程度自力でできるレベルが望ましいです。
DNS設定のほかに、ノードのIPアドレスまたはドメインの公開、LNURLサーバーの公開が必要になります。後者2つがBOLT12で必要なくなれば便利ですよね。
独自ドメインを諦めても良いがセルフカストディは絶対!という場合はZaplockerは非常に使いやすいです。ブリッジサーバーも比較的シンプルですが、Albyブラウザ拡張との連携プレーでMacaroonを手動でコピペする必要がないZaplockerが圧倒的に使いやすいです。
MicroStrategyはメールアドレスと同じLightning Addressを全社員に振ったそうです。このような使い道ならセルフホストが正解かもしれません。(おそらく会社がカストディを行っている形態でしょうし。) また、ビットコイン企業などはできればセルフホストしてほしいところです。
こんな感じで、自分は今週末あたりにセルフホストしようと思っています。皆さんも気軽にLightning Address使ってみましょう!
次の記事
読者になる
一緒に新しい世界を探求していきましょう。


ディスカッション