今週のニュースレターでは、LNの冗長的な過払いを強化するための提案と、 フルノードに対する潜在的な分断攻撃に関する議論のリンクを掲載しています。また、 サービスとクライアントソフトウェアの最近のアップデートや、 人気のBitcoinインフラストラクチャソフトウェアの注目すべき更新など、 恒例のセクションも含まれています。

ニュース

  • LSPが資金提供する冗長的な過払い: 開発者のZmnSCPxjは、 LSPが冗長的な過払いに必要な追加資金(流動性)を提供できるようにする提案を Delving Bitcoinに投稿しました。冗長的な過払いの元々の提案では、 アリスがゼッドに支払う際に、複数の経路を使って複数の支払いを送信し、 ゼッドはその内1つの支払いのみを請求できるようにします。残りの支払いはアリスに返金されます。 このアプローチの利点は、他の支払いの試行がネットワークを通過中であっても、 ゼッドへの支払いの試行が1つでも到着すれば成功できることで、LN上での支払い速度が向上することです。

    このアプローチの欠点は、アリスが冗長的な支払いをするための追加資本(流動性)を持っている必要があること、 冗長的な過払いが完了するまでアリスはオンラインであり続ける必要があること、 そしてスタックした支払いがある場合、その支払いの試行がタイムアウトするまで(一般的な設定では最大2週間) アリスがそのお金を使用できなくなることです。

    ZmnSCPxjの提案では、アリスは実際の支払額(手数料を含む)のみを支払い、 LSP(Lightning service provider)が冗長な支払いの送信に必要な流動性を提供します。 これにより、アリスは一時的にも、タイムアウトまでも追加の流動性を確保することなく、 冗長的な過払いによるスピードメリットを得られます。また、 LSPはアリスがオフラインの場合でも支払いを確定できるため、 アリスの接続状態が悪くても支払いを完了できます。

    この新しい提案の欠点は、アリスがLSPに対してある程度のプライバシーを失うこと、 そして冗長的な過払いのサポートに加えて、LNプロトコルに複数の変更が必要になることです。

  • BGPインターセプションを使用した分断とエクリプス攻撃: 開発者のcedarcticは、 BGP(Border Gateway Protocol)の欠陥を利用してフルノードがピアに接続できないようにする方法について Delving Bitcoinに投稿しました。これはネットワークの分断や エクリプス攻撃の実行に使用される可能性があります。 cedarcticによっていくつかの緩和策が説明され、議論に参加した他の開発者たちも 他の緩和策や攻撃の使用を監視する方法について議論しました。

サービスとクライアントソフトウェアの変更

この毎月の特集では、Bitcoinのウォレットやサービスの興味深いアップデートを取り上げています。

  • 準備金のゼロ知識証明ツール: Zkpoorは、所有者のアドレスやUTXOを明かすことなく、 STARK証明を使用して準備金の証明(Proof of Reserves)を生成します。

  • 代替サブマリンスワッププロトコルの概念実証: Papa Swapプロトコルの概念実証は、 2つのトランザクションではなく1つのトランザクションでサブマリンスワップ機能を実現します。

リリースとリリース候補

人気のBitcoinインフラストラクチャプロジェクトの新しいリリースとリリース候補。 新しいリリースにアップグレードしたり、リリース候補のテストを支援することを検討してください。

  • Bitcoin Core 30.0rc1は、この完全な検証ノードソフトウェアの次期メジャーバージョンのリリース候補です。

  • BDK Chain 0.23.2は、ウォレットアプリケーションを構築するためのこのライブラリのリリースで、 競合トランザクション処理の改善や、BIP158のフィルタリング機能を強化するためのFilterIter APIの再設計、 アンカーとブロックの再編成管理の改善が導入されています。

注目すべきコードとドキュメントの変更

最近のBitcoin CoreCore LightningEclairLDKLNDlibsecp256k1Hardware Wallet Interface (HWI)Rust BitcoinBTCPay ServerBDKBitcoin Improvement Proposals(BIP)Lightning BOLTsBitcoin InquisitionおよびBINANAsの注目すべき変更点。

  • Bitcoin Core #33268は、トランザクションインプットの合計が0 satを超える必要があるという要件を削除することで、 トランザクションがユーザーのウォレットの一部として認識される方法を変更します。 トランザクションがウォレットから少なくとも1つのアウトプットを使用する限り、 そのトランザクションはウォレットの一部として認識されます。これにより、 P2Aエフェメラルアンカーの使用など、 ゼロ値のインプットを持つトランザクションがユーザーのトランザクションリストに表示されるようになります。

  • Eclair #3157は、再接続時にリモートコミットメントトランザクションに署名してブロードキャストする方法を更新します。 以前署名されたコミットメントを再送信する代わりに、channel_reestablishで取得した最新のナンスで再署名します。 Simple Taproot Channelで、決定論的ナンスを使用しないピアは、 再接続時に新しいナンスを持つことになり、以前のコミットメントの署名を無効にします。

  • LND #9975は、BOLTs #1276で追加されたテストベクターに従って、 BOLT11インボイスにP2TRフォールバックオンチェーンアドレスのサポートを追加します。 BOLT11インボイスには、オプションのfフィールドがあり、 LN経由で支払いが完了できない場合にフォールバック用のオンチェーンアドレスを含めることができます。

  • LND #9677は、PendingChannels RPCコマンドで返されるPendingChannel応答メッセージに、 ConfirmationsUntilActiveConfirmationHeightフィールドを追加します。 これらのフィールドは、チャネルのアクティベーションに必要な承認回数と、 ファンディングトランザクションが承認されたブロック高をユーザーに通知します。

  • LDK #4045は、LSPノードによる非同期支払いの受信を実装します。 これは、頻繁にオフラインになる受信者に代わって着信HTLCを受け入れ、保持し、 後でシグナルが通知された際に受信者にリリースすることで実現されます。 このPRでは、実験的なHtlcHold機能ビットを導入し、UpdateAddHtlcに新しいhold_htlcを追加し、 リリースパスを定義します。

  • LDK #4049は、LSPノードからオンラインの受信者へのBOLT12インボイス要求の転送を実装します。 受信者は新しいインボイスで返信します。受信者がオフラインの場合、 LSPノードは非同期支払い用のサーバーサイドロジック実装で有効になった( ニュースレター #363参照)フォールバックインボイスで返信できます。

  • BDK #1582は、CheckPointLocalChainChangeSetおよびspk_client型をジェネリックにリファクタリングし、 ブロックハッシュに固定されていたペイロードをTペイロードとして扱うようにしました。 これにより、bdk_electrumはチェックポイントにブロックヘッダー全体を保存できるようになり、 ブロックヘッダーの再ダウンロードが回避され、マークルプルーフとMTP(Median Time Past)がキャッシュできるようになります。

  • BDK #2000は、リファクタリングされたFilterIter構造体(ニュースレター #339参照)にブロックの再編成処理を追加します。 このPRでは、フローを複数のメソッドに分割するのではなく、 すべてをnext()関数に結びつけることでタイミングリスクを回避します。 ブロックが古くないこと、BDKが有効なチェーン上にあることを確認するために、 各ブロック高でチェックポイントが発行されます。FilterIterは、 BIP158で定義されたコンパクトブロックフィルターを使用して、 すべてのブロックをスキャンし、scriptPubkeyのリストに関連するトランザクションを含むブロックを取得します。

  • BDK #2028は、トランザクションがRBFによって置き換えられた後、 mempoolから除外された日時を示すlast_evictedタイムスタンプフィールドをTxNode構造体に追加します。 このPRではまた、新しいフィールドに置き換わるため、 TxGraph::get_last_evictedメソッド(ニュースレター#346参照)が削除されます。

もっと知りたいですか?

このニュースレターで言及されたトピックについてもっと議論したい方は、 16:30 UTCに Riverside.fmで毎週配信されているBitcoin Optech Recapにご参加ください。 この議論は録画もされ、ポッドキャストページからご覧いただけます。