Unsure if a transaction is stuck on a node

On 12/4, I had a transaction broadcast from a node that is owned by my company. The node accepted the transaction and responded with a transaction hash. After some time, we looked the transaction up and noticed it had not gone out. It is not visible on the explorer

https://ardor.tools/transaction/ARDR/11a8a7b33f9b55f59a9ae98ddaff21b175b19170508b1b9bf133d1f8d364d0c3

Each day I have queried our node for this transaction and receive similar replies (even when querying unconfirmed tx) that the tx is unknown. The leads me to this forum and wanting to know does ARDR have a mempool? when can we assume this transaction is really dead? is there a way to verify?

1 Like

Hello @gregn . First of all, I would like to ask if your node is up to date? I suspect that the reason is the Ardor hard fork that occurred at block 3700000 on December 1st.

If you haven't updated your node to the latest version 2.5.0 you have been out of the mainnet.

@ArdorBulgaria Yes, the node is up to date. It was updated on Dec 1st. This transaction was executed on December 4th

1 Like

I understand.... I have a case where bundlers on the childchains are not putting my transactions into the blocks. In the last few days I had a case where several transactions sended at the same time were entering each subsequent block separately. The default memory pool is set to 15 minutes, if they expire the transaction will not be confirmed.
I can't say exactly what your case is, but you can see the sender address of the transaction, whether a one has been recorded, if not, maybe something similar has happened to you.

@ArdorBulgaria can you link me to the line of code in the Node that shows the default 15 minute expiration? just so I can verify myself

hmmmmm.... this setting was used by Tarasca when they were testing the load on their game, but I don't remember, @petko.petkov can surely answer this question for you.
Please wait, I guess he will answer you very soon.

Yes, but we call it "unconfirmed transactions pool". It's the same concept though.

We don't have a Replace-by-fee feature like Bitcoin. Instead each transaction has a timestamp and a deadline that are specified by the creator of the transaction. The timestamp is in seconds, the deadline is in minutes. The expiration time can be easily calculated as timestamp + deadline * 60. After the expiration time, you can be sure that the transaction is really dead and no one can include it in a block.

The default deadline is 15 minutes as @ArdorBulgaria wrote. This can be seen in Constants.DEFAULT_TRANSACTION_DEADLINE. So, if you didn't specify a deadline when creating the transaction, it should be 15.

2 Likes