|
| 1 | +--- |
| 2 | +title: 'Bitcoin Optech Newsletter #349' |
| 3 | +permalink: /ja/newsletters/2025/04/11/ |
| 4 | +name: 2025-04-11-newsletter-ja |
| 5 | +slug: 2025-04-11-newsletter-ja |
| 6 | +type: newsletter |
| 7 | +layout: newsletter |
| 8 | +lang: ja |
| 9 | +--- |
| 10 | +今週のニュースレターでは、Bitcoin Coreの初期ブロックダウンロードを高速化する提案を掲載しています。 |
| 11 | +概念実証の実装では、Bitcoin Coreのデフォルト設定と比較して約5倍の高速化が見られています。 |
| 12 | +また、Bitcoin Core PR Review Clubミーティングの要約や、 |
| 13 | +新しいリリースとリリース候補の発表、人気のBitcoinインフラストラクチャプロジェクトの注目すべき変更など、 |
| 14 | +恒例のセクションも含まれています。 |
| 15 | + |
| 16 | +## ニュース |
| 17 | + |
| 18 | +- **SwiftSyncによる初期ブロックダウンロードの高速化:** Sebastian Falbesonerが |
| 19 | + _SwiftSync_ のサンプル実装とパフォーマンス結果をDelving Bitcoinに[投稿しました][falbesoner ss1]。 |
| 20 | + SwiftSyncは、Ruben Somsenが最近のBitcoin Core開発者ミーティングで[提案し][somsen ssgist]、 |
| 21 | + その後メーリングリストに[投稿された][somsen ssml]アイディアです。 |
| 22 | + この記事の執筆時点で、スレッドに投稿された[最新の結果では][falbesoner ss2]、 |
| 23 | + Bitcoin CoreのIBDのデフォルト設定([assumevalid][]は使用するが[assumeUTXO][topic assumeutxo]は使用しない)と比較して、 |
| 24 | + 初期ブロックダウンロード(IBD)が5.28倍高速化され、初期同期時間が約41時間から約8時間に短縮されました。 |
| 25 | + |
| 26 | + SwiftSyncを使用する前に、ノードを最新のブロックまで同期済みの人が、 |
| 27 | + そのブロックまでのUTXOセットに含まれるトランザクションアウトプット(つまり未使用のアウトプット)を示すヒントファイルを作成します。 |
| 28 | + これは、現在のUTXOセットサイズに合わせて数百MBに効率的にエンコードできます。 |
| 29 | + ヒントファイルには、どのブロックで生成されたかも記載されており、これを |
| 30 | + _ターミナルSwiftSyncブロック_ と呼びます。 |
| 31 | + |
| 32 | + SwiftSyncを実行するユーザーはヒントファイルをダウンロードし、 |
| 33 | + ターミナルSwiftSyncブロックより前の各ブロックを処理する際にそれを使用します。 |
| 34 | + ヒントファイルで、ターミナルSwiftSyncブロックに到達した際にアウトプットがUTXOセットに残ることが示されている場合のみ、 |
| 35 | + アウトプットをUTXOデータベースに保存します。これにより、 |
| 36 | + IBD中にUTXOデータベースに追加され、その後削除されるエントリーの数が大幅に削減されます。 |
| 37 | + |
| 38 | + ヒントファイルが正しいことを確認するために、UTXOデータベースに保存されていないすべてのアウトプットは、 |
| 39 | + [暗号学的アキュムレーター][cryptographic accumulator]に追加されます。 |
| 40 | + 使用済みのすべてのアウトプットは、アキュムレーターから削除されます。 |
| 41 | + ノードがターミナルSwiftSyncブロックに到達すると、アキュムレーターが空であることを確認します。 |
| 42 | + つまり、確認したすべてのアウトプットは後で使用されたことを意味します。 |
| 43 | + これが失敗した場合、ヒントファイルが正しくなかったことを意味し、 |
| 44 | + SwiftSyncを使用せずにIBDを最初からやり直す必要があります。 |
| 45 | + このように、ユーザーはヒントファイルの作成者を信頼する必要はありません。 |
| 46 | + 悪意あるファイルによってUTXOの状態が不正確になることはなく、 |
| 47 | + ユーザーのコンピューティングリソースを数時間浪費するだけで済みますね。 |
| 48 | + |
| 49 | + SwiftSyncの未実装の追加機能として、IBD中のブロックの並列検証が挙げられます。 |
| 50 | + これは、assumevalidが古いブロックのスクリプトをチェックしないこと、 |
| 51 | + ターミナルSwiftSyncブロックより前のエントリーがUTXOデータベースから削除されないこと、 |
| 52 | + そして使用されるアキュムレーターが追加(作成)および削除(使用)されたアウトプットの最終的な結果のみを追跡することから可能です。 |
| 53 | + これにより、ターミナルSwiftSyncブロックより前のブロック間の依存関係が排除されます。 |
| 54 | + IBD中の並列検証は、同様の理由から[Utreexo][topic utreexo]の機能でも採用されています。 |
| 55 | + |
| 56 | + 議論では提案のいくつかの側面が検討されました。Falbesonerの元の実装では、 |
| 57 | + [一般化された誕生日攻撃][generalized birthday attack]への耐性があることが[示されている][wuille muhash] |
| 58 | + [MuHash][]アキュムレーター([ニュースレター #123][news123 muhash]参照)が使用されていました。 |
| 59 | + Somsenは、より高速な代替アプローチについて[説明しました][somsen ss1]。 |
| 60 | + Falbesonerは、この代替アプローチが暗号的に安全かどうか疑問視しましたが、 |
| 61 | + シンプルであるため実装し、SwiftSyncの速度がさらに向上することを発見しました。 |
| 62 | + |
| 63 | + James O'Beirneは、assumeUTXOがさらに大幅な高速化をもたらすことを踏まえ、 |
| 64 | + SwiftSyncは有用かどうかを[尋ねました][obeirne ss]。Somsenは、 |
| 65 | + SwiftSyncはassumeUTXOのバックグラウンド検証を高速化するため、 |
| 66 | + assumeUTXOのユーザーにとっても便利な追加機能であると[返信しました][somsen ss2]。 |
| 67 | + さらに、assumeUTXOに必要なデータ(特定のブロックのUTXOデータ)をダウンロードする人は、 |
| 68 | + そのブロックをターミナルSwiftSyncブロックとして使用する場合、 |
| 69 | + 別途ヒントファイルを用意する必要がないと述べています。 |
| 70 | + |
| 71 | + Vojtěch Strnadと0xB10CおよびSomsenは、ヒントファイルのデータを圧縮することで、 |
| 72 | + 約75%の節約が見込まれ、(ブロック850,900の)テストヒントファイルを約88MBに縮小できると[説明しました][b10c ss]。 |
| 73 | + |
| 74 | + この記事の執筆時点で、議論は進行中でした。 |
| 75 | + |
| 76 | +## Bitcoin Core PR Review Club |
| 77 | + |
| 78 | +*この毎月のセクションでは、最近の[Bitcoin Core PR Review Club][]ミーティングを要約し、 |
| 79 | +重要な質問と回答のいくつかに焦点を当てます。 |
| 80 | +以下の質問をクリックしてミーティングでの回答の要約を確認してください。* |
| 81 | + |
| 82 | +[Add Fee rate Forecaster Manager][review club 31664]は、 |
| 83 | +[ismaelsadeeq][gh ismaelsadeeq]によるPRで、トランザクション手数料の予測([推定][topic fee estimation]とも呼ばれる) |
| 84 | +ロジックをアップグレードします。このPRでは、複数の`Forecaster`を登録できる新しい |
| 85 | +`ForecasterManager`クラスが導入されます。既存の`CBlockPolicyEstimator`( |
| 86 | +承認済みのトランザクションのみを考慮)は、そのようなForecasterの1つとなるようにリファクタリングされました。 |
| 87 | +注目すべきは新しく`MemPoolForecaster`が導入されたことです。`MemPoolForecaster`は、 |
| 88 | +mempool内の未承認トランザクションも考慮するため、手数料率の変更に迅速に対応できます。 |
| 89 | + |
| 90 | +{% include functions/details-list.md |
| 91 | + q0="なぜ新しいシステムは「Estimator」や「Fee Estimation Manager」ではなく、 |
| 92 | + 「Forecaster」と「ForecasterManager」と呼ばれるのですか?" |
| 93 | + a0="このシステムは、現在と過去のデータに基づいて将来の結果を予測します。 |
| 94 | + ある程度のランダム性をもたせて現在の状況を近似するEstimatorとは異なり、 |
| 95 | + Forecasterは将来の出来事を予測します。これは、このシステムの予測的な性質と |
| 96 | + 不確実性/リスクレベルの出力と一致しています。" |
| 97 | + a0link="https://bitcoincore.reviews/31664#l-19" |
| 98 | + |
| 99 | + q1="`CBlockPolicyEstimator`が、PR #12966のアプローチと同様に、 |
| 100 | + mempoolの参照を保持するように変更されていないのはなぜですか? |
| 101 | + また、mempoolへの参照を保持するよりも現在のアプローチが優れているのはなぜですか(ヒント:PR #28368参照)?" |
| 102 | + a1="`CBlockPolicyEstimator`は`CValidationInterface`を継承し、 |
| 103 | + その仮想メソッドである`TransactionAddedToMempool`、`TransactionRemovedFromMempool`、 |
| 104 | + `MempoolTransactionsRemovedForBlock`を実装しています。これにより、 |
| 105 | + `CBlockPolicyEstimator`は、参照を介してmempoolに不必要に密結合されることなく、 |
| 106 | + 必要なmempoolの情報を取得できます。" |
| 107 | + a1link="https://bitcoincore.reviews/31664#l-26" |
| 108 | + |
| 109 | + q2="新しいアーキテクチャと`CBlockPolicyEstimator`を直接変更した場合のトレードオフは何ですか?" |
| 110 | + a2="複数の`Forecaster`を登録できる`FeeRateForecasterManager`クラスを備えた新しいアーキテクチャは、 |
| 111 | + よりモジュール化されたアプローチであり、テストの効率化や、より効果的な関心事の分離を実現します。 |
| 112 | + これにより、後から新しい予測戦略を簡単に追加できます。ただし、 |
| 113 | + メンテナンスに必要なコードが少し増え、どの推定手法を使用すべきかユーザーが混乱する可能性があります。" |
| 114 | + a2link="https://bitcoincore.reviews/31664#l-43" |
| 115 | +%} |
| 116 | + |
| 117 | +## リリースとリリース候補 |
| 118 | + |
| 119 | +_人気のBitcoinインフラストラクチャプロジェクトの新しいリリースとリリース候補。 |
| 120 | +新しいリリースにアップグレードしたり、リリース候補のテストを支援することを検討してください。_ |
| 121 | + |
| 122 | +- [Core Lightning 25.02.1][]は、この人気のLNノードの現在のメジャーバージョンのメンテナンスリリースで、 |
| 123 | + いくつかのバグ修正が含まれています。 |
| 124 | + |
| 125 | +- [Core Lightning 24.11.2][]は、この人気のLNノードの前のメジャーバージョンのメンテナンスリリースです。 |
| 126 | + いくつかのバグ修正が含まれており、そのうちのいくつかは、バージョン25.02.1でリリースされたバグ修正と同じものです。 |
| 127 | + |
| 128 | +- [BTCPay Server 2.1.0][]は、このセルフホスト型ペイメントプロセッサソフトウェアのメジャーリリースです。 |
| 129 | + いくつかのアルトコインユーザーに対する破壊的な変更と、[RBF][topic rbf]と |
| 130 | + [CPFP][topic cpfp]による手数料の引き上げの改善、 |
| 131 | + すべての署名者がBTCPay Serverを使用している場合のマルチシグのより良いフローが含まれています。 |
| 132 | + |
| 133 | +- [Bitcoin Core 29.0rc3][]は、ネットワークの主要なフルノードの次期メジャーバージョンのリリース候補です。 |
| 134 | + [バージョン29のテストガイド][bcc29 testing guide]をご覧ください。 |
| 135 | + |
| 136 | +- [LND 0.19.0-beta.rc2][]は、この人気のLNノードのリリース候補です。 |
| 137 | + おそらくテストが必要な主な改善の1つは、協調クローズにおける新しいRBFベースの手数料引き上げです。 |
| 138 | + |
| 139 | +## 注目すべきコードとドキュメントの変更 |
| 140 | + |
| 141 | +_最近の[Bitcoin Core][bitcoin core repo]、[Core |
| 142 | +Lightning][core lightning repo]、[Eclair][eclair repo]、[LDK][ldk repo]、 |
| 143 | +[LND][lnd repo]、[libsecp256k1][libsecp256k1 repo]、[Hardware Wallet |
| 144 | +Interface (HWI)][hwi repo]、[Rust Bitcoin][rust bitcoin repo]、[BTCPay |
| 145 | +Server][btcpay server repo]、[BDK][bdk repo]、[Bitcoin Improvement |
| 146 | +Proposals(BIP)][bips repo]、[Lightning BOLTs][bolts repo]、 |
| 147 | +[Bitcoin Inquisition][bitcoin inquisition repo]および[BINANAs][binana repo]の注目すべき変更点。_ |
| 148 | + |
| 149 | +- [LDK #2256][]および[LDK #3709][]は、[BOLTs #1044][]で定義されているように、 |
| 150 | + `UpdateFailHTLC`構造体にオプションの`attribution_data`フィールドを追加し、 |
| 151 | + `AttributionData`構造体を導入することで、失敗の帰属(ニュースレター[#224][news224 failures]参照)を改善します。 |
| 152 | + このプロトコルでは、各転送ノードは失敗メッセージに`hop_payload`フラグ、 |
| 153 | + ノードがHTLCを保持していた時間を記録する`duration`フィールド、 |
| 154 | + 経路上の想定される位置に対応するHMACを付加します。ノードが、失敗メッセージを破損した場合、 |
| 155 | + HMACチェーンの不一致は、破損が発生したノードペアを識別するのに役立ちます。 |
| 156 | + |
| 157 | +- [LND #9669][]は、[RBF][topic rbf]協調クローズフロー(ニュースレター[#347][news347 coop]参照)が設定されている場合でも、 |
| 158 | + [Simple Taproot Channel][topic simple taproot channels]で常に従来の協調クローズフロー使用するようダウングレードします。 |
| 159 | + これまでは、両方の機能が設定されているノードは起動に失敗していました。 |
| 160 | + |
| 161 | +- [Rust Bitcoin #4302][]は、スクリプトビルダーAPIに相対的[タイムロック][topic timelocks]パラメーターを |
| 162 | + 引数に取る新しい`push_relative_lock_time()`メソッドを追加し、 |
| 163 | + シーケンス番号をそのまま受け取る`push_sequence()`が非推奨となりました。 |
| 164 | + この変更により、開発者がスクリプト内で相対的タイムロックの値ではなく、 |
| 165 | + シーケンス番号を誤ってプッシュしてしまう潜在的な混乱が解消されます。 |
| 166 | + この値は、`CHECKSEQUENCEVERIFY`を使ってインプットのシーケンス番号と照合されます。 |
| 167 | + |
| 168 | +{% include snippets/recap-ad.md when="2025-04-15 15:30" %} |
| 169 | +{% include references.md %} |
| 170 | +{% include linkers/issues.md v=2 issues="2256,3709,9669,4302,1044" %} |
| 171 | +[bitcoin core 29.0rc3]: https://bitcoincore.org/bin/bitcoin-core-29.0/ |
| 172 | +[bcc29 testing guide]: https://github.com/bitcoin-core/bitcoin-devwiki/wiki/29.0-Release-Candidate-Testing-Guide |
| 173 | +[lnd 0.19.0-beta.rc2]: https://github.com/lightningnetwork/lnd/releases/tag/v0.19.0-beta.rc2 |
| 174 | +[wuille muhash]: https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-May/014337.html |
| 175 | +[falbesoner ss1]: https://delvingbitcoin.org/t/ibd-booster-speeding-up-ibd-with-pre-generated-hints-poc/1562/ |
| 176 | +[somsen ssgist]: https://gist.github.com/RubenSomsen/a61a37d14182ccd78760e477c78133cd |
| 177 | +[falbesoner ss2]: https://delvingbitcoin.org/t/ibd-booster-speeding-up-ibd-with-pre-generated-hints-poc/1562/7 |
| 178 | +[assumevalid]: https://bitcoincore.org/en/2017/03/08/release-0.14.0/#assumed-valid-blocks |
| 179 | +[cryptographic accumulator]: https://en.wikipedia.org/wiki/Accumulator_(cryptography) |
| 180 | +[news123 muhash]: /en/newsletters/2020/11/11/#bitcoin-core-pr-review-club |
| 181 | +[muhash]: https://cseweb.ucsd.edu/~mihir/papers/inchash.pdf |
| 182 | +[generalized birthday attack]: https://www.iacr.org/archive/crypto2002/24420288/24420288.pdf |
| 183 | +[somsen ss1]: https://delvingbitcoin.org/t/ibd-booster-speeding-up-ibd-with-pre-generated-hints-poc/1562/2 |
| 184 | +[obeirne ss]: https://delvingbitcoin.org/t/ibd-booster-speeding-up-ibd-with-pre-generated-hints-poc/1562/5 |
| 185 | +[somsen ss2]: https://delvingbitcoin.org/t/ibd-booster-speeding-up-ibd-with-pre-generated-hints-poc/1562/6 |
| 186 | +[b10c ss]: https://delvingbitcoin.org/t/ibd-booster-speeding-up-ibd-with-pre-generated-hints-poc/1562/4 |
| 187 | +[somsen ssml]: https://mailing-list.bitcoindevs.xyz/bitcoindev/CAPv7TjaM0tfbcBTRa0_713Bk6Y9jr+ShOC1KZi2V3V2zooTXyg@mail.gmail.com/T/#u |
| 188 | +[core lightning 25.02.1]: https://github.com/ElementsProject/lightning/releases/tag/v25.02.1 |
| 189 | +[core lightning 24.11.2]: https://github.com/ElementsProject/lightning/releases/tag/v24.11.2 |
| 190 | +[btcpay server 2.1.0]: https://github.com/btcpayserver/btcpayserver/releases/tag/v2.1.0 |
| 191 | +[news224 failures]: /ja/newsletters/2022/11/02/#ln |
| 192 | +[news347 coop]: /ja/newsletters/2025/03/28/#lnd-8453 |
| 193 | +[review club 31664]: https://bitcoincore.reviews/31664 |
| 194 | +[gh ismaelsadeeq]: https://github.com/ismaelsadeeq |
| 195 | +[forecastresult compare]: https://github.com/bitcoin-core-review-club/bitcoin/commit/1e6ce06bf34eb3179f807efbddb0e9bca2d27f28#diff-5baaa59bccb2c7365d516b648dea557eb50e63837de71531dc460dbcc62eb9adR74-R77 |
0 commit comments