| 1057 | } |
| 1058 | |
| 1059 | UniValue MempoolInfoToJSON(const CTxMemPool& pool) |
| 1060 | { |
| 1061 | // Make sure this call is atomic in the pool. |
| 1062 | LOCK(pool.cs); |
| 1063 | UniValue ret(UniValue::VOBJ); |
| 1064 | ret.pushKV("loaded", pool.GetLoadTried()); |
| 1065 | ret.pushKV("size", pool.size()); |
| 1066 | ret.pushKV("bytes", pool.GetTotalTxSize()); |
| 1067 | ret.pushKV("usage", pool.DynamicMemoryUsage()); |
| 1068 | ret.pushKV("total_fee", ValueFromAmount(pool.GetTotalFee())); |
| 1069 | ret.pushKV("maxmempool", pool.m_opts.max_size_bytes); |
| 1070 | ret.pushKV("mempoolminfee", ValueFromAmount(std::max(pool.GetMinFee(), pool.m_opts.min_relay_feerate).GetFeePerK())); |
| 1071 | ret.pushKV("minrelaytxfee", ValueFromAmount(pool.m_opts.min_relay_feerate.GetFeePerK())); |
| 1072 | ret.pushKV("incrementalrelayfee", ValueFromAmount(pool.m_opts.incremental_relay_feerate.GetFeePerK())); |
| 1073 | ret.pushKV("unbroadcastcount", pool.GetUnbroadcastTxs().size()); |
| 1074 | ret.pushKV("permitbaremultisig", pool.m_opts.permit_bare_multisig); |
| 1075 | ret.pushKV("maxdatacarriersize", pool.m_opts.max_datacarrier_bytes.value_or(0)); |
| 1076 | ret.pushKV("limitclustercount", pool.m_opts.limits.cluster_count); |
| 1077 | ret.pushKV("limitclustersize", pool.m_opts.limits.cluster_size_vbytes); |
| 1078 | ret.pushKV("optimal", pool.m_txgraph->DoWork(0)); // 0 work is a quick check for known optimality |
| 1079 | if (IsDeprecatedRPCEnabled("fullrbf")) { |
| 1080 | ret.pushKV("fullrbf", true); |
| 1081 | } |
| 1082 | return ret; |
| 1083 | } |
| 1084 | |
| 1085 | static RPCMethod getmempoolinfo() |
| 1086 | { |
no test coverage detected