HTLCの問題点を一部改善したPTLCとその応用
ライトニングネットワークの基礎となっている、ノード間の送金バケツリレーを実現するHTLC (Hashed Timelock Contract)というスマートコントラクトが存在します。現在のライトニングネットワーク(LN)に欠かせない技術ですが、その構造的な問題がいくつかかなり前より指摘されていました。その代わりとしてにわかに脚光を浴びているのがPTLC (Point Timelock Contract)です。HTLCが「ハッシュ」を使用して送金の中継を実装していたところを、PTLCでは中継ノードごとに秘密鍵を加算していくことで実装します。PTLCを使ったライトニングネットワークが実現した場合の利点と、PTLCの応用可能性を見ていきましょう。
HTLCとは
本コラムの読者のみなさんにはおなじみのライトニングネットワークの仕組みに欠かせないのがHTLCです。LNでの送金は、トランザクションごとに受け手がプリイメージという秘密情報を生成し、そのハッシュ値をインボイスに含めて支払者に送ります。支払者は、支払いを行うと、支払った証明としてプリイメージを受け取り、そのチャネルの最新状態を更新します。支払い経路上に他に中継ノードが存在する際は、それらのノードとも、プリイメージの受領・最新状態の更新、というプロセスを行っています。まさにこの送金途中の状態の管理にHTLCを使うことで、資金の不渡りを防いでいます。
3つのノードを中継する送金だと:
送金→送金→送金→送金→受領↴
完了←完了←完了←完了←プリイメージ
⇔方向の矢印がHTLC
PTLCが解決しようとするHTLCの問題は、送金経路上全てのHTLCが同じプリイメージとプリイメージハッシュに依存することから来ています。例えば、ワームホール攻撃という攻撃は、経路上の2箇所のノードが情報を共有している場合(所有者が同じ場合など)、先にプリイメージを受け取ったノードが送金者に近い方のノードにプリイメージを直接渡すことで、その中間のノードが受け取るはずだった手数料を奪うことができます。また、この状況はプライバシーの問題にもつながり、同一のプリイメージハッシュをもつ支払いは同一の支払いと考えられるため、複数のノードを持っている主体による送金経路の推定などデータ収集が容易になります。さらには、以前紹介したプリイメージの支払証明としての「本人性」の問題があります。(支払った本人以外も知っている可能性がある)
PTLCとは
PTLCとは、HTLCで利用されていたプリイメージとハッシュの代わりに、秘密鍵のような「ペイメントポイント」と定数「スカラー」を利用することで、HTLCでは行えなかった様々な処理を実現します。まず、HTLCにおいては各ノード間(ホップ)において、単純に同一のプリイメージを回覧していたためワームホール攻撃などが可能になっていましたが、PTLCにおいては各ホップにおいて秘密鍵の加算を使用しています。どの中継ノードも鍵が1つ足りないから、送金を解決する段階で順にもらっていくイメージです。
具体的な仕組みを文字で説明するのは限界があるのですが、Spotlightの小川さんがSuredbitsの記事を訳して紹介されてたので、そちらの図をご覧下さい。
やりとりされる情報が異なることによって複数のホップを結びつけることが難しくなり、ワームホール攻撃も防げるようになったほか、HTLCにおけるプリイメージに対応する受け手の「秘密鍵」(秘密情報)が最初の送金者本人にしかわからなくなりました。この情報を使えば支払者本人だと証明できます。
PTLCが実現する新機能
PTLCはハッシュではなく鍵の加算を使用するため、HTLCの欠点を修正する以外にも様々なことができます。ここでは軽く触れますが、詳しくはSuredbitsの連載記事にあります。(そして、やはり小川さんが訳して紹介してくれています)
スタックレスペイメント…現在のLNでは、送金時に経路上の各ノードがHTLCをセットアップしている段階でどれかのノードがHTLCの処理を行わなかった場合、送金がスタックしてしまいます(処理詰まり)。急ぎであれば別の経路で再送できますが、スタックが解消されたら二重に送金されてしまいますし、スタックした送金を取り戻すのには一定時間待つ必要があります。スタックレスペイメントは、経路が完成しない限り誤っても資金が送られることはないので、万一セットアップ段階で送金が詰まった場合にも安全に別経路で再送できる機能です。
エスクロー…ペイメントポイントを応用して、ライトニング上でマルチシグによるエスクローが実現できます。完全にトラストレスにできない類の取引(物理的な商品など)の仲裁に便利です。
情報の売買のトラストレス性の向上…ライトニングは支払いの証明としてプリイメージ(秘密情報)を取得できる性質上、情報の売買に使いやすいですが、HTLCを用いたライトニングネットワークにおいては支払う前はデタラメなハッシュ値しか知らないため、実際にプリイメージが欲しい情報かはわかりません。シュノア署名の性質を活用してペイメントポイントを設定すると、買い手が指定した条件を満たすメッセージに対してのみ支払うことが可能になります。これは、売り手からトラストレスに署名などのデータを買うのに使うことができます。
DLCの鍵の売買によるオプション取引…Lightning PoolやDLCなどの登場で、今年はライトニングの金融化が始まった年だと考えることができます。前述のとおり、PTLCを応用して署名データを購入することができるため、DLCと組み合わせてオプション取引が実現できます。SuredbitsのNadav Kohen氏はこれをDLOC (Discreet Log Open Contracts)と呼んでいます。
オプションの売り手Aと買い手BがDLOCに入金するとします。通常のDLCでは特定条件下で両者の署名によって入金した資金を分配することができますが、AがBに特定条件下の署名を販売することでオプションの売買が成立します。(Aは自分自身で資金を出金できないが、Bは条件が好ましければ単独で出金できる)このような金融のプリミティブをPTLC版ライトニングネットワーク上で実現できます。
PTLCが解決しない問題点
大量にチャネルクローズが殺到したり、悪意あるノードがチャネルを詰まらせたりといったライトニングネットワークの弱点は解決しません。一方、中心的なノードやLSPによるデータ収集を難しくするなど、プライバシー面では比較的大きな改善だと言えるでしょう。(それでもタイミング等である程度推測できてしまうのは仕方ないかもしれません)
まとめ
・PTLCはHTLCに代わる、ライトニングネットワークの送金中継の仕組み・プリイメージとハッシュの代わりに、秘密鍵の加算を応用することでプライバシーの向上や新機能を実現・DLCでの活用によってトラストレスな相対オプション取引が可能になるかも
次の記事
読者になる
一緒に新しい世界を探求していきましょう。
ディスカッション