|
| 1 | +--- |
| 2 | +title: 'Bulletin Hebdomadaire Bitcoin Optech #349' |
| 3 | +permalink: /fr/newsletters/2025/04/11/ |
| 4 | +name: 2025-04-11-newsletter-fr |
| 5 | +slug: 2025-04-11-newsletter-fr |
| 6 | +type: newsletter |
| 7 | +layout: newsletter |
| 8 | +lang: fr |
| 9 | +--- |
| 10 | +Le bulletin de cette semaine décrit une proposition pour accélérer le téléchargement initial des |
| 11 | +blocs de Bitcoin Core, avec une implémentation de preuve de concept qui montre une accélération |
| 12 | +d'environ cinq fois par rapport aux paramètres par défaut de Bitcoin Core. Sont également inclus nos |
| 13 | +sections régulières résumant une réunion du Bitcoin Core PR Review Club, annoncant des mises à jour |
| 14 | +et des versions candidates, et décrivant les changements notables dans les projets |
| 15 | +d'infrastructure Bitcoin populaires. |
| 16 | + |
| 17 | +## Nouvelles |
| 18 | + |
| 19 | +- **Accélération SwiftSync pour le téléchargement initial des blocs :** Sebastian Falbesoner a |
| 20 | + [posté][falbesoner ss1] sur Delving Bitcoin une démonstration d'implémentation et les résultats de |
| 21 | + performance pour _SwiftSync_, une idée [proposée][somsen ssgist] par Ruben Somsen lors d'une récente |
| 22 | + réunion de développeurs de Bitcoin Core et plus tard [publiée][somsen ssml] sur la liste de |
| 23 | + diffusion. À l'heure actuelle, les [résultats les plus récents][falbesoner ss2] publiés dans le fil |
| 24 | + montrent une accélération de 5,28x du _téléchargement initial des blocs_ (IBD pour _initial block download_) par rapport aux |
| 25 | + paramètres IBD par défaut de Bitcoin Core (qui utilise [assumevalid][] mais pas [assumeUTXO][topic |
| 26 | + assumeutxo]), réduisant le temps de synchronisation initial d'environ 41 heures à environ 8 heures. |
| 27 | + |
| 28 | + Avant d'utiliser SwiftSync, une personne ayant déjà synchronisé son nœud à un bloc récent crée un |
| 29 | + _fichier d'indices_ qui indique quels outputs de transaction seront dans l'ensemble UTXO à ce bloc |
| 30 | + (c'est-à-dire, quels outputs seront non dépensés). Cela peut être encodé de manière efficace en |
| 31 | + quelques centaines de mégaoctets pour la taille actuelle de l'ensemble UTXO. Le fichier d'indices |
| 32 | + indique également à quel bloc il a été généré, que nous appellerons le _bloc terminal SwiftSync_. |
| 33 | + |
| 34 | + L'utilisateur effectuant SwiftSync télécharge le fichier d'indices et l'utilise lors du traitement |
| 35 | + de chaque bloc précédant le bloc terminal SwiftSync pour ne stocker les outputs dans la base de |
| 36 | + données UTXO que si le fichier d'indices indique que l'output restera dans l'ensemble UTXO lorsque |
| 37 | + le bloc terminal SwiftSync sera atteint. Cela réduit massivement le nombre d'entrées qui sont |
| 38 | + ajoutées, puis plus tard retirées, de la base de données UTXO pendant l'IBD. |
| 39 | + |
| 40 | + Pour s'assurer que le fichier d'indices est correct, chaque output créé non stocké dans la base de |
| 41 | + données UTXO est ajouté à un [accumulateur cryptographique][]. Chaque output dépensé est retiré de |
| 42 | + l'accumulateur. Lorsque le nœud atteint le bloc terminal SwiftSync, il s'assure que l'accumulateur |
| 43 | + est vide, signifiant que chaque output vu a été dépensé plus tard. Si cela échoue, cela signifie que |
| 44 | + le fichier d'indices était incorrect et que l'IBD doit être effectué à nouveau depuis le début sans |
| 45 | + utiliser SwiftSync. De cette manière, les utilisateurs n'ont pas besoin de faire confiance au |
| 46 | + créateur du fichier d'indices---un fichier malveillant ne peut pas entraîner un état UTXO incorrect; |
| 47 | + il peut seulement gaspiller quelques heures de ressources informatiques de l'utilisateur. |
| 48 | + |
| 49 | + Une propriété supplémentaire de SwiftSync qui n'a pas encore été implémentée est de permettre la |
| 50 | + validation parallèle des blocs pendant l'IBD. Cela est possible parce que assumevalid ne vérifie pas |
| 51 | + les scripts des blocs plus anciens, les entrées ne sont jamais retirées de la base de données UTXO |
| 52 | + avant le bloc terminal SwiftSync, et l'accumulateur utilisé ne suit que l'effet net des sorties ajoutées |
| 53 | + (créées) et retirées (dépensées). Cela élimine toute dépendance entre les blocs avant le bloc |
| 54 | + terminal SwiftSync. La validation parallèle pendant l'IBD est également une caractéristique de |
| 55 | + [Utreexo][topic utreexo] pour certaines des mêmes raisons. |
| 56 | + |
| 57 | + La discussion a examiné plusieurs aspects de la proposition. L'implémentation originale de |
| 58 | + Falbesoner utilisait l'accumulateur [MuHash][] (voir le [Bulletin #123][news123 muhash]), qui [a été |
| 59 | + montré][wuille muhash] résistant à l'[attaque d'anniversaire généralisée][attaque anniversaire]. Somsen [a |
| 60 | + décrit][somsen ss1] une approche alternative qui pourrait être plus rapide. Falbesoner s'est |
| 61 | + interrogé sur la sécurité cryptographique de l'approche alternative mais, puisqu'elle était simple, |
| 62 | + l'a quand même mise en œuvre et a trouvé qu'elle accélérait davantage SwiftSync. |
| 63 | + |
| 64 | + James O'Beirne [a demandé][obeirne ss] si SwiftSync est utile étant donné que assumeUTXO offre une |
| 65 | + accélération encore plus grande. Somsen [a répondu][somsen ss2] que SwiftSync accélère la validation |
| 66 | + en arrière-plan d'assumeUTXO, ce qui en fait un ajout intéressant pour les utilisateurs d'assumeUTXO. Il |
| 67 | + note en outre que quiconque télécharge les données requises d'assumeUTXO (la base de données UTXO à |
| 68 | + un bloc particulier) n'a pas besoin d'un fichier d'indices séparé s'il utilise ce même bloc comme |
| 69 | + bloc terminal SwiftSync. |
| 70 | + |
| 71 | + Vojtěch Strnad, 0xB10C, et Somsen [ont discuté][b10c ss] de la compression des données du fichier |
| 72 | + d'indices, avec une économie attendue d'environ 75%, réduisant le fichier d'indices de test (pour le |
| 73 | + bloc 850,900) à environ 88 Mo. |
| 74 | + |
| 75 | + La discussion était en cours au moment de la rédaction. |
| 76 | + |
| 77 | +## Bitcoin Core PR Review Club |
| 78 | + |
| 79 | +*Dans cette section mensuelle, nous résumons une récente réunion du [Bitcoin Core PR Review Club][], |
| 80 | +en soulignant certaines des questions et réponses importantes. Cliquez sur une question ci-dessous |
| 81 | +pour voir un résumé de la réponse de la réunion.* |
| 82 | + |
| 83 | +[Add Fee rate Forecaster Manager][review club 31664] est un PR par [ismaelsadeeq][gh ismaelsadeeq] |
| 84 | +qui améliore la logique de prévision des frais de transaction (également appelée [estimation][topic |
| 85 | +fee estimation]). Il introduit une nouvelle classe `ForecasterManager` à laquelle plusieurs |
| 86 | +`Forecaster`s peuvent être enregistrés. Le `CBlockPolicyEstimator` existant (qui ne considère que |
| 87 | +les transactions confirmées) est refactorisé pour devenir un de ces prévisionnistes, mais notablement un |
| 88 | +nouveau `MemPoolForecaster` est introduit. `MemPoolForecaster` considère les transactions non |
| 89 | +confirmées qui sont dans le mempool, et en tant que tel peut réagir plus rapidement aux changements |
| 90 | +de taux de frais. |
| 91 | + |
| 92 | +{% include functions/details-list.md |
| 93 | + q0="Pourquoi le nouveau système est-il appelé un « Forecaster » et « ForecasterManager » plutôt |
| 94 | + qu' « Estimator » et « Fee Estimation Manager » ?" |
| 95 | + a0="Le système prédit les résultats futurs basés sur les données actuelles et passées. Contrairement |
| 96 | + à un estimateur, qui approximise les conditions présentes avec une certaine randomisation, un |
| 97 | + prévisionniste projette des événements futurs, ce qui s'aligne avec la nature prédictive de ce |
| 98 | + système et sa sortie de niveaux d'incertitude/risque." |
| 99 | + a0link="https://bitcoincore.reviews/31664#l-19" |
| 100 | + |
| 101 | + q1="Pourquoi `CBlockPolicyEstimator` n'est-il pas modifié pour contenir la référence mempool, |
| 102 | + comme dans le PR #12966 ? Quelle est l'approche actuelle |
| 103 | + et pourquoi est-elle meilleure que de conserver une référence à mempool ? |
| 104 | + (Hint : see PR #28368)" |
| 105 | + a1="`CBlockPolicyEstimator` hérite de `CValidationInterface` et |
| 106 | + implémente ses méthodes virtuelles `TransactionAddedToMempool`, |
| 107 | + `TransactionRemovedFromMempool`, et |
| 108 | + `MempoolTransactionsRemovedForBlock`. Cela donne à |
| 109 | + `CBlockPolicyEstimator` toutes les informations mempool dont il a besoin sans |
| 110 | + être inutilement couplé au mempool via une référence." |
| 111 | + a1link="https://bitcoincore.reviews/31664#l-26" |
| 112 | + |
| 113 | + q2="Quels sont les compromis entre la nouvelle architecture et une |
| 114 | + modification directe de `CBlockPolicyEstimator` ?" |
| 115 | + a2="La nouvelle architecture avec une classe `FeeRateForecasterManager` à |
| 116 | + laquelle plusieurs `Forecaster` peuvent être enregistrés est une approche plus modulaire |
| 117 | + qui permet de meilleurs tests, et applique une meilleure |
| 118 | + séparation des préoccupations. Elle permet d'intégrer facilement de nouvelles stratégies de prévision |
| 119 | + par la suite. Cela se fait au prix d'un peu plus de code à |
| 120 | + maintenir, et d'une confusion potentielle pour les utilisateurs quant à la méthode d'estimation |
| 121 | + à utiliser." |
| 122 | + a2link="https://bitcoincore.reviews/31664#l-43" |
| 123 | +%} |
| 124 | + |
| 125 | +## Mises à jour et versions candidates |
| 126 | + |
| 127 | +_Nouvelles versions et versions candidates pour des projets d'infrastructure Bitcoin populaires. |
| 128 | +Veuillez envisager de mettre à niveau vers les nouvelles versions ou d'aider à tester les versions candidates._ |
| 129 | + |
| 130 | +- [Core Lightning 25.02.1][] est une version de maintenance pour la version majeure actuelle de ce |
| 131 | + nœud LN populaire qui inclut plusieurs corrections de bugs. |
| 132 | + |
| 133 | +- [Core Lightning 24.11.2][] est une version de maintenance pour une version majeure antérieure de |
| 134 | + ce nœud LN. Elle inclut plusieurs corrections de bugs, certaines étant les mêmes que celles sorties |
| 135 | + dans la version 25.02.1. |
| 136 | + |
| 137 | +- [BTCPay Server 2.1.0][] est une version majeure de ce logiciel de traitement de paiements |
| 138 | + auto-hébergé. Elle inclut des changements importants pour les utilisateurs de certains altcoins, |
| 139 | + des améliorations pour le [RBF][topic rbf] et le [CPFP][topic cpfp] pour augmenter les frais, et un |
| 140 | + meilleur flux pour le multisig lorsque tous les signataires utilisent BTCPay Server. |
| 141 | + |
| 142 | +- [Bitcoin Core 29.0rc3][] est un candidat à la sortie pour la prochaine version majeure du nœud |
| 143 | + complet prédominant du réseau. Veuillez consulter le [guide de test de la version 29][bcc29 testing |
| 144 | + guide]. |
| 145 | + |
| 146 | +- [LND 0.19.0-beta.rc2][] est un candidat à la sortie pour ce nœud LN populaire. L'une des |
| 147 | + principales améliorations qui pourrait probablement nécessiter des tests est le nouveau bumping de |
| 148 | + frais basé sur RBF pour les fermetures coopératives. |
| 149 | + |
| 150 | +## Changements de code et de documentation notables |
| 151 | + |
| 152 | +_Changements récents dans [Bitcoin Core][bitcoin core repo], [Core Lightning][core lightning |
| 153 | +repo], [Eclair][eclair repo], [LDK][ldk repo], [LND][lnd repo], [libsecp256k1][libsecp256k1 repo], |
| 154 | +[Interface de Portefeuille Matériel (HWI)][hwi repo], [Rust Bitcoin][rust bitcoin repo], [BTCPay |
| 155 | +Server][btcpay server repo], [BDK][bdk repo], [Amélioration de Bitcoin] |
| 156 | +Propositions (BIPs)][bips repo], [Lightning BOLTs][bolts repo],[Lightning BLIPs][blips repo], |
| 157 | +[Bitcoin Inquisition][bitcoin inquisition repo], et [BINANAs][binana repo]._ |
| 158 | + |
| 159 | +- [LDK #2256][] et [LDK #3709][] améliorent les échecs attribuables (voir le Bulletin [#224][news224 |
| 160 | + failures]) comme spécifié dans [BOLTs #1044][] en ajoutant un champ `attribution_data` optionnel à |
| 161 | + la structure `UpdateFailHTLC` et en introduisant la structure `AttributionData`. Dans ce protocole, |
| 162 | + chaque nœud de transfert ajoute au message d'échec un drapeau `hop_payload`, un champ de durée qui |
| 163 | + enregistre combien de temps le nœud a détenu le HTLC, et des HMAC correspondant à différentes |
| 164 | + positions supposées dans l'itinéraire. Si un nœud corrompt le message d'échec, le décalage dans la |
| 165 | + chaîne HMAC aide à identifier la paire de nœuds entre lesquels cela s'est produit. |
| 166 | + |
| 167 | +- [LND #9669][] rétrograde les [canaux taproot simples][topic simple taproot channels] pour toujours |
| 168 | + utiliser le flux de fermeture coopérative classique, même si le flux de fermeture coopérative |
| 169 | + [RBF][topic rbf] (voir le Bulletin [#347][news347 coop]) est configuré. Auparavant, un nœud ayant les |
| 170 | + deux fonctionnalités configurées échouerait à démarrer. |
| 171 | + |
| 172 | +- [Rust Bitcoin #4302][] ajoute une nouvelle méthode `push_relative_lock_time()` à l'API du |
| 173 | + générateur de script, qui prend un paramètre de [verrouillage temporel relatif][topic timelocks], |
| 174 | + et rend obsolète `push_sequence()` qui prend un numéro de séquence brut comme paramètre. Ce changement |
| 175 | + résout une confusion potentielle où les développeurs pousseraient par erreur un numéro de séquence |
| 176 | + brut dans les scripts au lieu d'une valeur de verrouillage temporel relatif, qui est ensuite |
| 177 | + vérifiée contre le numéro de séquence d'une entrée en utilisant `CHECKSEQUENCEVERIFY`. |
| 178 | + |
| 179 | +{% include snippets/recap-ad.md when="2025-04-15 15:30" %} |
| 180 | +{% include references.md %} |
| 181 | +{% include linkers/issues.md v=2 issues="2256,3709,9669,4302,1044" %} |
| 182 | +[bitcoin core 29.0rc3]: https://bitcoincore.org/bin/bitcoin-core-29.0/ |
| 183 | +[bcc29 testing guide]: https://github.com/bitcoin-core/bitcoin-devwiki/wiki/29.0-Release-Candidate-Testing-Guide |
| 184 | +[lnd 0.19.0-beta.rc2]: https://github.com/lightningnetwork/lnd/releases/tag/v0.19.0-beta.rc2 |
| 185 | +[wuille muhash]: https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-May/014337.html |
| 186 | +[falbesoner ss1]: https://delvingbitcoin.org/t/ibd-booster-speeding-up-ibd-with-pre-generated-hints-poc/1562/ |
| 187 | +[somsen ssgist]: https://gist.github.com/RubenSomsen/a61a37d14182ccd78760e477c78133cd |
| 188 | +[falbesoner ss2]: https://delvingbitcoin.org/t/ibd-booster-speeding-up-ibd-with-pre-generated-hints-poc/1562/7 |
| 189 | +[assumevalid]: https://bitcoincore.org/en/2017/03/08/release-0.14.0/#assumed-valid-blocks |
| 190 | +[accumulateur cryptographique]: https://en.wikipedia.org/wiki/Accumulator_(cryptography) |
| 191 | +[news123 muhash]: /en/newsletters/2020/11/11/#bitcoin-core-pr-review-club |
| 192 | +[muhash]: https://cseweb.ucsd.edu/~mihir/papers/inchash.pdf |
| 193 | +[attaque anniversaire]: https://www.iacr.org/archive/crypto2002/24420288/24420288.pdf |
| 194 | +[somsen ss1]: https://delvingbitcoin.org/t/ibd-booster-speeding-up-ibd-with-pre-generated-hints-poc/1562/2 |
| 195 | +[obeirne ss]: https://delvingbitcoin.org/t/ibd-booster-speeding-up-ibd-with-pre-generated-hints-poc/1562/5 |
| 196 | +[somsen ss2]: https://delvingbitcoin.org/t/ibd-booster-speeding-up-ibd-with-pre-generated-hints-poc/1562/6 |
| 197 | +[b10c ss]: https://delvingbitcoin.org/t/ibd-booster-speeding-up-ibd-with-pre-generated-hints-poc/1562/4 |
| 198 | +[somsen ssml]: https://mailing-list.bitcoindevs.xyz/bitcoindev/CAPv7TjaM0tfbcBTRa0_713Bk6Y9jr+ShOC1KZi2V3V2zooTXyg@mail.gmail.com/T/#u |
| 199 | +[core lightning 25.02.1]: https://github.com/ElementsProject/lightning/releases/tag/v25.02.1 |
| 200 | +[core lightning 24.11.2]: https://github.com/ElementsProject/lightning/releases/tag/v24.11.2 |
| 201 | +[btcpay server 2.1.0]: https://github.com/btcpayserver/btcpayserver/releases/tag/v2.1.0 |
| 202 | +[news224 failures]: /fr/newsletters/2022/11/02/#attribution-de-l-echec-du-routage-ln |
| 203 | +[news347 coop]: /en/newsletters/2025/03/28/#lnd-8453 |
| 204 | +[review club 31664]: https://bitcoincore.reviews/31664 |
| 205 | +[gh ismaelsadeeq]: https://github.com/ismaelsadeeq |
| 206 | +[forecastresult compare]: https://github.com/bitcoin-core-review-club/bitcoin/commit/1e6ce06bf34eb3179f807efbddb0e9bca2d27f28#diff-5baaa59bccb2c7365d516b648dea557eb50e63837de71531dc460dbcc62eb9adR74-R77 |
0 commit comments