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

Fast Forward Protocol

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

Fast Forward Protocol

Avatar for shigeyuki azuchi

shigeyuki azuchi

February 07, 2022
Tweet

More Decks by shigeyuki azuchi

Other Decks in Technology

Transcript

  1. 1 Fast Forward Protocol
 秘密鍵をオフラインにしたままLN支払いを受けられるようにするプロトコル提案
 https://lists.linuxfoundation.org/pipermail/lightning-dev/2021-May/003038.html 
 
 • オフラインにできるのは受信者の秘密鍵のみ


    • 送信者の秘密鍵はオンラインである必要がある
 →支払いをルーティングする場合も
 • 秘密鍵をオフラインにできるが、受信者自身はオンラインである必要がある
 • 強制クローズが実行された場合は、秘密鍵をオンラインにして対応が必要
 
 メリットを受けるのは、LN支払いを受け入れるマーチャントなど
 

  2. 2 現在のチャネル構成
 現在のLNチャネルは、
 各支払いの都度、チャネル参加者の各残高を更新した 
 新しいCommitment Txと署名を
 お互いに作成し、交換する。
 
 


    
 署名作成のため、支払い=チャネルの更新時には 
 秘密鍵へのアクセスが必要になる。 
 Commitment Tx1
 In
 Out
 to_remote (P2WPKH) 
 Funding UTXO
 to_local (P2WSH) 
 • <timelock> CSV to_local 
 • revocation key to_remote 
 Commitment Tx2
 In
 Out
 to_remote (P2WPKH) 
 Funding UTXO
 to_local (P2WSH) 
 • <timelock> CSV to_local 
 • revocation key to_remote 
 Commitment Tx3
 In
 Out
 to_remote 
 Funding UTXO
 to_local 
 • <timelock> CSV to_local 
 • revocation key to_remote 

  3. 3 現在のチャネル構成
 • to_remote
 相手の残高で、Commitment Txが承認されると 
 すぐに利用可能。
 (Anchorチャネルの場合、1承認待つ) 


    • to_local(自身の残高)
 Commitment Tx
 In
 Out
 to_remote
 Funding UTXO
 to_local
 • <timelock> CSV to_local 
 • revocation key to_remote 
 OP_IF <revocationpubkey> # 旧状態がブロードキャストされた場合のペナルティ用 OP_ELSE `to_self_delay` OP_CSV OP_DROP <local_delayedpubkey> OP_ENDIF OP_CHECKSIG
 to_local Offered/Received HTLC (P2WSH) 
 • revocation key 
 • <timelock> CLTV 
 • <preimage> 

  4. 4 Fast Forwardのチャネル構成
 Commitment Txの各アウトプットを対称的な内容に更新し、 
 Remote Penalty Claim Keyという新しい鍵を導入する。


    
 
 OP_IF # ペナルティ・トランザクション用 <local_revokepubkey> OP_CHECKSIGVERIFY <remote_penaltyclaimpubkey> OP_ELSE `to_self_delay` OP_CSV OP_DROP <local_delayedpubkey> OP_ENDIF OP_CHECKSIG OP_IF # ペナルティ・トランザクション用 <local_revokepubkey> OP_CHECKSIGVERIFY <remote_penaltyclaimpubkey> OP_ELSE `to_self_delay` OP_CSV OP_DROP <remote_delayedpubkey> OP_ENDIF OP_CHECKSIG to_local to_remote これまで、to_remoteは、相手がブロードキャストしたらすぐに利用可能だったが、 
 to_localと同様OP_CSVによるタイムロックが付与される 

  5. 5 Fast Forwardのチャネル構成
 Commitment Tx A
 In
 Out
 to_remote
 Funding

    UTXO
 to_local
 Commitment Tx B
 In
 Out
 to_remote
 Funding UTXO
 to_local
 Fast Forward HTLC Tx A
 Fast Forward HTLC Tx B
 In
 Out
 Commitment Tx AのUTXO 
 In
 Out
 Commitment Tx BのUTXO 
 Aのお釣り
 A→BへのHTLC 
 Aへのお釣り 
 A→BへのHTLC 
 アリス→ボブへの支払いが発生した場合
 ボブの署名
 アリスの署名
 OP_IF <アリスの revokepubkey> OP_CHECKSIGVERIFY <ボブの penaltyclaimpubkey> OP_ELSE `to_self_delay` OP_CSV OP_DROP <アリスの delayedpubkey> OP_ENDIF OP_CHECKSIG OP_IF <ボブの revokepubkey> OP_CHECKSIGVERIFY <アリスの penaltyclaimpubkey> OP_ELSE `to_self_delay` OP_CSV OP_DROP <アリスの delayedpubkey> OP_ENDIF OP_CHECKSIG アリスの
 Penalty Claim Key による署名
 アリスの
 Penalty Claim Key による署名
 ※ HTLCはCommitment Txにアウトプットが追加されるのではなく、子Txで処理される 
 鍵が違うだけで、 
 基本的にCommitment Tx の
 ロックスクリプトと同じ 

  6. 6 その後のHTLCの更新
 Fast Forward HTLC Tx A
 Fast Forward HTLC

    Tx B
 In
 Out
 Commitment Tx AのUTXO 
 In
 Out
 Commitment Tx BのUTXO 
 Aのお釣り
 A→BへのHTLC 
 Aへのお釣り 
 A→BへのHTLC 
 アリスの
 Penalty Claim Key による署名
 アリスの
 Penalty Claim Key による署名
 Fast Forward HTLC Tx A2
 Fast Forward HTLC Tx B2
 In
 Out
 FF HTLC Tx AのUTXO 
 Aのお釣り
 A→BへのHTLC 
 In
 Out
 FF HTLC Tx BのUTXO 
 Aのお釣り
 A→BへのHTLC 
 アリスの
 Penalty Claim Key による署名
 アリスの
 Penalty Claim Key による署名
 アリス→ボブへの支払いが発生した場合
 ・・・ 支払いはすべてFast Forward HTLC Tx の
 チェーンになる。
 
 Txをブロードキャストするための条件は 
 • 自分が持つRevocation Keyによる署名 
 • 相手が持つPenalty Claim Keyによる署名 
 
 
 Fast Forward HTLC Txは相手の資金をインプットとした 
 Txであるため、Tx作成時に自身の秘密鍵による署名を 
 相手に渡す必要がない。 
 アリス(送信者)の署名はTxの作成時=状態更新時に 
 Txと一緒に相手から送信される。 
 
 
 
 
 ※ 資金を受け取るだけであれば、自身の秘密鍵は不要、 
  つまり、オフラインのままでいい。 
 
 両者の秘密鍵を必要とするCommitment Txの更新を 
 発生させないのがポイント 

  7. 7 Fast Forwardのデメリット
 • 強制クローズ
 支払いの度に、HTLC Txのチェーンが増えていくため、強制クローズした場合、 
 オンチェーンTxの手数料は既存のプロトコルより増加する。 


    定期的にCommitment Txの状態を更新する必要がある。 
 
 • HTLCの支払いに対して、O(n)で保持すべきTxが増える。 
 
 • 恩恵を受けれるのは自分が最終的な受信者である場合のみ 
 ◦ 支払いを後続のノードにさらに転送する場合は、秘密鍵がオンライン 
 ◦ 自分が最終受信者であることがピアには分かる。