Assume you submit a transaction to a Full Node which is configured incorrectly such that it can forward transactions but does not receive back results, e.g. it is working one-way Full Node x-> Validators instead of two way Full Node <-> Validators.

As a user, you might retry to send the same transaction such that the same one (except for the tx nonce) will be in the transaction pool twice. However, that transaction might already be included in a block, you just don't know that because the Full Node you trust is stale.

What prevents your retry to be executed as well? If I understand correctly, after including the transaction, your account nonce will be bumped. Also, transactions are per default ordered by increasing nonces. Thus, the second attempt of you transaction can then be included in the block as well.

  • I believe there is a concept misconception in this scenario. Transactions with different tx nonces are by definition different transactions. If a user wants to replace a queued transaction in the transaction pool, they should re-use the same nonce.
    – Iker
    Sep 2, 2022 at 6:11
  • I might have phrased it poorly: In my scenario, a user just wants to send a single transaction. But that user is impatient and after not seeing it finalized after a while, they think somethings wrong and just do the same transaction again.
    – 0x5hmoo
    Sep 2, 2022 at 7:37
  • Indeed, if the user is impatient and wants to submit the SAME transaction again, they should use the SAME tx nonce. From the protocol standpoint, transactions with different nonces are essentially different transactions, so your scenario above is expected.
    – Iker
    Sep 2, 2022 at 9:37


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.