Skip to content

[BUG] Bug: Prover node stuck on "replacement transaction underpriced" during L1 cancellation #23543

@Manaudou

Description

@Manaudou

What are you trying to do?

Subject: Bug Report: Prover Node stuck on replacement transaction underpriced during L1 Tx cancellation (viem@2.38.2)Hi Aztec Devs,I am running an Aztec Prover Node (version 4.3.0) connected to a custom Sepolia L1 RPC node. The prover node regularly gets stuck and crashes when an L1 transaction times out.The issue:When submitEpochProof times out after txTimeoutMs, l1-tx-utils attempts to send a cancellation transaction with the same nonce. However, the L1 RPC rejects it with:InvalidInputRpcError: Missing or invalid parameters. Details: replacement transaction underpricedRoot cause:The internal version of viem@2.38.2 used by the node does not correctly bump the maxPriorityFeePerGas (or leaves it at 0) for EIP-1559 transactions during replacement/cancellation. Because of this, custom Geth/Nethermind nodes strictly reject the replacement transaction according to pool pricing rules.Furthermore, attempts to override this behavior using standard env variables like L1_GAS_PRICE_BUMP_PERCENTAGE, L1_MIN_PRIORITY_FEE_PER_GAS, or GAS_PRICE_MULTIPLIER seem to be ignored by this version's l1-tx-utils config parser.Could you please look into how viem handles fee bumping for transaction cancellations in EIP-1559 networks?Thank you!

Logs

Details: replacement transaction underpriced
Version: viem@2.38.2
at formatViemError (file:///usr/src/yarn-project/ethereum/dest/utils.js:165:16)
...
[19:52:37.741] ERROR: prover:l1-tx-utils Failed to send cancellation for timed out tx...

Code Reference

Error logs from l1-tx-utils during epoch proof submission:

Details: replacement transaction underpriced
Version: viem@2.38.2
at formatViemError (file:///usr/src/yarn-project/ethereum/dest/utils.js:165:16)
at L1TxUtils.monitorTransaction (file:///usr/src/yarn-project/ethereum/dest/l1_tx_utils/l1_tx_utils.js:433:35)
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
at async L1TxUtils.sendAndMonitorTransaction (file:///usr/src/yarn-project/ethereum/dest/l1_tx_utils/l1_tx_utils.js:518:25)
[19:52:37.741] ERROR: prover:l1-tx-utils Failed to send cancellation for timed out tx 0x3aafb22875e6863394f784abc9f001ecae6700d326efaa09ab4e3d95c92a2224 with nonce 13: InvalidInputRpcError: Missing or invalid parameters


Update: The issue repeated exactly the same way in the very next epoch (3001) on nonce 14:

Details: replacement transaction underpriced
Version: viem@2.38.2
at formatViemError (file:///usr/src/yarn-project/ethereum/dest/utils.js:165:16)
[20:23:49.336] ERROR: prover:l1-tx-utils Failed to send cancellation for timed out tx 0xe18391a437bb29a860a78472278eb70deb5aa8ea97199a702fd357689eeef4c4 with nonce 14

Aztec Version

testnet - Image aztecprotocol/aztec:4.3.0

OS

No response

Browser (if relevant)

No response

Node Version

No response

Additional Context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    T-bugType: Bug. Something is broken.from-communityThis originated from the community :)

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions