Skip to content

Commit 2e07e5a

Browse files
Newsletter 314 translate in French (#1834)
Co-authored-by: Jluc-bitcoinfr <[email protected]>
1 parent eb1c371 commit 2e07e5a

File tree

1 file changed

+224
-0
lines changed

1 file changed

+224
-0
lines changed
Lines changed: 224 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,224 @@
1+
---
2+
title: 'Bulletin Hebdomadaire Bitcoin Optech #314'
3+
permalink: /fr/newsletters/2024/08/02/
4+
name: 2024-08-02-newsletter-fr
5+
slug: 2024-08-02-newsletter-fr
6+
type: newsletter
7+
layout: newsletter
8+
lang: fr
9+
---
10+
Le bulletin de cette semaine annonce la divulgation de deux vulnérabilités affectant les anciennes
11+
versions de Bitcoin Core et résume une approche proposée pour optimiser la sélection des
12+
transactions par les mineurs lorsque le cluster de mempool est utilisé. Sont également incluses nos sections habituelles avec
13+
des annonces de mises à jour et versions candidates, ainsi que les changements
14+
apportés aux principaux logiciels d'infrastructure Bitcoin.
15+
16+
## Nouvelles
17+
18+
- **Divulgation de vulnérabilités affectant les versions de Bitcoin Core antérieures à 0.21.0 :**
19+
Niklas Gögge a [publié][goegge disclosure] sur la liste de diffusion Bitcoin-Dev un lien vers les
20+
annonces de
21+
deux vulnérabilités affectant des versions de Bitcoin Core qui sont
22+
dépassées depuis au moins octobre 2022. Cela fait suite à une
23+
divulgation précédente le mois dernier de vulnérabilités plus anciennes (voir le
24+
[Bulletin #310][news310 disclosure]). Nous résumons ci-dessous les divulgations :
25+
26+
- [Crash à distance en envoyant des messages `addr` excessifs][] : avant
27+
Bitcoin Core 22.0 (sorti en septembre 2021), un nœud qui était informé de
28+
plus de 2<sup>32</sup> autres nœuds possibles se crasherait en raison de
29+
l'épuisement d'un compteur 32 bits. Cela pourrait être accompli par un
30+
attaquant envoyant un grand nombre de messages P2P `addr` (au moins 4
31+
millions de messages). Eugene Siegel a [divulgué de manière responsable][topic responsible
32+
disclosures]
33+
la vulnérabilité et un correctif a été inclus dans Bitcoin Core 22.0. Voir le
34+
[Bulletin #159][news159 bcc22387] pour notre résumé du correctif,
35+
qui a été écrit sans savoir qu'il corrigeait une
36+
vulnérabilité.
37+
38+
- [Crash à distance sur le réseau local lorsque UPnP est activé][] : avant Bitcoin Core
39+
22.0, les nœuds qui activaient [UPnP][] pour configurer automatiquement [NAT
40+
traversal][] (désactivé par défaut en raison de vulnérabilités précédentes,
41+
voir le [Bulletin #310][news310 miniupnpc]) étaient vulnérables à un
42+
dispositif malveillant sur le réseau local envoyant à plusieurs reprises des variantes
43+
d'un message UPnP. Chaque message pourrait entraîner l'allocation de
44+
mémoire supplémentaire jusqu'à ce que le nœud se crashe ou soit arrêté par le
45+
système d'exploitation. Un bug de boucle infinie dans la dépendance de Bitcoin Core
46+
miniupnpc a été signalé au projet miniupnpc par Ronald Huveneers,
47+
avec Michael Ford découvrant et divulguant de manière responsable comment il
48+
pourrait être utilisé pour crasher Bitcoin Core. Un correctif a été inclus dans Bitcoin
49+
Core 22.0.
50+
51+
Des vulnérabilités supplémentaires affectant les versions ultérieures de Bitcoin Core
52+
devraient être divulguées dans quelques semaines.
53+
54+
- **Optimisation de la construction de blocs avec le cluster de mempool :** Pieter Wuille
55+
a [posté][wuille selection] sur Delving Bitcoin concernant l'assurance que
56+
les modèles de blocs des mineurs peuvent inclure le meilleur ensemble de transactions lorsque
57+
le [cluster de mempool][topic cluster mempool] est utilisé. Dans la conception pour
58+
le cluster de mempool, les _clusters_ de transactions liées sont divisés en
59+
une liste ordonnée de _morceaux_, chaque morceau respectant deux contraintes :
60+
61+
1. Si des transactions au sein du segment dépendent d’autres transactions non confirmées,
62+
ces autres transactions doivent soit faire partie de ce segment,
63+
soit apparaître dans un segment antérieur dans la liste ordonnée des segments.
64+
65+
3. Chaque segment doit avoir un taux de frais égal ou supérieur à celui des segments
66+
qui le suivent dans la liste ordonnée.
67+
68+
Cela permet de placer chaque segment de chaque cluster dans le mempool dans une seule liste, classée
69+
par taux de frais---du plus élevé au plus bas. Avec un mempool segmenté classé par taux de frais, un
70+
mineur peut construire un modèle de bloc en itérant simplement sur chaque segment et en l'incluant
71+
dans son modèle jusqu'à ce qu'il atteigne un segment qui ne rentre pas dans le poids maximal
72+
souhaité pour le bloc (qui est généralement un peu en dessous de la limite de 1 million de vbytes
73+
pour laisser de la place à la transaction coinbase du mineur).
74+
75+
Cependant, les clusters et les segment varient en taille, avec une limite supérieure par défaut
76+
pour un cluster dans Bitcoin Core attendue à environ 100 000 vbytes. Cela signifie qu'un mineur
77+
construisant un modèle de bloc ciblant 998 000 vbytes, et qui a déjà 899 001 vbytes remplis, peut
78+
rencontrer un segment de 99 000 vbytes qui ne rentre pas, laissant environ 10% de l'espace de son
79+
bloc inutilisé. Ce mineur ne peut pas simplement sauter ce segment de 99 000 vbytes et essayer
80+
d'inclure le segment suivant car il pourrait inclure une transaction qui dépend du
81+
segment de 99 000 vbytes. Si un mineur échoue à inclure une transaction dépendante dans son modèle
82+
de bloc, tout bloc qu'il produit à partir de ce modèle sera invalide.
83+
84+
Pour contourner ce problème de cas limite, Wuille décrit comment de grands segment peuvent être
85+
décomposés en plus petits _sous-segments_ qui peuvent être envisagés pour l'inclusion dans l'espace
86+
restant du bloc en fonction de leurs taux de frais. Un sous-segment peut être créé en retirant
87+
simplement la dernière transaction dans n'importe quel segment ou sous-segment existant qui a deux
88+
transactions ou plus. Cela produira toujours au moins un sous-segment plus petit que son segment
89+
original et cela peut parfois résulter en plusieurs sous-segments. Wuille démontre que le nombre de
90+
segments et de sous-segments équivaut au nombre de transactions, chaque transaction appartenant à un
91+
segment ou sous-segment unique. Cela rend possible de précalculer le segment ou sous-segment de
92+
chaque transaction, appelé son _ensemble d'absorption_, et d'associer cela à la transaction. Wuille
93+
montre comment l'algorithme de morcellement existant calcule déjà l'ensemble d'absorption de chaque
94+
transaction.
95+
96+
Lorsqu'un mineur a rempli un modèle avec tous les segments complets possibles, il peut prendre les
97+
ensembles d'absorption précalculés pour toutes les transactions pas encore incluses dans le bloc et
98+
les considérer dans l'ordre des taux de frais. Cela ne nécessite qu'une seule opération de tri sur
99+
une liste avec le même nombre d'éléments qu'il y a de transactions dans le mempool (presque toujours
100+
moins d'un million avec les paramètres actuels). Les ensembles d'absorption avec les meilleurs taux
101+
de frais (segments et sous-segments) peuvent ensuite être utilisés pour remplir l'espace restant du
102+
bloc. Cela nécessite de suivre le nombre de transactions d'un cluster qui ont été incluses jusqu'à
103+
présent et de sauter tout sous-segment qui ne rentre pas ou dont certaines transactions ont déjà été
104+
incluses.
105+
106+
Cependant, bien que les segments puissent être comparés les uns aux autres pour fournir le meilleur
107+
ordre pour l'inclusion dans le bloc, l'ordre individuel des transactions au sein d'un segment ou
108+
sous-segment n'ont pas la garantie d’être dans le meilleur ordre pour n’inclure
109+
que certaines de ces transactions. Cela peut conduire à une sélection non optimale lorsque un
110+
bloc est presque plein. Par exemple, lorsqu'il ne reste que 300 vbytes, l'algorithme pourrait
111+
sélectionner une transaction de 200 vbytes à 5 sats/vbyte (1 000 sats au total) au lieu de deux
112+
transactions de 150 vbytes à 4 sats/vbyte (1 200 sats au total).
113+
114+
Wuille décrit comment les ensembles d'absorption précalculés sont particulièrement utiles dans ce
115+
cas : parce qu'ils ne nécessitent que le suivi du nombre de transactions de chaque cluster qui ont
116+
été incluses jusqu'à présent, ils facilitent la restauration à un état antérieur dans l'algorithme
117+
de remplissage du modèle et le remplacement du choix précédemment effectué par une alternative pour
118+
voir si cela résulte en la collecte de frais totaux plus élevés. Cela permet de mettre en œuvre une
119+
recherche [branch-and-bound][] qui peut essayer de nombreuses combinaisons de remplissage du dernier
120+
bit d'espace de bloc dans l'espoir de trouver un meilleur résultat que l'algorithme simple.
121+
122+
- **Simulateur d'événements réseau Hyperion pour le réseau P2P Bitcoin :**
123+
Sergi Delgado [a posté][delgado hyperion] sur Delving Bitcoin à propos de [Hyperion][], un
124+
simulateur de réseau qu'il a écrit qui suit comment les données se propagent à travers un réseau
125+
Bitcoin simulé. Le travail est initialement motivé par le désir de comparer la méthode actuelle de
126+
Bitcoin pour relayer les annonces de transactions (messages d'inventaire `inv`) à la méthode
127+
proposée [Erlay][topic erlay].
128+
129+
## Mises à jour et versions candidates
130+
131+
*Nouvelles sorties et candidats à la sortie pour les projets d'infrastructure Bitcoin populaires.
132+
Veuillez envisager de passer aux nouvelles versions ou d'aider à tester les candidats à la sortie.*
133+
134+
- [BDK 1.0.0-beta.1][] est un candidat à la sortie pour "la première version bêta de `bdk_wallet`
135+
avec une API stable 1.0.0".
136+
137+
### Changements notables dans le code et la documentation
138+
139+
_Changes récents notables dans [Bitcoin Core][bitcoin core repo], [Core Lightning][core lightning
140+
repo], [Eclair][eclair repo], [LDK][ldk repo], [LND][lnd repo], [libsecp256k1][libsecp256k1 repo],
141+
[Interface de Portefeuille Matériel (HWI)][hwi repo], [Rust Bitcoin][rust bitcoin repo], [Serveur
142+
BTCPay][btcpay server repo], [BDK][bdk repo], [Propositions d'Amélioration de Bitcoin (BIPs)][bips
143+
repo], [Lightning BOLTs][bolts repo], [Lightning BLIPs][blips repo], [Inquisition Bitcoin][bitcoin
144+
inquisition repo], et [BINANAs][binana repo]._
145+
146+
- [Bitcoin Core #30515][] ajoute le hash du bloc UTXO et le nombre de confirmations comme champs
147+
supplémentaires à la réponse de la commande RPC `scantxoutset`. Cela fournit un identifiant plus
148+
fiable pour le bloc UTXO que juste la hauteur du bloc, surtout puisque des réorganisations de la
149+
chaîne peuvent se produire.
150+
151+
- [Bitcoin Core #30126][] introduit une fonction de [linéarisation de cluster][wuille cluster]
152+
`Linearize` qui opère sur des clusters de transactions liées pour créer ou améliorer des
153+
linéarisations, dans le cadre du projet de [cluster de mempool][topic cluster mempool]. Les linéarisations
154+
de cluster suggèrent un ordre maximisant les frais dans lequel les transactions d'un cluster
155+
pourraient être ajoutées aux modèles de blocs (ou un ordre de perte de frais minimaux dans lequel
156+
elles peuvent être évacuées d'un mempool plein). Ces fonctions
157+
ne sont pas encore intégrés dans le mempool, donc il n'y a pas de changement de comportement dans
158+
cette PR.
159+
160+
- [Bitcoin Core #30482][] améliore la validation des paramètres pour le point d'accès REST
161+
`getutxos` en rejetant les txids tronqués ou trop grands et en lançant une erreur de parse
162+
`HTTP_BAD_REQUEST`. Auparavant, cela échouait également, mais était géré silencieusement.
163+
164+
- [Bitcoin Core #30275][] change le mode par défaut de la commande RPC `estimatesmartfee` de
165+
conservateur à économique. Ce changement est basé sur les observations des utilisateurs et des
166+
développeurs selon lesquelles le mode conservateur conduit souvent à un paiement excessif des frais
167+
de transaction car il est moins réactif aux baisses à court terme du marché des frais que le mode
168+
économique lors de [l'estimation des frais][topic fee estimation].
169+
170+
- [Bitcoin Core #30408][] remplace l'utilisation de l'expression "public key script" par "output
171+
script" pour faire référence à un `scriptPubKey` dans le texte d'aide pour les commandes RPC
172+
suivantes `decodepsbt`, `decoderawtransaction`, `decodescript`, `getblock` (si verbosity=3),
173+
`getrawtransaction` (si verbosity=2,3), et `gettxout`. C'est la même formulation utilisée dans le
174+
BIP proposé pour la terminologie des transactions (Voir le Bulletin [#246][news246 bipterminology]).
175+
176+
- [Core Lightning #7474][] met à jour le plugin [offres][topic offers] pour permettre les plages
177+
expérimentales nouvellement définies pour les types Type-Length-Value (TLV) utilisés dans les
178+
offres, les demandes de facture et les factures. Cela a été récemment ajouté à la pull request
179+
[BOLT12][bolt12 pr] non fusionnée dans le dépôt BOLTs.
180+
181+
- [LND #8891][] ajoute un nouveau champ `min_relay_fee_rate` à la réponse attendue d'une source
182+
externe d'[estimation des frais][topic fee estimation], permettant au service de spécifier le taux
183+
minimum de frais de relais. Si non spécifié, le `FeePerKwFloor` par défaut de 1012 sats/kvB (1.012
184+
sats/vbyte) sera utilisé. Le PR améliore également la fiabilité du démarrage en retournant une
185+
erreur de `EstimateFeePerKW` si appelé avant que l'estimateur de frais ne soit complètement
186+
initialisé.
187+
188+
- [LDK #3139][] améliore la sécurité des [offres][topic offers] BOLT12 en authentifiant
189+
l'utilisation de [chemins aveuglés][topic rv routing]. Sans cette authentification, l'attaquant
190+
Mallory peut prendre l'offre de Bob et demander une facture à chaque nœud du réseau pour déterminer
191+
lequel d'entre eux appartient à Bob, annulant l'avantage de confidentialité de l'utilisation d'un
192+
chemin aveuglé. Pour corriger cela, un nonce de 128 bits est maintenant inclus dans le chemin
193+
aveuglé crypté de chaque offre, plutôt que dans les métadonnées non cryptées de l'offre. Ce
194+
changement invalide les paiements sortants et les remboursements avec des chemins aveuglés non vides
195+
créés dans les versions précédentes. D'autre part, les offres créées dans les versions précédentes
196+
sont toujours valides mais sont vulnérables aux attaques de désanonymisation, donc les utilisateurs
197+
peuvent vouloir les régénérer après avoir mis à jour vers une version de LDK qui inclut ce
198+
correctif.
199+
200+
- [Rust Bitcoin #3010][] introduit un champ de longueur à `sha256::Midstate`, permettant un suivi
201+
plus flexible et précis de l'état du hachage lors de la génération incrémentielle d'un digest
202+
SHA256. Ce changement peut affecter les implémentations existantes qui se fient à la structure
203+
`Midstate` précédente.
204+
205+
{% assign four_days_after_posting = page.date | date: "%s" | plus: 345600 | date: "%Y-%m-%d 14:30" %}
206+
{% include snippets/recap-ad.md when=four_days_after_posting %}
207+
{% include references.md %}
208+
{% include linkers/issues.md v=2 issues="30515,30126,30482,30275,30408,7474,8891,3139,3010" %}
209+
[BDK 1.0.0-beta.1]: https://github.com/bitcoindevkit/bdk/releases/tag/v1.0.0-beta.1
210+
[wuille selection]: https://delvingbitcoin.org/t/cluster-mempool-block-building-with-sub-chunk-granularity/1044
211+
[branch-and-bound]: https://en.wikipedia.org/wiki/Branch_and_bound
212+
[delgado hyperion]: https://delvingbitcoin.org/t/hyperion-a-discrete-time-network-event-simulator-for-bitcoin-core/1042
213+
[hyperion]: https://github.com/sr-gi/hyperion
214+
[news310 disclosure]: /fr/newsletters/2024/07/05/#divulgation-de-vulnerabilites-affectant-les-versions-de-bitcoin-core-anterieures-a-0-21-0
215+
[Crash à distance en envoyant des messages `addr` excessifs]: https://bitcoincore.org/en/2024/07/31/disclose-addrman-int-overflow/
216+
[news159 bcc22387]: /en/newsletters/2021/07/28/#bitcoin-core-22387
217+
[news310 miniupnpc]: /fr/newsletters/2024/07/05/#execution-de-code-a-distance-due-a-un-bug-dans-miniupnpc
218+
[Crash à distance sur le réseau local lorsque UPnP est activé]: https://bitcoincore.org/en/2024/07/31/disclose-upnp-oom/
219+
[upnp]: https://en.wikipedia.org/wiki/Universal_Plug_and_Play
220+
[nat traversal]: https://en.wikipedia.org/wiki/NAT_traversal
221+
[wuille cluster]: https://delvingbitcoin.org/t/introduction-to-cluster-linearization/1032
222+
[goegge disclosure]: https://mailing-list.bitcoindevs.xyz/bitcoindev/[email protected]/
223+
[news246 bipterminology]: /fr/newsletters/2023/04/12/#proposition-de-bip-pour-la-terminologie-des-transactions
224+
[bolt12 pr]: https://github.com/lightning/bolts/pull/798

0 commit comments

Comments
 (0)