aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main.cpp7
-rw-r--r--src/main.h3
-rw-r--r--src/miner.cpp4
-rw-r--r--src/qt/bitcoin.cpp64
-rw-r--r--src/qt/guiconstants.h5
-rw-r--r--src/qt/intro.cpp7
-rw-r--r--src/qt/intro.h2
-rw-r--r--src/wallet.cpp6
8 files changed, 60 insertions, 38 deletions
diff --git a/src/main.cpp b/src/main.cpp
index 2d8ac0c9bc..5f50e05780 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -51,7 +51,7 @@ unsigned int nCoinCacheSize = 5000;
/** Fees smaller than this (in satoshi) are considered zero fee (for transaction creation) */
int64_t CTransaction::nMinTxFee = 10000; // Override with -mintxfee
-/** Fees smaller than this (in satoshi) are considered zero fee (for relaying) */
+/** Fees smaller than this (in satoshi) are considered zero fee (for relaying and mining) */
int64_t CTransaction::nMinRelayTxFee = 1000;
static CMedianFilter<int> cPeerBlockCounts(8, 0); // Amount of blocks that other nodes claim to have
@@ -2844,9 +2844,10 @@ bool static LoadBlockIndexDB()
if (it == mapBlockIndex.end())
return true;
chainActive.SetTip(it->second);
- LogPrintf("LoadBlockIndexDB(): hashBestChain=%s height=%d date=%s\n",
+ LogPrintf("LoadBlockIndexDB(): hashBestChain=%s height=%d date=%s progress=%f\n",
chainActive.Tip()->GetBlockHash().ToString(), chainActive.Height(),
- DateTimeStrFormat("%Y-%m-%d %H:%M:%S", chainActive.Tip()->GetBlockTime()));
+ DateTimeStrFormat("%Y-%m-%d %H:%M:%S", chainActive.Tip()->GetBlockTime()),
+ Checkpoints::GuessVerificationProgress(chainActive.Tip()));
return true;
}
diff --git a/src/main.h b/src/main.h
index 1b1aca4e05..b9c8dd7050 100644
--- a/src/main.h
+++ b/src/main.h
@@ -35,8 +35,9 @@ class CInv;
/** The maximum allowed size for a serialized block, in bytes (network rule) */
static const unsigned int MAX_BLOCK_SIZE = 1000000;
-/** Default for -blockmaxsize, maximum size for mined blocks **/
+/** Default for -blockmaxsize and -blockminsize, which control the range of sizes the mining code will create **/
static const unsigned int DEFAULT_BLOCK_MAX_SIZE = 750000;
+static const unsigned int DEFAULT_BLOCK_MIN_SIZE = 0;
/** Default for -blockprioritysize, maximum space for zero/low-fee transactions **/
static const unsigned int DEFAULT_BLOCK_PRIORITY_SIZE = 50000;
/** The maximum size for transactions we're willing to relay/mine */
diff --git a/src/miner.cpp b/src/miner.cpp
index e52f539085..3351908e65 100644
--- a/src/miner.cpp
+++ b/src/miner.cpp
@@ -136,7 +136,7 @@ CBlockTemplate* CreateNewBlock(const CScript& scriptPubKeyIn)
// Minimum block size you want to create; block will be filled with free transactions
// until there are no more or the block reaches this size:
- unsigned int nBlockMinSize = GetArg("-blockminsize", 0);
+ unsigned int nBlockMinSize = GetArg("-blockminsize", DEFAULT_BLOCK_MIN_SIZE);
nBlockMinSize = std::min(nBlockMaxSize, nBlockMinSize);
// Collect memory pool transactions into the block
@@ -254,7 +254,7 @@ CBlockTemplate* CreateNewBlock(const CScript& scriptPubKeyIn)
continue;
// Skip free transactions if we're past the minimum block size:
- if (fSortedByFee && (dFeePerKb < CTransaction::nMinTxFee) && (nBlockSize + nTxSize >= nBlockMinSize))
+ if (fSortedByFee && (dFeePerKb < CTransaction::nMinRelayTxFee) && (nBlockSize + nTxSize >= nBlockMinSize))
continue;
// Prioritize by fee once past the priority size or we run out of high-priority
diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp
index 652d39a5ce..d8e21c4aa6 100644
--- a/src/qt/bitcoin.cpp
+++ b/src/qt/bitcoin.cpp
@@ -78,6 +78,12 @@ static void initTranslations(QTranslator &qtTranslatorBase, QTranslator &qtTrans
{
QSettings settings;
+ // Remove old translators
+ QApplication::removeTranslator(&qtTranslatorBase);
+ QApplication::removeTranslator(&qtTranslator);
+ QApplication::removeTranslator(&translatorBase);
+ QApplication::removeTranslator(&translator);
+
// Get desired locale (e.g. "de_DE")
// 1) System default language
QString lang_territory = QLocale::system().name();
@@ -439,21 +445,9 @@ void BitcoinApplication::handleRunawayException(const QString &message)
#ifndef BITCOIN_QT_TEST
int main(int argc, char *argv[])
{
- bool fSelParFromCLFailed = false;
/// 1. Parse command-line options. These take precedence over anything else.
// Command-line options take precedence:
ParseParameters(argc, argv);
- // Check for -testnet or -regtest parameter (TestNet() calls are only valid after this clause)
- if (!SelectParamsFromCommandLine()) {
- fSelParFromCLFailed = true;
- }
-#ifdef ENABLE_WALLET
- // Parse URIs on command line -- this can affect Params()
- if (!PaymentServer::ipcParseCommandLine(argc, argv))
- exit(0);
-#endif
-
- bool isaTestNet = Params().NetworkID() != CChainParams::MAIN;
// Do not refer to data directory yet, this can be overridden by Intro::pickDataDirectory
@@ -480,12 +474,9 @@ int main(int argc, char *argv[])
/// 3. Application identification
// must be set before OptionsModel is initialized or translations are loaded,
// as it is used to locate QSettings
- QApplication::setOrganizationName("Bitcoin");
- QApplication::setOrganizationDomain("bitcoin.org");
- if (isaTestNet) // Separate UI settings for testnets
- QApplication::setApplicationName("Bitcoin-Qt-testnet");
- else
- QApplication::setApplicationName("Bitcoin-Qt");
+ QApplication::setOrganizationName(QAPP_ORG_NAME);
+ QApplication::setOrganizationDomain(QAPP_ORG_DOMAIN);
+ QApplication::setApplicationName(QAPP_APP_NAME_DEFAULT);
/// 4. Initialization of translations, so that intro dialog is in user's language
// Now that QSettings are accessible, initialize translations
@@ -501,17 +492,13 @@ int main(int argc, char *argv[])
help.showOrPrint();
return 1;
}
- // Now that translations are initialized, check for earlier errors and show a translatable error message
- if (fSelParFromCLFailed) {
- QMessageBox::critical(0, QObject::tr("Bitcoin"), QObject::tr("Error: Invalid combination of -regtest and -testnet."));
- return 1;
- }
/// 5. Now that settings and translations are available, ask user for data directory
// User language is set up: pick a data directory
- Intro::pickDataDirectory(isaTestNet);
+ Intro::pickDataDirectory();
/// 6. Determine availability of data directory and parse bitcoin.conf
+ /// - Do not call GetDataDir(true) before this step finishes
if (!boost::filesystem::is_directory(GetDataDir(false)))
{
QMessageBox::critical(0, QObject::tr("Bitcoin"),
@@ -520,8 +507,33 @@ int main(int argc, char *argv[])
}
ReadConfigFile(mapArgs, mapMultiArgs);
+ /// 7. Determine network (and switch to network specific options)
+ // - Do not call Params() before this step
+ // - Do this after parsing the configuration file, as the network can be switched there
+ // - QSettings() will use the new application name after this, resulting in network-specific settings
+ // - Needs to be done before createOptionsModel
+
+ // Check for -testnet or -regtest parameter (Params() calls are only valid after this clause)
+ if (!SelectParamsFromCommandLine()) {
+ QMessageBox::critical(0, QObject::tr("Bitcoin"), QObject::tr("Error: Invalid combination of -regtest and -testnet."));
+ return 1;
+ }
+#ifdef ENABLE_WALLET
+ // Parse URIs on command line -- this can affect Params()
+ if (!PaymentServer::ipcParseCommandLine(argc, argv))
+ exit(0);
+#endif
+ bool isaTestNet = Params().NetworkID() != CChainParams::MAIN;
+ // Allow for separate UI settings for testnets
+ if (isaTestNet)
+ QApplication::setApplicationName(QAPP_APP_NAME_TESTNET);
+ else
+ QApplication::setApplicationName(QAPP_APP_NAME_DEFAULT);
+ // Re-initialize translations after changing application name (language in network-specific settings can be different)
+ initTranslations(qtTranslatorBase, qtTranslator, translatorBase, translator);
+
#ifdef ENABLE_WALLET
- /// 7. URI IPC sending
+ /// 8. URI IPC sending
// - Do this early as we don't want to bother initializing if we are just calling IPC
// - Do this *after* setting up the data directory, as the data directory hash is used in the name
// of the server.
@@ -535,7 +547,7 @@ int main(int argc, char *argv[])
app.createPaymentServer();
#endif
- /// 8. Main GUI initialization
+ /// 9. Main GUI initialization
// Install global event filter that makes sure that long tooltips can be word-wrapped
app.installEventFilter(new GUIUtil::ToolTipToRichTextFilter(TOOLTIP_WRAP_THRESHOLD, &app));
// Install qDebug() message handler to route to debug.log
diff --git a/src/qt/guiconstants.h b/src/qt/guiconstants.h
index 9f6588bc9e..5ae4bc833d 100644
--- a/src/qt/guiconstants.h
+++ b/src/qt/guiconstants.h
@@ -41,4 +41,9 @@ static const int MAX_PAYMENT_REQUEST_SIZE = 50000; // bytes
/* Number of frames in spinner animation */
#define SPINNER_FRAMES 35
+#define QAPP_ORG_NAME "Bitcoin"
+#define QAPP_ORG_DOMAIN "bitcoin.org"
+#define QAPP_APP_NAME_DEFAULT "Bitcoin-Qt"
+#define QAPP_APP_NAME_TESTNET "Bitcoin-Qt-testnet"
+
#endif // GUICONSTANTS_H
diff --git a/src/qt/intro.cpp b/src/qt/intro.cpp
index 42833a8a33..3bc19f8645 100644
--- a/src/qt/intro.cpp
+++ b/src/qt/intro.cpp
@@ -146,7 +146,7 @@ QString Intro::getDefaultDataDirectory()
return QString::fromStdString(GetDefaultDataDir().string());
}
-void Intro::pickDataDirectory(bool fIsTestnet)
+void Intro::pickDataDirectory()
{
namespace fs = boost::filesystem;
QSettings settings;
@@ -164,10 +164,7 @@ void Intro::pickDataDirectory(bool fIsTestnet)
/* If current default data directory does not exist, let the user choose one */
Intro intro;
intro.setDataDirectory(dataDir);
- if (!fIsTestnet)
- intro.setWindowIcon(QIcon(":icons/bitcoin"));
- else
- intro.setWindowIcon(QIcon(":icons/bitcoin_testnet"));
+ intro.setWindowIcon(QIcon(":icons/bitcoin"));
while(true)
{
diff --git a/src/qt/intro.h b/src/qt/intro.h
index 72693d5544..295a75562f 100644
--- a/src/qt/intro.h
+++ b/src/qt/intro.h
@@ -36,7 +36,7 @@ public:
* @note do NOT call global GetDataDir() before calling this function, this
* will cause the wrong path to be cached.
*/
- static void pickDataDirectory(bool fIsTestnet);
+ static void pickDataDirectory();
/**
* Determine default data directory for operating system.
diff --git a/src/wallet.cpp b/src/wallet.cpp
index 3ecd994e9d..4f7b96e7f2 100644
--- a/src/wallet.cpp
+++ b/src/wallet.cpp
@@ -8,6 +8,7 @@
#include "base58.h"
#include "coincontrol.h"
#include "net.h"
+#include "checkpoints.h"
#include <boost/algorithm/string/replace.hpp>
#include <openssl/rand.h>
@@ -830,6 +831,7 @@ bool CWalletTx::WriteToDisk()
int CWallet::ScanForWalletTransactions(CBlockIndex* pindexStart, bool fUpdate)
{
int ret = 0;
+ int64_t nNow = GetTime();
CBlockIndex* pindex = pindexStart;
{
@@ -851,6 +853,10 @@ int CWallet::ScanForWalletTransactions(CBlockIndex* pindexStart, bool fUpdate)
ret++;
}
pindex = chainActive.Next(pindex);
+ if (GetTime() >= nNow + 60) {
+ nNow = GetTime();
+ LogPrintf("Still rescanning. At block %d. Progress=%f\n", pindex->nHeight, Checkpoints::GuessVerificationProgress(pindex));
+ }
}
}
return ret;