Lightning Labsを退職した技術者のJoost Jagerがつぶやいたライトニングネットワークの脆弱性と、彼が作っているCircuit Breakerという対策案が話題になっています。その脆弱性自体は2月にこちらで解説させていただいたDoS攻撃であり、いまさらLNをdisる口実にしている人たちも滑稽なのですが、2月の時点では「構想」でしかなかった対策案の原始的な実装が出てきている点が特筆すべきです。
今日はJoost Jagerの対策案で「ライトニングネットワークのファイアウォール」とも言えるCircuit Breakerについて解説します。
2月に解説したDoS攻撃
まずは、今回問題となっている理論上の攻撃について簡潔におさらいしましょう。詳しく知りたい方は2月のこの記事をご覧ください。
簡単に言うと、ライトニングノードはHTLCという仕組みを使って支払いのバケツリレーを行うのですが、支払いの受け取り手は一定期間「未決済」の状態を保つことができます。支払いが未決済の間は、途中のライトニングノードは全て未決済のHTLCを保持しているのですが、チャネルごとに同時に最大483件しか未決済のHTLCを保持できません。
大量の未決済の取引を中継してしまってこの数字がいっぱいになると、そのチャネルはどれだけ残高があってもHTLCの期限が切れるか決済されるまで新しい送金を中継することができなくなる…それが今回問題にされている攻撃です。
期限切れ直前に決済されて、代わりにまた新しい未決済の取引を中継させられてしまうと、わずかな手数料は入りますが無期限にチャネルを無力化されてしまいます。