今週のニュースレターでは、Bitcoin Coreにおけるインクリメンタルミューテーションテストに関する検討と、 新しいBIPプロセスの導入について掲載しています。また、新しいリリースやリリース候補の発表、 人気のBitcoin基盤プロジェクトにおける注目すべき更新など恒例のセクションも含まれています。

ニュース

  • Bitcoin Coreにおけるインクリメンタルミューテーションテストの概要: Bruno Garciaは、 Bitcoin Coreのミューテーションテストを改善する彼の現在の取り組みについてDelving Bitcoinに投稿しました。 ミューテーションテストは、ミュータントと呼ばれるシステムバグを意図的にコードベースに挿入することで、 開発者がテストの有効性を評価する手法です。テストが失敗した場合、ミュータントは「killed(強制終了)」とみなされ、 テストがその欠陥を検出できることを示します。そうでない場合、ミュータントは生存し、 テストに潜在的な問題があることが明らかになります。

    ミューテーションテストは重要な成果をもたらしており、報告されたミュータントの一部に対処するためのPRが作成されています。 しかし、このプロセスはリソースを大量に消費し、コードベースのサブセットに対してでも完了までに30時間以上かかります。 そのため、Garciaは現在インクリメンタルミューテーションテストに注力しています。これは、 前回の分析以降に変更されたコードベースのパーツのみに焦点を当て、ミューテーションテストを段階的に適用する手法です。 このアプローチはより高速ですが、それでも時間がかかりすぎます。

    そこでGarciaは、Googleの論文に従って、Bitcoin Coreのインクリメンタルミューテーションテストの効率を改善する取り組みを進めています。 このアプローチは以下の原則に基づいています:

    • 元のプログラムとは構文は異なるが意味的には同一であるような悪いミュータントを避ける。 つまり、入力に関わらず常に同じ動作をするミュータントを避ける。

    • 開発者からのフィードバックを収集してミュータントの生成を改良し、ミュータントが役に立たない結果をもたらす傾向がある場所を把握する

    • 開発者に情報価値の低いミュータントを大量に提供しないように、killされなかったミュータントは限られた数のみ報告する(Googleの研究によると7個)

    Garciaはこのアプローチを8つの異なるPRでテストし、フィードバックを収集し、ミュータントに対処するための変更を提案しました。

    最後に、GarciaはBitcoin Coreコントリビューターに対して、ミューテーションテストの実行を希望する場合は 彼らのPRで自分に通知するよう呼びかけ、また提供されたミュータントに関するフィードバックを報告するよう依頼しました。

  • BIPプロセスの更新: メーリングリストで2ヶ月以上の議論と 提案へのさらなる修正を経て、今週BIP3がラフコンセンサスに達したことが明らかになりました。 水曜日のBIP3の展開により、BIPプロセスのガイドラインとしてBIP2に取って代わりました。 BIPプロセスの大部分は変更されていませんが、BIP3はいくつかの簡素化と改善を導入しています。

    その他の変更点として、コメントシステムが廃止され、BIPステータスの数が9つ( Draft、Proposed、Active、Final、Rejected、Deferred、Withdrawn、Replaced、Obsolete)から 4つ(Draft、Complete、Deployed、Closed)に削減され、プリアンブルヘッダーが更新され、 Standards TrackタイプがSpecificationタイプに置き換えられ、 これまでBIPエディターに求められていた判断の一部がBIP作成者または読者に委ねられるようになりました。

    すべての変更の概要はBIP3で確認できます。

リリースとリリース候補

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

  • Bitcoin Core 30.2は、名前のないレガシーウォレットを移行する際に walletsディレクトリ全体が誤って削除される可能性があるバグ(ニュースレター#387参照)を修正したメンテナンスリリースです。 他にもいくつかの改善と修正が含まれています。詳細についてはリリースノートをご覧ください。

  • BTCPay Server 2.3.3は、この自己ホスト型ペイメントソリューションのマイナーリリースで、 GreenfieldAPI(下記参照)を介したコールドウォレットトランザクションのサポートが導入され、 CoinGeckoベースの為替レートソースが削除され、いくつかのバグ修正が含まれています。

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

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

  • Bitcoin Core #33819は、Miningインターフェース(ニュースレター #310参照)に 新しいgetCoinbaseTx()メソッドを導入し、クライアントがコインベーストランザクションを構築するために必要な すべてのフィールドを含む構造体を返します。既存のgetCoinbaseTx()は、クライアントがパースして操作する必要がある シリアライズされたダミートランザクションを返していましたが、getCoinbaseRawTx()に名称変更され、 getCoinbaseCommitment()およびgetWitnessCommitmentIndex()とともに非推奨になりました。

  • Bitcoin Core #29415は、sendrawtransaction RPCを使用する際に、 短命なTorまたはI2P接続を介してIPv4/IPv6ピアに トランザクションをブロードキャストするための新しいprivatebroadcast bool値オプションを追加しました。 このアプローチは、IPアドレスを秘匿し、トランザクションごとに個別の接続を使用してリンク可能性を防ぐことで、 トランザクション発信者のプライバシーを保護します。

  • Core Lightning #8830は、hsmtoolユーティリティ(ニュースレター #73参照)に getsecretコマンドを追加しました。これは既存のgetsecretcodexコマンドを置き換え、 v25.12で導入された変更(ニュースレター #383参照)以降に作成されたノードのリカバリーをサポートします。 新しいコマンドは、新しいノードの場合は指定されたhsm_secretファイルに対するBIP39ニーモニックシードフレーズを出力し、 レガシーノードの場合はCodex32文字列を出力する機能を維持します。recoverプラグインは、 ニーモニックを受け入れるよう更新されました。

  • Eclair #3233は、ブロックデータが不十分なためにBitcoin Coreがtestnet3または testnet4で手数料を推定できない場合に、設定されたデフォルトの手数料率を使用するようになりました。 デフォルトの手数料率は、現在の値により適合するよう更新されました。

  • Eclair #3237は、チャネルライフサイクルイベントを、 スプライシングと互換性がありゼロ承認と一貫性のあるものに再構築しました。 これにより以下が追加されました: channel-confirmedはファンディングトランザクションまたはスプライシングが承認されたことを通知します。 channel-readyはチャネルでの支払いが可能な状態になったことを通知します。 channel-openedイベントは削除されました。

  • LDK #4232は、BLIPs #67およびBOLTs #1280で提案された HTLCエンドースメントに代わる実験的なaccountableシグナルのサポートを追加しました。 LDKは、自身の支払いとシグナルのない転送にゼロ値のシグナルを設定し、 存在する場合は受信したaccountable値を送信する転送にコピーするようになりました。 これは、EclairおよびLNDでの同様の変更(ニュースレター #387参照)に続くものです。

  • LND #10296は、EstimateFeeRPCコマンドリクエストにinputsフィールドを追加し、 ウォレットの自動選択させる代わりに特定のインプットを使用したトランザクションの 手数料推定を取得できるようになりました。

  • BTCPay Server #7068は、GreenfieldAPIを介したコールドウォレットトランザクションのサポートを追加しました。 これにより、ユーザーは署名されていないPSBTを生成し、 新しいエンドポイントを通じて外部で署名されたトランザクションをブロードキャストできます。 この機能は自動化された環境でより高いセキュリティを提供し、より厳格な規制コンプライアンス要件を満たす設定を可能にします。

  • BIPs #1982は、Pay-to-Anchor (P2A)標準アウトプットタイプを規定する BIP433を追加し、このアウトプットタイプを使った支払いを標準にしました。

もっと知りたいですか?

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