LNの新フォーマット「TLV」とは
Lightning Networkはビットコインのスケーリング問題をオフチェーンという技術を使って解決しようとする技術で、現状スケーリングできている唯一の実用的な技術ではないでしょうか。そのLNにもいくつかの課題を抱えており、その内の一つに、送金には予め受信者からインボイスを発行してもう必要があることが挙げられます。LNは日々改善されている技術ですが、今回は新しくLNの仕様に追加されたTLVとその応用例についてみていきます。
TLVとは
Type Length Valueの略称で、通信プロトコルで使われるフォーマットの一種です。昨年、Lightning Networkの仕様書BOLTに、このTLVフォーマットが追加されました。BOLTではいくつかのTypeとValueが規定されていて、以下はその一例です(仕様書はこちら)。
Type | Value |
2 | 送金金額 |
4 | CLTV値 |
6 | ショートチャネルID |
8 | ペイメントデータ(MPPで使用) |
65536+ | 任意データ |
TLVが追加された経緯は、LNでは送金者がどのノードを経由して送金するかを決めますが(経由可能なホップの最大値は20)、以前まではそのルート情報のサイズが固定長でした。これを可変長にすることで、データサイズを節約し、余ったスペースにカスタムデータを追加することができるようになりました。簡単に言えば、送金データに任意の文字列を追加できるようになりました。え、それだけ?と思われるかもしれませんが、それだけなんです。ただ、それがLNの標準仕様となったおかげで色々と嬉しいんです。
ちなみに、オンチェーンのビットコインではトランザクションデータにOP_RETURNというフィールドを使って任意文字が書き込めます。今回追加されたTLVはそれに近いイメージを持ってもいいかなと思います。TLVは実際にブロックチェーンへの書き込みはされませんが。
TLVで可能なこと
・プッシュ型送金
冒頭で挙げたLNが抱える課題である送金方法の解決方法として、プッシュ型送金(Spontaneous paymentとも呼ばれる)の実現が可能になります。プッシュ型送金にはいくつかの種類がありますが、現在実装されているのはLNDのKeysendと呼ばれる機能です。これは送信者がカスタムデータにPreimageを埋め込み送金をする方法で、受信者が自ら生成しないといけないPreimageをあえて送信者が作ってあげることで、プッシュ型送金が可能となります。