LND ver 0.9

LND ver 0.9が出たので、概要をまとめておく。
元記事はAnnouncing lnd v0.9.0-beta!

TL;DR

  1. Macaroon Bakeryによる柔軟な権限制御
  2. 2つの新しい支払いタイプ
    • multi path payment
    • Spontaneous payments
  3. node管理者向けのtool
    • channel rebalancing

Macaroon Bakeryによる柔軟な権限制御

既存の三種類のmacaroon(admin, readonly and invoice)より柔軟な設定をしたい場合に利用できるオプションである。

Multi-path payment

Atomic multi-path paymentを実現するために必要な機能の一部。 Bolt 04 Multi-path paymentで解説されている。 MPPは一つのinvoiceに対して複数のHTLCを統合して決済することを可能にする。

MPP送信対応のlightning nodeであれば、特定のチャンネルのinvound capacityが足りなくても、送信をできる可能性が増える。UX観点からすると、送信者は、送信可能額のキャパシティが増える。この対応は、v0.10.0をターゲットに進められている。
技術的には、MPPは最後のhopのTLV recordへのpayment_secretamountのデータ追加によって実装されている。

MPP対応lightning node同士の送金では、single shot MPP paymentがdefaultとなる。

Custom Onion-Tunneled TLV Payment Metadata Records

最高に注目している機能!
custom recordを使って、支払いにデータを追加することができる。send RPCにdest_custom_recordsが追加され、ここにcustom dataを格納する。QueryRoutesにもこのフィールドは追加される。
受信がおわると、custom dataはinvoiceのDBに格納され、既存のクエリ(LookupInvoice, ListInvoices, etc)で参照できる。

例えば、取引所へのデポジット時にアカウントIDをここに付与することで、取引所の負担は軽減されるだろう。 たくさんのLAPPSが生まれる可能性がある。 Roasbeefがプレゼンしている。

spontaneous payment

AKA keysend。custom recordにpayment preimageを追加することで、事前にpreimageを知らなくても支払いを行える。
要はinvoiceが不要となる。

cmdでこれを実行するには、--keysendフラグを利用する必要がある。payment hashをどこでも指定していないにも関わらず、preimageを暗号化して、受信者は通常のrouting情報とともに複合することができる。
プログラムでこれを使いたい場合はgrpc-request-sendrequest-streamingDestCustomRcordsを追加する。 受信者は、defaultではkeysendをrejectするが、--accept-keysendを有効化することで受信できる様になる。

note

この機能はboltに定義されていない。まだ変更がある可能性がある。

First-Class Rebalancing via Circular Payments to Self

自分自身への支払いが可能となった。 これにより、外部に頼らなくてもinvound capacityの調整が可能になる。