記事を購入しました。 w21dwhhcq
earthdiver
(;;)
フォローしているユーザーはまだいません
秘密鍵の保存だけで👌 ElectrumのRecoverable channelsとは
以前の記事で、LNノードを運用する上でのバックアップについて紹介しました。そこでは、オンチェーン資金のバックアップは秘密鍵の保管を、オフチェーン資金のバックアップでは、UmbrelやmyNodeなどLNDを使ってる場合はStatic Channel Backupと呼ばれるファイルをチャネルの開設ごとにバックアップする必要がありました。オンチェーン資金のバックアップは一度限りで良いですが、LNのチャネル上にあるオフチェーン資金は秘密鍵とは別にチャネル開設ごとに取得する必要があるので、結構手間がかかります。できれば秘密鍵に集約したいですよね。そんな悩みを解消してくれるのがElectrumのRecoverable channelsです。 Electrumはビットコインウォレットの老舗ですが、去年ごろからライトニングネットワークをサポートしました。そのElectrumが実装したRecoverable channelsとは、チャネルバックアップをチャネル開設時のトランザクションに書き込むというものです。こうすることで、ユーザーはチャネルバックアップをする必要はなく、秘密鍵さえ保管しておけばいいのです。もしLNノードやウォレットが壊れたりしたら、秘密鍵からオンチェーン資金を復旧し、また、オフチェーン資金の復旧に必要なチャネルバックアップは、ブロックチェーンから読み取り、その情報を使って復旧することができます。 Recoverable channelsの欠点は、チャネル開設時のデータサイズが大きくなるので手数料が通常以上にかかるります。また、ブロックチェーンに書き込んでいるのでチャネル開設時の相手にチャネルバックアップをしていることが知られてしまいます(バックアップデータ自体は暗号化されているので内容は分からない)。以前の記事でも触れましたが、このStatic Channel Backupはある一定の信頼があるので、もし相手にSCBから復旧しようしていることが知られると不正をされる場合があります。とは言え、実践的にはこのような不正はほぼありえないと思いますし、ユーザーは秘密鍵の保管だけで良いので、よりLNが使いやすくなりそうです。 ElectrumのRecoverable channelsについては以下のリリースノートおよびコードベースを参照してみください。 <iframe allowfullscreen="allowfullscreen" allow="autoplay *; encrypted-media *" src="//cdn.iframe.ly/
LNノードのバックアップ&リストア考察
Lightning Networkのノード運用をする場合、特に重要なのがバックアップです。オンチェーン上のビットコインのバックアップは秘密鍵を保管しておくだけで良いですが、LNのノード運用をする場合は少し特殊です。LNノードのバックアップは大きく2つに区別することができます。それは①オンチェーン資金のバックアップと②オフチェーン資金のバックアップです。①のバックアップは秘密鍵の保管をするだけで問題ありません。②のオフチェーン資金のバックアップとは、チャネルのバックアップです。LN上のチャネルは送受信がある度にチャネル状態が更新されていくので、その都度バックアップをとる必要があります。もし古いチャネル状態で相手と通信をすると、不正な状態と見なされ、最悪の場合、資金を失うかもしれません。 data loss protection そのような場合を考慮して、LNの仕様書では data loss protection (DLP)と呼ばれる安全装置が付いています(02-peer-protocol)。これは、もしアリスのチャネル状態が5で、ボブのチャネル状態が6だった場合、アリスのチャネルは古い状態なので、ボブにチャネルを強制閉鎖することを依頼できる仕組みです。この依頼を受けたボブが取れる行動は、(a)最新のチャネル状態6で強制閉鎖するか、(b)古いチャネル状態、例えば自分の残高が多くなるようなチャネル状態まで遡り、そのチャネル状態で強制閉鎖することが考えられます。ボブが(b)の選択をしても、もしアリスが嘘を付いていて最新のチャネル状態までデータを保持していると、ボブはペナルティとして、アリスに全額没収されてしまいます。そのため、ボブは(a)の正直な選択を取ったほうが無難なのです。これが data loss protection と呼ばれる仕組みで、ゲーム理論的な側面があります。この仕様は各LNソフトウェアに実装されています。 またLNDでは、static channel backup(SCB)と呼ばれるチャネル開設がある度に取得するバックアップがあります。これは、最初のチャネル状態だけをバックアップして、リストア時にSCBからチャネル状態を復元しようとするとチャネル状態が古いので、DLPによってチャネルの強制閉鎖を相手に依頼するというものです。このSCBはLNDのみ実装されており、c-lightningやEclair coreには実装されていません。LNのバックアップでは秘密鍵以外にも②のチャネルのバックアップも必要でした。一見するとこのSCBは必須な気がしますが(実際コミュニティでも議論されている<a href="https://github.c