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. Trampoline Payment


    View full-size slide

  2. 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を構築


    View full-size slide

  3. 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ノードはこのチャネルグラフを

    最新に保ちながら、支払いを

    ルーティング可能な経路を探索する

    View full-size slide

  4. 3
    経路探索

    ネットワークにゴシップされるのはチャネルのキャパシティ(総量)のみ

    チャネルの参加者のどちらにどれだけの残高があるかは不明


    ノードは、支払い額以上のキャパシティを持つ経路をピックアックし、


    ● 手数料(固定、比例)

    ● タイムロック時間

    ● これまでの支払いの試行の成功確率


    の重みを持つ有向グラフ(フローネットワーク)から、

    最適な経路を選択する。


    ダイクストラ(Dijkstra)法など、最短経路問題のアルゴリズムを適用。

    ネットワーク内のチャネル情報を最新に保ち、

    経路計算をする必要があり、(ストレージ、計算コスト的に)

    常時稼働していないスマートフォンなどのデバイスには不向き


    View full-size slide

  5. 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は送信者に代わって、

    受信者までの以降のルートを計算し、支払いを転送する。

    ネットワーク・トポロジーの全体像を保持するノード。

    View full-size slide

  6. 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を認識

    View full-size slide

  7. 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と同様のプライバシーがある 


    View full-size slide

  8. 7
    Gossip Protocolに期待される変更

    ※ 支払人は、少なくとも近隣のTrampoline Nodeまでの経路は計算する必要がある

    Light Client

    Lightning Node

    Lightning Node

    channel_update 

    channel_update 

    Filter

    Filter

    ● Nホップより遠いノードの更新情報のリレーの破棄を依頼 

    ● 最大Nホップまでのノードのアップデート情報を照会 



    近隣のピアとTrampoline Nodeのみのネットワークグラフを維持し 

    ストレージコストとネットワーク帯域幅を削減 


    View full-size slide