In the protocol rules for validating transactions it says:

Rule 9:

For each input, if the referenced output exists in any other tx in the pool, reject this transaction.[5]

I assume that when a node receives a transaction it has to validate it applying those rules before adding it to the memory pool and resending it. Also miners will only add transactions to blocks if they are validated, that is, they are in the memory pool. Please correct me if I'm wrong.

Let's say I broadcast a valid transaction with such a low fee that no miner is willing to add it to a block, but it is valid, nodes who received it validated it and miners also validated it but it is stuck in the limbo, it is not in any block so the recipient cannot reference any output in this transaction.

Is there any way of re-spending the inputs referenced in this transaction? I think I have to wait until the transaction is removed from the memory pool of the miners but I'm not sure. If this is true, how long does it take?


Well, you can initiate the transaction with same input referenced, but the node in the network will not add your transaction in their mempool, since they already have an transaction with same input.

Any transaction can stay in mempool upto 14 days, after that it gets invalidated and rejected. So you have wait 14 days

New contributor
Ali Mobasshir is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.

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.