PWAがLSP型ライトニングウォレットの未来か
今月、AppleがアプリストアからNostrクライアントのDamusやノンカストディアルライトニングウォレットのZeusを排除すると開発者に通達しました。
Damusに関しては投稿に対する投げ銭機能"Zap"がAppleが定めるアプリストア規約のコンテンツ販売の決済手段制限(アプリストア経由の決済に限る)に抵触した模様で、結果的にDamusは投稿単位のZap機能を消去し、ユーザーのプロフィールからのZap機能のみを残す形でアップデートの許可を得たようです。

一方Zeusに関してはノンカストディアルウォレットであるにも関わらず取引所としての営業許可を証明することが求められているようで、担当者の誤解か理解不足が原因と見られます。(根拠とされている規約内にノンカストディアルウォレットは問題ないという条項があるそうです。)
このようにiPhoneはAndroidスマホと比較してアプリストア以外からアプリを導入することが難しいため、Appleによる公開却下の問題は以前から広く指摘されています。1つの迂回策としてPWA (Progressive Web App)という、ブラウザで動作するがホーム画面に追加できるアプリケーションを利用する例が出てきています。例えばDamusと同じくNostrクライアントアプリのSnortやIrisはPWAとして提供されています。
NostrならiPhoneでもsnortやirisをPWAインストールすればなに不自由ないので、zeusのオルタネイティヴをWebでどうやれるかが焦点だな(課題設定オン)
— AはAである (@_tea_two) June 15, 2023
今日はPWAがライトニングウォレットの未来像なのかを考えたいと思います。
最近までAppleの端末はPWAの対応に消極的だったようですが、最低限の対応はされている模様です。(それでもSafariよりChromeやBraveが良さそうです)
PWAの制約
まず、改めてPWAの定義をMozillaから引用します:
プログレッシブウェブアプリ (Progressive web apps, PWA) は、新しいウェブ API と伝統的なプログレッシブな拡張戦略を使用して、クロスプラットフォームのウェブアプリケーションにネイティブアプリと同様の使い勝手をもたらすウェブアプリのことです。[…] PWA は発見でき、インストールでき、リンクでき、ネットワークに依存せず、プログレッシブで、再エンゲージでき、レスポンシブで、安全です。これらが何を意味するのかについては、プログレッシブウェブアプリの利点をお読みください。
すなわち、PWAはウェブの技術で実現した、アプリストアではなくブラウザ経由で導入できる、それでもネイティブアプリと似た使用感(ホーム画面アイコン、プッシュ通知、高速な読み込み等)のアプリケーションです。ひょっとすると読者の皆さんも利用したことがあるかもしれません。
多くの場合はプラットフォームごとにネイティブアプリを1から開発するより共通して利用できるPWAを開発するほうが低コストとして採用される技術ですが、コスト面以外でもアプリストア規約に抵触するものや決済手段の自由を得るためにPWAで提供されているアプリもあります。(競輪のアプリなど)
ちなみに同じアプリにネイティブ版とPWA版の両方が存在することもまあまああるので、比較してみるのもいいかもしれません。
セキュリティ
PWAがウェブの技術で実現されている、つまりブラウザ内で動作するということはブラウザという環境に制限されるということになります。これにはセキュリティ面での課題がついてきます。
ブラウザはサンドボックスといって各タブが独立した領域に閉じており、アプリケーションがその領域の外を読み書きすることはできません。しかしこのためデータの保存もブラウザ内に行う必要があり、これがセキュリティ面でネイティブアプリより一段劣るという意見があります。
また、サーバーからファイルを取得するようなPWAにおいてはサーバー側に悪意がある場合(乗っ取られた場合含む)、ユーザーの意志とは無関係に悪意あるコードがダウンロードされ実行されてしまいます。リリースごとに電子署名され審査も経ているネイティブアプリとは異なり、PWAではユーザーが望まぬアップデートが加えられる可能性が高いといえます。
PCではMetamaskやAlbyなどがブラウザ拡張としてリリースされているのも、いくつかある理由の1つはこのリリース方法を採るためでしょう。モバイルではブラウザ拡張が使えないのでネイティブアプリを使うことになります。
最後に元も子もない話をすれば、アプリストアの審査で多くのマルウェアは防げているでしょう。審査されたバージョンがいつの間にかすり替えられていることもありません。あくまで審査の内容を信用することが前提のセキュリティではありますが、それなりに効果的だと考えられます。
要するに
まとめると、PWAを利用すればアプリストアの制限に縛られないクロスプラットフォームアプリを作れますが、あくまでウェブアプリなのでセキュリティ面でネイティブアプリと比較して悪意あるコードが混入しやすい、ブラウザ内でデータを保存するしかないといった問題があります。
注釈を加えるとすれば、PWAは必ずしもサーバーを必要とするものではなく、セルフホストできるものやフロントエンドだけで完結しているものもあります。そのようなPWAを導入すれば勝手にアップデートされることもなく、オープンソースで検証可能であれば比較的安心して利用できるように思います。
なかなか全体像としてリリースされないWeb5もPWAを("DWA"と呼んで)コンセプトの中心に据えているようです。

ブラウザ内のライトニングウォレット
さて、DamusはAppleの圧力に屈するほかありませんでしたが、SnortやIrisはPWAとして実装されているためZap機能があっても問題ありません。
一方、Zeusのようなライトニングウォレットはどうでしょうか。
Zeusはリモートにある自前のノードに接続するだけのUIアプリであるため、PWAとして実装することも可能そうではあります。ただし、権限を適切に設定しないと前述したセキュリティ面の課題が少し気になります。
よりお手軽なLSP型のノンカストディアルライトニングウォレットでは、私の知る限りMutinyだけがPWAとして提供されています。まだクローズドβ版ですが…。
(ちなみに下の記事で去年前紹介したMutinyと同じウォレットですが、当時のProof of Conceptとは趣旨が若干変わったように思います。)
LSPモデルを採用しているライトニングウォレットはローカルに秘密鍵やネットワークグラフ、送受金履歴などある程度の情報を保存していることが一般的です。ネイティブアプリであればアプリの中身にライトニングノードをまるごと入れることで簡単に実装可能ですが、PWAだとどうしてもパフォーマンス面や通信手段の面で問題があります。ブラウザ内で動かすことによるオーバーヘッドと、ウェブで用いられるのとは異なる通信手段の影響です。
実際にMutinyでは通信面など、ブラウザ内で使用できるように工夫しているようです。(まだ変更される余地があると思うので詳細は調べていません)
さて、今日の記事のきっかけを振り返ると、ノンカストディアルウォレットであるZeusがアプリストア側から取引所のような扱いを受けたことでした。今回の件はともかく、LSPによっては様々なサービスを提供しているため、将来的にアプリストアの利用が難しくなる可能性も考慮する必要があるかもしれません。
そうなると、今後LSP型のライトニングウォレットはMutinyのようにPWA化を進める可能性が低くないと思います。そういう意味でMutinyは面白い実験をしていると感じています。
まとめ
・アプリストアを迂回できる、ネイティブアプリのような体験を提供できるウェブアプリ"PWA"が増えている
・セキュリティ面などでネイティブアプリに少し劣るとされるPWAだが、フロントエンド完結型のものなどはリスクがある程度低減される
・LSP型のライトニングウォレットでPWAとして提供されてきたものはなかったが、クローズドβ版にあるMutinyがまさにそれを実現している
・将来的にPWAとして提供されるライトニングウォレットは増えるかもしれない。そう考えるとMutinyは良い実験になりそう
次の記事
読者になる
一緒に新しい世界を探求していきましょう。


ディスカッション