mirror of
https://github.com/dashpay/dash.git
synced 2024-12-25 12:02:48 +01:00
Merge #13090: Remove Safe mode (achow101)
d8e9a2a
Remove "rpc" category from GetWarnings (Wladimir J. van der Laan)7da3b0a
rpc: Move RPC_FORBIDDEN_BY_SAFE_MODE code to reserved section (Wladimir J. van der Laan)2ae705d
Remove Safe mode (Andrew Chow) Pull request description: Rebase of #10563. Safe mode was [disabled by default and deprecated in 0.16](https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.16.0.md#safe-mode-disabled-by-default), so probably should be removed for 0.17. > Rationale: > > Safe mode is useless. It only disables some RPC commands when large work forks are detected. Nothing else is affected by safe mode. It seems that very few people would be affected by safe mode. The people who use Core as a wallet are primarily using it through the GUI, which safe mode does not effect. In the GUI, transactions will still be made as normal; only a warning is displayed. > > I also don't think that we should be disabling RPC commands or any functionality in general. If we do, it should be done consistently, which safe mode is not. If we want to keep the idea of a safe mode around, I think that the current system needs to go first before a new system can be implemented. Tree-SHA512: 067938f47ca6e879fb6c3c4e21f9946fd7c5da3cde67ef436f1666798c78d049225b9111dc97064f42b3bc549d3915229fa19ad5a634588f381e34fc65d64044
This commit is contained in:
commit
17266a1306
@ -137,7 +137,6 @@ BITCOIN_CORE_H = \
|
||||
rpc/client.h \
|
||||
rpc/mining.h \
|
||||
rpc/protocol.h \
|
||||
rpc/safemode.h \
|
||||
rpc/server.h \
|
||||
rpc/rawtransaction.h \
|
||||
rpc/register.h \
|
||||
@ -223,7 +222,6 @@ libbitcoin_server_a_SOURCES = \
|
||||
rpc/misc.cpp \
|
||||
rpc/net.cpp \
|
||||
rpc/rawtransaction.cpp \
|
||||
rpc/safemode.cpp \
|
||||
rpc/server.cpp \
|
||||
script/sigcache.cpp \
|
||||
timedata.cpp \
|
||||
|
@ -31,7 +31,6 @@
|
||||
#include <policy/policy.h>
|
||||
#include <rpc/server.h>
|
||||
#include <rpc/register.h>
|
||||
#include <rpc/safemode.h>
|
||||
#include <rpc/blockchain.h>
|
||||
#include <script/standard.h>
|
||||
#include <script/sigcache.h>
|
||||
@ -448,9 +447,7 @@ std::string HelpMessage(HelpMessageMode mode)
|
||||
strUsage += HelpMessageOpt("-checkblockindex", strprintf("Do a full consistency check for mapBlockIndex, setBlockIndexCandidates, chainActive and mapBlocksUnlinked occasionally. (default: %u)", defaultChainParams->DefaultConsistencyChecks()));
|
||||
strUsage += HelpMessageOpt("-checkmempool=<n>", strprintf("Run checks every <n> transactions (default: %u)", defaultChainParams->DefaultConsistencyChecks()));
|
||||
strUsage += HelpMessageOpt("-checkpoints", strprintf("Disable expensive verification for known chain history (default: %u)", DEFAULT_CHECKPOINTS_ENABLED));
|
||||
strUsage += HelpMessageOpt("-disablesafemode", strprintf("Disable safemode, override a real safe mode event (default: %u)", DEFAULT_DISABLE_SAFEMODE));
|
||||
strUsage += HelpMessageOpt("-deprecatedrpc=<method>", "Allows deprecated RPC method(s) to be used");
|
||||
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("-stopafterblockimport", strprintf("Stop running after importing blocks from disk (default: %u)", DEFAULT_STOPAFTERBLOCKIMPORT));
|
||||
strUsage += HelpMessageOpt("-stopatheight", strprintf("Stop running after reaching the given height in the main chain (default: %u)", DEFAULT_STOPATHEIGHT));
|
||||
|
@ -46,7 +46,6 @@ enum RPCErrorCode
|
||||
|
||||
//! General application defined errors
|
||||
RPC_MISC_ERROR = -1, //!< std::exception thrown in command handling
|
||||
RPC_FORBIDDEN_BY_SAFE_MODE = -2, //!< Server is in safe mode, and command is not allowed in safe mode
|
||||
RPC_TYPE_ERROR = -3, //!< Unexpected type was passed as parameter
|
||||
RPC_INVALID_ADDRESS_OR_KEY = -5, //!< Invalid address or key
|
||||
RPC_OUT_OF_MEMORY = -7, //!< Ran out of memory during operation
|
||||
@ -88,6 +87,9 @@ enum RPCErrorCode
|
||||
|
||||
//! Backwards compatible aliases
|
||||
RPC_WALLET_INVALID_ACCOUNT_NAME = RPC_WALLET_INVALID_LABEL_NAME,
|
||||
|
||||
//! Unused reserved codes, kept around for backwards compatibility. Do not reuse.
|
||||
RPC_FORBIDDEN_BY_SAFE_MODE = -2, //!< Server is in safe mode, and command is not allowed in safe mode
|
||||
};
|
||||
|
||||
UniValue JSONRPCRequestObj(const std::string& strMethod, const UniValue& params, const UniValue& id);
|
||||
|
@ -19,7 +19,6 @@
|
||||
#include <policy/rbf.h>
|
||||
#include <primitives/transaction.h>
|
||||
#include <rpc/rawtransaction.h>
|
||||
#include <rpc/safemode.h>
|
||||
#include <rpc/server.h>
|
||||
#include <script/script.h>
|
||||
#include <script/script_error.h>
|
||||
@ -1108,8 +1107,6 @@ UniValue sendrawtransaction(const JSONRPCRequest& request)
|
||||
+ HelpExampleRpc("sendrawtransaction", "\"signedhex\"")
|
||||
);
|
||||
|
||||
ObserveSafeMode();
|
||||
|
||||
std::promise<void> promise;
|
||||
|
||||
RPCTypeCheck(request.params, {UniValue::VSTR, UniValue::VBOOL});
|
||||
@ -1217,8 +1214,6 @@ UniValue testmempoolaccept(const JSONRPCRequest& request)
|
||||
);
|
||||
}
|
||||
|
||||
ObserveSafeMode();
|
||||
|
||||
RPCTypeCheck(request.params, {UniValue::VARR, UniValue::VBOOL});
|
||||
if (request.params[0].get_array().size() != 1) {
|
||||
throw JSONRPCError(RPC_INVALID_PARAMETER, "Array must contain exactly one raw transaction for now");
|
||||
|
@ -1,14 +0,0 @@
|
||||
#include <rpc/safemode.h>
|
||||
|
||||
#include <rpc/protocol.h>
|
||||
#include <util.h>
|
||||
#include <warnings.h>
|
||||
|
||||
void ObserveSafeMode()
|
||||
{
|
||||
std::string warning = GetWarnings("rpc");
|
||||
if (warning != "" && !gArgs.GetBoolArg("-disablesafemode", DEFAULT_DISABLE_SAFEMODE)) {
|
||||
throw JSONRPCError(RPC_FORBIDDEN_BY_SAFE_MODE, std::string("Safe mode: ") + warning);
|
||||
}
|
||||
}
|
||||
|
@ -1,12 +0,0 @@
|
||||
// Copyright (c) 2017 The Bitcoin Core developers
|
||||
// Distributed under the MIT software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#ifndef BITCOIN_RPC_SAFEMODE_H
|
||||
#define BITCOIN_RPC_SAFEMODE_H
|
||||
|
||||
static const bool DEFAULT_DISABLE_SAFEMODE = true;
|
||||
|
||||
void ObserveSafeMode();
|
||||
|
||||
#endif // BITCOIN_RPC_SAFEMODE_H
|
@ -4,7 +4,6 @@
|
||||
|
||||
#include <chain.h>
|
||||
#include <key_io.h>
|
||||
#include <rpc/safemode.h>
|
||||
#include <rpc/server.h>
|
||||
#include <validation.h>
|
||||
#include <script/script.h>
|
||||
@ -204,7 +203,6 @@ UniValue abortrescan(const JSONRPCRequest& request)
|
||||
+ HelpExampleRpc("abortrescan", "")
|
||||
);
|
||||
|
||||
ObserveSafeMode();
|
||||
if (!pwallet->IsScanning() || pwallet->IsAbortingRescan()) return false;
|
||||
pwallet->AbortRescan();
|
||||
return true;
|
||||
|
@ -17,7 +17,6 @@
|
||||
#include <policy/rbf.h>
|
||||
#include <rpc/mining.h>
|
||||
#include <rpc/rawtransaction.h>
|
||||
#include <rpc/safemode.h>
|
||||
#include <rpc/server.h>
|
||||
#include <rpc/util.h>
|
||||
#include <script/sign.h>
|
||||
@ -525,8 +524,6 @@ UniValue sendtoaddress(const JSONRPCRequest& request)
|
||||
+ HelpExampleRpc("sendtoaddress", "\"1M72Sfpbz1BPpXFHz9m3CdqATR44Jvaydd\", 0.1, \"donation\", \"seans outpost\"")
|
||||
);
|
||||
|
||||
ObserveSafeMode();
|
||||
|
||||
// Make sure the results are valid at least up to the most recent block
|
||||
// the user could have gotten from another RPC command prior to now
|
||||
pwallet->BlockUntilSyncedToCurrentChain();
|
||||
@ -607,8 +604,6 @@ UniValue listaddressgroupings(const JSONRPCRequest& request)
|
||||
+ HelpExampleRpc("listaddressgroupings", "")
|
||||
);
|
||||
|
||||
ObserveSafeMode();
|
||||
|
||||
// Make sure the results are valid at least up to the most recent block
|
||||
// the user could have gotten from another RPC command prior to now
|
||||
pwallet->BlockUntilSyncedToCurrentChain();
|
||||
@ -724,8 +719,6 @@ UniValue getreceivedbyaddress(const JSONRPCRequest& request)
|
||||
+ HelpExampleRpc("getreceivedbyaddress", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\", 6")
|
||||
);
|
||||
|
||||
ObserveSafeMode();
|
||||
|
||||
// Make sure the results are valid at least up to the most recent block
|
||||
// the user could have gotten from another RPC command prior to now
|
||||
pwallet->BlockUntilSyncedToCurrentChain();
|
||||
@ -798,8 +791,6 @@ UniValue getreceivedbylabel(const JSONRPCRequest& request)
|
||||
+ HelpExampleRpc("getreceivedbylabel", "\"tabby\", 6")
|
||||
);
|
||||
|
||||
ObserveSafeMode();
|
||||
|
||||
// Make sure the results are valid at least up to the most recent block
|
||||
// the user could have gotten from another RPC command prior to now
|
||||
pwallet->BlockUntilSyncedToCurrentChain();
|
||||
@ -879,8 +870,6 @@ UniValue getbalance(const JSONRPCRequest& request)
|
||||
+ HelpExampleRpc("getbalance", "\"*\", 6")
|
||||
);
|
||||
|
||||
ObserveSafeMode();
|
||||
|
||||
// Make sure the results are valid at least up to the most recent block
|
||||
// the user could have gotten from another RPC command prior to now
|
||||
pwallet->BlockUntilSyncedToCurrentChain();
|
||||
@ -933,8 +922,6 @@ UniValue getunconfirmedbalance(const JSONRPCRequest &request)
|
||||
"getunconfirmedbalance\n"
|
||||
"Returns the server's total unconfirmed balance\n");
|
||||
|
||||
ObserveSafeMode();
|
||||
|
||||
// Make sure the results are valid at least up to the most recent block
|
||||
// the user could have gotten from another RPC command prior to now
|
||||
pwallet->BlockUntilSyncedToCurrentChain();
|
||||
@ -980,7 +967,6 @@ UniValue movecmd(const JSONRPCRequest& request)
|
||||
+ HelpExampleRpc("move", "\"timotei\", \"akiko\", 0.01, 6, \"happy birthday!\"")
|
||||
);
|
||||
|
||||
ObserveSafeMode();
|
||||
LOCK2(cs_main, pwallet->cs_wallet);
|
||||
|
||||
std::string strFrom = LabelFromValue(request.params[0]);
|
||||
@ -1039,8 +1025,6 @@ UniValue sendfrom(const JSONRPCRequest& request)
|
||||
+ HelpExampleRpc("sendfrom", "\"tabby\", \"1M72Sfpbz1BPpXFHz9m3CdqATR44Jvaydd\", 0.01, 6, \"donation\", \"seans outpost\"")
|
||||
);
|
||||
|
||||
ObserveSafeMode();
|
||||
|
||||
// Make sure the results are valid at least up to the most recent block
|
||||
// the user could have gotten from another RPC command prior to now
|
||||
pwallet->BlockUntilSyncedToCurrentChain();
|
||||
@ -1170,8 +1154,6 @@ UniValue sendmany(const JSONRPCRequest& request)
|
||||
|
||||
if (request.fHelp || request.params.size() < 2 || request.params.size() > 8) throw std::runtime_error(help_text);
|
||||
|
||||
ObserveSafeMode();
|
||||
|
||||
// Make sure the results are valid at least up to the most recent block
|
||||
// the user could have gotten from another RPC command prior to now
|
||||
pwallet->BlockUntilSyncedToCurrentChain();
|
||||
@ -1683,8 +1665,6 @@ UniValue listreceivedbyaddress(const JSONRPCRequest& request)
|
||||
+ HelpExampleRpc("listreceivedbyaddress", "6, true, true, \"1M72Sfpbz1BPpXFHz9m3CdqATR44Jvaydd\"")
|
||||
);
|
||||
|
||||
ObserveSafeMode();
|
||||
|
||||
// Make sure the results are valid at least up to the most recent block
|
||||
// the user could have gotten from another RPC command prior to now
|
||||
pwallet->BlockUntilSyncedToCurrentChain();
|
||||
@ -1735,8 +1715,6 @@ UniValue listreceivedbylabel(const JSONRPCRequest& request)
|
||||
+ HelpExampleRpc("listreceivedbylabel", "6, true, true")
|
||||
);
|
||||
|
||||
ObserveSafeMode();
|
||||
|
||||
// Make sure the results are valid at least up to the most recent block
|
||||
// the user could have gotten from another RPC command prior to now
|
||||
pwallet->BlockUntilSyncedToCurrentChain();
|
||||
@ -1974,8 +1952,6 @@ UniValue listtransactions(const JSONRPCRequest& request)
|
||||
}
|
||||
if (request.fHelp || request.params.size() > 4) throw std::runtime_error(help_text);
|
||||
|
||||
ObserveSafeMode();
|
||||
|
||||
// Make sure the results are valid at least up to the most recent block
|
||||
// the user could have gotten from another RPC command prior to now
|
||||
pwallet->BlockUntilSyncedToCurrentChain();
|
||||
@ -2088,8 +2064,6 @@ UniValue listaccounts(const JSONRPCRequest& request)
|
||||
+ HelpExampleRpc("listaccounts", "6")
|
||||
);
|
||||
|
||||
ObserveSafeMode();
|
||||
|
||||
// Make sure the results are valid at least up to the most recent block
|
||||
// the user could have gotten from another RPC command prior to now
|
||||
pwallet->BlockUntilSyncedToCurrentChain();
|
||||
@ -2202,8 +2176,6 @@ UniValue listsinceblock(const JSONRPCRequest& request)
|
||||
+ HelpExampleRpc("listsinceblock", "\"000000000000000bacf66f7497b7dc45ef753ee9a7d38571037cdb1a57f663ad\", 6")
|
||||
);
|
||||
|
||||
ObserveSafeMode();
|
||||
|
||||
// Make sure the results are valid at least up to the most recent block
|
||||
// the user could have gotten from another RPC command prior to now
|
||||
pwallet->BlockUntilSyncedToCurrentChain();
|
||||
@ -2339,8 +2311,6 @@ UniValue gettransaction(const JSONRPCRequest& request)
|
||||
+ HelpExampleRpc("gettransaction", "\"1075db55d416d3ca199f55b6084e2115b9345e16c5cf302fc80e9d5fbf5d48d\"")
|
||||
);
|
||||
|
||||
ObserveSafeMode();
|
||||
|
||||
// Make sure the results are valid at least up to the most recent block
|
||||
// the user could have gotten from another RPC command prior to now
|
||||
pwallet->BlockUntilSyncedToCurrentChain();
|
||||
@ -2407,8 +2377,6 @@ UniValue abandontransaction(const JSONRPCRequest& request)
|
||||
);
|
||||
}
|
||||
|
||||
ObserveSafeMode();
|
||||
|
||||
// Make sure the results are valid at least up to the most recent block
|
||||
// the user could have gotten from another RPC command prior to now
|
||||
pwallet->BlockUntilSyncedToCurrentChain();
|
||||
@ -2889,7 +2857,6 @@ UniValue listlockunspent(const JSONRPCRequest& request)
|
||||
+ HelpExampleRpc("listlockunspent", "")
|
||||
);
|
||||
|
||||
ObserveSafeMode();
|
||||
LOCK2(cs_main, pwallet->cs_wallet);
|
||||
|
||||
std::vector<COutPoint> vOutpts;
|
||||
@ -2968,8 +2935,6 @@ UniValue getwalletinfo(const JSONRPCRequest& request)
|
||||
+ HelpExampleRpc("getwalletinfo", "")
|
||||
);
|
||||
|
||||
ObserveSafeMode();
|
||||
|
||||
// Make sure the results are valid at least up to the most recent block
|
||||
// the user could have gotten from another RPC command prior to now
|
||||
pwallet->BlockUntilSyncedToCurrentChain();
|
||||
@ -3126,8 +3091,6 @@ UniValue listunspent(const JSONRPCRequest& request)
|
||||
+ HelpExampleRpc("listunspent", "6, 9999999, [] , true, { \"minimumAmount\": 0.005 } ")
|
||||
);
|
||||
|
||||
ObserveSafeMode();
|
||||
|
||||
int nMinDepth = 1;
|
||||
if (!request.params[0].isNull()) {
|
||||
RPCTypeCheckArgument(request.params[0], UniValue::VNUM);
|
||||
@ -3300,7 +3263,6 @@ UniValue fundrawtransaction(const JSONRPCRequest& request)
|
||||
+ HelpExampleCli("sendrawtransaction", "\"signedtransactionhex\"")
|
||||
);
|
||||
|
||||
ObserveSafeMode();
|
||||
RPCTypeCheck(request.params, {UniValue::VSTR});
|
||||
|
||||
// Make sure the results are valid at least up to the most recent block
|
||||
|
@ -40,7 +40,6 @@ void SetfLargeWorkInvalidChainFound(bool flag)
|
||||
std::string GetWarnings(const std::string& strFor)
|
||||
{
|
||||
std::string strStatusBar;
|
||||
std::string strRPC;
|
||||
std::string strGUI;
|
||||
const std::string uiAlertSeperator = "<hr />";
|
||||
|
||||
@ -51,9 +50,6 @@ std::string GetWarnings(const std::string& strFor)
|
||||
strGUI = _("This is a pre-release test build - use at your own risk - do not use for mining or merchant applications");
|
||||
}
|
||||
|
||||
if (gArgs.GetBoolArg("-testsafemode", DEFAULT_TESTSAFEMODE))
|
||||
strStatusBar = strRPC = strGUI = "testsafemode enabled";
|
||||
|
||||
// Misc warnings like out of disk space and clock is wrong
|
||||
if (strMiscWarning != "")
|
||||
{
|
||||
@ -63,12 +59,12 @@ std::string GetWarnings(const std::string& strFor)
|
||||
|
||||
if (fLargeWorkForkFound)
|
||||
{
|
||||
strStatusBar = strRPC = "Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues.";
|
||||
strStatusBar = "Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues.";
|
||||
strGUI += (strGUI.empty() ? "" : uiAlertSeperator) + _("Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues.");
|
||||
}
|
||||
else if (fLargeWorkInvalidChainFound)
|
||||
{
|
||||
strStatusBar = strRPC = "Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade.";
|
||||
strStatusBar = "Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade.";
|
||||
strGUI += (strGUI.empty() ? "" : uiAlertSeperator) + _("Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade.");
|
||||
}
|
||||
|
||||
@ -76,8 +72,6 @@ std::string GetWarnings(const std::string& strFor)
|
||||
return strGUI;
|
||||
else if (strFor == "statusbar")
|
||||
return strStatusBar;
|
||||
else if (strFor == "rpc")
|
||||
return strRPC;
|
||||
assert(!"GetWarnings(): invalid parameter");
|
||||
return "error";
|
||||
}
|
||||
|
@ -15,13 +15,10 @@ bool GetfLargeWorkForkFound();
|
||||
void SetfLargeWorkInvalidChainFound(bool flag);
|
||||
/** Format a string that describes several potential problems detected by the core.
|
||||
* strFor can have three values:
|
||||
* - "rpc": get critical warnings, which should put the client in safe mode if non-empty
|
||||
* - "statusbar": get all warnings
|
||||
* - "gui": get all warnings, translated (where possible) for GUI
|
||||
* This function only returns the highest priority warning of the set selected by strFor.
|
||||
*/
|
||||
std::string GetWarnings(const std::string& strFor);
|
||||
|
||||
static const bool DEFAULT_TESTSAFEMODE = false;
|
||||
|
||||
#endif // BITCOIN_WARNINGS_H
|
||||
|
@ -124,7 +124,7 @@ class PruneTest(BitcoinTestFramework):
|
||||
# Reboot node 1 to clear its mempool (hopefully make the invalidate faster)
|
||||
# Lower the block max size so we don't keep mining all our big mempool transactions (from disconnected blocks)
|
||||
self.stop_node(1)
|
||||
self.start_node(1, extra_args=["-maxreceivebuffer=20000","-blockmaxweight=20000", "-checkblocks=5", "-disablesafemode"])
|
||||
self.start_node(1, extra_args=["-maxreceivebuffer=20000","-blockmaxweight=20000", "-checkblocks=5"])
|
||||
|
||||
height = self.nodes[1].getblockcount()
|
||||
self.log.info("Current block height: %d" % height)
|
||||
@ -147,7 +147,7 @@ class PruneTest(BitcoinTestFramework):
|
||||
|
||||
# Reboot node1 to clear those giant tx's from mempool
|
||||
self.stop_node(1)
|
||||
self.start_node(1, extra_args=["-maxreceivebuffer=20000","-blockmaxweight=20000", "-checkblocks=5", "-disablesafemode"])
|
||||
self.start_node(1, extra_args=["-maxreceivebuffer=20000","-blockmaxweight=20000", "-checkblocks=5"])
|
||||
|
||||
self.log.info("Generating new longer chain of 300 more blocks")
|
||||
self.nodes[1].generate(300)
|
||||
|
Loading…
Reference in New Issue
Block a user