Initialy, we think that was because we need to send all the funds in the sender account and it haven’t enough balance to cover fee and gas, but we verify that it have enough balance and the message persist
The user creates a transaction locally and signs it
The user posts that transaction to a node. The node does some checks for the transaction, for example if the authentication is correct, if the nonce looks ok (it should be greater than the last used nonce but not too big). The amounts of the account are not checked at this point. If the transaction passes all tests - it enters the transaction pool, the node broadcasts it to his peers, they do similar checks and broadcast it to their peers and so on. If a check fails - a proper error is being returned to the SDK.
Once the transaction reaches the generation leader, one tries including it in a block. This is when accounts’ balances are checked, the nonce must be last_nonce + 1 and so on. If the checks pass - the transaction gets included in a micro block and gets a block hash If a check does not pass - the transaction is being postponed for a later block.
If a transaction is not included a lot of times (256 generations by default), it gets kicked out of the transaction pool.
The error I am seeing from the URL above is
{"reason":"Transaction not found"}
This could happen in the following cases:
the transaction was never posted to a node
wrong transaction hash
the checks of step 2 above failed
the transaction had been invalid for some time (256 generations by default) and was garbage collected from the transaction pool
This is how the node works. Given just a hash to a missing transaction - this is the best I could do. If I had to do a wild guess, that would be the third bullet. Yet, it does not look like an SDK issue
I solved the problem of my application by removing the call to the contract function, I am doing the calculations that I need in my application and I am only sending the funds from one account to another, it is not the most “decentralized” solution, but it works, we will continue studying and learning, to perform this contract implementation in a next version