Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Trampoline Payment

Trampoline Payment

GBECの解説動画の資料です。
https://goblockchain.network/2023/10/trampoline-payment/

shigeyuki azuchi

October 17, 2023
Tweet

More Decks by shigeyuki azuchi

Other Decks in Technology

Transcript

  1. LNの支払いでは、受信者から Invoiceを受け取った送信者が、受信者までの支払いの経路を決定する 
 ソース・ルーティング という仕組みを採用している。 
 1 LNのルーティング
 送信者
 受信者


    ホップ1
 ホップ2
 ホップ3
 Invoice
 Onion Payload 1 • short_channel_id • amt_to_forward • cltv_value Onion Payload 2 • short_channel_id • amt_to_forward • cltv_value Onion Payload 3 • short_channel_id • amt_to_forward • cltv_value Onion Payload 4 • amt_to_forward • cltv_value • payment_secret • total_msat 経路上の各ノードの 
 Onion Payloadを作成
 • ランダムなセッション鍵を生成 
 • 各ホップのノード公開鍵とのECDHで共有シークレット/セッション鍵を導出 
 • 各ホップの共有シークレットを使って Onion Payloadを暗号化
 • 各Onionをレイヤー化し OnionPacketを構築

  2. 2 チャネルグラフの構築
 Lightning Node
 Lightning Node
 Lightning Node
 Lightning Node


    channel
 Node
 Channel
 Node
 Lightning Node
 DNS Server
 返ってきたノード情報を元に、
 ネットワーク内のノードに接続
 ネットワークに参加すると、リモートピアから、
 チャネルとノードに関する通知を受け取ることができる。
 
 • node_announcement
 ノードに関する情報を公表
 公開鍵、接続情報(IPアドレス、ポート)
 サポートする機能など
 • channel_annoucement
 新しいチャネルの情報を公表
 • chanel_update
 各方向毎のチャネルの情報を公表
 ◦ 手数料
 ◦ タイムロックの差分
 ◦ HTLCの最低金額
 Lightning Node
 Channel Graph
 LNノードはこのチャネルグラフを 
 最新に保ちながら、支払いを 
 ルーティング可能な経路を探索する 

  3. 3 経路探索
 ネットワークにゴシップされるのはチャネルのキャパシティ(総量)のみ
 チャネルの参加者のどちらにどれだけの残高があるかは不明
 
 ノードは、支払い額以上のキャパシティを持つ経路をピックアックし、
 
 • 手数料(固定、比例)
 •

    タイムロック時間
 • これまでの支払いの試行の成功確率
 
 の重みを持つ有向グラフ(フローネットワーク)から、
 最適な経路を選択する。
 
 ダイクストラ(Dijkstra)法など、最短経路問題のアルゴリズムを適用。
 ネットワーク内のチャネル情報を最新に保ち、
 経路計算をする必要があり、(ストレージ、計算コスト的に)
 常時稼働していないスマートフォンなどのデバイスには不向き

  4. 4 Trampoline Payment
 スマートフォンなど制限のあるデバイス向けに、経路探索をアウトソースする提案: 
 
 
 
 
 


    
 
 
 
 
 • Trampoline Routing:
 https://github.com/lightning/bolts/pull/829/ 
 • Trampoline onion format:
 https://github.com/lightning/bolts/pull/836/ 
 Lightning Node
 Trampoline Node
 Light Client
 Lightning Node
 Lightning Node
 Lightning Node
 軽量デバイスは、近隣の
 Trampoline Nodeまでの経路計算して支払いを送信
 ※ ネットワーク全体のViewを持つ必要はない
 
 Trampoline Nodeは送信者に代わって、 
 受信者までの以降のルートを計算し、支払いを転送する。 
 ネットワーク・トポロジーの全体像を保持するノード。 

  5. 5 Trampoline Paymentの流れ
 Lightning Node
 L3
 Trampoline Node T3
 Light

    Client
 Lightning Node
 L5
 Lightning Node
 L6
 Lightning Node
 L4
 Trampoline Node T1
 Trampoline Node T2
 Trampoline Node T4
 Lightning Node
 L2
 Lightning Node
 L1
 Invoice
 
 Trampoline Hint • T1 • T2 • T3 ① 受信者は近隣のTrampoline Node情報を 
  Trampoline Hintとして記載したインボイスを送信 
  (受信者が非公開チャネルの場合に利用) 
 ② 支払人は、支払いに使用するTrampoline Nodeを選択し 
   (T4, T3)、Trampoline Packetを作成する(後述)
 ③ 支払人は、最初のTrampoline Nodeまでの経路を選択し、 
  Onion Packetを作成し(後述)支払いを転送する 
 ④ Trampoline Nodeは、 Trampoline Packetを解釈し、
  次のTrampoline Nodeまでの経路を計算し、 
  経路に沿ってOnion Packetを作成し、支払いを転送する 
 ⑤ 受信したOnion Packet内の 
  Trampoline Packet から 
  Trampoline Paymentを認識 

  6. 6 Trampoline Payload
 Lightning Node
 L3
 Trampoline Node T3
 Light

    Client
 Lightning Node
 L6
 Lightning Node
 L4
 Trampoline Node T4
 Lightning Node
 L2
 Lightning Node
 L1
 Onion Payload for L1 
 
 • short_channel_id 
 • amt_to_forward 
 • cltv_value
 Onion Payload for T4 
 
 • amt_to_forward 
 • cltv_value
 • payment_secret 
 • total_amount 
 • Trampoline Onion 
 Trampoline Payload T4 
 • amt_to_forward 
 • cltv_value
 • outgoing_node_id 
 Trampoline Payload T3 
 • amt_to_forward 
 • cltv_value
 • outgoing_node_id 
 Trampoline Payload L6 
 • amt_to_forward 
 • cltv_value
 • total_amount 
 • payment_secret 
 Onion Payload for T3 
 
 • amt_to_forward 
 • cltv_value
 • payment_secret 
 • total_amount 
 • Trampoline Onion 
 Trampoline Payload T3 
 • amt_to_forward 
 • cltv_value
 • outgoing_node_id 
 Trampoline Payload L6 
 • amt_to_forward 
 • cltv_value
 • total_amount 
 • payment_secret 
 Onion Payload for L6 
 
 • amt_to_forward 
 • cltv_value
 • payment_secret 
 • total_amount 
 • Trampoline Onion 
 Trampoline Payload L6 
 • amt_to_forward 
 • cltv_value
 • total_amount 
 • payment_secret 
 送信者が作成する 
 Onion Payload 
 …
 …
 Trampoline Node T4 が作成
 Trampoline Node T3 が作成
 Trampoline Routingの場合も通常のOnion Routingと同様のプライバシーがある 

  7. 7 Gossip Protocolに期待される変更
 ※ 支払人は、少なくとも近隣のTrampoline Nodeまでの経路は計算する必要がある 
 Light Client
 Lightning

    Node
 Lightning Node
 channel_update 
 channel_update 
 Filter
 Filter
 • Nホップより遠いノードの更新情報のリレーの破棄を依頼 
 • 最大Nホップまでのノードのアップデート情報を照会 
 
 
 近隣のピアとTrampoline Nodeのみのネットワークグラフを維持し 
 ストレージコストとネットワーク帯域幅を削減