@@ -374,6 +374,36 @@ UniValue MempoolToJSON(const CTxMemPool& pool, bool verbose, bool include_mempoo
374
374
}
375
375
}
376
376
377
+ static RPCHelpMan maxmempool ()
378
+ {
379
+ return RPCHelpMan{" maxmempool" ,
380
+ " \n Sets the allocated memory for the memory pool.\n " ,
381
+ {
382
+ {" megabytes" , RPCArg::Type::NUM, RPCArg::Optional::NO, " The memory allocated in MB" },
383
+ },
384
+ RPCResult{
385
+ RPCResult::Type::NONE, " " , " " },
386
+ RPCExamples{
387
+ HelpExampleCli (" maxmempool" , " 150" ) + HelpExampleRpc (" maxmempool" , " 150" )
388
+ },
389
+ [&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
390
+ {
391
+ int nSize = request.params [0 ].getInt <int >();
392
+ int64_t nMempoolSizeMax = nSize * 1000000 ;
393
+
394
+ CTxMemPool& mempool = EnsureAnyMemPool (request.context );
395
+ LOCK (mempool.cs );
396
+
397
+ int64_t nMempoolSizeMin = mempool.m_opts .limits .descendant_size_vbytes * 40 ;
398
+ if (nMempoolSizeMax < 0 || nMempoolSizeMax < nMempoolSizeMin)
399
+ throw JSONRPCError (RPC_INVALID_PARAMETER, strprintf (" MaxMempool size %d is too small" , nSize));
400
+ mempool.m_opts .max_size_bytes = nSize;
401
+
402
+ return NullUniValue;
403
+ }
404
+ };
405
+ }
406
+
377
407
static RPCHelpMan getrawmempool ()
378
408
{
379
409
return RPCHelpMan{" getrawmempool" ,
@@ -1027,6 +1057,7 @@ void RegisterMempoolRPCCommands(CRPCTable& t)
1027
1057
{" blockchain" , &getrawmempool},
1028
1058
{" blockchain" , &importmempool},
1029
1059
{" blockchain" , &savemempool},
1060
+ {" blockchain" , &maxmempool},
1030
1061
{" rawtransactions" , &submitpackage},
1031
1062
};
1032
1063
for (const auto & c : commands) {
0 commit comments