Aller au contenu
buybitcoinsmart

Glossaire / Minage et consensus

Poids de bloc

Qu'est-ce que le poids de bloc ?
Le poids de bloc mesure un bloc bitcoin sur une échelle où un octet de données témoin coûte 1 unité et tout autre octet coûte 4, dans la limite de 4 000 000 unités.

Spécifié dans BIP-141.

Le poids existe parce que les octets n'ont pas tous le même coût pour un nœud. Les données de signature peuvent être écartées une fois qu'une transaction est enfouie, c'est pourquoi le BIP141 les a facturées au quart de tout le reste et a fixé le budget à 4 000 000 unités par bloc. Votre retrait est en concurrence pour ce budget, et cette remise explique pourquoi un envoi depuis une adresse moderne coûte moins cher qu'un envoi depuis une adresse ancienne.

Comment cela fonctionne

La formule du BIP141 se lit ainsi : le poids est égal à la taille de base multipliée par trois, plus la taille totale. La taille de base est le bloc sérialisé à l'ancienne, témoins retirés ; la taille totale est la sérialisation complète. Écrite dans l'autre sens, la même règle dit quatre unités par octet hors témoin et une unité par octet témoin, et c'est cette version qu'il vaut la peine de retenir.

Divisez le poids par quatre et arrondissez à l'entier supérieur, vous obtenez des octets virtuels, l'unité qu'utilisent tous les estimateurs de frais et tous les portefeuilles. Un paiement qui dépense deux entrées et crée deux sorties, toutes en SegWit natif, représente environ 208 octets virtuels, soit environ 832 unités de poids. Remplissez un bloc avec rien d'autre et vous en faites tenir près de 4 800. Le même paiement construit à partir d'adresses héritées pay to public key hash mesure environ 374 octets, ce qui pèse 1 496 unités parce qu'aucune partie ne bénéficie de la remise, si bien que seuls environ 2 670 tiendraient.

Cet écart est tout l'intérêt de la conception. Accorder une remise sur les témoins a rendu l'adoption de SegWit rentable en soi : un portefeuille qui faisait la mise à jour obtenait des frais plus faibles sur chaque transaction, sans qu'il faille convaincre quiconque qu'un bloc plus grand était sûr. Cela oriente aussi les comportements dans une direction que le réseau souhaite, puisque dépenser d'anciennes sorties et les regrouper dans des sorties neuves coûte moins cher par entrée qu'auparavant.

Deux détails prennent les gens en défaut. Le poids se calcule par transaction puis s'additionne, donc le poids d'un bloc est la somme de ses transactions plus son en-tête et ses compteurs, et un mineur qui remplit un bloc résout un problème de sac à dos face au budget de 4 000 000 unités plutôt qu'à un nombre d'octets. Et le poids n'a aucun rapport avec la valeur : une transaction de 900 unités de poids qui déplace 40 bitcoin et une qui déplace 40 000 satoshis paient des frais identiques, parce que le réseau facture l'espace, jamais le montant.

Où le voit-on

Tout explorateur de blocs affiche le poids à côté de la taille, et l'appel RPC Bitcoin Core getblock renvoie weight, size et strippedsize comme trois champs distincts. Les visualisations de mempool reposent aussi dessus : les barres qui montrent ce qui attend une confirmation sont empilées par taux de frais en sat/vB, ce qui revient à diviser le poids par quatre au dénominateur.

Le poids est aussi ce qu'une plateforme d'échange vous facture réellement dans des frais de retrait. Une plateforme qui annonce des frais fixes en bitcoin établit une moyenne sur le poids des transactions qu'elle s'attend à construire, et elle gagne quand le mempool est calme et perd quand il est chargé. Une plateforme qui regroupe, en envoyant des dizaines de retraits clients comme sorties d'une seule transaction, paie pour un jeu d'entrées au lieu de dizaines, et c'est pourquoi les plateformes qui regroupent peuvent se permettre des frais bien plus bas que celles qui diffusent chaque retrait séparément.

Poids de bloc vs octet virtuel

Le poids de bloc est la mesure brute et l'octet virtuel est la même mesure divisée par quatre. Les deux décrivent les mêmes données ; seule l'échelle diffère. Le poids est l'unité inscrite dans les règles de consensus, donc le chiffre de 4 000 000 apparaît dans le code comme un poids. Les octets virtuels sont l'unité inscrite dans les interfaces des portefeuilles, parce qu'un taux de frais de 8 sat/vB est plus facile à appréhender que 2 sat par unité de poids. Quand un portefeuille dit que votre transaction fait 141 vbytes, le bloc dans lequel elle atterrit a 564 unités de place en moins.

À ne pas confondre avec

Questions fréquentes

Comment convertir le poids de bloc en octets virtuels ?

Divisez le poids par quatre et arrondissez à l'entier supérieur. Une transaction de 560 unités de poids fait 140 octets virtuels, et un bloc plein de 4 000 000 unités de poids fait 1 000 000 octets virtuels.

Un montant de bitcoin plus élevé coûte-t-il des frais plus élevés ?

Non. Les frais sont facturés par unité de poids de bloc, pas par bitcoin déplacé. Une transaction qui envoie une fraction de bitcoin et une qui en envoie cinquante peuvent peser autant et payer autant, tant qu'elles ont le même nombre d'entrées et de sorties.

À lire ensuite

Termes associés

Plus de termes : Minage et consensus

Lire cette page en anglais