Lightning Networkで支払いから認証までやっちゃう激アツ技術「LSAT」について
はじめに
これはno plan inc.の Advent Calendar 2022の6日目の記事です。
こんにちは、皆様いかがお過ごしでしょうか?東京では雨が降っており、少し憂鬱な気分です。
そんなことはさておき、Lightning Network系の技術 「LAST」 について解説していきたいと思います。
この記事では触りの概念のおさらいをし、次回以降の記事でLSAT実装であるApertureについて、メンバーが解説してくれると思います。
Lightning Networkとは?
BitcoinのLayer2のネットワークで、一言で言うと安く、速く、安全にBitcoinを送金し合うことができます。
執筆時(2022/12/06 0:35頃)BitcoinのLayer1で送金しようとすると、今のレートで0.02$ぐらいかかります。(非混雑時)
ですが、混雑してみんなが送金しようとすると、一瞬で詰まってしまいます。そして手数料も数100円ぐらいになることもあるでしょう。
そうなると使い物にならないので、別のネットワークを使って送る技術が Lightning Network です。L1が混雑していたとしても、数satoshiで即時で送金ができる素晴らしい技術です。
Lightning Networkが用いている、「常にオンラインのノード同士でないと送金し合えない」[1]というかなり強い制約があるのですが、筆者はこの制約のせいでこの技術が流行ることはないだろうと思っていました。(2018年)[2]
ですが、予想に反しノードの運用者は爆増し、LN上のキャパシティもかなり伸びました。
ラズベリーパイのような安価な装置で、比較的簡単にBitcoinフルノードとLNノードを建てれる仕組み(Umbrel)ができて、素人でも建てれるようになったのが要因の1つかもしれません。
また草コインで疲弊した人の安地としても人気が高まっています。 [3]
今後も大幅に利用者が増えることが予想され、取引所での入出金が当たり前のようにLN対応していくのだろうなと思います。(一部取引所で対応しているが、全ては対応していない。)
そもそもLNが今アツい技術であることはわかったと思います。
LSATとは?
Lightning Service Authentication Tokenの略であり、オープンソースな仕様及びプロトコルの名前の総称です。
決済から支払い済みかの認証までの両方の役割を担い、マイクロペイントの可能性を感じさせてくれるプロトコルです。
LSAT自体はシンプルなHTTPの認証入リバースプロキシで、有料コンテンツ(有料API,ひみつの画像、アダルトなやつ、ひみつの文章)等々の前段に置く構成となっております。
認証していない状態でアクセスするとHTTPのStatus Code 402を返します。
HTTP Status Code 402とは?
402とは忘れ去られたHTTPステータスだと思います。(LSAT作者もそう言っているが、筆者も知らなかった。)
402はPayment Requiredで、ちゃんとMDNにも載っています。[4]
HTTP の 402 Payment Required は、将来使用するために予約されている標準外のクライアントエラーステータスレスポンスコードです。このコードは、クライアントが支払いをするまでリクエストを処理できないことを示している場合があります。もともとは電子マネーまたは (マイクロ) ペイメントシステムを有効にするために作成されたもので、リクエストされたコンテンツがクライアントが支払いをするまで利用できないことを示していました。しかしながら、標準的な慣例は存在せず、様々なエンティティが様々な場面で使用しています。 402 Payment Required - MDNより
マイクロペイメントが示唆されていて、ちょっとびっくりします!!
マカロンとは?
Cookieのようなものですが、認証で使うトークンのことです。LN専用の技術ではないのですが、筆者はLN以外で見かけたことはないような気がします。
LNの決済に必要な要素にハッシュの現像(Pre Image)があるのですが、このPre Imageを持っているということは支払いをしたということなので、Pre Imageといつまで有効化等の情報をマカロンに入れて管理します。
Apertureとは?
詳しくは後日ですが、LSATの実装の1つです。割とちゃんと更新されているので、使うのであればApertureを使うのがいいのかなと思います。
Golangで実装されていて、MITでOSSです。
ドキュメントは全く整備されてないので、動かし方とか、前提条件みたいなところも次回の記事で語れればと思います。
LNの課題
- キャパシティ調整の問題(色々なサービスが出つつある)
- 貴重なBitcoinを送りたくないという心理的ハードル?w[5]
- Bitcoinはガチホしておきたいもの
- 個人的にはステーブルコインをこのUXで送りたいと思っている
- それかLN支払い時にPaypayで自動引き落としされて同量のサトシが購入されるとか
- LNでステーブルコインなんか発行したら、ビットコイナーにめちゃくちゃ怒られそう()
- カストディアルウォレットとか、セルフカストディアルのオンボーディングやそのUX
- 流石にまだPaypayレベルに思考停止で使えるものではない
- テストネット試すのが面倒くさい
- こういうハードルの高さもエンジニアが寄ってこない理由の1つだと思う
- まだまだとっつきづらい技術である
まとめ
本当に触りでしたが、LSATの概要をお伝えできたかと思います。
世界でもまだあまり使われてない技術なので、解説記事自体もかなり稀ですw
ハッカソンで取り入れてみましたが、普段LNの開発をしていなかったためだいぶ苦戦しましたw
LNやらRGBやらBitcoin周りも進化しているので、引き続き追っていきたいなと思います。
引き続きBitcoin周りの記事を見たい方はいいねとTwitterのフォロー、記事の拡散をお願いします!
no plan株式会社について
- no plan株式会社は、ブロックチェーン技術、Webサイト開発、ネイティブアプリ開発、チーム育成、などWebサービス全般の開発から運用や教育、支援などを行っています。よくわからない、ふわふわしたノープラン状態でも大丈夫!ご一緒にプランを立てていきましょう!
- no plan株式会社について
- no plan株式会社 | ブロックチェーン実績
- no plan株式会社 | ブログ一覧
外部リンク・参考文献
- LSAT
- 402 Payment Required - MDNより
- Macaroons: Cookies with Contextual Caveats for Decentralized Authorization in the Cloud
Discussion