1

Several questions about guarantees of transactions:

  1. Can valid transaction be not accepted in the beginning, so it will not make into pending pool?
  2. Can it expire once it in the pending pool? (without any other actions from the same address)
  3. Is there guarantee that transaction will be eventually executed(assuming there's no infinite amount of transactions with higher gas price)?
0

There is no guarantee your transaction will be accepted currently. Your contract needs a fallback (check oracle if Tx through, and resend after X with new nonce) to make sure it is executed. It is annoying, but hopefully will be changed in the future.

0

Can valid transaction be not accepted in the beginning, so it will not make into pending pool?

You can run any kind of node you want. Most likely your node would not reject such a thing and would broadcast to it others. Most likely they would proceed on the assumption that others know about it as well so there is little to be gained from active interference. However, there is no guarantee that any miner anywhere will include it in a block.

Can it expire once it in the pending pool? (without any other actions from the same address)

Yes. In particular, if the gasPrice is too low and it doesn't get included in a block for a long time and then is crowded out by newer transactions. No one is under any obligation to hold a queue and some nodes discard the pending queue on restart.

Is there guarantee that transaction will be eventually executed(assuming there's no infinite amount of transactions with higher gas price)?

No. It can be forgotten.

There are further complications that are particularly troublesome for nodes that wish to send high volumes of transactions. Users and developers run into these issues when they erroneously send a transadction with a low gasPrice.

Consider this:

There is also no guarantee that a transaction has been forgotten. It still "might" happen.

Transactions from the same address are guaranteed to mine in nonce order. So, if one goes missing (say, because the gasPrice was too low), the subsequent transactions are blocked.

Reliably resolving such a situation to remove all doubt would be a topic for another post. It's a handy thing to know, and vital if working with high transaction throughput s one can script an automated resolution and carry on.

Hope it helps.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.