本文へスキップ
buybitcoinsmart

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

ブラインドパス

ブラインドパスとは?
ブラインドパスとは、ライトニングネットワークのノードへの経路のうち、受取人が各ホップの公開鍵を調整した鍵に置き換えるため、送信者が実際の宛先を知ることがない経路です。

受取人が経路を構築して配布するため、支払者は公開された導入ポイントまでしか経路をたどりません。BOLT 12のインボイスは、ブラインドパスを伴わない場合には拒否されます。また、ブラインド化されたホップは、経路の残りの部分と同様に、オニオンの固定された1300バイトのペイロードを共有します。ライトニングの宛先を公開する場合、ブラインド化によってノードIDはその宛先に現れません。

仕組み

ブラインドパスは、支払うノードではなく、到達されたいと望むノードによって、逆方向に構築されます。

受取人は、自分自身への実際の経路とランダムな一時鍵から始め、そこから、各ホップが次を告げられずに計算できるように配置された経路鍵の連鎖を導出します。すべてのホップは最終的に受取人とのECDH秘密を共有し、その秘密から2つのものが得られます。1つ目はブラインディング係数で、共有秘密の下での文字列blinded_node_idのHMACであり、受取人はそれをそのホップの公開鍵に掛け合わせます。そのホップは、同じ係数を導出して自分の秘密鍵に適用するため、その結果に対して依然として署名できますが、他の誰もその鍵を公開されたグラフと照合することはできません。2つ目は暗号化鍵で、全ゼロのナンスの下でChaCha20-Poly1305を用いて、そのホップ向けの小さな命令ブロブを封止するために使われます。

公開されるものは短いものです。平文の導入ポイント、1つの開始経路鍵、そしてそれぞれが封止されたブロブと対になる、調整された鍵のリストです。ブロブの中には、そのホップが読むフィールドがあります。支払いが次にどこへ向かうかを示すshort_channel_idまたはnext_node_id、適用すべき手数料とCLTVデルタを示すpayment_relay、最大有効期限と最小HTLCサイズを示すpayment_constraints、パディング、そして最後のホップではpath_idです。

これらの選択のうち3つは、機能的というより防御的です。すべてのブラインド化されたホップの手数料とタイムロックを、支払者ではなく受取人が固定するため、中間ノードは経路の途中で価格を吊り上げて、どの支払いが失敗するかを観察することはできません。受取人はすべてのブロブを同じ長さにパディングし、破棄するダミーのホップを追加することがあるため、実際の長さはその形から読み取れません。そしてpath_idは、例えばプリイメージなどの非公開データを保持するため、受取人は、攻撃者が疑っているすべてのノードに対して送りつけた経路を受け入れるのではなく、自分が構築した経路を確認できます。

BOLT 12は最後の偽装の要素を追加します。ブラインド化されたホップごとの手数料の代わりに、インボイスは経路ごとにちょうど1つのblinded_payinfoを持ちます。ミリサトシ単位の基本手数料、百万分率単位の比例レート、1つの集約されたCLTVデルタ、最小および最大のHTLCサイズ、そしてフィーチャーベクターです。その理由として述べられているのは、ホップごとの詳細があれば、経路を区別する不均一性が容易に明らかになってしまうというものです。

ビットコインを購入するときにこれが重要な理由

ブラインドパスは、ライトニングネットワークの中間部分があなたについて何を学ぶかを変えますが、あなた自身の最初のホップが学ぶことについては何も変えません。

経路のブラインド化は導入ポイントより後のホップを隠しますが、あなたのウォレットが接続するノードについては何も述べません。そのノードこそがあなたの金額と宛先を見るものです。当サイトの41件のウォレットレビューの中で4.0と評価しているPhoenixは、この点について異例なほど正直です。ACINQ自身のFAQは、このウォレットがホスト型のカストディ型ウォレットに対するプライバシー上の優位性を提供せず、ACINQが支払いの最終的な宛先と金額を知ることを述べています。あなたが支払うオファーの中のブラインドパスは、それには影響しません。

カストディはその問いを完全に取り除きます。当サイトで2.7と評価し注意を付しているWallet of Satoshiは、そのカストディモードで鍵を保有するため、支払いの両端が同社の記録となります。同社は2023年11月23日に米国の顧客へのサービスを停止し、それ以来欧州連合全域でカストディサービスを廃止しています。支払いがプロバイダーの帳簿から離れることがなければ、あなたのものは何もブラインド化されません。

ブラインド化があなたに何かをもたらすのは、出金そのものです。当サイトで最も高く評価しているライトニング優先のプラットフォームで4.6の評価のStrikeは、送金に独自の手数料を追加せず、あなたが指定するライトニングの宛先へ支払います。同社にBOLT 11のインボイスを渡すと、あなたは自分のノードを渡すことになります。署名はリカバリーIDを伴うため、受取人の鍵をそこから復元できます。オファーは、支払者がオファーに対応している場合には、代わりにそこに導入ポイントを置きます。

その代償は診断にあります。ブラインドパス内のホップは、帰属データを持たない失敗を返し、導入ポイントはエラーを転送する前にランダムな遅延を加えるよう指示されるため、探査によって受取人がどれだけ離れているかを測定することはできません。したがって、ブラインド化された宛先への出金が失敗しても、ほとんど何も分かりません。そのため、プラットフォームを責める前に、自分で管理するウォレットから試してください。

DaveがBobとCarolを経由する経路をAliceに渡す

ライトニングの仕様は、4つの名前を用いてブラインドパスの考え方を説明しています。これは代数より追いやすいものです。

Daveは、Aliceに自分だと知られずに支払いを受け取りたいと考えます。彼は、2つの公開ノード、まずBob、次にCarolを経由して自分自身への経路を選び、3人全員がそれぞれの鍵を導出できるように経路鍵の連鎖を構築します。次に彼は3つのブロブを封止します。1つはBobにCarolへ転送するよう伝えるもの、1つはCarolに彼へ転送するよう伝えるもの、1つはメタデータとpath_idを運ぶ自分自身のためのものです。最後に彼は、BobをBobプライムに、CarolをCarolプライムに、DaveをDaveプライムに変える係数を導出します。

Aliceは3つの行を受け取ります。最初のノードはBobであり、これが最初の経路鍵であり、これがBobプライム、Carolプライム、Daveプライムの並びで、それぞれに封止されたブロブが対になっています。彼女は通常の公開グラフを経由してBobに到達します。これは意図的なもので、仕様は導入ポイントまでの非ブラインド化された区間を推奨しています。それは中間のノードによる対応を必要とせず、読むことのできるエラーを返すためです。Bobは自分の命令を開封し、次がCarolであることだけを知り、導出された経路鍵をオニオンとともに渡します。Carolはその鍵を2回使います。1回はオニオンを調整するためで、AliceはCarolではなくCarolプライムに向けて暗号化しており、もう1回は自分自身の命令を開封するためです。Daveは最後にそれを受け取り、受け入れる前にpath_idを確認します。

それぞれが最終的に何を知るかを数えてみてください。AliceはBobを知っています。Bobは自分が導入ポイントであり、次がCarolであることを知っています。Carolはブラインド化された支払いが自分を通ったことを知りますが、Daveが受取人なのか別のリレーなのかは判別できません。Daveはすべてを知っています。彼だけがそれを構築したからです。

ブラインドパスvsルートヒント

ブラインドパスとルートヒントは同じ問い、すなわち公開グラフでは見えないノードにどう到達するかに答えますが、その過程で明かす量は正反対です。

ルートヒントはBOLT 11のインボイスのrフィールドであり、平文です。各エントリは264ビットの公開鍵、64ビットのショートチャネルID、基本手数料、比例レート、CLTVデルタをすべて平文で持ちます。そのため、インボイスを保有する誰もが、あなたがどのよく接続されたノードに接続しているかを知ります。ブラインドパスは導入ポイントを名指しし、その後は暗転します。それ以降のすべてのホップはグラフの何とも一致しない調整された鍵であり、手数料は項目別ではなく集約されて届きます。ブラインドパスはまた、ルートヒントが決して持たなかった役割を引き継ぎ、BOLT 11のインボイスのpayment_secretおよびpayment_metadataフィールドの代わりを務めます。

ブラインドパスvsオニオンルーティング

オニオンルーティングはホップから支払者を隠し、ブラインドパスは支払者から受取人を隠します。

単純なオニオンルーティングでは、送信者が公開グラフからすべてのホップを選び、ホップごとに1つの暗号化層で包むため、転送するノードは誰が支払っているのかも、経路のどこに位置するのかも知りません。送信者は依然として、宛先の実際のノードIDを含む経路全体を知っています。これは店に支払うには問題ありませんが、再利用可能な宛先を公開するには役に立ちません。経路のブラインド化は、何も置き換えずに欠けていた半分を補います。ブラインドパスを通る支払いは依然としてオニオンであり、ブラインド化はその上に重ねられた鍵の調整です。両者は十分に分離可能であるため、プライバシーを望まない受取人は、自分自身だけを含む1ホップの経路を構築し、それでも自分のノードIDを明かすことができます。

混同しやすい用語

よくある質問

ブラインドパスはライトニングノードをすべての人から隠しますか?

いいえ。導入ポイントは平文で公開され、ご自身の最初のホップ(通常はウォレットプロバイダーが運営するノード)は、その先のホップに対してパスが何を隠していても、送信するすべての支払いを把握します。

ブラインドパスを使うとライトニングの支払いコストは高くなりますか?

通常は少し高くなります。ブラインドされたホップの手数料とタイムロックは、ウォレットが最も安い経路を探すのではなく、受取人が決めるためです。BOLT 12のインボイスでは、それがホップごとの価格ではなく、集約された1つの基本手数料と経路ごとの比例料率として表示されます。

BOLT 12のオファーへの支払いが、説明もなく失敗したのはなぜですか?

ブラインドパス内の失敗は、意図的に情報を明かさない形になっているためです。これらのホップは、ご自身への帰属情報を一切含まない形でエラーを返し、導入ポイントには失敗を転送する前にランダムな遅延を加えるよう指示されます。これにより、誰もパスを探査して受取人がどれだけ離れているかを測定できません。

ブラインドパスはブラインド署名と同じものですか?

いいえ、言葉が共通しているだけです。ブラインド署名は、CashuとFedimintが使うChaumianの仕組みで、ミントが後から識別できないようにノートに署名するものです。一方、ブラインドパスは、ホップが調整された公開鍵として公開されるライトニングの経路です。

次に読む

関連用語

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

このページを英語で読む