Bitcoin, pièce par pièce · 6 min · démo interactive

Frais Bitcoin : comment le mempool fixe le prix

Un bloc a une place limitée et personne ne fixe de tarif. Ta transaction entre en concurrence avec toutes les autres dans une enchère ouverte.

L’idée en une phrase

Les frais Bitcoin sont une enchère : chaque transaction propose un tarif pour une place limitée dans le prochain bloc, et les mineurs prennent les offres les plus hautes.

Le tarif s'exprime en satoshis par octet virtuel (sat/vB). Tu paies pour la place que ta transaction occupe dans le bloc, pas pour le montant qu'elle déplace. Envoyer 10 BTC peut coûter moins cher qu'envoyer 0,001 BTC.

La démo

705 satce que tu paies (141 vB)
–devant toi dans la file
–blocs estimés sans nouvelles offres
–tarif plancher du prochain bloc
–en attente au total
Mempool simulé rempli. Clique sur « Miner un bloc ».

Exemple sans JavaScript : une transaction classique à 1 entrée et 2 sorties occupe environ 141 vB. À 5 sat/vB, elle coûte 705 sat, et à 50 sat/vB, 7 050 sat, quel que soit le montant. Si 2 MvB de transactions attendent et que 1 MvB offre plus que toi, tu passes dans le deuxième bloc, à condition que personne de mieux payé n'arrive entre-temps. Les tarifs de la démo sont aléatoires et illustratifs : ils ne reflètent pas le réseau réel.

Intégrer cette démo

Copie ce code sur ton site, ton cours ou ton blog. La démo reste gratuite ; garde simplement le lien vers protocole.org.

Pourquoi ça compte

Tu envoies un paiement avec un tarif trop bas pendant un pic d'activité. Il n'échoue pas, il ne se passe simplement rien. Ta transaction reste en attente pendant des heures, ou des jours, et le destinataire ne la voit pas confirmée. Une heure plus tard, le même paiement aurait pu passer dans le bloc suivant pour une fraction du prix.

Comprendre l'enchère évite deux erreurs symétriques : payer trop pour rien, ou payer trop peu et rester bloqué. Elle explique aussi pourquoi le réseau a des frais variables alors qu'aucun organisme ne les décide, et pourquoi le revenu des mineurs dépendra de plus en plus de ces frais après chaque halving.

Le code

Le mineur trie par tarif, puis remplit son bloc. Ce mini-mempool fait la même chose, avec un bloc de 1 000 vB seulement. Change monTarif ou ajoute des transactions pour voir ton rang bouger.

Clique sur Lancer pour exécuter ce code dans ton navigateur.

Ce qui se passe vraiment

La courbe est une photographie du mempool, la salle d'attente des transactions diffusées mais pas encore confirmées. Chaque nœud tient la sienne. L'axe horizontal mesure la profondeur de la file, en millions d'octets virtuels. L'axe vertical donne le tarif. À gauche, les offres les plus hautes, celles que le mineur prend d'abord. Le point marque ta transaction.

Un bloc réel contient au plus 4 millions d'unités de poids, soit 1 MvB. La lecture est donc immédiate : la première graduation de 1 MvB correspond au prochain bloc, la deuxième au suivant. La statistique « tarif plancher » indique l'offre la plus basse qui entre encore dans le prochain bloc.

Clique sur « Miner un bloc ». Le simulateur prend les meilleurs tarifs jusqu'à remplir 1 MvB, les retire de la file et affiche le tarif le plus bas retenu. Puis de nouvelles transactions arrivent, certaines mieux payées que la tienne. Elles te passent devant : ce n'est pas une file d'attente chronologique. Dans une enchère, l'ancienneté ne compte pas.

Essaie maintenant deux réglages. Mets « Arrivées par bloc » à 0,5 MvB : le réseau absorbe plus qu'il ne reçoit, la file se vide et le tarif plancher baisse. Mets-le à 2 MvB : la file grossit bloc après bloc et un tarif bas peut attendre sans fin. Le réseau ne fait pas payer plus cher par décision, c'est la demande qui dépasse une offre fixe.

Le coût affiché vient d'une multiplication : 141 vB × ton tarif. La taille vient du nombre d'entrées et de sorties, expliqué sur la page des UTXO. Depuis SegWit, les signatures comptent quatre fois moins dans le poids, ce qui explique les unités en octets virtuels : 1 vB vaut 4 unités de poids.

La démo simplifie. Elle tire les tarifs au hasard, ne modélise ni les liens entre transactions ni les délais aléatoires entre blocs, et traite chaque transaction seule. Un vrai mineur évalue aussi des paquets de transactions dépendantes.

Dans la vraie vie

Personne ne garantit une place. Les wallets estiment le tarif à partir de l'historique récent ou du mempool, puis te proposent des niveaux de priorité. Ces estimations peuvent se tromper, car le prochain bloc peut arriver au bout de 30 secondes ou d'une heure : le minage suit un processus aléatoire, et 10 minutes n'est qu'une moyenne.

Si tu as visé trop bas, deux techniques existent. Le Replace-by-Fee (RBF) rediffuse la même transaction avec un tarif plus élevé, les nœuds remplaçant alors l'ancienne version. Le Child-Pays-for-Parent (CPFP) dépense une sortie de la transaction bloquée dans une transaction fille très bien payée : le mineur doit inclure la parente pour toucher les frais de la fille.

Le mempool n'est pas infini. Un nœud limite sa taille en mémoire, 300 Mo par défaut dans Bitcoin Core, et écarte les offres les plus basses quand il déborde. Une transaction qui reste trop longtemps sans confirmation finit par être oubliée, après deux semaines par défaut. Tes fonds ne sont pas perdus pour autant, car la transaction n'a jamais été inscrite.

Pour les petits paiements fréquents, l'attente et le coût du bloc poussent vers une autre couche. Le Lightning Network règle la plupart des échanges hors chaîne et n'utilise un bloc que pour ouvrir et fermer un canal. Sur Ethereum, le mécanisme diffère : voir le gas.

Ce qui peut mal tourner

  • Payer selon le montant. Les frais ne sont pas un pourcentage. Une petite somme en de nombreuses pièces peut coûter plus cher qu'une grosse somme en une seule pièce. Le calculateur de frais chiffre cet écart selon tes entrées et tes sorties.
  • Oublier la sortie de monnaie. Les frais sont l'écart entre entrées et sorties. Sans sortie de monnaie, toute la différence va au mineur, et un bloc miné ne se défait pas.
  • Accepter une transaction non confirmée comme définitive. Tant qu'elle n'est pas dans un bloc, l'expéditeur peut la remplacer par une autre qui lui rend les fonds. Pour une grosse somme, attends plusieurs confirmations.
  • Désactiver le RBF sans y penser. Sans remplacement possible, tu n'as plus que le CPFP, qui suppose une sortie à toi, pour débloquer un paiement.
  • Se fier à un estimateur pendant un pic. Une estimation peut dater de plusieurs minutes. Regarde l'état du mempool avant d'envoyer une somme urgente, sans croire qu'il promet un bloc.
  • Répondre à un faux support. « Payez ces frais pour débloquer votre transaction » est une arnaque courante. Une transaction bloquée se règle depuis ton propre wallet, jamais en envoyant des fonds à un tiers.

Teste-toi

1. Une transaction de 141 vB à 20 sat/vB transporte 5 BTC. Combien coûte-t-elle ?
2. Ta transaction attend depuis une heure et une offre mieux payée arrive. Que fait un mineur rationnel ?
3. Laquelle de ces actions augmente les frais d'une transaction déjà diffusée ?