今週のショートニュースレターは、Bitcoin Core PR Review Clubのミーティングの概要と、 Rust Bitcoinのアップデートを掲載しています。

ニュース

今週は、特に大きなニュースはありませんでした。 OP_CHECKTEMPLATEVERIFYSIGHASH_ANYPREVOUTなど、 以前取り上げたトピックには多くのコメントが寄せられましたが、 その多くは技術的なものでなかったり、広く関連するとは思えない細かい内容でした。 このニュースレターの編集中に、開発者向けのメーリングリストにいくつかの興味深い投稿があったので、 来週詳しくご紹介します。

Bitcoin Core PR Review Club

この毎月のセクションでは、最近のBitcoin Core PR Review Clubミーティングを要約し、 重要な質問と回答のいくつかに焦点を当てます。 以下の質問をクリックしてミーティングでの回答の要約を確認してください。

Improve Indices on pruned nodes via prune blockersは、Fabian JahrによるPRで、 ブロックストレージからブロックをプルーニングしても安全であることを判断するための新しい方法を導入しています。 この新しい方法は、プルーニングノードがCoinstatsインデックスを維持することを可能にし、 検証モジュールのインデックス関連のコードへの依存性を削除します。

  • 現在Bitcoin Coreにどのようなインデックスが存在し、それらは何をするのですか?

    ノードは、ディスクからデータを効率的に取得するために、最大3つのオプションのインデックスを維持することができます。 トランザクションインデックス(-txindex)は、トランザクションハッシュをトランザクションのあるブロックにマッピングします。 ブロックフィルターインデックス(-blockfilterindex)は、各ブロックのBIP157ブロックフィルターのインデックスを作成します。 coin statsインデックス(-coinstatsindex)は、UTXOセットの統計情報を格納します。 

  • 循環依存性とは何ですか?なぜ可能な限り避けた方がいいのですか?

    2つのコードモジュール間の循環依存性は、両方が一方なしには使用できない場合に存在します。 循環依存性はセキュリティ上の問題ではありませんが、コードの構成が良くないことを意味し、 特定のモジュールや機能を分離して構築、テストすることが難しくなるため、開発の妨げになります。 

  • このコミットで導入されたプルーニングブロッカーはどのように動作しますか?

    PRは’prune locks’のリストを導入します。これは各インデックスに対して保持しなければならない最も古いブロック高を表します。 CChainState::FlushStateToDiskでは、ノードがどのブロックをプルーニングするか決定する際に、 その高さより高いブロックのプルーニングを回避します。インデックスが最適なブロックインデックスのビューを更新する度に、 プルーニングブロックも更新されます。 

  • このプルーニングのアプローチはこれまでのものと比べてどんな利点とコストがあるのでしょうか?

    これまでは、CChainState::FlushStateToDiskのロジックは、 プルーニングをやめるブロックを知るために、インデックスにその最高の高さを照会していました。 つまりインデックスと検証ロジックは互いに依存していました。 現在は、プルーニングロックは、積極的に計算されるため、 より頻繁に計算される可能性がありますが、インデックスを照会するための検証は必要なくなりました。 

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

今週のBitcoin CoreCore LightningEclairLDKLNDlibsecp256k1Hardware Wallet Interface (HWI)Rust BitcoinBTCPay ServerBDKBitcoin Improvement Proposals(BIP)、およびLightning BOLTsの注目すべき変更点。

  • Rust Bitcoin #716は、単位やその他のユーザー向けの量のための設定可能な表示タイプであるamount::Displayを追加しました。 このパッチは、デフォルトで数値のすべての表現を最小の幅に縮小し、 それによってBIP21 URIが不必要に長くなったり、 よくQRコードを必要以上に大きくしたりスキャンしにくくする原因となっていた余分なゼロの使用が削減されます。