mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-03-02 01:36:13 +00:00
rpc: add optimal result to getmempoolinfo
Expose this value to allow rpc based tooling to track this value for network health diagnostics.
This commit is contained in:
parent
a3fb3dd55c
commit
a9e59f7d95
@ -874,6 +874,7 @@ UniValue MempoolInfoToJSON(const CTxMemPool& pool)
|
||||
ret.pushKV("maxdatacarriersize", pool.m_opts.max_datacarrier_bytes.value_or(0));
|
||||
ret.pushKV("limitclustercount", pool.m_opts.limits.cluster_count);
|
||||
ret.pushKV("limitclustersize", pool.m_opts.limits.cluster_size_vbytes);
|
||||
ret.pushKV("optimal", pool.m_txgraph->DoWork(0)); // 0 work is a quick check for known optimality
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -900,6 +901,7 @@ static RPCHelpMan getmempoolinfo()
|
||||
{RPCResult::Type::NUM, "maxdatacarriersize", "Maximum number of bytes that can be used by OP_RETURN outputs in the mempool"},
|
||||
{RPCResult::Type::NUM, "limitclustercount", "Maximum number of transactions that can be in a cluster (configured by -limitclustercount)"},
|
||||
{RPCResult::Type::NUM, "limitclustersize", "Maximum size of a cluster in virtual bytes (configured by -limitclustersize)"},
|
||||
{RPCResult::Type::BOOL, "optimal", "If the mempool is in a known-optimal transaction ordering"},
|
||||
}},
|
||||
RPCExamples{
|
||||
HelpExampleCli("getmempoolinfo", "")
|
||||
|
||||
@ -306,6 +306,9 @@ class MempoolClusterTest(BitcoinTestFramework):
|
||||
|
||||
assert_equal(node.getrawmempool(), [])
|
||||
|
||||
# Key should exist and be trivially optimal
|
||||
assert node.getmempoolinfo()["optimal"]
|
||||
|
||||
# Not in-mempool
|
||||
not_mempool_tx = self.wallet.create_self_transfer()
|
||||
assert_raises_rpc_error(-5, "Transaction not in mempool", node.getmempoolcluster, not_mempool_tx["txid"])
|
||||
@ -367,6 +370,9 @@ class MempoolClusterTest(BitcoinTestFramework):
|
||||
chunkfee = first_chunk_tx["fee"] + second_chunk_tx["fee"] + third_chunk_tx["fee"]
|
||||
assert_equal(first_chunk_info, {'clusterweight': first_chunkweight + second_chunkweight + third_chunkweight, 'txcount': 3, 'chunks': [{'chunkfee': first_chunk_tx["fee"], 'chunkweight': first_chunkweight, 'txs': [first_chunk_tx["txid"]]}, {'chunkfee': second_chunk_tx["fee"], 'chunkweight': second_chunkweight, 'txs': [second_chunk_tx["txid"]]}, {'chunkfee': third_chunk_tx["fee"], 'chunkweight': third_chunkweight, 'txs': [third_chunk_tx["txid"]]}]})
|
||||
|
||||
# We expect known optimality directly after txn submission
|
||||
assert node.getmempoolinfo()["optimal"]
|
||||
|
||||
# If we prioritise the last transaction it can join the second transaction's chunk.
|
||||
node.prioritisetransaction(third_chunk_tx["txid"], 0, int(third_chunk_tx["fee"]*COIN) + 1)
|
||||
first_chunk_info = node.getmempoolcluster(first_chunk_tx["txid"])
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user