用語集 / ライトニングとレイヤー2
コミットメントトランザクション
- コミットメントトランザクションとは?
- コミットメントトランザクションとは、ライトニングネットワークのチャネルの両当事者がそれぞれ保持する、署名済みで未ブロードキャストのビットコインのトランザクションであり、資金提供出力を消費して現在の残高配分にするものです。
ライトニングの支払いが行われるたびに、双方のコミットメントトランザクションは新しい組に置き換えられ、古い組は削除されるのではなく取り消されます。BOLT 3は、アンカーチャネルのコミットメントの想定ウェイトを1,124ウェイトユニット、加えて未完了の支払い1件につき172と定めています。これを保有することは、相手方が数週間前に同意した手数料で、自分だけで実行できる出口を保有することを意味します。
仕組み
コミットメントトランザクションの入力はちょうど1つで、チャネルの2-of-2の資金提供出力です。このトランザクションの出力は、その資金の現在の配分です。
どの時点でも2つ存在し、相手方ごとに1つあり、意図的に同じトランザクションにはなっていません。各コピーは、相手方への支払いを先に行いながら、保有者自身の受け取りをto_self_delayブロックのOP_CHECKSEQUENCEVERIFYロックの後ろに遅らせるため、ブロードキャストした側が待つことになります。option_anchorsでは、相手方への支払いも即時ではありません。to_remote出力には1ブロックのCSVロックが付き、これはどの相手方も安価な子トランザクションを付けてコミットメントを詰まらせられないようにするために追加されています。
このトランザクションは自身のカウンターを隠します。BOLT 3はバージョンフィールドを2に設定し、48ビットのコミットメント番号を取り、open_channelとaccept_channelの2つのpayment_basepoint値に対するSHA256の下位48ビットとXORし、その結果を2つのフィールドに分割します。上位24ビットはバイト0x80の後ろの入力のsequenceに、下位24ビットは0x20の後ろのlocktimeに入ります。双方はすぐにこれを再計算します。チェーンを監視する第三者は、恣意的に見える2つの数値を見るだけで、そのチャネルが何件の支払いを運んだかを数えることはできません。
出口の費用は資金提供者が負担します。どの出力も配置される前に、基本手数料がチャネルに資金を提供した側から差し引かれ、option_anchorsではそれぞれ330サトシの固定アンカー出力2つも同じ側から差し引かれます。その後、出力は値の小さい順、次にscriptPubKeyのバイト単位の比較順、次にHTLC出力ではcltv_expiry順に並べ替えられるため、双方は互いに送信することなくバイト単位で同一のトランザクションに到達します。
記録する価値がないほど小さいものは記録されません。BOLT 3はこれをtrimmed出力と呼びます。金額から自身の第2段階トランザクションの費用を引いた額が、保有者のdust_limit_satoshisを下回るHTLCには出力が一切付かず、その資金は誰かの残高ではなくマイナー手数料になります。BOLT 3が挙げるしきい値はBitcoin Coreのもので、pay to witness script hashでは330サトシ、pay to witness pubkey hashでは294、pay to anchorでは240です。これらは設定値そのものではなく下限であり、BOLT 3はアンカーチャネルにこの下限より上に設定するよう指示しています。そうしたチャネルでは第2段階トランザクションが手数料を支払わないため、トリミングにまったく寄与しなくなるからです。
最新の形式のトランザクションは、組み込みの手数料を廃止します。zero_fee_commitmentsが適用される場合、バージョンフィールドは3になり、feerate_per_kwは0に固定され、pay to anchorスクリプトOP_1 <0x4e73>を持つshared_anchor出力1つが、その240サトシの下限で追加されます。誰でもこれを使用できるため、コミットメントは署名時の費用ではなく、その日の手数料市場が示す価格でのchild pays for parentによってブロックに取り込まれます。
ビットコインを購入するときにこれが重要な理由
コミットメントトランザクションは、ライトニングの残高が画面上の数値ではなく、手数料を差し引いたサトシになる場所であり、そのルールのうち2つは実際の資金に関わります。
1つ目はトリミングです。チャネル内の少額は四捨五入されるのではなく削除され、仕様自体の計算例では、未完了の支払いのうち各件がダスト上限と第2段階の費用を合わせた額を下回ったため、1,800サトシがマイナーに渡ります。これはライトニングに移す価値がある金額の下限を定めます。当サイトのレビューに掲載しているACINQのウォレットであるPhoenixは、チャネル作成に1,000サトシを請求し、強制クローズからの復旧にはおよそ720ブロック、約5日かかると述べています。数千サトシで資金提供したチャネルは、決して釣り合わない計算です。
2つ目は、コミットメントトランザクション内の手数料が署名時に選ばれたという点です。資金提供者の残高はその日のfeerate_per_kwで差し引かれ、それ以降mempoolが動いていれば、ウォレットにあるトランザクションは含まれる価格では承認されない可能性があります。アンカーはまさにこのために存在し、zero_fee_commitmentsは判断をブロードキャスト時に移すために存在します。
チャネルを他の誰かが保有していれば、どちらのルールもあなたには及びません。当サイトの取引所レビューで4.6の評価のStrikeはライトニングネイティブかつカストディ型で、残高がアプリ内にある間はそうであり、Coinbaseはライトニングの出金を、少額ではオンチェーン送金より安く、高額では高く設定しています。その代わりに失うものはウォレットレビューに記載されています。2.7の評価で注意の印が付いたWallet of Satoshiは、2023年11月23日に米国の顧客へのサービスを停止し、その後MiCAの移行期間が終了するにつれて欧州連合全域でカストディ型ライトニングサービスを撤回しました。あなたが拠り所にできる自身のコミットメントトランザクションは存在しませんでした。
BOLT 3の手数料の例をたどる
BOLT 3は1つの手数料計算例を公開しており、それを最後までたどると、チャネルの資金が実際にどこへ行くかが分かります。
設定は、feerate_per_kwが5,000、dust_limit_satoshisが546、未完了の支払いが4件、すなわち提示済みHTLCが5,000サトシと1,000サトシ、受取済みHTLCが7,000サトシと800サトシです。その手数料率では、HTLC timeoutトランザクションの費用は3,315サトシ、HTLC successトランザクションの費用は3,515です。
ウェイトは724から始まります。これはoption_anchorsのないチャネルの数値で、この例全体が前提とする形態です。提示済みの5,000サトシのHTLCは546に3,315を加えた額を上回るため出力が付き、ウェイトは896に上がります。提示済みの1,000サトシのHTLCはこれを上回らず、トリミングされます。受取済みの7,000サトシのHTLCは546に3,515を加えた額を上回るため出力が付き、ウェイトは1,068に上がります。受取済みの800サトシのHTLCはトリミングされます。
基本手数料は5,000に1,068を掛けて1,000で割った値、すなわち5,340サトシで、資金提供者の出力からのみ差し引かれます。マイナーが実際に受け取る手数料は7,140サトシです。トリミングされた2件のHTLCが上乗せされるからです。未完了の13,800サトシのうち、1,800は誰の残高としても存在しなくなり、手数料が差し引かれた後に資金提供者自身の出力がダスト上限を下回れば、合計はさらに増える可能性があります。
コミットメントトランザクションvsペナルティトランザクション
コミットメントトランザクションは双方が署名した配分を支払います。ペナルティトランザクションは、すでに取り消した配分を公開した相手方から、チャネル全体を奪います。
両者が使用するものは異なります。コミットメントトランザクションは資金提供出力を使用します。ペナルティトランザクションは、古くなっていたことが判明したコミットメントトランザクションの出力を使用し、その状態が置き換えられた際に保有者が引き渡した取り消し鍵を使います。to_localスクリプトは両方の将来を1つの出力に書き込みます。一方の分岐はto_self_delayブロック後に遅延鍵を必要とし、もう一方は取り消し署名を必要とし、遅延なしで機能します。
コミットメントトランザクションvs強制クローズ
コミットメントトランザクションはあなたが保有する対象であり、強制クローズは誰かがそれをブロードキャストする出来事です。
この区別が重要なのは、行動するのがあなたである必要はないからです。相手方が現行の状態で強制クローズした場合、相手方のコピーはあなたの側に支払い、あなたは何もする必要がありません。条件は、アンカーチャネルがto_remote出力に課す1ブロックのCSVロックだけです。あなた自身のコピーは、応答しなくなった相手方に対する代替手段であり、遅延を待ち切らせるコピーです。コミットメントトランザクションの保有は通常のことで、継続的で、費用はかかりません。ブロードキャストは、決して経験したくない出来事です。