LDP Seminar Week 1の備忘録

Chaincode labsが開催しているLDPというオンラインセミナーに参加しているので、そのWeek 1の復習を兼ねての備忘録。

Week 1はライトニングの基本的なプロトコルに関する内容で、事前に参加者には宿題が与えられるので当日までに解いておく。そして、当日その問題をグループ内でディスカッションする形式となっている。その中から一部抜粋してその問題を以下に記載する。

・・・

問題1

Why do we need the HTLC-Success and HTLC-Timeout transactions? Why can't we just use a sequence delay on the to_local output conditions of the HTLC itself?

回答

アリスからボブへの送金において考える。まずはアリスのコミットメントであるOffered HTLCについて。このHTLCのアウトプットの使用条件は以下の3つ

  • ボブがプリイメジを使う
  • CLTVによる絶対時間の経過後にアリスが自身の署名を使う
  • ボブがrevocation keyを使う(アリスが古いコミットメントを送信した場合)

ただし、CLTV経過後、アリス自身が使用する場合にはto_self_delayの相対時間も経過する必要がある(※1)。言い換えると、HTLCの有効期限が切れたのに、この相対時間分の猶予がボブに与えられることになる。これがアリスに与える影響は、アリスが受け取った上流からのHTLCをキャンセルできなくなる、また、この時間分の遅延が上流へ及ぶことになる。

そこで、このCLTVとCTVによる時間枠を1つのHTLCに含めるのではなく、HTLC-Timeoutトランザクションという2つ目のトランザクションを作り、このトランザクションの中にアリスへのto_self_delayを入れることで、HTLCの執行猶予を無くすことができる。

※1to_self_delayは古いコミットメントをブロードキャストした場合に相手側がrevocation keyを使い資金の没収ができるようにするための期間を設けるために必要。

次にボブのコミットメントであるReceived HTLCについて。このHTLCのアウトプットの使用条件は以下の3つ

  • ボブがプリイメジを使う
  • CLTVによる絶対時間の経過後にアリスが自身の署名を使う
  • アリスがrevocation keyを使う(ボブが古いコミットメントを送信した場合)

ボブがプリイメジを使う場合、今度は自身のコミットメントトランザクションなので、to_self_delayが必要になる。ここでボブがto_self_delay時間待つことになるが、この時間がcltv_expiryよりも長い可能性がある。そうなるとボブはプリイメジを知っているのに、CLTVの時間が経過後にアリスによって資金を回収されてしまう。

そこで、HTLC-Successトランザクションという2つ目のトランザクションを作り、このトランザクションのアウトプットにボブへのto_self_delayを入れる。こうすることで、cltv_expiryの有効期限が切れる前にプリイメジを使ったHTLC-Successトランザクションをブロードキャストさせる。その後、ボブへのto_self_delayを強制させることが可能となる。

上記を要約すると、CLTVとCSVを切り離す必要があり、そのためにCLTVをコミットメントトランザクションのHTLCへ、CSVをHTLC-Timeout/Successトランザクションへセットする必要がある。

Lightningのプロトコルは、アリスとボブが持つコミットメントトランザクションは非対称で、それぞれの視点で考える必要があるので混乱しやすい。

上記のHTLC-Timeout/Successトランザクションに関してはこちらの記事が分かりやすく秀逸。

問題2

What problem do commitment transactions solve? When a revoked commitment transaction is found, what outputs need to be resolved by the penalty transaction?What happens to the HTLCs?

回答

  • オフチェーンで状態を管理するため
  • カウンターパーティーが消えた場合でも資金を取り出せるようにするため
  • to_localをrevocation keyで回収する
  • HTLCsもrevocation keyで回収する

・・・

ライトニングプロトコルは複雑すぎて心が折れそうになる(笑)

この続き : 0字 / 画像 0枚
100

会員登録 / ログインして続きを読む

関連記事

記事を書いた人

ちょビットコイナー nostr id: npub1l83ycz54gng3nd8suvww43fardjsca37x7z5rcwlmeqzudg027fqe9hwaa

SNSにシェア

このクリエイターの人気記事

LNノードの運用益はどれぐらい?パート1

1822

【Muun】ちょっと変わったライトニング搭載ノンカストディアルウォレット

1769

LNノードの運用益はどれぐらい?パート3

1092