diff --git a/src/ticking/pending_txs_pool.h b/src/ticking/pending_txs_pool.h index a8016bab1..41b565540 100644 --- a/src/ticking/pending_txs_pool.h +++ b/src/ticking/pending_txs_pool.h @@ -11,7 +11,6 @@ #include "mining/mining.h" -#include "contracts/qpi.h" #include "contracts/math_lib.h" #include "contract_core/qpi_collection_impl.h" @@ -90,9 +89,12 @@ class PendingTxsPool } else { - // calculate tx priority as [balance of src] * [scheduledTick - latestOutgoingTransferTick + 1] - EntityRecord entity = spectrum[sourceIndex]; - priority = smul(balance, static_cast(tx->tick - entity.latestOutgoingTransferTick + 1)); + // Calculate tx priority as: [balance of src] * [scheduledTick - latestTransferTick + 1] with + // latestTransferTick = latestOutgoingTransferTick if latestOutgoingTransferTick > 0, + // latestTransferTick = latestIncomingTransferTick otherwise (new entity). + const EntityRecord& entity = spectrum[sourceIndex]; + const unsigned int latestTransferTick = (entity.latestOutgoingTransferTick) ? entity.latestOutgoingTransferTick : entity.latestIncomingTransferTick; + priority = math_lib::smul(balance, static_cast(tx->tick - latestTransferTick + 1)); // decrease by 1 to make sure no normal tx reaches max priority priority--; }