今週のニュースレターでは、Bitcoin Coreの旧バージョンに影響する修正済みの脆弱性について掲載しています。 また、Bitcoinのコンセンサスルールの変更に関する最近の議論や、 新しいリリースおよびリリース候補の発表、人気のBitcoinインフラストラクチャソフトウェアの注目すべき変更など 恒例のセクションも含まれています。

ニュース

  • Bitcoin Coreの旧バージョンに影響する脆弱性の開示: Antoine Poinsotは、Bitcoin Coreのバージョン29.0未満に影響をおよぼす脆弱性の発表を Bitcoin-Devメーリングリストに投稿しました。 この脆弱性はニュースレター #314に掲載されたもともとEugene Siegelによる 別の関連脆弱性とともに、責任を持って開示されました。 攻撃者は、過剰な数のノードアドレスの通知を送信することで、32-bitの識別子をオーバーフローさせ、 ノードのクラッシュを引き起こす可能性がありました。この問題は、 ピア毎に10秒に1回の更新に制限することで部分的に軽減されました。この制限により、 デフォルトの制限である約125個のピアにおいては、ノードが10年以上継続的に攻撃されない限り オーバーフローは発生しません。この脆弱性は、先月リリースされたBitcoin Core 29.0以降、 64-bit識別子を使用することで完全に修正されました。

コンセンサスの変更

Bitcoinのコンセンサスルールの変更に関する提案と議論をまとめた月次セクション

  • スクリプトで64-bit演算をサポートするためのBIPの提案: Chris Stewartは、Bitcoinの既存のopcodeを64-bitの数値で動作するようにアップグレードすることを提案するBIPのドラフトを Bitcoin-Devメーリングリストに投稿しました。これは、 彼の以前の研究(ニュースレター#285#290および#306参照) に基づくものです。以前の議論の一部とは異なり、新しい提案では、 現在Bitcoinで使われているものと同じcompactSizeデータ形式の数値を使用します。 Delving Bitcoinの2つのスレッドでも関連する議論が行われています。

  • Quineを介して再帰的なコベナンツを可能にするopcodeの提案: Bram Cohenは、 自己複製スクリプト(Quine)を介して再帰的なコベナンツの作成を可能にする シンプルなopcodeセットの提案をDelving Bitcoinに投稿しました。Cohenは、 これらのopcodeを使ってシンプルなVaultを作成する方法を説明し、 現在開発中のより高度なシステムについても言及しています。

  • OP_CTVOP_CSFSによるBitVMへのメリットの説明: Robin Linusは、提案中のOP_CTV opcodeと OP_CSFS opcodeがソフトフォークで Bitcoinに追加された場合に可能になるBitVMのいくつかの改善点について Delving Bitcoinに投稿しました。彼が説明したメリットには、 デメリットなしにオペレーターの数を増やすこと、 「トランザクションサイズを約10分の1に削減」(これによりワーストケースのコストが削減される)、 特定のコントラクトで非対話型のペグインを可能にすることなどが含まれます。

リリースとリリース候補

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

  • LND 0.19.0-beta.rc4は、この人気のLNノードのリリース候補です。 おそらくテストが必要な主な改善の1つは、協調クローズにおける新しいRBFベースの手数料引き上げです。

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

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

  • Bitcoin Core #32155は、内部マイナーを更新し、 nLockTimeフィールドに現在のブロック高から1を引いた値を設定し、 (タイムロックを適用するために)nSequenceフィールドに非ファイナル値を設定することで、 コインベーストランザクションをタイムロックします。 この組み込みマイナーは、通常mainnetでは使用されませんが、この更新により、 マイニングプールはBIP54で提案されているコンセンサスクリーンアップソフトフォークに備えて、 これらの変更を彼らのソフトウェアに早期に導入することが促進されます。 コインベーストランザクションのタイムロックは、 重複トランザクションの脆弱性を解決し、 コストのかかるBIP30チェックを不要にします。

  • Bitcoin Core #28710は、残っていたレガシーウォレットのコード、ドキュメントおよび関連テストを削除します。 これには、importmultisethdseedaddmultisigaddressimportaddressimportpubkeydumpwalletimportwalletnewkeypoolといったレガシー専用のRPCが含まれます。 レガシーウォレット削除の最終ステップとして、BerkeleyDBへの依存関係と関連関数も削除されます。 ただし、ウォレットをディスクリプターウォレットに移行するために、 最小限のレガシーコードと独立したBDBパーサー(ニュースレター#305参照)は残されます。

  • Core Lightning #8272は、オフラインのDNSシードによって引き起こされるコールブロック問題を解決するため、 接続デーモン(connectd)からのDNSシードのルックアップによるピア検出のフォールバックを無効にします。

  • LND #8330は、数値的な不安定性に対処するために、経路探索の二峰性確率モデルに小さな定数(1/c)を追加します。 丸め誤差により計算が失敗し、確率がゼロになるようなエッジケースでは、 この正規化によりモデルが一様分布に戻ることでフォールバックを提供します。 これにより、非常に大規模なチャネルや二峰性分布に適合しないチャネルを含むシナリオで発生する正規化バグが解決します。 さらに、モデルは不要な確率計算をスキップし、チャネル流動性の古い観測値や矛盾する履歴情報を自動的に修正するようになりました。

  • Rust Bitcoin #4458は、MtpAndHeight構造体を新しく追加されたBlockMtpと既存の BlockHeightの明示的なペアに置き換えました。これにより、 相対タイムロックにおけるブロック高とMTP(Median Time Past)値のより適切なモデリングが可能になります。 5億以上(おおよそ1985年以降)の値に制限されるlocktime::absolute::MedianTimePastとは異なり、 BlockMtpは任意の32-bitタイムスタンプを表現できます。 これは通常とは異なるタイムスタンプを持つチェーンなど、理論上のエッジケースに適しています。 このアップデートでは、BlockMtpIntervalも導入され、 BlockIntervalBlockHeightIntervalに名称変更されました。

  • BIPs #1848は、BIP345のステータスをWithdrawnに更新しました。 これは、提案者が提案していた OP_VAULT opcodeが、より汎用的なVaultの設計と 新しいタイプのコベナンツである OP_CHECKCONTRACTVERIFY(OP_CCV)に取って代わられたと考えているためです。

  • BIPs #1841は、Bitcoinの不可分な基本単位を「satoshi」と正式に定義することを提案する BIP172をマージしました。これは現在広く使われている用語を反映し、 アプリケーションやドキュメント全体での用語の標準化に役立ちます。

  • BIPs #1821は、「bitcoin」の定義を1億単位ではなく、 最小の不可分単位(一般的に1 satoshi)を表すものに再定義することを提案するBIP177をマージしました。 この提案は、用語を実際の基本単位に合わせることで、恣意的な小数点表記による混乱を軽減できると主張しています。

もっと知りたいですか?

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