All Collections
User Guide
How do I fix a "stuck" ethereum transaction
How do I fix a "stuck" ethereum transaction

ethereum stuck transactions, gasPrice

P
Written by Paul Yardley
Updated over a week ago

WARNING:

Playing with gas fees and "nonce" values can have serious consequences. We would strongly advise all customers to select "FAST" transaction speed from API, iOS or TrustVault Web or you run the risk of transactions getting stuck.

Introduction

Ethereum transactions can get "stuck" if the fee is too low. This is because it is not economical for a miner to select the transaction when there are others paying more.

The more you pay per unit of gas (gasPrice) for your transaction the more quickly a miner is incentivised to add it to a block.

If you want to use the TrustVault Web tool to speed up/cancel a transaction click here.

What happens if I have a stuck transaction?

No other transaction from that ethereum address (or TrustVault sub-wallet) can be mined. Further transactions are technically possible (although TrustVault prevents queuing transaction for this reason - unless you use the API and set the nonce yourself) and they would simply queue behind the stuck one. All ethereum transactions MUST be mined in ascending order so a transaction with a lower nonce MUST be mined before a later one.

This video offers a nice high-level overview of Gas.

Can I delete it the transaction if it gets stuck?

No. There is no mechanism to allow this in Ethereum.

What can I do?

Two real options:

  1. Wait

    1. And hope it gets mined

    2. or hope it drops out of the mempool

  2. Replace the transaction with another transaction

Whats the mempool?

The mempool is where all transactions that haven't been mined yet are kept. Each miner can decide how they share these transactions with each other but most will drop/ignore a transaction if the fee is too low. This could happen in a matter of minutes or it could take weeks.

How can I replace the transaction?

Yes, with the TrustVault API or with TrustVault Web.

Ready on for how to use the TrustVault API to send a new transaction or click here to see how to use TrustVault Web.

This is an advanced feature that we only recommend experienced users to attempt.

Running the code below via the API will generate a transaction that will be sent for signing as normal (either by API or iOS device). Please ensure you check the values before signing.

mutation replaceTransaction(
$from: String!
$to: String!
$value: String!
$assetSymbol: String!
$nonce: Int!
$gasPrice: String!
) {
createEthereumTransaction(
createTransactionInput: {
ethereumTransaction: {
to: $to
assetSymbol: $assetSymbol
value: $value
gasLimit: "21000"
gasPrice: $gasPrice
fromAddress: $from
nonce: $nonce
}
source: "API"
sendToNetworkWhenSigned: true
sendToDevicesForSigning: true
}
) {
... on CreateEthereumTransactionResponse {
requestId
}
signData {
transaction {
to
fromAddress
value
gasPrice
gasLimit
nonce
chainId
data
}
}
}
}

Query Variables

{
"from": "<your ETH address>",
"to":"<your ETH address>",
"assetSymbol": "ETH",
"value": "0",
"nonce": 79,
"gasPrice": "120000000000"
}

Notes:

  • The from MUST be the same account sending the transaction

  • The to can be any address, but it is safe to use the same as the from address

  • The assetSymbol. Set this to “ETH"

  • The value. This can be anything but it is safer to set this to zero

  • The nonce MUST be the same nonce as the stuck transaction. This is in integer decimal value. e.g. 10 not 0xA

  • The gasPrice. This is the key attribute it MUST be greater than the stuck transactions. Use a gasTracker to confirm a good high / fast price and add a bit

Please contact Bitpanda Custody if you need help with understanding stuck transactions

Did this answer your question?