diff --git a/src/init.cpp b/src/init.cpp --- a/src/init.cpp +++ b/src/init.cpp @@ -1958,8 +1958,6 @@ return false; } - fIsBareMultisigStd = - args.GetBoolArg("-permitbaremultisig", DEFAULT_PERMIT_BAREMULTISIG); fAcceptDatacarrier = args.GetBoolArg("-datacarrier", DEFAULT_ACCEPT_DATACARRIER); diff --git a/src/kernel/mempool_options.h b/src/kernel/mempool_options.h --- a/src/kernel/mempool_options.h +++ b/src/kernel/mempool_options.h @@ -36,6 +36,7 @@ */ CFeeRate min_relay_feerate_per_kb{DEFAULT_MIN_RELAY_TX_FEE_PER_KB}; CFeeRate dust_relay_feerate{DUST_RELAY_TX_FEE}; + bool permit_bare_multisig{DEFAULT_PERMIT_BAREMULTISIG}; bool require_standard{true}; }; } // namespace kernel diff --git a/src/mempool_args.cpp b/src/mempool_args.cpp --- a/src/mempool_args.cpp +++ b/src/mempool_args.cpp @@ -8,6 +8,7 @@ #include <chainparams.h> #include <consensus/amount.h> +#include <policy/policy.h> #include <tinyformat.h> #include <util/error.h> #include <util/moneystr.h> @@ -56,6 +57,9 @@ mempool_opts.dust_relay_feerate = CFeeRate(n); } + mempool_opts.permit_bare_multisig = + argsman.GetBoolArg("-permitbaremultisig", DEFAULT_PERMIT_BAREMULTISIG); + mempool_opts.require_standard = !argsman.GetBoolArg("-acceptnonstdtxn", !chainparams.RequireStandard()); if (!chainparams.IsTestChain() && !mempool_opts.require_standard) { diff --git a/src/policy/settings.h b/src/policy/settings.h --- a/src/policy/settings.h +++ b/src/policy/settings.h @@ -14,7 +14,6 @@ // Policy settings which are configurable at runtime. extern uint32_t nBytesPerSigCheck; -extern bool fIsBareMultisigStd; static inline int64_t GetVirtualTransactionSize(int64_t nSize, int64_t nSigChecks) { diff --git a/src/policy/settings.cpp b/src/policy/settings.cpp --- a/src/policy/settings.cpp +++ b/src/policy/settings.cpp @@ -5,5 +5,4 @@ #include <policy/settings.h> -bool fIsBareMultisigStd = DEFAULT_PERMIT_BAREMULTISIG; uint32_t nBytesPerSigCheck = DEFAULT_BYTES_PER_SIGCHECK; diff --git a/src/txmempool.h b/src/txmempool.h --- a/src/txmempool.h +++ b/src/txmempool.h @@ -479,6 +479,7 @@ const std::chrono::seconds m_expiry; const CFeeRate m_min_relay_feerate; const CFeeRate m_dust_relay_feerate; + const bool m_permit_bare_multisig; const bool m_require_standard; /** diff --git a/src/txmempool.cpp b/src/txmempool.cpp --- a/src/txmempool.cpp +++ b/src/txmempool.cpp @@ -162,6 +162,7 @@ : m_check_ratio(opts.check_ratio), m_max_size_bytes{opts.max_size_bytes}, m_expiry{opts.expiry}, m_min_relay_feerate{opts.min_relay_feerate_per_kb}, m_dust_relay_feerate{opts.dust_relay_feerate}, + m_permit_bare_multisig{opts.permit_bare_multisig}, m_require_standard{opts.require_standard} { // lock free clear _clear(); diff --git a/src/validation.cpp b/src/validation.cpp --- a/src/validation.cpp +++ b/src/validation.cpp @@ -519,8 +519,8 @@ // Rather not work on nonstandard transactions (unless -testnet) std::string reason; if (m_pool.m_require_standard && - !IsStandardTx(tx, ::fIsBareMultisigStd, m_pool.m_dust_relay_feerate, - reason)) { + !IsStandardTx(tx, m_pool.m_permit_bare_multisig, + m_pool.m_dust_relay_feerate, reason)) { return state.Invalid(TxValidationResult::TX_NOT_STANDARD, reason); }