diff --git a/src/rpc/mining.cpp b/src/rpc/mining.cpp index c35dcc7c28..356a76a9f1 100644 --- a/src/rpc/mining.cpp +++ b/src/rpc/mining.cpp @@ -511,6 +511,7 @@ static RPCHelpMan getprioritisedtransactions() {RPCResult::Type::NUM, "fee_delta", "transaction fee delta in satoshis"}, {RPCResult::Type::BOOL, "in_mempool", "whether this transaction is currently in mempool"}, {RPCResult::Type::NUM, "modified_fee", /*optional=*/true, "modified fee in satoshis. Only returned if in_mempool=true"}, + {RPCResult::Type::NUM, "priority_delta", /*optional=*/true, "transaction coin-age priority delta"}, }} }, }, @@ -530,6 +531,7 @@ static RPCHelpMan getprioritisedtransactions() if (delta_info.in_mempool) { result_inner.pushKV("modified_fee", *delta_info.modified_fee); } + result_inner.pushKV("priority_delta", delta_info.priority_delta); rpc_result.pushKV(delta_info.txid.GetHex(), std::move(result_inner)); } return rpc_result; diff --git a/src/txmempool.cpp b/src/txmempool.cpp index 2dd082bdee..457367782d 100644 --- a/src/txmempool.cpp +++ b/src/txmempool.cpp @@ -947,7 +947,7 @@ std::vector CTxMemPool::GetPrioritisedTransactions() con const bool in_mempool{iter != mapTx.end()}; std::optional modified_fee; if (in_mempool) modified_fee = iter->GetModifiedFee(); - result.emplace_back(delta_info{in_mempool, delta.second, modified_fee, txid}); + result.emplace_back(delta_info{in_mempool, delta.second, delta.first, modified_fee, txid}); } return result; } diff --git a/src/txmempool.h b/src/txmempool.h index 01d93b9fdb..303ea9e7f0 100644 --- a/src/txmempool.h +++ b/src/txmempool.h @@ -511,6 +511,7 @@ public: const bool in_mempool; /** The fee delta added using PrioritiseTransaction(). */ const CAmount delta; + const double priority_delta; /** The modified fee (base fee + delta) of this entry. Only present if in_mempool=true. */ std::optional modified_fee; /** The prioritised transaction's txid. */ diff --git a/test/functional/test_framework/test_node.py b/test/functional/test_framework/test_node.py index 3baa78fd79..7efc30ed4f 100755 --- a/test/functional/test_framework/test_node.py +++ b/test/functional/test_framework/test_node.py @@ -346,6 +346,14 @@ class TestNode(): assert not invalid_call return self.__getattr__('generatetodescriptor')(*args, **kwargs) + def getprioritisedtransactions(self, *args, **kwargs): + res = self.__getattr__('getprioritisedtransactions')(*args, **kwargs) + assert not (args or kwargs) + for res_val in res.values(): + if res_val['priority_delta'] == 0: + del res_val['priority_delta'] + return res + def setmocktime(self, timestamp): """Wrapper for setmocktime RPC, sets self.mocktime""" if timestamp == 0: