From b8eb37757b1cd1e9b765f007aa8571df3de71666 Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Wed, 8 Feb 2017 12:46:01 +0000 Subject: [PATCH] Require -experimentalmode for wallet encryption --- qa/rpc-tests/keypool.py | 2 +- qa/rpc-tests/wallet_nullifiers.py | 2 +- src/init.cpp | 7 +++++++ src/wallet/rpcwallet.cpp | 2 +- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/qa/rpc-tests/keypool.py b/qa/rpc-tests/keypool.py index 1f8979692..38d6874dc 100755 --- a/qa/rpc-tests/keypool.py +++ b/qa/rpc-tests/keypool.py @@ -98,7 +98,7 @@ def main(): os.makedirs(options.tmpdir) initialize_chain(options.tmpdir) - nodes = start_nodes(1, options.tmpdir, extra_args=[['-developerencryptwallet']]) + nodes = start_nodes(1, options.tmpdir, extra_args=[['-experimentalfeatures', '-developerencryptwallet']]) run_test(nodes, options.tmpdir) diff --git a/qa/rpc-tests/wallet_nullifiers.py b/qa/rpc-tests/wallet_nullifiers.py index ce18f8d51..93f5a499d 100755 --- a/qa/rpc-tests/wallet_nullifiers.py +++ b/qa/rpc-tests/wallet_nullifiers.py @@ -12,7 +12,7 @@ class WalletNullifiersTest (BitcoinTestFramework): def setup_nodes(self): return start_nodes(4, self.options.tmpdir, - extra_args=[['-developerencryptwallet']] * 4) + extra_args=[['-experimentalfeatures', '-developerencryptwallet']] * 4) def run_test (self): # add zaddr to node 0 diff --git a/src/init.cpp b/src/init.cpp index 67df0e99b..85ee47921 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -754,6 +754,13 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) // Set this early so that experimental features are correctly enabled/disabled fExperimentalMode = GetBoolArg("-experimentalfeatures", false); + // Fail early if user has set experimental options without the global flag + if (!fExperimentalMode) { + if (mapArgs.count("-developerencryptwallet")) { + return InitError(_("Wallet encryption requires -experimentalfeatures.")); + } + } + // Set this early so that parameter interactions go to console fPrintToConsole = GetBoolArg("-printtoconsole", false); fLogTimestamps = GetBoolArg("-logtimestamps", true); diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp index 060b0dd94..b3ec08463 100644 --- a/src/wallet/rpcwallet.cpp +++ b/src/wallet/rpcwallet.cpp @@ -2002,7 +2002,7 @@ Value encryptwallet(const Array& params, bool fHelp) if (!EnsureWalletIsAvailable(fHelp)) return Value::null; - auto fEnableWalletEncryption = GetBoolArg("-developerencryptwallet", false); + auto fEnableWalletEncryption = fExperimentalMode && GetBoolArg("-developerencryptwallet", false); std::string strWalletEncryptionDisabledMsg = ""; if (!fEnableWalletEncryption) {