用語集 / ライトニングとレイヤー2
ウォッチタワー
- ウォッチタワーとは?
- ウォッチタワーとは、ライトニングノードがオフラインの間にブロックチェーンを監視するよう依頼または有料で任せるサービスであり、古い残高を公開したチャネルの相手方を罰する準備ができています。
ライトニングのチャネルが誠実に保たれるのは、相手側が古い状態をブロードキャストした場合に、どちらか一方がチャネル残高の全額を取得できるからですが、それは誰かが間に合ううちに気づいた場合に限られます。ウォッチタワーはその「誰か」です。ウォッチタワーは16バイトのヒントと、該当するトランザクションがオンチェーンに現れるまで読めない暗号化された塊を保持します。お使いのノードがスリープするノートパソコン上にあるなら、ウォッチタワーがあったほうがよいでしょう。
仕組み
ウォッチタワーは鍵を保持することはなく、何か問題が起きるまで、どのチャネルを保護しているかを知ることもありません。
チャネル残高が変わるたびに、お使いのノードはこれから取り消す状態に対する罰則トランザクションを構築し、それを暗号化して、タワーに2つを渡します。1つはヒントで、取り消されるコミットメントトランザクションのtxidの先頭16バイトです。もう1つは暗号文です。タワーは固定サイズの塊を保存し、すべてのブロックを走査して、ヒントのいずれかで始まるtxidを持つトランザクションを探します。それだけです。一致が見つかると、タワーはその同じtxidから復号鍵を導き出し、スイープ命令を展開し、自分では何も新たに署名せず、完成した罰則トランザクションをブロードキャストします。回収されたコインは、お使いのウォレットがあらかじめ選んだアドレスに届きます。
ウォッチタワーに頼る前に知っておくべき制限が2つあります。lndでは、タワーセッションはクライアントが別のセッションを開くまで最大1024件のバックアップを受け付け、justiceトランザクションはデフォルトの手数料率10 sat/byteで組み立てられ、これはwtclient.sweep-fee-rate設定で引き上げることができます。2つ目の制限は対象範囲です。lndのタワーは取り消されたコミットメントのto_localとto_remoteのアウトプットをバックアップしますが、まだ処理中の支払いのアウトプットはバックアップしません。そのため、タワーを契約してもエクスポージャーは縮小するだけで、なくなるわけではありません。
どこで目にするか
ウォッチタワーはノードソフトウェアの設定に現れ、ほとんどの人がサトシを送るために使うアプリには現れません。
lndを運用している場合、公開鍵とホストを指定してタワーを追加し、ポート9911(これがデフォルトです)で友人のために1台を運用することもできます。導入されるタワーはすべて利他主義のタワーです。プロトコルの有料版は仕様が定められたものの完成しなかったため、取り分を得る代わりに、回収したすべてからマイニング手数料を差し引いて返します。カストディ型のライトニングアプリはこれを一切公開しておらず、ほとんどのスマートフォンウォレットも同様です。これらのチャネルは、自社のマシンがスリープしないプロバイダーによって管理されているからです。
主に購入して保有したい人にとっての正直な答えは、おそらくウォッチタワーは必要ないということです。必要になるのは、ルーティングノードを運用している場合、または意味のある残高をチャネルに置いたコンピューターを何週間も引き出しにしまっておく場合です。ライトニングがコーヒー代を保持するスマートフォンアプリにすぎないなら、想定しておくべき損失は、不正を働く相手方ではなく、スマートフォンを川に落とすことです。
ウォッチタワーvsルーティングノード
ウォッチタワーはチャネルを防御し、ルーティングノードは手数料を得て他人の支払いを転送します。この2つの役割はマシン以外に何も共有しません。ルーティングノードがオンラインを保つのは、オフラインでいると収入を失うからであり、本格的なルーティング運用者がウォッチタワーになるのではなく、ウォッチタワーを契約するのはまさにそのためです。両方を1台のマシンで実行することもできます。両者は正反対の問いに答えます。どうすれば稼ぎ続けられるのか、そして見ていない間にどうすれば盗まれずに済むのか、という問いです。