|
|
@ -68,7 +68,7 @@ CWallet* pwalletMain = NULL;
|
|
|
|
bool fFeeEstimatesInitialized = false;
|
|
|
|
bool fFeeEstimatesInitialized = false;
|
|
|
|
static const bool DEFAULT_PROXYRANDOMIZE = true;
|
|
|
|
static const bool DEFAULT_PROXYRANDOMIZE = true;
|
|
|
|
static const bool DEFAULT_REST_ENABLE = false;
|
|
|
|
static const bool DEFAULT_REST_ENABLE = false;
|
|
|
|
static const bool DEFAULT_SAFEMODE = true;
|
|
|
|
static const bool DEFAULT_DISABLE_SAFEMODE = false;
|
|
|
|
static const bool DEFAULT_STOPAFTERBLOCKIMPORT = false;
|
|
|
|
static const bool DEFAULT_STOPAFTERBLOCKIMPORT = false;
|
|
|
|
|
|
|
|
|
|
|
|
#if ENABLE_ZMQ
|
|
|
|
#if ENABLE_ZMQ
|
|
|
@ -300,7 +300,7 @@ void OnRPCPreCommand(const CRPCCommand& cmd)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
// Observe safe mode
|
|
|
|
// Observe safe mode
|
|
|
|
string strWarning = GetWarnings("rpc");
|
|
|
|
string strWarning = GetWarnings("rpc");
|
|
|
|
if (strWarning != "" && !GetBoolArg("-disablesafemode", !DEFAULT_SAFEMODE) &&
|
|
|
|
if (strWarning != "" && !GetBoolArg("-disablesafemode", DEFAULT_DISABLE_SAFEMODE) &&
|
|
|
|
!cmd.okSafeMode)
|
|
|
|
!cmd.okSafeMode)
|
|
|
|
throw JSONRPCError(RPC_FORBIDDEN_BY_SAFE_MODE, string("Safe mode: ") + strWarning);
|
|
|
|
throw JSONRPCError(RPC_FORBIDDEN_BY_SAFE_MODE, string("Safe mode: ") + strWarning);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -354,7 +354,7 @@ std::string HelpMessage(HelpMessageMode mode)
|
|
|
|
strUsage += HelpMessageOpt("-bind=<addr>", _("Bind to given address and always listen on it. Use [host]:port notation for IPv6"));
|
|
|
|
strUsage += HelpMessageOpt("-bind=<addr>", _("Bind to given address and always listen on it. Use [host]:port notation for IPv6"));
|
|
|
|
strUsage += HelpMessageOpt("-connect=<ip>", _("Connect only to the specified node(s)"));
|
|
|
|
strUsage += HelpMessageOpt("-connect=<ip>", _("Connect only to the specified node(s)"));
|
|
|
|
strUsage += HelpMessageOpt("-discover", _("Discover own IP addresses (default: 1 when listening and no -externalip or -proxy)"));
|
|
|
|
strUsage += HelpMessageOpt("-discover", _("Discover own IP addresses (default: 1 when listening and no -externalip or -proxy)"));
|
|
|
|
strUsage += HelpMessageOpt("-dns", strprintf(_("Allow DNS lookups for -addnode, -seednode and -connect (default: %u)"), fNameLookup));
|
|
|
|
strUsage += HelpMessageOpt("-dns", _("Allow DNS lookups for -addnode, -seednode and -connect") + " " + strprintf(_("(default: %u)"), DEFAULT_NAME_LOOKUP));
|
|
|
|
strUsage += HelpMessageOpt("-dnsseed", _("Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect)"));
|
|
|
|
strUsage += HelpMessageOpt("-dnsseed", _("Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect)"));
|
|
|
|
strUsage += HelpMessageOpt("-externalip=<ip>", _("Specify your own public address"));
|
|
|
|
strUsage += HelpMessageOpt("-externalip=<ip>", _("Specify your own public address"));
|
|
|
|
strUsage += HelpMessageOpt("-forcednsseed", strprintf(_("Always query for peer addresses via DNS lookup (default: %u)"), DEFAULT_FORCEDNSSEED));
|
|
|
|
strUsage += HelpMessageOpt("-forcednsseed", strprintf(_("Always query for peer addresses via DNS lookup (default: %u)"), DEFAULT_FORCEDNSSEED));
|
|
|
@ -365,7 +365,7 @@ std::string HelpMessage(HelpMessageMode mode)
|
|
|
|
strUsage += HelpMessageOpt("-maxsendbuffer=<n>", strprintf(_("Maximum per-connection send buffer, <n>*1000 bytes (default: %u)"), DEFAULT_MAXSENDBUFFER));
|
|
|
|
strUsage += HelpMessageOpt("-maxsendbuffer=<n>", strprintf(_("Maximum per-connection send buffer, <n>*1000 bytes (default: %u)"), DEFAULT_MAXSENDBUFFER));
|
|
|
|
strUsage += HelpMessageOpt("-onion=<ip:port>", strprintf(_("Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s)"), "-proxy"));
|
|
|
|
strUsage += HelpMessageOpt("-onion=<ip:port>", strprintf(_("Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s)"), "-proxy"));
|
|
|
|
strUsage += HelpMessageOpt("-onlynet=<net>", _("Only connect to nodes in network <net> (ipv4, ipv6 or onion)"));
|
|
|
|
strUsage += HelpMessageOpt("-onlynet=<net>", _("Only connect to nodes in network <net> (ipv4, ipv6 or onion)"));
|
|
|
|
strUsage += HelpMessageOpt("-permitbaremultisig", strprintf(_("Relay non-P2SH multisig (default: %u)"), fIsBareMultisigStd));
|
|
|
|
strUsage += HelpMessageOpt("-permitbaremultisig", strprintf(_("Relay non-P2SH multisig (default: %u)"), DEFAULT_PERMIT_BAREMULTISIG));
|
|
|
|
strUsage += HelpMessageOpt("-peerbloomfilters", strprintf(_("Support filtering of blocks and transaction with bloom filters (default: %u)"), 1));
|
|
|
|
strUsage += HelpMessageOpt("-peerbloomfilters", strprintf(_("Support filtering of blocks and transaction with bloom filters (default: %u)"), 1));
|
|
|
|
if (showDebug)
|
|
|
|
if (showDebug)
|
|
|
|
strUsage += HelpMessageOpt("-enforcenodebloom", strprintf("Enforce minimum protocol version to limit use of bloom filters (default: %u)", 0));
|
|
|
|
strUsage += HelpMessageOpt("-enforcenodebloom", strprintf("Enforce minimum protocol version to limit use of bloom filters (default: %u)", 0));
|
|
|
@ -400,8 +400,8 @@ std::string HelpMessage(HelpMessageMode mode)
|
|
|
|
CURRENCY_UNIT, FormatMoney(payTxFee.GetFeePerK())));
|
|
|
|
CURRENCY_UNIT, FormatMoney(payTxFee.GetFeePerK())));
|
|
|
|
strUsage += HelpMessageOpt("-rescan", _("Rescan the block chain for missing wallet transactions on startup"));
|
|
|
|
strUsage += HelpMessageOpt("-rescan", _("Rescan the block chain for missing wallet transactions on startup"));
|
|
|
|
strUsage += HelpMessageOpt("-salvagewallet", _("Attempt to recover private keys from a corrupt wallet.dat on startup"));
|
|
|
|
strUsage += HelpMessageOpt("-salvagewallet", _("Attempt to recover private keys from a corrupt wallet.dat on startup"));
|
|
|
|
strUsage += HelpMessageOpt("-sendfreetransactions", strprintf(_("Send transactions as zero-fee transactions if possible (default: %u)"), fSendFreeTransactions));
|
|
|
|
strUsage += HelpMessageOpt("-sendfreetransactions", strprintf(_("Send transactions as zero-fee transactions if possible (default: %u)"), DEFAULT_SEND_FREE_TRANSACTIONS));
|
|
|
|
strUsage += HelpMessageOpt("-spendzeroconfchange", strprintf(_("Spend unconfirmed change when sending transactions (default: %u)"), bSpendZeroConfChange));
|
|
|
|
strUsage += HelpMessageOpt("-spendzeroconfchange", strprintf(_("Spend unconfirmed change when sending transactions (default: %u)"), DEFAULT_SPEND_ZEROCONF_CHANGE));
|
|
|
|
strUsage += HelpMessageOpt("-txconfirmtarget=<n>", strprintf(_("If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u)"), DEFAULT_TX_CONFIRM_TARGET));
|
|
|
|
strUsage += HelpMessageOpt("-txconfirmtarget=<n>", strprintf(_("If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u)"), DEFAULT_TX_CONFIRM_TARGET));
|
|
|
|
strUsage += HelpMessageOpt("-maxtxfee=<amt>", strprintf(_("Maximum total fees (in %s) to use in a single wallet transaction; setting this too low may abort large transactions (default: %s)"),
|
|
|
|
strUsage += HelpMessageOpt("-maxtxfee=<amt>", strprintf(_("Maximum total fees (in %s) to use in a single wallet transaction; setting this too low may abort large transactions (default: %s)"),
|
|
|
|
CURRENCY_UNIT, FormatMoney(DEFAULT_TRANSACTION_MAXFEE)));
|
|
|
|
CURRENCY_UNIT, FormatMoney(DEFAULT_TRANSACTION_MAXFEE)));
|
|
|
@ -424,11 +424,11 @@ std::string HelpMessage(HelpMessageMode mode)
|
|
|
|
strUsage += HelpMessageGroup(_("Debugging/Testing options:"));
|
|
|
|
strUsage += HelpMessageGroup(_("Debugging/Testing options:"));
|
|
|
|
if (showDebug)
|
|
|
|
if (showDebug)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
strUsage += HelpMessageOpt("-checkpoints", strprintf("Disable expensive verification for known chain history (default: %u)", fCheckpointsEnabled));
|
|
|
|
strUsage += HelpMessageOpt("-checkpoints", strprintf("Disable expensive verification for known chain history (default: %u)", DEFAULT_CHECKPOINTS_ENABLED));
|
|
|
|
#ifdef ENABLE_WALLET
|
|
|
|
#ifdef ENABLE_WALLET
|
|
|
|
strUsage += HelpMessageOpt("-dblogsize=<n>", strprintf("Flush wallet database activity from memory to disk log every <n> megabytes (default: %u)", DEFAULT_WALLET_DBLOGSIZE));
|
|
|
|
strUsage += HelpMessageOpt("-dblogsize=<n>", strprintf("Flush wallet database activity from memory to disk log every <n> megabytes (default: %u)", DEFAULT_WALLET_DBLOGSIZE));
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
strUsage += HelpMessageOpt("-disablesafemode", strprintf("Disable safemode, override a real safe mode event (default: %u)", !DEFAULT_SAFEMODE));
|
|
|
|
strUsage += HelpMessageOpt("-disablesafemode", strprintf("Disable safemode, override a real safe mode event (default: %u)", DEFAULT_DISABLE_SAFEMODE));
|
|
|
|
strUsage += HelpMessageOpt("-testsafemode", strprintf("Force safe mode (default: %u)", DEFAULT_TESTSAFEMODE));
|
|
|
|
strUsage += HelpMessageOpt("-testsafemode", strprintf("Force safe mode (default: %u)", DEFAULT_TESTSAFEMODE));
|
|
|
|
strUsage += HelpMessageOpt("-dropmessagestest=<n>", "Randomly drop 1 of every <n> network messages");
|
|
|
|
strUsage += HelpMessageOpt("-dropmessagestest=<n>", "Randomly drop 1 of every <n> network messages");
|
|
|
|
strUsage += HelpMessageOpt("-fuzzmessagestest=<n>", "Randomly fuzz 1 of every <n> network messages");
|
|
|
|
strUsage += HelpMessageOpt("-fuzzmessagestest=<n>", "Randomly fuzz 1 of every <n> network messages");
|
|
|
@ -449,8 +449,8 @@ std::string HelpMessage(HelpMessageMode mode)
|
|
|
|
strUsage += HelpMessageOpt("-gen", strprintf(_("Generate coins (default: %u)"), DEFAULT_GENERATE));
|
|
|
|
strUsage += HelpMessageOpt("-gen", strprintf(_("Generate coins (default: %u)"), DEFAULT_GENERATE));
|
|
|
|
strUsage += HelpMessageOpt("-genproclimit=<n>", strprintf(_("Set the number of threads for coin generation if enabled (-1 = all cores, default: %d)"), DEFAULT_GENERATE_THREADS));
|
|
|
|
strUsage += HelpMessageOpt("-genproclimit=<n>", strprintf(_("Set the number of threads for coin generation if enabled (-1 = all cores, default: %d)"), DEFAULT_GENERATE_THREADS));
|
|
|
|
strUsage += HelpMessageOpt("-help-debug", _("Show all debugging options (usage: --help -help-debug)"));
|
|
|
|
strUsage += HelpMessageOpt("-help-debug", _("Show all debugging options (usage: --help -help-debug)"));
|
|
|
|
strUsage += HelpMessageOpt("-logips", strprintf(_("Include IP addresses in debug output (default: %u)"), fLogIPs));
|
|
|
|
strUsage += HelpMessageOpt("-logips", strprintf(_("Include IP addresses in debug output (default: %u)"), DEFAULT_LOGIPS));
|
|
|
|
strUsage += HelpMessageOpt("-logtimestamps", strprintf(_("Prepend debug output with timestamp (default: %u)"), fLogTimestamps));
|
|
|
|
strUsage += HelpMessageOpt("-logtimestamps", strprintf(_("Prepend debug output with timestamp (default: %u)"), DEFAULT_LOGTIMESTAMPS));
|
|
|
|
if (showDebug)
|
|
|
|
if (showDebug)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
strUsage += HelpMessageOpt("-logtimemicros", strprintf("Add microsecond precision to debug timestamps (default: %u)", DEFAULT_LOGTIMEMICROS));
|
|
|
|
strUsage += HelpMessageOpt("-logtimemicros", strprintf("Add microsecond precision to debug timestamps (default: %u)", DEFAULT_LOGTIMEMICROS));
|
|
|
@ -475,7 +475,7 @@ std::string HelpMessage(HelpMessageMode mode)
|
|
|
|
strUsage += HelpMessageGroup(_("Node relay options:"));
|
|
|
|
strUsage += HelpMessageGroup(_("Node relay options:"));
|
|
|
|
if (showDebug)
|
|
|
|
if (showDebug)
|
|
|
|
strUsage += HelpMessageOpt("-acceptnonstdtxn", strprintf("Relay and mine \"non-standard\" transactions (%sdefault: %u)", "testnet/regtest only; ", !Params(CBaseChainParams::TESTNET).RequireStandard()));
|
|
|
|
strUsage += HelpMessageOpt("-acceptnonstdtxn", strprintf("Relay and mine \"non-standard\" transactions (%sdefault: %u)", "testnet/regtest only; ", !Params(CBaseChainParams::TESTNET).RequireStandard()));
|
|
|
|
strUsage += HelpMessageOpt("-datacarrier", strprintf(_("Relay and mine data carrier transactions (default: %u)"), fAcceptDatacarrier));
|
|
|
|
strUsage += HelpMessageOpt("-datacarrier", strprintf(_("Relay and mine data carrier transactions (default: %u)"), DEFAULT_ACCEPT_DATACARRIER));
|
|
|
|
strUsage += HelpMessageOpt("-datacarriersize", strprintf(_("Maximum size of data in data carrier transactions we relay and mine (default: %u)"), MAX_OP_RETURN_RELAY));
|
|
|
|
strUsage += HelpMessageOpt("-datacarriersize", strprintf(_("Maximum size of data in data carrier transactions we relay and mine (default: %u)"), MAX_OP_RETURN_RELAY));
|
|
|
|
|
|
|
|
|
|
|
|
strUsage += HelpMessageGroup(_("Block creation options:"));
|
|
|
|
strUsage += HelpMessageGroup(_("Block creation options:"));
|
|
|
@ -765,9 +765,9 @@ void InitParameterInteraction()
|
|
|
|
void InitLogging()
|
|
|
|
void InitLogging()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
fPrintToConsole = GetBoolArg("-printtoconsole", false);
|
|
|
|
fPrintToConsole = GetBoolArg("-printtoconsole", false);
|
|
|
|
fLogTimestamps = GetBoolArg("-logtimestamps", fLogTimestamps);
|
|
|
|
fLogTimestamps = GetBoolArg("-logtimestamps", DEFAULT_LOGTIMESTAMPS);
|
|
|
|
fLogTimeMicros = GetBoolArg("-logtimemicros", DEFAULT_LOGTIMEMICROS);
|
|
|
|
fLogTimeMicros = GetBoolArg("-logtimemicros", DEFAULT_LOGTIMEMICROS);
|
|
|
|
fLogIPs = GetBoolArg("-logips", fLogIPs);
|
|
|
|
fLogIPs = GetBoolArg("-logips", DEFAULT_LOGIPS);
|
|
|
|
|
|
|
|
|
|
|
|
LogPrintf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
|
|
|
|
LogPrintf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
|
|
|
|
LogPrintf("Bitcoin version %s (%s)\n", FormatFullVersion(), CLIENT_DATE);
|
|
|
|
LogPrintf("Bitcoin version %s (%s)\n", FormatFullVersion(), CLIENT_DATE);
|
|
|
@ -902,7 +902,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler)
|
|
|
|
mempool.setSanityCheck(1.0 / ratio);
|
|
|
|
mempool.setSanityCheck(1.0 / ratio);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
fCheckBlockIndex = GetBoolArg("-checkblockindex", chainparams.DefaultConsistencyChecks());
|
|
|
|
fCheckBlockIndex = GetBoolArg("-checkblockindex", chainparams.DefaultConsistencyChecks());
|
|
|
|
fCheckpointsEnabled = GetBoolArg("-checkpoints", fCheckpointsEnabled);
|
|
|
|
fCheckpointsEnabled = GetBoolArg("-checkpoints", DEFAULT_CHECKPOINTS_ENABLED);
|
|
|
|
|
|
|
|
|
|
|
|
// mempool limits
|
|
|
|
// mempool limits
|
|
|
|
int64_t nMempoolSizeMax = GetArg("-maxmempool", DEFAULT_MAX_MEMPOOL_SIZE) * 1000000;
|
|
|
|
int64_t nMempoolSizeMax = GetArg("-maxmempool", DEFAULT_MAX_MEMPOOL_SIZE) * 1000000;
|
|
|
@ -1000,14 +1000,14 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
nTxConfirmTarget = GetArg("-txconfirmtarget", DEFAULT_TX_CONFIRM_TARGET);
|
|
|
|
nTxConfirmTarget = GetArg("-txconfirmtarget", DEFAULT_TX_CONFIRM_TARGET);
|
|
|
|
bSpendZeroConfChange = GetBoolArg("-spendzeroconfchange", bSpendZeroConfChange);
|
|
|
|
bSpendZeroConfChange = GetBoolArg("-spendzeroconfchange", DEFAULT_SPEND_ZEROCONF_CHANGE);
|
|
|
|
fSendFreeTransactions = GetBoolArg("-sendfreetransactions", fSendFreeTransactions);
|
|
|
|
fSendFreeTransactions = GetBoolArg("-sendfreetransactions", DEFAULT_SEND_FREE_TRANSACTIONS);
|
|
|
|
|
|
|
|
|
|
|
|
std::string strWalletFile = GetArg("-wallet", "wallet.dat");
|
|
|
|
std::string strWalletFile = GetArg("-wallet", "wallet.dat");
|
|
|
|
#endif // ENABLE_WALLET
|
|
|
|
#endif // ENABLE_WALLET
|
|
|
|
|
|
|
|
|
|
|
|
fIsBareMultisigStd = GetBoolArg("-permitbaremultisig", fIsBareMultisigStd);
|
|
|
|
fIsBareMultisigStd = GetBoolArg("-permitbaremultisig", DEFAULT_PERMIT_BAREMULTISIG);
|
|
|
|
fAcceptDatacarrier = GetBoolArg("-datacarrier", fAcceptDatacarrier);
|
|
|
|
fAcceptDatacarrier = GetBoolArg("-datacarrier", DEFAULT_ACCEPT_DATACARRIER);
|
|
|
|
nMaxDatacarrierBytes = GetArg("-datacarriersize", nMaxDatacarrierBytes);
|
|
|
|
nMaxDatacarrierBytes = GetArg("-datacarriersize", nMaxDatacarrierBytes);
|
|
|
|
|
|
|
|
|
|
|
|
fAlerts = GetBoolArg("-alerts", DEFAULT_ALERTS);
|
|
|
|
fAlerts = GetBoolArg("-alerts", DEFAULT_ALERTS);
|
|
|
@ -1193,7 +1193,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler)
|
|
|
|
// see Step 2: parameter interactions for more information about these
|
|
|
|
// see Step 2: parameter interactions for more information about these
|
|
|
|
fListen = GetBoolArg("-listen", DEFAULT_LISTEN);
|
|
|
|
fListen = GetBoolArg("-listen", DEFAULT_LISTEN);
|
|
|
|
fDiscover = GetBoolArg("-discover", true);
|
|
|
|
fDiscover = GetBoolArg("-discover", true);
|
|
|
|
fNameLookup = GetBoolArg("-dns", fNameLookup);
|
|
|
|
fNameLookup = GetBoolArg("-dns", DEFAULT_NAME_LOOKUP);
|
|
|
|
|
|
|
|
|
|
|
|
bool fBound = false;
|
|
|
|
bool fBound = false;
|
|
|
|
if (fListen) {
|
|
|
|
if (fListen) {
|
|
|
|