本文へスキップ
buybitcoinsmart

用語集 / ライトニングとレイヤー2

協力的クローズ

協力的クローズとは?
協力的クローズとは、合意によってライトニングチャネルを終了させる方法です。両方のピアが最終残高をそれぞれに支払う1つのトランザクションに署名し、遅延もペナルティのリスクもありません。

協力的クローズは、2つの点についての短い交渉です。それぞれの側がどこへの支払いを望むか、そして誰がマイナー手数料を支払うかです。現代的な経路では3種類のメッセージを使用します。まずtype 38のshutdown、次にoption_simple_closeのルールの下で40のclosing_completeと41のclosing_sigです。残高は、クローズのトランザクションが承認されるとすぐに、待機期間なしで通常の使用可能なアウトプットとして届きます。

仕組み

協力的クローズは2つの段階で進み、最初の段階は停止するという約束です。

どちらかのピアが、type 38のshutdownを送信し、支払いを受け取りたいscriptpubkeyを指定することで開始します。送信者はその後新しいHTLCを追加できず、もう一方の側は何も保留中でなくなった時点で自身のshutdownで応答しなければなりません。BOLT 2はこのscriptを、ネットワークがリレーする形式に制限しています。OP_0の後ろの20または32バイトのプッシュ、またはoption_shutdown_anysegwitをネゴシエートした後は、OP_1からOP_16に続く2から40バイトのプッシュです。

第2段階は、どちらのコミットメントにもHTLCが残っていなくなると始まります。option_simple_close、BOLT 9のフィーチャービット60と61の下で、各ピアはクローズのトランザクションの自身のバージョンを作成し、手数料全額を自身の残高から差し引き、type 40のclosing_completeを送信します。もう一方の側は渡されたものに署名し、type 41のclosing_sigを返します。提案者が支払うため、手数料水準をめぐる議論は行き場を失い、BOLT 2はこれを設計の要点と述べています。より高い手数料でclosing_completeを再度送信することがクローズの手数料を引き上げる方法であり、BOLT 3はそのトランザクションに0xFFFFFFFDのインプットシーケンスを与えており、仕様はこれを前回の試行のRBFと呼んでいます。

type 39のclosing_signedというレガシー経路も、仕様に依然として存在します。そこでは資金提供者が手数料と、min_fee_satoshisとmax_fee_satoshisからなるfee_rangeを指定し、非資金提供者がその範囲内の数値を選びます。同じ値を選べば2つのメッセージで決着し、そうでなければ3つで決着します。範囲がない場合、各応答は直前の2つの提示の間に厳密に収まる必要があり、両者は1サトシずつ収束します。

見られる場面

協力的クローズとは、利用者がクローズを押してピアが応答したときにウォレットが行うことであり、1つのトランザクションで、その背後に保留中の残高はありません。

BOLT 2には独自の手順の解説があります。AとBがshutdown scriptを交換し、保留中のHTLCが完了した後、Aが1,000サトシの手数料を支払うと申し出て、Bが独立して750を申し出ます。それぞれが相手のバージョンに署名します。その後Aが支払いscriptを変更して1,100サトシで再送信し、Bは自身の試行を850に引き上げます。

ルールが影響するのは小規模なチャネルです。資金の少ない側は自身のアウトプットを省略でき、金額がダストになる場合は省略しなければなりません。手数料によって両方のアウトプットがダストになる場合、クローズする側はアドレスの代わりにOP_RETURN scriptを送信でき、そのアウトプットの値はゼロに設定されるため、その側の資金は手数料に充てられ、トランザクションはなおリレーされます。仕様は、非segwit scriptに支払われる546サトシ未満のアウトプットはマイナーに届かない可能性があり、そのようなチャネルは代わりに強制クローズしなければならないと警告しています。

協力的クローズvs強制クローズ

協力的クローズと強制クローズはどちらもオンチェーンのトランザクションでチャネルを終了させ、違いは誰が待つかです。

協力的クローズでは両方のアウトプットが通常の支払いであるため、各側は最初の承認で使用でき、ペナルティの分岐が問題になることはありません。強制クローズは代わりにコミットメントトランザクションを公開し、自身の残高をチャネル開設時に合意したブロック遅延の背後に残し、進行中の各支払いに独自のフォローアップトランザクションを与えます。当サイトのPhoenixレビューでは、強制クローズされた資金を回収できるまでにその待機を約720ブロック、およそ5日としています。

協力的クローズには、もう一方のノードが起動していてshutdownに応答する意思があることが必要です。だからこそ強制クローズが存在し、連絡の取れないピアは、クローズの手数料を自分で管理できないピアなのです。

混同しやすい用語

よくある質問

協力的クローズのマイニング手数料は誰が支払いますか?

トランザクションを提案する側が支払います。option_simple_closeでは、各ピアが自身のclosing_completeを送信し、手数料を自身の残高から差し引きます。そのためBOLT 2は、この設計が手数料の不一致を障害モードから取り除くと述べています。レガシーのclosing_signed経路では資金提供者が支払い、もう一方の側が選ぶ手数料範囲を指定します。

ピアがオフラインのとき、チャネルを協力的にクローズできますか?

いいえ。協力的クローズでは、もう一方のノードがあなたのshutdownメッセージに応答し署名を返す必要があるため、到達できないピアの場合、代わりに強制クローズが残ります。これはチャネルに資金を置く前に計画しておく価値のある違いです。

協力的クローズの後、資金を使えるまでどのくらいかかりますか?

クローズのトランザクションが承認され次第です。両方のアウトプットは各側が選んだ支払いscriptへの通常の支払いであり、どちらにもタイムロックはありません。自身の側をブロック遅延の背後に残すのは強制クローズです。

次に読む

関連用語

ライトニングとレイヤー2のその他の用語

このページを英語で読む