fix incorrect resolved substates for rejected transations
calculate merkle root for block after all executions for a block are complete
commit JMT diff as part of block changeset
fix deferred transaction finalization
fix mempool marks transaction as deferred and sends to consensus instead of ABORTing deferred transactions immediately
Motivation and Context
Number of omissions and bugs in deferred transaction execution are fixed in the PR.
How Has This Been Tested?
Manually, commenting out code in the wallet daemon and mempool that fills or resolves inputs for a transaction and use unversioned inputs. The results in deferred execution which succeeds after this PR. Tested creating an account and transferring. Also tested concurrent local-only conflicting transactions, the second transaction was aborted due to a lock conflict, this still needs to be investigated.
What process can a PR reviewer use to test or verify this change?
It's currently not possible to directly test this on a single-shard network without forcing transactions to be deferred in code. Mutlishard deferred is not currently supported because we cannot resolve foreign inputs.
Description
Motivation and Context
Number of omissions and bugs in deferred transaction execution are fixed in the PR.
How Has This Been Tested?
Manually, commenting out code in the wallet daemon and mempool that fills or resolves inputs for a transaction and use unversioned inputs. The results in deferred execution which succeeds after this PR. Tested creating an account and transferring. Also tested concurrent local-only conflicting transactions, the second transaction was aborted due to a lock conflict, this still needs to be investigated.
What process can a PR reviewer use to test or verify this change?
It's currently not possible to directly test this on a single-shard network without forcing transactions to be deferred in code. Mutlishard deferred is not currently supported because we cannot resolve foreign inputs.
Breaking Changes