﻿---
title: "Remplacement des transactions dans le mempool Ethereum"
description: "Guide propre à chaque client sur le remplacement des transactions Ethereum du même émetteur et de même nonce, le relèvement des plafonds de frais, les courses d'annulation, les transactions blob, les routes privées, les reçus et la finalité."
image: "https://wiki.fcontext.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://wiki.fcontext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Remplacement des transactions dans le mempool Ethereum

> À des fins éducatives uniquement ; ne constitue ni un conseil en investissement ni une recommandation d’investissement. Les investissements peuvent entraîner des pertes.

<a id="answer"></a>

## Réponse directe

Le remplacement d'une transaction Ethereum est une politique locale du pool de transactions selon laquelle un nœud peut préférer une transaction nouvellement signée à une autre candidate du même émetteur et portant le même `nonce`. Il ne s'agit pas d'un interrupteur Replace-by-Fee global au niveau du consensus. L'acceptation du nouveau hash par un nœud n'efface pas l'ancienne transaction signée chez les autres nœuds, relais privés ou builders ; seule l'inclusion canonique détermine quelle candidate consomme le nonce du compte.

L'action Accélérer d'un portefeuille conserve généralement la destination, la valeur et les calldata d'origine tout en relevant les champs de frais. Une action Annuler dans le pool public crée généralement un transfert de valeur nulle vers le compte lui-même, avec le même émetteur et le même nonce. C'est une transaction concurrente, pas une opération d'annulation rétroactive : si l'originale est incluse en premier, son transfert ou son appel de contrat n'est pas inversé. Les routes privées propres à un produit peuvent définir d'autres API d'annulation ; par exemple, Flashbots Protect documente une annulation authentifiée qui n'est pas publiée onchain et qu'il ne faut pas généraliser au remplacement public des transactions Ethereum.

<a id="mechanism"></a>

## Fonctionnement

1. Fixez la filiation exacte : ID de chaîne, client et version, bloc de tête et base fee, route de soumission, émetteur, nonce canonique du compte, octets bruts signés, hash et type de la transaction initiale. Interrogez plusieurs vues publiques ou privées pertinentes ; l'étiquette d'un portefeuille ou la réponse d'un seul RPC ne constitue pas un état global.
2. Classez précisément l'originale comme rejetée, pending localement, en attente derrière un trou de nonce, abandonnée ou évincée, soumise en privé, incluse avec succès, incluse avec `status = 0`, retirée par une réorganisation ou finalisée. Ne considérez plus le remplacement comme disponible dès que le nonce est consommé canoniquement, même si une réorganisation peut rouvrir la course.
3. Définissez la nouvelle intention. Une accélération doit reproduire chaque champ sémantique voulu ; une tentative d'annulation publique utilise normalement le même émetteur et le même nonce avec `to = sender`, `value = 0` et des calldata vides. Avant de signer, comparez l'ID de chaîne, le type, la destination, la valeur, les calldata, l'access list, la limite de gas, les hash de blobs et l'autorisation.
4. Consultez la politique de remplacement effective du nœud cible. Les transactions legacy et de type 1 utilisent `gasPrice` ; celles de type 2 exposent `maxFeePerGas` et `maxPriorityFeePerGas` ; celles de type 3 exposent aussi `maxFeePerBlobGas` et nécessitent le sidecar. Les valeurs par défaut actuelles de Geth `txpool.pricebump = 10` et `blobpool.pricebump = 100` sont des exemples de configuration de Geth, pas des constantes valables sur tout Ethereum.
5. Calculez séparément l'admissibilité et le financement du relèvement. Pour le type 2, le prix effectif est `min(maxFeePerGas, baseFeePerGas + maxPriorityFeePerGas)`. La candidate nécessite également un encodage valide, suffisamment de gas intrinsèque et un solde couvrant la valeur plus l'exposition maximale aux frais ; un plafond supérieur ne répare pas des calldata invalides et ne garantit pas une exécution EVM réussie.
6. Soumettez délibérément et conservez chaque réponse. La rediffusion publique peut révéler l'intention et l'exposer au MEV ; les relais privés ont leurs propres visibilité, annulation, couverture des builders et disponibilité. Suivez l'ancien et le nouveau hash sur chaque route sans supposer que l'acceptation locale a supprimé la concurrente et sans envoyer aveuglément une troisième candidate transférant de la valeur.
7. Rapprochez la gagnante sur la chaîne canonique. Vérifiez le bloc et le hash du reçu, l'index de transaction, le `status`, le gas consommé, le prix effectif du gas, les logs, le nonce de l'émetteur, les soldes et l'état du contrat au niveau de finalité requis. Enregistrez les hash perdants comme remplacés, abandonnés ou toujours observés selon les preuves, puis reprenez l'analyse après une réorganisation.

<a id="example"></a>

## Exemples détaillés

- **Relèvement pédagogique d'une transaction ordinaire de type 2.** Une ancienne candidate a `maxFeePerGas = 40 gwei` et `maxPriorityFeePerGas = 2 gwei`. Avec une configuration pédagogique de Geth exigeant une hausse de `10%`, les seuils arithmétiques sont `44 gwei` et `2.2 gwei`. Une candidate à `44/2.1 gwei` manque le seuil du tip ; `44/2.2 gwei` atteint les deux seuils pédagogiques. Avec une base fee de `32 gwei` et `21,000` unités de gas consommées, le prix effectif est `34.2 gwei`, les frais totaux sont `718,200 gwei = 0.0007182 ETH`, le base burn est de `0.000672 ETH` et le tip de `0.0000462 ETH`. L'acceptation réelle dépend de l'implémentation, de la version et de l'arrondi en wei entiers.
- **Sensibilité à la base fee.** Une transaction de remplacement a des plafonds de `66/4.4 gwei`. Avec une base fee de `60 gwei`, le prix effectif est `min(66, 60 + 4.4) = 64.4 gwei`. Avec une base fee de `65 gwei`, le prix effectif est `66 gwei` et le tip effectif seulement `1 gwei`. Avec une base fee de `67 gwei`, on a `66 < 67` ; la candidate n'est donc pas admissible sous ce plafond, même si elle a satisfait un test local de relèvement.
- **Course d'annulation.** La transaction initiale de nonce `20` envoie `5 ETH` à un commerçant. Si elle gagne à `21,000 * 42 gwei = 0.000882 ETH`, le commerçant reçoit `5 ETH` et la transaction d'annulation a ensuite un nonce trop faible. Si le transfert de valeur nulle vers soi-même gagne à `21,000 * 45 gwei = 0.000945 ETH`, il consomme le nonce `20` et empêche l'originale d'entrer plus tard dans la même histoire canonique. Un simple clic sur Annuler ne permet de connaître aucun des deux résultats.
- **Limite du blob pool.** Une ancienne candidate de type 3 a un plafond de frais d'exécution de `100 gwei`, un plafond de tip de `3 gwei` et un plafond de frais blob de `20 gwei`. Avec une configuration pédagogique du blob pool de Geth exigeant une hausse de `100%`, les seuils arithmétiques sont `200/6/40 gwei`. Une candidate à `200/6/39 gwei` manque le plafond blob ; `200/6/40 gwei` atteint les trois seuils pédagogiques, mais nécessite toujours un sidecar, un nonce, un solde et une admission dans le pool valides. Ces valeurs ne sont pas des règles pour les transactions ordinaires ou les autres clients.

<a id="risks"></a>

## Risques

- Sélection du mauvais ID de chaîne ou du mauvais réseau.
- Sélection du mauvais émetteur ou nonce de compte.
- Utilisation d'un bloc de tête, d'une base fee ou d'un nonce canonique obsolètes.
- Tentative de remplacement après l'inclusion ou la finalisation de l'originale.
- Application des règles du txpool ordinaire à une `UserOperation` ERC-4337.
- Hypothèse qu'un autre client, fournisseur, version ou configuration applique la même politique.
- Seuil de relèvement manqué en raison de l'arrondi en wei entiers.
- Relèvement d'un seul champ de frais requis par EIP-1559.
- Définition de `maxFeePerGas` sous la base fee du bloc candidat.
- Oubli d'un plafond de frais blob, du sidecar ou d'une règle particulière du blob pool.
- Solde insuffisant pour la valeur et les frais maximaux autorisés.
- Signature, type, encodage, gas intrinsèque ou domaine de chaîne invalides.
- Modification accidentelle de la destination, de la valeur, des calldata, de l'access list ou des hash de blobs.
- Perte de la course à l'inclusion par une transaction publique d'annulation.
- Persistance de l'ancienne transaction chez d'autres nœuds ou dans les entrées des builders.
- Fuite, censure, abandon ou échec d'annulation de la soumission par un relais privé.
- Exposition de l'intention au frontrunning, au sandwiching ou à un autre MEV par rediffusion publique.
- Blocage des transactions suivantes par un trou de nonce ou déclenchement d'un transfert en double.
- Inclusion de la transaction de remplacement suivie d'un revert ou d'un épuisement du gas, avec consommation du nonce et des frais.
- Réactivation ou classement erroné des candidates par des erreurs de réorganisation, de finalité ou de filiation des reçus.

<a id="misconceptions"></a>

## Idées reçues courantes

- Une candidate aux frais supérieurs supprime globalement l'ancienne transaction.
- Deux transactions ayant le même nonce numérique se remplacent même si leurs émetteurs diffèrent.
- Le bouton Annuler d'un portefeuille inverse une transaction déjà incluse.
- L'acceptation de la transaction de remplacement par un nœud prouve que les builders l'incluront.
- Une règle universelle de hausse de 10 % couvre tous les clients, transactions blob, relais privés et `UserOperation`.

<a id="related"></a>

## Sujets associés

- [Mempools et pools de transactions](/fr/crypto/mempool/)
- [Frais de gas](/fr/crypto/gas-fee/)
- [Nonce de compte](/fr/crypto/nonce-crypto/)

<a id="sources"></a>

## Sources

- [Transactions](https://ethereum.org/developers/docs/transactions/) - Ethereum.org (consulté le : 2026-08-13)
- [EIP-1559: Fee market change for ETH 1.0 chain](https://eips.ethereum.org/EIPS/eip-1559) - Ethereum Improvement Proposals (consulté le : 2026-08-13)
- [txpool Namespace](https://geth.ethereum.org/docs/interacting-with-geth/rpc/ns-txpool) - go-ethereum (consulté le : 2026-08-13)
- [Command-line Options](https://geth.ethereum.org/docs/fundamentals/command-line-options) - go-ethereum (consulté le : 2026-08-13)
- [eth_sendRawTransaction](https://ethereum.github.io/execution-apis/api/methods/eth_sendRawTransaction/) - Ethereum Execution APIs (consulté le : 2026-08-13)
- [EIP-4844: Shard Blob Transactions](https://eips.ethereum.org/EIPS/eip-4844) - Ethereum Improvement Proposals (consulté le : 2026-08-13)
- [ERC-4337: Account Abstraction Using Alt Mempool](https://eips.ethereum.org/EIPS/eip-4337) - Ethereum Improvement Proposals (consulté le : 2026-08-13)
- [Cancellations](https://docs.flashbots.net/flashbots-protect/cancellations) - Flashbots Documentation (consulté le : 2026-08-13)

Source: https://wiki.fcontext.com/fr/crypto/mempool-replacement/index.mdx
