Solo a scopo educativo; non costituisce consulenza né raccomandazione d’investimento. Gli investimenti possono comportare perdite.
Risposta diretta
La sostituzione di una transazione Ethereum è una politica locale del pool di transazioni in base alla quale un nodo può preferire una nuova transazione firmata rispetto a un’altra candidata dello stesso mittente e con lo stesso nonce. Non è un interruttore Replace-by-Fee globale a livello di consenso. L’accettazione del nuovo hash da parte di un nodo non cancella la vecchia transazione firmata dagli altri nodi, relay privati o builder; soltanto l’inclusione canonica determina quale candidata consuma il nonce dell’account.
La funzione Accelera di un wallet conserva normalmente destinazione, valore e calldata originali, aumentando i campi di commissione. Un Annullamento nel pool pubblico crea normalmente un trasferimento a sé stessi di valore zero con lo stesso mittente e nonce. È una transazione concorrente, non un’operazione di ripristino: se viene inclusa prima l’originale, il relativo trasferimento o la chiamata al contratto non vengono annullati. Le rotte private specifiche di un prodotto possono definire API di annullamento differenti; per esempio, Flashbots Protect documenta un annullamento autenticato che non viene pubblicato onchain e che non va generalizzato alla sostituzione pubblica delle transazioni Ethereum.
Come funziona
- Fissare la lineage esatta: chain ID, client e versione, blocco di testa e base fee, rotta di invio, mittente, nonce canonico dell’account, byte grezzi firmati, hash e tipo della transazione originale. Interrogare più viste pubbliche o private pertinenti; l’etichetta di un wallet o una singola risposta RPC non rappresentano lo stato globale.
- Classificare correttamente l’originale come rifiutata, pending localmente, in coda dietro un gap di nonce, scartata o rimossa, inviata privatamente, inclusa con successo, inclusa con
status = 0, rimossa da una riorganizzazione o finalizzata. Non considerare più disponibile la sostituzione quando il nonce è stato consumato canonicamente, anche se una riorganizzazione può riaprire la corsa. - Definire la nuova intenzione. Un’accelerazione deve riprodurre ogni campo semantico previsto; un tentativo pubblico di annullamento utilizza normalmente lo stesso mittente e nonce con
to = sender,value = 0e calldata vuoti. Prima di firmare, confrontare chain ID, tipo, destinazione, valore, calldata, access list, gas limit, hash dei blob e autorizzazione. - Consultare l’effettiva politica di sostituzione del nodo destinatario. Le transazioni legacy e di tipo 1 usano
gasPrice; quelle di tipo 2 espongonomaxFeePerGasemaxPriorityFeePerGas; quelle di tipo 3 espongono anchemaxFeePerBlobGase richiedono il sidecar. Gli attuali valori predefiniti Gethtxpool.pricebump = 10eblobpool.pricebump = 100sono esempi di configurazione Geth, non costanti valide per l’intera rete Ethereum. - Calcolare separatamente l’idoneità e la copertura finanziaria dell’aumento. Per il tipo 2, il prezzo effettivo è
min(maxFeePerGas, baseFeePerGas + maxPriorityFeePerGas). La candidata richiede inoltre codifica valida, gas intrinseco sufficiente e saldo per coprire valore ed esposizione massima alle commissioni; un massimale più elevato non corregge calldata non validi né garantisce l’esecuzione EVM con successo. - Inviare deliberatamente e conservare ogni risposta. La ritrasmissione pubblica può rivelare l’intenzione ed esporla al MEV; i relay privati hanno visibilità, annullamento, copertura dei builder e disponibilità propri. Tracciare hash vecchio e nuovo su ogni rotta senza presumere che l’accettazione locale abbia eliminato la concorrente e senza inviare alla cieca una terza candidata che trasferisca valore.
- Riconciliare la vincitrice sulla chain canonica. Verificare blocco e hash della ricevuta, indice della transazione,
status, gas utilizzato, prezzo effettivo del gas, log, nonce del mittente, saldi e stato del contratto al livello di finalità richiesto. Registrare gli hash perdenti come sostituiti, scartati o ancora osservati in base alle evidenze e ripetere l’analisi dopo una riorganizzazione.
Esempi svolti
- Aumento didattico di una normale transazione di tipo 2. Una vecchia candidata ha
maxFeePerGas = 40 gweiemaxPriorityFeePerGas = 2 gwei. Con una configurazione didattica Geth che prevede un aumento del10%, le soglie aritmetiche sono44 gweie2.2 gwei. Una candidata a44/2.1 gweinon raggiunge la soglia della mancia;44/2.2 gweiraggiunge entrambe le soglie didattiche. Con una base fee di32 gweie21,000unità di gas utilizzate, il prezzo effettivo è34.2 gwei, la commissione totale è718,200 gwei = 0.0007182 ETH, il base burn è0.000672 ETHe la mancia è0.0000462 ETH. L’accettazione effettiva dipende da implementazione, versione e arrotondamento a wei interi. - Sensibilità alla base fee. Una sostituzione ha massimali
66/4.4 gwei. Con una base fee di60 gwei, il prezzo effettivo èmin(66, 60 + 4.4) = 64.4 gwei. Con una base fee di65 gwei, il prezzo effettivo è66 gweie la mancia effettiva è solo1 gwei. Con una base fee di67 gwei, vale66 < 67, quindi la candidata non è idonea con quel massimale, anche se ha superato una verifica locale dell’aumento. - Corsa di annullamento. La transazione originale con nonce
20invia5 ETHa un commerciante. Se vince a21,000 * 42 gwei = 0.000882 ETH, il commerciante riceve5 ETHe l’annullamento ha poi un nonce troppo basso. Se vince il trasferimento a sé stessi di valore zero a21,000 * 45 gwei = 0.000945 ETH, consuma il nonce20e impedisce all’originale di entrare successivamente nella stessa storia canonica. Nessuno dei due risultati è deducibile dal solo clic su Annulla. - Confine del blob pool. Una vecchia candidata di tipo 3 ha massimale della commissione di esecuzione
100 gwei, massimale della mancia3 gweie massimale della commissione blob20 gwei. Con una configurazione didattica del blob pool Geth che prevede un aumento del100%, le soglie aritmetiche sono200/6/40 gwei. Una candidata a200/6/39 gweinon raggiunge il massimale blob;200/6/40 gweiraggiunge tutte e tre le soglie didattiche, ma richiede comunque sidecar, nonce, saldo e ammissione al pool validi. Questi valori non sono regole per transazioni normali o altri client.
Rischi
- Selezione del chain ID o della rete errati.
- Selezione del mittente o del nonce dell’account errati.
- Utilizzo di blocco di testa, base fee o nonce canonico non aggiornati.
- Tentativo di sostituzione dopo l’inclusione o la finalizzazione dell’originale.
- Applicazione delle regole del txpool ordinario a una
UserOperationERC-4337. - Presunzione che un altro client, provider, versione o configurazione utilizzi la stessa politica.
- Mancato raggiungimento della soglia di aumento a causa dell’arrotondamento a wei interi.
- Aumento di un solo campo di commissione richiesto da EIP-1559.
- Impostazione di
maxFeePerGassotto la base fee del blocco candidato. - Omissione del massimale della commissione blob, del sidecar o di una regola speciale del blob pool.
- Saldo insufficiente per valore e commissioni massime autorizzate.
- Firma, tipo, codifica, gas intrinseco o dominio della chain non validi.
- Modifica involontaria di destinazione, valore, calldata, access list o hash dei blob.
- Perdita della corsa di inclusione da parte di una transazione pubblica di annullamento.
- Permanenza della vecchia transazione presso altri nodi o negli input dei builder.
- Perdita di riservatezza, censura, scarto o mancato annullamento dell’invio da parte di un relay privato.
- Esposizione dell’intenzione a frontrunning, sandwiching o altro MEV tramite ritrasmissione pubblica.
- Blocco delle transazioni successive per un gap di nonce o induzione di un trasferimento duplicato.
- Inclusione della sostituzione con successivo revert o esaurimento del gas, consumando nonce e commissioni.
- Riattivazione o classificazione errata delle candidate per errori di riorganizzazione, finalità o lineage delle ricevute.
Falsi miti comuni
- Una candidata con una commissione maggiore cancella globalmente la vecchia transazione.
- Due transazioni con lo stesso nonce numerico si sostituiscono anche se hanno mittenti differenti.
- Il pulsante Annulla di un wallet revoca una transazione già inclusa.
- L’accettazione della sostituzione da parte di un nodo dimostra che i builder la includeranno.
- Una regola universale di aumento del 10% copre ogni client, transazione blob, relay privato e
UserOperation.
Argomenti correlati
Fonti
- Transactions - Ethereum.org (consultato: 2026-08-13)
- EIP-1559: Fee market change for ETH 1.0 chain - Ethereum Improvement Proposals (consultato: 2026-08-13)
- txpool Namespace - go-ethereum (consultato: 2026-08-13)
- Command-line Options - go-ethereum (consultato: 2026-08-13)
- eth_sendRawTransaction - Ethereum Execution APIs (consultato: 2026-08-13)
- EIP-4844: Shard Blob Transactions - Ethereum Improvement Proposals (consultato: 2026-08-13)
- ERC-4337: Account Abstraction Using Alt Mempool - Ethereum Improvement Proposals (consultato: 2026-08-13)
- Cancellations - Flashbots Documentation (consultato: 2026-08-13)