Cancel queued transactions without paying gas (since they were not yet broadcast to mempool)

When multiple transactions are queued in Metamask, they have not yet been broadcast to the mempool. Therefore, the user should have the ability to remove these transactions from the queue without paying a gas fee. Please enable user to cancel queued transactions without paying gas to remove them from the app’s queue.

If its possible that I will upvote hard. It would save me a ton of money!

5 Likes

Unfortunately this is not a feature MetaMask has any control over. The transactions need to be paid for regardless. What you can do if you have stuck transactions, I’d find the first pending transaction and then send yourself or someone $5 worth of eth and edit the nounce Number to the one that is pending. This will clear the transaction and your fee will be minimal.

7 Likes

This is not a problem that metamask can control. The solution is to initiate a new transaction to overwrite the previously stuck transaction. There is a tutorial on overwriting transactions in the official website, and a little knowledge is required. If you are not sure, please use this function with caution.

6 Likes

For clarity, this post is not about stuck transactions. It’s about queued transactions that have not yet been broadcast to the mempool because the latest transaction is still pending.

2 Likes

Hi @Roti ,

It is not possible to send tokens without paying some type of gas, even if it’s on an L2, there are fees for gas to complete the transaction.

2 Likes

@KBeeTheCapybara For clarity, we are discussing queued transactions that have not yet been broadcast to the mempool. These should not require gas to remove from the queue, right?

2 Likes

Hi @BTCAlchemist ,

Once you’ve signed a transaction, it’s sent out (broadcasted). To cancel the transaction, whether it’s queued or pending, the transaction signer has to pay gas to cancel (assuming it hasn’t gone through at that point).

If your transaction is queued (not pending, but queued), it’s in a transaction pool/mempool, waiting to become a pending transaction.

Check out this MetaMask Knowledge Base article (link here) which dives deeply into Transaction information. I’ve pulled a helpful quote from it below on this topic -

"Guillaume opens up his MetaMask wallet, enters Dolores’ address, configures the gas parameters that he’s comfortable with paying, and hits ‘send’.

At this point, the transaction enters a local temporary holding status, known as the local memory pool, or local mempool"

For numbered step by step transaction breakdown, here is a reference from Ledger Academy (link here) -

The process of a transaction can be broken down into six steps:

  1. Someone requests a transaction. The transaction could involve cryptocurrency, contracts, records, or other information.

  2. Transaction is broadcast to all P2P participation computers in the specific blockchain network. These are called Nodes. All transactions are published to the Mem-pool or memory pool, where they are considered ‘pending’. Gas fees are paid by users as part of the transaction to compensate for the computing energy required to process and validate transactions on the blockchain.

  3. Miners verify the transaction. Every computer in the network checks the transaction against some validation rules that are set by the creators of the specific blockchain network.

  4. Validated transactions are stored into a block and are sealed with a lock referred to as the Hash.

  5. New block is added to the existing Blockchain. This block becomes part of the blockchain when other computers in the network validate if the lock on the block is correct.

  6. The transaction is complete. Now the transaction is part of the blockchain and cannot be altered in any way.

Hope above helps give some clarify. :fox_face:

2 Likes

Hello @KBeeTheCapybara, I appreciate the detailed reply! The point that doesn’t make sense is that transactions queued in the MetaMask wallet would not yet be broadcast to the mempool. If they were, they could all be included in the same block and confirmed at the same time (assuming the gas price is sufficient). However, this is never the case, as queued transactions never get confirmed together. Therefore, MetaMask queues them locally and then submits only the active transaction to the mempool. Given this, the user should not pay gas to remove the queued transaction since it has not yet been sent to the mempool. Please let me know if this makes sense.

2 Likes

@KBeeTheCapybara Did you have a chance to read the above reply?

Hi @BTCAlchemist !,

I did! I’m going to ask some info from bigger brains on this. I don’t want to share the wrong info or make inaccurate statements. Will return!

3 Likes

If this is accurate, I’d consider it a bug, and probably recommend that MetaMask submit all pending transactions to the RPC.

Would you agree that would probably be right?

To force MetaMask to forget about its pending tx queue you can go into settings and use the “Reset Account” button (in Advanced? You can search in the settings pane if not.)

5 Likes

umm 10 months already, so is it possible? is it on the process (but taking awhile)?

2 Likes

I’ve confirmed that MetaMask does submit in a batch, so this looks to be a network provider issue. We’ve forwarded the issue to Infura, who is redesigning their tx processing system, and will ensure that batch submission is handled correctly in the rewrite.

4 Likes

Like I said in the post before yours, the lack of batch submission is a bug, not a feature to further entrench with special additional features around it.

If you need to discard pending txs for now, you can use the “Reset Account” feature in the settings. Long term we can’t guarantee this will work to cancel for free, since a connected node might remember a transaction and process it later.

5 Likes

I’m going to lock this thread so the workaround isn’t buried with people asking for it.

4 Likes