最近、ノンカストディアルなライトニングウォレットであるBlixt Walletが注目されています。
カストディアルなWallet of Satoshiと同等レベルのUXをノンカストディアルで実現している点が画期的です。また、Android版に加え、iPhone版もTestFlightを利用する開発バージョンではありますが提供されています。
どんな雰囲気のアプリかは公式サイト上でポチポチさわれますので、気になる方はまずはそちらをいじってみてはいかがでしょうか。
公式サイトでは、主な特徴として次のような項目をアピールしています。
- Neutrinoを導入しており、最初のブロック同期が5分以内に終わる
- フルノンカストディアルLND nodeが動いている
- オンチェーンのウォレット機能は意図的に隠している(最低限の、アドレスを見たり出金したりする機能がメニュー内にある)
その他にも技術面では、
- Dunder LSPと融合している
- Multi-Path Paymentsに対応している
- Torに対応している
といった特徴もあり、なかなかしっかりしていますね。
Lightning Addressへの対応については、送金先として指定はできますが受金用の自身のアドレスを生成することは現状できません。ノンカストディアル型あるあるな課題ですが、ここはそのうちLSP連携で対応する気もします。
さて、実際さわってみると、とてもシンプルで思ってた以上に安定したUXを体感できました。ただ、そうはいってもノンカストディアル型なので、チャネルという概念であったりインバウンドキャパシティ、アウトバウンドキャパシティといった知識がないとちょっと辛いかもです。
最初のセットアップ時にオンチェーンで入金をするオンボーディングフローになっており、Blixt Walletの運用するノードとの間で自動的にチャネルが張られます。そのため、最初から送金できます。
受金はインバウンドキャパシティの確保が必要ですね。この辺はノード運営している感覚と同じです。
さて、今回はそんなBlixt Walletがどういった仕組みで動いているのか、ソースコードを解析して深堀りしてみようと思います。
全体の俯瞰
Blixt WalletはHampus Sjöbergリードのもと、MITライセンスなオープンソースで開発されており、ソースコードはGitHub上で管理されています。
リポジトリを覗いて見ると次のような特徴がみられました。