mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-20 13:37:28 +02:00
Merge 07087051af into merged_master (Bitcoin PR #19556)
Added a method testPeginClaimAcceptance to interfaces::CChain. It is not clear to me that this is meaningfully different from the existing method broadcastTransaction (with the `relay` flag set to false so it doesn't actually broadcast), except that this method returns the TxValidationState, which we display to the user in the RPC error. Worth revisiting this. Another nonobvious change was replacing a block of mempool-searching logic in wallet/rpcwallet.cpp with the single line `pwallet->chain().findCoins(coins)`. This I stole from the current state of upstream #17211, our favorite in-progress PR from which the original logic came.
This commit is contained in:
commit
2a0cf12ecc
13 changed files with 55 additions and 47 deletions
30
src/init.cpp
30
src/init.cpp
|
|
@ -190,7 +190,7 @@ void Shutdown(NodeContext& node)
|
|||
/// Be sure that anything that writes files or flushes caches only does this if the respective
|
||||
/// module was initialized.
|
||||
util::ThreadRename("shutoff");
|
||||
mempool.AddTransactionsUpdated(1);
|
||||
if (node.mempool) node.mempool->AddTransactionsUpdated(1);
|
||||
|
||||
StopHTTPRPC();
|
||||
StopREST();
|
||||
|
|
@ -235,8 +235,8 @@ void Shutdown(NodeContext& node)
|
|||
node.connman.reset();
|
||||
node.banman.reset();
|
||||
|
||||
if (::mempool.IsLoaded() && node.args->GetArg("-persistmempool", DEFAULT_PERSIST_MEMPOOL)) {
|
||||
DumpMempool(::mempool);
|
||||
if (node.mempool && node.mempool->IsLoaded() && node.args->GetArg("-persistmempool", DEFAULT_PERSIST_MEMPOOL)) {
|
||||
DumpMempool(*node.mempool);
|
||||
}
|
||||
|
||||
if (fFeeEstimatesInitialized)
|
||||
|
|
@ -306,7 +306,7 @@ void Shutdown(NodeContext& node)
|
|||
GetMainSignals().UnregisterBackgroundSignalScheduler();
|
||||
globalVerifyHandle.reset();
|
||||
ECC_Stop();
|
||||
node.mempool = nullptr;
|
||||
node.mempool.reset();
|
||||
node.chainman = nullptr;
|
||||
node.scheduler.reset();
|
||||
node.reverification_scheduler.reset();
|
||||
|
|
@ -787,10 +787,7 @@ static void ThreadImport(ChainstateManager& chainman, std::vector<fs::path> vImp
|
|||
return;
|
||||
}
|
||||
} // End scope of CImportingNow
|
||||
if (args.GetArg("-persistmempool", DEFAULT_PERSIST_MEMPOOL)) {
|
||||
LoadMempool(::mempool);
|
||||
}
|
||||
::mempool.SetIsLoaded(!ShutdownRequested());
|
||||
chainman.ActiveChainstate().LoadMempool(args);
|
||||
}
|
||||
|
||||
/** Sanity checks
|
||||
|
|
@ -1093,11 +1090,6 @@ bool AppInitParameterInteraction(const ArgsManager& args)
|
|||
}
|
||||
}
|
||||
|
||||
// Checkmempool and checkblockindex default to true in regtest mode
|
||||
int ratio = std::min<int>(std::max<int>(args.GetArg("-checkmempool", chainparams.DefaultConsistencyChecks() ? 1 : 0), 0), 1000000);
|
||||
if (ratio != 0) {
|
||||
mempool.setSanityCheck(1.0 / ratio);
|
||||
}
|
||||
fCheckBlockIndex = args.GetBoolArg("-checkblockindex", chainparams.DefaultConsistencyChecks());
|
||||
fCheckpointsEnabled = args.GetBoolArg("-checkpoints", DEFAULT_CHECKPOINTS_ENABLED);
|
||||
|
||||
|
|
@ -1422,10 +1414,18 @@ bool AppInitMain(const util::Ref& context, NodeContext& node, interfaces::BlockA
|
|||
node.banman = MakeUnique<BanMan>(GetDataDir() / "banlist.dat", &uiInterface, args.GetArg("-bantime", DEFAULT_MISBEHAVING_BANTIME));
|
||||
assert(!node.connman);
|
||||
node.connman = MakeUnique<CConnman>(GetRand(std::numeric_limits<uint64_t>::max()), GetRand(std::numeric_limits<uint64_t>::max()), args.GetBoolArg("-networkactive", true));
|
||||
|
||||
// Make mempool generally available in the node context. For example the connection manager, wallet, or RPC threads,
|
||||
// which are all started after this, may use it from the node context.
|
||||
assert(!node.mempool);
|
||||
node.mempool = &::mempool;
|
||||
node.mempool = MakeUnique<CTxMemPool>(&::feeEstimator);
|
||||
if (node.mempool) {
|
||||
int ratio = std::min<int>(std::max<int>(args.GetArg("-checkmempool", chainparams.DefaultConsistencyChecks() ? 1 : 0), 0), 1000000);
|
||||
if (ratio != 0) {
|
||||
node.mempool->setSanityCheck(1.0 / ratio);
|
||||
}
|
||||
}
|
||||
|
||||
assert(!node.chainman);
|
||||
node.chainman = &g_chainman;
|
||||
ChainstateManager& chainman = *Assert(node.chainman);
|
||||
|
|
@ -1613,7 +1613,7 @@ bool AppInitMain(const util::Ref& context, NodeContext& node, interfaces::BlockA
|
|||
chainman.m_total_coinstip_cache = nCoinCacheUsage;
|
||||
chainman.m_total_coinsdb_cache = nCoinDBCache;
|
||||
|
||||
UnloadBlockIndex(node.mempool);
|
||||
UnloadBlockIndex(node.mempool.get());
|
||||
|
||||
// new CBlockTreeDB tries to delete the existing file, which
|
||||
// fails if it's still open from the previous loop. Close it first:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue