本文へスキップ
buybitcoinsmart

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

HTLC

別名はHash time-locked contractです。

HTLCとは?
HTLCとは、秘密の情報と引き換えにのみ支払われ、その秘密が両当事者が合意したブロック高までに届かなかった場合に送金者へ返金される支払いのことです。

ハッシュタイムロック契約(HTLC)は、マルチホップのライトニング決済を安全に転送するために欠かせない仕組みです。各ホップは同じSHA-256ハッシュに資金をロックし、1つのチャネルは各方向に同時に最大483件までしか運べません。利用者にとっては、これがライトニング決済が完全に決済されるか完全に失敗するかのどちらかになり、経路の途中で資金が取り残されることが決してない理由です。

仕組み

HTLC内の資金は2つの条件で守られ、最終的にそのうちのちょうど1つが真になります。

受取人は32バイトのランダムな秘密(プリイメージと呼ばれます)を作り、それをSHA-256でハッシュ化し、その結果をインボイスに入れます。続いて経路上の各ノードは、次のノードに対して、2通りの方法で使用できるアウトプットを提示します。プリイメージを示せる者が即座に使用するか、合意したブロック高を過ぎた後にそれを提示したノードが使用するかです。すべてのホップが1つのハッシュを共有しているため、受取人がプリイメージを明かして自分の資金を請求した瞬間に、それより前のすべてのホップがそれを知り、それぞれ自分の分を請求します。支払いを先へ転送したのに自分が支払いを受け取れないままになる人は誰もおらず、これがライトニングの土台となる性質です。

ブロック高は経路に沿って段階的に下がっていきます。各チャネルはcltv_expiry_deltaを通知し、支払人はそれらの差分を積み上げることで、受取人に最も近いホップが最初に期限切れになり、上流のすべてのホップに安全上の余裕が残るようにします。BOLT 11は、インボイスに別段の記載がない場合、支払人に対して最終ホップに少なくとも18ブロックを見込むよう定めています。この積み重なった遅延がHTLCの実際のコストです。決済が詰まると、資金は失われませんが、タイムアウトが解消されるまで何時間も凍結されることがあります。

オンチェーンでは、これらの契約は実際のトランザクションになります。アンカーチャネルでは、HTLCタイムアウトのトランザクションは666重量単位、HTLC成功のトランザクションは706重量単位になり、処理途中の決済が複数ある状態で強制クローズを行うと、それぞれについてこれらのトランザクションを1つずつブロードキャストすることになります。アウトプットを1つ設ける価値がないほど少額の資金にはアウトプットが与えられず、代わりにマイニング手数料に加算されます。そのため、チャネルが不適切なタイミングでクローズすると、ごく少額の決済が手数料の中に消えてしまうことがあります。

どこで見られるか

HTLCは、支払いボタンを押してからインボイスが緑色になるまでの数秒間に見られ、オンチェーンスワップの手数料計算でも再び登場します。

Strikeのようなライトニング中心のサービスは、あらゆる決済でこの方法で資金を動かしており、ライトニングのルーティングノードは保留中のHTLCの件数を運用指標として掲載しています。詰まった契約でいっぱいのチャネルは何も転送できないからです。同じ仕組みはライトニングの外でも機能します。サブマリンスワップはオンチェーンのHTLCと、同一のハッシュにロックされたライトニング決済を交換し、チェーン間アトミックスワップは2つの台帳にまたがって同じことを行います。いずれの場合も、ハッシュが共通の審判であり、タイムアウトが返金です。

この上限は見た目以上に重要です。コミットメントトランザクションは有効なビットコインのトランザクションであり続けなければならないため、BOLT 2は各方向につき受理済みの契約を483件までに制限し、より新しい手数料なしのコミットメント形式では114件までに引き下げています。大規模なルーティングチャネルは混雑時にはこの上限に突き当たり、これが決済があるときは失敗し、30秒後に成功する正直な理由の1つです。

HTLC vs PTLC

HTLCは経路全体で1つのハッシュを使うのに対し、PTLCは各ホップに楕円曲線上の点から導出した異なるロックを与えます。この1点の違いがプライバシーの穴になります。同じ運営者が保有する2つのルーティングノードが利用者の経路上の異なる位置にあると、同じハッシュを2回見ることができ、利用者の決済をつなぎ合わせられてしまいます。実際にネットワークが動いているのはHTLCです。PTLCは仕様で定められた置き換えであり、実装されるまでは、大規模なルーティング運営者は転送するホップを関連付けできると想定しておくのが妥当です。

混同しやすい用語

よくある質問

ライトニング決済がHTLCの中で詰まった場合、資金を失うことはありますか?

金額そのものを失うことはありません。契約は秘密の情報と引き換えに完了するか、ブロック高を過ぎた時点で返金されるかのどちらかですが、そのどちらかが起こるまで資金は凍結され、それには何時間もかかることがあります。

ライトニング決済が1回目は失敗し、2回目で成功することがあるのはなぜですか?

経路が変わるためです。チャネルの容量が不足しているか、その方向で保留中の契約が483件の上限にすでに達している可能性があり、決済は別の経路で再試行されます。

次に読む

関連用語

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

このページを英語で読む