diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/chainparams.cpp | 28 | ||||
-rw-r--r-- | src/primitives/transaction.cpp | 7 | ||||
-rw-r--r-- | src/qt/walletcontroller.cpp | 12 | ||||
-rw-r--r-- | src/qt/walletcontroller.h | 1 | ||||
-rw-r--r-- | src/util/time.cpp | 12 | ||||
-rw-r--r-- | src/wallet/load.cpp | 26 | ||||
-rw-r--r-- | src/wallet/wallet.cpp | 25 |
7 files changed, 66 insertions, 45 deletions
diff --git a/src/chainparams.cpp b/src/chainparams.cpp index a9183ac970..f8f2d41138 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -84,10 +84,10 @@ public: consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = 1230767999; // December 31, 2008 // The best chain should have at least this much work. - consensus.nMinimumChainWork = uint256S("0x000000000000000000000000000000000000000008ea3cf107ae0dec57f03fe8"); + consensus.nMinimumChainWork = uint256S("0x00000000000000000000000000000000000000000e1ab5ec9348e9f4b8eb8154"); // By default assume that the signatures in ancestors of this block are valid. - consensus.defaultAssumeValid = uint256S("0x00000000000000000005f8920febd3925f8272a6a71237563d78c2edfdd09ddf"); // 597379 + consensus.defaultAssumeValid = uint256S("0x0000000000000000000f2adce67e49b0b6bdeb9de8b7c3d7e93b21e7fc1e819d"); // 623950 /** * The message start string is designed to be unlikely to occur in normal data. @@ -100,7 +100,7 @@ public: pchMessageStart[3] = 0xd9; nDefaultPort = 8333; nPruneAfterHeight = 100000; - m_assumed_blockchain_size = 280; + m_assumed_blockchain_size = 320; m_assumed_chain_state_size = 4; genesis = CreateGenesisBlock(1231006505, 2083236893, 0x1d00ffff, 1, 50 * COIN); @@ -156,10 +156,10 @@ public: }; chainTxData = ChainTxData{ - // Data from RPC: getchaintxstats 4096 00000000000000000005f8920febd3925f8272a6a71237563d78c2edfdd09ddf - /* nTime */ 1569926786, - /* nTxCount */ 460596047, - /* dTxRate */ 3.77848885073875, + // Data from RPC: getchaintxstats 4096 0000000000000000000f2adce67e49b0b6bdeb9de8b7c3d7e93b21e7fc1e819d + /* nTime */ 1585764811, + /* nTxCount */ 517186863, + /* dTxRate */ 3.305709665792344, }; } }; @@ -192,10 +192,10 @@ public: consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = 1230767999; // December 31, 2008 // The best chain should have at least this much work. - consensus.nMinimumChainWork = uint256S("0x00000000000000000000000000000000000000000000012b2a3a62424f21c918"); + consensus.nMinimumChainWork = uint256S("0x0000000000000000000000000000000000000000000001495c1d5a01e2af8a23"); // By default assume that the signatures in ancestors of this block are valid. - consensus.defaultAssumeValid = uint256S("0x00000000000000b7ab6ce61eb6d571003fbe5fe892da4c9b740c49a07542462d"); // 1580000 + consensus.defaultAssumeValid = uint256S("0x000000000000056c49030c174179b52a928c870e6e8a822c75973b7970cfbd01"); // 1692000 pchMessageStart[0] = 0x0b; pchMessageStart[1] = 0x11; @@ -203,7 +203,7 @@ public: pchMessageStart[3] = 0x07; nDefaultPort = 18333; nPruneAfterHeight = 1000; - m_assumed_blockchain_size = 30; + m_assumed_blockchain_size = 40; m_assumed_chain_state_size = 2; genesis = CreateGenesisBlock(1296688602, 414098458, 0x1d00ffff, 1, 50 * COIN); @@ -241,10 +241,10 @@ public: }; chainTxData = ChainTxData{ - // Data from RPC: getchaintxstats 4096 00000000000000b7ab6ce61eb6d571003fbe5fe892da4c9b740c49a07542462d - /* nTime */ 1569741320, - /* nTxCount */ 52318009, - /* dTxRate */ 0.1517002392872353, + // Data from RPC: getchaintxstats 4096 000000000000056c49030c174179b52a928c870e6e8a822c75973b7970cfbd01 + /* nTime */ 1585561140, + /* nTxCount */ 13483, + /* dTxRate */ 0.08523187013249722, }; } }; diff --git a/src/primitives/transaction.cpp b/src/primitives/transaction.cpp index 28c145f71d..6e72c1f15c 100644 --- a/src/primitives/transaction.cpp +++ b/src/primitives/transaction.cpp @@ -9,6 +9,8 @@ #include <tinyformat.h> #include <util/strencodings.h> +#include <assert.h> + std::string COutPoint::ToString() const { return strprintf("COutPoint(%s, %u)", hash.ToString().substr(0,10), n); @@ -84,10 +86,11 @@ CAmount CTransaction::GetValueOut() const { CAmount nValueOut = 0; for (const auto& tx_out : vout) { - nValueOut += tx_out.nValue; - if (!MoneyRange(tx_out.nValue) || !MoneyRange(nValueOut)) + if (!MoneyRange(tx_out.nValue) || !MoneyRange(nValueOut + tx_out.nValue)) throw std::runtime_error(std::string(__func__) + ": value out of range"); + nValueOut += tx_out.nValue; } + assert(MoneyRange(nValueOut)); return nValueOut; } diff --git a/src/qt/walletcontroller.cpp b/src/qt/walletcontroller.cpp index 88c694567e..f076b5ba61 100644 --- a/src/qt/walletcontroller.cpp +++ b/src/qt/walletcontroller.cpp @@ -166,6 +166,7 @@ WalletControllerActivity::~WalletControllerActivity() void WalletControllerActivity::showProgressDialog(const QString& label_text) { + assert(!m_progress_dialog); m_progress_dialog = new QProgressDialog(m_parent_widget); m_progress_dialog->setLabelText(label_text); @@ -175,6 +176,13 @@ void WalletControllerActivity::showProgressDialog(const QString& label_text) GUIUtil::PolishProgressDialog(m_progress_dialog); } +void WalletControllerActivity::destroyProgressDialog() +{ + assert(m_progress_dialog); + delete m_progress_dialog; + m_progress_dialog = nullptr; +} + CreateWalletActivity::CreateWalletActivity(WalletController* wallet_controller, QWidget* parent_widget) : WalletControllerActivity(wallet_controller, parent_widget) { @@ -229,7 +237,7 @@ void CreateWalletActivity::createWallet() void CreateWalletActivity::finish() { - m_progress_dialog->hide(); + destroyProgressDialog(); if (!m_error_message.empty()) { QMessageBox::critical(m_parent_widget, tr("Create wallet failed"), QString::fromStdString(m_error_message)); @@ -270,7 +278,7 @@ OpenWalletActivity::OpenWalletActivity(WalletController* wallet_controller, QWid void OpenWalletActivity::finish() { - m_progress_dialog->hide(); + destroyProgressDialog(); if (!m_error_message.empty()) { QMessageBox::critical(m_parent_widget, tr("Open wallet failed"), QString::fromStdString(m_error_message)); diff --git a/src/qt/walletcontroller.h b/src/qt/walletcontroller.h index 956245775e..f30eb25308 100644 --- a/src/qt/walletcontroller.h +++ b/src/qt/walletcontroller.h @@ -96,6 +96,7 @@ protected: QObject* worker() const { return m_wallet_controller->m_activity_worker; } void showProgressDialog(const QString& label_text); + void destroyProgressDialog(); WalletController* const m_wallet_controller; QWidget* const m_parent_widget; diff --git a/src/util/time.cpp b/src/util/time.cpp index 14937b985e..0938ff36a6 100644 --- a/src/util/time.cpp +++ b/src/util/time.cpp @@ -78,10 +78,10 @@ int64_t GetSystemTimeInSeconds() std::string FormatISO8601DateTime(int64_t nTime) { struct tm ts; time_t time_val = nTime; -#ifdef _MSC_VER - if (gmtime_s(&ts, &time_val) != 0) { -#else +#ifdef HAVE_GMTIME_R if (gmtime_r(&time_val, &ts) == nullptr) { +#else + if (gmtime_s(&ts, &time_val) != 0) { #endif return {}; } @@ -91,10 +91,10 @@ std::string FormatISO8601DateTime(int64_t nTime) { std::string FormatISO8601Date(int64_t nTime) { struct tm ts; time_t time_val = nTime; -#ifdef _MSC_VER - if (gmtime_s(&ts, &time_val) != 0) { -#else +#ifdef HAVE_GMTIME_R if (gmtime_r(&time_val, &ts) == nullptr) { +#else + if (gmtime_s(&ts, &time_val) != 0) { #endif return {}; } diff --git a/src/wallet/load.cpp b/src/wallet/load.cpp index 3e92c07d64..d6e44c7be5 100644 --- a/src/wallet/load.cpp +++ b/src/wallet/load.cpp @@ -66,19 +66,23 @@ bool VerifyWallets(interfaces::Chain& chain, const std::vector<std::string>& wal bool LoadWallets(interfaces::Chain& chain, const std::vector<std::string>& wallet_files) { - for (const std::string& walletFile : wallet_files) { - std::string error; - std::vector<std::string> warnings; - std::shared_ptr<CWallet> pwallet = CWallet::CreateWalletFromFile(chain, WalletLocation(walletFile), error, warnings); - if (!warnings.empty()) chain.initWarning(Join(warnings, "\n")); - if (!pwallet) { - chain.initError(error); - return false; + try { + for (const std::string& walletFile : wallet_files) { + std::string error; + std::vector<std::string> warnings; + std::shared_ptr<CWallet> pwallet = CWallet::CreateWalletFromFile(chain, WalletLocation(walletFile), error, warnings); + if (!warnings.empty()) chain.initWarning(Join(warnings, "\n")); + if (!pwallet) { + chain.initError(error); + return false; + } + AddWallet(pwallet); } - AddWallet(pwallet); + return true; + } catch (const std::runtime_error& e) { + chain.initError(e.what()); + return false; } - - return true; } void StartWallets(CScheduler& scheduler) diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp index 98f308f927..bc9f84a11d 100644 --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -148,19 +148,24 @@ void UnloadWallet(std::shared_ptr<CWallet>&& wallet) std::shared_ptr<CWallet> LoadWallet(interfaces::Chain& chain, const WalletLocation& location, std::string& error, std::vector<std::string>& warnings) { - if (!CWallet::Verify(chain, location, false, error, warnings)) { - error = "Wallet file verification failed: " + error; - return nullptr; - } + try { + if (!CWallet::Verify(chain, location, false, error, warnings)) { + error = "Wallet file verification failed: " + error; + return nullptr; + } - std::shared_ptr<CWallet> wallet = CWallet::CreateWalletFromFile(chain, location, error, warnings); - if (!wallet) { - error = "Wallet loading failed: " + error; + std::shared_ptr<CWallet> wallet = CWallet::CreateWalletFromFile(chain, location, error, warnings); + if (!wallet) { + error = "Wallet loading failed: " + error; + return nullptr; + } + AddWallet(wallet); + wallet->postInitProcess(); + return wallet; + } catch (const std::runtime_error& e) { + error = e.what(); return nullptr; } - AddWallet(wallet); - wallet->postInitProcess(); - return wallet; } std::shared_ptr<CWallet> LoadWallet(interfaces::Chain& chain, const std::string& name, std::string& error, std::vector<std::string>& warnings) |