|
| 1 | +--- |
| 2 | +title: 'Bulletin Hebdomadaire Bitcoin Optech #353' |
| 3 | +permalink: /fr/newsletters/2025/05/09/ |
| 4 | +name: 2025-05-09-newsletter-fr |
| 5 | +slug: 2025-05-09-newsletter-fr |
| 6 | +type: newsletter |
| 7 | +layout: newsletter |
| 8 | +lang: fr |
| 9 | +--- |
| 10 | +Le bulletin de cette semaine décrit une vulnérabilité théorique de défaillance de consensus |
| 11 | +récemment découverte et renvoie à une proposition pour éviter la réutilisation des chemins de |
| 12 | +portefeuille BIP32. Sont également incluses nos sections régulières résumant une |
| 13 | +réunion du Bitcoin Core PR Review Club, annonçant des mises à jour et des versions candidates, |
| 14 | +et décrivant les changements notables dans les projets d'infrastructure Bitcoin populaires. |
| 15 | + |
| 16 | +## Nouvelles |
| 17 | + |
| 18 | +- **Vulnérabilité de défaillance de consensus BIP30 :** Ruben Somsen a [posté][somsen bip30] sur la |
| 19 | + liste de diffusion Bitcoin-Dev à propos d'une défaillance de consensus théorique qui pourrait |
| 20 | + survenir maintenant que les points de contrôle ont été retirés de Bitcoin Core (voir le [Bulletin |
| 21 | + #346][news346 checkpoints]). En bref, les transactions coinbase des blocs 91722 et 91812 sont |
| 22 | + [dupliquées][topic duplicate transactions] dans les blocs 91880 et 91842. [BIP30][] spécifie que ces |
| 23 | + deux derniers blocs devraient être traités de la manière dont la version historique de Bitcoin Core |
| 24 | + les a traités en 2010, c'est-à-dire en écrasant les entrées coinbase antérieures dans l'ensemble |
| 25 | + UTXO avec les duplicatas ultérieurs. Cependant, Somsen note qu'un réordonnancement de l'un ou des |
| 26 | + deux blocs ultérieurs résulterait dans le retrait de l'entrée dupliquée (ou des entrées) de |
| 27 | + l'ensemble UTXO, le laissant également dépourvu des entrées antérieures en raison de l'écrasement. |
| 28 | + Mais, un nœud nouvellement démarré qui n'a jamais vu les transactions dupliquées aurait toujours les |
| 29 | + transactions antérieures, lui donnant un ensemble UTXO différent qui pourrait entraîner une |
| 30 | + défaillance de consensus si l'une des deux transactions est dépensée. |
| 31 | + |
| 32 | + Ce n'était pas un problème lorsque Bitcoin Core avait des points de contrôle car ils exigeaient que |
| 33 | + les quatre blocs mentionnés ci-dessus fassent partie de la meilleure blockchain. Ce n'est pas |
| 34 | + vraiment un problème maintenant, sauf dans un cas théorique où le mécanisme de sécurité de preuve de |
| 35 | + travail de Bitcoin se brise. Plusieurs solutions possibles ont été discutées, telles que coder en |
| 36 | + dur une logique de cas spéciaux supplémentaires pour ces deux exceptions. |
| 37 | + |
| 38 | +- **Éviter la réutilisation du chemin BIP32 :** Kevin Loaec a [posté][loaec bip32reuse] sur Delving |
| 39 | + Bitcoin pour discuter des options permettant d'éviter que le même chemin de portefeuille |
| 40 | + [BIP32][topic bip32] soit utilisé avec différents portefeuilles, ce qui pourrait conduire à une |
| 41 | + perte de confidentialité en raison du [lien de sortie][topic output linking] et une perte théorique |
| 42 | + de sécurité (par exemple, en raison de [l'informatique quantique][topic quantum resistance]). Il a |
| 43 | + suggéré trois approches possibles : utiliser un chemin aléatoire, utiliser un chemin basé sur la |
| 44 | + date de création du portefeuille, et utiliser un chemin basé sur un compteur incrémentiel. Il a |
| 45 | + recommandé l'approche basée sur la date de création. |
| 46 | + |
| 47 | + Il a également recommandé d'abandonner la plupart des éléments de chemin [BIP48][] comme inutiles en |
| 48 | + raison de l'utilisation de plus en plus répandue des portefeuilles avec des [descripteurs][topic |
| 49 | + descriptors], en particulier pour les portefeuilles multisig et les portefeuilles à script complexe. |
| 50 | + Cependant, Salvatore Ingala a [répondu][ingala bip48] pour suggérer de conserver la partie _type de |
| 51 | + monnaie_ du chemin BIP48 car elle aide à garantir que les clés utilisées avec différentes |
| 52 | + cryptomonnaies sont conservées séparées, ce qui est appliqué par certains dispositifs de signature |
| 53 | + matérielle. |
| 54 | + |
| 55 | +## Bitcoin Core PR Review Club |
| 56 | + |
| 57 | +*Dans cette section mensuelle, nous résumons une récente réunion du [Bitcoin Core PR Review Club][], |
| 58 | +mettant en lumière certaines des questions importantes et des réponses. Cliquez |
| 59 | +sur une question ci-dessous pour voir un résumé de la réponse donnée lors de la réunion.* |
| 60 | + |
| 61 | +[L'ajout d'un exécutable wrapper bitcoin][review club 31375] est une PR par [ryanofsky][gh |
| 62 | +ryanofsky] qui introduit un nouveau binaire `bitcoin` qui peut être utilisé pour découvrir et lancer |
| 63 | +les différents binaires de Bitcoin Core. |
| 64 | + |
| 65 | +Bitcoin Core v29 a été livré avec 7 binaires (par exemple, `bitcoind`, `bitcoin-qt` et |
| 66 | +`bitcoin-cli`), mais ce nombre devrait [augmenter][Bitcoin Core #30983] à l'avenir lorsque les |
| 67 | +binaires [multiprocess][multiprocess design] seront également distribués. Le nouveau wrapper |
| 68 | +`bitcoin` mappe les commandes (par exemple, `gui`) au bon binaire monolithique (`bitcoin-qt`) ou |
| 69 | +multiprocessus (`bitcoin-gui`). En plus de la découvrabilité, le wrapper offre également une |
| 70 | +compatibilité vers l'avant, de sorte que les binaires peuvent être réorganisés sans que l'interface |
| 71 | +utilisateur ne change. |
| 72 | + |
| 73 | +Avec cette PR, un utilisateur peut lancer Bitcoin Core avec `bitcoin daemon` ou `bitcoin gui`. |
| 74 | +Lancer directement les binaires `bitcoind` ou `bitcoin-qt` reste possible et n'est pas affecté par |
| 75 | +cette PR. |
| 76 | + |
| 77 | +{% include functions/details-list.md |
| 78 | + q0="D'après le problème #30983, quatre stratégies de wrapper ont été listées. Quels inconvénients |
| 79 | + spécifiques de l'approche « side-binaries » cette PR aborde-t-elle ?" |
| 80 | + a0="L'approche des side-binaries supposée par cette PR implique de libérer les nouveaux binaires |
| 81 | + multiprocessus aux côtés des binaires monolithiques existants. Avec autant de binaires, cela peut |
| 82 | + être déroutant pour les utilisateurs de trouver et de comprendre le binaire dont ils ont besoin pour |
| 83 | + leur objectif. Cette PR élimine une grande partie de la confusion en fournissant un point d'entrée |
| 84 | + unique, avec un aperçu des options et une chaîne d'aide. Un examinateur a suggéré l'ajout d'une |
| 85 | + recherche floue pour faciliter encore plus cela." |
| 86 | + a0link="https://bitcoincore.reviews/31375#l-40" |
| 87 | + q1="`GetExePath()` n'utilise pas `readlink(\"/proc/self/exe\")` sur Linux même si cela serait plus |
| 88 | + direct. Quels avantages l'implémentation actuelle offre-t-elle ? Quels cas particuliers |
| 89 | + pourrait-elle manquer ?" |
| 90 | + a1="Il peut y avoir d'autres plateformes non-Windows qui n'ont pas le système de fichiers proc. À |
| 91 | + part cela, ni l'auteur ni les invités n'ont pu identifier d'inconvénients à l'utilisation de |
| 92 | + procfs." |
| 93 | + a1link="https://bitcoincore.reviews/31375#l-71" |
| 94 | + q2="Dans `ExecCommand`, expliquez le but du booléen `fallback_os_search`. Dans quelles circonstances |
| 95 | + vaut-il mieux éviter de laisser l'OS rechercher le binaire sur le `PATH` ?" |
| 96 | + a2="Si cela semble que l'exécutable wrapper a été invoqué par chemin (par exemple, |
| 97 | + \"/build/bin/bitcoin\") plutôt que par recherche (par exemple, \"bitcoin\"), il est supposé que |
| 98 | + l'utilisateur utilise une construction locale et `fallback_os_search` est défini sur `false`. Ce |
| 99 | + booléen est introduit pour éviter de mélanger involontairement des binaires de différentes sources. |
| 100 | + Par exemple, si l'utilisateur n'a pas construit localement `gui`, alors `/build/bin/bitcoin gui` ne |
| 101 | + devrait pas retomber sur le `bitcoin-gui` installé sur le système. L'auteur envisage de supprimer |
| 102 | + entièrement la recherche `PATH`, et les retours des utilisateurs seraient utiles." |
| 103 | + a2link="https://bitcoincore.reviews/31375#l-75" |
| 104 | + q3="Le wrapper ne recherche `${prefix}/libexec` que lorsqu'il détecte qu'il est exécuté depuis un |
| 105 | + répertoire `bin/` installé. Pourquoi ne pas toujours rechercher `libexec` ?" |
| 106 | + a3="Le wrapper doit être prudent quant aux chemins qu'il tente d'exécuter, et encourager les |
| 107 | + dispositions standard `PREFIX/{bin,libexec}`, et non encourager les wrapper à créer des |
| 108 | + dispositions non standard ou à fonctionner lorsque les binaires sont arrangés de manières |
| 109 | + inattendues." |
| 110 | + a3link="https://bitcoincore.reviews/31375#l-75" |
| 111 | + q4="La PR ajoute une exemption dans `security-check.py` parce que le wrapper ne contient pas |
| 112 | + d'appels `glibc` fortifiés. Pourquoi ne les contient-il pas, et l'ajout d'un simple `printf` à |
| 113 | + `bitcoin.cpp` briserait-il les constructions reproductibles sous les règles actuelles ?" |
| 114 | + a4="Le binaire du wrapper est si simple qu'il ne contient aucun appel pouvant être fortifié. S'il en |
| 115 | + contient à l'avenir, l'exemption dans security-check.py peut être retirée." |
| 116 | + a4link="https://bitcoincore.reviews/31375#l-117" |
| 117 | +%} |
| 118 | + |
| 119 | +## Mises à jour et versions candidates |
| 120 | + |
| 121 | +_Nouvelles versions et versions candidates pour des projets d'infrastructure Bitcoin populaires. |
| 122 | +Veuillez envisager de mettre à niveau vers les nouvelles versions ou d'aider à tester les versions candidates._ |
| 123 | + |
| 124 | +- [LND 0.19.0-beta.rc4][] est un candidat à la sortie pour ce nœud LN populaire. L'une des |
| 125 | + principales améliorations qui pourrait probablement nécessiter des tests est le nouveau bumping de |
| 126 | + frais basé sur RBF pour les fermetures coopératives. |
| 127 | + |
| 128 | +## Changements notables dans le code et la documentation |
| 129 | + |
| 130 | +_Changements récents notables dans [Bitcoin Core][bitcoin core repo], [Core Lightning][core lightning |
| 131 | +repo], [Eclair][eclair repo], [LDK][ldk repo], [LND][lnd repo], [libsecp256k1][libsecp256k1 repo], |
| 132 | +[Interface de Portefeuille Matériel (HWI)][hwi repo], [Rust Bitcoin][rust bitcoin repo], [Serveur |
| 133 | +BTCPay][btcpay server repo], [BDK][bdk repo], [Propositions d'Amélioration de Bitcoin (BIPs)][bips |
| 134 | +repo], [Lightning BOLTs][bolts repo], [Lightning BLIPs][blips repo], [Inquisition Bitcoin][bitcoin |
| 135 | +inquisition repo], et [BINANAs][binana repo]._ |
| 136 | + |
| 137 | +- [Core Lightning #8227][] ajoute des plugins `lsps-client` et `lsps-service` basés sur Rust qui |
| 138 | + implémentent un protocole de communication entre les nœuds LSP et leurs clients, en utilisant un |
| 139 | + format JSON-RPC sur les messages peer-to-peer [BOLT8][], comme spécifié dans [BLIP50][] (voir |
| 140 | + le Bulletin [#335][news335 blip50]). Cela pose les bases pour l'implémentation des demandes de |
| 141 | + liquidité entrantes comme spécifié dans [BLIP51][], et de [canaux JIT][topic jit channels] comme |
| 142 | + spécifié dans [BLIP52][]. |
| 143 | + |
| 144 | +- [Core Lightning #8162][] met à jour la gestion des ouvertures de canaux en attente initiées par |
| 145 | + les pairs en les conservant indéfiniment, jusqu'à une limite des 100 plus récents. Auparavant, les |
| 146 | + ouvertures de canaux non confirmées étaient oubliées après 2016 blocs. De plus, les canaux fermés |
| 147 | + sont maintenant conservés en mémoire pour permettre à un nœud de répondre à un message |
| 148 | + `channel_reestablish` d'un pair. |
| 149 | + |
| 150 | +- [Core Lightning #8166][] améliore la commande RPC `wait` en remplaçant son unique objet `details` |
| 151 | + par des objets spécifiques aux sous-systèmes : `invoices`, |
| 152 | + `forwards`, `sendpays` et [`htlcs`][topic htlc]. De plus, la commande RPC `listhtlcs` prend |
| 153 | + désormais en charge la pagination via les nouveaux champs `created_index` et `updated_index` ainsi |
| 154 | + que les paramètres `index`, `start` et `end`. |
| 155 | + |
| 156 | +- [Core Lightning #8237][] ajoute un paramètre `short_channel_id` à la commande RPC |
| 157 | + `listpeerchannels` pour retourner uniquement un canal spécifique, s'il est fourni. |
| 158 | + |
| 159 | +- [LDK #3700][] ajoute un nouveau champ `failure_reason` à l'événement `HTLCHandlingFailed` pour |
| 160 | + fournir des informations supplémentaires sur la raison de l'échec du [HTLC][topic htlc], et si la |
| 161 | + cause était locale ou en aval. Le champ `failed_next_destination` est renommé en `failure_type` et |
| 162 | + la variante `UnknownNextHop` est dépréciée, remplacée par la plus générale `InvalidForward`. |
| 163 | + |
| 164 | +- [Rust Bitcoin #4387][] refactorise la gestion des erreurs [BIP32][topic bip32] en remplaçant le |
| 165 | + seul `bip32::Error` par des énumérations séparées pour la dérivation, le numéro/chemin de l'enfant |
| 166 | + et l'analyse de la clé étendue. Cette PR introduit également une nouvelle variante |
| 167 | + `DerivationError::MaximumDepthExceeded` pour les chemins dépassant 256 niveaux. Ces changements |
| 168 | + d'API rompent la compatibilité ascendante. |
| 169 | + |
| 170 | +- [BIPs #1835][] met à jour [BIP48][] (voir le Bulletin [#135][news135 bip48]) pour réserver la |
| 171 | + valeur de type de script 3 pour les dérivations [taproot][topic taproot] (P2TR) dans les |
| 172 | + portefeuilles multisig déterministes avec le préfixe m/48', en plus des types de script P2SH-P2WSH |
| 173 | + (1′) et P2WSH (2′) existants. |
| 174 | + |
| 175 | +- [BIPs #1800][] fusionne [BIP54][], qui spécifie la proposition de soft fork de nettoyage du |
| 176 | + consensus [topic consensus cleanup] pour corriger un certain nombre de vulnérabilités de longue date |
| 177 | + dans le protocole Bitcoin. Voir le Bulletin [#348][news348 cleanup] pour une description détaillée de |
| 178 | + ce BIP. |
| 179 | + |
| 180 | +- [BOLTs #1245][] renforce [BOLT11][] en interdisant les encodages de longueur non minimale dans les |
| 181 | + factures : les champs d'expiration (x), le [délai d'expiration CLTV][topic cltv expiry delta] pour |
| 182 | + le dernier saut (c) et les bits de fonctionnalité (9) doivent être sérialisés en longueur minimale |
| 183 | + sans zéros initiaux, et les lecteurs devraient rejeter toute facture contenant des zéros initiaux. |
| 184 | + Ce changement a été motivé par des tests de fuzzing qui ont détecté que lorsque LDK resérialise des |
| 185 | + factures non minimales en minimales (en supprimant les zéros supplémentaires), cela provoque l'échec |
| 186 | + de la validation de la signature ECDSA de la facture. |
| 187 | + |
| 188 | +{% include snippets/recap-ad.md when="2025-05-13 16:30" %} |
| 189 | +{% include references.md %} |
| 190 | +{% include linkers/issues.md v=2 issues="8227,8162,8166,8237,3700,4387,1835,1800,1245,50,51,52,30983" %} |
| 191 | +[lnd 0.19.0-beta.rc4]: https://github.com/lightningnetwork/lnd/releases/tag/v0.19.0-beta.rc4 |
| 192 | +[wuille clustrade]: https://delvingbitcoin.org/t/how-to-linearize-your-cluster/303/68 |
| 193 | +[somsen bip30]: https://mailing-list.bitcoindevs.xyz/bitcoindev/CAPv7TjZTWhgzzdps3vb0YoU3EYJwThDFhNLkf4XmmdfhbORTaw@mail.gmail.com/ |
| 194 | +[loaec bip32reuse]: https://delvingbitcoin.org/t/avoiding-xpub-derivation-reuse-across-wallets-in-a-ux-friendly-manner/1644 |
| 195 | +[ingala bip48]: https://delvingbitcoin.org/t/avoiding-xpub-derivation-reuse-across-wallets-in-a-ux-friendly-manner/1644/3 |
| 196 | +[news346 checkpoints]: /fr/newsletters/2025/03/21/#bitcoin-core-31649 |
| 197 | +[news335 blip50]: /fr/newsletters/2025/01/03/#blips-52 |
| 198 | +[news135 bip48]: /en/newsletters/2021/07/28/#bips-1072 |
| 199 | +[news348 cleanup]: /fr/newsletters/2025/04/04/#brouillon-de-bip-publie-pour-le-nettoyage-du-consensus |
| 200 | +[review club 31375]: https://bitcoincore.reviews/31375 |
| 201 | +[gh ryanofsky]: https://github.com/ryanofsky |
| 202 | +[multiprocess design]: https://github.com/bitcoin/bitcoin/blob/master/doc/design/multiprocess.md |
0 commit comments