今週月曜日、突然Lndがビットコイン・ブロックチェーンの最先端を参照できなくなる事案が発生しました。今回は事件の概要、ライトニングノードへの影響、そして今後のライトニングノード運用方法への影響について見ていきます。
当問題はlnd v0.15.2へのアップデートで解決します。
事件の概要
とあるビットコインユーザーが、テストネットおよびメインネットにおいてTaprootの仕様例として998-of-999マルチシグトランザクションを配信しました。
TaprootのUTXOには使用時に所謂「通常の送金」と区別できないkeySpendという使用方法と、複数のスクリプトを埋め込むことができて使用したもののみ公開するscriptSpendという使用方法があります。今回はtaptreeに998-of-999マルチシグで使用できるスクリプトが含まれており、これを利用したscriptSpendトランザクションが発行されました。ちなみにTaprootにおけるscriptでは従来のBitcoin scriptにある10,000バイトまでというスクリプトサイズの上限は撤廃されています。
ところが、Lndが使用していたbtcd由来のライブラリの1つがこのスクリプトサイズ上限のTaproot対応を怠っていたため、上記のトランザクションを受信するとそのブロックを不正と判定してしまい、Lndから見たビットコイン・ブロックチェーンが進まない状態となりました。
もちろん、Lndのみのバグだったため、大半のビットコインユーザーは影響を受けていませんが、ライトニングノードのシェアで9割を超えるLndの不具合にライトニングネットワークには多少なり影響が出ました。
具体的な影響
ライトニングノードから見たチェーンが停止すると、次のような影響があります: