// When adding new options to the categories, please keep and ensure alphabetical ordering.
// Do not translate _(...) -help-debug options, Many technical terms, and only a very small audience, so is unnecessary stress to translators.
stringstrUsage=HelpMessageGroup(_("Options:"));
strUsage+=HelpMessageOpt("-?",_("This help message"));
strUsage+=HelpMessageOpt("-alerts",strprintf(_("Receive and display P2P network alerts (default: %u)"),DEFAULT_ALERTS));
strUsage+=HelpMessageOpt("-alertnotify=<cmd>",_("Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message)"));
strUsage+=HelpMessageOpt("-blocknotify=<cmd>",_("Execute command when the best block changes (%s in cmd is replaced by block hash)"));
if(showDebug)
strUsage+=HelpMessageOpt("-blocksonly",strprintf(_("Whether to operate in a blocks only mode (default: %u)"),DEFAULT_BLOCKSONLY));
strUsage+=HelpMessageOpt("-checkblocks=<n>",strprintf(_("How many blocks to check at startup (default: %u, 0 = all)"),DEFAULT_CHECKBLOCKS));
strUsage+=HelpMessageOpt("-checklevel=<n>",strprintf(_("How thorough the block verification of -checkblocks is (0-4, default: %u)"),DEFAULT_CHECKLEVEL));
strUsage+=HelpMessageOpt("-daemon",_("Run in the background as a daemon and accept commands"));
#endif
}
strUsage+=HelpMessageOpt("-datadir=<dir>",_("Specify data directory"));
strUsage+=HelpMessageOpt("-dbcache=<n>",strprintf(_("Set database cache size in megabytes (%d to %d, default: %d)"),nMinDbCache,nMaxDbCache,nDefaultDbCache));
strUsage+=HelpMessageOpt("-loadblock=<file>",_("Imports blocks from external blk000??.dat file on startup"));
strUsage+=HelpMessageOpt("-maxorphantx=<n>",strprintf(_("Keep at most <n> unconnectable transactions in memory (default: %u)"),DEFAULT_MAX_ORPHAN_TRANSACTIONS));
strUsage+=HelpMessageOpt("-maxmempool=<n>",strprintf(_("Keep the transaction memory pool below <n> megabytes (default: %u)"),DEFAULT_MAX_MEMPOOL_SIZE));
strUsage+=HelpMessageOpt("-mempoolexpiry=<n>",strprintf(_("Do not keep transactions in the mempool longer than <n> hours (default: %u)"),DEFAULT_MEMPOOL_EXPIRY));
strUsage+=HelpMessageOpt("-par=<n>",strprintf(_("Set the number of script verification threads (%u to %d, 0 = auto, <0 = leave that many cores free, default: %d)"),
strUsage+=HelpMessageOpt("-prune=<n>",strprintf(_("Reduce storage requirements by pruning (deleting) old blocks. This mode is incompatible with -txindex and -rescan. "
"Warning: Reverting this setting requires re-downloading the entire blockchain. "
"(default: 0 = disable pruning blocks, >%u = target size in MiB to use for block files)"),MIN_DISK_SPACE_FOR_BLOCK_FILES/1024/1024));
strUsage+=HelpMessageOpt("-reindex",_("Rebuild block chain index from current blk000??.dat files on startup"));
#ifndef WIN32
strUsage+=HelpMessageOpt("-sysperms",_("Create new files with system default permissions, instead of umask 077 (only effective with disabled wallet functionality)"));
#endif
strUsage+=HelpMessageOpt("-txindex",strprintf(_("Maintain a full transaction index, used by the getrawtransaction rpc call (default: %u)"),0));
strUsage+=HelpMessageOpt("-port=<port>",strprintf(_("Listen for connections on <port> (default: %u or testnet: %u)"),8333,18333));
strUsage+=HelpMessageOpt("-proxy=<ip:port>",_("Connect through SOCKS5 proxy"));
strUsage+=HelpMessageOpt("-proxyrandomize",strprintf(_("Randomize credentials for every proxy connection. This enables Tor stream isolation (default: %u)"),1));
strUsage+=HelpMessageOpt("-seednode=<ip>",_("Connect to a node to retrieve peer addresses, and disconnect"));
strUsage+=HelpMessageOpt("-timeout=<n>",strprintf(_("Specify connection timeout in milliseconds (minimum: 1, default: %d)"),DEFAULT_CONNECT_TIMEOUT));
strUsage+=HelpMessageOpt("-torcontrol=<ip>:<port>",strprintf(_("Tor control port to use if onion listening enabled (default: %s)"),DEFAULT_TOR_CONTROL));
strUsage+=HelpMessageOpt("-torpassword=<pass>",_("Tor control port password (default: empty)"));
#ifdef USE_UPNP
#if USE_UPNP
strUsage+=HelpMessageOpt("-upnp",_("Use UPnP to map the listening port (default: 1 when listening and no -proxy)"));
#else
strUsage+=HelpMessageOpt("-upnp",strprintf(_("Use UPnP to map the listening port (default: %u)"),0));
#endif
#endif
strUsage+=HelpMessageOpt("-whitebind=<addr>",_("Bind to given address and whitelist peers connecting to it. Use [host]:port notation for IPv6"));
strUsage+=HelpMessageOpt("-whitelist=<netmask>",_("Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times.")+
" "+_("Whitelisted peers cannot be DoS banned and their transactions are always relayed, even if they are already in the mempool, useful e.g. for a gateway"));
strUsage+=HelpMessageOpt("-whitelistalwaysrelay",strprintf(_("Always relay transactions received from whitelisted peers (default: %d)"),DEFAULT_WHITELISTALWAYSRELAY));
strUsage+=HelpMessageOpt("-maxuploadtarget=<n>",strprintf(_("Tries to keep outbound traffic under the given target (in MiB per 24h), 0 = no limit (default: %d)"),DEFAULT_MAX_UPLOAD_TARGET));
#ifdef ENABLE_WALLET
strUsage+=HelpMessageGroup(_("Wallet options:"));
strUsage+=HelpMessageOpt("-disablewallet",_("Do not load the wallet and disable wallet RPC calls"));
strUsage+=HelpMessageOpt("-keypool=<n>",strprintf(_("Set key pool size to <n> (default: %u)"),100));
if(showDebug)
strUsage+=HelpMessageOpt("-mintxfee=<amt>",strprintf("Fees (in %s/kB) smaller than this are considered zero fee for transaction creation (default: %s)",
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("-sendfreetransactions",strprintf(_("Send transactions as zero-fee transactions if possible (default: %u)"),0));
strUsage+=HelpMessageOpt("-spendzeroconfchange",strprintf(_("Spend unconfirmed change when sending transactions (default: %u)"),1));
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("-upgradewallet",_("Upgrade wallet to latest format on startup"));
strUsage+=HelpMessageOpt("-wallet=<file>",_("Specify wallet file (within data directory)")+" "+strprintf(_("(default: %s)"),"wallet.dat"));
strUsage+=HelpMessageOpt("-walletbroadcast",_("Make the wallet broadcast transactions")+" "+strprintf(_("(default: %u)"),true));
strUsage+=HelpMessageOpt("-walletnotify=<cmd>",_("Execute command when a wallet transaction changes (%s in cmd is replaced by TxID)"));
strUsage+=HelpMessageOpt("-zapwallettxes=<mode>",_("Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup")+
" "+_("(1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data)"));
strUsage+=HelpMessageOpt("-checkpoints",strprintf("Disable expensive verification for known chain history (default: %u)",1));
#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));
#endif
strUsage+=HelpMessageOpt("-disablesafemode",strprintf("Disable safemode, override a real safe mode event (default: %u)",0));
strUsage+=HelpMessageOpt("-dropmessagestest=<n>","Randomly drop 1 of every <n> network messages");
strUsage+=HelpMessageOpt("-fuzzmessagestest=<n>","Randomly fuzz 1 of every <n> network messages");
#ifdef ENABLE_WALLET
strUsage+=HelpMessageOpt("-flushwallet",strprintf("Run a thread to flush wallet periodically (default: %u)",1));
#endif
strUsage+=HelpMessageOpt("-stopafterblockimport",strprintf("Stop running after importing blocks from disk (default: %u)",0));
strUsage+=HelpMessageOpt("-limitancestorcount=<n>",strprintf("Do not accept transactions if number of in-mempool ancestors is <n> or more (default: %u)",DEFAULT_ANCESTOR_LIMIT));
strUsage+=HelpMessageOpt("-limitancestorsize=<n>",strprintf("Do not accept transactions whose size with all in-mempool ancestors exceeds <n> kilobytes (default: %u)",DEFAULT_ANCESTOR_SIZE_LIMIT));
strUsage+=HelpMessageOpt("-limitdescendantcount=<n>",strprintf("Do not accept transactions if any ancestor would have <n> or more in-mempool descendants (default: %u)",DEFAULT_DESCENDANT_LIMIT));
strUsage+=HelpMessageOpt("-limitdescendantsize=<n>",strprintf("Do not accept transactions if any ancestor would have more than <n> kilobytes of in-mempool descendants (default: %u).",DEFAULT_DESCENDANT_SIZE_LIMIT));
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("-logips",strprintf(_("Include IP addresses in debug output (default: %u)"),0));
strUsage+=HelpMessageOpt("-logtimestamps",strprintf(_("Prepend debug output with timestamp (default: %u)"),1));
if(showDebug)
{
strUsage+=HelpMessageOpt("-logtimemicros",strprintf("Add microsecond precision to debug timestamps (default: %u)",DEFAULT_LOGTIMEMICROS));
strUsage+=HelpMessageOpt("-limitfreerelay=<n>",strprintf("Continuously rate-limit free transactions to <n>*1000 bytes per minute (default: %u)",15));
strUsage+=HelpMessageOpt("-relaypriority",strprintf("Require high priority for relaying free or low-fee transactions (default: %u)",1));
strUsage+=HelpMessageOpt("-maxsigcachesize=<n>",strprintf("Limit size of signature cache to <n> MiB (default: %u)",DEFAULT_MAX_SIG_CACHE_SIZE));
}
strUsage+=HelpMessageOpt("-minrelaytxfee=<amt>",strprintf(_("Fees (in %s/kB) smaller than this are considered zero fee for relaying, mining and transaction creation (default: %s)"),
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)"),1));
strUsage+=HelpMessageOpt("-datacarriersize",strprintf(_("Maximum size of data in data carrier transactions we relay and mine (default: %u)"),MAX_OP_RETURN_RELAY));
strUsage+=HelpMessageOpt("-blockminsize=<n>",strprintf(_("Set minimum block size in bytes (default: %u)"),0));
strUsage+=HelpMessageOpt("-blockmaxsize=<n>",strprintf(_("Set maximum block size in bytes (default: %d)"),DEFAULT_BLOCK_MAX_SIZE));
strUsage+=HelpMessageOpt("-blockprioritysize=<n>",strprintf(_("Set maximum size of high-priority/low-fee transactions in bytes (default: %d)"),DEFAULT_BLOCK_PRIORITY_SIZE));
if(showDebug)
strUsage+=HelpMessageOpt("-blockversion=<n>",strprintf("Override block version to test forking scenarios (default: %d)",(int)CBlock::CURRENT_VERSION));
strUsage+=HelpMessageGroup(_("RPC server options:"));
strUsage+=HelpMessageOpt("-server",_("Accept command line and JSON-RPC commands"));
strUsage+=HelpMessageOpt("-rest",strprintf(_("Accept public REST requests (default: %u)"),0));
strUsage+=HelpMessageOpt("-rpcbind=<addr>",_("Bind to given address to listen for JSON-RPC connections. Use [host]:port notation for IPv6. This option can be specified multiple times (default: bind to all interfaces)"));
strUsage+=HelpMessageOpt("-rpcuser=<user>",_("Username for JSON-RPC connections"));
strUsage+=HelpMessageOpt("-rpcpassword=<pw>",_("Password for JSON-RPC connections"));
strUsage+=HelpMessageOpt("-rpcport=<port>",strprintf(_("Listen for JSON-RPC connections on <port> (default: %u or testnet: %u)"),8332,18332));
strUsage+=HelpMessageOpt("-rpcallowip=<ip>",_("Allow JSON-RPC connections from specified source. Valid for <ip> are a single IP (e.g. 1.2.3.4), a network/netmask (e.g. 1.2.3.4/255.255.255.0) or a network/CIDR (e.g. 1.2.3.4/24). This option can be specified multiple times"));
strUsage+=HelpMessageOpt("-rpcthreads=<n>",strprintf(_("Set the number of threads to service RPC calls (default: %d)"),DEFAULT_HTTP_THREADS));
if(showDebug){
strUsage+=HelpMessageOpt("-rpcworkqueue=<n>",strprintf("Set the depth of the work queue to service RPC calls (default: %d)",DEFAULT_HTTP_WORKQUEUE));
strUsage+=HelpMessageOpt("-rpcservertimeout=<n>",strprintf("Timeout during HTTP requests (default: %d)",DEFAULT_HTTP_SERVER_TIMEOUT));
}
if(mode==HMM_BITCOIN_QT)
{
strUsage+=HelpMessageGroup(_("UI Options:"));
if(showDebug){
strUsage+=HelpMessageOpt("-allowselfsignedrootcertificates","Allow self signed root certificates (default: 0)");
}
strUsage+=HelpMessageOpt("-choosedatadir",_("Choose data directory on startup (default: 0)"));
strUsage+=HelpMessageOpt("-lang=<lang>",_("Set language, for example \"de_DE\" (default: system locale)"));
FormatParagraph(_("This is experimental software."))+"\n"+
"\n"+
FormatParagraph(_("Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>."))+"\n"+
"\n"+
FormatParagraph(_("This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit <https://www.openssl.org/> and cryptographic software written by Eric Young and UPnP software written by Thomas Bernard."))+
returnInitError(_("Prune: last wallet synchronisation goes beyond pruned data. You need to -reindex (download the whole blockchain again in case of pruned node)"));
}
uiInterface.InitMessage(_("Rescanning..."));
LogPrintf("Rescanning last %i blocks (from block %i)...\n",chainActive.Height()-pindexRescan->nHeight,pindexRescan->nHeight);