今週のニュースレターでは、Bitcoin Coreのウォレット移行バグに関する警告と、 ArkプロトコルをLNチャネルファクトリーとして使用する方法に関する投稿の要約、 サイレントペイメントディスクリプターのBIPドラフトのリンクを掲載しています。 また、リリース候補や人気のBitcoin基盤ソフトウェアの注目すべき更新など、恒例のセクションも含まれています。

ニュース

  • Bitcoin Coreのウォレット移行バグ: Bitcoin Coreは、 バージョン30.0および30.1のレガシーウォレットの移行機能にバグがあることを発表しました。 Bitcoin Coreで名前のないウォレットを使用しているレガシーウォレットのユーザーが、 これまでディスクリプターウォレットに移行しておらず、これらのバージョンで移行を試みると、 移行が失敗した場合にウォレットディレクトリが削除され、資金が失われる可能性があります。 ウォレットユーザーは、バージョン30.2がリリースされるまで(以下のBitcoin Core 30.2rc1参照)、 GUIまたはRPCを使ってウォレットの移行を試みないでください。レガシーウォレットの移行以外の機能を使用するユーザーは、 これらのBitcoin Coreバージョンを通常通り引き続き利用できます。

  • チャネルファクトリーとしてのArkの利用: René Pickhardtは、Arkの最適なユースケースは、エンドユーザー向けの支払いソリューションではなく、 柔軟なチャネルファクトリーではないかという彼のアイディアについて Delving Bitcoinに投稿しました。Pickhardtのこれまでの研究は、 ルーティングチャネルバランスの調整を通じて ライトニングネットワークの支払いの成功率を最適化する手法に焦点を当ててきました。 ライトニングチャネルを含んだArk的な構造については、以前から議論されています(123)。

    Pickhardtのアイディアは、多くのチャネルオーナーがチャネルの流動性の変更(チャネルの開設や、 閉鎖、スプライシング)をArkのvTXO構造を使ってバッチ処理することで、 ライトニングネットワークの運用に必要なオンチェーンコストを大幅に削減できる可能性について焦点を当てています。 ただし、チャネルが失効してからそのArkバッチが完全に期限切れになるまでの間、追加の流動性オーバーヘッドが発生します。 Arkバッチを効率的なチャネルファクトリーとして使用することで、 LSPはより多くのエンドユーザーに効率的に流動性を提供できるようになり、 バッチに組み込まれた期限により、コストのかかる専用のオンチェーン強制閉鎖シーケンスなしで、 アイドル状態のチャネルから流動性を回収する能力が保証されます。ルーティングノードも、 個別のスプライシング操作ではなく、定期的なバッチを使ってチャネル間で流動性を移動させることで、 より効率的なチャネル管理操作の恩恵を受けることができます。

    Greg Sandersは、同様の可能性を調査しており、特にhArkを使って ライトニングチャネルの状態をあるバッチから別のバッチへ(ほぼ)オンラインで転送することを検討していると返信しました。 hArkには、CTVOP_TEMPLATEHASH、または同様のopcodeが必要です。

    Vincenzo Palazzoは、Arkチャネルファクトリーを実装した概念実証コードを返信の中で紹介しました。

  • サイレントペイメントディスクリプター用のBIPドラフト: Craig Rawは、 サイレントペイメント用の新しいトップレベルディスクリプタースクリプト式 sp()を定義するBIPドラフトの提案をBitcoin-Devメーリングリストに投稿しました。 Rawによると、このディスクリプターは、アウトプットディスクリプターのフレームワーク内で サイレントペイメントのアウトプットを表現する標準化された方法を提供し、 既存のディスクリプターベースのインフラを使用したウォレットの相互運用性とリカバリーを可能にします。

    sp()式は、同じ提案で定義されている2つの新しい鍵式のいずれかを引数とします:

    • spscan1q..: スキャン用の秘密鍵と使用公開鍵のbech32mエンコーディング。 文字qはサイレントペイメントのバージョン0を表します。

    • spspend1q..: スキャン用の秘密鍵と使用秘密鍵のbech32mエンコーディング。 文字qはサイレントペイメントのバージョン0を表します。

    オプションで、sp()式はBIRTHDAYを入力引数として取ることができます。 これはスキャンを開始すべきブロック高を表す正数として定義します( BIP352がマージされたブロック高である842579より大きくなければなりません)。 またウォレットで使用される0以上の整数であるLABELを引数として取ることができます。

    sp()によって生成されるアウトプットスクリプトは、BIP352で指定されているBIP341 Taprootアウトプットです。

リリースとリリース候補

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

  • Bitcoin Core 30.2rc1は、名前のないレガシーウォレットを移行する際に walletsディレクトリ全体が誤って削除される可能性があるバグ(上記参照)を修正した マイナーバージョンのリリース候補です(Bitcoin Core #34156)参照。

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

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

  • Bitcoin Core #34156およびBitcoin Core #34215は、 バージョン30.0および30.1でwalletsディレクトリ全体が誤って削除される可能性があったバグを修正します。 名前のないレガシーウォレットの移行が失敗した場合、クリーンアップロジックは、 新しく作成されたディスクリプターウォレットのディレクトリのみを削除するよう意図されていましたが、 名前のないウォレットはトップレベルのwalletsディレクトリに直接存在するため、ディレクトリ全体が削除されていました。 2つめのPRは、ウォレット名が空文字でダンプファイルにチェックサムエラーが含まれている場合の wallettoolcreatefromdumpコマンド(ニュースレター#45および #130参照)における同様の問題に対処しています。両方の修正により、 新しく作成されたウォレットファイルのみが削除されることが保証されます。

  • Bitcoin Core #34085は、別個のFixLinearization()関数を廃止し、 その機能をLinearize()に統合しました。TxGraphは、 クラスターの修正を最初の再リニアライゼーションまで延期するようになりました。 スパニング・フォレストリニアライゼーション(SFL)アルゴリズム(ニュースレター #386参照)は、 既存のリニアライゼーションを読み込む際に同様の作業を効果的に実行するため、 PostLinearizeの呼び出し回数が削減されます。これはクラスターmempoolプロジェクトの一部です。

  • Bitcoin Core #34197は、getpeerinfo RPCのレスポンスからstartingheightフィールドを削除し、 事実上非推奨としました。設定オプションdeprecatedrpc=startingheightを使用すると、 レスポンスにこのフィールドが保持されます。 startingheightは、接続開始時にピアが自己報告したチェーンの先頭の高さを示します。 この非推奨化は、ピアのVERSIONメッセージで報告されるスタート高が 信頼性に欠けるという考えに基づいています。次のメジャーバージョンで完全に削除される予定です。

  • Bitcoin Core #33135は、BIP68(相対タイムロック)およびBIP112 (OP_CSV)においてコンセンサス上の意味を持たないolder()値(タイムロックを指定)を含む miniscriptディスクリプターを使って importdescriptorsが呼び出された場合に警告を追加します。 ライトニングなどの一部のプロトコルは、追加データをエンコードするために意図的に非標準の値を使用しますが、 この慣行は、実際には最小限の遅延しかないものの、強力にタイムロックされているように見える可能性があるため、 リスクがあります。

  • LDK #4213は、ブラインドパスをデフォルトにしました。 オファーコンテキストではないブラインドパスを構築する場合、 非コンパクトなブラインドパスを使用し、4ホップ(受信者を含む)にパディングすることでプライバシーを最大化することを目指しています。 ブラインドパスがオファー用の場合、パディングを減らしコンパクトなブラインドパスの構築を試みることで、バイトサイズを最小化します。

  • Eclair #3217は、実験的なHTLCエンドースメントシグナルに代わって、 HTLC用のアカウンタビリティシグナルを追加します。これは、 チャネルジャミングの軽減策に関するBOLTs #1280の仕様の更新に合わせたものです。 新しい提案では、このシグナルを希少なリソースに対するアカウンタビリティフラグとして扱い、 保護されたHTLCキャパシティが使用されたこと、および下流のピアがタイムリーな解決に対して責任を負えることを示します。

  • LND #10367は、提案中のBOLTs #1280に基づいて、 BLIPs #67の最新提案に合わせてBLIP4の実験的なendorsementシグナルを accountableに名称変更しました。

  • Rust Bitcoin #5450は、コンセンサスルールで規定されているように、 null prevoutを含む非コインベーストランザクションを拒否するバリデーションをトランザクションデコーダーに追加しました。

  • Rust Bitcoin #5434は、scriptSigの長さが2〜100 byteの範囲外のコインベーストランザクションを拒否する バリデーションをトランザクションデコーダーに追加しました。

もっと知りたいですか?

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