From 20cff2ade4d686fb4f10c106dbc99b76c173102a Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Sat, 1 Oct 2011 02:47:47 +0200 Subject: [PATCH 001/298] remove possibility of 63 bit overflow in ParseMoney --- src/util.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/util.cpp b/src/util.cpp index 76a27002719..d6a113095da 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -389,7 +389,7 @@ bool ParseMoney(const char* pszIn, int64& nRet) for (; *p; p++) if (!isspace(*p)) return false; - if (strWhole.size() > 14) + if (strWhole.size() > 10) // guard against 63 bit overflow return false; if (nUnits < 0 || nUnits > COIN) return false; From 600dc6255971bfe152767c67e7ca6866fb1541ea Mon Sep 17 00:00:00 2001 From: Victor Leschuk Date: Thu, 6 Oct 2011 19:53:42 +0400 Subject: [PATCH 002/298] Fix for 64bit build --- src/util.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/util.h b/src/util.h index 3d7ef108b47..6ecc92b2b6d 100644 --- a/src/util.h +++ b/src/util.h @@ -662,8 +662,8 @@ inline bool AffinityBugWorkaround(void(*pfn)(void*)) { #ifdef __WXMSW__ // Sometimes after a few hours affinity gets stuck on one processor - DWORD dwProcessAffinityMask = -1; - DWORD dwSystemAffinityMask = -1; + DWORD_PTR dwProcessAffinityMask = -1; + DWORD_PTR dwSystemAffinityMask = -1; GetProcessAffinityMask(GetCurrentProcess(), &dwProcessAffinityMask, &dwSystemAffinityMask); DWORD dwPrev1 = SetThreadAffinityMask(GetCurrentThread(), dwProcessAffinityMask); DWORD dwPrev2 = SetThreadAffinityMask(GetCurrentThread(), dwProcessAffinityMask); From aec5c5fe26293452d3fe7acf1e4c20830613812c Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Mon, 10 Oct 2011 14:22:31 -0400 Subject: [PATCH 003/298] Bump version to 0.4.1 --- contrib/Bitcoin.app/Contents/Info.plist | 2 +- doc/README | 2 +- doc/README_windows.txt | 2 +- share/setup.nsi | 6 +++--- src/serialize.h | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/contrib/Bitcoin.app/Contents/Info.plist b/contrib/Bitcoin.app/Contents/Info.plist index a5c7da1c8f4..d5a278a570c 100644 --- a/contrib/Bitcoin.app/Contents/Info.plist +++ b/contrib/Bitcoin.app/Contents/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 0.4.00 + 0.4.1 CFBundleSignature ???? CFBundleVersion diff --git a/doc/README b/doc/README index 772fd7f31ec..789cc9fb870 100644 --- a/doc/README +++ b/doc/README @@ -1,4 +1,4 @@ -Bitcoin 0.4.0rc1 BETA +Bitcoin 0.4.1 BETA Copyright (c) 2009-2011 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/doc/README_windows.txt b/doc/README_windows.txt index 8378ae50d81..7ff8834920b 100644 --- a/doc/README_windows.txt +++ b/doc/README_windows.txt @@ -1,4 +1,4 @@ -Bitcoin 0.4.00rc1 BETA +Bitcoin 0.4.1 BETA Copyright (c) 2009-2011 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/share/setup.nsi b/share/setup.nsi index 6cf477747c8..4c837c974bf 100644 --- a/share/setup.nsi +++ b/share/setup.nsi @@ -5,7 +5,7 @@ SetCompressor /SOLID lzma # General Symbol Definitions !define REGKEY "SOFTWARE\$(^Name)" -!define VERSION 0.4.00 +!define VERSION 0.4.1 !define COMPANY "Bitcoin project" !define URL http://www.bitcoin.org/ @@ -45,13 +45,13 @@ Var StartMenuGroup !insertmacro MUI_LANGUAGE English # Installer attributes -OutFile bitcoin-0.4.00-win32-setup.exe +OutFile bitcoin-0.4.1-win32-setup.exe InstallDir $PROGRAMFILES\Bitcoin CRCCheck on XPStyle on BrandingText " " ShowInstDetails show -VIProductVersion 0.4.00.0 +VIProductVersion 0.4.1.0 VIAddVersionKey ProductName Bitcoin VIAddVersionKey ProductVersion "${VERSION}" VIAddVersionKey CompanyName "${COMPANY}" diff --git a/src/serialize.h b/src/serialize.h index 698bdfe6a9d..320ce9d2ae0 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -59,7 +59,7 @@ class CDataStream; class CAutoFile; static const unsigned int MAX_SIZE = 0x02000000; -static const int VERSION = 40000; +static const int VERSION = 40100; static const char* pszSubVer = ""; static const bool VERSION_IS_BETA = true; From b526cbaa718a6c66bc6b5bc224d2717e0066ddb6 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Mon, 10 Oct 2011 16:03:14 -0400 Subject: [PATCH 004/298] bitcoind does not need to link with gthread-2.0 --- src/makefile.unix | 1 - 1 file changed, 1 deletion(-) diff --git a/src/makefile.unix b/src/makefile.unix index 43c3ea7f500..98c40771d29 100644 --- a/src/makefile.unix +++ b/src/makefile.unix @@ -30,7 +30,6 @@ endif LIBS+= \ -Wl,-Bdynamic \ - -l gthread-2.0 \ -l z \ -l dl \ -l pthread From 38a976d5bbfb1bdb304ae64aa3ca992d13ad3cde Mon Sep 17 00:00:00 2001 From: cjdelisle Date: Sun, 16 Oct 2011 20:38:23 -0400 Subject: [PATCH 005/298] Added a workaround for an Ubuntu bug which causes -fstack-protector-all to be disregarded. --- src/makefile.unix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/makefile.unix b/src/makefile.unix index 98c40771d29..9e0b3263d7a 100644 --- a/src/makefile.unix +++ b/src/makefile.unix @@ -38,12 +38,17 @@ LIBS+= \ # Hardening # Make some classes of vulnerabilities unexploitable in case one is discovered. # + # This is a workaround for Ubuntu bug #691722, the default -fstack-protector causes + # -fstack-protector-all to be ignored unless -fno-stack-protector is used first. + # see: https://bugs.launchpad.net/ubuntu/+source/gcc-4.5/+bug/691722 + HARDENING=-fno-stack-protector + # Stack Canaries # Put numbers at the beginning of each stack frame and check that they are the same. # If a stack buffer if overflowed, it writes over the canary number and then on return # when that number is checked, it won't be the same and the program will exit with # a "Stack smashing detected" error instead of being exploited. - HARDENING=-fstack-protector-all -Wstack-protector + HARDENING+=-fstack-protector-all -Wstack-protector # Make some important things such as the global offset table read only as soon as # the dynamic linker is finished building it. This will prevent overwriting of addresses From ed176ba584ed9f05f5311743059e108ddbbb5d5b Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Mon, 10 Oct 2011 12:08:05 -0400 Subject: [PATCH 006/298] Only define __STDC_LIMIT_MACROS if not already defined. --- src/headers.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/headers.h b/src/headers.h index d0c74348202..ab318cbb436 100644 --- a/src/headers.h +++ b/src/headers.h @@ -18,7 +18,13 @@ #endif #define _WIN32_IE 0x0400 #define WIN32_LEAN_AND_MEAN 1 + +// Include boost/foreach here as it defines __STDC_LIMIT_MACROS on some systems. +#include +#ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS // to enable UINT64_MAX from stdint.h +#endif + #if (defined(__unix__) || defined(unix)) && !defined(USG) #include // to get BSD define #endif @@ -57,8 +63,6 @@ #include #include -#include - #ifdef __WXMSW__ #include #include From ef4280e08b217bf2512bb1878e1dd2a926e557c9 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Mon, 10 Oct 2011 15:51:07 -0400 Subject: [PATCH 007/298] Add returns to avoid annoying compile-time warnings. --- src/keystore.h | 1 + src/wallet.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/src/keystore.h b/src/keystore.h index bbfac83d1f1..1f2c6aea3ea 100644 --- a/src/keystore.h +++ b/src/keystore.h @@ -114,6 +114,7 @@ public: return CBasicKeyStore::HaveKey(address); return mapCryptedKeys.count(address) > 0; } + return false; } bool GetKey(const CBitcoinAddress &address, CKey& keyOut) const; bool GetPubKey(const CBitcoinAddress &address, std::vector& vchPubKeyOut) const; diff --git a/src/wallet.cpp b/src/wallet.cpp index 8bbb80cf254..298a2c64288 100644 --- a/src/wallet.cpp +++ b/src/wallet.cpp @@ -40,6 +40,7 @@ bool CWallet::AddCryptedKey(const vector &vchPubKey, const vector else return CWalletDB(strWalletFile).WriteCryptedKey(vchPubKey, vchCryptedSecret); } + return false; } bool CWallet::Unlock(const string& strWalletPassphrase) From 00eae584a26295dbf7b1aebf99c1b8a4c9a86c37 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Thu, 10 Nov 2011 21:29:23 +0100 Subject: [PATCH 008/298] Resilvering --- src/db.cpp | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/db.h | 5 ++- src/wallet.cpp | 10 ++++++ 3 files changed, 104 insertions(+), 1 deletion(-) diff --git a/src/db.cpp b/src/db.cpp index a22b17e34c2..d41da68abad 100644 --- a/src/db.cpp +++ b/src/db.cpp @@ -165,6 +165,90 @@ void static CloseDb(const string& strFile) } } +bool Resilver(const string& strFile) +{ + while (!fShutdown) + { + CRITICAL_BLOCK(cs_db) + { + if (!mapFileUseCount.count(strFile) || mapFileUseCount[strFile] == 0) + { + // Flush log data to the dat file + CloseDb(strFile); + dbenv.txn_checkpoint(0, 0, 0); + dbenv.lsn_reset(strFile.c_str(), 0); + mapFileUseCount.erase(strFile); + + bool fSuccess = true; + printf("Resilvering %s...\n", strFile.c_str()); + string strFileRes = strFile + ".resilver"; + CDB db(strFile.c_str(), "r"); + Db* pdbCopy = new Db(&dbenv, 0); + + int ret = pdbCopy->open(NULL, // Txn pointer + strFileRes.c_str(), // Filename + "main", // Logical db name + DB_BTREE, // Database type + DB_CREATE, // Flags + 0); + if (ret > 0) + { + printf("Cannot create database file %s\n", strFileRes.c_str()); + fSuccess = false; + } + + Dbc* pcursor = db.GetCursor(); + if (pcursor) + while (fSuccess) + { + CDataStream ssKey; + CDataStream ssValue; + int ret = db.ReadAtCursor(pcursor, ssKey, ssValue, DB_NEXT); + if (ret == DB_NOTFOUND) + break; + else if (ret != 0) + { + pcursor->close(); + fSuccess = false; + break; + } + Dbt datKey(&ssKey[0], ssKey.size()); + Dbt datValue(&ssValue[0], ssValue.size()); + int ret2 = pdbCopy->put(NULL, &datKey, &datValue, DB_NOOVERWRITE); + if (ret2 > 0) + fSuccess = false; + } + if (fSuccess) + { + Db* pdb = mapDb[strFile]; + if (pdb->close(0)) + fSuccess = false; + if (pdbCopy->close(0)) + fSuccess = false; + delete pdb; + delete pdbCopy; + mapDb[strFile] = NULL; + } + if (fSuccess) + { + Db dbA(&dbenv, 0); + if (dbA.remove(strFile.c_str(), NULL, 0)) + fSuccess = false; + Db dbB(&dbenv, 0); + if (dbB.rename(strFileRes.c_str(), NULL, strFile.c_str(), 0)) + fSuccess = false; + } + if (!fSuccess) + printf("Resilvering of %s FAILED!\n", strFileRes.c_str()); + return fSuccess; + } + } + Sleep(100); + } + return false; +} + + void DBFlush(bool fShutdown) { // Flush log data to the actual data file @@ -674,6 +758,8 @@ int CWalletDB::LoadWallet(CWallet* pwallet) pwallet->vchDefaultKey.clear(); int nFileVersion = 0; vector vWalletUpgrade; + bool fIsResilvered = false; + bool fIsEncrypted = false; // Modify defaults #ifndef __WXMSW__ @@ -799,6 +885,7 @@ int CWalletDB::LoadWallet(CWallet* pwallet) ssValue >> vchPrivKey; if (!pwallet->LoadCryptedKey(vchPubKey, vchPrivKey)) return DB_CORRUPT; + fIsEncrypted = true; } else if (strType == "defaultkey") { @@ -832,6 +919,7 @@ int CWalletDB::LoadWallet(CWallet* pwallet) if (strKey == "fMinimizeOnClose") ssValue >> fMinimizeOnClose; if (strKey == "fUseProxy") ssValue >> fUseProxy; if (strKey == "addrProxy") ssValue >> addrProxy; + if (strKey == "fIsResilvered") ssValue >> fIsResilvered; if (fHaveUPnP && strKey == "fUseUPnP") ssValue >> fUseUPnP; } else if (strType == "minversion") @@ -869,6 +957,8 @@ int CWalletDB::LoadWallet(CWallet* pwallet) WriteVersion(VERSION); } + if (fIsEncrypted && !fIsResilvered) + return DB_NEED_RESILVER; return DB_LOAD_OK; } diff --git a/src/db.h b/src/db.h index 73ea1902ccf..75748ace01b 100644 --- a/src/db.h +++ b/src/db.h @@ -32,7 +32,7 @@ extern DbEnv dbenv; extern void DBFlush(bool fShutdown); void ThreadFlushWalletDB(void* parg); bool BackupWallet(const CWallet& wallet, const std::string& strDest); - +extern bool Resilver(const std::string& strFile); @@ -257,6 +257,8 @@ public: { return Write(std::string("version"), nVersion); } + + friend bool Resilver(const std::string&); }; @@ -349,6 +351,7 @@ enum DBErrors DB_CORRUPT, DB_TOO_NEW, DB_LOAD_FAIL, + DB_NEED_RESILVER }; class CWalletDB : public CDB diff --git a/src/wallet.cpp b/src/wallet.cpp index 298a2c64288..924700d0276 100644 --- a/src/wallet.cpp +++ b/src/wallet.cpp @@ -190,6 +190,9 @@ bool CWallet::EncryptWallet(const string& strWalletPassphrase) Lock(); } + if (Resilver(strWalletFile)) + CWalletDB(strWalletFile, "r+").WriteSetting("fIsResilvered", true); + return true; } @@ -1122,6 +1125,13 @@ int CWallet::LoadWallet(bool& fFirstRunRet) return false; fFirstRunRet = false; int nLoadWalletRet = CWalletDB(strWalletFile,"cr+").LoadWallet(this); + if (nLoadWalletRet == DB_NEED_RESILVER) + { + if (Resilver(strWalletFile)) + CWalletDB(strWalletFile, "r+").WriteSetting("fIsResilvered", true); + nLoadWalletRet = DB_LOAD_OK; + } + if (nLoadWalletRet != DB_LOAD_OK) return nLoadWalletRet; fFirstRunRet = vchDefaultKey.empty(); From 2744ea8c1fbc2e1ef6b1824a21fd2a75e2b6dbc4 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Thu, 10 Nov 2011 21:12:46 -0500 Subject: [PATCH 009/298] Obsolete keypool and make sure database removes log files on shutdown. --- src/db.cpp | 70 +++++++++++++++++++++++++++++++++++-------------- src/db.h | 7 +++-- src/init.cpp | 14 +++++++--- src/rpc.cpp | 11 +++++++- src/serialize.h | 2 +- src/wallet.cpp | 21 ++++++++++----- 6 files changed, 89 insertions(+), 36 deletions(-) diff --git a/src/db.cpp b/src/db.cpp index d41da68abad..1a1289f8d10 100644 --- a/src/db.cpp +++ b/src/db.cpp @@ -28,6 +28,34 @@ DbEnv dbenv(0); static map mapFileUseCount; static map mapDb; +static void EnvShutdown(bool fRemoveLogFiles) +{ + if (!fDbEnvInit) + return; + + fDbEnvInit = false; + dbenv.close(0); + DbEnv(0).remove(GetDataDir().c_str(), 0); + + if (fRemoveLogFiles) + { + filesystem::path datadir(GetDataDir()); + filesystem::directory_iterator it(datadir / "database"); + while (it != filesystem::directory_iterator()) + { + const filesystem::path& p = it->path(); +#if BOOST_FILESYSTEM_VERSION == 2 + std::string f = p.filename(); +#else + std::string f = p.filename().generic_string(); +#endif + if (f.find("log.") == 0) + filesystem::remove(p); + ++it; + } + } +} + class CDBInit { public: @@ -36,11 +64,7 @@ public: } ~CDBInit() { - if (fDbEnvInit) - { - dbenv.close(0); - fDbEnvInit = false; - } + EnvShutdown(false); } } instance_of_cdbinit; @@ -165,7 +189,7 @@ void static CloseDb(const string& strFile) } } -bool Resilver(const string& strFile) +bool CDB::Rewrite(const string& strFile, const char* pszSkip) { while (!fShutdown) { @@ -180,8 +204,8 @@ bool Resilver(const string& strFile) mapFileUseCount.erase(strFile); bool fSuccess = true; - printf("Resilvering %s...\n", strFile.c_str()); - string strFileRes = strFile + ".resilver"; + printf("Rewriting %s...\n", strFile.c_str()); + string strFileRes = strFile + ".rewrite"; CDB db(strFile.c_str(), "r"); Db* pdbCopy = new Db(&dbenv, 0); @@ -212,6 +236,15 @@ bool Resilver(const string& strFile) fSuccess = false; break; } + if (pszSkip && + strncmp(&ssKey[0], pszSkip, std::min(ssKey.size(), strlen(pszSkip))) == 0) + continue; + if (strncmp(&ssKey[0], "\x07version", 8) == 0) + { + // Update version: + ssValue.clear(); + ssValue << VERSION; + } Dbt datKey(&ssKey[0], ssKey.size()); Dbt datValue(&ssValue[0], ssValue.size()); int ret2 = pdbCopy->put(NULL, &datKey, &datValue, DB_NOOVERWRITE); @@ -239,7 +272,7 @@ bool Resilver(const string& strFile) fSuccess = false; } if (!fSuccess) - printf("Resilvering of %s FAILED!\n", strFileRes.c_str()); + printf("Rewriting of %s FAILED!\n", strFileRes.c_str()); return fSuccess; } } @@ -249,7 +282,7 @@ bool Resilver(const string& strFile) } -void DBFlush(bool fShutdown) +void DBFlush(bool fShutdown, bool fRemoveLogFiles) { // Flush log data to the actual data file // on all files that are not in use @@ -280,9 +313,10 @@ void DBFlush(bool fShutdown) { char** listp; if (mapFileUseCount.empty()) + { dbenv.log_archive(&listp, DB_ARCH_REMOVE); - dbenv.close(0); - fDbEnvInit = false; + EnvShutdown(fRemoveLogFiles); + } } } } @@ -758,7 +792,6 @@ int CWalletDB::LoadWallet(CWallet* pwallet) pwallet->vchDefaultKey.clear(); int nFileVersion = 0; vector vWalletUpgrade; - bool fIsResilvered = false; bool fIsEncrypted = false; // Modify defaults @@ -919,7 +952,6 @@ int CWalletDB::LoadWallet(CWallet* pwallet) if (strKey == "fMinimizeOnClose") ssValue >> fMinimizeOnClose; if (strKey == "fUseProxy") ssValue >> fUseProxy; if (strKey == "addrProxy") ssValue >> addrProxy; - if (strKey == "fIsResilvered") ssValue >> fIsResilvered; if (fHaveUPnP && strKey == "fUseUPnP") ssValue >> fUseUPnP; } else if (strType == "minversion") @@ -947,8 +979,11 @@ int CWalletDB::LoadWallet(CWallet* pwallet) printf("fUseUPnP = %d\n", fUseUPnP); - // Upgrade - if (nFileVersion < VERSION) + // Rewrite encrypted wallets of versions 0.4.0 and 0.5.0rc: + if (fIsEncrypted && (nFileVersion == 40000 || nFileVersion == 50000)) + return DB_NEED_REWRITE; + + if (nFileVersion < VERSION) // Update { // Get rid of old debug.log file in current directory if (nFileVersion <= 105 && !pszSetDataDir[0]) @@ -957,9 +992,6 @@ int CWalletDB::LoadWallet(CWallet* pwallet) WriteVersion(VERSION); } - if (fIsEncrypted && !fIsResilvered) - return DB_NEED_RESILVER; - return DB_LOAD_OK; } diff --git a/src/db.h b/src/db.h index 75748ace01b..98af4be9a0e 100644 --- a/src/db.h +++ b/src/db.h @@ -29,10 +29,9 @@ extern unsigned int nWalletDBUpdated; extern DbEnv dbenv; -extern void DBFlush(bool fShutdown); +extern void DBFlush(bool fShutdown, bool fRemoveLogFiles); void ThreadFlushWalletDB(void* parg); bool BackupWallet(const CWallet& wallet, const std::string& strDest); -extern bool Resilver(const std::string& strFile); @@ -258,7 +257,7 @@ public: return Write(std::string("version"), nVersion); } - friend bool Resilver(const std::string&); + bool static Rewrite(const std::string& strFile, const char* pszSkip = NULL); }; @@ -351,7 +350,7 @@ enum DBErrors DB_CORRUPT, DB_TOO_NEW, DB_LOAD_FAIL, - DB_NEED_RESILVER + DB_NEED_REWRITE }; class CWalletDB : public CDB diff --git a/src/init.cpp b/src/init.cpp index dbc2c413322..4a149b31bf3 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -34,8 +34,8 @@ void Shutdown(void* parg) { static CCriticalSection cs_Shutdown; static bool fTaken; - bool fFirstThread; - CRITICAL_BLOCK(cs_Shutdown) + bool fFirstThread = false; + TRY_CRITICAL_BLOCK(cs_Shutdown) { fFirstThread = !fTaken; fTaken = true; @@ -45,9 +45,9 @@ void Shutdown(void* parg) { fShutdown = true; nTransactionsUpdated++; - DBFlush(false); + DBFlush(false, false); StopNode(); - DBFlush(true); + DBFlush(true, true); boost::filesystem::remove(GetPidFile()); UnregisterWallet(pwalletMain); delete pwalletMain; @@ -396,6 +396,12 @@ bool AppInit2(int argc, char* argv[]) strErrors += _("Error loading wallet.dat: Wallet corrupted \n"); else if (nLoadWalletRet == DB_TOO_NEW) strErrors += _("Error loading wallet.dat: Wallet requires newer version of Bitcoin \n"); + else if (nLoadWalletRet == DB_NEED_REWRITE) + { + strErrors += _("Wallet needed to be rewritten: restart Bitcoin to complete \n"); + wxMessageBox(strErrors, "Bitcoin", wxOK | wxICON_ERROR); + return false; + } else strErrors += _("Error loading wallet.dat \n"); } diff --git a/src/rpc.cpp b/src/rpc.cpp index 885ffd1f2b7..a936edbbe47 100644 --- a/src/rpc.cpp +++ b/src/rpc.cpp @@ -1431,6 +1431,11 @@ Value encryptwallet(const Array& params, bool fHelp) if (pwalletMain->IsCrypted()) throw JSONRPCError(-15, "Error: running with an encrypted wallet, but encryptwallet was called."); +#ifdef GUI + // shutting down via RPC while the GUI is running does not work (yet): + throw runtime_error("Not Yet Implemented: use GUI to encrypt wallet, not RPC command"); +#endif + string strWalletPass; strWalletPass.reserve(100); mlock(&strWalletPass[0], strWalletPass.capacity()); @@ -1450,7 +1455,11 @@ Value encryptwallet(const Array& params, bool fHelp) fill(strWalletPass.begin(), strWalletPass.end(), '\0'); munlock(&strWalletPass[0], strWalletPass.capacity()); - return Value::null; + // BDB seems to have a bad habit of writing old data into + // slack space in .dat files; that is bad if the old data is + // unencrypted private keys. So: + CreateThread(Shutdown, NULL); + return "wallet encrypted; bitcoin server stopping, restart to run with encrypted wallet"; } diff --git a/src/serialize.h b/src/serialize.h index 320ce9d2ae0..c531d2a198e 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -59,7 +59,7 @@ class CDataStream; class CAutoFile; static const unsigned int MAX_SIZE = 0x02000000; -static const int VERSION = 40100; +static const int VERSION = 40101; static const char* pszSubVer = ""; static const bool VERSION_IS_BETA = true; diff --git a/src/wallet.cpp b/src/wallet.cpp index 924700d0276..c004d183604 100644 --- a/src/wallet.cpp +++ b/src/wallet.cpp @@ -188,10 +188,12 @@ bool CWallet::EncryptWallet(const string& strWalletPassphrase) } Lock(); - } - if (Resilver(strWalletFile)) - CWalletDB(strWalletFile, "r+").WriteSetting("fIsResilvered", true); + // Need to completely rewrite the wallet file; if we don't, bdb might keep + // bits of the unencrypted private key in slack space in the database file. + setKeyPool.clear(); + CDB::Rewrite(strWalletFile, "\x04pool"); + } return true; } @@ -1125,11 +1127,16 @@ int CWallet::LoadWallet(bool& fFirstRunRet) return false; fFirstRunRet = false; int nLoadWalletRet = CWalletDB(strWalletFile,"cr+").LoadWallet(this); - if (nLoadWalletRet == DB_NEED_RESILVER) + if (nLoadWalletRet == DB_NEED_REWRITE) { - if (Resilver(strWalletFile)) - CWalletDB(strWalletFile, "r+").WriteSetting("fIsResilvered", true); - nLoadWalletRet = DB_LOAD_OK; + if (CDB::Rewrite(strWalletFile, "\x04pool")) + { + setKeyPool.clear(); + // Note: can't top-up keypool here, because wallet is locked. + // User will be prompted to unlock wallet the next operation + // the requires a new key. + } + nLoadWalletRet = DB_NEED_REWRITE; } if (nLoadWalletRet != DB_LOAD_OK) From 0143c024af1e5b93dfc3a89e4e40be59a0f40f58 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Tue, 15 Nov 2011 09:47:29 -0500 Subject: [PATCH 010/298] Fix boost filesystem incompatibility problem --- src/db.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/db.cpp b/src/db.cpp index 1a1289f8d10..b2bd7e2899c 100644 --- a/src/db.cpp +++ b/src/db.cpp @@ -44,10 +44,10 @@ static void EnvShutdown(bool fRemoveLogFiles) while (it != filesystem::directory_iterator()) { const filesystem::path& p = it->path(); -#if BOOST_FILESYSTEM_VERSION == 2 - std::string f = p.filename(); -#else +#if BOOST_FILESYSTEM_VERSION == 3 std::string f = p.filename().generic_string(); +#else + std::string f = p.filename(); #endif if (f.find("log.") == 0) filesystem::remove(p); From 1179f6373dfffdcb091576215cabe73c932df925 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Tue, 15 Nov 2011 10:33:26 -0500 Subject: [PATCH 011/298] Update gitian descriptors to point at stable git repo --- contrib/gitian-descriptors/gitian-win32.yml | 2 +- contrib/gitian-descriptors/gitian.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/contrib/gitian-descriptors/gitian-win32.yml b/contrib/gitian-descriptors/gitian-win32.yml index 52b10bc33fc..252e62e2369 100644 --- a/contrib/gitian-descriptors/gitian-win32.yml +++ b/contrib/gitian-descriptors/gitian-win32.yml @@ -13,7 +13,7 @@ packages: - "wine" reference_datetime: "2011-01-30 00:00:00" remotes: -- "url": "https://github.com/bitcoin/bitcoin.git" +- "url": "https://git.gitorious.org/+bitcoin-stable-developers/bitcoin/bitcoind-stable.git" "dir": "bitcoin" files: - "wxwidgets-win32-2.9.2-gitian.zip" diff --git a/contrib/gitian-descriptors/gitian.yml b/contrib/gitian-descriptors/gitian.yml index efa9cb8c109..c29224402a7 100644 --- a/contrib/gitian-descriptors/gitian.yml +++ b/contrib/gitian-descriptors/gitian.yml @@ -15,7 +15,7 @@ packages: - "unzip" reference_datetime: "2011-01-30 00:00:00" remotes: -- "url": "https://github.com/bitcoin/bitcoin.git" +- "url": "https://git.gitorious.org/+bitcoin-stable-developers/bitcoin/bitcoind-stable.git" "dir": "bitcoin" files: - "wxWidgets-2.9.2-x64-gitian.zip" From 586ea168c2e29b9f96b07a3a5145356af11b4dce Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Tue, 15 Nov 2011 10:21:02 -0500 Subject: [PATCH 012/298] add message about restarting bitcoin after encrypting wallet succesfully --- src/ui.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/ui.cpp b/src/ui.cpp index 6b7ecdbc8d4..bfb708b3e90 100644 --- a/src/ui.cpp +++ b/src/ui.cpp @@ -1222,10 +1222,9 @@ void CMainFrame::OnMenuOptionsEncryptWallet(wxCommandEvent& event) fill(strWalletPassTest.begin(), strWalletPassTest.end(), '\0'); munlock(&strWalletPass[0], strWalletPass.capacity()); munlock(&strWalletPassTest[0], strWalletPassTest.capacity()); - wxMessageBox(_("Wallet Encrypted.\nRemember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer."), "Bitcoin"); + wxMessageBox(_("Wallet Encrypted.\nBitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer."), "Bitcoin"); - m_menuOptions->Remove(m_menuOptionsEncryptWallet); - m_menuOptions->Insert(m_menuOptions->GetMenuItemCount() - 1, m_menuOptionsChangeWalletPassphrase); + Close(true); } void CMainFrame::OnMenuOptionsChangeWalletPassphrase(wxCommandEvent& event) From 1aafd7464f67e0ba42b18a08070a86a427e28c72 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Tue, 15 Nov 2011 14:30:15 -0500 Subject: [PATCH 013/298] Fix crash-on-osx-on-shutdown bug. And cleanup CDB handling in Rewrite. --- src/db.cpp | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/db.cpp b/src/db.cpp index b2bd7e2899c..023dc5947a2 100644 --- a/src/db.cpp +++ b/src/db.cpp @@ -34,7 +34,14 @@ static void EnvShutdown(bool fRemoveLogFiles) return; fDbEnvInit = false; - dbenv.close(0); + try + { + dbenv.close(0); + } + catch (const DbException& e) + { + printf("EnvShutdown exception: %s (%d)\n", e.what(), e.get_errno()); + } DbEnv(0).remove(GetDataDir().c_str(), 0); if (fRemoveLogFiles) @@ -229,7 +236,10 @@ bool CDB::Rewrite(const string& strFile, const char* pszSkip) CDataStream ssValue; int ret = db.ReadAtCursor(pcursor, ssKey, ssValue, DB_NEXT); if (ret == DB_NOTFOUND) + { + pcursor->close(); break; + } else if (ret != 0) { pcursor->close(); @@ -253,14 +263,11 @@ bool CDB::Rewrite(const string& strFile, const char* pszSkip) } if (fSuccess) { - Db* pdb = mapDb[strFile]; - if (pdb->close(0)) - fSuccess = false; + db.Close(); + CloseDb(strFile); if (pdbCopy->close(0)) fSuccess = false; - delete pdb; delete pdbCopy; - mapDb[strFile] = NULL; } if (fSuccess) { From 831d24a19d6687edfcce54bc0be0dcad8899fc30 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Tue, 15 Nov 2011 14:28:51 -0500 Subject: [PATCH 014/298] Tweak handling of boost filesystem versions (partial cherry pick) --- src/db.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/db.cpp b/src/db.cpp index 023dc5947a2..b48be7ab75c 100644 --- a/src/db.cpp +++ b/src/db.cpp @@ -51,7 +51,7 @@ static void EnvShutdown(bool fRemoveLogFiles) while (it != filesystem::directory_iterator()) { const filesystem::path& p = it->path(); -#if BOOST_FILESYSTEM_VERSION == 3 +#if BOOST_FILESYSTEM_VERSION >= 3 std::string f = p.filename().generic_string(); #else std::string f = p.filename(); From 2bf36b4e7dd06d44ee3c81391338ccb708edbbaa Mon Sep 17 00:00:00 2001 From: Jeff Garzik Date: Mon, 31 Oct 2011 12:42:01 -0400 Subject: [PATCH 015/298] Remove vladimir's DNS seed, at his request. --- src/net.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/net.cpp b/src/net.cpp index f5e8b71c03a..f8f6afde543 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1159,7 +1159,6 @@ void MapPort(bool /* unused fMapPort */) static const char *strDNSSeed[] = { "bitseed.xf2.org", - "bitseed.bitcoin.org.uk", "dnsseed.bluematt.me", }; From 90de05e88ecc879b75315eebacb488b44353f5d9 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Thu, 17 Nov 2011 14:01:25 -0500 Subject: [PATCH 016/298] Create new keypool for newly encrypted wallets. --- src/wallet.cpp | 33 ++++++++++++++++++++++++++++++++- src/wallet.h | 1 + 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/wallet.cpp b/src/wallet.cpp index c004d183604..9b9586face2 100644 --- a/src/wallet.cpp +++ b/src/wallet.cpp @@ -187,12 +187,15 @@ bool CWallet::EncryptWallet(const string& strWalletPassphrase) pwalletdbEncryption = NULL; } + Lock(); + Unlock(strWalletPassphrase); + NewKeyPool(); Lock(); // Need to completely rewrite the wallet file; if we don't, bdb might keep // bits of the unencrypted private key in slack space in the database file. setKeyPool.clear(); - CDB::Rewrite(strWalletFile, "\x04pool"); + CDB::Rewrite(strWalletFile); } return true; @@ -1224,6 +1227,34 @@ bool GetWalletFile(CWallet* pwallet, string &strWalletFileOut) return true; } +// +// Mark old keypool keys as used, +// and generate all new keys +// +bool CWallet::NewKeyPool() +{ + CRITICAL_BLOCK(cs_wallet) + { + CWalletDB walletdb(strWalletFile); + BOOST_FOREACH(int64 nIndex, setKeyPool) + walletdb.ErasePool(nIndex); + setKeyPool.clear(); + + if (IsLocked()) + return false; + + int64 nKeys = max(GetArg("-keypool", 100), (int64)0); + for (int i = 0; i < nKeys; i++) + { + int64 nIndex = i+1; + walletdb.WritePool(nIndex, CKeyPool(GenerateNewKey())); + setKeyPool.insert(nIndex); + } + printf("CWallet::NewKeyPool wrote %"PRI64d" new keys\n", nKeys); + } + return true; +} + bool CWallet::TopUpKeyPool() { CRITICAL_BLOCK(cs_wallet) diff --git a/src/wallet.h b/src/wallet.h index 1dd2e512602..794139233d0 100644 --- a/src/wallet.h +++ b/src/wallet.h @@ -81,6 +81,7 @@ public: std::string SendMoney(CScript scriptPubKey, int64 nValue, CWalletTx& wtxNew, bool fAskFee=false); std::string SendMoneyToBitcoinAddress(const CBitcoinAddress& address, int64 nValue, CWalletTx& wtxNew, bool fAskFee=false); + bool NewKeyPool(); bool TopUpKeyPool(); void ReserveKeyFromKeyPool(int64& nIndex, CKeyPool& keypool); void KeepKey(int64 nIndex); From c4a3bf9e552f25a5ad0efb8cf62d344a7dad53ed Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Thu, 17 Nov 2011 14:21:32 -0500 Subject: [PATCH 017/298] Only remove database log files on shutdown after wallet encryption/rewrite --- src/db.cpp | 13 +++++++++---- src/db.h | 3 ++- src/init.cpp | 4 ++-- src/wallet.cpp | 5 +++-- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/db.cpp b/src/db.cpp index b48be7ab75c..77000ab00eb 100644 --- a/src/db.cpp +++ b/src/db.cpp @@ -28,7 +28,12 @@ DbEnv dbenv(0); static map mapFileUseCount; static map mapDb; -static void EnvShutdown(bool fRemoveLogFiles) +static bool fRemoveLogFiles = false; +void RemoveLogFilesOnShutdown(bool fIn) +{ + fRemoveLogFiles = fIn; +} +static void EnvShutdown() { if (!fDbEnvInit) return; @@ -71,7 +76,7 @@ public: } ~CDBInit() { - EnvShutdown(false); + EnvShutdown(); } } instance_of_cdbinit; @@ -289,7 +294,7 @@ bool CDB::Rewrite(const string& strFile, const char* pszSkip) } -void DBFlush(bool fShutdown, bool fRemoveLogFiles) +void DBFlush(bool fShutdown) { // Flush log data to the actual data file // on all files that are not in use @@ -322,7 +327,7 @@ void DBFlush(bool fShutdown, bool fRemoveLogFiles) if (mapFileUseCount.empty()) { dbenv.log_archive(&listp, DB_ARCH_REMOVE); - EnvShutdown(fRemoveLogFiles); + EnvShutdown(); } } } diff --git a/src/db.h b/src/db.h index 98af4be9a0e..425dc2e57b8 100644 --- a/src/db.h +++ b/src/db.h @@ -29,7 +29,8 @@ extern unsigned int nWalletDBUpdated; extern DbEnv dbenv; -extern void DBFlush(bool fShutdown, bool fRemoveLogFiles); +extern void RemoveLogFilesOnShutdown(bool fRemoveLogFiles); +extern void DBFlush(bool fShutdown); void ThreadFlushWalletDB(void* parg); bool BackupWallet(const CWallet& wallet, const std::string& strDest); diff --git a/src/init.cpp b/src/init.cpp index 4a149b31bf3..2d21a261437 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -45,9 +45,9 @@ void Shutdown(void* parg) { fShutdown = true; nTransactionsUpdated++; - DBFlush(false, false); + DBFlush(false); StopNode(); - DBFlush(true, true); + DBFlush(true); boost::filesystem::remove(GetPidFile()); UnregisterWallet(pwalletMain); delete pwalletMain; diff --git a/src/wallet.cpp b/src/wallet.cpp index 9b9586face2..737f0e6238c 100644 --- a/src/wallet.cpp +++ b/src/wallet.cpp @@ -194,8 +194,8 @@ bool CWallet::EncryptWallet(const string& strWalletPassphrase) // Need to completely rewrite the wallet file; if we don't, bdb might keep // bits of the unencrypted private key in slack space in the database file. - setKeyPool.clear(); - CDB::Rewrite(strWalletFile); + if (CDB::Rewrite(strWalletFile)) + RemoveLogFilesOnShutdown(true); } return true; @@ -1134,6 +1134,7 @@ int CWallet::LoadWallet(bool& fFirstRunRet) { if (CDB::Rewrite(strWalletFile, "\x04pool")) { + RemoveLogFilesOnShutdown(true); setKeyPool.clear(); // Note: can't top-up keypool here, because wallet is locked. // User will be prompted to unlock wallet the next operation From 76ef6d89b98b57d2ee5c6db993cd1cc375dd3726 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Sun, 20 Nov 2011 10:39:01 -0500 Subject: [PATCH 018/298] Never remove database files on shutdown, it caused unreadable wallets on some testers' machines. --- src/db.cpp | 23 ----------------------- src/db.h | 2 -- src/wallet.cpp | 4 +--- 3 files changed, 1 insertion(+), 28 deletions(-) diff --git a/src/db.cpp b/src/db.cpp index 77000ab00eb..5cacf196920 100644 --- a/src/db.cpp +++ b/src/db.cpp @@ -28,11 +28,6 @@ DbEnv dbenv(0); static map mapFileUseCount; static map mapDb; -static bool fRemoveLogFiles = false; -void RemoveLogFilesOnShutdown(bool fIn) -{ - fRemoveLogFiles = fIn; -} static void EnvShutdown() { if (!fDbEnvInit) @@ -48,24 +43,6 @@ static void EnvShutdown() printf("EnvShutdown exception: %s (%d)\n", e.what(), e.get_errno()); } DbEnv(0).remove(GetDataDir().c_str(), 0); - - if (fRemoveLogFiles) - { - filesystem::path datadir(GetDataDir()); - filesystem::directory_iterator it(datadir / "database"); - while (it != filesystem::directory_iterator()) - { - const filesystem::path& p = it->path(); -#if BOOST_FILESYSTEM_VERSION >= 3 - std::string f = p.filename().generic_string(); -#else - std::string f = p.filename(); -#endif - if (f.find("log.") == 0) - filesystem::remove(p); - ++it; - } - } } class CDBInit diff --git a/src/db.h b/src/db.h index 425dc2e57b8..15bfb29c8e9 100644 --- a/src/db.h +++ b/src/db.h @@ -28,8 +28,6 @@ class CBlockLocator; extern unsigned int nWalletDBUpdated; extern DbEnv dbenv; - -extern void RemoveLogFilesOnShutdown(bool fRemoveLogFiles); extern void DBFlush(bool fShutdown); void ThreadFlushWalletDB(void* parg); bool BackupWallet(const CWallet& wallet, const std::string& strDest); diff --git a/src/wallet.cpp b/src/wallet.cpp index 737f0e6238c..43fb6b6da39 100644 --- a/src/wallet.cpp +++ b/src/wallet.cpp @@ -194,8 +194,7 @@ bool CWallet::EncryptWallet(const string& strWalletPassphrase) // Need to completely rewrite the wallet file; if we don't, bdb might keep // bits of the unencrypted private key in slack space in the database file. - if (CDB::Rewrite(strWalletFile)) - RemoveLogFilesOnShutdown(true); + CDB::Rewrite(strWalletFile); } return true; @@ -1134,7 +1133,6 @@ int CWallet::LoadWallet(bool& fFirstRunRet) { if (CDB::Rewrite(strWalletFile, "\x04pool")) { - RemoveLogFilesOnShutdown(true); setKeyPool.clear(); // Note: can't top-up keypool here, because wallet is locked. // User will be prompted to unlock wallet the next operation From 36b1eb763101299a4c4d4dad9d40b8ff70011d11 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Sun, 20 Nov 2011 17:12:00 +0100 Subject: [PATCH 019/298] close old db when rewriting --- src/db.cpp | 108 +++++++++++++++++++++++++++-------------------------- 1 file changed, 55 insertions(+), 53 deletions(-) diff --git a/src/db.cpp b/src/db.cpp index 5cacf196920..f9a7d6c90a5 100644 --- a/src/db.cpp +++ b/src/db.cpp @@ -195,61 +195,63 @@ bool CDB::Rewrite(const string& strFile, const char* pszSkip) bool fSuccess = true; printf("Rewriting %s...\n", strFile.c_str()); string strFileRes = strFile + ".rewrite"; - CDB db(strFile.c_str(), "r"); - Db* pdbCopy = new Db(&dbenv, 0); - - int ret = pdbCopy->open(NULL, // Txn pointer - strFileRes.c_str(), // Filename - "main", // Logical db name - DB_BTREE, // Database type - DB_CREATE, // Flags - 0); - if (ret > 0) - { - printf("Cannot create database file %s\n", strFileRes.c_str()); - fSuccess = false; - } - - Dbc* pcursor = db.GetCursor(); - if (pcursor) - while (fSuccess) + { // surround usage of db with extra {} + CDB db(strFile.c_str(), "r"); + Db* pdbCopy = new Db(&dbenv, 0); + + int ret = pdbCopy->open(NULL, // Txn pointer + strFileRes.c_str(), // Filename + "main", // Logical db name + DB_BTREE, // Database type + DB_CREATE, // Flags + 0); + if (ret > 0) { - CDataStream ssKey; - CDataStream ssValue; - int ret = db.ReadAtCursor(pcursor, ssKey, ssValue, DB_NEXT); - if (ret == DB_NOTFOUND) - { - pcursor->close(); - break; - } - else if (ret != 0) - { - pcursor->close(); - fSuccess = false; - break; - } - if (pszSkip && - strncmp(&ssKey[0], pszSkip, std::min(ssKey.size(), strlen(pszSkip))) == 0) - continue; - if (strncmp(&ssKey[0], "\x07version", 8) == 0) - { - // Update version: - ssValue.clear(); - ssValue << VERSION; - } - Dbt datKey(&ssKey[0], ssKey.size()); - Dbt datValue(&ssValue[0], ssValue.size()); - int ret2 = pdbCopy->put(NULL, &datKey, &datValue, DB_NOOVERWRITE); - if (ret2 > 0) - fSuccess = false; - } - if (fSuccess) - { - db.Close(); - CloseDb(strFile); - if (pdbCopy->close(0)) + printf("Cannot create database file %s\n", strFileRes.c_str()); fSuccess = false; - delete pdbCopy; + } + + Dbc* pcursor = db.GetCursor(); + if (pcursor) + while (fSuccess) + { + CDataStream ssKey; + CDataStream ssValue; + int ret = db.ReadAtCursor(pcursor, ssKey, ssValue, DB_NEXT); + if (ret == DB_NOTFOUND) + { + pcursor->close(); + break; + } + else if (ret != 0) + { + pcursor->close(); + fSuccess = false; + break; + } + if (pszSkip && + strncmp(&ssKey[0], pszSkip, std::min(ssKey.size(), strlen(pszSkip))) == 0) + continue; + if (strncmp(&ssKey[0], "\x07version", 8) == 0) + { + // Update version: + ssValue.clear(); + ssValue << VERSION; + } + Dbt datKey(&ssKey[0], ssKey.size()); + Dbt datValue(&ssValue[0], ssValue.size()); + int ret2 = pdbCopy->put(NULL, &datKey, &datValue, DB_NOOVERWRITE); + if (ret2 > 0) + fSuccess = false; + } + if (fSuccess) + { + db.Close(); + CloseDb(strFile); + if (pdbCopy->close(0)) + fSuccess = false; + delete pdbCopy; + } } if (fSuccess) { From d885aba347c2c53f71fdd5aef588b7115d689183 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Mon, 21 Nov 2011 13:38:09 -0500 Subject: [PATCH 020/298] Bump version to 0.4.2 --- contrib/Bitcoin.app/Contents/Info.plist | 2 +- doc/README | 2 +- doc/README_windows.txt | 2 +- share/setup.nsi | 6 +++--- src/serialize.h | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/contrib/Bitcoin.app/Contents/Info.plist b/contrib/Bitcoin.app/Contents/Info.plist index d5a278a570c..9145db10f15 100644 --- a/contrib/Bitcoin.app/Contents/Info.plist +++ b/contrib/Bitcoin.app/Contents/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 0.4.1 + 0.4.2 CFBundleSignature ???? CFBundleVersion diff --git a/doc/README b/doc/README index 789cc9fb870..9c28f4c6929 100644 --- a/doc/README +++ b/doc/README @@ -1,4 +1,4 @@ -Bitcoin 0.4.1 BETA +Bitcoin 0.4.2 BETA Copyright (c) 2009-2011 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/doc/README_windows.txt b/doc/README_windows.txt index 7ff8834920b..7a406d65a37 100644 --- a/doc/README_windows.txt +++ b/doc/README_windows.txt @@ -1,4 +1,4 @@ -Bitcoin 0.4.1 BETA +Bitcoin 0.4.2 BETA Copyright (c) 2009-2011 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/share/setup.nsi b/share/setup.nsi index 4c837c974bf..4500dc48e1b 100644 --- a/share/setup.nsi +++ b/share/setup.nsi @@ -5,7 +5,7 @@ SetCompressor /SOLID lzma # General Symbol Definitions !define REGKEY "SOFTWARE\$(^Name)" -!define VERSION 0.4.1 +!define VERSION 0.4.2 !define COMPANY "Bitcoin project" !define URL http://www.bitcoin.org/ @@ -45,13 +45,13 @@ Var StartMenuGroup !insertmacro MUI_LANGUAGE English # Installer attributes -OutFile bitcoin-0.4.1-win32-setup.exe +OutFile bitcoin-0.4.2-win32-setup.exe InstallDir $PROGRAMFILES\Bitcoin CRCCheck on XPStyle on BrandingText " " ShowInstDetails show -VIProductVersion 0.4.1.0 +VIProductVersion 0.4.2.0 VIAddVersionKey ProductName Bitcoin VIAddVersionKey ProductVersion "${VERSION}" VIAddVersionKey CompanyName "${COMPANY}" diff --git a/src/serialize.h b/src/serialize.h index c531d2a198e..64fae0367ea 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -59,7 +59,7 @@ class CDataStream; class CAutoFile; static const unsigned int MAX_SIZE = 0x02000000; -static const int VERSION = 40101; +static const int VERSION = 40200; static const char* pszSubVer = ""; static const bool VERSION_IS_BETA = true; From 45593c271a5a039d75fc136e46fac71fcb52e779 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Mon, 21 Nov 2011 14:38:47 -0500 Subject: [PATCH 021/298] Don't forget to bump release numbers in READMEs next time --- doc/release-process.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/release-process.txt b/doc/release-process.txt index bcda64dbed5..953761b4a95 100644 --- a/doc/release-process.txt +++ b/doc/release-process.txt @@ -1,6 +1,7 @@ * update (commit) version in sources src/serialize.h share/setup.nsi + doc/README* * update (commit) version in OSX app bundle contrib/Bitcoin.app/Contents/Info.plist From 99fe0af2feaea626541fc14f479e6890202fb617 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Mon, 21 Nov 2011 14:37:59 -0500 Subject: [PATCH 022/298] Bump version numbers to 0.5.1 --- doc/README | 2 +- doc/README_windows.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/README b/doc/README index f45bf0c1520..5e0f8ee1ed7 100644 --- a/doc/README +++ b/doc/README @@ -1,4 +1,4 @@ -Bitcoin 0.5.0 BETA +Bitcoin 0.5.1 BETA Copyright (c) 2009-2011 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/doc/README_windows.txt b/doc/README_windows.txt index ea2f14c42a0..d237615f57c 100644 --- a/doc/README_windows.txt +++ b/doc/README_windows.txt @@ -1,4 +1,4 @@ -Bitcoin 0.5.0 BETA +Bitcoin 0.5.1 BETA Copyright (c) 2009-2011 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying From adb9f7ddde0d31c7b70d37cd30ee8e5bd8a3b2f8 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Mon, 21 Nov 2011 14:38:47 -0500 Subject: [PATCH 023/298] Don't forget to bump release numbers in READMEs next time --- doc/release-process.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/release-process.txt b/doc/release-process.txt index ac388847c20..14d8efeb32d 100644 --- a/doc/release-process.txt +++ b/doc/release-process.txt @@ -2,6 +2,7 @@ bitcoin-qt.pro src/serialize.h share/setup.nsi + doc/README* * tag version in git From 7597fcd92feb63f4ff2abf074ae70b3f575737e4 Mon Sep 17 00:00:00 2001 From: Alex B Date: Thu, 24 Nov 2011 12:32:19 +0100 Subject: [PATCH 024/298] Small fixes in both spanish translations --- src/qt/locale/bitcoin_es.ts | 63 +++++++++++++++++++++++----------- src/qt/locale/bitcoin_es_CL.ts | 63 +++++++++++++++++++++++----------- 2 files changed, 86 insertions(+), 40 deletions(-) diff --git a/src/qt/locale/bitcoin_es.ts b/src/qt/locale/bitcoin_es.ts index e2ec6bff542..49e0f0a2c7f 100644 --- a/src/qt/locale/bitcoin_es.ts +++ b/src/qt/locale/bitcoin_es.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -321,7 +323,7 @@ Are you sure you wish to encrypt your wallet? E&xit - + &Salir @@ -331,7 +333,7 @@ Are you sure you wish to encrypt your wallet? &About %1 - + S&obre %1 @@ -426,7 +428,10 @@ Are you sure you wish to encrypt your wallet? %n active connection(s) to Bitcoin network - %n conexión activa hacia la red Bitcoin%n conexiones activas hacia la red Bitcoin + + %n conexión activa hacia la red Bitcoin + %n conexiones activas hacia la red Bitcoin + @@ -441,22 +446,34 @@ Are you sure you wish to encrypt your wallet? %n second(s) ago - Hace %n segundoHace %n segundos + + Hace %n segundo + Hace %n segundos + %n minute(s) ago - Hace %n minutoHace %n minutos + + Hace %n minuto + Hace %n minutos + %n hour(s) ago - Hace %n horaHace %n horas + + Hace %n hora + Hace %n horas + %n day(s) ago - Hace %n díaHace %n días + + Hace %n día + Hace %n días + @@ -750,12 +767,12 @@ Dirección: %4 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Cartera</span></p></body></html> @@ -988,12 +1005,12 @@ p, li { white-space: pre-wrap; } , broadcast through %1 node - , emitido mediante %d nodo + , emitido mediante %1 nodo , broadcast through %1 nodes - , emitido mediante %d nodos + , emitido mediante %1 nodos @@ -1044,7 +1061,7 @@ p, li { white-space: pre-wrap; } (%1 matures in %2 more blocks) - (%s madura en %d bloques mas) + (%1 madura en %1 bloques mas) @@ -1122,7 +1139,10 @@ p, li { white-space: pre-wrap; } Open for %n block(s) - Abierto por %n bloqueAbierto por %n bloques + + Abierto por %n bloque + Abierto por %n bloques + @@ -1147,7 +1167,10 @@ p, li { white-space: pre-wrap; } Mined balance will be available in %n more blocks - El balance minado estará disponible en %n bloque masEl balance minado estará disponible en %n bloques mas + + El balance minado estará disponible en %n bloque mas + El balance minado estará disponible en %n bloques mas + @@ -1450,7 +1473,7 @@ p, li { white-space: pre-wrap; } - Don't generate coins + Don't generate coins No generar monedas @@ -1506,14 +1529,14 @@ p, li { white-space: pre-wrap; } - Don't accept connections from outside + Don't accept connections from outside No aceptar conexiones desde el exterior - Don't attempt to use UPnP to map the listening port + Don't attempt to use UPnP to map the listening port No intentar usar UPnP para mapear el puerto de entrada @@ -2336,7 +2359,7 @@ pero la información de los comentarios quedará en blanco. Bitcoin Qt - + Bitcoin Qt - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_es_CL.ts b/src/qt/locale/bitcoin_es_CL.ts index b44c1434460..bb9d299790f 100644 --- a/src/qt/locale/bitcoin_es_CL.ts +++ b/src/qt/locale/bitcoin_es_CL.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -321,7 +323,7 @@ Are you sure you wish to encrypt your wallet? E&xit - + &Salir @@ -331,7 +333,7 @@ Are you sure you wish to encrypt your wallet? &About %1 - + S&obre %1 @@ -426,7 +428,10 @@ Are you sure you wish to encrypt your wallet? %n active connection(s) to Bitcoin network - %n conexión activa hacia la red Bitcoin%n conexiones activas hacia la red Bitcoin + + %n conexión activa hacia la red Bitcoin + %n conexiones activas hacia la red Bitcoin + @@ -441,22 +446,34 @@ Are you sure you wish to encrypt your wallet? %n second(s) ago - Hace %n segundoHace %n segundos + + Hace %n segundo + Hace %n segundos + %n minute(s) ago - Hace %n minutoHace %n minutos + + Hace %n minuto + Hace %n minutos + %n hour(s) ago - Hace %n horaHace %n horas + + Hace %n hora + Hace %n horas + %n day(s) ago - Hace %n díaHace %n días + + Hace %n día + Hace %n días + @@ -750,12 +767,12 @@ Dirección: %4 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Cartera</span></p></body></html> @@ -988,12 +1005,12 @@ p, li { white-space: pre-wrap; } , broadcast through %1 node - , emitido mediante %d nodo + , emitido mediante %1 nodo , broadcast through %1 nodes - , emitido mediante %d nodos + , emitido mediante %1 nodos @@ -1044,7 +1061,7 @@ p, li { white-space: pre-wrap; } (%1 matures in %2 more blocks) - (%s madura en %d bloques mas) + (%1 madura en %2 bloques mas) @@ -1122,7 +1139,10 @@ p, li { white-space: pre-wrap; } Open for %n block(s) - Abierto por %n bloqueAbierto por %n bloques + + Abierto por %n bloque + Abierto por %n bloques + @@ -1147,7 +1167,10 @@ p, li { white-space: pre-wrap; } Mined balance will be available in %n more blocks - El balance minado estará disponible en %n bloque masEl balance minado estará disponible en %n bloques mas + + El balance minado estará disponible en %n bloque mas + El balance minado estará disponible en %n bloques mas + @@ -1450,7 +1473,7 @@ p, li { white-space: pre-wrap; } - Don't generate coins + Don't generate coins No generar monedas @@ -1506,14 +1529,14 @@ p, li { white-space: pre-wrap; } - Don't accept connections from outside + Don't accept connections from outside No aceptar conexiones desde el exterior - Don't attempt to use UPnP to map the listening port + Don't attempt to use UPnP to map the listening port No intentar usar UPnP para mapear el puerto de entrada @@ -2336,7 +2359,7 @@ pero la información de los comentarios quedará en blanco. Bitcoin Qt - + Bitcoin Qt - \ No newline at end of file + From 1c4be55a993bf77a5d44b9f468c12506e5b051ba Mon Sep 17 00:00:00 2001 From: Nils Schneider Date: Thu, 24 Nov 2011 13:40:32 +0100 Subject: [PATCH 025/298] update translation: de --- src/qt/locale/bitcoin_de.ts | 64 ++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/src/qt/locale/bitcoin_de.ts b/src/qt/locale/bitcoin_de.ts index 97eb5cb6423..f7b134a75d8 100644 --- a/src/qt/locale/bitcoin_de.ts +++ b/src/qt/locale/bitcoin_de.ts @@ -328,7 +328,7 @@ Sind Sie sich sicher, dass Sie Ihre Brieftasche verschlüsseln möchten? &About %1 - + &Über %1 @@ -1885,7 +1885,7 @@ Are you sure you wish to encrypt your wallet? Wallet encryption failed. - + Verschlüsselung der Brieftasche fehlgeschlagen. @@ -1896,22 +1896,22 @@ Remember that encrypting your wallet cannot fully protect your bitcoins from bei Wallet is unencrypted, please encrypt it first. - + Brieftasche nicht verschlüsselt, bitte zuerst verschlüsseln. Enter the new passphrase for the wallet. - + Gib eine neue Passphrase für die Brieftasche eine. Re-enter the new passphrase for the wallet. - + Gib die neue Passphrase erneut ein. Wallet Passphrase Changed. - + Passphrase geändert. @@ -1948,7 +1948,7 @@ Label <b>Date:</b> - + <b>Datum:</b> @@ -1958,7 +1958,7 @@ Label <b>From:</b> - + <b>Von:</b> @@ -2003,7 +2003,7 @@ Label <b>Transaction fee:</b> - + <b>Transaktionsgebühr:</b> @@ -2048,7 +2048,7 @@ Label version %s - + Version %s @@ -2063,7 +2063,7 @@ Label Amount exceeds your balance - + Betrag übersteigt Ihr Guthaben @@ -2078,7 +2078,7 @@ Label Payment sent - + Zahlung gesendet @@ -2088,22 +2088,22 @@ Label Invalid address - + ungültige Adresse Sending %s to %s - + Sende %s an %s CANCELLED - + ABGEBROCHEN Cancelled - + Abgebrochen @@ -2113,7 +2113,7 @@ Label Error: - + Fehler: @@ -2123,12 +2123,12 @@ Label Connecting... - + Verbinde... Unable to connect - + Kann nicht verbinden @@ -2173,7 +2173,7 @@ Label Transaction aborted - + Transaktion abgebrochen @@ -2183,17 +2183,17 @@ Label Sending payment... - + Sende Zahlung... The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. - + Fehler: Die Transaktion wurde abgelehnt. Dies kann passieren, wenn einige Ihrer Bitcoins aus Ihrer Brieftasche bereits ausgegeben wurden (z.B. aus einer Sicherungskopie Ihrer wallet.dat). Waiting for confirmation... - + Warte auf Bestätigung... @@ -2210,12 +2210,12 @@ but the comment information will be blank. Payment completed - + Die Zahlung wurde abgeschlossen Name - + Name @@ -2230,7 +2230,7 @@ but the comment information will be blank. Bitcoin Address - + Bitcoin Adresse @@ -2250,22 +2250,22 @@ but the comment information will be blank. Add Address - + Adresse hinzufügen Bitcoin - + Bitcoin Bitcoin - Generating - + Bitcoin - Generiere Bitcoin - (not connected) - + Bitcoin - (nicht verbunden) @@ -2300,7 +2300,7 @@ but the comment information will be blank. beta - + Beta @@ -2308,7 +2308,7 @@ but the comment information will be blank. Bitcoin Qt - + Bitcoin Qt \ No newline at end of file From 094c35cffc74cd6843cd858ca9afba7056db1ff3 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Thu, 24 Nov 2011 20:20:01 +0100 Subject: [PATCH 026/298] allow for filtering addresses and labels by searching for the typed string anywhere, not just at the beginning (#641) --- src/qt/transactionfilterproxy.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qt/transactionfilterproxy.cpp b/src/qt/transactionfilterproxy.cpp index a4c5b371714..16fb4dab925 100644 --- a/src/qt/transactionfilterproxy.cpp +++ b/src/qt/transactionfilterproxy.cpp @@ -35,7 +35,7 @@ bool TransactionFilterProxy::filterAcceptsRow(int sourceRow, const QModelIndex & return false; if(datetime < dateFrom || datetime > dateTo) return false; - if(!address.startsWith(addrPrefix) && !label.startsWith(addrPrefix)) + if (!address.contains(addrPrefix, Qt::CaseInsensitive) && !label.contains(addrPrefix, Qt::CaseInsensitive)) return false; if(amount < minAmount) return false; From a7d735dcc25c85ad883e6d619848ce0478ebe299 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Sun, 27 Nov 2011 14:53:30 -0500 Subject: [PATCH 027/298] Add missing command-line arguments to --help/-? output --- src/init.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/init.cpp b/src/init.cpp index 2d21a261437..68303c19fad 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -162,10 +162,10 @@ bool AppInit2(int argc, char* argv[]) string strUsage = string() + _("Bitcoin version") + " " + FormatFullVersion() + "\n\n" + _("Usage:") + "\t\t\t\t\t\t\t\t\t\t\n" + - " bitcoin [options] \t " + "\n" + - " bitcoin [options] [params]\t " + _("Send command to -server or bitcoind\n") + - " bitcoin [options] help \t\t " + _("List commands\n") + - " bitcoin [options] help \t\t " + _("Get help for a command\n") + + " bitcoind [options] \t " + "\n" + + " bitcoind [options] [params]\t " + _("Send command to -server or bitcoind\n") + + " bitcoind [options] help \t\t " + _("List commands\n") + + " bitcoind [options] help \t\t " + _("Get help for a command\n") + _("Options:\n") + " -conf= \t\t " + _("Specify configuration file (default: bitcoin.conf)\n") + " -pid= \t\t " + _("Specify pid file (default: bitcoind.pid)\n") + @@ -176,9 +176,14 @@ bool AppInit2(int argc, char* argv[]) " -timeout= \t " + _("Specify connection timeout (in milliseconds)\n") + " -proxy= \t " + _("Connect through socks4 proxy\n") + " -dns \t " + _("Allow DNS lookups for addnode and connect\n") + + " -port= \t\t " + _("Listen for connections on (default: 8333 or testnet: 18333)\n") + + " -maxconnections=\t " + _("Maintain at most connections to peers (default: 125)\n") + " -addnode= \t " + _("Add a node to connect to\n") + " -connect= \t\t " + _("Connect only to the specified node\n") + " -nolisten \t " + _("Don't accept connections from outside\n") + + " -nodnsseed \t " + _("Don't bootstrap list of peers using DNS\n") + + " -maxreceivebuffer=\t " + _("Maximum per-connection receive buffer, *1000 bytes (default: 10000)\n") + + " -maxsendbuffer=\t " + _("Maximum per-connection send buffer, *1000 bytes (default: 10000)\n") + #ifdef USE_UPNP #if USE_UPNP " -noupnp \t " + _("Don't attempt to use UPnP to map the listening port\n") + @@ -194,6 +199,12 @@ bool AppInit2(int argc, char* argv[]) " -daemon \t\t " + _("Run in the background as a daemon and accept commands\n") + #endif " -testnet \t\t " + _("Use the test network\n") + + " -debug \t\t " + _("Output extra debugging information\n") + + " -logtimestamps \t " + _("Prepend debug output with timestamp\n") + + " -printtoconsole \t " + _("Send trace/debug info to console instead of debug.log file\n") + +#ifdef WIN32 + " -printtodebugger \t " + _("Send trace/debug info to debugger\n") + +#endif " -rpcuser= \t " + _("Username for JSON-RPC connections\n") + " -rpcpassword=\t " + _("Password for JSON-RPC connections\n") + " -rpcport= \t\t " + _("Listen for JSON-RPC connections on (default: 8332)\n") + From cba18514c0d5b364ee96a984c255dc9e29a00d68 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Sun, 27 Nov 2011 14:53:30 -0500 Subject: [PATCH 028/298] Add missing command-line arguments to --help/-? output --- src/init.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/init.cpp b/src/init.cpp index a6d0ab56e3e..367e75f39bc 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -172,10 +172,10 @@ bool AppInit2(int argc, char* argv[]) string strUsage = string() + _("Bitcoin version") + " " + FormatFullVersion() + "\n\n" + _("Usage:") + "\t\t\t\t\t\t\t\t\t\t\n" + - " bitcoin [options] \t " + "\n" + - " bitcoin [options] [params]\t " + _("Send command to -server or bitcoind\n") + - " bitcoin [options] help \t\t " + _("List commands\n") + - " bitcoin [options] help \t\t " + _("Get help for a command\n") + + " bitcoind [options] \t " + "\n" + + " bitcoind [options] [params]\t " + _("Send command to -server or bitcoind\n") + + " bitcoind [options] help \t\t " + _("List commands\n") + + " bitcoind [options] help \t\t " + _("Get help for a command\n") + _("Options:\n") + " -conf= \t\t " + _("Specify configuration file (default: bitcoin.conf)\n") + " -pid= \t\t " + _("Specify pid file (default: bitcoind.pid)\n") + @@ -186,11 +186,16 @@ bool AppInit2(int argc, char* argv[]) " -timeout= \t " + _("Specify connection timeout (in milliseconds)\n") + " -proxy= \t " + _("Connect through socks4 proxy\n") + " -dns \t " + _("Allow DNS lookups for addnode and connect\n") + + " -port= \t\t " + _("Listen for connections on (default: 8333 or testnet: 18333)\n") + + " -maxconnections=\t " + _("Maintain at most connections to peers (default: 125)\n") + " -addnode= \t " + _("Add a node to connect to\n") + " -connect= \t\t " + _("Connect only to the specified node\n") + " -nolisten \t " + _("Don't accept connections from outside\n") + + " -nodnsseed \t " + _("Don't bootstrap list of peers using DNS\n") + " -banscore= \t " + _("Threshold for disconnecting misbehaving peers (default: 100)\n") + " -bantime= \t " + _("Number of seconds to keep misbehaving peers from reconnecting (default: 86400)\n") + + " -maxreceivebuffer=\t " + _("Maximum per-connection receive buffer, *1000 bytes (default: 10000)\n") + + " -maxsendbuffer=\t " + _("Maximum per-connection send buffer, *1000 bytes (default: 10000)\n") + #ifdef USE_UPNP #if USE_UPNP " -noupnp \t " + _("Don't attempt to use UPnP to map the listening port\n") + @@ -206,6 +211,12 @@ bool AppInit2(int argc, char* argv[]) " -daemon \t\t " + _("Run in the background as a daemon and accept commands\n") + #endif " -testnet \t\t " + _("Use the test network\n") + + " -debug \t\t " + _("Output extra debugging information\n") + + " -logtimestamps \t " + _("Prepend debug output with timestamp\n") + + " -printtoconsole \t " + _("Send trace/debug info to console instead of debug.log file\n") + +#ifdef WIN32 + " -printtodebugger \t " + _("Send trace/debug info to debugger\n") + +#endif " -rpcuser= \t " + _("Username for JSON-RPC connections\n") + " -rpcpassword=\t " + _("Password for JSON-RPC connections\n") + " -rpcport= \t\t " + _("Listen for JSON-RPC connections on (default: 8332)\n") + From 3741185a51cada1adb17b1578a086544101ce7c7 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Sat, 26 Nov 2011 09:55:12 +0100 Subject: [PATCH 029/298] Make home and addressbook icon more consistent with other toolbar icons (make it blue and flip light source direction) --- src/qt/res/icons/address-book.png | Bin 1851 -> 1916 bytes src/qt/res/icons/overview.png | Bin 7936 -> 7455 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/src/qt/res/icons/address-book.png b/src/qt/res/icons/address-book.png index dbfc28ab3d8c6d2eb0f93b0e4495eec606dbd1b4..d41dbe6539f64829c004d0f7fc9bf0ba1aa4d7df 100644 GIT binary patch delta 1901 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 aj{gp$T0HKdgX+ux0000OnP?! diff --git a/src/qt/res/icons/overview.png b/src/qt/res/icons/overview.png index 3b90fe5569b74b2364c44eeff742e802690d18b5..ee2511f01d0d76a60cd9e7febc4c9218f38e3683 100644 GIT binary patch literal 7455 zcmZu$cQoA3*Z%BUcJ?wvUkrT6$DISDff0087#nrcsPHR^u?Bf6ct6l?}= z70B!9LlvNUh;{Q85ZUTHR0D4QH!y7_$+s3_cTH0-0HFB(KLMo(P_Wz@p>MPvsY7Q; znPKyg#H1RwD9w?@|nR zy0FrzD5(QAQ|6AX#LJM#RB6yM*JG4#6b-`i|AAJ@ zAA;jj6jE0yod8$Boe1E?T_ZNi1OJv;bTl?1I*Myi)%Fo30_8bRLpl!jDjr27DhJlW z()0#%s$*!D7>tHE2xWpww?Sl5;Kj3+T3#Fv*@5B3ucUlmGCV0Cfu^#e;<&|KydlM9 zu_wK%`)PWiwRINIff7$!O-RfOf?=d6gSN{4q;>cS(zl=R*ymUl9S6bnG%-Aqfb72{ zw7v%eyz2#`UnCL51t8m}PTQvA9E^rlo&CgtC0}oH?)c1@;l(n_!22VAnTmtEa-P%j zD3PU*_DPqKq{o1C?`K?6(fHYQj($aGCGAR-moEqJnnio-P^ySQBL}=Z91k8hDlqaW zK}AZEh|98-tU&HEl=(<1-GHOh=ACNAUqRPjN+xag=VzBFMJ*CF^V*Gx{Vb@=pHkiW z2(5p(v~0j>2z5;1p8SBUwY$p;Gt01sCDtr{KF*$RJ}ssz75w1M1V$0?Z=@*J^>!rC zU{(nI*TE)~h*YWb>g4#}=W&z;Za2x90`qF%osLrS_Fp$NuFVGuA8$TZ_*;Rri8mx~ z9Tgq>z1EWag&hOh`y{1>R6hJ(Fz;M5{!To?`qyF)oMR9IVY{q$xY(a-3GdsaqCe!K7Opw{1JnzLGaeR82(7@mY|Gqu#VkSV)zn~HTR}+whqQ{BQu3y)^7s0j%4bZD`lP0 zs#1kuA3&_4wt=`JiS!K7v{ft^j}jZbIjoe}KN9dtOxz&8kpHc@wBL*${BfZt`W6lg z7gKG@ZaI>7~U{kTf-b zlmG1Y-L9fq#nyAo8^es4dY4$!CXqh#h3jX~-OdCpFd65$0|Ye>4E^zM`)G{ja+?nk zTM-cpd3En}<^mgJ7N7FL&g!jyn4=xDX`$+mgal){z_Rnmfuj@l%wtxy4s9Tqs zia3H|JLV_5Vo1(ag*OU5lKiYs_OS0rplhO_sO{Q#2TYWF$w#)O0hDF*Ls9LizBM+z z;zt`}hOlO;@$weLu4y2|Ezp$e!Rd8~^W5iRc#3y4Cw11i1m)gelUT2Z++lOd23o~> zQmY>}$815DX$Tyleb&9SRS`lw1c+kqW)aJi%2{lN_m^ok;$C5cg%3Gz!d0g)4624C zMSE)Y9Pf}A-Rb=Ow4;EGLxzhA+bTxcGbq<5b%(}qFL%BOMh&<`AMgZ(8Z7MU78i4(EwR(A+cQh4k5PH{+HNANl%Uupft)mQ zxjG*?*KE0-*OrEc(}z+!Rk-?8io9~+QmA~Nu2I1xcDddAVeNj5c5mnJDjMu}QkLG% z?CZ~YrkmYC$bdABmnTl7$yg0gHH8+c6B*nby(CO0oqc**ozs1`zE;+ZKd||9odeY+ ztT}4CD|h*lgVr!OhbLrTUj2p1We&p=mt*A@?z9Zgef#0Bukjpjwhe5LP6N40zmE3B z9)5d8ux!^(4q)2JOFTy@VAsBYIk1YqZod#EWbqN~a&kEG7(d*;Bzf8H2NMZiA|Opu zo}}X8Rp@Ya<9g{P9bwk76$vTHnIzZ?ZeljpN! z7q&13OQHg@bSzRLxCW^;MqLGO0uw5&AZ#On+#NKK-9H}2k#;7I`qlcy05m7MttG9YRC& z8XjG>jrJsFe`MzGVcENA6tki=7^GmXeCXRg|I> zd^y8_y5G~jmZR*4Q_U};{Y3`42}_WqoeT|sTBdxge^@Q{>^rYbFU}UlKgvDlv^#9- zZY5;YIJkhK=H<@#fsFNTnoL(3G?q6y5g2w8`WBlStX5@39+D>>avx5%0;Ub|c6_i$ zS#E-VDP}omC=7XSPhQRB&vw7{E$OK2%^ZI)R*krvM&p01uura>4TUNm9`Uy}u85Jz zH073sgmz+x>rvlCgMV@e`j@~2HFYuj`mJ=ty6bcvFZ0?g_w||B{Cc-d6xci``KD|A zsUEYNjNQFml#1IAjms?u+)6Qga%We<`%A|=PxAc}hKh5_LWZS$4PD^LpMqng6!>V+ zEb$N@M9e+#_3;I?Tr6-$?Ahdl$NM_1;nDdU3&tQpvtY(UD;WqE?i<>c@a_|EFGAqA7UqoUlZ#NN z0sF@XsR<&?kyW#94~LU=!mlkUX($b2H9K$5Se*Fy>9_{pz12N`GJ_h|^YFdqeb`*R?=_3_A;N0!nN_*>% z6o5Hte>lD3jg&8>u9`?;(ZuTN4eJW~KWb=Db)4=bUAiwRb-fy=yJttP_Eodjj(&i} z+!C+!o3AhAF6Qh7pG%kWF&6tR6*0oV!`w6v7{Ig7Mz%8!pX0JsME$!{(mWT*i+f;1 zq4Dpboea$<#r|z_HAeFGR>p+3YTX@|b z9>*4odr+UOfw>}NW@Pglj-mT1a2r~?Y8mL>&AP^$O{3EH+MglO854O#p|?#_0MuHE z=04d z1qyujnVb2{;dutCNMt^taJ8_elZ^xNX96_$<+b7otDLL+Q-+twVd;!1X6lV<@9^_> zn5Mg#C3r1%P+cQ`H4-8zN#6W>ji<)OAp6}Jkk-%4=DQjOUwUg_|NOnMj^PNg93F7* zE>uW6?)#otS7P`~|6^juy1|uO4zUY+*wkL^=Lsy zFZtW&T+dFxA*lYFoy&68w?gv?DGwXTsI-&tZ@!8t#5%04l9*8QSq7p zFnr}tO0xS8MovDsLEYF{WjVml#vAhhbeoH0I%^t`d>mAf>*2Q>IsZG??)!RU4rkU0 z*bM>mc-!lkMOBx7)Ut|u-?`G5<)e{~6IU76NU6>{T@oJNH?+OT=@u9E>+QAF-vU~q zTLg=poK~IMFM}8)!ACsj9jQuFpuXkKCmVmdJ0^#E`2zh(QsfOMp2R$5?E03nX!mEW zKxljZe$X5v?E|rXje~t;+ldA3XO5^-gv)1|69;b+?a@I zs_x*TsX+!rl!(sc!&3sTY(s48kp00enZ7}73Hbn3)liB66`1oDt**Z_d*hDKtL&&I z;HT5erK21nju2kn`qtc0O?2lxjr&cJjHai-!%iF1bC1}zAgabdM`i|?l7@mn$IY+% z8~{fc*|+b6{2RJ7jt{>xom|vXl4x&!2AgR$~Rs zU6*GyIbrMDvu2!22^Vj5)Qp_Hw9|5sE0Z>x_`dHR&+(_-nWA31sd_L8NB=FqX9H3- zOR*V|#O@E$N7W<#5fMfl(0Z1@=Pt(Snh$0UALZ^}T;*vl_8I-R&#-80^S4rdGH6U) zi5AK&6(Nc4?eS5*agDN>6%P(zzdy zGR^{=OtDk3Y?8F*Qt_%ytTaQRBk(zOar&&kkw6%H8EmPq?2lh^IIifK*@+Q#-*76{ zo|u?OfBE+Thq6(*PDvRlizNIvSvE||TB{Ouo}M+x8F>`s6qU3>(UpvP>fEw62x_bG zpOquqwCXB)PYdi2MOAZ`3>MiCkFX~T8z{fuU&0pZDtYxlP7HScu?2;tQrE zWVq$4-kDs%ftDUkcl|foiElz>zU9!kE3EW7<9b~+rRMCZ|C2*EHs|Vw*i**!IUfYi zxH<%Ej&c#qF6P9E86%mNibD0X@9_(Q7{>*C@fTJ(k$+yT-7QP@~U`;6^8U`wHFGlN{Rf0Of&S9aOg=vG3IK zyW2qi_gnVoub<%P%xbAB&AnYDtkPNcoEOG>vLip84|O-I8=Lz8eWeUV5U~z2kTnW7 z)@171N+l=>FoW{d(ZdRg_9H}kF0GdL+TN6qFq`$Z`}I%Zp*P{z4%bGy3@`Pn$l3yM zON$tXJ>ds055W39E#`9iDja#1g4&^)iKza`|HL>7#S*9I21 zKO%XkG7@yMn#sSx3-rduFmQr$QQwT8aS$1gfk!PSJIzM?QinAYW|w8nJYO>yMd&yrLME5P9Fzvf@Rwz~7MPXPc%+Cqdped|Fq)~$!U)W>h}$iYm@9dXxjaX87COF6x@lwQS(AVI zb|h)@bq2I zZmuD4JyGErZQmbHbuts3>R0^@t=)A4W&q-I@@uC@0M7jBf11G0RRL!Y^OcD;0rF^B zhI7X;qzIu>O>2|WQy8U>XA)V{YfeGFp>Xb!b5G}t1^J_67@~ggYn9~8qI6XLv#rDBvZu-hUuwMd;9#aRzKBJI1$l} ztlk6~=HGWYq)z$so8M7vu}=ZpMxW@!NLe%bFB}^}18y(f%yQN4WK{iR%?8}eY*&dp zx2f0KgIWVZ{RwU1Zp>a1kTPq7@xNgZeUKH&m>cp!8t3@uSz;m=fU39G@@?~3FgGh= z@JVAffbg!dw0<{sa@u9I>(f4jU2za6;X@EM8i_hw)@6%B&06&@mbB9#;cNKysyP}( zvr<#JI0&FZkE;VUFk(z64!g-fmnh?9=JD-{dfHIt&p@h{fJ1C}&X6z>{ODg2B2$rv z`S@hLMS2yY0+d~ z->N$w%(iM839G)QdPb5=TloP|kZf;`wavBJuq>{nfjqr;Az+9hV!pC?+|nzaM!f@g zs^FxkLLw%>x5WZJe!v;>4e{e6VQH-@AOw5nQU_Qtr|nY6O6`T6T*7b+-9Y}P?Ph=7 zPP?*Ys4o#;gdm_gGC;{<{3!={vTyb{>n~a`PaSDJ7mF++I0~?k=g5(O6>kxt)s6)! zw#z&AJl_6=Va70JO|Fh^go>me^2mDph=wo`pD^LXR2@QSvuQx>^W6)DQH^F=ZposY=_3(D~W` zA@3*Yo4<#@dI6b7Uf_HCI8AhoHfEfS8z&k@y3ETdnuKU`;!ZRYv74XKfkc<@d<5nr zF-_A7krVWhVa!il%s6P@Uh6Yp zFrYwMQ=Zzi+ALNOEq@0yRCQ|p=g)i?y^=tBnK&|PT4VAPld^vgzGa?jZkJM>AhMA()F!z0k;i7T@wW>l0Pipri zo%%rB+fpc_g_1^{4&ze9oV{tohdy;N9U$s6K;md3gfb?O)m@qbg-}lr ztt23X;F+iUKssU?aYBo(M?7f=*7z>~7i*uo^BlLFwDl6tvQ76Da+}*UA=JCCX?2UA`W|){*+`xWz_?=Gt;nMbuD7PJO%}~<@zN3^&^uPKj|7?ltB7}j9LF&z(8$Y?N0LV`T@J^)4-C@lrHSS~g3&EfoMNUGL4 zcgHmEt2Rz+cGA&9x=HAgDCh!Ly^x69&KlCm8GQ5r%E?=xkN-t3_Vv}dTAW>3G zHmtdOr}mdqtVu=mqxJT0*Zl-0A3@I8$j$qjrLV-!>J0F+zwVfXJSmmHbLrr>L32Gb zd2btaDrzIX_yc}?D9&PS9SR)f*A)gy)+U3`>Lk@P6}a&N>#aYptvaiHq8w%)AVP4ww^q@AsdN7aA3bMIi{89{|rb`>jh|8<837sK#ozwa;8U>;AOK=EPBKiFz>t+ zsm1PitaRMor=As4YW+?O7x4gp*U19*sd@fi$WwQzSiK+lnSzCE@Amf+&{BV_ JR;^-<{y(0T(|P~^ literal 7936 zcmaiZ^;^`<_xF2~ZkA37aRC7VX;~1Yq#KcrMd^}e0qGEwlnwzUrAs;_1jL(Iy1PLd zdH6j4z;~|e%sKPZ%yrJZPDW~|DG=e);R66bq@*aPbV9HaHlhN_Y*n92mg&4=){cv+~l*R0F1@Ddz za8Bb7EZc5})lKE`jw@fDR!7$^YxOi~xyWe9Rmziz(|MKC-2`SA6vz`OMRC4U(Wy&(7#E%%vduisNQDT;j>h*w6~M6LhRt`!T3z0i;P1 zG6DaBbGjc+T{PS~hGVn5Bjror*8ylUJEJLLX@sseYsB3ylvM!nqB~x|1{jq~2>e~C zY4F6F^H|&y3^0fqL^G?k!kk*_v0P@#@O9C4k)uLJb*rYmv`+nxpyC=K!re^BXl+$_ zwiniGsA-A#eNFscmVsm(y^U&53u3UeO6hOAoAWXz-Fs`y>xFo{jNcj!M%kAdpzm0 zB_MGa#(HaG&9n2PukBKvdA`=OkhG)iLZXJ_))|+|{mND3v1fNz%Hew8E`9+-0c2+h z(9JXhf4~2U(Ggr$5m;ev`~KFydRzKnwL14?5TnOqa^QaxX&}7!h;a8-ctgsHKSB(? zY|wId5V+J_uim}!yGpJL1Er7y(GAi|d)15W**hpQLt@0fQsQ^E>ocAnI6T;jjM$w0R2Y2WjgDX!q|wikhQGDt zRaEk`feT8|fPp5eB(puI>@Jd4kDwpS-C`^b0{3S9V#n*~ugC{!Ae%@oQXI6t)e&w{ zz{!|AhoKv|y%S{UmRd`kI`f*Dz^$dZhGkjnVJ&%H+<+es)BE zt$7!B5LW-BK$>**UESao=THE0Zw}Fjr3dI9&ZkrK_bxXxcdg>J=`3u>_=(u?SEx6x z`$z_k=!AUTy}cr%6EFKh_B`%nA!H(CQ3nu~ff?ipdl0#sENGKW)XA>oK7cTq>crFv zQZFBmIY}I_YLN$yx5^t-2S$FR9g-$n;iCzew3Uwic;n~WhTA1`rAH@VrLoOa^B7tL zUad*N*O)8ux!G*BB<*~G{;#XSg8$dzGt<8Hg&z^sSJ~?=3S)aiF*G8}TUFtQT5Ht? zMgk;(T-iaQeWiYUF*NStPo-*UZhilfO%nmL1O-k7nnfnNml(Y;GhIx^nHH$7X8Aky z*)77o6c|2DVRU~_27c~MvL_>!F=W?Xcj zgeK3ap5kbDR=&Y()3D!@{&py&ydp0l#L4+UX-Bpl2@L=5^%!N9E}^D#ZI%GS&sdY^ zuCwmgaRZk-N%#HH-`?4sV+(&O=}7_tq@I<}5Zi=3j<_Nraq3E(YeN}!QBO!6-#$2Y zm9SVledxS5<>G283k0aJ;f&-m{~Kj;atu{;VnD5UWC;LbWj|Mho687vrkeq*0X*-d z$4f?(vU6o}E_$c8xT^{2-?nn-o7#N-jA4QV8$r_Ei_7@jyW#8g?Pj)b(+X`NFY5H+INdNvelG=hu#jwi1zUx3~m`1JjEfLJ9{b8ytphl()-FSOQE9t zb?7q)3lqk`kKi6KotCF@bl`Y^=hjoHc?x!#X+iR{U)*Kw3;0tE z#rWLvukU8Yh?JPtk?C_jBj?pxt0*;yp=~~p^S`O&Q{pc^Q1aU7mlt(gH2a#p2{z-6 zW!U{e=}k#G6vtAJEq|%P!m1ZYWX+Htoc!YvsBr9SGQ+C;C7Jy=wI%y z^6J_5NK@+L`iYj<=DS-09pM)a9{hsKM-2|Fk!db|<^m>xyRC5X z_wHriK(iU8!qB-D(@I!YNS@6quaA=uYrlT_N7a6y_-#xfmZx~NGldJQze_-cB!Px z-RNFZFQy%b`;oOhLZXIBK1?nxjqJBqRb9qC-E4~Unr*b)jXHVU`&KafMM|ga)E7`T zUTpo?p*D_$;{Xd77na_Z-U;nLjeiEIw4Oi`O4&u696dIlv(5ig>AC>kEEU0yp5%kO zB^hI2zS-TobLVWmvBWF!5NW}5M(e>&NUEj8Sa7NhhYikU3YTPhE{B^Unw z=2iMj&iI+plD8uE7jq{KW>dJ$=lQvU2Bu1E@VQmD_&-sYc>=R{b~#q~y}XuzVJQcf zQsQeDBs*%?PiQ9`;&O3>RAB~MEJuOY9S#@c3i>P2S98Qlqf_V3l2|aq%KJH2Bt8;zHmW>xWLdlV} z!hy-rP^xX$Phd`W8$ZK4=GmGPqrOUs@k<8G9QE$nT^v>46&j%4iAgc z--;1DW`vNDj_ttEyIll|{~m9qhFiAHFU1P&DnK!AT zTWqe`lE@>QHY@7WooRxDXI0Z8M;@C7TEaLg$ZWL0Q4$jHT#oW+CNmxS;KEStDHYLp zmxdSSSn`nR!>it0FaOiZ1cURLjnSR=j#@g2S8U}@xtb8|14}2?v0|{rJQAgNH`!iY z>D^m$;d34kS5zEfTEyI$QRQ1%?i1Qv{(?XUlZeB7iTUiEy!Sey`OaH#dpX>}Kca61 zjYd09!63eYLOa4BF_=iLF^e@dsDGjt zrf@bJ!x(<|Eu%+<-X}m8^ONCVe*qIIQ7(I#@I!e;qmH17l5(k5A-i{N!^G-cg0NLc zCFTX8AAj+o3;&B8Sy=pw)Tc|1H|EPca-D|5uXN4l*qE1>q(scryB@EI-$Y+fU0(gt z0J;8q82&Hvtu)PtOq_a&tS=V98H&)8gN&$t{o77jy2(w)7@7+(5%YY92(RCRoLd0H zb?jCxVTLWRb-w;Wk=gTl;;^2{DB951>AAz~VYT+KMGY~6rOwXuIm~e?KzKs;wukkK zo{r95hE4FUocWHBVBZH<3`-`a_Jr7I&xh`5Wy#E_2+o!zFcC%3Wp5cw5f#@LhNHJw zReclcK^rrUL$%nr=`O_iz@gRFg+!Y%Ngj-y&m{%M3335A@ZA7M}t#rZ?^5w z^OWER-nH&Doi(Aubbj9gJH6O=9a(O3R(*kgxOs8?k7PxEoST(4Sc24e&Zx0(SK&Ox zev}7{#s@5k^ttI@z@txOi(FaDp1kNPTgY#Y>Bzj@f1XVB{qL(kLRQw+V!f-)nMUqNH^8sy&kb+EG3Vs>s$%ez8Cg+pZ|d7v z>C9!@&2=Nn%rS?>GI&LkkbCE0$uZ?$cy_t{@Z}}}sEd{3^}gIodTH!CtAoL?5q^;? zdYzuUxFGv89{sg0HRFPx=bzWUrYa=LFs^8lMjDZO}w3vRlAnhu*rp?yJcD z9NAdW63<158zthNJ?6ZU;wwbB&i5&^(&Co z6IWEGE)rRV_8naXGNADpgKYSL*Ji$Ymzu$aUUZBs}L)!BV#O9~t-bmimLwW6YNO>b4KKt*CW}>}Qy5Cp2lfyR?5V zm^rNk2B)t@y+!dO+hZ^8ok+%AZQR3^cSXa`>ofN2zOy}8U0p@}5u$fvu(NOX_#lO$ zp7@8&i(Evibu~-uuTw(Ltbos>wQLq1(I_E3_Ldi{FRy?9XmE(RVpL3Obz1Z(6+L8l zV{u)!gR`uA(XbB@&NUifctR#=k6|k~{dz7cLj#BYJE-e9 zZg}RkeBs^ExtH_OpBLTxzuHX9a8eA&HI zf*A=?C{@4u)3)vTzM&uW0oFuP(nz!4A}Qw1^YMw6)`itoRiu%k^*`GhmiQXZeqU=W zjK()~6wtQesNOwpt97f0G8sUTzD`&m`F=#nh=d}dRqSI9*?V` z_}as+7e8@YB1sAoE+W7Geemp|#MW1Ed(5)pcc*0t%F>c;duNAH=(>cG6D4AM z%ak7;SF@R7kR?sQc5TZ3X{H|#r}zDj;#K`)i4}65W*1ghw*D_@LrIY}bsM-LezBb2 zH$M?sMg#)5upkDw)P@48W98l}vIpP)t6~!tRHeW5v$GZ0(FAt9 zdrt=<&E!harU^3Uc9ff{yS}qWT!%6*L*S59bSx63r1(9ik4L?Sp(lZSVP(tK*!pJW zQ{c2d8K_TYQmyDCnhi5ZlpvGZfXktlc-0P+8@^JN#43&u~c z0KfM!dNMetgPG(}i^h+joSA;8f>FN@{cVBA_h}NLT~XOb;-U7s57ONkDbxf7<`}zt z%V)AcS<%Y9bA0gCA{<>?OUg_I-P6M;M;mgS__ z3d`e@58S=uD?bQyr*qU{qOAr4&QE|5X=e=Q>ObhqK^Z(mLOi^G1J7_R5x&P6df=g*c`?_F|5Z&2867P5U19-()j!pSAj z8&jZYYd*AA6Z_1EFz0S5mU(=@Uk4uSwX~!U`17=D`a+-=elztgoR_#sM`MO38?dSA zlpuGbtTbhqm3Il|_%><&z{qRt{jb~izPU#nHxtA9xtN{kh?c`cc~*WQ`G@q_1*Zzs&O3N_RUbdtWxtbWt82gPTNkFsX4&#mdhjfz4^&mNQeO zdLAOhyON&;Ng?iok0bOH80EXw)^-$Z>z4*6O>drAGsJH@}G3Bog=cTiRLO-z%i-Gf>crMUsl z&CoV#{EE>L0G{7HBt+%Uqtqw}!a%rdz*VY=thXvp z8A{Qr|H(+EKO{vu#}1YZ%#BKjKShX8z*y)2=uBb$*4G#5y8TQJ|kPIRo2BR(LybiekTy)u=y%@|s^Q zfQ0zV+y^9x#XcfRj~{{c<%aRP!L#JKrY0t+$VzII9mK%gjQyW%Upx`1It@=`N7RH@ zAD_JmCWP$chjkS|ASW{8Q9_iNHFecoHiBeF%C<%4W1eHFdubPI&jFdw5v?};_){}e;0!DYCX3&q7>T?!KsLU(z`M= z=c$-taE9rzBDcLQ)3@jXEf6a{n>6==o=FxZLKqKWHt~l>+LH#eu~!1mpJym-3iJ7I zf?4R8{XTw1bZ*jY+rLhsm3e%C5xu@GBdaB?+9}>odBsvJszoU4iqOuwy(ZCPE9?sm za1pLpSo5Q2C&JyVL<3e)JeHM12ACvX7r)j@zV=5jKZ6-sO;FuuMhA^L?cYU-=8JFa z&TuH<@L($d*At+z9^Zb(K90)eTP_KCOnU|%!mTb*R$jmN0XO2QH($tn2>}dM%s&w( zMw(({hSI2MWd%GJQv6Q&3E?FC_`w-?E20?SRzO$JxH?Dnc{;P<>O7JIXcx^o+fmLz zEN(Kmilyi;gz(1qAw5sNEy()6cpZcfa3gVa<%d1LYr%dB0GB`R@Ks>(hI0bNVEbt5 z7<5@CXtm7v()=A_w15VaEQVNw35MnV&rGlFZ(XN>q>nlTYG7zFcqnwEtpcJD9h@q`IV^m_D$X^U z=A+4061tcOw1@TaB@}Z(BLseK)F^6TBQ(lh&_zT@Evyb>&muwbX9UYy5OZ%kf6{A` z^8+?NA_C zl?G9q(9;OVJ#!PyEw3WJ*SImD)HE3%9c!Fa4JAZ`bf?Q!*JIuskm)xZn=&m7yR4Ub5rh+vD0HrKKnwEAufo^OL{%Y2QvGESa(O@e})8O|7sX_;VZcjvfJWzEZ zxI{(lDC=+cw#k?AaLuJb;JH%Nm&JRJ{FS+{3d(|{#^E;7-WOBBf8LWd*in8y?QRn< z5jm_FW5&2fYm4ya~ z!_bqyofY(rdv}||jE#R$JxN>ay|ro*S+P50iBaj(fr?&VM_+L1xYYV5={90Z;JvVKt<6StErX=zfZ)Fefy&N{ zda=b|hFXp)jawgRNS~Fab;A)nl}UYJ0S8_ z3~@B44=E$(eN!!B#n;|Ol%qW8=qz8hl5~i&l_tIM17V6Q+vdLW%w`-AigvWtzp179 z6#;7aVog2jL(6`-ti)0g5{WxS0JIwu=LHp-a92FS`M4lg1(&Idm>WCJQA)Co!=scV z3YC4Nu18(bzi_AY0>sP5;*3Ws2_YS@FJF|oj>_3)Q~c)D zU-y~M`eup{KIUHP=mjt@iviij2DO7)7N}6jMQ_CrG#H530AH9CVcG)Z-xg@ga81zw z@nrOvwweHP%NgpKS(T^e{Co7WA4i;cJu$d#x6^gkkQ3tSEGgAD`huh__&{A$z{&C5 ztGKKZpT!&P$0$XDj;YfJgz-BDhQ|}09{S_^R&^ZW5b%~_)+fRnhe_$u>iDEXY~uaA zZgSo~2I6Xp1Pd+D`+ASEmBx(49h%w2F?-?E|ROuJWZNn4CJ;a4(t z=q89z>xlx(Ra04+-gS44ewKpKZqe|Jm$&ut%4-m-Gs4WCs7pPlduRDUPj}6pD$R!) zhn@NdnRq{u?Fo8+2RQ;*&M5$c3dkSzKhrkURu71QfZ%#mUys?Yk`(X^N1fA$GZpn| zdhaA1Z@aGP?8FW2$J(ZIbS_jki%6>k0l*DqMUj&G6JkqA+=bxbKFIRfR6z;)&l+?I zErKPEkMj^b-LUQO2(APBq?I{t5j+A^!V@cBb6{e9_ikfCiW$V`q2fI2U-mbyi|B)9 xfIalw&j@_9!j8NIq{gL25Jj)>e+W0yUv-0AMl6w+_akgTNnTB^T-Gf3{{fFb<^})& From d27be1f55777bd502beb6b89513f1a03ed988f1a Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Thu, 8 Sep 2011 16:50:58 -0400 Subject: [PATCH 030/298] Moved checkpoints out of main, to prep for using them to help prevent DoS attacks --- bitcoin-qt.pro | 2 ++ src/checkpoints.cpp | 43 ++++++++++++++++++++++++++++++++++ src/checkpoints.h | 22 +++++++++++++++++ src/main.cpp | 32 ++++--------------------- src/main.h | 1 - src/makefile.linux-mingw | 2 ++ src/makefile.mingw | 2 ++ src/makefile.osx | 2 ++ src/makefile.unix | 2 ++ src/makefile.vc | 6 +++++ src/test/Checkpoints_tests.cpp | 34 +++++++++++++++++++++++++++ src/test/DoS_tests.cpp | 1 - src/test/test_bitcoin.cpp | 1 + 13 files changed, 121 insertions(+), 29 deletions(-) create mode 100644 src/checkpoints.cpp create mode 100644 src/checkpoints.h create mode 100644 src/test/Checkpoints_tests.cpp diff --git a/bitcoin-qt.pro b/bitcoin-qt.pro index 7444ff4ac16..8fc177f7f48 100644 --- a/bitcoin-qt.pro +++ b/bitcoin-qt.pro @@ -88,6 +88,7 @@ HEADERS += src/qt/bitcoingui.h \ src/qt/bitcoinaddressvalidator.h \ src/base58.h \ src/bignum.h \ + src/checkpoints.h \ src/util.h \ src/uint256.h \ src/serialize.h \ @@ -152,6 +153,7 @@ SOURCES += src/qt/bitcoin.cpp src/qt/bitcoingui.cpp \ src/init.cpp \ src/net.cpp \ src/irc.cpp \ + src/checkpoints.cpp \ src/db.cpp \ src/json/json_spirit_writer.cpp \ src/json/json_spirit_value.cpp \ diff --git a/src/checkpoints.cpp b/src/checkpoints.cpp new file mode 100644 index 00000000000..4419a06c830 --- /dev/null +++ b/src/checkpoints.cpp @@ -0,0 +1,43 @@ +// Copyright (c) 2011 The Bitcoin developers +// Distributed under the MIT/X11 software license, see the accompanying +// file license.txt or http://www.opensource.org/licenses/mit-license.php. + +#include "checkpoints.h" +#include "uint256.h" +#include "util.h" + +#include // for 'map_list_of()' + +namespace Checkpoints +{ + typedef std::map MapCheckpoints; + + static MapCheckpoints mapCheckpoints = + boost::assign::map_list_of + ( 11111, uint256("0x0000000069e244f73d78e8fd29ba2fd2ed618bd6fa2ee92559f542fdb26e7c1d")) + ( 33333, uint256("0x000000002dd5588a74784eaa7ab0507a18ad16a236e7b1ce69f00d7ddfb5d0a6")) + ( 68555, uint256("0x00000000001e1b4903550a0b96e9a9405c8a95f387162e4944e8d9fbe501cd6a")) + ( 70567, uint256("0x00000000006a49b14bcf27462068f1264c961f11fa2e0eddd2be0791e1d4124a")) + ( 74000, uint256("0x0000000000573993a3c9e41ce34471c079dcf5f52a0e824a81e7f953b8661a20")) + (105000, uint256("0x00000000000291ce28027faea320c8d2b054b2e0fe44a773f3eefb151d6bdc97")) + (118000, uint256("0x000000000000774a7f8a7a12dc906ddb9e17e75d684f15e00f8767f9e8f36553")) + (134444, uint256("0x00000000000005b12ffd4cd315cd34ffd4a594f430ac814c91184a0d42d2b0fe")) + (140700, uint256("0x000000000000033b512028abb90e1626d8b346fd0ed598ac0a3c371138dce2bd")) + ; + + bool CheckBlock(int nHeight, const uint256& hash) + { + if (fTestNet) return true; // Testnet has no checkpoints + + MapCheckpoints::const_iterator i = mapCheckpoints.find(nHeight); + if (i == mapCheckpoints.end()) return true; + return hash == i->second; + } + + int GetTotalBlocksEstimate() + { + if (fTestNet) return 0; // Testnet has no checkpoints + + return mapCheckpoints.rbegin()->first; + } +} diff --git a/src/checkpoints.h b/src/checkpoints.h new file mode 100644 index 00000000000..32094fdde62 --- /dev/null +++ b/src/checkpoints.h @@ -0,0 +1,22 @@ +// Copyright (c) 2011 The Bitcoin developers +// Distributed under the MIT/X11 software license, see the accompanying +// file license.txt or http://www.opensource.org/licenses/mit-license.php. +#ifndef BITCOIN_CHECKPOINT_H +#define BITCOIN_CHECKPOINT_H + +class uint256; + +// +// Block-chain checkpoints are compiled-in sanity checks. +// They are updated every release or three. +// +namespace Checkpoints +{ + // Returns true if block passes checkpoint checks + bool CheckBlock(int nHeight, const uint256& hash); + + // Return conservative estimate of total number of blocks, 0 if unknown + int GetTotalBlocksEstimate(); +} + +#endif diff --git a/src/main.cpp b/src/main.cpp index 47f1090727f..832a0f92402 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -3,6 +3,7 @@ // Distributed under the MIT/X11 software license, see the accompanying // file license.txt or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" +#include "checkpoints.h" #include "db.h" #include "net.h" #include "init.h" @@ -29,7 +30,6 @@ map mapNextTx; map mapBlockIndex; uint256 hashGenesisBlock("0x000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f"); static CBigNum bnProofOfWorkLimit(~uint256(0) >> 32); -const int nTotalBlocksEstimate = 140700; // Conservative estimate of total nr of blocks on main chain const int nInitialBlockThreshold = 120; // Regard blocks up until N-threshold as "initial download" CBlockIndex* pindexGenesisBlock = NULL; int nBestHeight = -1; @@ -721,28 +721,15 @@ bool CheckProofOfWork(uint256 hash, unsigned int nBits) return true; } -// Return conservative estimate of total number of blocks, 0 if unknown -int GetTotalBlocksEstimate() -{ - if(fTestNet) - { - return 0; - } - else - { - return nTotalBlocksEstimate; - } -} - // Return maximum amount of blocks that other nodes claim to have int GetNumBlocksOfPeers() { - return std::max(cPeerBlockCounts.median(), GetTotalBlocksEstimate()); + return std::max(cPeerBlockCounts.median(), Checkpoints::GetTotalBlocksEstimate()); } bool IsInitialBlockDownload() { - if (pindexBest == NULL || nBestHeight < (GetTotalBlocksEstimate()-nInitialBlockThreshold)) + if (pindexBest == NULL || nBestHeight < (Checkpoints::GetTotalBlocksEstimate()-nInitialBlockThreshold)) return true; static int64 nLastUpdate; static CBlockIndex* pindexLastBest; @@ -1317,17 +1304,8 @@ bool CBlock::AcceptBlock() return DoS(10, error("AcceptBlock() : contains a non-final transaction")); // Check that the block chain matches the known block chain up to a checkpoint - if (!fTestNet) - if ((nHeight == 11111 && hash != uint256("0x0000000069e244f73d78e8fd29ba2fd2ed618bd6fa2ee92559f542fdb26e7c1d")) || - (nHeight == 33333 && hash != uint256("0x000000002dd5588a74784eaa7ab0507a18ad16a236e7b1ce69f00d7ddfb5d0a6")) || - (nHeight == 68555 && hash != uint256("0x00000000001e1b4903550a0b96e9a9405c8a95f387162e4944e8d9fbe501cd6a")) || - (nHeight == 70567 && hash != uint256("0x00000000006a49b14bcf27462068f1264c961f11fa2e0eddd2be0791e1d4124a")) || - (nHeight == 74000 && hash != uint256("0x0000000000573993a3c9e41ce34471c079dcf5f52a0e824a81e7f953b8661a20")) || - (nHeight == 105000 && hash != uint256("0x00000000000291ce28027faea320c8d2b054b2e0fe44a773f3eefb151d6bdc97")) || - (nHeight == 118000 && hash != uint256("0x000000000000774a7f8a7a12dc906ddb9e17e75d684f15e00f8767f9e8f36553")) || - (nHeight == 134444 && hash != uint256("0x00000000000005b12ffd4cd315cd34ffd4a594f430ac814c91184a0d42d2b0fe")) || - (nHeight == 140700 && hash != uint256("0x000000000000033b512028abb90e1626d8b346fd0ed598ac0a3c371138dce2bd"))) - return DoS(100, error("AcceptBlock() : rejected by checkpoint lockin at %d", nHeight)); + if (!Checkpoints::CheckBlock(nHeight, hash)) + return DoS(100, error("AcceptBlock() : rejected by checkpoint lockin at %d", nHeight)); // Write block to history file if (!CheckDiskSpace(::GetSerializeSize(*this, SER_DISK))) diff --git a/src/main.h b/src/main.h index 60ca3183810..f459d050ce9 100644 --- a/src/main.h +++ b/src/main.h @@ -99,7 +99,6 @@ void IncrementExtraNonce(CBlock* pblock, CBlockIndex* pindexPrev, unsigned int& void FormatHashBuffers(CBlock* pblock, char* pmidstate, char* pdata, char* phash1); bool CheckWork(CBlock* pblock, CWallet& wallet, CReserveKey& reservekey); bool CheckProofOfWork(uint256 hash, unsigned int nBits); -int GetTotalBlocksEstimate(); int GetNumBlocksOfPeers(); bool IsInitialBlockDownload(); std::string GetWarnings(std::string strFor); diff --git a/src/makefile.linux-mingw b/src/makefile.linux-mingw index 29b433f851a..61f8d4881f0 100644 --- a/src/makefile.linux-mingw +++ b/src/makefile.linux-mingw @@ -32,6 +32,7 @@ CFLAGS=-O2 -w -Wno-invalid-offsetof -Wformat $(DEBUGFLAGS) $(DEFS) $(INCLUDEPATH HEADERS = \ base58.h \ bignum.h \ + checkpoints.h \ crypter.h \ db.h \ headers.h \ @@ -61,6 +62,7 @@ endif LIBS += -l mingwthrd -l kernel32 -l user32 -l gdi32 -l comdlg32 -l winspool -l winmm -l shell32 -l comctl32 -l ole32 -l oleaut32 -l uuid -l rpcrt4 -l advapi32 -l ws2_32 -l shlwapi OBJS= \ + obj/checkpoints.o \ obj/crypter.o \ obj/db.o \ obj/init.o \ diff --git a/src/makefile.mingw b/src/makefile.mingw index 95d09f8770d..2cb78d97e6a 100644 --- a/src/makefile.mingw +++ b/src/makefile.mingw @@ -29,6 +29,7 @@ CFLAGS=-mthreads -O2 -w -Wno-invalid-offsetof -Wformat $(DEBUGFLAGS) $(DEFS) $(I HEADERS = \ base58.h \ bignum.h \ + checkpoints.h \ crypter.h \ db.h \ headers.h \ @@ -58,6 +59,7 @@ endif LIBS += -l kernel32 -l user32 -l gdi32 -l comdlg32 -l winspool -l winmm -l shell32 -l comctl32 -l ole32 -l oleaut32 -l uuid -l rpcrt4 -l advapi32 -l ws2_32 -l shlwapi OBJS= \ + obj/checkpoints.o \ obj/crypter.o \ obj/db.o \ obj/init.o \ diff --git a/src/makefile.osx b/src/makefile.osx index 7830f3bad5f..de718879356 100644 --- a/src/makefile.osx +++ b/src/makefile.osx @@ -49,6 +49,7 @@ CFLAGS=-mmacosx-version-min=10.5 -arch i386 -O3 -Wno-invalid-offsetof -Wformat $ HEADERS = \ base58.h \ bignum.h \ + checkpoints.h \ crypter.h \ db.h \ headers.h \ @@ -69,6 +70,7 @@ HEADERS = \ wallet.h OBJS= \ + obj/checkpoints.o \ obj/crypter.o \ obj/db.o \ obj/init.o \ diff --git a/src/makefile.unix b/src/makefile.unix index 5f841ea0fea..6c48199546d 100644 --- a/src/makefile.unix +++ b/src/makefile.unix @@ -87,6 +87,7 @@ xCXXFLAGS=-pthread -Wno-invalid-offsetof -Wformat $(DEBUGFLAGS) $(DEFS) $(HARDEN HEADERS = \ base58.h \ bignum.h \ + checkpoints.h \ crypter.h \ db.h \ headers.h \ @@ -107,6 +108,7 @@ HEADERS = \ wallet.h OBJS= \ + obj/checkpoints.o \ obj/crypter.o \ obj/db.o \ obj/init.o \ diff --git a/src/makefile.vc b/src/makefile.vc index c7e8578a95e..60f1e096338 100644 --- a/src/makefile.vc +++ b/src/makefile.vc @@ -43,6 +43,7 @@ CFLAGS=/MD /c /nologo /EHsc /GR /Zm300 $(DEBUGFLAGS) $(DEFS) $(INCLUDEPATHS) HEADERS = \ base58.h \ bignum.h \ + checkpoints.h \ crypter.h \ db.h \ headers.h \ @@ -65,6 +66,7 @@ HEADERS = \ wallet.h OBJS= \ + obj\checkpoints.o \ obj\crypter.o \ obj\db.o \ obj\init.o \ @@ -87,6 +89,8 @@ all: bitcoind.exe .cpp{obj}.obj: cl $(CFLAGS) /DGUI /Fo$@ %s +obj\checkpoints.obj: $(HEADERS) + obj\util.obj: $(HEADERS) obj\script.obj: $(HEADERS) @@ -116,6 +120,8 @@ obj\uibase.obj: $(HEADERS) .cpp{obj\nogui}.obj: cl $(CFLAGS) /Fo$@ %s +obj\nogui\checkpoints.obj: $(HEADERS) + obj\nogui\util.obj: $(HEADERS) obj\nogui\script.obj: $(HEADERS) diff --git a/src/test/Checkpoints_tests.cpp b/src/test/Checkpoints_tests.cpp new file mode 100644 index 00000000000..0d8a366d7ac --- /dev/null +++ b/src/test/Checkpoints_tests.cpp @@ -0,0 +1,34 @@ +// +// Unit tests for block-chain checkpoints +// +#include // for 'map_list_of()' +#include +#include + +#include "../checkpoints.h" +#include "../util.h" + +using namespace std; + +BOOST_AUTO_TEST_SUITE(Checkpoints_tests) + +BOOST_AUTO_TEST_CASE(sanity) +{ + uint256 p11111 = uint256("0x0000000069e244f73d78e8fd29ba2fd2ed618bd6fa2ee92559f542fdb26e7c1d"); + uint256 p140700 = uint256("0x000000000000033b512028abb90e1626d8b346fd0ed598ac0a3c371138dce2bd"); + BOOST_CHECK(Checkpoints::CheckBlock(11111, p11111)); + BOOST_CHECK(Checkpoints::CheckBlock(140700, p140700)); + + + // Wrong hashes at checkpoints should fail: + BOOST_CHECK(!Checkpoints::CheckBlock(11111, p140700)); + BOOST_CHECK(!Checkpoints::CheckBlock(140700, p11111)); + + // ... but any hash not at a checkpoint should succeed: + BOOST_CHECK(Checkpoints::CheckBlock(11111+1, p140700)); + BOOST_CHECK(Checkpoints::CheckBlock(140700+1, p11111)); + + BOOST_CHECK(Checkpoints::GetTotalBlocksEstimate() >= 140700); +} + +BOOST_AUTO_TEST_SUITE_END() diff --git a/src/test/DoS_tests.cpp b/src/test/DoS_tests.cpp index e60bb742dd3..1093b73d80e 100644 --- a/src/test/DoS_tests.cpp +++ b/src/test/DoS_tests.cpp @@ -64,5 +64,4 @@ BOOST_AUTO_TEST_CASE(DoS_bantime) BOOST_CHECK(!CNode::IsBanned(addr.ip)); } - BOOST_AUTO_TEST_SUITE_END() diff --git a/src/test/test_bitcoin.cpp b/src/test/test_bitcoin.cpp index 8863aad4780..39a7c88e135 100644 --- a/src/test/test_bitcoin.cpp +++ b/src/test/test_bitcoin.cpp @@ -13,6 +13,7 @@ #include "util_tests.cpp" #include "base58_tests.cpp" #include "miner_tests.cpp" +#include "Checkpoints_tests.cpp" CWallet* pwalletMain; From f8c3eb9568fcaff41afb257f6058d1f33ae14358 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Thu, 8 Sep 2011 12:51:43 -0400 Subject: [PATCH 031/298] Orphan block fill-up-memory attack prevention --- src/checkpoints.cpp | 32 +++++++++++++++++++++----- src/checkpoints.h | 7 ++++++ src/main.cpp | 49 +++++++++++++++++++++++++++++++++++++--- src/main.h | 1 + src/test/DoS_tests.cpp | 51 ++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 132 insertions(+), 8 deletions(-) diff --git a/src/checkpoints.cpp b/src/checkpoints.cpp index 4419a06c830..c7e054df378 100644 --- a/src/checkpoints.cpp +++ b/src/checkpoints.cpp @@ -2,16 +2,23 @@ // Distributed under the MIT/X11 software license, see the accompanying // file license.txt or http://www.opensource.org/licenses/mit-license.php. -#include "checkpoints.h" -#include "uint256.h" -#include "util.h" - #include // for 'map_list_of()' +#include + +#include "headers.h" +#include "checkpoints.h" namespace Checkpoints { typedef std::map MapCheckpoints; + // + // What makes a good checkpoint block? + // + Is surrounded by blocks with reasonable timestamps + // (no blocks before with a timestamp after, none after with + // timestamp before) + // + Contains no strange transactions + // static MapCheckpoints mapCheckpoints = boost::assign::map_list_of ( 11111, uint256("0x0000000069e244f73d78e8fd29ba2fd2ed618bd6fa2ee92559f542fdb26e7c1d")) @@ -36,8 +43,23 @@ namespace Checkpoints int GetTotalBlocksEstimate() { - if (fTestNet) return 0; // Testnet has no checkpoints + if (fTestNet) return 0; return mapCheckpoints.rbegin()->first; } + + CBlockIndex* GetLastCheckpoint(const std::map& mapBlockIndex) + { + if (fTestNet) return NULL; + + int64 nResult; + BOOST_REVERSE_FOREACH(const MapCheckpoints::value_type& i, mapCheckpoints) + { + const uint256& hash = i.second; + std::map::const_iterator t = mapBlockIndex.find(hash); + if (t != mapBlockIndex.end()) + return t->second; + } + return NULL; + } } diff --git a/src/checkpoints.h b/src/checkpoints.h index 32094fdde62..9d52da404fb 100644 --- a/src/checkpoints.h +++ b/src/checkpoints.h @@ -4,7 +4,11 @@ #ifndef BITCOIN_CHECKPOINT_H #define BITCOIN_CHECKPOINT_H +#include +#include "util.h" + class uint256; +class CBlockIndex; // // Block-chain checkpoints are compiled-in sanity checks. @@ -17,6 +21,9 @@ namespace Checkpoints // Return conservative estimate of total number of blocks, 0 if unknown int GetTotalBlocksEstimate(); + + // Returns last CBlockIndex* in mapBlockIndex that is a checkpoint + CBlockIndex* GetLastCheckpoint(const std::map& mapBlockIndex); } #endif diff --git a/src/main.cpp b/src/main.cpp index 832a0f92402..a7871fcc168 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -659,11 +659,32 @@ int64 static GetBlockValue(int nHeight, int64 nFees) return nSubsidy + nFees; } +static const int64 nTargetTimespan = 14 * 24 * 60 * 60; // two weeks +static const int64 nTargetSpacing = 10 * 60; +static const int64 nInterval = nTargetTimespan / nTargetSpacing; + +// +// minimum amount of work that could possibly be required nTime after +// minimum work required was nBase +// +unsigned int ComputeMinWork(unsigned int nBase, int64 nTime) +{ + CBigNum bnResult; + bnResult.SetCompact(nBase); + while (nTime > 0 && bnResult < bnProofOfWorkLimit) + { + // Maximum 400% adjustment... + bnResult *= 4; + // ... in best-case exactly 4-times-normal target time + nTime -= nTargetTimespan*4; + } + if (bnResult > bnProofOfWorkLimit) + bnResult = bnProofOfWorkLimit; + return bnResult.GetCompact(); +} + unsigned int static GetNextWorkRequired(const CBlockIndex* pindexLast) { - const int64 nTargetTimespan = 14 * 24 * 60 * 60; // two weeks - const int64 nTargetSpacing = 10 * 60; - const int64 nInterval = nTargetTimespan / nTargetSpacing; // Genesis block if (pindexLast == NULL) @@ -1340,6 +1361,28 @@ bool ProcessBlock(CNode* pfrom, CBlock* pblock) if (!pblock->CheckBlock()) return error("ProcessBlock() : CheckBlock FAILED"); + CBlockIndex* pcheckpoint = Checkpoints::GetLastCheckpoint(mapBlockIndex); + if (pcheckpoint && pblock->hashPrevBlock != hashBestChain) + { + // Extra checks to prevent "fill up memory by spamming with bogus blocks" + int64 deltaTime = pblock->GetBlockTime() - pcheckpoint->nTime; + if (deltaTime < 0) + { + pfrom->Misbehaving(100); + return error("ProcessBlock() : block with timestamp before last checkpoint"); + } + CBigNum bnNewBlock; + bnNewBlock.SetCompact(pblock->nBits); + CBigNum bnRequired; + bnRequired.SetCompact(ComputeMinWork(pcheckpoint->nBits, deltaTime)); + if (bnNewBlock > bnRequired) + { + pfrom->Misbehaving(100); + return error("ProcessBlock() : block with too little proof-of-work"); + } + } + + // If don't already have its previous block, shunt it off to holding area until we get it if (!mapBlockIndex.count(pblock->hashPrevBlock)) { diff --git a/src/main.h b/src/main.h index f459d050ce9..3870cee864b 100644 --- a/src/main.h +++ b/src/main.h @@ -99,6 +99,7 @@ void IncrementExtraNonce(CBlock* pblock, CBlockIndex* pindexPrev, unsigned int& void FormatHashBuffers(CBlock* pblock, char* pmidstate, char* pdata, char* phash1); bool CheckWork(CBlock* pblock, CWallet& wallet, CReserveKey& reservekey); bool CheckProofOfWork(uint256 hash, unsigned int nBits); +unsigned int ComputeMinWork(unsigned int nBase, int64 nTime); int GetNumBlocksOfPeers(); bool IsInitialBlockDownload(); std::string GetWarnings(std::string strFor); diff --git a/src/test/DoS_tests.cpp b/src/test/DoS_tests.cpp index 1093b73d80e..01e6691254a 100644 --- a/src/test/DoS_tests.cpp +++ b/src/test/DoS_tests.cpp @@ -1,6 +1,7 @@ // // Unit tests for denial-of-service detection/prevention code // +#include // for 'map_list_of()' #include #include @@ -64,4 +65,54 @@ BOOST_AUTO_TEST_CASE(DoS_bantime) BOOST_CHECK(!CNode::IsBanned(addr.ip)); } +static bool CheckNBits(unsigned int nbits1, int64 time1, unsigned int nbits2, int64 time2) +{ + if (time1 > time2) + return CheckNBits(nbits2, time2, nbits1, time1); + int64 deltaTime = time2-time1; + + CBigNum required; + required.SetCompact(ComputeMinWork(nbits1, deltaTime)); + CBigNum have; + have.SetCompact(nbits2); + return (have <= required); +} + +BOOST_AUTO_TEST_CASE(DoS_checknbits) +{ + using namespace boost::assign; // for 'map_list_of()' + + // Timestamps,nBits from the bitcoin blockchain. + // These are the block-chain checkpoint blocks + typedef std::map BlockData; + BlockData chainData = + map_list_of(1239852051,486604799)(1262749024,486594666) + (1279305360,469854461)(1280200847,469830746)(1281678674,469809688) + (1296207707,453179945)(1302624061,453036989)(1309640330,437004818) + (1313172719,436789733); + + // Make sure CheckNBits considers every combination of block-chain-lock-in-points + // "sane": + BOOST_FOREACH(const BlockData::value_type& i, chainData) + { + BOOST_FOREACH(const BlockData::value_type& j, chainData) + { + BOOST_CHECK(CheckNBits(i.second, i.first, j.second, j.first)); + } + } + + // Test a couple of insane combinations: + BlockData::value_type firstcheck = *(chainData.begin()); + BlockData::value_type lastcheck = *(chainData.rbegin()); + + // First checkpoint difficulty at or a while after the last checkpoint time should fail when + // compared to last checkpoint + BOOST_CHECK(!CheckNBits(firstcheck.second, lastcheck.first+60*10, lastcheck.second, lastcheck.first)); + BOOST_CHECK(!CheckNBits(firstcheck.second, lastcheck.first+60*60*24*14, lastcheck.second, lastcheck.first)); + + // ... but OK if enough time passed for difficulty to adjust downward: + BOOST_CHECK(CheckNBits(firstcheck.second, lastcheck.first+60*60*24*365*4, lastcheck.second, lastcheck.first)); + +} + BOOST_AUTO_TEST_SUITE_END() From 0e6425da4a29d6944e7edce85535725e1f963e2c Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Thu, 8 Sep 2011 16:50:58 -0400 Subject: [PATCH 032/298] Moved checkpoints out of main, to prep for using them to help prevent DoS attacks --- src/checkpoints.cpp | 43 ++++++++++++++++++++++++++++++++++ src/checkpoints.h | 22 +++++++++++++++++ src/main.cpp | 30 ++++-------------------- src/main.h | 1 - src/makefile.linux-mingw | 2 ++ src/makefile.mingw | 2 ++ src/makefile.osx | 2 ++ src/makefile.unix | 2 ++ src/makefile.vc | 6 +++++ src/test/Checkpoints_tests.cpp | 34 +++++++++++++++++++++++++++ src/test/test_bitcoin.cpp | 1 + 11 files changed, 118 insertions(+), 27 deletions(-) create mode 100644 src/checkpoints.cpp create mode 100644 src/checkpoints.h create mode 100644 src/test/Checkpoints_tests.cpp diff --git a/src/checkpoints.cpp b/src/checkpoints.cpp new file mode 100644 index 00000000000..4419a06c830 --- /dev/null +++ b/src/checkpoints.cpp @@ -0,0 +1,43 @@ +// Copyright (c) 2011 The Bitcoin developers +// Distributed under the MIT/X11 software license, see the accompanying +// file license.txt or http://www.opensource.org/licenses/mit-license.php. + +#include "checkpoints.h" +#include "uint256.h" +#include "util.h" + +#include // for 'map_list_of()' + +namespace Checkpoints +{ + typedef std::map MapCheckpoints; + + static MapCheckpoints mapCheckpoints = + boost::assign::map_list_of + ( 11111, uint256("0x0000000069e244f73d78e8fd29ba2fd2ed618bd6fa2ee92559f542fdb26e7c1d")) + ( 33333, uint256("0x000000002dd5588a74784eaa7ab0507a18ad16a236e7b1ce69f00d7ddfb5d0a6")) + ( 68555, uint256("0x00000000001e1b4903550a0b96e9a9405c8a95f387162e4944e8d9fbe501cd6a")) + ( 70567, uint256("0x00000000006a49b14bcf27462068f1264c961f11fa2e0eddd2be0791e1d4124a")) + ( 74000, uint256("0x0000000000573993a3c9e41ce34471c079dcf5f52a0e824a81e7f953b8661a20")) + (105000, uint256("0x00000000000291ce28027faea320c8d2b054b2e0fe44a773f3eefb151d6bdc97")) + (118000, uint256("0x000000000000774a7f8a7a12dc906ddb9e17e75d684f15e00f8767f9e8f36553")) + (134444, uint256("0x00000000000005b12ffd4cd315cd34ffd4a594f430ac814c91184a0d42d2b0fe")) + (140700, uint256("0x000000000000033b512028abb90e1626d8b346fd0ed598ac0a3c371138dce2bd")) + ; + + bool CheckBlock(int nHeight, const uint256& hash) + { + if (fTestNet) return true; // Testnet has no checkpoints + + MapCheckpoints::const_iterator i = mapCheckpoints.find(nHeight); + if (i == mapCheckpoints.end()) return true; + return hash == i->second; + } + + int GetTotalBlocksEstimate() + { + if (fTestNet) return 0; // Testnet has no checkpoints + + return mapCheckpoints.rbegin()->first; + } +} diff --git a/src/checkpoints.h b/src/checkpoints.h new file mode 100644 index 00000000000..32094fdde62 --- /dev/null +++ b/src/checkpoints.h @@ -0,0 +1,22 @@ +// Copyright (c) 2011 The Bitcoin developers +// Distributed under the MIT/X11 software license, see the accompanying +// file license.txt or http://www.opensource.org/licenses/mit-license.php. +#ifndef BITCOIN_CHECKPOINT_H +#define BITCOIN_CHECKPOINT_H + +class uint256; + +// +// Block-chain checkpoints are compiled-in sanity checks. +// They are updated every release or three. +// +namespace Checkpoints +{ + // Returns true if block passes checkpoint checks + bool CheckBlock(int nHeight, const uint256& hash); + + // Return conservative estimate of total number of blocks, 0 if unknown + int GetTotalBlocksEstimate(); +} + +#endif diff --git a/src/main.cpp b/src/main.cpp index 6a3bacc78e9..dad7d144e7d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -3,6 +3,7 @@ // Distributed under the MIT/X11 software license, see the accompanying // file license.txt or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" +#include "checkpoints.h" #include "db.h" #include "net.h" #include "init.h" @@ -30,7 +31,6 @@ map mapNextTx; map mapBlockIndex; uint256 hashGenesisBlock("0x000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f"); static CBigNum bnProofOfWorkLimit(~uint256(0) >> 32); -const int nTotalBlocksEstimate = 140700; // Conservative estimate of total nr of blocks on main chain const int nInitialBlockThreshold = 120; // Regard blocks up until N-threshold as "initial download" CBlockIndex* pindexGenesisBlock = NULL; int nBestHeight = -1; @@ -713,22 +713,9 @@ bool CheckProofOfWork(uint256 hash, unsigned int nBits) return true; } -// Return conservative estimate of total number of blocks, 0 if unknown -int GetTotalBlocksEstimate() -{ - if(fTestNet) - { - return 0; - } - else - { - return nTotalBlocksEstimate; - } -} - bool IsInitialBlockDownload() { - if (pindexBest == NULL || nBestHeight < (GetTotalBlocksEstimate()-nInitialBlockThreshold)) + if (pindexBest == NULL || nBestHeight < (Checkpoints::GetTotalBlocksEstimate()-nInitialBlockThreshold)) return true; static int64 nLastUpdate; static CBlockIndex* pindexLastBest; @@ -1294,17 +1281,8 @@ bool CBlock::AcceptBlock() return error("AcceptBlock() : contains a non-final transaction"); // Check that the block chain matches the known block chain up to a checkpoint - if (!fTestNet) - if ((nHeight == 11111 && hash != uint256("0x0000000069e244f73d78e8fd29ba2fd2ed618bd6fa2ee92559f542fdb26e7c1d")) || - (nHeight == 33333 && hash != uint256("0x000000002dd5588a74784eaa7ab0507a18ad16a236e7b1ce69f00d7ddfb5d0a6")) || - (nHeight == 68555 && hash != uint256("0x00000000001e1b4903550a0b96e9a9405c8a95f387162e4944e8d9fbe501cd6a")) || - (nHeight == 70567 && hash != uint256("0x00000000006a49b14bcf27462068f1264c961f11fa2e0eddd2be0791e1d4124a")) || - (nHeight == 74000 && hash != uint256("0x0000000000573993a3c9e41ce34471c079dcf5f52a0e824a81e7f953b8661a20")) || - (nHeight == 105000 && hash != uint256("0x00000000000291ce28027faea320c8d2b054b2e0fe44a773f3eefb151d6bdc97")) || - (nHeight == 118000 && hash != uint256("0x000000000000774a7f8a7a12dc906ddb9e17e75d684f15e00f8767f9e8f36553")) || - (nHeight == 134444 && hash != uint256("0x00000000000005b12ffd4cd315cd34ffd4a594f430ac814c91184a0d42d2b0fe")) || - (nHeight == 140700 && hash != uint256("0x000000000000033b512028abb90e1626d8b346fd0ed598ac0a3c371138dce2bd"))) - return error("AcceptBlock() : rejected by checkpoint lockin at %d", nHeight); + if (!Checkpoints::CheckBlock(nHeight, hash)) + return error("AcceptBlock() : rejected by checkpoint lockin at %d", nHeight); // Write block to history file if (!CheckDiskSpace(::GetSerializeSize(*this, SER_DISK))) diff --git a/src/main.h b/src/main.h index c400145d015..f5e7f6c3e37 100644 --- a/src/main.h +++ b/src/main.h @@ -98,7 +98,6 @@ void IncrementExtraNonce(CBlock* pblock, CBlockIndex* pindexPrev, unsigned int& void FormatHashBuffers(CBlock* pblock, char* pmidstate, char* pdata, char* phash1); bool CheckWork(CBlock* pblock, CWallet& wallet, CReserveKey& reservekey); bool CheckProofOfWork(uint256 hash, unsigned int nBits); -int GetTotalBlocksEstimate(); bool IsInitialBlockDownload(); std::string GetWarnings(std::string strFor); diff --git a/src/makefile.linux-mingw b/src/makefile.linux-mingw index 24cc127c2d8..23b417cad18 100644 --- a/src/makefile.linux-mingw +++ b/src/makefile.linux-mingw @@ -38,6 +38,7 @@ CFLAGS=-O2 -w -Wno-invalid-offsetof -Wformat $(DEBUGFLAGS) $(DEFS) $(INCLUDEPATH HEADERS = \ base58.h \ bignum.h \ + checkpoints.h \ crypter.h \ db.h \ headers.h \ @@ -68,6 +69,7 @@ endif LIBS += -l mingwthrd -l kernel32 -l user32 -l gdi32 -l comdlg32 -l winspool -l winmm -l shell32 -l comctl32 -l ole32 -l oleaut32 -l uuid -l rpcrt4 -l advapi32 -l ws2_32 -l shlwapi OBJS= \ + obj/checkpoints.o \ obj/crypter.o \ obj/db.o \ obj/init.o \ diff --git a/src/makefile.mingw b/src/makefile.mingw index 1ca1a7bbe25..ef7eebf4306 100644 --- a/src/makefile.mingw +++ b/src/makefile.mingw @@ -35,6 +35,7 @@ CFLAGS=-mthreads -O2 -w -Wno-invalid-offsetof -Wformat $(DEBUGFLAGS) $(DEFS) $(I HEADERS = \ base58.h \ bignum.h \ + checkpoints.h \ crypter.h \ db.h \ headers.h \ @@ -66,6 +67,7 @@ endif LIBS += -l kernel32 -l user32 -l gdi32 -l comdlg32 -l winspool -l winmm -l shell32 -l comctl32 -l ole32 -l oleaut32 -l uuid -l rpcrt4 -l advapi32 -l ws2_32 -l shlwapi OBJS= \ + obj/checkpoints.o \ obj/crypter.o \ obj/db.o \ obj/init.o \ diff --git a/src/makefile.osx b/src/makefile.osx index 97264c7eb4c..af526369191 100644 --- a/src/makefile.osx +++ b/src/makefile.osx @@ -35,6 +35,7 @@ CFLAGS=-mmacosx-version-min=10.5 -arch i386 -arch x86_64 -O3 -Wno-invalid-offset HEADERS = \ base58.h \ bignum.h \ + checkpoints.h \ crypter.h \ db.h \ headers.h \ @@ -57,6 +58,7 @@ HEADERS = \ wallet.h OBJS= \ + obj/checkpoints.o \ obj/crypter.o \ obj/db.o \ obj/init.o \ diff --git a/src/makefile.unix b/src/makefile.unix index 9e0b3263d7a..a2cbc7c77e1 100644 --- a/src/makefile.unix +++ b/src/makefile.unix @@ -73,6 +73,7 @@ CXXFLAGS=-O2 -Wno-invalid-offsetof -Wformat $(DEBUGFLAGS) $(DEFS) $(HARDENING) HEADERS = \ base58.h \ bignum.h \ + checkpoints.h \ crypter.h \ db.h \ headers.h \ @@ -95,6 +96,7 @@ HEADERS = \ wallet.h OBJS= \ + obj/checkpoints.o \ obj/crypter.o \ obj/db.o \ obj/init.o \ diff --git a/src/makefile.vc b/src/makefile.vc index a5437bcf5cd..4c81cc400fc 100644 --- a/src/makefile.vc +++ b/src/makefile.vc @@ -48,6 +48,7 @@ CFLAGS=/MD /c /nologo /EHsc /GR /Zm300 $(DEBUGFLAGS) $(DEFS) $(INCLUDEPATHS) HEADERS = \ base58.h \ bignum.h \ + checkpoints.h \ crypter.h \ db.h \ headers.h \ @@ -70,6 +71,7 @@ HEADERS = \ wallet.h OBJS= \ + obj\checkpoints.o \ obj\crypter.o \ obj\db.o \ obj\init.o \ @@ -98,6 +100,8 @@ all: bitcoin.exe .cpp{obj}.obj: cl $(CFLAGS) /DGUI /Fo$@ %s +obj\checkpoints.obj: $(HEADERS) + obj\util.obj: $(HEADERS) obj\script.obj: $(HEADERS) @@ -140,6 +144,8 @@ bitcoin.exe: $(OBJS) $(CRYPTOPP_OBJS) obj\ui.obj obj\uibase.obj obj\ui.res .cpp{obj\nogui}.obj: cl $(CFLAGS) /Fo$@ %s +obj\nogui\checkpoints.obj: $(HEADERS) + obj\nogui\util.obj: $(HEADERS) obj\nogui\script.obj: $(HEADERS) diff --git a/src/test/Checkpoints_tests.cpp b/src/test/Checkpoints_tests.cpp new file mode 100644 index 00000000000..0d8a366d7ac --- /dev/null +++ b/src/test/Checkpoints_tests.cpp @@ -0,0 +1,34 @@ +// +// Unit tests for block-chain checkpoints +// +#include // for 'map_list_of()' +#include +#include + +#include "../checkpoints.h" +#include "../util.h" + +using namespace std; + +BOOST_AUTO_TEST_SUITE(Checkpoints_tests) + +BOOST_AUTO_TEST_CASE(sanity) +{ + uint256 p11111 = uint256("0x0000000069e244f73d78e8fd29ba2fd2ed618bd6fa2ee92559f542fdb26e7c1d"); + uint256 p140700 = uint256("0x000000000000033b512028abb90e1626d8b346fd0ed598ac0a3c371138dce2bd"); + BOOST_CHECK(Checkpoints::CheckBlock(11111, p11111)); + BOOST_CHECK(Checkpoints::CheckBlock(140700, p140700)); + + + // Wrong hashes at checkpoints should fail: + BOOST_CHECK(!Checkpoints::CheckBlock(11111, p140700)); + BOOST_CHECK(!Checkpoints::CheckBlock(140700, p11111)); + + // ... but any hash not at a checkpoint should succeed: + BOOST_CHECK(Checkpoints::CheckBlock(11111+1, p140700)); + BOOST_CHECK(Checkpoints::CheckBlock(140700+1, p11111)); + + BOOST_CHECK(Checkpoints::GetTotalBlocksEstimate() >= 140700); +} + +BOOST_AUTO_TEST_SUITE_END() diff --git a/src/test/test_bitcoin.cpp b/src/test/test_bitcoin.cpp index 0230bb6ecad..645d8a2bdfe 100644 --- a/src/test/test_bitcoin.cpp +++ b/src/test/test_bitcoin.cpp @@ -8,6 +8,7 @@ #include "uint256_tests.cpp" #include "script_tests.cpp" #include "transaction_tests.cpp" +#include "Checkpoints_tests.cpp" CWallet* pwalletMain; From 5d901f1ba0b2f4444e484b9cb3db8d86c428af3f Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Thu, 8 Sep 2011 12:51:43 -0400 Subject: [PATCH 033/298] Orphan block fill-up-memory attack prevention --- src/checkpoints.cpp | 32 +++++++++++++++++++++++++----- src/checkpoints.h | 7 +++++++ src/main.cpp | 47 ++++++++++++++++++++++++++++++++++++++++++--- src/main.h | 1 + 4 files changed, 79 insertions(+), 8 deletions(-) diff --git a/src/checkpoints.cpp b/src/checkpoints.cpp index 4419a06c830..c7e054df378 100644 --- a/src/checkpoints.cpp +++ b/src/checkpoints.cpp @@ -2,16 +2,23 @@ // Distributed under the MIT/X11 software license, see the accompanying // file license.txt or http://www.opensource.org/licenses/mit-license.php. -#include "checkpoints.h" -#include "uint256.h" -#include "util.h" - #include // for 'map_list_of()' +#include + +#include "headers.h" +#include "checkpoints.h" namespace Checkpoints { typedef std::map MapCheckpoints; + // + // What makes a good checkpoint block? + // + Is surrounded by blocks with reasonable timestamps + // (no blocks before with a timestamp after, none after with + // timestamp before) + // + Contains no strange transactions + // static MapCheckpoints mapCheckpoints = boost::assign::map_list_of ( 11111, uint256("0x0000000069e244f73d78e8fd29ba2fd2ed618bd6fa2ee92559f542fdb26e7c1d")) @@ -36,8 +43,23 @@ namespace Checkpoints int GetTotalBlocksEstimate() { - if (fTestNet) return 0; // Testnet has no checkpoints + if (fTestNet) return 0; return mapCheckpoints.rbegin()->first; } + + CBlockIndex* GetLastCheckpoint(const std::map& mapBlockIndex) + { + if (fTestNet) return NULL; + + int64 nResult; + BOOST_REVERSE_FOREACH(const MapCheckpoints::value_type& i, mapCheckpoints) + { + const uint256& hash = i.second; + std::map::const_iterator t = mapBlockIndex.find(hash); + if (t != mapBlockIndex.end()) + return t->second; + } + return NULL; + } } diff --git a/src/checkpoints.h b/src/checkpoints.h index 32094fdde62..9d52da404fb 100644 --- a/src/checkpoints.h +++ b/src/checkpoints.h @@ -4,7 +4,11 @@ #ifndef BITCOIN_CHECKPOINT_H #define BITCOIN_CHECKPOINT_H +#include +#include "util.h" + class uint256; +class CBlockIndex; // // Block-chain checkpoints are compiled-in sanity checks. @@ -17,6 +21,9 @@ namespace Checkpoints // Return conservative estimate of total number of blocks, 0 if unknown int GetTotalBlocksEstimate(); + + // Returns last CBlockIndex* in mapBlockIndex that is a checkpoint + CBlockIndex* GetLastCheckpoint(const std::map& mapBlockIndex); } #endif diff --git a/src/main.cpp b/src/main.cpp index dad7d144e7d..af00069d663 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -651,11 +651,32 @@ int64 static GetBlockValue(int nHeight, int64 nFees) return nSubsidy + nFees; } +static const int64 nTargetTimespan = 14 * 24 * 60 * 60; // two weeks +static const int64 nTargetSpacing = 10 * 60; +static const int64 nInterval = nTargetTimespan / nTargetSpacing; + +// +// minimum amount of work that could possibly be required nTime after +// minimum work required was nBase +// +unsigned int ComputeMinWork(unsigned int nBase, int64 nTime) +{ + CBigNum bnResult; + bnResult.SetCompact(nBase); + while (nTime > 0 && bnResult < bnProofOfWorkLimit) + { + // Maximum 400% adjustment... + bnResult *= 4; + // ... in best-case exactly 4-times-normal target time + nTime -= nTargetTimespan*4; + } + if (bnResult > bnProofOfWorkLimit) + bnResult = bnProofOfWorkLimit; + return bnResult.GetCompact(); +} + unsigned int static GetNextWorkRequired(const CBlockIndex* pindexLast) { - const int64 nTargetTimespan = 14 * 24 * 60 * 60; // two weeks - const int64 nTargetSpacing = 10 * 60; - const int64 nInterval = nTargetTimespan / nTargetSpacing; // Genesis block if (pindexLast == NULL) @@ -1317,6 +1338,26 @@ bool static ProcessBlock(CNode* pfrom, CBlock* pblock) if (!pblock->CheckBlock()) return error("ProcessBlock() : CheckBlock FAILED"); + CBlockIndex* pcheckpoint = Checkpoints::GetLastCheckpoint(mapBlockIndex); + if (pcheckpoint && pblock->hashPrevBlock != hashBestChain) + { + // Extra checks to prevent "fill up memory by spamming with bogus blocks" + int64 deltaTime = pblock->GetBlockTime() - pcheckpoint->nTime; + if (deltaTime < 0) + { + return error("ProcessBlock() : block with timestamp before last checkpoint"); + } + CBigNum bnNewBlock; + bnNewBlock.SetCompact(pblock->nBits); + CBigNum bnRequired; + bnRequired.SetCompact(ComputeMinWork(pcheckpoint->nBits, deltaTime)); + if (bnNewBlock > bnRequired) + { + return error("ProcessBlock() : block with too little proof-of-work"); + } + } + + // If don't already have its previous block, shunt it off to holding area until we get it if (!mapBlockIndex.count(pblock->hashPrevBlock)) { diff --git a/src/main.h b/src/main.h index f5e7f6c3e37..876a35d9cc3 100644 --- a/src/main.h +++ b/src/main.h @@ -98,6 +98,7 @@ void IncrementExtraNonce(CBlock* pblock, CBlockIndex* pindexPrev, unsigned int& void FormatHashBuffers(CBlock* pblock, char* pmidstate, char* pdata, char* phash1); bool CheckWork(CBlock* pblock, CWallet& wallet, CReserveKey& reservekey); bool CheckProofOfWork(uint256 hash, unsigned int nBits); +unsigned int ComputeMinWork(unsigned int nBase, int64 nTime); bool IsInitialBlockDownload(); std::string GetWarnings(std::string strFor); From ba56a88ca5fae52ce5690553d97e4e8ac1338dfd Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Mon, 21 Nov 2011 12:25:00 -0500 Subject: [PATCH 034/298] Move DNS Seed lookup to a new thread. --- src/init.cpp | 5 ----- src/net.cpp | 39 ++++++++++++++++++++++++++++++++++++++- src/net.h | 1 - 3 files changed, 38 insertions(+), 7 deletions(-) diff --git a/src/init.cpp b/src/init.cpp index 68303c19fad..75ecfc574e0 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -519,11 +519,6 @@ bool AppInit2(int argc, char* argv[]) } } - if (GetBoolArg("-nodnsseed")) - printf("DNS seeding disabled\n"); - else - DNSAddressSeed(); - if (mapArgs.count("-paytxfee")) { if (!ParseMoney(mapArgs["-paytxfee"], nTransactionFee)) diff --git a/src/net.cpp b/src/net.cpp index f8f6afde543..1907397fada 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -32,6 +32,7 @@ void ThreadOpenConnections2(void* parg); #ifdef USE_UPNP void ThreadMapPort2(void* parg); #endif +void ThreadDNSAddressSeed2(void* parg); bool OpenNetworkConnection(const CAddress& addrConnect); @@ -1162,8 +1163,28 @@ static const char *strDNSSeed[] = { "dnsseed.bluematt.me", }; -void DNSAddressSeed() +void ThreadDNSAddressSeed(void* parg) { + IMPLEMENT_RANDOMIZE_STACK(ThreadDNSAddressSeed(parg)); + try + { + vnThreadsRunning[6]++; + ThreadDNSAddressSeed2(parg); + vnThreadsRunning[6]--; + } + catch (std::exception& e) { + vnThreadsRunning[6]--; + PrintException(&e, "ThreadDNSAddressSeed()"); + } catch (...) { + vnThreadsRunning[6]--; + throw; // support pthread_cancel() + } + printf("ThreadDNSAddressSeed exiting\n"); +} + +void ThreadDNSAddressSeed2(void* parg) +{ + printf("ThreadDNSAddressSeed started\n"); int found = 0; if (!fTestNet) @@ -1196,6 +1217,15 @@ void DNSAddressSeed() + + + + + + + + + unsigned int pnSeed[] = { 0x6884ac63, 0x3ffecead, 0x2919b953, 0x0942fe50, 0x7a1d922e, 0xcdd6734a, 0x953a5bb6, 0x2c46922e, @@ -1703,6 +1733,12 @@ void StartNode(void* parg) // Start threads // + if (GetBoolArg("-nodnsseed")) + printf("DNS seeding disabled\n"); + else + if (!CreateThread(ThreadDNSAddressSeed, NULL)) + printf("Error: CreateThread(ThreadDNSAddressSeed) failed\n"); + // Map ports with UPnP if (fHaveUPnP) MapPort(fUseUPnP); @@ -1749,6 +1785,7 @@ bool StopNode() if (vnThreadsRunning[3] > 0) printf("ThreadBitcoinMiner still running\n"); if (vnThreadsRunning[4] > 0) printf("ThreadRPCServer still running\n"); if (fHaveUPnP && vnThreadsRunning[5] > 0) printf("ThreadMapPort still running\n"); + if (vnThreadsRunning[6] > 0) printf("ThreadDNSAddressSeed still running\n"); while (vnThreadsRunning[2] > 0 || vnThreadsRunning[4] > 0) Sleep(20); Sleep(50); diff --git a/src/net.h b/src/net.h index 0026e402c2c..741e2a812ec 100644 --- a/src/net.h +++ b/src/net.h @@ -40,7 +40,6 @@ CNode* ConnectNode(CAddress addrConnect, int64 nTimeout=0); void AbandonRequests(void (*fn)(void*, CDataStream&), void* param1); bool AnySubscribed(unsigned int nChannel); void MapPort(bool fMapPort); -void DNSAddressSeed(); bool BindListenPort(std::string& strError=REF(std::string())); void StartNode(void* parg); bool StopNode(); From 16e7c05de71a2c215e3b74522bf34d8e0da3381e Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Sat, 3 Dec 2011 21:48:32 -0500 Subject: [PATCH 035/298] Move -lgdi32 after -lcrypto (fixes #681). --- bitcoin-qt.pro | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bitcoin-qt.pro b/bitcoin-qt.pro index 8fc177f7f48..66b53c23677 100644 --- a/bitcoin-qt.pro +++ b/bitcoin-qt.pro @@ -251,7 +251,7 @@ isEmpty(BOOST_INCLUDE_PATH) { macx:BOOST_INCLUDE_PATH = /opt/local/include } -windows:LIBS += -lws2_32 -lgdi32 +windows:LIBS += -lws2_32 windows:DEFINES += WIN32 windows:RC_FILE = src/qt/res/bitcoin-qt.rc @@ -266,6 +266,8 @@ macx:TARGET = "Bitcoin-Qt" INCLUDEPATH += $$BOOST_INCLUDE_PATH $$BDB_INCLUDE_PATH $$OPENSSL_INCLUDE_PATH LIBS += $$join(BOOST_LIB_PATH,,-L,) $$join(BDB_LIB_PATH,,-L,) $$join(OPENSSL_LIB_PATH,,-L,) LIBS += -lssl -lcrypto -ldb_cxx$$BDB_LIB_SUFFIX +# -lgdi32 has to happen after -lcrypto (see #681) +windows:LIBS += -lgdi32 LIBS += -lboost_system$$BOOST_LIB_SUFFIX -lboost_filesystem$$BOOST_LIB_SUFFIX -lboost_program_options$$BOOST_LIB_SUFFIX -lboost_thread$$BOOST_THREAD_LIB_SUFFIX contains(RELEASE, 1) { From 9a7f4948c6e63e9470b14b0f8b61c8ecbf21f00f Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Wed, 7 Dec 2011 10:26:55 -0500 Subject: [PATCH 036/298] Re-enable RPCSSL in gitian builds. --- contrib/gitian-descriptors/gitian-win32.yml | 4 ++-- contrib/gitian-descriptors/gitian.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/contrib/gitian-descriptors/gitian-win32.yml b/contrib/gitian-descriptors/gitian-win32.yml index 37dcb8d0b5f..0f4670979ef 100644 --- a/contrib/gitian-descriptors/gitian-win32.yml +++ b/contrib/gitian-descriptors/gitian-win32.yml @@ -71,7 +71,7 @@ script: | export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1 export FAKETIME=$REFERENCE_DATETIME export TZ=UTC - $HOME/qt/src/bin/qmake -spec unsupported/win32-g++-cross MINIUPNPC_LIB_PATH=$HOME/build/miniupnpc MINIUPNPC_INCLUDE_PATH=$HOME/build/ BDB_LIB_PATH=$HOME/build/db-4.8.30.NC/build_unix BDB_INCLUDE_PATH=$HOME/build/db-4.8.30.NC/build_unix BOOST_LIB_PATH=$HOME/build/boost_1_47_0/stage/lib BOOST_INCLUDE_PATH=$HOME/build/boost_1_47_0 BOOST_LIB_SUFFIX=-mt-s BOOST_THREAD_LIB_SUFFIX=_win32-mt-s OPENSSL_LIB_PATH=$HOME/build/openssl-1.0.0e OPENSSL_INCLUDE_PATH=$HOME/build/openssl-1.0.0e/include INCLUDEPATH=$HOME/build DEFINES=BOOST_THREAD_USE_LIB BITCOIN_NEED_QT_PLUGINS=1 QMAKE_LRELEASE=lrelease QMAKE_CXXFLAGS=-frandom-seed=bitcoin QMAKE_LFLAGS=-frandom-seed=bitcoin + $HOME/qt/src/bin/qmake -spec unsupported/win32-g++-cross USE_SSL=1 MINIUPNPC_LIB_PATH=$HOME/build/miniupnpc MINIUPNPC_INCLUDE_PATH=$HOME/build/ BDB_LIB_PATH=$HOME/build/db-4.8.30.NC/build_unix BDB_INCLUDE_PATH=$HOME/build/db-4.8.30.NC/build_unix BOOST_LIB_PATH=$HOME/build/boost_1_47_0/stage/lib BOOST_INCLUDE_PATH=$HOME/build/boost_1_47_0 BOOST_LIB_SUFFIX=-mt-s BOOST_THREAD_LIB_SUFFIX=_win32-mt-s OPENSSL_LIB_PATH=$HOME/build/openssl-1.0.0e OPENSSL_INCLUDE_PATH=$HOME/build/openssl-1.0.0e/include INCLUDEPATH=$HOME/build DEFINES=BOOST_THREAD_USE_LIB BITCOIN_NEED_QT_PLUGINS=1 QMAKE_LRELEASE=lrelease QMAKE_CXXFLAGS=-frandom-seed=bitcoin QMAKE_LFLAGS=-frandom-seed=bitcoin make $MAKEOPTS cp release/bitcoin-qt.exe $OUTDIR/ # @@ -80,7 +80,7 @@ script: | export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1 export FAKETIME=$REFERENCE_DATETIME export TZ=UTC - make -f makefile.linux-mingw $MAKEOPTS DEPSDIR=$HOME/build bitcoind.exe USE_UPNP=0 + make -f makefile.linux-mingw $MAKEOPTS DEPSDIR=$HOME/build bitcoind.exe USE_SSL=1 USE_UPNP=0 i586-mingw32msvc-strip bitcoind.exe makensis ../share/setup.nsi cp ../share/bitcoin-*-win32-setup.exe $OUTDIR/ diff --git a/contrib/gitian-descriptors/gitian.yml b/contrib/gitian-descriptors/gitian.yml index 84ecac6ff49..47164b0afd4 100644 --- a/contrib/gitian-descriptors/gitian.yml +++ b/contrib/gitian-descriptors/gitian.yml @@ -39,10 +39,10 @@ script: | cp $OUTDIR/src/COPYING $OUTDIR cd src sed 's/$(DEBUGFLAGS)//' -i makefile.unix - make -f makefile.unix STATIC=1 DEFS="-I$INSTDIR/include -L$INSTDIR/lib" $MAKEOPTS bitcoind USE_UPNP=0 + make -f makefile.unix STATIC=1 DEFS="-I$INSTDIR/include -L$INSTDIR/lib" $MAKEOPTS bitcoind USE_UPNP=0 USE_SSL=1 mkdir -p $OUTDIR/bin/$GBUILD_BITS install -s bitcoind $OUTDIR/bin/$GBUILD_BITS cd .. - qmake INCLUDEPATH="$INSTDIR/include" LIBS="-L$INSTDIR/lib" RELEASE=1 + qmake INCLUDEPATH="$INSTDIR/include" LIBS="-L$INSTDIR/lib" RELEASE=1 USE_SSL=1 make $MAKEOPTS install bitcoin-qt $OUTDIR/bin/$GBUILD_BITS From 142e5056cd8a62df838e9a3afee0f718faffd72b Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Tue, 13 Dec 2011 16:28:56 +0100 Subject: [PATCH 037/298] Enable wordwrap for long message in passphrase dialog - Remove explicit resizing from constructor to prevent potential hang --- src/qt/askpassphrasedialog.cpp | 1 - src/qt/forms/askpassphrasedialog.ui | 20 +++++--------------- 2 files changed, 5 insertions(+), 16 deletions(-) diff --git a/src/qt/askpassphrasedialog.cpp b/src/qt/askpassphrasedialog.cpp index a574ef925b0..b52acf4545e 100644 --- a/src/qt/askpassphrasedialog.cpp +++ b/src/qt/askpassphrasedialog.cpp @@ -47,7 +47,6 @@ AskPassphraseDialog::AskPassphraseDialog(Mode mode, QWidget *parent) : ui->warningLabel->setText(tr("Enter the old and new passphrase to the wallet.")); break; } - resize(minimumSize()); // Get rid of extra space in dialog textChanged(); connect(ui->passEdit1, SIGNAL(textChanged(QString)), this, SLOT(textChanged())); diff --git a/src/qt/forms/askpassphrasedialog.ui b/src/qt/forms/askpassphrasedialog.ui index 70d9180e752..3c7dac5f8dd 100644 --- a/src/qt/forms/askpassphrasedialog.ui +++ b/src/qt/forms/askpassphrasedialog.ui @@ -6,8 +6,8 @@ 0 0 - 589 - 228 + 598 + 187 @@ -34,6 +34,9 @@ Qt::RichText + + true + @@ -85,19 +88,6 @@ - - - - Qt::Vertical - - - - 20 - 40 - - - - From 181b863d224b5236b53309e7cb12b3927b240d70 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Tue, 13 Dec 2011 14:00:21 -0500 Subject: [PATCH 038/298] Fix status bar not displaying Alerts. --- src/qt/bitcoin.cpp | 2 ++ src/qt/bitcoingui.cpp | 40 +++++++++++++++++++++++++++++++++++----- src/qt/bitcoingui.h | 2 ++ src/qt/clientmodel.cpp | 5 +++++ src/qt/clientmodel.h | 2 ++ 5 files changed, 46 insertions(+), 5 deletions(-) diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index 6afa9671d0b..2142db5a364 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -91,6 +91,8 @@ void UIThreadCall(boost::function0 fn) void MainFrameRepaint() { + if(guiref) + QMetaObject::invokeMethod(guiref, "refreshStatusBar", Qt::QueuedConnection); } void InitMessage(const std::string &message) diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index 8641c723b0a..5968aab6c41 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -2,6 +2,7 @@ * Qt4 bitcoin GUI. * * W.J. van der Laan 2011 + * The Bitcoin Developers 2011 */ #include "bitcoingui.h" #include "transactiontablemodel.h" @@ -412,15 +413,31 @@ void BitcoinGUI::setNumBlocks(int count) if(count < total) { - progressBarLabel->setVisible(true); - progressBar->setVisible(true); - progressBar->setMaximum(total - initTotal); - progressBar->setValue(count - initTotal); + if (clientModel->getStatusBarWarnings() == "") + { + progressBarLabel->setVisible(true); + progressBarLabel->setText(tr("Synchronizing with network...")); + progressBar->setVisible(true); + progressBar->setMaximum(total - initTotal); + progressBar->setValue(count - initTotal); + } + else + { + progressBarLabel->setText(clientModel->getStatusBarWarnings()); + progressBarLabel->setVisible(true); + progressBar->setVisible(false); + } tooltip = tr("Downloaded %1 of %2 blocks of transaction history.").arg(count).arg(total); } else { - progressBarLabel->setVisible(false); + if (clientModel->getStatusBarWarnings() == "") + progressBarLabel->setVisible(false); + else + { + progressBarLabel->setText(clientModel->getStatusBarWarnings()); + progressBarLabel->setVisible(true); + } progressBar->setVisible(false); tooltip = tr("Downloaded %1 blocks of transaction history.").arg(count); } @@ -469,6 +486,19 @@ void BitcoinGUI::setNumBlocks(int count) progressBar->setToolTip(tooltip); } +void BitcoinGUI::refreshStatusBar() +{ + /* Might display multiple times in the case of multiple alerts + static QString prevStatusBar; + QString newStatusBar = clientModel->getStatusBarWarnings(); + if (prevStatusBar != newStatusBar) + { + prevStatusBar = newStatusBar; + error(tr("Network Alert"), newStatusBar); + }*/ + setNumBlocks(clientModel->getNumBlocks()); +} + void BitcoinGUI::error(const QString &title, const QString &message) { // Report errors from network/worker thread diff --git a/src/qt/bitcoingui.h b/src/qt/bitcoingui.h index a9121921965..581d3937490 100644 --- a/src/qt/bitcoingui.h +++ b/src/qt/bitcoingui.h @@ -96,6 +96,8 @@ public slots: void setNumConnections(int count); void setNumBlocks(int count); void setEncryptionStatus(int status); + /** Set the status bar text if there are any warnings (removes sync progress bar if applicable) */ + void refreshStatusBar(); void error(const QString &title, const QString &message); /* It is currently not possible to pass a return value to another thread through diff --git a/src/qt/clientmodel.cpp b/src/qt/clientmodel.cpp index 2ed3ce51dfc..5a0b4aa83ca 100644 --- a/src/qt/clientmodel.cpp +++ b/src/qt/clientmodel.cpp @@ -72,6 +72,11 @@ int ClientModel::getNumBlocksOfPeers() const return GetNumBlocksOfPeers(); } +QString ClientModel::getStatusBarWarnings() const +{ + return QString::fromStdString(GetWarnings("statusbar")); +} + OptionsModel *ClientModel::getOptionsModel() { return optionsModel; diff --git a/src/qt/clientmodel.h b/src/qt/clientmodel.h index c68fb0f0354..0b7c16d7a98 100644 --- a/src/qt/clientmodel.h +++ b/src/qt/clientmodel.h @@ -33,6 +33,8 @@ public: bool inInitialBlockDownload() const; // Return conservative estimate of total number of blocks, or 0 if unknown int getNumBlocksOfPeers() const; + //! Return warnings to be displayed in status bar + QString getStatusBarWarnings() const; QString formatFullVersion() const; From 1f53204045313eb0243c7b2372d241105c257ca2 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Thu, 15 Dec 2011 19:25:29 -0500 Subject: [PATCH 039/298] Bump version to 0.4.3 --- contrib/Bitcoin.app/Contents/Info.plist | 2 +- doc/README | 2 +- doc/README_windows.txt | 2 +- share/setup.nsi | 6 +++--- src/serialize.h | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/contrib/Bitcoin.app/Contents/Info.plist b/contrib/Bitcoin.app/Contents/Info.plist index 9145db10f15..1d520c93cf9 100644 --- a/contrib/Bitcoin.app/Contents/Info.plist +++ b/contrib/Bitcoin.app/Contents/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 0.4.2 + 0.4.3 CFBundleSignature ???? CFBundleVersion diff --git a/doc/README b/doc/README index 9c28f4c6929..d91509bd90d 100644 --- a/doc/README +++ b/doc/README @@ -1,4 +1,4 @@ -Bitcoin 0.4.2 BETA +Bitcoin 0.4.3 BETA Copyright (c) 2009-2011 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/doc/README_windows.txt b/doc/README_windows.txt index 7a406d65a37..2f5761645a8 100644 --- a/doc/README_windows.txt +++ b/doc/README_windows.txt @@ -1,4 +1,4 @@ -Bitcoin 0.4.2 BETA +Bitcoin 0.4.3 BETA Copyright (c) 2009-2011 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/share/setup.nsi b/share/setup.nsi index 4500dc48e1b..3455f7681cb 100644 --- a/share/setup.nsi +++ b/share/setup.nsi @@ -5,7 +5,7 @@ SetCompressor /SOLID lzma # General Symbol Definitions !define REGKEY "SOFTWARE\$(^Name)" -!define VERSION 0.4.2 +!define VERSION 0.4.3 !define COMPANY "Bitcoin project" !define URL http://www.bitcoin.org/ @@ -45,13 +45,13 @@ Var StartMenuGroup !insertmacro MUI_LANGUAGE English # Installer attributes -OutFile bitcoin-0.4.2-win32-setup.exe +OutFile bitcoin-0.4.3-win32-setup.exe InstallDir $PROGRAMFILES\Bitcoin CRCCheck on XPStyle on BrandingText " " ShowInstDetails show -VIProductVersion 0.4.2.0 +VIProductVersion 0.4.3.0 VIAddVersionKey ProductName Bitcoin VIAddVersionKey ProductVersion "${VERSION}" VIAddVersionKey CompanyName "${COMPANY}" diff --git a/src/serialize.h b/src/serialize.h index 64fae0367ea..7876990d04e 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -59,7 +59,7 @@ class CDataStream; class CAutoFile; static const unsigned int MAX_SIZE = 0x02000000; -static const int VERSION = 40200; +static const int VERSION = 40300; static const char* pszSubVer = ""; static const bool VERSION_IS_BETA = true; From ace5ce05bef68722a060d6ec6e7d1fbf307d9835 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Thu, 15 Dec 2011 19:34:37 -0500 Subject: [PATCH 040/298] Bump version to 0.5.0.3 --- bitcoin-qt.pro | 2 +- doc/README | 2 +- doc/README_windows.txt | 2 +- share/setup.nsi | 6 +++--- src/serialize.h | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/bitcoin-qt.pro b/bitcoin-qt.pro index 65a31f6d682..1eddcd542b4 100644 --- a/bitcoin-qt.pro +++ b/bitcoin-qt.pro @@ -1,6 +1,6 @@ TEMPLATE = app TARGET = -VERSION = 0.5.0.2 +VERSION = 0.5.0.3 INCLUDEPATH += src src/json src/qt DEFINES += QT_GUI BOOST_THREAD_USE_LIB CONFIG += no_include_pwd diff --git a/doc/README b/doc/README index ab19734d1d3..c3ed9c4b7e3 100644 --- a/doc/README +++ b/doc/README @@ -1,4 +1,4 @@ -Bitcoin 0.5.0.2 BETA +Bitcoin 0.5.0.3 BETA Copyright (c) 2009-2011 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/doc/README_windows.txt b/doc/README_windows.txt index d54f18ec62e..8a8f82b846d 100644 --- a/doc/README_windows.txt +++ b/doc/README_windows.txt @@ -1,4 +1,4 @@ -Bitcoin 0.5.0.2 BETA +Bitcoin 0.5.0.3 BETA Copyright (c) 2009-2011 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/share/setup.nsi b/share/setup.nsi index 2674597ee1e..76efe57d27f 100644 --- a/share/setup.nsi +++ b/share/setup.nsi @@ -5,7 +5,7 @@ SetCompressor /SOLID lzma # General Symbol Definitions !define REGKEY "SOFTWARE\$(^Name)" -!define VERSION 0.5.0.2 +!define VERSION 0.5.0.3 !define COMPANY "Bitcoin project" !define URL http://www.bitcoin.org/ @@ -45,13 +45,13 @@ Var StartMenuGroup !insertmacro MUI_LANGUAGE English # Installer attributes -OutFile bitcoin-0.5.0.2-win32-setup.exe +OutFile bitcoin-0.5.0.3-win32-setup.exe InstallDir $PROGRAMFILES\Bitcoin CRCCheck on XPStyle on BrandingText " " ShowInstDetails show -VIProductVersion 0.5.0.2 +VIProductVersion 0.5.0.3 VIAddVersionKey ProductName Bitcoin VIAddVersionKey ProductVersion "${VERSION}" VIAddVersionKey CompanyName "${COMPANY}" diff --git a/src/serialize.h b/src/serialize.h index d1296ed68f0..fdfd6346e99 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -60,7 +60,7 @@ class CDataStream; class CAutoFile; static const unsigned int MAX_SIZE = 0x02000000; -static const int VERSION = 50002; +static const int VERSION = 50003; static const char* pszSubVer = ""; static const bool VERSION_IS_BETA = true; From 5fe2dbd7b6a182b90128371f8e8d679d70133d6b Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Fri, 16 Dec 2011 17:47:50 -0500 Subject: [PATCH 041/298] Update debian changelog to 0.5.0.3. --- contrib/debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/contrib/debian/changelog b/contrib/debian/changelog index 63551410364..bef58c982fc 100644 --- a/contrib/debian/changelog +++ b/contrib/debian/changelog @@ -1,3 +1,9 @@ +bitcoin (0.5.0.3-natty0) natty; urgency=low + + * New upstream release. + + -- Matt Corallo Fri, 16 Dec 2011 13:27:00 -0500 + bitcoin (0.5.0-natty0) natty; urgency=low * New upstream release. From 9ea06992789a0072c167a9a8063e867bb4c43c00 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Fri, 16 Dec 2011 13:27:52 -0500 Subject: [PATCH 042/298] Update debian changelog to 0.5.1. --- contrib/debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/contrib/debian/changelog b/contrib/debian/changelog index 63551410364..b7992f729f6 100644 --- a/contrib/debian/changelog +++ b/contrib/debian/changelog @@ -1,3 +1,9 @@ +bitcoin (0.5.1-natty0) natty; urgency=low + + * New upstream release. + + -- Matt Corallo Fri, 16 Dec 2011 13:27:00 -0500 + bitcoin (0.5.0-natty0) natty; urgency=low * New upstream release. From 7aa253d3ec746c3d4ddbd55fab55d0eff28294f8 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Fri, 16 Dec 2011 17:58:40 -0500 Subject: [PATCH 043/298] Bump version to 0.5.2 --- bitcoin-qt.pro | 2 +- contrib/debian/changelog | 6 ++++++ doc/README | 2 +- doc/README_windows.txt | 2 +- share/setup.nsi | 6 +++--- src/serialize.h | 2 +- 6 files changed, 13 insertions(+), 7 deletions(-) diff --git a/bitcoin-qt.pro b/bitcoin-qt.pro index 66b53c23677..d7ac62e90a6 100644 --- a/bitcoin-qt.pro +++ b/bitcoin-qt.pro @@ -1,6 +1,6 @@ TEMPLATE = app TARGET = -VERSION = 0.5.1 +VERSION = 0.5.2 INCLUDEPATH += src src/json src/qt DEFINES += QT_GUI BOOST_THREAD_USE_LIB CONFIG += no_include_pwd diff --git a/contrib/debian/changelog b/contrib/debian/changelog index b7992f729f6..45106418252 100644 --- a/contrib/debian/changelog +++ b/contrib/debian/changelog @@ -1,3 +1,9 @@ +bitcoin (0.5.2-natty0) natty; urgency=low + + * New upstream release. + + -- Luke Dashjr Fri, 16 Dec 2011 17:57:00 -0500 + bitcoin (0.5.1-natty0) natty; urgency=low * New upstream release. diff --git a/doc/README b/doc/README index 5e0f8ee1ed7..07785655f24 100644 --- a/doc/README +++ b/doc/README @@ -1,4 +1,4 @@ -Bitcoin 0.5.1 BETA +Bitcoin 0.5.2 BETA Copyright (c) 2009-2011 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/doc/README_windows.txt b/doc/README_windows.txt index d237615f57c..b98f878b27f 100644 --- a/doc/README_windows.txt +++ b/doc/README_windows.txt @@ -1,4 +1,4 @@ -Bitcoin 0.5.1 BETA +Bitcoin 0.5.2 BETA Copyright (c) 2009-2011 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/share/setup.nsi b/share/setup.nsi index 0c0fa048af2..abf5c566b5a 100644 --- a/share/setup.nsi +++ b/share/setup.nsi @@ -5,7 +5,7 @@ SetCompressor /SOLID lzma # General Symbol Definitions !define REGKEY "SOFTWARE\$(^Name)" -!define VERSION 0.5.1 +!define VERSION 0.5.2 !define COMPANY "Bitcoin project" !define URL http://www.bitcoin.org/ @@ -45,13 +45,13 @@ Var StartMenuGroup !insertmacro MUI_LANGUAGE English # Installer attributes -OutFile bitcoin-0.5.1-win32-setup.exe +OutFile bitcoin-0.5.2-win32-setup.exe InstallDir $PROGRAMFILES\Bitcoin CRCCheck on XPStyle on BrandingText " " ShowInstDetails show -VIProductVersion 0.5.1.0 +VIProductVersion 0.5.2.0 VIAddVersionKey ProductName Bitcoin VIAddVersionKey ProductVersion "${VERSION}" VIAddVersionKey CompanyName "${COMPANY}" diff --git a/src/serialize.h b/src/serialize.h index 78cff43d534..388e6559709 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -60,7 +60,7 @@ class CDataStream; class CAutoFile; static const unsigned int MAX_SIZE = 0x02000000; -static const int VERSION = 50100; +static const int VERSION = 50200; static const char* pszSubVer = ""; static const bool VERSION_IS_BETA = true; From 6be2c9b5b4568e38fd61298b0f64c32f78631cbd Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Fri, 16 Dec 2011 11:30:36 -0500 Subject: [PATCH 044/298] Add sipa's new dnsseed. --- src/net.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/net.cpp b/src/net.cpp index a4687731f79..4fab7a7ed6a 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1174,6 +1174,7 @@ void MapPort(bool /* unused fMapPort */) static const char *strDNSSeed[] = { "bitseed.xf2.org", "dnsseed.bluematt.me", + "seed.bitcoin.sipa.be", }; void ThreadDNSAddressSeed(void* parg) From 987f26aa1aeb2b3c546ada41ae4eab6bdee7099c Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Fri, 16 Dec 2011 18:34:47 -0500 Subject: [PATCH 045/298] Add my DNS seed domain --- src/net.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/net.cpp b/src/net.cpp index 4fab7a7ed6a..af59cee6962 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1175,6 +1175,7 @@ static const char *strDNSSeed[] = { "bitseed.xf2.org", "dnsseed.bluematt.me", "seed.bitcoin.sipa.be", + "dnsseed.bitcoin.dashjr.org", }; void ThreadDNSAddressSeed(void* parg) From 027d149352bc25f0f37363da95a0b4c723100f63 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Wed, 14 Dec 2011 01:03:55 -0500 Subject: [PATCH 046/298] Bugfix: fForRelay should be false when deciding required fee to include in blocks During the rushed transition from 0.01 BTC to 0.0005 BTC fees, we took the approach of dropping the relay and block-inclusion fee to 0.0005 BTC immediately, and only delayed adjusting the sending fee for the next release. Afterward, the relay fee was lowered to 0.0001 BTC to avoid having the same problem in the future. However, the block inclusion code was left setting fForRelay to true! This fixes that, so the lower 0.0001 BTC allowance is (as intended) only permitted for real relaying. --- src/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index af00069d663..03e133b63cd 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2776,7 +2776,7 @@ CBlock* CreateNewBlock(CReserveKey& reservekey) // Transaction fee required depends on block size bool fAllowFree = (nBlockSize + nTxSize < 4000 || CTransaction::AllowFree(dPriority)); - int64 nMinFee = tx.GetMinFee(nBlockSize, fAllowFree, true); + int64 nMinFee = tx.GetMinFee(nBlockSize, fAllowFree); // Connecting shouldn't fail due to dependency on other memory pool transactions // because we're already processing them in order of dependency From 96f1723bb1f4155357b4e33988a2b99ee674c549 Mon Sep 17 00:00:00 2001 From: Dylan Noblesmith Date: Sat, 26 Nov 2011 06:02:04 +0000 Subject: [PATCH 047/298] Implement an mlock()'d string class for storing passphrases SecureString is identical to std::string except with secure_allocator substituting for std::allocator. This makes casting between them impossible, so converting between the two at API boundaries requires calling ::c_str() for now. --- src/bitcoinrpc.cpp | 48 ++++++++++------------------------ src/crypter.cpp | 2 +- src/crypter.h | 2 +- src/qt/askpassphrasedialog.cpp | 11 ++++---- src/qt/walletmodel.cpp | 6 ++--- src/qt/walletmodel.h | 9 ++++--- src/util.h | 4 +++ src/wallet.cpp | 6 ++--- src/wallet.h | 6 ++--- 9 files changed, 40 insertions(+), 54 deletions(-) diff --git a/src/bitcoinrpc.cpp b/src/bitcoinrpc.cpp index 31ef725d793..889dd7a1b18 100644 --- a/src/bitcoinrpc.cpp +++ b/src/bitcoinrpc.cpp @@ -1451,21 +1451,16 @@ Value walletpassphrase(const Array& params, bool fHelp) throw JSONRPCError(-17, "Error: Wallet is already unlocked."); // Note that the walletpassphrase is stored in params[0] which is not mlock()ed - string strWalletPass; + SecureString strWalletPass; strWalletPass.reserve(100); - mlock(&strWalletPass[0], strWalletPass.capacity()); - strWalletPass = params[0].get_str(); + // TODO: get rid of this .c_str() by implementing SecureString::operator=(std::string) + // Alternately, find a way to make params[0] mlock()'d to begin with. + strWalletPass = params[0].get_str().c_str(); if (strWalletPass.length() > 0) { if (!pwalletMain->Unlock(strWalletPass)) - { - fill(strWalletPass.begin(), strWalletPass.end(), '\0'); - munlock(&strWalletPass[0], strWalletPass.capacity()); throw JSONRPCError(-14, "Error: The wallet passphrase entered was incorrect."); - } - fill(strWalletPass.begin(), strWalletPass.end(), '\0'); - munlock(&strWalletPass[0], strWalletPass.capacity()); } else throw runtime_error( @@ -1491,15 +1486,15 @@ Value walletpassphrasechange(const Array& params, bool fHelp) if (!pwalletMain->IsCrypted()) throw JSONRPCError(-15, "Error: running with an unencrypted wallet, but walletpassphrasechange was called."); - string strOldWalletPass; + // TODO: get rid of these .c_str() calls by implementing SecureString::operator=(std::string) + // Alternately, find a way to make params[0] mlock()'d to begin with. + SecureString strOldWalletPass; strOldWalletPass.reserve(100); - mlock(&strOldWalletPass[0], strOldWalletPass.capacity()); - strOldWalletPass = params[0].get_str(); + strOldWalletPass = params[0].get_str().c_str(); - string strNewWalletPass; + SecureString strNewWalletPass; strNewWalletPass.reserve(100); - mlock(&strNewWalletPass[0], strNewWalletPass.capacity()); - strNewWalletPass = params[1].get_str(); + strNewWalletPass = params[1].get_str().c_str(); if (strOldWalletPass.length() < 1 || strNewWalletPass.length() < 1) throw runtime_error( @@ -1507,17 +1502,7 @@ Value walletpassphrasechange(const Array& params, bool fHelp) "Changes the wallet passphrase from to ."); if (!pwalletMain->ChangeWalletPassphrase(strOldWalletPass, strNewWalletPass)) - { - fill(strOldWalletPass.begin(), strOldWalletPass.end(), '\0'); - fill(strNewWalletPass.begin(), strNewWalletPass.end(), '\0'); - munlock(&strOldWalletPass[0], strOldWalletPass.capacity()); - munlock(&strNewWalletPass[0], strNewWalletPass.capacity()); throw JSONRPCError(-14, "Error: The wallet passphrase entered was incorrect."); - } - fill(strNewWalletPass.begin(), strNewWalletPass.end(), '\0'); - fill(strOldWalletPass.begin(), strOldWalletPass.end(), '\0'); - munlock(&strOldWalletPass[0], strOldWalletPass.capacity()); - munlock(&strNewWalletPass[0], strNewWalletPass.capacity()); return Value::null; } @@ -1562,10 +1547,11 @@ Value encryptwallet(const Array& params, bool fHelp) throw runtime_error("Not Yet Implemented: use GUI to encrypt wallet, not RPC command"); #endif - string strWalletPass; + // TODO: get rid of this .c_str() by implementing SecureString::operator=(std::string) + // Alternately, find a way to make params[0] mlock()'d to begin with. + SecureString strWalletPass; strWalletPass.reserve(100); - mlock(&strWalletPass[0], strWalletPass.capacity()); - strWalletPass = params[0].get_str(); + strWalletPass = params[0].get_str().c_str(); if (strWalletPass.length() < 1) throw runtime_error( @@ -1573,13 +1559,7 @@ Value encryptwallet(const Array& params, bool fHelp) "Encrypts the wallet with ."); if (!pwalletMain->EncryptWallet(strWalletPass)) - { - fill(strWalletPass.begin(), strWalletPass.end(), '\0'); - munlock(&strWalletPass[0], strWalletPass.capacity()); throw JSONRPCError(-16, "Error: Failed to encrypt the wallet."); - } - fill(strWalletPass.begin(), strWalletPass.end(), '\0'); - munlock(&strWalletPass[0], strWalletPass.capacity()); // BDB seems to have a bad habit of writing old data into // slack space in .dat files; that is bad if the old data is diff --git a/src/crypter.cpp b/src/crypter.cpp index bee7a3624b8..7f53e22f1e3 100644 --- a/src/crypter.cpp +++ b/src/crypter.cpp @@ -15,7 +15,7 @@ #include "main.h" #include "util.h" -bool CCrypter::SetKeyFromPassphrase(const std::string& strKeyData, const std::vector& chSalt, const unsigned int nRounds, const unsigned int nDerivationMethod) +bool CCrypter::SetKeyFromPassphrase(const SecureString& strKeyData, const std::vector& chSalt, const unsigned int nRounds, const unsigned int nDerivationMethod) { if (nRounds < 1 || chSalt.size() != WALLET_CRYPTO_SALT_SIZE) return false; diff --git a/src/crypter.h b/src/crypter.h index e8ca30a8cc1..d7f8a39d839 100644 --- a/src/crypter.h +++ b/src/crypter.h @@ -65,7 +65,7 @@ private: bool fKeySet; public: - bool SetKeyFromPassphrase(const std::string &strKeyData, const std::vector& chSalt, const unsigned int nRounds, const unsigned int nDerivationMethod); + bool SetKeyFromPassphrase(const SecureString &strKeyData, const std::vector& chSalt, const unsigned int nRounds, const unsigned int nDerivationMethod); bool Encrypt(const CKeyingMaterial& vchPlaintext, std::vector &vchCiphertext); bool Decrypt(const std::vector& vchCiphertext, CKeyingMaterial& vchPlaintext); bool SetKey(const CKeyingMaterial& chNewKey, const std::vector& chNewIV); diff --git a/src/qt/askpassphrasedialog.cpp b/src/qt/askpassphrasedialog.cpp index b52acf4545e..4ee67e7c87b 100644 --- a/src/qt/askpassphrasedialog.cpp +++ b/src/qt/askpassphrasedialog.cpp @@ -70,16 +70,17 @@ void AskPassphraseDialog::setModel(WalletModel *model) void AskPassphraseDialog::accept() { - std::string oldpass, newpass1, newpass2; + SecureString oldpass, newpass1, newpass2; if(!model) return; - // TODO: mlock memory / munlock on return so they will not be swapped out, really need "mlockedstring" wrapper class to do this safely oldpass.reserve(MAX_PASSPHRASE_SIZE); newpass1.reserve(MAX_PASSPHRASE_SIZE); newpass2.reserve(MAX_PASSPHRASE_SIZE); - oldpass.assign(ui->passEdit1->text().toStdString()); - newpass1.assign(ui->passEdit2->text().toStdString()); - newpass2.assign(ui->passEdit3->text().toStdString()); + // TODO: get rid of this .c_str() by implementing SecureString::operator=(std::string) + // Alternately, find a way to make this input mlock()'d to begin with. + oldpass.assign(ui->passEdit1->text().toStdString().c_str()); + newpass1.assign(ui->passEdit2->text().toStdString().c_str()); + newpass2.assign(ui->passEdit3->text().toStdString().c_str()); switch(mode) { diff --git a/src/qt/walletmodel.cpp b/src/qt/walletmodel.cpp index 2f989661f09..f028f10f6c6 100644 --- a/src/qt/walletmodel.cpp +++ b/src/qt/walletmodel.cpp @@ -200,7 +200,7 @@ WalletModel::EncryptionStatus WalletModel::getEncryptionStatus() const } } -bool WalletModel::setWalletEncrypted(bool encrypted, const std::string &passphrase) +bool WalletModel::setWalletEncrypted(bool encrypted, const SecureString &passphrase) { if(encrypted) { @@ -214,7 +214,7 @@ bool WalletModel::setWalletEncrypted(bool encrypted, const std::string &passphra } } -bool WalletModel::setWalletLocked(bool locked, const std::string &passPhrase) +bool WalletModel::setWalletLocked(bool locked, const SecureString &passPhrase) { if(locked) { @@ -228,7 +228,7 @@ bool WalletModel::setWalletLocked(bool locked, const std::string &passPhrase) } } -bool WalletModel::changePassphrase(const std::string &oldPass, const std::string &newPass) +bool WalletModel::changePassphrase(const SecureString &oldPass, const SecureString &newPass) { bool retval; CRITICAL_BLOCK(wallet->cs_wallet) diff --git a/src/qt/walletmodel.h b/src/qt/walletmodel.h index b7b6973b3bd..055ba184b0c 100644 --- a/src/qt/walletmodel.h +++ b/src/qt/walletmodel.h @@ -2,7 +2,8 @@ #define WALLETMODEL_H #include -#include + +#include "util.h" class OptionsModel; class AddressTableModel; @@ -72,10 +73,10 @@ public: SendCoinsReturn sendCoins(const QList &recipients); // Wallet encryption - bool setWalletEncrypted(bool encrypted, const std::string &passphrase); + bool setWalletEncrypted(bool encrypted, const SecureString &passphrase); // Passphrase only needed when unlocking - bool setWalletLocked(bool locked, const std::string &passPhrase=std::string()); - bool changePassphrase(const std::string &oldPass, const std::string &newPass); + bool setWalletLocked(bool locked, const SecureString &passPhrase=SecureString()); + bool changePassphrase(const SecureString &oldPass, const SecureString &newPass); // RAI object for unlocking wallet, returned by requestUnlock() class UnlockContext diff --git a/src/util.h b/src/util.h index 178923727a8..bcb9027148d 100644 --- a/src/util.h +++ b/src/util.h @@ -286,6 +286,10 @@ public: +// This is exactly like std::string, but with a custom allocator. +// (secure_allocator<> is defined in serialize.h) +typedef std::basic_string, secure_allocator > SecureString; + diff --git a/src/wallet.cpp b/src/wallet.cpp index af80cc16d55..28babdb3e2c 100644 --- a/src/wallet.cpp +++ b/src/wallet.cpp @@ -42,7 +42,7 @@ bool CWallet::AddCryptedKey(const vector &vchPubKey, const vector return false; } -bool CWallet::Unlock(const string& strWalletPassphrase) +bool CWallet::Unlock(const SecureString& strWalletPassphrase) { if (!IsLocked()) return false; @@ -63,7 +63,7 @@ bool CWallet::Unlock(const string& strWalletPassphrase) return false; } -bool CWallet::ChangeWalletPassphrase(const string& strOldWalletPassphrase, const string& strNewWalletPassphrase) +bool CWallet::ChangeWalletPassphrase(const SecureString& strOldWalletPassphrase, const SecureString& strNewWalletPassphrase) { bool fWasLocked = IsLocked(); @@ -122,7 +122,7 @@ public: ) }; -bool CWallet::EncryptWallet(const string& strWalletPassphrase) +bool CWallet::EncryptWallet(const SecureString& strWalletPassphrase) { if (IsCrypted()) return false; diff --git a/src/wallet.h b/src/wallet.h index 19de803390a..ca7cf673179 100644 --- a/src/wallet.h +++ b/src/wallet.h @@ -70,9 +70,9 @@ public: // Adds an encrypted key to the store, without saving it to disk (used by LoadWallet) bool LoadCryptedKey(const std::vector &vchPubKey, const std::vector &vchCryptedSecret) { return CCryptoKeyStore::AddCryptedKey(vchPubKey, vchCryptedSecret); } - bool Unlock(const std::string& strWalletPassphrase); - bool ChangeWalletPassphrase(const std::string& strOldWalletPassphrase, const std::string& strNewWalletPassphrase); - bool EncryptWallet(const std::string& strWalletPassphrase); + bool Unlock(const SecureString& strWalletPassphrase); + bool ChangeWalletPassphrase(const SecureString& strOldWalletPassphrase, const SecureString& strNewWalletPassphrase); + bool EncryptWallet(const SecureString& strWalletPassphrase); bool AddToWallet(const CWalletTx& wtxIn); bool AddToWalletIfInvolvingMe(const CTransaction& tx, const CBlock* pblock, bool fUpdate = false); From 863238316144b0ae8d0208ed60d86d932475cfaa Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Fri, 23 Dec 2011 02:24:46 -0800 Subject: [PATCH 048/298] Fix #722. --- contrib/gitian-descriptors/gitian.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/gitian-descriptors/gitian.yml b/contrib/gitian-descriptors/gitian.yml index 47164b0afd4..11ee4dc5804 100644 --- a/contrib/gitian-descriptors/gitian.yml +++ b/contrib/gitian-descriptors/gitian.yml @@ -39,7 +39,7 @@ script: | cp $OUTDIR/src/COPYING $OUTDIR cd src sed 's/$(DEBUGFLAGS)//' -i makefile.unix - make -f makefile.unix STATIC=1 DEFS="-I$INSTDIR/include -L$INSTDIR/lib" $MAKEOPTS bitcoind USE_UPNP=0 USE_SSL=1 + make -f makefile.unix STATIC=1 OPENSSL_INCLUDE_PATH="$INSTDIR/include" OPENSSL_LIB_PATH="$INSTDIR/lib" $MAKEOPTS bitcoind USE_UPNP=0 USE_SSL=1 mkdir -p $OUTDIR/bin/$GBUILD_BITS install -s bitcoind $OUTDIR/bin/$GBUILD_BITS cd .. From 3b8051864b98eb5a9df6327f314a45af9205a09c Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Sun, 25 Dec 2011 09:26:12 -0500 Subject: [PATCH 049/298] Be more conservative: check all transactions in blocks after last checkpoint. --- src/main.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index f21af904731..1f23844573c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -30,7 +30,6 @@ map mapNextTx; map mapBlockIndex; uint256 hashGenesisBlock("0x000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f"); static CBigNum bnProofOfWorkLimit(~uint256(0) >> 32); -const int nInitialBlockThreshold = 120; // Regard blocks up until N-threshold as "initial download" CBlockIndex* pindexGenesisBlock = NULL; int nBestHeight = -1; CBigNum bnBestChainWork = 0; @@ -750,7 +749,7 @@ int GetNumBlocksOfPeers() bool IsInitialBlockDownload() { - if (pindexBest == NULL || nBestHeight < (Checkpoints::GetTotalBlocksEstimate()-nInitialBlockThreshold)) + if (pindexBest == NULL || nBestHeight < Checkpoints::GetTotalBlocksEstimate()) return true; static int64 nLastUpdate; static CBlockIndex* pindexLastBest; @@ -881,10 +880,10 @@ bool CTransaction::ConnectInputs(CTxDB& txdb, map& mapTestPoo if (pindex->nBlockPos == txindex.pos.nBlockPos && pindex->nFile == txindex.pos.nFile) return error("ConnectInputs() : tried to spend coinbase at depth %d", pindexBlock->nHeight - pindex->nHeight); - // Skip ECDSA signature verification when connecting blocks (fBlock=true) during initial download - // (before the last blockchain checkpoint). This is safe because block merkle hashes are + // Skip ECDSA signature verification when connecting blocks (fBlock=true) + // before the last blockchain checkpoint. This is safe because block merkle hashes are // still computed and checked, and any change will be caught at the next checkpoint. - if (!(fBlock && IsInitialBlockDownload())) + if (!(fBlock && (nBestHeight < Checkpoints::GetTotalBlocksEstimate()))) // Verify signature if (!VerifySignature(txPrev, *this, i)) return DoS(100,error("ConnectInputs() : %s VerifySignature failed", GetHash().ToString().substr(0,10).c_str())); From b52b6f2e3801fe14e09d646415cb798c565063d5 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Tue, 3 Jan 2012 01:28:15 +0100 Subject: [PATCH 050/298] Fix some address-handling deadlocks Made three critical blocks for cs_mapAddresses smaller, and moved writing to the database out of them. This should also improve the concurrency of the code. --- src/net.cpp | 61 +++++++++++++++++++++++++++++------------------------ 1 file changed, 34 insertions(+), 27 deletions(-) diff --git a/src/net.cpp b/src/net.cpp index af59cee6962..0f3b7cc8633 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -496,21 +496,25 @@ bool AddAddress(CAddress addr, int64 nTimePenalty, CAddrDB *pAddrDB) void AddressCurrentlyConnected(const CAddress& addr) { + CAddress *paddrFound = NULL; + CRITICAL_BLOCK(cs_mapAddresses) { // Only if it's been published already map, CAddress>::iterator it = mapAddresses.find(addr.GetKey()); if (it != mapAddresses.end()) + paddrFound = &(*it).second; + } + + if (paddrFound) + { + int64 nUpdateInterval = 20 * 60; + if (paddrFound->nTime < GetAdjustedTime() - nUpdateInterval) { - CAddress& addrFound = (*it).second; - int64 nUpdateInterval = 20 * 60; - if (addrFound.nTime < GetAdjustedTime() - nUpdateInterval) - { - // Periodically update most recently seen time - addrFound.nTime = GetAdjustedTime(); - CAddrDB addrdb; - addrdb.WriteAddress(addrFound); - } + // Periodically update most recently seen time + paddrFound->nTime = GetAdjustedTime(); + CAddrDB addrdb; + addrdb.WriteAddress(*paddrFound); } } } @@ -1205,13 +1209,13 @@ void ThreadDNSAddressSeed2(void* parg) if (!fTestNet) { printf("Loading addresses from DNS seeds (could take a while)\n"); - CAddrDB addrDB; - addrDB.TxnBegin(); for (int seed_idx = 0; seed_idx < ARRAYLEN(strDNSSeed); seed_idx++) { vector vaddr; if (Lookup(strDNSSeed[seed_idx], vaddr, NODE_NETWORK, -1, true)) { + CAddrDB addrDB; + addrDB.TxnBegin(); BOOST_FOREACH (CAddress& addr, vaddr) { if (addr.GetByte(3) != 127) @@ -1221,10 +1225,9 @@ void ThreadDNSAddressSeed2(void* parg) found++; } } + addrDB.TxnCommit(); // Save addresses (it's ok if this fails) } } - - addrDB.TxnCommit(); // Save addresses (it's ok if this fails) } printf("%d addresses found from DNS seeds\n", found); @@ -1396,27 +1399,31 @@ void ThreadOpenConnections2(void* parg) if (fShutdown) return; + bool fAddSeeds = false; + CRITICAL_BLOCK(cs_mapAddresses) { // Add seed nodes if IRC isn't working bool fTOR = (fUseProxy && addrProxy.port == htons(9050)); if (mapAddresses.empty() && (GetTime() - nStart > 60 || fTOR) && !fTestNet) - { - for (int i = 0; i < ARRAYLEN(pnSeed); i++) - { - // It'll only connect to one or two seed nodes because once it connects, - // it'll get a pile of addresses with newer timestamps. - // Seed nodes are given a random 'last seen time' of between one and two - // weeks ago. - const int64 nOneWeek = 7*24*60*60; - CAddress addr; - addr.ip = pnSeed[i]; - addr.nTime = GetTime()-GetRand(nOneWeek)-nOneWeek; - AddAddress(addr); - } - } + fAddSeeds = true; } + if (fAddSeeds) + { + for (int i = 0; i < ARRAYLEN(pnSeed); i++) + { + // It'll only connect to one or two seed nodes because once it connects, + // it'll get a pile of addresses with newer timestamps. + // Seed nodes are given a random 'last seen time' of between one and two + // weeks ago. + const int64 nOneWeek = 7*24*60*60; + CAddress addr; + addr.ip = pnSeed[i]; + addr.nTime = GetTime()-GetRand(nOneWeek)-nOneWeek; + AddAddress(addr); + } + } // // Choose an address to connect to based on most recently seen From 84393f15b60ff5392da69b7cc208ffb5e8d209f0 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Tue, 3 Jan 2012 10:14:22 -0500 Subject: [PATCH 051/298] Fix issue #659, and cleanup wallet/command-line argument handling a bit Conflicts: src/init.cpp src/util.cpp --- src/init.cpp | 67 ++++++++++++++++++++++++++++++++-------------------- src/irc.cpp | 17 ++++--------- src/net.cpp | 2 +- src/util.cpp | 17 +++++++++++++ src/util.h | 21 ++++++++++++++-- 5 files changed, 83 insertions(+), 41 deletions(-) diff --git a/src/init.cpp b/src/init.cpp index 75ecfc574e0..292424fb1dc 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -180,6 +180,7 @@ bool AppInit2(int argc, char* argv[]) " -maxconnections=\t " + _("Maintain at most connections to peers (default: 125)\n") + " -addnode= \t " + _("Add a node to connect to\n") + " -connect= \t\t " + _("Connect only to the specified node\n") + + " -noirc \t " + _("Don't find peers using internet relay chat\n") + " -nolisten \t " + _("Don't accept connections from outside\n") + " -nodnsseed \t " + _("Don't bootstrap list of peers using DNS\n") + " -maxreceivebuffer=\t " + _("Maximum per-connection receive buffer, *1000 bytes (default: 10000)\n") + @@ -237,7 +238,6 @@ bool AppInit2(int argc, char* argv[]) } fDebug = GetBoolArg("-debug"); - fAllowDNS = GetBoolArg("-dns"); #ifndef __WXMSW__ fDaemon = GetBoolArg("-daemon"); @@ -257,10 +257,6 @@ bool AppInit2(int argc, char* argv[]) fPrintToConsole = GetBoolArg("-printtoconsole"); fPrintToDebugger = GetBoolArg("-printtodebugger"); - - fTestNet = GetBoolArg("-testnet"); - bool fTOR = (fUseProxy && addrProxy.port == htons(9050)); - fNoListen = GetBoolArg("-nolisten") || fTOR; fLogTimestamps = GetBoolArg("-logtimestamps"); for (int i = 1; i < argc; i++) @@ -365,16 +361,7 @@ bool AppInit2(int argc, char* argv[]) return false; } - // Bind to the port early so we can tell if another instance is already running. string strErrors; - if (!fNoListen) - { - if (!BindListenPort(strErrors)) - { - wxMessageBox(strErrors, "Bitcoin"); - return false; - } - } // // Load data files @@ -456,6 +443,10 @@ bool AppInit2(int argc, char* argv[]) // Add wallet transactions that aren't already in a block to mapTransactions pwalletMain->ReacceptWalletTransactions(); + // Note: Bitcoin-QT stores several settings in the wallet, so we want + // to load the wallet BEFORE parsing command-line arguments, so + // the command-line/bitcoin.conf settings override GUI setting. + // // Parameters // @@ -508,6 +499,43 @@ bool AppInit2(int argc, char* argv[]) } } + fTestNet = GetBoolArg("-testnet"); + bool fTor = (fUseProxy && addrProxy.port == htons(9050)); + if (fTor) + { + // Use SoftSetArg here so user can override any of these if they wish. + // Note: the GetBoolArg() calls for all of these must happen later. + SoftSetArg("-nolisten", true); + SoftSetArg("-noirc", true); + SoftSetArg("-nodnsseed", true); + SoftSetArg("-noupnp", true); + SoftSetArg("-upnp", false); + SoftSetArg("-dns", false); + } + + fAllowDNS = GetBoolArg("-dns"); + fNoListen = GetBoolArg("-nolisten"); + + if (fHaveUPnP) + { +#if USE_UPNP + if (GetBoolArg("-noupnp")) + fUseUPnP = false; +#else + if (GetBoolArg("-upnp")) + fUseUPnP = true; +#endif + } + + if (!fNoListen) + { + if (!BindListenPort(strErrors)) + { + wxMessageBox(strErrors, "Bitcoin"); + return false; + } + } + if (mapArgs.count("-addnode")) { BOOST_FOREACH(string strAddr, mapMultiArgs["-addnode"]) @@ -530,17 +558,6 @@ bool AppInit2(int argc, char* argv[]) wxMessageBox(_("Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction."), "Bitcoin", wxOK | wxICON_EXCLAMATION); } - if (fHaveUPnP) - { -#if USE_UPNP - if (GetBoolArg("-noupnp")) - fUseUPnP = false; -#else - if (GetBoolArg("-upnp")) - fUseUPnP = true; -#endif - } - // // Create the main window and start the node // diff --git a/src/irc.cpp b/src/irc.cpp index 5278488dcd9..fe96a90a1cf 100644 --- a/src/irc.cpp +++ b/src/irc.cpp @@ -264,19 +264,14 @@ void ThreadIRCSeed2(void* parg) int nErrorWait = 10; int nRetryWait = 10; bool fNameInUse = false; - bool fTOR = (fUseProxy && addrProxy.port == htons(9050)); while (!fShutdown) { - //CAddress addrConnect("216.155.130.130:6667"); // chat.freenode.net CAddress addrConnect("92.243.23.21", 6667); // irc.lfnet.org - if (!fTOR) - { - //struct hostent* phostent = gethostbyname("chat.freenode.net"); - CAddress addrIRC("irc.lfnet.org", 6667, true); - if (addrIRC.IsValid()) - addrConnect = addrIRC; - } + + CAddress addrIRC("irc.lfnet.org", 6667, true); + if (addrIRC.IsValid()) + addrConnect = addrIRC; SOCKET hSocket; if (!ConnectSocket(addrConnect, hSocket)) @@ -406,10 +401,6 @@ void ThreadIRCSeed2(void* parg) closesocket(hSocket); hSocket = INVALID_SOCKET; - // IRC usually blocks TOR, so only try once - if (fTOR) - return; - if (GetTime() - nStart > 20 * 60) { nErrorWait /= 3; diff --git a/src/net.cpp b/src/net.cpp index 0f3b7cc8633..c7475b118cf 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1405,7 +1405,7 @@ void ThreadOpenConnections2(void* parg) { // Add seed nodes if IRC isn't working bool fTOR = (fUseProxy && addrProxy.port == htons(9050)); - if (mapAddresses.empty() && (GetTime() - nStart > 60 || fTOR) && !fTestNet) + if (mapAddresses.empty() && (GetTime() - nStart > 60 || fUseProxy) && !fTestNet) fAddSeeds = true; } diff --git a/src/util.cpp b/src/util.cpp index d6a113095da..a3f1c9507d9 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -472,6 +472,23 @@ void ParseParameters(int argc, char* argv[]) } } +bool SoftSetArg(const std::string& strArg, const std::string& strValue) +{ + if (mapArgs.count(strArg)) + return false; + mapArgs[strArg] = strValue; + return true; +} + +bool SoftSetArg(const std::string& strArg, bool fValue) +{ + if (fValue) + return SoftSetArg(strArg, std::string("1")); + else + return SoftSetArg(strArg, std::string("0")); +} + + const char* wxGetTranslation(const char* pszEnglish) { diff --git a/src/util.h b/src/util.h index 6ecc92b2b6d..9f9001e06eb 100644 --- a/src/util.h +++ b/src/util.h @@ -442,7 +442,7 @@ inline int64 GetArg(const std::string& strArg, int64 nDefault) return nDefault; } -inline bool GetBoolArg(const std::string& strArg) +inline bool GetBoolArg(const std::string& strArg, bool fDefault=false) { if (mapArgs.count(strArg)) { @@ -450,9 +450,26 @@ inline bool GetBoolArg(const std::string& strArg) return true; return (atoi(mapArgs[strArg]) != 0); } - return false; + return fDefault; } +/** + * Set an argument if it doesn't already have a value + * + * @param strArg Argument to set (e.g. "-foo") + * @param strValue Value (e.g. "1") + * @return true if argument gets set, false if it already had a value + */ +bool SoftSetArg(const std::string& strArg, const std::string& strValue); + +/** + * Set a boolean argument if it doesn't already have a value + * + * @param strArg Argument to set (e.g. "-foo") + * @param fValue Value (e.g. false) + * @return true if argument gets set, false if it already had a value + */ +bool SoftSetArg(const std::string& strArg, bool fValue); From cc6bd19660461091903568803014b39d571fd458 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Tue, 3 Jan 2012 11:17:04 -0500 Subject: [PATCH 052/298] I broke -testnet with my TOR option-parsing fixes. --- src/init.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/init.cpp b/src/init.cpp index 292424fb1dc..d1332e06100 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -237,6 +237,7 @@ bool AppInit2(int argc, char* argv[]) return false; } + fTestNet = GetBoolArg("-testnet"); fDebug = GetBoolArg("-debug"); #ifndef __WXMSW__ @@ -499,7 +500,6 @@ bool AppInit2(int argc, char* argv[]) } } - fTestNet = GetBoolArg("-testnet"); bool fTor = (fUseProxy && addrProxy.port == htons(9050)); if (fTor) { From fb88f1cc97d52d8cd5bc49169a1bcd4df735fc52 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Tue, 3 Jan 2012 12:21:04 -0500 Subject: [PATCH 053/298] Fix typo (#734) Conflicts: src/qt/locale/bitcoin_hu.ts src/qt/locale/bitcoin_it.ts src/qt/locale/bitcoin_pt_BR.ts src/qt/locale/bitcoin_uk.ts src/qt/locale/bitcoin_zh_CN.ts --- src/qt/forms/sendcoinsentry.ui | 2 +- src/qt/locale/bitcoin_da.ts | 2 +- src/qt/locale/bitcoin_de.ts | 2 +- src/qt/locale/bitcoin_en.ts | 2 +- src/qt/locale/bitcoin_es.ts | 2 +- src/qt/locale/bitcoin_es_CL.ts | 2 +- src/qt/locale/bitcoin_nb.ts | 2 +- src/qt/locale/bitcoin_nl.ts | 2 +- src/qt/locale/bitcoin_ru.ts | 2 +- src/qt/locale/bitcoin_zh_TW.ts | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/qt/forms/sendcoinsentry.ui b/src/qt/forms/sendcoinsentry.ui index 0297d17f157..22a3f8fdc61 100644 --- a/src/qt/forms/sendcoinsentry.ui +++ b/src/qt/forms/sendcoinsentry.ui @@ -100,7 +100,7 @@ - Choose adress from address book + Choose address from address book diff --git a/src/qt/locale/bitcoin_da.ts b/src/qt/locale/bitcoin_da.ts index 74928d32c52..b6c148f05a3 100644 --- a/src/qt/locale/bitcoin_da.ts +++ b/src/qt/locale/bitcoin_da.ts @@ -917,7 +917,7 @@ p, li { white-space: pre-wrap; } - Choose adress from address book + Choose address from address book Vælg adresse fra adressebog diff --git a/src/qt/locale/bitcoin_de.ts b/src/qt/locale/bitcoin_de.ts index f7b134a75d8..27db47528cf 100644 --- a/src/qt/locale/bitcoin_de.ts +++ b/src/qt/locale/bitcoin_de.ts @@ -916,7 +916,7 @@ p, li { white-space: pre-wrap; } - Choose adress from address book + Choose address from address book Adresse aus dem Adressbuch auswählen diff --git a/src/qt/locale/bitcoin_en.ts b/src/qt/locale/bitcoin_en.ts index df964c91e6d..0d57d9b1544 100644 --- a/src/qt/locale/bitcoin_en.ts +++ b/src/qt/locale/bitcoin_en.ts @@ -919,7 +919,7 @@ p, li { white-space: pre-wrap; } - Choose adress from address book + Choose address from address book diff --git a/src/qt/locale/bitcoin_es.ts b/src/qt/locale/bitcoin_es.ts index 49e0f0a2c7f..8c6966bfad6 100644 --- a/src/qt/locale/bitcoin_es.ts +++ b/src/qt/locale/bitcoin_es.ts @@ -936,7 +936,7 @@ p, li { white-space: pre-wrap; } - Choose adress from address book + Choose address from address book Elije dirección de la guia diff --git a/src/qt/locale/bitcoin_es_CL.ts b/src/qt/locale/bitcoin_es_CL.ts index bb9d299790f..107b90bb556 100644 --- a/src/qt/locale/bitcoin_es_CL.ts +++ b/src/qt/locale/bitcoin_es_CL.ts @@ -936,7 +936,7 @@ p, li { white-space: pre-wrap; } - Choose adress from address book + Choose address from address book Elije dirección de la guia diff --git a/src/qt/locale/bitcoin_nb.ts b/src/qt/locale/bitcoin_nb.ts index 018bc62910c..ef09e6baf7d 100644 --- a/src/qt/locale/bitcoin_nb.ts +++ b/src/qt/locale/bitcoin_nb.ts @@ -917,7 +917,7 @@ p, li { white-space: pre-wrap; } - Choose adress from address book + Choose address from address book Velg adresse fra adresseboken diff --git a/src/qt/locale/bitcoin_nl.ts b/src/qt/locale/bitcoin_nl.ts index d26e016b8b7..2b36237d2e5 100644 --- a/src/qt/locale/bitcoin_nl.ts +++ b/src/qt/locale/bitcoin_nl.ts @@ -918,7 +918,7 @@ p, li { white-space: pre-wrap; } - Choose adress from address book + Choose address from address book Kies adres uit adresboek diff --git a/src/qt/locale/bitcoin_ru.ts b/src/qt/locale/bitcoin_ru.ts index 804781b01ab..8bce04ed973 100644 --- a/src/qt/locale/bitcoin_ru.ts +++ b/src/qt/locale/bitcoin_ru.ts @@ -912,7 +912,7 @@ p, li { white-space: pre-wrap; } - Choose adress from address book + Choose address from address book Выбрать адрес из адресной книги diff --git a/src/qt/locale/bitcoin_zh_TW.ts b/src/qt/locale/bitcoin_zh_TW.ts index 48b5e599ba9..b0c4bd12d8a 100644 --- a/src/qt/locale/bitcoin_zh_TW.ts +++ b/src/qt/locale/bitcoin_zh_TW.ts @@ -916,7 +916,7 @@ p, li { white-space: pre-wrap; } - Choose adress from address book + Choose address from address book 從位址簿中選一個位址 From 20e3f2aefc6071af1d4e0754053f2fb88061ee9a Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Tue, 3 Jan 2012 11:55:58 +0100 Subject: [PATCH 054/298] Fix typo (#734) --- src/qt/forms/sendcoinsentry.ui | 2 +- src/qt/locale/bitcoin_da.ts | 2 +- src/qt/locale/bitcoin_de.ts | 2 +- src/qt/locale/bitcoin_en.ts | 2 +- src/qt/locale/bitcoin_es.ts | 2 +- src/qt/locale/bitcoin_es_CL.ts | 2 +- src/qt/locale/bitcoin_hu.ts | 2 +- src/qt/locale/bitcoin_it.ts | 2 +- src/qt/locale/bitcoin_nb.ts | 2 +- src/qt/locale/bitcoin_nl.ts | 2 +- src/qt/locale/bitcoin_pt_BR.ts | 4 ++-- src/qt/locale/bitcoin_ru.ts | 2 +- src/qt/locale/bitcoin_uk.ts | 2 +- src/qt/locale/bitcoin_zh_CN.ts | 2 +- src/qt/locale/bitcoin_zh_TW.ts | 2 +- 15 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/qt/forms/sendcoinsentry.ui b/src/qt/forms/sendcoinsentry.ui index 0297d17f157..22a3f8fdc61 100644 --- a/src/qt/forms/sendcoinsentry.ui +++ b/src/qt/forms/sendcoinsentry.ui @@ -100,7 +100,7 @@ - Choose adress from address book + Choose address from address book diff --git a/src/qt/locale/bitcoin_da.ts b/src/qt/locale/bitcoin_da.ts index 19dde6a5d75..2b6d6057670 100644 --- a/src/qt/locale/bitcoin_da.ts +++ b/src/qt/locale/bitcoin_da.ts @@ -917,7 +917,7 @@ p, li { white-space: pre-wrap; } - Choose adress from address book + Choose address from address book Vælg adresse fra adressebog diff --git a/src/qt/locale/bitcoin_de.ts b/src/qt/locale/bitcoin_de.ts index 394565e9985..1aba0d58dfa 100644 --- a/src/qt/locale/bitcoin_de.ts +++ b/src/qt/locale/bitcoin_de.ts @@ -916,7 +916,7 @@ p, li { white-space: pre-wrap; } - Choose adress from address book + Choose address from address book Adresse aus dem Adressbuch auswählen diff --git a/src/qt/locale/bitcoin_en.ts b/src/qt/locale/bitcoin_en.ts index df964c91e6d..0d57d9b1544 100644 --- a/src/qt/locale/bitcoin_en.ts +++ b/src/qt/locale/bitcoin_en.ts @@ -919,7 +919,7 @@ p, li { white-space: pre-wrap; } - Choose adress from address book + Choose address from address book diff --git a/src/qt/locale/bitcoin_es.ts b/src/qt/locale/bitcoin_es.ts index 4c1fc1aaf6e..df62780c4f7 100644 --- a/src/qt/locale/bitcoin_es.ts +++ b/src/qt/locale/bitcoin_es.ts @@ -919,7 +919,7 @@ p, li { white-space: pre-wrap; } - Choose adress from address book + Choose address from address book Elije dirección de la guia diff --git a/src/qt/locale/bitcoin_es_CL.ts b/src/qt/locale/bitcoin_es_CL.ts index c9e18a0b567..d7e110cb13b 100644 --- a/src/qt/locale/bitcoin_es_CL.ts +++ b/src/qt/locale/bitcoin_es_CL.ts @@ -919,7 +919,7 @@ p, li { white-space: pre-wrap; } - Choose adress from address book + Choose address from address book Elije dirección de la guia diff --git a/src/qt/locale/bitcoin_hu.ts b/src/qt/locale/bitcoin_hu.ts index 0c460022ffa..25a0a24a18c 100644 --- a/src/qt/locale/bitcoin_hu.ts +++ b/src/qt/locale/bitcoin_hu.ts @@ -917,7 +917,7 @@ p, li { white-space: pre-wrap; } - Choose adress from address book + Choose address from address book Válassz egy címet a címjegyzékből diff --git a/src/qt/locale/bitcoin_it.ts b/src/qt/locale/bitcoin_it.ts index c9aa980a4df..95d76005fdd 100644 --- a/src/qt/locale/bitcoin_it.ts +++ b/src/qt/locale/bitcoin_it.ts @@ -918,7 +918,7 @@ p, li { white-space: pre-wrap; }⏎ - Choose adress from address book + Choose address from address book Scegli l'indirizzo dalla rubrica diff --git a/src/qt/locale/bitcoin_nb.ts b/src/qt/locale/bitcoin_nb.ts index 6a3a4107a79..f43ba2fd394 100644 --- a/src/qt/locale/bitcoin_nb.ts +++ b/src/qt/locale/bitcoin_nb.ts @@ -917,7 +917,7 @@ p, li { white-space: pre-wrap; } - Choose adress from address book + Choose address from address book Velg adresse fra adresseboken diff --git a/src/qt/locale/bitcoin_nl.ts b/src/qt/locale/bitcoin_nl.ts index 0651775e0b5..91b39ce9989 100644 --- a/src/qt/locale/bitcoin_nl.ts +++ b/src/qt/locale/bitcoin_nl.ts @@ -918,7 +918,7 @@ p, li { white-space: pre-wrap; } - Choose adress from address book + Choose address from address book Kies adres uit adresboek diff --git a/src/qt/locale/bitcoin_pt_BR.ts b/src/qt/locale/bitcoin_pt_BR.ts index eb6c18c9e23..a9555c3dc47 100644 --- a/src/qt/locale/bitcoin_pt_BR.ts +++ b/src/qt/locale/bitcoin_pt_BR.ts @@ -910,8 +910,8 @@ p, li { white-space: pre-wrap; } - Choose adress from address book - Choose adress from address book + Choose address from address book + Choose address from address book diff --git a/src/qt/locale/bitcoin_ru.ts b/src/qt/locale/bitcoin_ru.ts index 358c4f1470c..9f782205bee 100644 --- a/src/qt/locale/bitcoin_ru.ts +++ b/src/qt/locale/bitcoin_ru.ts @@ -917,7 +917,7 @@ p, li { white-space: pre-wrap; } - Choose adress from address book + Choose address from address book Выбрать адрес из адресной книги diff --git a/src/qt/locale/bitcoin_uk.ts b/src/qt/locale/bitcoin_uk.ts index 3ea0bcc736a..57313b7a521 100644 --- a/src/qt/locale/bitcoin_uk.ts +++ b/src/qt/locale/bitcoin_uk.ts @@ -917,7 +917,7 @@ p, li { white-space: pre-wrap; } - Choose adress from address book + Choose address from address book Вибрати адресу з адресної книги diff --git a/src/qt/locale/bitcoin_zh_CN.ts b/src/qt/locale/bitcoin_zh_CN.ts index acd8fa9d5f0..3faaac3c97b 100644 --- a/src/qt/locale/bitcoin_zh_CN.ts +++ b/src/qt/locale/bitcoin_zh_CN.ts @@ -917,7 +917,7 @@ p, li { white-space: pre-wrap; } - Choose adress from address book + Choose address from address book 从地址薄选择地址 diff --git a/src/qt/locale/bitcoin_zh_TW.ts b/src/qt/locale/bitcoin_zh_TW.ts index b150620648c..56dd548f6d3 100644 --- a/src/qt/locale/bitcoin_zh_TW.ts +++ b/src/qt/locale/bitcoin_zh_TW.ts @@ -916,7 +916,7 @@ p, li { white-space: pre-wrap; } - Choose adress from address book + Choose address from address book 從位址簿中選一個位址 From 45099b19daea9b78bf9823fab8d930211f738d7d Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Wed, 28 Dec 2011 11:14:05 +0100 Subject: [PATCH 055/298] Fix transaction type in UI: not all tx'es with "from"/"to" field are necessarily IP tx'es - Also, prepare for OP_EVAL by calling all transactions without bitcoin address "SendToOther"/"RecvFromOther", (IP tx'es are so rare they can be put together with funky EV_EVAL scripts) --- src/qt/transactionrecord.cpp | 41 ++++++++++++++++---------------- src/qt/transactionrecord.h | 4 ++-- src/qt/transactiontablemodel.cpp | 17 +++++++------ src/qt/transactionview.cpp | 4 ++-- 4 files changed, 32 insertions(+), 34 deletions(-) diff --git a/src/qt/transactionrecord.cpp b/src/qt/transactionrecord.cpp index 77c5a01260d..52a3080e970 100644 --- a/src/qt/transactionrecord.cpp +++ b/src/qt/transactionrecord.cpp @@ -64,17 +64,10 @@ QList TransactionRecord::decomposeTransaction(const CWallet * sub.credit = nUnmatured; } } - else if (!mapValue["from"].empty() || !mapValue["message"].empty()) - { - // Received by IP connection - sub.type = TransactionRecord::RecvFromIP; - if (!mapValue["from"].empty()) - sub.address = mapValue["from"]; - } else { + bool foundAddress = false; // Received by Bitcoin Address - sub.type = TransactionRecord::RecvWithAddress; BOOST_FOREACH(const CTxOut& txout, wtx.vout) { if(wallet->IsMine(txout)) @@ -82,11 +75,19 @@ QList TransactionRecord::decomposeTransaction(const CWallet * CBitcoinAddress address; if (ExtractAddress(txout.scriptPubKey, wallet, address)) { + sub.type = TransactionRecord::RecvWithAddress; sub.address = address.ToString(); + foundAddress = true; + break; } - break; } } + if(!foundAddress) + { + // Received by IP connection, or other non-address transaction like OP_EVAL + sub.type = TransactionRecord::RecvFromOther; + sub.address = mapValue["from"]; + } } parts.append(sub); } @@ -127,21 +128,19 @@ QList TransactionRecord::decomposeTransaction(const CWallet * // from a transaction sent back to our own address. continue; } - else if(!mapValue["to"].empty()) - { - // Sent to IP - sub.type = TransactionRecord::SendToIP; - sub.address = mapValue["to"]; - } - else + + CBitcoinAddress address; + if (ExtractAddress(txout.scriptPubKey, 0, address)) { // Sent to Bitcoin Address sub.type = TransactionRecord::SendToAddress; - CBitcoinAddress address; - if (ExtractAddress(txout.scriptPubKey, 0, address)) - { - sub.address = address.ToString(); - } + sub.address = address.ToString(); + } + else + { + // Sent to IP, or other non-address transaction like OP_EVAL + sub.type = TransactionRecord::SendToOther; + sub.address = mapValue["to"]; } int64 nValue = txout.nValue; diff --git a/src/qt/transactionrecord.h b/src/qt/transactionrecord.h index 0050c878ee6..84bf959b178 100644 --- a/src/qt/transactionrecord.h +++ b/src/qt/transactionrecord.h @@ -56,9 +56,9 @@ public: Other, Generated, SendToAddress, - SendToIP, + SendToOther, RecvWithAddress, - RecvFromIP, + RecvFromOther, SendToSelf }; diff --git a/src/qt/transactiontablemodel.cpp b/src/qt/transactiontablemodel.cpp index 0e1733f156a..b863546691d 100644 --- a/src/qt/transactiontablemodel.cpp +++ b/src/qt/transactiontablemodel.cpp @@ -345,12 +345,11 @@ QString TransactionTableModel::formatTxType(const TransactionRecord *wtx) const { case TransactionRecord::RecvWithAddress: return tr("Received with"); - case TransactionRecord::RecvFromIP: - return tr("Received from IP"); + case TransactionRecord::RecvFromOther: + return tr("Received from"); case TransactionRecord::SendToAddress: + case TransactionRecord::SendToOther: return tr("Sent to"); - case TransactionRecord::SendToIP: - return tr("Sent to IP"); case TransactionRecord::SendToSelf: return tr("Payment to yourself"); case TransactionRecord::Generated: @@ -367,10 +366,10 @@ QVariant TransactionTableModel::txAddressDecoration(const TransactionRecord *wtx case TransactionRecord::Generated: return QIcon(":/icons/tx_mined"); case TransactionRecord::RecvWithAddress: - case TransactionRecord::RecvFromIP: + case TransactionRecord::RecvFromOther: return QIcon(":/icons/tx_input"); case TransactionRecord::SendToAddress: - case TransactionRecord::SendToIP: + case TransactionRecord::SendToOther: return QIcon(":/icons/tx_output"); default: return QIcon(":/icons/tx_inout"); @@ -382,12 +381,12 @@ QString TransactionTableModel::formatTxToAddress(const TransactionRecord *wtx, b { switch(wtx->type) { - case TransactionRecord::RecvFromIP: + case TransactionRecord::RecvFromOther: return QString::fromStdString(wtx->address); case TransactionRecord::RecvWithAddress: case TransactionRecord::SendToAddress: return lookupAddress(wtx->address, tooltip); - case TransactionRecord::SendToIP: + case TransactionRecord::SendToOther: return QString::fromStdString(wtx->address); case TransactionRecord::SendToSelf: case TransactionRecord::Generated: @@ -478,7 +477,7 @@ QVariant TransactionTableModel::txStatusDecoration(const TransactionRecord *wtx) QString TransactionTableModel::formatTooltip(const TransactionRecord *rec) const { QString tooltip = formatTxStatus(rec) + QString("\n") + formatTxType(rec); - if(rec->type==TransactionRecord::RecvFromIP || rec->type==TransactionRecord::SendToIP || + if(rec->type==TransactionRecord::RecvFromOther || rec->type==TransactionRecord::SendToOther || rec->type==TransactionRecord::SendToAddress || rec->type==TransactionRecord::RecvWithAddress) { tooltip += QString(" ") + formatTxToAddress(rec, true); diff --git a/src/qt/transactionview.cpp b/src/qt/transactionview.cpp index 2dcbf1ea8ac..3ef31854fb4 100644 --- a/src/qt/transactionview.cpp +++ b/src/qt/transactionview.cpp @@ -70,9 +70,9 @@ TransactionView::TransactionView(QWidget *parent) : typeWidget->addItem(tr("All"), TransactionFilterProxy::ALL_TYPES); typeWidget->addItem(tr("Received with"), TransactionFilterProxy::TYPE(TransactionRecord::RecvWithAddress) | - TransactionFilterProxy::TYPE(TransactionRecord::RecvFromIP)); + TransactionFilterProxy::TYPE(TransactionRecord::RecvFromOther)); typeWidget->addItem(tr("Sent to"), TransactionFilterProxy::TYPE(TransactionRecord::SendToAddress) | - TransactionFilterProxy::TYPE(TransactionRecord::SendToIP)); + TransactionFilterProxy::TYPE(TransactionRecord::SendToOther)); typeWidget->addItem(tr("To yourself"), TransactionFilterProxy::TYPE(TransactionRecord::SendToSelf)); typeWidget->addItem(tr("Mined"), TransactionFilterProxy::TYPE(TransactionRecord::Generated)); typeWidget->addItem(tr("Other"), TransactionFilterProxy::TYPE(TransactionRecord::Other)); From 99e9601e805c009b301c7cb29d541858507ae095 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Tue, 3 Jan 2012 00:03:07 -0800 Subject: [PATCH 056/298] Fix horrific performance found by gmaxwell. --- src/serialize.h | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/src/serialize.h b/src/serialize.h index 7876990d04e..b0ce0652977 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -828,6 +828,38 @@ struct secure_allocator : public std::allocator }; +// +// Allocator that clears its contents before deletion. +// +template +struct zero_after_free_allocator : public std::allocator +{ + // MSVC8 default copy constructor is broken + typedef std::allocator base; + typedef typename base::size_type size_type; + typedef typename base::difference_type difference_type; + typedef typename base::pointer pointer; + typedef typename base::const_pointer const_pointer; + typedef typename base::reference reference; + typedef typename base::const_reference const_reference; + typedef typename base::value_type value_type; + zero_after_free_allocator() throw() {} + zero_after_free_allocator(const zero_after_free_allocator& a) throw() : base(a) {} + template + zero_after_free_allocator(const zero_after_free_allocator& a) throw() : base(a) {} + ~zero_after_free_allocator() throw() {} + template struct rebind + { typedef zero_after_free_allocator<_Other> other; }; + + void deallocate(T* p, std::size_t n) + { + if (p != NULL) + memset(p, 0, sizeof(T) * n); + std::allocator::deallocate(p, n); + } +}; + + // // Double ended buffer combining vector and stream-like interfaces. @@ -837,7 +869,7 @@ struct secure_allocator : public std::allocator class CDataStream { protected: - typedef std::vector > vector_type; + typedef std::vector > vector_type; vector_type vch; unsigned int nReadPos; short state; From 09308a3882552b5b3bab67064514499532121b44 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Sat, 7 Jan 2012 13:35:25 -0500 Subject: [PATCH 057/298] Remove mentions on anonymity in debian folder. These should never have been there, bitcoin isnt anonymous without a ton of work that virtually no users will ever be willing and capable of doing. --- contrib/debian/changelog | 9 +++++++++ contrib/debian/control | 4 ++-- contrib/debian/manpages/bitcoind.1 | 2 +- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/contrib/debian/changelog b/contrib/debian/changelog index bef58c982fc..0c67487fc11 100644 --- a/contrib/debian/changelog +++ b/contrib/debian/changelog @@ -1,3 +1,12 @@ +bitcoin (0.5.0.3-natty1) natty; urgency=low + + * Remove mentions on anonymity in package descriptions and manpage. + These should never have been there, bitcoin isnt anonymous without + a ton of work that virtually no users will ever be willing and + capable of doing + + -- Matt Corallo Sat, 7 Jan 2012 13:37:00 -0500 + bitcoin (0.5.0.3-natty0) natty; urgency=low * New upstream release. diff --git a/contrib/debian/control b/contrib/debian/control index 13fde5948c2..c41664ca6f9 100644 --- a/contrib/debian/control +++ b/contrib/debian/control @@ -24,7 +24,7 @@ Vcs-Browser: http://github.com/bitcoin/bitcoin Package: bitcoind Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} -Description: peer-to-peer network based anonymous digital currency - daemon +Description: peer-to-peer network based digital currency - daemon Bitcoin is a free open source peer-to-peer electronic cash system that is completely decentralized, without the need for a central server or trusted parties. Users hold the crypto keys to their own money and @@ -42,7 +42,7 @@ Description: peer-to-peer network based anonymous digital currency - daemon Package: bitcoin-qt Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} -Description: peer-to-peer network based anonymous digital currency - QT GUI +Description: peer-to-peer network based digital currency - QT GUI Bitcoin is a free open source peer-to-peer electronic cash system that is completely decentralized, without the need for a central server or trusted parties. Users hold the crypto keys to their own money and diff --git a/contrib/debian/manpages/bitcoind.1 b/contrib/debian/manpages/bitcoind.1 index 0179406a16d..bf46a6609ca 100644 --- a/contrib/debian/manpages/bitcoind.1 +++ b/contrib/debian/manpages/bitcoind.1 @@ -1,6 +1,6 @@ .TH BITCOIND "1" "January 2011" "bitcoind 3.19" .SH NAME -bitcoind \- peer-to-peer network based anonymous digital currency +bitcoind \- peer-to-peer network based digital currency .SH SYNOPSIS bitcoin [options] [params] .TP From 21aa161453f7ee2505684885ee60cd146bc37b65 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Fri, 6 Jan 2012 06:55:48 +0100 Subject: [PATCH 058/298] make transaction description read-only (UI fix) --- src/qt/forms/transactiondescdialog.ui | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/qt/forms/transactiondescdialog.ui b/src/qt/forms/transactiondescdialog.ui index 2f70a38214b..9a9f6db1587 100644 --- a/src/qt/forms/transactiondescdialog.ui +++ b/src/qt/forms/transactiondescdialog.ui @@ -19,6 +19,9 @@ This pane shows a detailed description of the transaction + + true + From 2d8bc0e6da2203ba2ae62bb167110529e5b6f7d4 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Tue, 13 Dec 2011 17:30:13 +0100 Subject: [PATCH 059/298] Add "About Qt" menu option to show built-in Qt About dialog - Most Qt programs do this, and it can be useful to find out what version of Qt was built against. --- src/qt/bitcoingui.cpp | 8 +++++++- src/qt/bitcoingui.h | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index 5968aab6c41..75d2a50a25c 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -57,6 +57,7 @@ BitcoinGUI::BitcoinGUI(QWidget *parent): walletModel(0), encryptWalletAction(0), changePassphraseAction(0), + aboutQtAction(0), trayIcon(0), notificator(0) { @@ -204,7 +205,10 @@ void BitcoinGUI::createActions() quitAction->setMenuRole(QAction::QuitRole); aboutAction = new QAction(QIcon(":/icons/bitcoin"), tr("&About %1").arg(qApp->applicationName()), this); aboutAction->setToolTip(tr("Show information about Bitcoin")); - aboutAction->setMenuRole(QAction::AboutQtRole); + aboutAction->setMenuRole(QAction::AboutRole); + aboutQtAction = new QAction(tr("About &Qt"), this); + aboutQtAction->setToolTip(tr("Show information about Qt")); + aboutQtAction->setMenuRole(QAction::AboutQtRole); optionsAction = new QAction(QIcon(":/icons/options"), tr("&Options..."), this); optionsAction->setToolTip(tr("Modify configuration options for bitcoin")); optionsAction->setMenuRole(QAction::PreferencesRole); @@ -221,6 +225,7 @@ void BitcoinGUI::createActions() connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit())); connect(optionsAction, SIGNAL(triggered()), this, SLOT(optionsClicked())); connect(aboutAction, SIGNAL(triggered()), this, SLOT(aboutClicked())); + connect(aboutQtAction, SIGNAL(triggered()), qApp, SLOT(aboutQt())); connect(openBitcoinAction, SIGNAL(triggered()), this, SLOT(showNormal())); connect(encryptWalletAction, SIGNAL(triggered(bool)), this, SLOT(encryptWallet(bool))); connect(changePassphraseAction, SIGNAL(triggered()), this, SLOT(changePassphrase())); @@ -248,6 +253,7 @@ void BitcoinGUI::createMenuBar() QMenu *help = appMenuBar->addMenu(tr("&Help")); help->addAction(aboutAction); + help->addAction(aboutQtAction); } void BitcoinGUI::createToolBars() diff --git a/src/qt/bitcoingui.h b/src/qt/bitcoingui.h index 581d3937490..9b672ee809d 100644 --- a/src/qt/bitcoingui.h +++ b/src/qt/bitcoingui.h @@ -79,6 +79,7 @@ private: QAction *exportAction; QAction *encryptWalletAction; QAction *changePassphraseAction; + QAction *aboutQtAction; QSystemTrayIcon *trayIcon; Notificator *notificator; From 6e1e62a04c79a93d124371fa102d7881449b3673 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Tue, 10 Jan 2012 15:50:37 -0500 Subject: [PATCH 060/298] Bump version to 0.4.4 --- contrib/Bitcoin.app/Contents/Info.plist | 2 +- doc/README | 2 +- doc/README_windows.txt | 2 +- share/setup.nsi | 6 +++--- src/serialize.h | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/contrib/Bitcoin.app/Contents/Info.plist b/contrib/Bitcoin.app/Contents/Info.plist index 1d520c93cf9..bef67460c88 100644 --- a/contrib/Bitcoin.app/Contents/Info.plist +++ b/contrib/Bitcoin.app/Contents/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 0.4.3 + 0.4.4 CFBundleSignature ???? CFBundleVersion diff --git a/doc/README b/doc/README index d91509bd90d..40bda47d9c8 100644 --- a/doc/README +++ b/doc/README @@ -1,4 +1,4 @@ -Bitcoin 0.4.3 BETA +Bitcoin 0.4.4 BETA Copyright (c) 2009-2011 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/doc/README_windows.txt b/doc/README_windows.txt index 2f5761645a8..f8f1c341886 100644 --- a/doc/README_windows.txt +++ b/doc/README_windows.txt @@ -1,4 +1,4 @@ -Bitcoin 0.4.3 BETA +Bitcoin 0.4.4 BETA Copyright (c) 2009-2011 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/share/setup.nsi b/share/setup.nsi index 3455f7681cb..05983117909 100644 --- a/share/setup.nsi +++ b/share/setup.nsi @@ -5,7 +5,7 @@ SetCompressor /SOLID lzma # General Symbol Definitions !define REGKEY "SOFTWARE\$(^Name)" -!define VERSION 0.4.3 +!define VERSION 0.4.4 !define COMPANY "Bitcoin project" !define URL http://www.bitcoin.org/ @@ -45,13 +45,13 @@ Var StartMenuGroup !insertmacro MUI_LANGUAGE English # Installer attributes -OutFile bitcoin-0.4.3-win32-setup.exe +OutFile bitcoin-0.4.4-win32-setup.exe InstallDir $PROGRAMFILES\Bitcoin CRCCheck on XPStyle on BrandingText " " ShowInstDetails show -VIProductVersion 0.4.3.0 +VIProductVersion 0.4.4.0 VIAddVersionKey ProductName Bitcoin VIAddVersionKey ProductVersion "${VERSION}" VIAddVersionKey CompanyName "${COMPANY}" diff --git a/src/serialize.h b/src/serialize.h index b0ce0652977..d7b5ec80d56 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -59,7 +59,7 @@ class CDataStream; class CAutoFile; static const unsigned int MAX_SIZE = 0x02000000; -static const int VERSION = 40300; +static const int VERSION = 40400; static const char* pszSubVer = ""; static const bool VERSION_IS_BETA = true; From 507848b63d980d32798689db408ce980d77a5483 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Tue, 10 Jan 2012 15:54:38 -0500 Subject: [PATCH 061/298] Bump version to 0.5.0.4 --- bitcoin-qt.pro | 2 +- contrib/debian/changelog | 6 ++++++ doc/README | 2 +- doc/README_windows.txt | 2 +- share/setup.nsi | 6 +++--- src/serialize.h | 2 +- 6 files changed, 13 insertions(+), 7 deletions(-) diff --git a/bitcoin-qt.pro b/bitcoin-qt.pro index 1eddcd542b4..19349c708d0 100644 --- a/bitcoin-qt.pro +++ b/bitcoin-qt.pro @@ -1,6 +1,6 @@ TEMPLATE = app TARGET = -VERSION = 0.5.0.3 +VERSION = 0.5.0.4 INCLUDEPATH += src src/json src/qt DEFINES += QT_GUI BOOST_THREAD_USE_LIB CONFIG += no_include_pwd diff --git a/contrib/debian/changelog b/contrib/debian/changelog index 0c67487fc11..24d6f710b6c 100644 --- a/contrib/debian/changelog +++ b/contrib/debian/changelog @@ -1,3 +1,9 @@ +bitcoin (0.5.0.4-natty0) natty; urgency=low + + * New upstream release. + + -- Matt Corallo Tue, 10 Jan 2012 15:53:00 -0500 + bitcoin (0.5.0.3-natty1) natty; urgency=low * Remove mentions on anonymity in package descriptions and manpage. diff --git a/doc/README b/doc/README index c3ed9c4b7e3..e3b8ffb3b91 100644 --- a/doc/README +++ b/doc/README @@ -1,4 +1,4 @@ -Bitcoin 0.5.0.3 BETA +Bitcoin 0.5.0.4 BETA Copyright (c) 2009-2011 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/doc/README_windows.txt b/doc/README_windows.txt index 8a8f82b846d..b117f51208e 100644 --- a/doc/README_windows.txt +++ b/doc/README_windows.txt @@ -1,4 +1,4 @@ -Bitcoin 0.5.0.3 BETA +Bitcoin 0.5.0.4 BETA Copyright (c) 2009-2011 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/share/setup.nsi b/share/setup.nsi index 76efe57d27f..76ae81762db 100644 --- a/share/setup.nsi +++ b/share/setup.nsi @@ -5,7 +5,7 @@ SetCompressor /SOLID lzma # General Symbol Definitions !define REGKEY "SOFTWARE\$(^Name)" -!define VERSION 0.5.0.3 +!define VERSION 0.5.0.4 !define COMPANY "Bitcoin project" !define URL http://www.bitcoin.org/ @@ -45,13 +45,13 @@ Var StartMenuGroup !insertmacro MUI_LANGUAGE English # Installer attributes -OutFile bitcoin-0.5.0.3-win32-setup.exe +OutFile bitcoin-0.5.0.4-win32-setup.exe InstallDir $PROGRAMFILES\Bitcoin CRCCheck on XPStyle on BrandingText " " ShowInstDetails show -VIProductVersion 0.5.0.3 +VIProductVersion 0.5.0.4 VIAddVersionKey ProductName Bitcoin VIAddVersionKey ProductVersion "${VERSION}" VIAddVersionKey CompanyName "${COMPANY}" diff --git a/src/serialize.h b/src/serialize.h index 0f075a5bf14..5bee071e1cb 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -60,7 +60,7 @@ class CDataStream; class CAutoFile; static const unsigned int MAX_SIZE = 0x02000000; -static const int VERSION = 50003; +static const int VERSION = 50004; static const char* pszSubVer = ""; static const bool VERSION_IS_BETA = true; From 98811f6ad4764f63e510d703d1659589c083fa05 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Tue, 10 Jan 2012 15:58:29 -0500 Subject: [PATCH 062/298] Bump version to 0.5.3 --- bitcoin-qt.pro | 2 +- contrib/debian/changelog | 6 ++++++ doc/README | 2 +- doc/README_windows.txt | 2 +- share/setup.nsi | 6 +++--- src/serialize.h | 2 +- 6 files changed, 13 insertions(+), 7 deletions(-) diff --git a/bitcoin-qt.pro b/bitcoin-qt.pro index d7ac62e90a6..f98379904ce 100644 --- a/bitcoin-qt.pro +++ b/bitcoin-qt.pro @@ -1,6 +1,6 @@ TEMPLATE = app TARGET = -VERSION = 0.5.2 +VERSION = 0.5.3 INCLUDEPATH += src src/json src/qt DEFINES += QT_GUI BOOST_THREAD_USE_LIB CONFIG += no_include_pwd diff --git a/contrib/debian/changelog b/contrib/debian/changelog index 5e38c7bd204..0720acc35c3 100644 --- a/contrib/debian/changelog +++ b/contrib/debian/changelog @@ -1,3 +1,9 @@ +bitcoin (0.5.3-natty0) natty; urgency=low + + * New upstream release. + + -- Luke Dashjr Tue, 10 Jan 2012 15:57:00 -0500 + bitcoin (0.5.2-natty1) natty; urgency=low * Remove mentions on anonymity in package descriptions and manpage. diff --git a/doc/README b/doc/README index 07785655f24..6c6c70a3429 100644 --- a/doc/README +++ b/doc/README @@ -1,4 +1,4 @@ -Bitcoin 0.5.2 BETA +Bitcoin 0.5.3 BETA Copyright (c) 2009-2011 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/doc/README_windows.txt b/doc/README_windows.txt index b98f878b27f..4fdf4a54931 100644 --- a/doc/README_windows.txt +++ b/doc/README_windows.txt @@ -1,4 +1,4 @@ -Bitcoin 0.5.2 BETA +Bitcoin 0.5.3 BETA Copyright (c) 2009-2011 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/share/setup.nsi b/share/setup.nsi index abf5c566b5a..12a1a532daa 100644 --- a/share/setup.nsi +++ b/share/setup.nsi @@ -5,7 +5,7 @@ SetCompressor /SOLID lzma # General Symbol Definitions !define REGKEY "SOFTWARE\$(^Name)" -!define VERSION 0.5.2 +!define VERSION 0.5.3 !define COMPANY "Bitcoin project" !define URL http://www.bitcoin.org/ @@ -45,13 +45,13 @@ Var StartMenuGroup !insertmacro MUI_LANGUAGE English # Installer attributes -OutFile bitcoin-0.5.2-win32-setup.exe +OutFile bitcoin-0.5.3-win32-setup.exe InstallDir $PROGRAMFILES\Bitcoin CRCCheck on XPStyle on BrandingText " " ShowInstDetails show -VIProductVersion 0.5.2.0 +VIProductVersion 0.5.3.0 VIAddVersionKey ProductName Bitcoin VIAddVersionKey ProductVersion "${VERSION}" VIAddVersionKey CompanyName "${COMPANY}" diff --git a/src/serialize.h b/src/serialize.h index 37748e4cdfe..eacf51bc39f 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -60,7 +60,7 @@ class CDataStream; class CAutoFile; static const unsigned int MAX_SIZE = 0x02000000; -static const int VERSION = 50200; +static const int VERSION = 50300; static const char* pszSubVer = ""; static const bool VERSION_IS_BETA = true; From 880c47863587ef4f464c4d681713e1f24cbf1cb7 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Mon, 9 Jan 2012 23:39:26 +0100 Subject: [PATCH 063/298] Remove unused definition --- src/wallet.h | 1 - 1 file changed, 1 deletion(-) diff --git a/src/wallet.h b/src/wallet.h index 794139233d0..3560a725801 100644 --- a/src/wallet.h +++ b/src/wallet.h @@ -77,7 +77,6 @@ public: bool CreateTransaction(const std::vector >& vecSend, CWalletTx& wtxNew, CReserveKey& reservekey, int64& nFeeRet); bool CreateTransaction(CScript scriptPubKey, int64 nValue, CWalletTx& wtxNew, CReserveKey& reservekey, int64& nFeeRet); bool CommitTransaction(CWalletTx& wtxNew, CReserveKey& reservekey); - bool BroadcastTransaction(CWalletTx& wtxNew); std::string SendMoney(CScript scriptPubKey, int64 nValue, CWalletTx& wtxNew, bool fAskFee=false); std::string SendMoneyToBitcoinAddress(const CBitcoinAddress& address, int64 nValue, CWalletTx& wtxNew, bool fAskFee=false); From 948072c39f913d1ebe43b3b46234f9d7a0d00427 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Mon, 16 Jan 2012 22:17:48 -0500 Subject: [PATCH 064/298] Code tidyups, fixing various warnings. Partial cherry pick of: Compile with extra warnings turned on. And more makefile/code tidying up. This turns on most gcc warnings, and removes some unused variables and other code that triggers warnings. Exceptions are: -Wno-sign-compare : triggered by lots of comparisons of signed integer to foo.size(), which is unsigned. -Wno-char-subscripts : triggered by the convert-to-hex functions (I may fix this in a future commit). Conflicts: src/makefile.osx src/makefile.unix src/netbase.cpp src/rpc.cpp --- src/checkpoints.cpp | 1 - src/headers.h | 2 -- src/net.cpp | 3 --- src/net.h | 4 +++- src/serialize.h | 3 +++ 5 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/checkpoints.cpp b/src/checkpoints.cpp index c7e054df378..508f72b3765 100644 --- a/src/checkpoints.cpp +++ b/src/checkpoints.cpp @@ -52,7 +52,6 @@ namespace Checkpoints { if (fTestNet) return NULL; - int64 nResult; BOOST_REVERSE_FOREACH(const MapCheckpoints::value_type& i, mapCheckpoints) { const uint256& hash = i.second; diff --git a/src/headers.h b/src/headers.h index ab318cbb436..96db87db1ba 100644 --- a/src/headers.h +++ b/src/headers.h @@ -91,8 +91,6 @@ #endif -#pragma hdrstop - #include "serialize.h" #include "uint256.h" #include "util.h" diff --git a/src/net.cpp b/src/net.cpp index c7475b118cf..e3c0f8c3d18 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1082,7 +1082,6 @@ void ThreadMapPort2(void* parg) char port[6]; sprintf(port, "%d", GetListenPort()); - const char * rootdescurl = 0; const char * multicastif = 0; const char * minissdpdpath = 0; struct UPNPDev * devlist = 0; @@ -1104,8 +1103,6 @@ void ThreadMapPort2(void* parg) r = UPNP_GetValidIGD(devlist, &urls, &data, lanaddr, sizeof(lanaddr)); if (r == 1) { - char intClient[16]; - char intPort[6]; string strDesc = "Bitcoin " + FormatFullVersion(); #ifndef UPNPDISCOVER_SUCCESS /* miniupnpc 1.5 */ diff --git a/src/net.h b/src/net.h index 741e2a812ec..03d514ca909 100644 --- a/src/net.h +++ b/src/net.h @@ -264,7 +264,9 @@ public: // Make sure not to reuse time indexes to keep things in the same order int64 nNow = (GetTime() - 1) * 1000000; static int64 nLastTime; - nLastTime = nNow = std::max(nNow, ++nLastTime); + ++nLastTime; + nNow = std::max(nNow, nLastTime); + nLastTime = nNow; // Each retry is 2 minutes after the last nRequestTime = std::max(nRequestTime + 2 * 60 * 1000000, nNow); diff --git a/src/serialize.h b/src/serialize.h index d7b5ec80d56..385c9ab8e93 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -98,6 +98,7 @@ enum const bool fRead = false; \ unsigned int nSerSize = 0; \ ser_streamplaceholder s; \ + assert(fGetSize||fWrite||fRead); /* suppress warning */ \ s.nType = nType; \ s.nVersion = nVersion; \ {statements} \ @@ -111,6 +112,7 @@ enum const bool fWrite = true; \ const bool fRead = false; \ unsigned int nSerSize = 0; \ + assert(fGetSize||fWrite||fRead); /* suppress warning */ \ {statements} \ } \ template \ @@ -121,6 +123,7 @@ enum const bool fWrite = false; \ const bool fRead = true; \ unsigned int nSerSize = 0; \ + assert(fGetSize||fWrite||fRead); /* suppress warning */ \ {statements} \ } From 5df96269d30ec57e69676e6937b45b3608df98ac Mon Sep 17 00:00:00 2001 From: Janne Pulkkinen Date: Sat, 14 Jan 2012 21:31:49 +0200 Subject: [PATCH 065/298] *Clear all has a tooltip now *About dialog updated --- src/qt/forms/aboutdialog.ui | 2 +- src/qt/forms/sendcoinsdialog.ui | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/qt/forms/aboutdialog.ui b/src/qt/forms/aboutdialog.ui index cf7997326cc..127b90965a6 100644 --- a/src/qt/forms/aboutdialog.ui +++ b/src/qt/forms/aboutdialog.ui @@ -82,7 +82,7 @@ - Copyright © 2009-2011 Bitcoin Developers + Copyright © 2009-2012 Bitcoin Developers This is experimental software. diff --git a/src/qt/forms/sendcoinsdialog.ui b/src/qt/forms/sendcoinsdialog.ui index e5e19e10158..04cf404ae3c 100644 --- a/src/qt/forms/sendcoinsdialog.ui +++ b/src/qt/forms/sendcoinsdialog.ui @@ -80,6 +80,9 @@ 0 + + Remove all transaction fields + Clear all From c144672045e69d82e4e48479f2f1ed9956186bfb Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Mon, 16 Jan 2012 22:16:48 -0500 Subject: [PATCH 066/298] Code tidyups, fixing various warnings. Partial cherry pick of: Compile with extra warnings turned on. And more makefile/code tidying up. This turns on most gcc warnings, and removes some unused variables and other code that triggers warnings. Exceptions are: -Wno-sign-compare : triggered by lots of comparisons of signed integer to foo.size(), which is unsigned. -Wno-char-subscripts : triggered by the convert-to-hex functions (I may fix this in a future commit). Conflicts: src/makefile.osx src/makefile.unix src/netbase.cpp --- src/bitcoinrpc.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bitcoinrpc.cpp b/src/bitcoinrpc.cpp index 889dd7a1b18..4031d0cbc34 100644 --- a/src/bitcoinrpc.cpp +++ b/src/bitcoinrpc.cpp @@ -1312,7 +1312,7 @@ Value listsinceblock(const Array& params, bool fHelp) CBlockIndex *block; for (block = pindexBest; block && block->nHeight > target_height; - block = block->pprev); + block = block->pprev) { } lastblock = block ? block->GetBlockHash() : 0; } From 1181bf86d14e202849a7de5e839b93a2faeb1ce0 Mon Sep 17 00:00:00 2001 From: Lars Rasmusson Date: Sat, 14 Jan 2012 12:14:36 +0100 Subject: [PATCH 067/298] Replace tabs with four spaces to comply with coding standard in doc/coding.txt --- src/net.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/net.cpp b/src/net.cpp index e3c0f8c3d18..c353473a7e2 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1107,11 +1107,11 @@ void ThreadMapPort2(void* parg) #ifndef UPNPDISCOVER_SUCCESS /* miniupnpc 1.5 */ r = UPNP_AddPortMapping(urls.controlURL, data.first.servicetype, - port, port, lanaddr, strDesc.c_str(), "TCP", 0); + port, port, lanaddr, strDesc.c_str(), "TCP", 0); #else /* miniupnpc 1.6 */ r = UPNP_AddPortMapping(urls.controlURL, data.first.servicetype, - port, port, lanaddr, strDesc.c_str(), "TCP", 0, "0"); + port, port, lanaddr, strDesc.c_str(), "TCP", 0, "0"); #endif if(r!=UPNPCOMMAND_SUCCESS) From b0870346f268d4c7f2d461c921ff63b6d967242d Mon Sep 17 00:00:00 2001 From: Lars Rasmusson Date: Sat, 14 Jan 2012 12:14:36 +0100 Subject: [PATCH 068/298] Replace tabs with four spaces to comply with coding standard in doc/coding.txt --- src/net.cpp | 4 ++-- src/qt/transactionfilterproxy.h | 2 +- src/util.h | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/net.cpp b/src/net.cpp index 18bafd02e70..d99c73f9590 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1158,11 +1158,11 @@ void ThreadMapPort2(void* parg) #ifndef UPNPDISCOVER_SUCCESS /* miniupnpc 1.5 */ r = UPNP_AddPortMapping(urls.controlURL, data.first.servicetype, - port, port, lanaddr, strDesc.c_str(), "TCP", 0); + port, port, lanaddr, strDesc.c_str(), "TCP", 0); #else /* miniupnpc 1.6 */ r = UPNP_AddPortMapping(urls.controlURL, data.first.servicetype, - port, port, lanaddr, strDesc.c_str(), "TCP", 0, "0"); + port, port, lanaddr, strDesc.c_str(), "TCP", 0, "0"); #endif if(r!=UPNPCOMMAND_SUCCESS) diff --git a/src/qt/transactionfilterproxy.h b/src/qt/transactionfilterproxy.h index 4dd2a8e5c66..17c1b482e00 100644 --- a/src/qt/transactionfilterproxy.h +++ b/src/qt/transactionfilterproxy.h @@ -29,7 +29,7 @@ public: // Set maximum number of rows returned, -1 if unlimited void setLimit(int limit); - int rowCount(const QModelIndex &parent = QModelIndex()) const; + int rowCount(const QModelIndex &parent = QModelIndex()) const; protected: bool filterAcceptsRow(int source_row, const QModelIndex & source_parent) const; diff --git a/src/util.h b/src/util.h index 78caff683de..c57e82bab03 100644 --- a/src/util.h +++ b/src/util.h @@ -749,8 +749,8 @@ inline bool AffinityBugWorkaround(void(*pfn)(void*)) inline uint32_t ByteReverse(uint32_t value) { - value = ((value & 0xFF00FF00) >> 8) | ((value & 0x00FF00FF) << 8); - return (value<<16) | (value>>16); + value = ((value & 0xFF00FF00) >> 8) | ((value & 0x00FF00FF) << 8); + return (value<<16) | (value>>16); } #endif From 54ed0a0432a3e02e41e81de63c65a871b8756178 Mon Sep 17 00:00:00 2001 From: Daniel Folkinshteyn Date: Thu, 19 Jan 2012 01:54:14 -0500 Subject: [PATCH 069/298] Update seednodes, pick long-uptime nodes with version >= 0.4.0 --- src/net.cpp | 141 ++++++++++++++++++++++++++++------------------------ 1 file changed, 77 insertions(+), 64 deletions(-) diff --git a/src/net.cpp b/src/net.cpp index c353473a7e2..b35a79deaef 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1243,70 +1243,83 @@ void ThreadDNSAddressSeed2(void* parg) unsigned int pnSeed[] = { - 0x6884ac63, 0x3ffecead, 0x2919b953, 0x0942fe50, 0x7a1d922e, 0xcdd6734a, 0x953a5bb6, 0x2c46922e, - 0xe2a5f143, 0xaa39103a, 0xa06afa5c, 0x135ffd59, 0xe8e82863, 0xf61ef029, 0xf75f042e, 0x2b363532, - 0x29b2df42, 0x16b1f64e, 0xd46e281b, 0x5280bf58, 0x60372229, 0x1be58e4f, 0xa8496f45, 0x1fb1a057, - 0x756b3844, 0x3bb79445, 0x0b375518, 0xcccb0102, 0xb682bf2e, 0x46431c02, 0x3a81073a, 0xa3771f1f, - 0x213a121f, 0x85dc2c1b, 0x56b4323b, 0xb34e8945, 0x3c40b33d, 0xfa276418, 0x1f818d29, 0xebe1e344, - 0xf6160a18, 0xf4fa384a, 0x34b09558, 0xb882b543, 0xe3ce2253, 0x6abf56d8, 0xe91b1155, 0x688ee6ad, - 0x2efc6058, 0x4792cd47, 0x0c32f757, 0x4c813a46, 0x8c93644a, 0x37507444, 0x813ad218, 0xdac06d4a, - 0xe4c63e4b, 0x21a1ea3c, 0x8d88556f, 0x30e9173a, 0x041f681b, 0xdc77ba50, 0xc0072753, 0xceddd44f, - 0x052d1743, 0xe3c77a4a, 0x13981c3a, 0x5685d918, 0x3c0e4e70, 0x3e56fb54, 0xb676ae0c, 0xac93c859, - 0x22279f43, 0x975a4542, 0xe527f071, 0xea162f2e, 0x3c65a32e, 0x5be5713b, 0x961ec418, 0xb202922e, - 0x5ef7be50, 0xce49f53e, 0x05803b47, 0x8463b055, 0x78576153, 0x3ec2ae3a, 0x4bbd7118, 0xafcee043, - 0x56a3e8ba, 0x6174de4d, 0x8d01ba4b, 0xc9af564e, 0xdbc9c547, 0xa627474d, 0xdada9244, 0xd3b3083a, - 0x523e071f, 0xd6b96f18, 0xbd527c46, 0xdf2bbb4d, 0xd37b4a4b, 0x3a6a2158, 0xc064b055, 0x18a8e055, - 0xec4dae3b, 0x0540416c, 0x475b4fbe, 0x064803b2, 0x48e9f062, 0x2898524b, 0xd315ff43, 0xf786d247, - 0xc7ea2f3e, 0xc087f043, 0xc163354b, 0x8250284d, 0xed300029, 0xbf36e05c, 0x8eb3ae4c, 0xe7aa623e, - 0x7ced0274, 0xdd362c1b, 0x362b995a, 0xca26b629, 0x3fc41618, 0xb97b364e, 0xa05b8729, 0x0f5e3c43, - 0xdf942618, 0x6aeb9b5b, 0xbf04762e, 0xfaaeb118, 0x87579958, 0x76520044, 0xc2660c5b, 0x628b201b, - 0xf193932e, 0x1c0ad045, 0xff908346, 0x8da9d4da, 0xed201c1f, 0xa47a2b1b, 0x330007d4, 0x8ba1ed47, - 0xb2f02d44, 0x7db62c1b, 0x781c454b, 0xc0300029, 0xb7062a45, 0x88b52e3a, 0x78dd6b63, 0x1cb9b718, - 0x5d358e47, 0x59912c3b, 0x79607544, 0x5197f759, 0xc023be48, 0xd1013743, 0x0f354057, 0x8e3aac3b, - 0x4114693e, 0x22316318, 0xe27dda50, 0x878eac3b, 0x4948a21f, 0x5db7f24c, 0x8ccb6157, 0x26a5de18, - 0x0a11bd43, 0x27bb1e41, 0x60a7a951, 0x3e16b35e, 0x07888b53, 0x5648a853, 0x0149fe50, 0xd070a34f, - 0x6454c96d, 0xd6e54758, 0xa96dc152, 0x65447861, 0xf6bdf95e, 0x10400202, 0x2c29d483, 0x18174732, - 0x1d840618, 0x12e61818, 0x089d3f3c, 0x917e931f, 0xd1b0c90e, 0x25bd3c42, 0xeb05775b, 0x7d550c59, - 0x6cfacb01, 0xe4224444, 0xa41dd943, 0x0f5aa643, 0x5e33731b, 0x81036d50, 0x6f46a0d1, 0x7731be43, - 0x14840e18, 0xf1e8d059, 0x661d2b1f, 0x40a3201b, 0x9407b843, 0xedf0254d, 0x7bd1a5bc, 0x073dbe51, - 0xe864a97b, 0x2efd947b, 0xb9ca0e45, 0x4e2113ad, 0xcc305731, 0xd39ca63c, 0x733df918, 0xda172b1f, - 0xaa03b34d, 0x7230fd4d, 0xf1ce6e3a, 0x2e9fab43, 0xa4010750, 0xa928bd18, 0x6809be42, 0xb19de348, - 0xff956270, 0x0d795f51, 0xd2dec247, 0x6df5774b, 0xbac11f79, 0xdfb05c75, 0x887683d8, 0xa1e83632, - 0x2c0f7671, 0x28bcb65d, 0xac2a7545, 0x3eebfc60, 0x304ad7c4, 0xa215a462, 0xc86f0f58, 0xcfb92ebe, - 0x5e23ed82, 0xf506184b, 0xec0f19b7, 0x060c59ad, 0x86ee3174, 0x85380774, 0xa199a562, 0x02b507ae, - 0x33eb2163, 0xf2112b1f, 0xb702ba50, 0x131b9618, 0x90ccd04a, 0x08f3273b, 0xecb61718, 0x64b8b44d, - 0x182bf4dc, 0xc7b68286, 0x6e318d5f, 0xfdb03654, 0xb3272e54, 0xe014ad4b, 0x274e4a31, 0x7806375c, - 0xbc34a748, 0x1b5ad94a, 0x6b54d10e, 0x73e2ae6e, 0x5529d483, 0x8455a76d, 0x99c13f47, 0x1d811741, - 0xa9782a78, 0x0b00464d, 0x7266ea50, 0x532dab46, 0x33e1413e, 0x780d0c18, 0x0fb0854e, 0x03370155, - 0x2693042e, 0xfa3d824a, 0x2bb1681b, 0x37ea2a18, 0x7fb8414b, 0x32e0713b, 0xacf38d3f, 0xa282716f, - 0xb1a09d7b, 0xa04b764b, 0x83c94d18, 0x05ee4c6d, 0x0e795f51, 0x46984352, 0xf80fc247, 0x3fccb946, - 0xd7ae244b, 0x0a8e0a4c, 0x57b141bc, 0x3647bed1, 0x1431b052, 0x803a8bbb, 0xfc69056b, 0xf5991862, - 0x14963b2e, 0xd35d5dda, 0xc6c73574, 0xc8f1405b, 0x0ca4224d, 0xecd36071, 0xa9461754, 0xe7a0ed72, - 0x559e8346, 0x1c9beec1, 0xc786ea4a, 0x9561b44d, 0x9788074d, 0x1a69934f, 0x23c5614c, 0x07c79d4b, - 0xc7ee52db, 0xc72df351, 0xcb135e44, 0xa0988346, 0xc211fc4c, 0x87dec34b, 0x1381074d, 0x04a65cb7, - 0x4409083a, 0x4a407a4c, 0x92b8d37d, 0xacf50b4d, 0xa58aa5bc, 0x448f801f, 0x9c83762e, 0x6fd5734a, - 0xfe2d454b, 0x84144c55, 0x05190e4c, 0xb2151448, 0x63867a3e, 0x16099018, 0x9c010d3c, 0x962d8f3d, - 0xd51ee453, 0x9d86801f, 0x68e87b47, 0x6bf7bb73, 0x5fc7910e, 0x10d90118, 0x3db04442, 0x729d3e4b, - 0xc397d842, 0x57bb15ad, 0x72f31f4e, 0xc9380043, 0x2bb24e18, 0xd9b8ab50, 0xb786801f, 0xf4dc4847, - 0x85f4bb51, 0x4435995b, 0x5ba07e40, 0x2c57392e, 0x3628124b, 0x9839b64b, 0x6fe8b24d, 0xaddce847, - 0x75260e45, 0x0c572a43, 0xfea21902, 0xb9f9742e, 0x5a70d443, 0x8fc5910e, 0x868d4744, 0x56245e02, - 0xd7eb5f02, 0x35c12c1b, 0x4373034b, 0x8786554c, 0xa6facf18, 0x4b11a31f, 0x3570664e, 0x5a64bc42, - 0x0b03983f, 0x8f457e4c, 0x0fd874c3, 0xb6cf31b2, 0x2bbc2d4e, 0x146ca5b2, 0x9d00b150, 0x048a4153, - 0xca4dcd43, 0xc1607cca, 0x8234cf57, 0x9c7daead, 0x3dc07658, 0xea5c6e4c, 0xf1a0084e, 0x16d2ee53, - 0x1b849418, 0xfe913a47, 0x1e988f62, 0x208b644c, 0xc55ee980, 0xbdbce747, 0xf59a384e, 0x0f56091b, - 0x7417b745, 0x0c37344e, 0x2c62ab47, 0xf8533a4d, 0x8030084d, 0x76b93c4b, 0xda6ea0ad, 0x3c54f618, - 0x63b0de1f, 0x7370d858, 0x1a70bb4c, 0xdda63b2e, 0x60b2ba50, 0x1ba7d048, 0xbe1b2c1b, 0xabea5747, - 0x29ad2e4d, 0xe8cd7642, 0x66c80e18, 0x138bf34a, 0xc6145e44, 0x2586794c, 0x07bc5478, 0x0da0b14d, - 0x8f95354e, 0x9eb11c62, 0xa1545e46, 0x2e7a2602, 0x408c9c3d, 0x59065d55, 0xf51d1a4c, 0x3bbc6a4e, - 0xc71b2a2e, 0xcdaaa545, 0x17d659d0, 0x5202e7ad, 0xf1b68445, 0x93375961, 0xbd88a043, 0x066ad655, - 0x890f6318, 0x7b7dca47, 0x99bdd662, 0x3bb4fc53, 0x1231efdc, 0xc0a99444, 0x96bbea47, 0x61ed8748, - 0x27dfa73b, 0x8d4d1754, 0x3460042e, 0x551f0c4c, 0x8d0e0718, 0x162ddc53, 0x53231718, 0x1ecd65d0, - 0x944d28bc, 0x3b79d058, 0xaff97fbc, 0x4860006c, 0xc101c90e, 0xace41743, 0xa5975d4c, 0x5cc2703e, - 0xb55a4450, 0x02d18840, 0xee2765ae, 0xd6012fd5, 0x24c94d7d, 0x8c6eec47, 0x7520ba5d, 0x9e15e460, - 0x8510b04c, 0x75ec3847, 0x1dfa6661, 0xe172b3ad, 0x5744c90e, 0x52a0a152, 0x8d6fad18, 0x67b74b6d, - 0x93a089b2, 0x0f3ac5d5, 0xe5de1855, 0x43d25747, 0x4bad804a, 0x55b408d8, 0x60a36441, 0xf553e860, - 0xdb2fa2c8, 0x03152b32, 0xdd27a7d5, 0x3116a8b8, 0x0a1d708c, 0xeee2f13c, 0x6acf436f, 0xce6eb4ca, - 0x101cd3d9, 0x1c48a6b8, 0xe57d6f44, 0x93dcf562, + 0x959bd347, 0xf8de42b2, 0x73bc0518, 0xea6edc50, 0x21b00a4d, 0xc725b43d, 0xd665464d, 0x1a2a770e, + 0x27c93946, 0x65b2fa46, 0xb80ae255, 0x66b3b446, 0xb1877a3e, 0x6ee89e3e, 0xc3175b40, 0x2a01a83c, + 0x95b1363a, 0xa079ad3d, 0xe6ca801f, 0x027f4f4a, 0x34f7f03a, 0xf790f04a, 0x16ca801f, 0x2f4d5e40, + 0x3a4d5e40, 0xc43a322e, 0xc8159753, 0x14d4724c, 0x7919a118, 0xe0bdb34e, 0x68a16b2e, 0xff64b44d, + 0x6099115b, 0x9b57b05b, 0x7bd1b4ad, 0xdf95944f, 0x29d2b73d, 0xafa8db79, 0xe247ba41, 0x24078348, + 0xf722f03c, 0x33567ebc, 0xace64ed4, 0x984d3932, 0xb5f34e55, 0x27b7024d, 0x94579247, 0x8894042e, + 0x9357d34c, 0x1063c24b, 0xcaa228b1, 0xa3c5a8b2, 0x5dc64857, 0xa2c23643, 0xa8369a54, 0x31203077, + 0x00707c5c, 0x09fc0b3a, 0x272e9e2e, 0xf80f043e, 0x9449ca3e, 0x5512c33e, 0xd106b555, 0xe8024157, + 0xe288ec29, 0xc79c5461, 0xafb63932, 0xdb02ab4b, 0x0e512777, 0x8a145a4c, 0xb201ff4f, 0x5e09314b, + 0xcd9bfbcd, 0x1c023765, 0x4394e75c, 0xa728bd4d, 0x65331552, 0xa98420b1, 0x89ecf559, 0x6e80801f, + 0xf404f118, 0xefd62b51, 0x05918346, 0x9b186d5f, 0xacabab46, 0xf912e255, 0xc188ea62, 0xcc55734e, + 0xc668064d, 0xd77a4558, 0x46201c55, 0xf17dfc80, 0xf7142f2e, 0x87bfb718, 0x8aa54fb2, 0xc451d518, + 0xc4ae8831, 0x8dd44d55, 0x5bbd206c, 0x64536b5d, 0x5c667e60, 0x3b064242, 0xfe963a42, 0xa28e6dc8, + 0xe8a9604a, 0xc989464e, 0xd124a659, 0x50065140, 0xa44dfe5e, 0x1079e655, 0x3fb986d5, 0x47895b18, + 0x7d3ce4ad, 0x4561ba50, 0x296eec62, 0x255b41ad, 0xaed35ec9, 0x55556f12, 0xc7d3154d, 0x3297b65d, + 0x8930121f, 0xabf42e4e, 0x4a29e044, 0x1212685d, 0x676c1e40, 0xce009744, 0x383a8948, 0xa2dbd0ad, + 0xecc2564d, 0x07dbc252, 0x887ee24b, 0x5171644c, 0x6bb798c1, 0x847f495d, 0x4cbb7145, 0x3bb81c32, + 0x45eb262e, 0xc8015a4e, 0x250a361b, 0xf694f946, 0xd64a183e, 0xd4f1dd59, 0x8f20ffd4, 0x51d9e55c, + 0x09521763, 0x5e02002e, 0x32c8074d, 0xe685762e, 0x8290b0bc, 0x762a922e, 0xfc5ee754, 0x83a24829, + 0x775b224d, 0x6295bb4d, 0x38ec0555, 0xbffbba50, 0xe5560260, 0x86b16a7c, 0xd372234e, 0x49a3c24b, + 0x2f6a171f, 0x4d75ed60, 0xae94115b, 0xcb543744, 0x63080c59, 0x3f9c724c, 0xc977ce18, 0x532efb18, + 0x69dc3b2e, 0x5f94d929, 0x1732bb4d, 0x9c814b4d, 0xe6b3762e, 0xc024f662, 0x8face35b, 0x6b5b044d, + 0x798c7b57, 0x79a6b44c, 0x067d3057, 0xf9e94e5f, 0x91cbe15b, 0x71405eb2, 0x2662234e, 0xcbcc4a6d, + 0xbf69d54b, 0xa79b4e55, 0xec6d3e51, 0x7c0b3c02, 0x60f83653, 0x24c1e15c, 0x1110b62e, 0x10350f59, + 0xa56f1d55, 0x3509e7a9, 0xeb128354, 0x14268e2e, 0x934e28bc, 0x8e32692e, 0x8331a21f, 0x3e633932, + 0xc812b12e, 0xc684bf2e, 0x80112d2e, 0xe0ddc96c, 0xc630ca4a, 0x5c09b3b2, 0x0b580518, 0xc8e9d54b, + 0xd169aa43, 0x17d0d655, 0x1d029963, 0x7ff87559, 0xcb701f1f, 0x6fa3e85d, 0xe45e9a54, 0xf05d1802, + 0x44d03b2e, 0x837b692e, 0xccd4354e, 0x3d6da13c, 0x3423084d, 0xf707c34a, 0x55f6db3a, 0xad26e442, + 0x6233a21f, 0x09e80e59, 0x8caeb54d, 0xbe870941, 0xb407d20e, 0x20b51018, 0x56fb152e, 0x460d2a4e, + 0xbb9a2946, 0x560eb12e, 0xed83dd29, 0xd6724f53, 0xa50aafb8, 0x451346d9, 0x88348e2e, 0x7312fead, + 0x8ecaf96f, 0x1bda4e5f, 0xf1671e40, 0x3c8c3e3b, 0x4716324d, 0xdde24ede, 0xf98cd17d, 0xa91d4644, + 0x28124eb2, 0x147d5129, 0xd022042e, 0x61733d3b, 0xad0d5e02, 0x8ce2932e, 0xe5c18502, 0x549c1e32, + 0x9685801f, 0x86e217ad, 0xd948214b, 0x4110f462, 0x3a2e894e, 0xbd35492e, 0x87e0d558, 0x64b8ef7d, + 0x7c3eb962, 0x72a84b3e, 0x7cd667c9, 0x28370a2e, 0x4bc60e7b, 0x6fc1ec60, 0x14a6983f, 0x86739a4b, + 0x46954e5f, 0x32e2e15c, 0x2e9326cf, 0xe5801c5e, 0x379607b2, 0x32151145, 0xf0e39744, 0xacb54c55, + 0xa37dfb60, 0x83b55cc9, 0x388f7ca5, 0x15034f5f, 0x3e94965b, 0x68e0ffad, 0x35280f59, 0x8fe190cf, + 0x7c6ba5b2, 0xa5e9db43, 0x4ee1fc60, 0xd9d94e5f, 0x04040677, 0x0ea9b35e, 0x5961f14f, 0x67fda063, + 0xa48a5a31, 0xc6524e55, 0x283d325e, 0x3f37515f, 0x96b94b3e, 0xacce620e, 0x6481cc5b, 0xa4a06d4b, + 0x9e95d2d9, 0xe40c03d5, 0xc2f4514b, 0xb79aad44, 0xf64be843, 0xb2064070, 0xfca00455, 0x429dfa4e, + 0x2323f173, 0xeda4185e, 0xabd5227d, 0x9efd4d58, 0xb1104758, 0x4811e955, 0xbd9ab355, 0xe921f44b, + 0x9f166dce, 0x09e279b2, 0xe0c9ac7b, 0x7901a5ad, 0xa145d4b0, 0x79104671, 0xec31e35a, 0x4fe0b555, + 0xc7d9cbad, 0xad057f55, 0xe94cc759, 0x7fe0b043, 0xe4529f2e, 0x0d4dd4b2, 0x9f11a54d, 0x031e2e4e, + 0xe6014f5f, 0x11d1ca6c, 0x26bd7f61, 0xeb86854f, 0x4d347b57, 0x116bbe2e, 0xdba7234e, 0x7bcbfd2e, + 0x174dd4b2, 0x6686762e, 0xb089ba50, 0xc6258246, 0x087e767b, 0xc4a8cb4a, 0x595dba50, 0x7f0ae502, + 0x7b1dbd5a, 0xa0603492, 0x57d1af4b, 0x9e21ffd4, 0x6393064d, 0x7407376e, 0xe484762e, 0x122a4e53, + 0x4a37aa43, 0x3888a6be, 0xee77864e, 0x039c8dd5, 0x688d89af, 0x0e988f62, 0x08218246, 0xfc2f8246, + 0xd1d97040, 0xd64cd4b2, 0x5ae4a6b8, 0x7d0de9bc, 0x8d304d61, 0x06c5c672, 0xa4c8bd4d, 0xe0fd373b, + 0x575ebe4d, 0x72d26277, 0x55570f55, 0x77b154d9, 0xe214293a, 0xfc740f4b, 0xfe3f6a57, 0xa9c55f02, + 0xae4054db, 0x2394d918, 0xb511b24a, 0xb8741ab2, 0x0758e65e, 0xc7b5795b, 0xb0a30a4c, 0xaf7f170c, + 0xf3b4762e, 0x8179576d, 0x738a1581, 0x4b95b64c, 0x9829b618, 0x1bea932e, 0x7bdeaa4b, 0xcb5e0281, + 0x65618f54, 0x0658474b, 0x27066acf, 0x40556d65, 0x7d204d53, 0xf28bc244, 0xdce23455, 0xadc0ff54, + 0x3863c948, 0xcee34e5f, 0xdeb85e02, 0x2ed17a61, 0x6a7b094d, 0x7f0cfc40, 0x59603f54, 0x3220afbc, + 0xb5dfd962, 0x125d21c0, 0x13f8d243, 0xacfefb4e, 0x86c2c147, 0x3d8bbd59, 0xbd02a21f, 0x2593042e, + 0xc6a17a7c, 0x28925861, 0xb487ed44, 0xb5f4fd6d, 0x90c28a45, 0x5a14f74d, 0x43d71b4c, 0x728ebb5d, + 0x885bf950, 0x08134dd0, 0x38ec046e, 0xc575684b, 0x50082d2e, 0xa2f47757, 0x270f86ae, 0xf3ff6462, + 0x10ed3f4e, 0x4b58d462, 0xe01ce23e, 0x8c5b092e, 0x63e52f4e, 0x22c1e85d, 0xa908f54e, 0x8591624f, + 0x2c0fb94e, 0xa280ba3c, 0xb6f41b4c, 0x24f9aa47, 0x27201647, 0x3a3ea6dc, 0xa14fc3be, 0x3c34bdd5, + 0x5b8d4f5b, 0xaadeaf4b, 0xc71cab50, 0x15697a4c, 0x9a1a734c, 0x2a037d81, 0x2590bd59, 0x48ec2741, + 0x53489c5b, 0x7f00314b, 0x2170d362, 0xf2e92542, 0x42c10b44, 0x98f0f118, 0x883a3456, 0x099a932e, + 0xea38f7bc, 0x644e9247, 0xbb61b62e, 0x30e0863d, 0x5f51be54, 0x207215c7, 0x5f306c45, 0xaa7f3932, + 0x98da7d45, 0x4e339b59, 0x2e411581, 0xa808f618, 0xad2c0c59, 0x54476741, 0x09e99fd1, 0x5db8f752, + 0xc16df8bd, 0x1dd4b44f, 0x106edf2e, 0x9e15c180, 0x2ad6b56f, 0x633a5332, 0xff33787c, 0x077cb545, + 0x6610be6d, 0x75aad2c4, 0x72fb4d5b, 0xe81e0f59, 0x576f6332, 0x47333373, 0x351ed783, 0x2d90fb50, + 0x8d5e0f6c, 0x5b27a552, 0xdb293ebb, 0xe55ef950, 0x4b133ad8, 0x75df975a, 0x7b6a8740, 0xa899464b, + 0xfab15161, 0x10f8b64d, 0xd055ea4d, 0xee8e146b, 0x4b14afb8, 0x4bc1c44a, 0x9b961dcc, 0xd111ff43, + 0xfca0b745, 0xc800e412, 0x0afad9d1, 0xf751c350, 0xf9f0cccf, 0xa290a545, 0x8ef13763, 0x7ec70d59, + 0x2b066acf, 0x65496c45, 0xade02c1b, 0xae6eb077, 0x92c1e65b, 0xc064e6a9, 0xc649e56d, 0x5287a243, + 0x36de4f5b, 0x5b1df6ad, 0x65c39a59, 0xdba805b2, 0x20067aa8, 0x6457e56d, 0x3cee26cf, 0xfd3ff26d, + 0x04f86d4a, 0x06b8e048, 0xa93bcd5c, 0x91135852, 0xbe90a643, 0x8fa0094d, 0x06d8215f, 0x2677094d, + 0xd735685c, 0x164a00c9, 0x5209ac5f, 0xa9564c5c, 0x3b504f5f, 0xcc826bd0, 0x4615042e, 0x5fe13b4a, + 0x8c81b86d, 0x879ab68c, 0x1de564b8, 0x434487d8, 0x2dcb1b63, 0x82ab524a, 0xb0676abb, 0xa13d9c62, + 0xdbb5b86d, 0x5b7f4b59, 0xaddfb44d, 0xad773532, 0x3997054c, 0x72cebd89, 0xb194544c, 0xc5b8046e, + 0x6e1adeb2, 0xaa5abb51, 0xefb54b44, 0x15efc54f, 0xe9f1bc4d, 0x5f401b6c, 0x97f018ad, 0xc82f9252, + 0x2cdc762e, 0x8e52e56d, 0x1827175e, 0x9b7d7d80, 0xb2ad6845, 0x51065140, 0x71180a18, 0x5b27006c, + 0x0621e255, 0x721cbe58, 0x670c0cb8, 0xf8bd715d, 0xe0bdc5d9, 0xed843501, 0x4b84554d, 0x7f1a18bc, + 0x53bcaf47, 0x5729d35f, 0xf0dda246, 0x22382bd0, 0x4d641fb0, 0x316afcde, 0x50a22f1f, 0x73608046, + 0xc461d84a, 0xb2dbe247, }; From 5df1a22c2e626a767a356265616f1f28e4346137 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Tue, 17 Jan 2012 21:50:08 -0500 Subject: [PATCH 070/298] Various updates to the release process --- doc/release-process.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/release-process.txt b/doc/release-process.txt index 953761b4a95..8bf944a29e6 100644 --- a/doc/release-process.txt +++ b/doc/release-process.txt @@ -1,3 +1,5 @@ +* update translations (ping tcatm on IRC for now) + * update (commit) version in sources src/serialize.h share/setup.nsi @@ -34,9 +36,9 @@ 2. windows 32-bit binary + source 3. windows installer -* upload source and builds to SF +* upload builds to SF -* create SHA1SUMS for builds, and PGP-sign it +* create SHA256SUMS for builds, and PGP-sign it * update bitcoin.org version From 3d3f9cd120e3761aa14dcb1550d977b40fafdf8c Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Tue, 17 Jan 2012 21:50:08 -0500 Subject: [PATCH 071/298] Various updates to the release process --- doc/release-process.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/release-process.txt b/doc/release-process.txt index 14d8efeb32d..9be6b782a40 100644 --- a/doc/release-process.txt +++ b/doc/release-process.txt @@ -1,3 +1,5 @@ +* update translations (ping tcatm on IRC for now) + * update (commit) version in sources bitcoin-qt.pro src/serialize.h @@ -77,9 +79,9 @@ Build output expected: Bitcoin-Qt.dmg -* upload source and builds to SourceForge +* upload builds to SourceForge -* create SHA1SUMS for builds, and PGP-sign it +* create SHA256SUMS for builds, and PGP-sign it * update bitcoin.org version From d1e56838dc067568cfce7bc85bdc228da58f2597 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Thu, 2 Feb 2012 17:27:44 -0500 Subject: [PATCH 072/298] Bugfix: Support building test_bitcoin with shared-object boost test framework Conflicts: src/makefile.unix --- src/makefile.unix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/makefile.unix b/src/makefile.unix index 6c48199546d..9d97ae50ca6 100644 --- a/src/makefile.unix +++ b/src/makefile.unix @@ -16,6 +16,8 @@ ifdef STATIC ifeq (${STATIC}, all) LMODE2 = static endif +else + TESTDEFS += -DBOOST_TEST_DYN_LINK endif # for boost 1.37, add -mt to the boost libraries @@ -140,14 +142,14 @@ bitcoind: $(OBJS:obj/%=obj/nogui/%) $(CXX) $(xCXXFLAGS) -o $@ $^ $(LDFLAGS) $(LIBS) obj/test/%.o: test/%.cpp - $(CXX) -c $(xCXXFLAGS) -MMD -o $@ $< + $(CXX) -c $(TESTDEFS) $(xCXXFLAGS) -MMD -o $@ $< @cp $(@:%.o=%.d) $(@:%.o=%.P); \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \ rm -f $(@:%.o=%.d) test_bitcoin: obj/test/test_bitcoin.o $(filter-out obj/nogui/init.o,$(OBJS:obj/%=obj/nogui/%)) - $(CXX) $(xCXXFLAGS) -o $@ $(LIBPATHS) $^ -Wl,-Bstatic -lboost_unit_test_framework $(LDFLAGS) $(LIBS) + $(CXX) $(xCXXFLAGS) -o $@ $(LIBPATHS) $^ -Wl,-B$(LMODE) -lboost_unit_test_framework $(LDFLAGS) $(LIBS) clean: -rm -f bitcoind test_bitcoin From 1677743fca631f8fb970fe917866dd982c6ddd40 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Mon, 23 Jan 2012 14:27:08 -0500 Subject: [PATCH 073/298] Rename src/obj/test to src/obj-test to workaround bug in older GNU Make --- src/makefile.unix | 10 +++++----- src/obj-test/.gitignore | 2 ++ 2 files changed, 7 insertions(+), 5 deletions(-) create mode 100644 src/obj-test/.gitignore diff --git a/src/makefile.unix b/src/makefile.unix index 9d97ae50ca6..53948bcba68 100644 --- a/src/makefile.unix +++ b/src/makefile.unix @@ -129,7 +129,7 @@ all: bitcoind # auto-generated dependencies: -include obj/nogui/*.P --include obj/test/*.P +-include obj-test/*.P obj/nogui/%.o: %.cpp $(CXX) -c $(xCXXFLAGS) -MMD -o $@ $< @@ -141,21 +141,21 @@ obj/nogui/%.o: %.cpp bitcoind: $(OBJS:obj/%=obj/nogui/%) $(CXX) $(xCXXFLAGS) -o $@ $^ $(LDFLAGS) $(LIBS) -obj/test/%.o: test/%.cpp +obj-test/%.o: test/%.cpp $(CXX) -c $(TESTDEFS) $(xCXXFLAGS) -MMD -o $@ $< @cp $(@:%.o=%.d) $(@:%.o=%.P); \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \ rm -f $(@:%.o=%.d) -test_bitcoin: obj/test/test_bitcoin.o $(filter-out obj/nogui/init.o,$(OBJS:obj/%=obj/nogui/%)) +test_bitcoin: obj-test/test_bitcoin.o $(filter-out obj/nogui/init.o,$(OBJS:obj/%=obj/nogui/%)) $(CXX) $(xCXXFLAGS) -o $@ $(LIBPATHS) $^ -Wl,-B$(LMODE) -lboost_unit_test_framework $(LDFLAGS) $(LIBS) clean: -rm -f bitcoind test_bitcoin -rm -f obj/*.o -rm -f obj/nogui/*.o - -rm -f obj/test/*.o + -rm -f obj-test/*.o -rm -f obj/*.P -rm -f obj/nogui/*.P - -rm -f obj/test/*.P + -rm -f obj-test/*.P diff --git a/src/obj-test/.gitignore b/src/obj-test/.gitignore new file mode 100644 index 00000000000..d6b7ef32c84 --- /dev/null +++ b/src/obj-test/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore From 22388eac08a4a543686c5402ca7ec22336e53468 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Mon, 23 Jan 2012 15:58:06 -0500 Subject: [PATCH 074/298] Support makefile.osx building test_bitcoin with dynamic boost --- src/makefile.osx | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/makefile.osx b/src/makefile.osx index de718879356..cbd51b049f0 100644 --- a/src/makefile.osx +++ b/src/makefile.osx @@ -22,6 +22,8 @@ USE_UPNP:=1 LIBS= -dead_strip ifdef STATIC # Build STATIC if you are redistributing the bitcoind binary +TESTLIBS += \ + $(DEPSDIR)/lib/libboost_unit_test_framework-mt.a LIBS += \ $(DEPSDIR)/lib/db48/libdb_cxx-4.8.a \ $(DEPSDIR)/lib/libboost_system-mt.a \ @@ -29,8 +31,11 @@ LIBS += \ $(DEPSDIR)/lib/libboost_program_options-mt.a \ $(DEPSDIR)/lib/libboost_thread-mt.a \ $(DEPSDIR)/lib/libssl.a \ - $(DEPSDIR)/lib/libcrypto.a + $(DEPSDIR)/lib/libcrypto.a \ + -lz else +TESTLIBS += \ + -lboost_unit_test_framework-mt LIBS += \ -ldb_cxx-4.8 \ -lboost_system-mt \ @@ -38,7 +43,9 @@ LIBS += \ -lboost_program_options-mt \ -lboost_thread-mt \ -lssl \ - -lcrypto + -lcrypto \ + -lz +TESTDEFS += -DBOOST_TEST_DYN_LINK endif DEFS=-DMAC_OSX -DMSG_NOSIGNAL=0 -DUSE_SSL @@ -98,7 +105,7 @@ all: bitcoind # auto-generated dependencies: -include obj/nogui/*.P --include obj/test/*.P +-include obj-test/*.P obj/nogui/%.o: %.cpp $(CXX) -c $(CFLAGS) -MMD -o $@ $< @@ -111,20 +118,20 @@ bitcoind: $(OBJS:obj/%=obj/nogui/%) $(CXX) $(CFLAGS) -o $@ $(LIBPATHS) $^ $(LIBS) obj/test/%.o: test/%.cpp - $(CXX) -c $(CFLAGS) -MMD -o $@ $< + $(CXX) -c $(TESTDEFS) $(CFLAGS) -MMD -o $@ $< @cp $(@:%.o=%.d) $(@:%.o=%.P); \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \ rm -f $(@:%.o=%.d) test_bitcoin: obj/test/test_bitcoin.o $(filter-out obj/nogui/init.o,$(OBJS:obj/%=obj/nogui/%)) - $(CXX) $(CFLAGS) -o $@ $(LIBPATHS) $^ $(LIBS) $(DEPSDIR)/lib/libboost_unit_test_framework-mt.a + $(CXX) $(CFLAGS) -o $@ $(LIBPATHS) $^ $(LIBS) $(TESTLIBS) clean: -rm -f bitcoind test_bitcoin -rm -f obj/*.o -rm -f obj/nogui/*.o - -rm -f obj/test/*.o + -rm -f obj-test/*.o -rm -f obj/*.P -rm -f obj/nogui/*.P - -rm -f obj/test/*.P + -rm -f obj-test/*.P From bccbc5f4c363692d3598c16614a875dc4cd6d389 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Wed, 7 Dec 2011 00:00:04 -0500 Subject: [PATCH 075/298] Automatically refocus on new SendCoinsEntrys and scroll to them. --- src/qt/sendcoinsdialog.cpp | 7 +++++++ src/qt/sendcoinsentry.cpp | 5 +++++ src/qt/sendcoinsentry.h | 2 ++ 3 files changed, 14 insertions(+) diff --git a/src/qt/sendcoinsdialog.cpp b/src/qt/sendcoinsdialog.cpp index 762f27dfa66..6d32891172f 100644 --- a/src/qt/sendcoinsdialog.cpp +++ b/src/qt/sendcoinsdialog.cpp @@ -11,6 +11,7 @@ #include #include #include +#include SendCoinsDialog::SendCoinsDialog(QWidget *parent) : QDialog(parent), @@ -188,6 +189,12 @@ SendCoinsEntry *SendCoinsDialog::addEntry() // Focus the field, so that entry can start immediately entry->clear(); + entry->setFocus(); + ui->scrollAreaWidgetContents->resize(ui->scrollAreaWidgetContents->sizeHint()); + QCoreApplication::instance()->processEvents(); + QScrollBar* bar = ui->scrollArea->verticalScrollBar(); + if (bar) + bar->setSliderPosition(bar->maximum()); return entry; } diff --git a/src/qt/sendcoinsentry.cpp b/src/qt/sendcoinsentry.cpp index 23b11ccddeb..ab5460f8c2c 100644 --- a/src/qt/sendcoinsentry.cpp +++ b/src/qt/sendcoinsentry.cpp @@ -151,3 +151,8 @@ bool SendCoinsEntry::isClear() return ui->payTo->text().isEmpty(); } +void SendCoinsEntry::setFocus() +{ + ui->payTo->setFocus(); +} + diff --git a/src/qt/sendcoinsentry.h b/src/qt/sendcoinsentry.h index ccc223b5f5f..2258706d59d 100644 --- a/src/qt/sendcoinsentry.h +++ b/src/qt/sendcoinsentry.h @@ -30,6 +30,8 @@ public: // Hence we have to set it up manually QWidget *setupTabChain(QWidget *prev); + void setFocus(); + public slots: void setRemoveEnabled(bool enabled); void clear(); From edb563e8a5e6145cef6684e6e179b428a115ec62 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Mon, 5 Dec 2011 15:50:22 -0500 Subject: [PATCH 076/298] Testnet difficulty calculation changes, to take effect Feb 15 2012 Allow mining of min-difficulty blocks if 20 minutes have gone by without mining a regular-difficulty block. Normal rules apply every 2016 blocks, though, so there may be a very-slow-to-confirm block at the difficulty-adjustment blocks. --- src/main.cpp | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 03e133b63cd..1c94090190f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -661,6 +661,11 @@ static const int64 nInterval = nTargetTimespan / nTargetSpacing; // unsigned int ComputeMinWork(unsigned int nBase, int64 nTime) { + // Testnet has min-difficulty blocks + // after nTargetSpacing*2 time between blocks: + if (fTestNet && nTime > nTargetSpacing*2) + return bnProofOfWorkLimit.GetCompact(); + CBigNum bnResult; bnResult.SetCompact(nBase); while (nTime > 0 && bnResult < bnProofOfWorkLimit) @@ -675,16 +680,36 @@ unsigned int ComputeMinWork(unsigned int nBase, int64 nTime) return bnResult.GetCompact(); } -unsigned int static GetNextWorkRequired(const CBlockIndex* pindexLast) +unsigned int static GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlock *pblock) { + unsigned int nProofOfWorkLimit = bnProofOfWorkLimit.GetCompact(); // Genesis block if (pindexLast == NULL) - return bnProofOfWorkLimit.GetCompact(); + return nProofOfWorkLimit; // Only change once per interval if ((pindexLast->nHeight+1) % nInterval != 0) + { + // Special rules for testnet after 15 Feb 2012: + if (fTestNet && pblock->nTime > 1329264000) + { + // If the new block's timestamp is more than 2* 10 minutes + // then allow mining of a min-difficulty block. + if (pblock->nTime - pindexLast->nTime > nTargetSpacing*2) + return nProofOfWorkLimit; + else + { + // Return the last non-special-min-difficulty-rules-block + const CBlockIndex* pindex = pindexLast; + while (pindex->pprev && pindex->nHeight % nInterval != 0 && pindex->nBits == nProofOfWorkLimit) + pindex = pindex->pprev; + return pindex->nBits; + } + } + return pindexLast->nBits; + } // Go back by what we want to be 14 days worth of blocks const CBlockIndex* pindexFirst = pindexLast; @@ -1289,7 +1314,7 @@ bool CBlock::AcceptBlock() int nHeight = pindexPrev->nHeight+1; // Check proof of work - if (nBits != GetNextWorkRequired(pindexPrev)) + if (nBits != GetNextWorkRequired(pindexPrev, this)) return error("AcceptBlock() : incorrect proof of work"); // Check timestamp against prev @@ -2812,7 +2837,7 @@ CBlock* CreateNewBlock(CReserveKey& reservekey) pblock->hashPrevBlock = pindexPrev->GetBlockHash(); pblock->hashMerkleRoot = pblock->BuildMerkleTree(); pblock->nTime = max(pindexPrev->GetMedianTimePast()+1, GetAdjustedTime()); - pblock->nBits = GetNextWorkRequired(pindexPrev); + pblock->nBits = GetNextWorkRequired(pindexPrev, pblock.get()); pblock->nNonce = 0; return pblock.release(); From e5b031f5d2a467fa28fbf7667101909a28e430bb Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Tue, 31 Jan 2012 17:36:25 -0500 Subject: [PATCH 077/298] Fix UPnP by reannouncing every 20 minutes. --- src/net.cpp | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/net.cpp b/src/net.cpp index b35a79deaef..f995ea9c2af 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1105,11 +1105,11 @@ void ThreadMapPort2(void* parg) { string strDesc = "Bitcoin " + FormatFullVersion(); #ifndef UPNPDISCOVER_SUCCESS - /* miniupnpc 1.5 */ + /* miniupnpc 1.5 */ r = UPNP_AddPortMapping(urls.controlURL, data.first.servicetype, port, port, lanaddr, strDesc.c_str(), "TCP", 0); #else - /* miniupnpc 1.6 */ + /* miniupnpc 1.6 */ r = UPNP_AddPortMapping(urls.controlURL, data.first.servicetype, port, port, lanaddr, strDesc.c_str(), "TCP", 0, "0"); #endif @@ -1119,6 +1119,7 @@ void ThreadMapPort2(void* parg) port, port, lanaddr, r, strupnperror(r)); else printf("UPnP Port Mapping successful.\n"); + int i = 1; loop { if (fShutdown || !fUseUPnP) { @@ -1128,7 +1129,26 @@ void ThreadMapPort2(void* parg) FreeUPNPUrls(&urls); return; } + if (i % 600 == 0) // Refresh every 20 minutes + { +#ifndef UPNPDISCOVER_SUCCESS + /* miniupnpc 1.5 */ + r = UPNP_AddPortMapping(urls.controlURL, data.first.servicetype, + port, port, lanaddr, strDesc.c_str(), "TCP", 0); +#else + /* miniupnpc 1.6 */ + r = UPNP_AddPortMapping(urls.controlURL, data.first.servicetype, + port, port, lanaddr, strDesc.c_str(), "TCP", 0, "0"); +#endif + + if(r!=UPNPCOMMAND_SUCCESS) + printf("AddPortMapping(%s, %s, %s) failed with code %d (%s)\n", + port, port, lanaddr, r, strupnperror(r)); + else + printf("UPnP Port Mapping successful.\n");; + } Sleep(2000); + i++; } } else { printf("No valid UPnP IGDs found\n"); From 1b6d8f3fca6aef79ea0ccb26303d982d6da78cd1 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Wed, 1 Feb 2012 13:24:15 -0500 Subject: [PATCH 078/298] Allow -upnp to override setting in wallet (and simplify logic a bit) --- src/init.cpp | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/init.cpp b/src/init.cpp index d1332e06100..12e890cbb4c 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -516,16 +516,11 @@ bool AppInit2(int argc, char* argv[]) fAllowDNS = GetBoolArg("-dns"); fNoListen = GetBoolArg("-nolisten"); - if (fHaveUPnP) - { -#if USE_UPNP - if (GetBoolArg("-noupnp")) - fUseUPnP = false; -#else - if (GetBoolArg("-upnp")) - fUseUPnP = true; -#endif - } + // Command-line args override in-wallet settings: + if (mapArgs.count("-upnp")) + fUseUPnP = GetBoolArg("-upnp"); + else if (mapArgs.count("-noupnp")) + fUseUPnP = !GetBoolArg("-noupnp"); if (!fNoListen) { From 71208749839962c41b02101f27a2dd61fb1a7e73 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Wed, 1 Feb 2012 20:14:13 +0100 Subject: [PATCH 079/298] Remove loose amp; from Portugese translation (issue #701) --- src/qt/locale/bitcoin_pt_BR.ts | 71 ++++++++++++++++++++++------------ 1 file changed, 47 insertions(+), 24 deletions(-) diff --git a/src/qt/locale/bitcoin_pt_BR.ts b/src/qt/locale/bitcoin_pt_BR.ts index a9555c3dc47..2c2f7f1ae4d 100644 --- a/src/qt/locale/bitcoin_pt_BR.ts +++ b/src/qt/locale/bitcoin_pt_BR.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -21,7 +23,7 @@ This is experimental software. Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - + @@ -49,7 +51,7 @@ This product includes software developed by the OpenSSL Project for use in the O &New Address... - &amp; Novo endereço ... + &Novo endereço ... @@ -59,7 +61,7 @@ This product includes software developed by the OpenSSL Project for use in the O &Copy to Clipboard - &amp; Copie para a área de transferência do sistema + &Copie para a área de transferência do sistema @@ -69,7 +71,7 @@ This product includes software developed by the OpenSSL Project for use in the O &Delete - &amp; Excluir + &Excluir @@ -89,7 +91,7 @@ This product includes software developed by the OpenSSL Project for use in the O Could not write to file %1. - + @@ -381,7 +383,7 @@ Are you sure you wish to encrypt your wallet? &File - &amp; Arquivo + &Arquivo @@ -391,7 +393,7 @@ Are you sure you wish to encrypt your wallet? &Help - &amp; Ajuda + &Ajuda @@ -416,7 +418,10 @@ Are you sure you wish to encrypt your wallet? %n active connection(s) to Bitcoin network - %n conexão ativa na rede Bitcoin%n conexões ativas na rede Bitcoin + + %n conexão ativa na rede Bitcoin + %n conexões ativas na rede Bitcoin + @@ -431,22 +436,34 @@ Are you sure you wish to encrypt your wallet? %n second(s) ago - %n segundo atrás%n segundos atrás + + %n segundo atrás + %n segundos atrás + %n minute(s) ago - %n minutos atrás%n minutos atrás + + %n minutos atrás + %n minutos atrás + %n hour(s) ago - %n hora atrás%n horas atrás + + %n hora atrás + %n horas atrás + %n day(s) ago - %n dia atrás%n dias atrás + + %n dia atrás + %n dias atrás + @@ -741,12 +758,12 @@ Address: %4 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> @@ -1113,7 +1130,10 @@ p, li { white-space: pre-wrap; } Open for %n block(s) - Open for %n blockOpen for %n blocks + + Open for %n block + Open for %n blocks + @@ -1138,7 +1158,10 @@ p, li { white-space: pre-wrap; } Mined balance will be available in %n more blocks - Mined balance will be available in %n more blockMined balance will be available in %n more blocks + + Mined balance will be available in %n more block + Mined balance will be available in %n more blocks + @@ -1441,9 +1464,9 @@ p, li { white-space: pre-wrap; } - Don't generate coins + Don't generate coins - Don't generate coins + Don't generate coins @@ -1497,16 +1520,16 @@ p, li { white-space: pre-wrap; } - Don't accept connections from outside + Don't accept connections from outside - Don't accept connections from outside + Don't accept connections from outside - Don't attempt to use UPnP to map the listening port + Don't attempt to use UPnP to map the listening port - Don't attempt to use UPnP to map the listening port + Don't attempt to use UPnP to map the listening port @@ -2330,4 +2353,4 @@ but the comment information will be blank. Bitcoin Qt - \ No newline at end of file + From c1c6de6ad4f92c6628dccc271fe4c661e450d130 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Wed, 25 Jan 2012 03:05:16 +0100 Subject: [PATCH 080/298] Check consistency of private keys Reported by onlineproof on IRC: Bitcoin does not verify whether private keys and public keys correspond, when loading a wallet. --- src/db.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/db.cpp b/src/db.cpp index f9a7d6c90a5..bd31bd79431 100644 --- a/src/db.cpp +++ b/src/db.cpp @@ -879,6 +879,8 @@ int CWalletDB::LoadWallet(CWallet* pwallet) CPrivKey pkey; ssValue >> pkey; key.SetPrivKey(pkey); + if (key.GetPubKey() != vchPubKey) + return DB_CORRUPT; } else { From c13d50d8617678c8696b1f33549ed9cc3a0b554e Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Tue, 17 Jan 2012 09:19:23 +0100 Subject: [PATCH 081/298] Revert to global progress indication (see #753) --- src/qt/bitcoingui.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index 75d2a50a25c..f80038c3fba 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -413,7 +413,6 @@ void BitcoinGUI::setNumBlocks(int count) { if(!clientModel) return; - int initTotal = clientModel->getNumBlocksAtStartup(); int total = clientModel->getNumBlocksOfPeers(); QString tooltip; @@ -424,8 +423,8 @@ void BitcoinGUI::setNumBlocks(int count) progressBarLabel->setVisible(true); progressBarLabel->setText(tr("Synchronizing with network...")); progressBar->setVisible(true); - progressBar->setMaximum(total - initTotal); - progressBar->setValue(count - initTotal); + progressBar->setMaximum(total); + progressBar->setValue(count); } else { From d841fc969a3a300ebeaa4279320235f2ff2b0533 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Thu, 26 Jan 2012 19:26:34 +0100 Subject: [PATCH 082/298] Full checking of all loaded keys --- src/db.cpp | 4 +++- src/key.h | 11 +++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/db.cpp b/src/db.cpp index bd31bd79431..600afe383d2 100644 --- a/src/db.cpp +++ b/src/db.cpp @@ -879,7 +879,7 @@ int CWalletDB::LoadWallet(CWallet* pwallet) CPrivKey pkey; ssValue >> pkey; key.SetPrivKey(pkey); - if (key.GetPubKey() != vchPubKey) + if (key.GetPubKey() != vchPubKey || !key.IsValid()) return DB_CORRUPT; } else @@ -887,6 +887,8 @@ int CWalletDB::LoadWallet(CWallet* pwallet) CWalletKey wkey; ssValue >> wkey; key.SetPrivKey(wkey.vchPrivKey); + if (key.GetPubKey() != vchPubKey || !key.IsValid()) + return DB_CORRUPT; } if (!pwallet->LoadKey(key)) return DB_CORRUPT; diff --git a/src/key.h b/src/key.h index d2e66894561..0d0b6d8bb47 100644 --- a/src/key.h +++ b/src/key.h @@ -233,6 +233,17 @@ public: { return CBitcoinAddress(GetPubKey()); } + + bool IsValid() + { + if (!fSet) + return false; + + CSecret secret = GetSecret(); + CKey key2; + key2.SetSecret(secret); + return GetPubKey() == key2.GetPubKey(); + } }; #endif From c11e2b8679e13f739a58faf2a3439d4aaed24364 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Wed, 18 Jan 2012 13:36:44 -0500 Subject: [PATCH 083/298] Only store transactions with missing inputs in the orphan pool. All previous versions of bitcoin could store some types of invalid transactions in the orphan-transaction list. --- src/main.cpp | 27 +++++++++++++++++++++------ src/main.h | 3 ++- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 1c94090190f..dc8503d38f9 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -411,10 +411,11 @@ bool CTransaction::AcceptToMemoryPool(CTxDB& txdb, bool fCheckInputs, bool* pfMi // Check against previous transactions map mapUnused; int64 nFees = 0; - if (!ConnectInputs(txdb, mapUnused, CDiskTxPos(1,1,1), pindexBest, nFees, false, false)) + bool fInvalid = false; + if (!ConnectInputs(txdb, mapUnused, CDiskTxPos(1,1,1), pindexBest, nFees, false, false, 0, fInvalid)) { - if (pfMissingInputs) - *pfMissingInputs = true; + if (fInvalid) + return error("AcceptToMemoryPool() : FetchInputs found invalid tx %s", hash.ToString().substr(0,10).c_str()); return error("AcceptToMemoryPool() : ConnectInputs failed %s", hash.ToString().substr(0,10).c_str()); } @@ -833,8 +834,15 @@ bool CTransaction::DisconnectInputs(CTxDB& txdb) bool CTransaction::ConnectInputs(CTxDB& txdb, map& mapTestPool, CDiskTxPos posThisTx, - CBlockIndex* pindexBlock, int64& nFees, bool fBlock, bool fMiner, int64 nMinFee) + CBlockIndex* pindexBlock, int64& nFees, bool fBlock, bool fMiner, int64 nMinFee, + bool& fInvalid) { + // FetchInputs can return false either because we just haven't seen some inputs + // (in which case the transaction should be stored as an orphan) + // or because the transaction is malformed (in which case the transaction should + // be dropped). If tx is definitely invalid, fInvalid will be set to true. + fInvalid = false; + // Take over previous transactions' spent pointers if (!IsCoinBase()) { @@ -881,7 +889,12 @@ bool CTransaction::ConnectInputs(CTxDB& txdb, map& mapTestPoo } if (prevout.n >= txPrev.vout.size() || prevout.n >= txindex.vSpent.size()) + { + // Revisit this if/when transaction replacement is implemented and allows + // adding inputs: + fInvalid = true; return error("ConnectInputs() : %s prevout.n out of range %d %d %d prev tx %s\n%s", GetHash().ToString().substr(0,10).c_str(), prevout.n, txPrev.vout.size(), txindex.vSpent.size(), prevout.hash.ToString().substr(0,10).c_str(), txPrev.ToString().c_str()); + } // If prev is coinbase, check that it's matured if (txPrev.IsCoinBase()) @@ -1025,7 +1038,8 @@ bool CBlock::ConnectBlock(CTxDB& txdb, CBlockIndex* pindex) CDiskTxPos posThisTx(pindex->nFile, pindex->nBlockPos, nTxPos); nTxPos += ::GetSerializeSize(tx, SER_DISK); - if (!tx.ConnectInputs(txdb, mapQueuedChanges, posThisTx, pindex, nFees, true, false)) + bool fInvalid; + if (!tx.ConnectInputs(txdb, mapQueuedChanges, posThisTx, pindex, nFees, true, false, 0, fInvalid)) return false; } // Write queued txindex changes @@ -2806,7 +2820,8 @@ CBlock* CreateNewBlock(CReserveKey& reservekey) // Connecting shouldn't fail due to dependency on other memory pool transactions // because we're already processing them in order of dependency map mapTestPoolTmp(mapTestPool); - if (!tx.ConnectInputs(txdb, mapTestPoolTmp, CDiskTxPos(1,1,1), pindexPrev, nFees, false, true, nMinFee)) + bool fInvalid; + if (!tx.ConnectInputs(txdb, mapTestPoolTmp, CDiskTxPos(1,1,1), pindexPrev, nFees, false, true, nMinFee, fInvalid)) continue; swap(mapTestPool, mapTestPoolTmp); diff --git a/src/main.h b/src/main.h index 876a35d9cc3..8a8b3870ec7 100644 --- a/src/main.h +++ b/src/main.h @@ -631,7 +631,8 @@ public: bool ReadFromDisk(COutPoint prevout); bool DisconnectInputs(CTxDB& txdb); bool ConnectInputs(CTxDB& txdb, std::map& mapTestPool, CDiskTxPos posThisTx, - CBlockIndex* pindexBlock, int64& nFees, bool fBlock, bool fMiner, int64 nMinFee=0); + CBlockIndex* pindexBlock, int64& nFees, bool fBlock, bool fMiner, int64 nMinFee, + bool& fInvalid); bool ClientConnectInputs(); bool CheckTransaction() const; bool AcceptToMemoryPool(CTxDB& txdb, bool fCheckInputs=true, bool* pfMissingInputs=NULL); From cac23a5a0b7dc993ea1fb1513159db0af994d0ff Mon Sep 17 00:00:00 2001 From: Gregory Maxwell Date: Sun, 5 Feb 2012 02:30:43 -0500 Subject: [PATCH 084/298] Have bitcoind recommend a secure RPC password. Increase invalid password delay. Help users avoid insecure configurations a bit by recommending a secure RPC password and increasing the incorrect password delay. This may open up a RPC DOS for users with exposed RPC ports and short passwords. Since users shouldn't have exposed RPC ports OR short passwords, the DOS risk is preferable to the compromise risk. Also logs the client IP address for incorrect attempts. --- src/rpc.cpp | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/rpc.cpp b/src/rpc.cpp index a936edbbe47..a703334d6b1 100644 --- a/src/rpc.cpp +++ b/src/rpc.cpp @@ -2008,16 +2008,23 @@ void ThreadRPCServer2(void* parg) if (mapArgs["-rpcuser"] == "" && mapArgs["-rpcpassword"] == "") { + unsigned char rand_pwd[32]; + RAND_bytes(rand_pwd, 32); string strWhatAmI = "To use bitcoind"; if (mapArgs.count("-server")) strWhatAmI = strprintf(_("To use the %s option"), "\"-server\""); else if (mapArgs.count("-daemon")) strWhatAmI = strprintf(_("To use the %s option"), "\"-daemon\""); PrintConsole( - _("Warning: %s, you must set rpcpassword=\nin the configuration file: %s\n" + _("Warning: %s, you must set a rpcpassword in the configuration file:\n %s\n" + "It is recommended you use the following random password:\n" + "rpcuser=bitcoinrpc\n" + "rpcpassword=%s\n" + "(you do not need to remember this password)\n" "If the file does not exist, create it with owner-readable-only file permissions.\n"), strWhatAmI.c_str(), - GetConfigFile().c_str()); + GetConfigFile().c_str(), + EncodeBase58(&rand_pwd[0],&rand_pwd[0]+32).c_str()); CreateThread(Shutdown, NULL); return; } @@ -2104,12 +2111,14 @@ void ThreadRPCServer2(void* parg) } if (!HTTPAuthorized(mapHeaders)) { - // Deter brute-forcing short passwords - if (mapArgs["-rpcpassword"].size() < 15) - Sleep(50); + printf("ThreadRPCServer incorrect password attempt from %s\n",peer.address().to_string().c_str()); + /* Deter brute-forcing short passwords. + If this results in a DOS the user really + shouldn't have their RPC port exposed.*/ + if (mapArgs["-rpcpassword"].size() < 20) + Sleep(250); stream << HTTPReply(401, "") << std::flush; - printf("ThreadRPCServer incorrect password attempt\n"); continue; } From 4664aae3fe2eba4eec84d20f1e7e701ceeeb49bd Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Tue, 7 Feb 2012 22:30:21 -0500 Subject: [PATCH 085/298] Update copyrights to 2012 for files modified this year --- COPYING | 2 +- doc/README | 2 +- doc/README_windows.txt | 2 +- src/checkpoints.cpp | 2 +- src/db.cpp | 2 +- src/headers.h | 2 +- src/init.cpp | 2 +- src/irc.cpp | 2 +- src/key.h | 2 +- src/main.cpp | 2 +- src/main.h | 2 +- src/net.cpp | 2 +- src/net.h | 2 +- src/rpc.cpp | 2 +- src/serialize.h | 2 +- src/util.cpp | 2 +- src/util.h | 2 +- src/wallet.h | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/COPYING b/COPYING index ab042014e82..0f9223ba6b5 100644 --- a/COPYING +++ b/COPYING @@ -1,4 +1,4 @@ -Copyright (c) 2009-2011 Bitcoin Developers +Copyright (c) 2009-2012 Bitcoin Developers Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/doc/README b/doc/README index 40bda47d9c8..197f03dd56b 100644 --- a/doc/README +++ b/doc/README @@ -1,6 +1,6 @@ Bitcoin 0.4.4 BETA -Copyright (c) 2009-2011 Bitcoin Developers +Copyright (c) 2009-2012 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php. This product includes software developed by the OpenSSL Project for use in diff --git a/doc/README_windows.txt b/doc/README_windows.txt index f8f1c341886..ad357130c27 100644 --- a/doc/README_windows.txt +++ b/doc/README_windows.txt @@ -1,6 +1,6 @@ Bitcoin 0.4.4 BETA -Copyright (c) 2009-2011 Bitcoin Developers +Copyright (c) 2009-2012 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php. This product includes software developed by the OpenSSL Project for use in diff --git a/src/checkpoints.cpp b/src/checkpoints.cpp index 508f72b3765..f78712ef4ba 100644 --- a/src/checkpoints.cpp +++ b/src/checkpoints.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Bitcoin developers +// Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying // file license.txt or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/db.cpp b/src/db.cpp index 600afe383d2..783b0799639 100644 --- a/src/db.cpp +++ b/src/db.cpp @@ -1,5 +1,5 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto -// Copyright (c) 2011 The Bitcoin developers +// Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying // file license.txt or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/headers.h b/src/headers.h index 96db87db1ba..88a16d96d7b 100644 --- a/src/headers.h +++ b/src/headers.h @@ -1,5 +1,5 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto -// Copyright (c) 2011 The Bitcoin developers +// Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying // file license.txt or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/init.cpp b/src/init.cpp index 12e890cbb4c..079e67b9363 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -1,5 +1,5 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto -// Copyright (c) 2011 The Bitcoin developers +// Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying // file license.txt or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" diff --git a/src/irc.cpp b/src/irc.cpp index fe96a90a1cf..b632b965461 100644 --- a/src/irc.cpp +++ b/src/irc.cpp @@ -1,5 +1,5 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto -// Copyright (c) 2011 The Bitcoin developers +// Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying // file license.txt or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/key.h b/src/key.h index 0d0b6d8bb47..8b033a029f0 100644 --- a/src/key.h +++ b/src/key.h @@ -1,5 +1,5 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto -// Copyright (c) 2011 The Bitcoin developers +// Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying // file license.txt or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_KEY_H diff --git a/src/main.cpp b/src/main.cpp index dc8503d38f9..9f12829042b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,5 +1,5 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto -// Copyright (c) 2011 The Bitcoin developers +// Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying // file license.txt or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" diff --git a/src/main.h b/src/main.h index 8a8b3870ec7..25cf0790134 100644 --- a/src/main.h +++ b/src/main.h @@ -1,5 +1,5 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto -// Copyright (c) 2011 The Bitcoin developers +// Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying // file license.txt or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_MAIN_H diff --git a/src/net.cpp b/src/net.cpp index f995ea9c2af..764246520ba 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1,5 +1,5 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto -// Copyright (c) 2011 The Bitcoin developers +// Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying // file license.txt or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/net.h b/src/net.h index 03d514ca909..52df06f1be5 100644 --- a/src/net.h +++ b/src/net.h @@ -1,5 +1,5 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto -// Copyright (c) 2011 The Bitcoin developers +// Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying // file license.txt or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_NET_H diff --git a/src/rpc.cpp b/src/rpc.cpp index a703334d6b1..a67f7fc9471 100644 --- a/src/rpc.cpp +++ b/src/rpc.cpp @@ -1,5 +1,5 @@ // Copyright (c) 2010 Satoshi Nakamoto -// Copyright (c) 2011 The Bitcoin developers +// Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying // file license.txt or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/serialize.h b/src/serialize.h index 385c9ab8e93..2bc3a071d77 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -1,5 +1,5 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto -// Copyright (c) 2011 The Bitcoin developers +// Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying // file license.txt or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_SERIALIZE_H diff --git a/src/util.cpp b/src/util.cpp index a3f1c9507d9..85ca02f0aae 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -1,5 +1,5 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto -// Copyright (c) 2011 The Bitcoin developers +// Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying // file license.txt or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" diff --git a/src/util.h b/src/util.h index 9f9001e06eb..a48979c0ef8 100644 --- a/src/util.h +++ b/src/util.h @@ -1,5 +1,5 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto -// Copyright (c) 2011 The Bitcoin developers +// Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying // file license.txt or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_UTIL_H diff --git a/src/wallet.h b/src/wallet.h index 3560a725801..4387e1a01fd 100644 --- a/src/wallet.h +++ b/src/wallet.h @@ -1,5 +1,5 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto -// Copyright (c) 2011 The Bitcoin developers +// Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying // file license.txt or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_WALLET_H From ccd69c7d2219a4a72ad1b6ea01838c3388130ea7 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Tue, 7 Feb 2012 18:20:01 -0500 Subject: [PATCH 086/298] Bugfix: Capitalize kB correctly (upstream: 9d4b05c) --- src/init.cpp | 2 +- src/qt/bitcoinstrings.cpp | 2 +- src/qt/locale/bitcoin_da.ts | 12 ++++++------ src/qt/locale/bitcoin_de.ts | 12 ++++++------ src/qt/locale/bitcoin_en.ts | 6 +++--- src/qt/locale/bitcoin_es.ts | 12 ++++++------ src/qt/locale/bitcoin_es_CL.ts | 12 ++++++------ src/qt/locale/bitcoin_nb.ts | 12 ++++++------ src/qt/locale/bitcoin_nl.ts | 12 ++++++------ src/qt/locale/bitcoin_ru.ts | 12 ++++++------ src/qt/locale/bitcoin_zh_TW.ts | 12 ++++++------ src/qt/optionsdialog.cpp | 4 ++-- 12 files changed, 55 insertions(+), 55 deletions(-) diff --git a/src/init.cpp b/src/init.cpp index f8a63d26def..e158e15da4d 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -204,7 +204,7 @@ bool AppInit2(int argc, char* argv[]) " -upnp \t " + _("Attempt to use UPnP to map the listening port\n") + #endif #endif - " -paytxfee= \t " + _("Fee per KB to add to transactions you send\n") + + " -paytxfee= \t " + _("Fee per kB to add to transactions you send\n") + #ifdef GUI " -server \t\t " + _("Accept command line and JSON-RPC commands\n") + #endif diff --git a/src/qt/bitcoinstrings.cpp b/src/qt/bitcoinstrings.cpp index 647adb9c530..1b0a6767d78 100644 --- a/src/qt/bitcoinstrings.cpp +++ b/src/qt/bitcoinstrings.cpp @@ -24,7 +24,7 @@ QT_TRANSLATE_NOOP("bitcoin-core", "" "86400)\n"), QT_TRANSLATE_NOOP("bitcoin-core", "Don't attempt to use UPnP to map the listening port\n"), QT_TRANSLATE_NOOP("bitcoin-core", "Attempt to use UPnP to map the listening port\n"), -QT_TRANSLATE_NOOP("bitcoin-core", "Fee per KB to add to transactions you send\n"), +QT_TRANSLATE_NOOP("bitcoin-core", "Fee per kB to add to transactions you send\n"), QT_TRANSLATE_NOOP("bitcoin-core", "Accept command line and JSON-RPC commands\n"), QT_TRANSLATE_NOOP("bitcoin-core", "Run in the background as a daemon and accept commands\n"), QT_TRANSLATE_NOOP("bitcoin-core", "Use the test network\n"), diff --git a/src/qt/locale/bitcoin_da.ts b/src/qt/locale/bitcoin_da.ts index b6c148f05a3..ae1c84a4473 100644 --- a/src/qt/locale/bitcoin_da.ts +++ b/src/qt/locale/bitcoin_da.ts @@ -674,8 +674,8 @@ Adresse: %4 - Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended. - Valgfri transaktionsgebyr pr. KB, der hjælper dine transaktioner med at blive behandlet hurtigt. De fleste transaktioner er på 1KB. Gebyr på 0.01 anbefales. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. + Valgfri transaktionsgebyr pr. kB, der hjælper dine transaktioner med at blive behandlet hurtigt. De fleste transaktioner er på 1kB. Gebyr på 0.01 anbefales. @@ -684,8 +684,8 @@ Adresse: %4 - Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended. - Valgfri transaktionsgebyr pr. KB, der hjælper dine transaktioner med at blive behandlet hurtigt. De fleste transaktioner er på 1KB. Gebyr på 0.01 anbefales. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. + Valgfri transaktionsgebyr pr. kB, der hjælper dine transaktioner med at blive behandlet hurtigt. De fleste transaktioner er på 1kB. Gebyr på 0.01 anbefales. @@ -1523,9 +1523,9 @@ p, li { white-space: pre-wrap; } - Fee per KB to add to transactions you send + Fee per kB to add to transactions you send - Gebyr pr. KB, som skal tilføjes til transaktioner du sender + Gebyr pr. kB, som skal tilføjes til transaktioner du sender diff --git a/src/qt/locale/bitcoin_de.ts b/src/qt/locale/bitcoin_de.ts index 27db47528cf..242343b1e1f 100644 --- a/src/qt/locale/bitcoin_de.ts +++ b/src/qt/locale/bitcoin_de.ts @@ -673,8 +673,8 @@ Adresse: %4 - Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended. - Zusätzliche Transaktionsgebühr pro KB, welche sicherstellt, dass Ihre Transaktionen schnell bearbeitet werden. Die meisten Transaktionen sind 1 KB groß. Eine Gebühr von 0.01 wird empfohlen. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. + Zusätzliche Transaktionsgebühr pro kB, welche sicherstellt, dass Ihre Transaktionen schnell bearbeitet werden. Die meisten Transaktionen sind 1 kB groß. Eine Gebühr von 0.01 wird empfohlen. @@ -683,8 +683,8 @@ Adresse: %4 - Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended. - Zusätzliche Transaktionsgebühr pro KB, welche sicherstellt, dass Ihre Transaktionen schnell bearbeitet werden. Die meisten Transaktionen sind 1 KB groß. Eine Gebühr von 0.01 wird empfohlen. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. + Zusätzliche Transaktionsgebühr pro kB, welche sicherstellt, dass Ihre Transaktionen schnell bearbeitet werden. Die meisten Transaktionen sind 1 kB groß. Eine Gebühr von 0.01 wird empfohlen. @@ -1512,9 +1512,9 @@ p, li { white-space: pre-wrap; } - Fee per KB to add to transactions you send + Fee per kB to add to transactions you send - Gebühr pro KB, die gesendeten Transaktionen hinzugefügt wird + Gebühr pro kB, die gesendeten Transaktionen hinzugefügt wird diff --git a/src/qt/locale/bitcoin_en.ts b/src/qt/locale/bitcoin_en.ts index 0d57d9b1544..122f6d56a59 100644 --- a/src/qt/locale/bitcoin_en.ts +++ b/src/qt/locale/bitcoin_en.ts @@ -680,7 +680,7 @@ Address: %4 - Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. @@ -690,7 +690,7 @@ Address: %4 - Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. @@ -1515,7 +1515,7 @@ p, li { white-space: pre-wrap; } - Fee per KB to add to transactions you send + Fee per kB to add to transactions you send diff --git a/src/qt/locale/bitcoin_es.ts b/src/qt/locale/bitcoin_es.ts index 8c6966bfad6..815ba80ab62 100644 --- a/src/qt/locale/bitcoin_es.ts +++ b/src/qt/locale/bitcoin_es.ts @@ -693,8 +693,8 @@ Dirección: %4 - Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended. - Comisión opcional a las transacciones por KB que ayuda a asegurar que tus transacciones son procesadas rápidamente. La mayoría de las transacciones son de 1KB. Se recomienda una comisión de 0.01. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. + Comisión opcional a las transacciones por kB que ayuda a asegurar que tus transacciones son procesadas rápidamente. La mayoría de las transacciones son de 1kB. Se recomienda una comisión de 0.01. @@ -703,8 +703,8 @@ Dirección: %4 - Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended. - Comisión opcional a las transacciones por KB que ayuda a asegurar que tus transacciones son procesadas rápidamente. La mayoría de las transacciones son de 1KB. Se recomienda una comisión de 0.01. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. + Comisión opcional a las transacciones por kB que ayuda a asegurar que tus transacciones son procesadas rápidamente. La mayoría de las transacciones son de 1kB. Se recomienda una comisión de 0.01. @@ -1550,9 +1550,9 @@ p, li { white-space: pre-wrap; } - Fee per KB to add to transactions you send + Fee per kB to add to transactions you send - Comisión por KB para agregar a las transacciones que envias + Comisión por kB para agregar a las transacciones que envias diff --git a/src/qt/locale/bitcoin_es_CL.ts b/src/qt/locale/bitcoin_es_CL.ts index 107b90bb556..80df5ba450b 100644 --- a/src/qt/locale/bitcoin_es_CL.ts +++ b/src/qt/locale/bitcoin_es_CL.ts @@ -693,8 +693,8 @@ Dirección: %4 - Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended. - Comisión de operación opcional por KB que ayuda a asegurar que tus transacciones sean procesadas rápidamente. La mayoría de las transacciones son de 1KB. Se recomienda una comisión de 0.01. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. + Comisión de operación opcional por kB que ayuda a asegurar que tus transacciones sean procesadas rápidamente. La mayoría de las transacciones son de 1kB. Se recomienda una comisión de 0.01. @@ -703,8 +703,8 @@ Dirección: %4 - Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended. - Comisión de operación opcional por KB que ayuda a asegurar que tus transacciones sean procesadas rápidamente. La mayoría de las transacciones son de 1KB. Se recomienda una comisión de 0.01. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. + Comisión de operación opcional por kB que ayuda a asegurar que tus transacciones sean procesadas rápidamente. La mayoría de las transacciones son de 1kB. Se recomienda una comisión de 0.01. @@ -1550,9 +1550,9 @@ p, li { white-space: pre-wrap; } - Fee per KB to add to transactions you send + Fee per kB to add to transactions you send - Comisión por KB para agregar a las transacciones que envias + Comisión por kB para agregar a las transacciones que envias diff --git a/src/qt/locale/bitcoin_nb.ts b/src/qt/locale/bitcoin_nb.ts index ef09e6baf7d..9166af300f9 100644 --- a/src/qt/locale/bitcoin_nb.ts +++ b/src/qt/locale/bitcoin_nb.ts @@ -674,8 +674,8 @@ Adresse: %4 - Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended. - Valgfritt transaksjonsgebyr per KB som hjelper for å sikre at transaksjonene dine blir raskt prosessert. De fleste transaksjoner er 1KB. Et gebyr på 0.01 anbefales. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. + Valgfritt transaksjonsgebyr per kB som hjelper for å sikre at transaksjonene dine blir raskt prosessert. De fleste transaksjoner er 1kB. Et gebyr på 0.01 anbefales. @@ -684,8 +684,8 @@ Adresse: %4 - Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended. - Valgfritt transaksjonsgebyr per KB som hjelper for å sikre at transaksjonene dine blir raskt prosessert. De fleste transaksjoner er 1KB. Et gebyr på 0.01 anbefales. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. + Valgfritt transaksjonsgebyr per kB som hjelper for å sikre at transaksjonene dine blir raskt prosessert. De fleste transaksjoner er 1kB. Et gebyr på 0.01 anbefales. @@ -1524,9 +1524,9 @@ p, li { white-space: pre-wrap; } - Fee per KB to add to transactions you send + Fee per kB to add to transactions you send - Gebyr per KB som skal legges til transaksjoner du sender + Gebyr per kB som skal legges til transaksjoner du sender diff --git a/src/qt/locale/bitcoin_nl.ts b/src/qt/locale/bitcoin_nl.ts index 2b36237d2e5..4a28cac21d6 100644 --- a/src/qt/locale/bitcoin_nl.ts +++ b/src/qt/locale/bitcoin_nl.ts @@ -675,8 +675,8 @@ Adres: %4 - Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended. - Optionele transactiekosten per KB die helpen ervoor te zorgen dat uw transacties snel verwerkt worden. De meeste transacties zijn 1KB. Transactiekosten van 0.01 wordt aangeraden. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. + Optionele transactiekosten per kB die helpen ervoor te zorgen dat uw transacties snel verwerkt worden. De meeste transacties zijn 1kB. Transactiekosten van 0.01 wordt aangeraden. @@ -685,8 +685,8 @@ Adres: %4 - Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended. - Optionele transactiekosten per KB die helpen ervoor te zorgen dat uw transacties snel verwerkt worden. De meeste transacties zijn 1KB. Transactiekosten van 0.01 wordt aangeraden. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. + Optionele transactiekosten per kB die helpen ervoor te zorgen dat uw transacties snel verwerkt worden. De meeste transacties zijn 1kB. Transactiekosten van 0.01 wordt aangeraden. @@ -1526,9 +1526,9 @@ p, li { white-space: pre-wrap; } - Fee per KB to add to transactions you send + Fee per kB to add to transactions you send - Kosten per KB om aan transacties toe te voegen die u verstuurt + Kosten per kB om aan transacties toe te voegen die u verstuurt diff --git a/src/qt/locale/bitcoin_ru.ts b/src/qt/locale/bitcoin_ru.ts index 8bce04ed973..648caabcc34 100644 --- a/src/qt/locale/bitcoin_ru.ts +++ b/src/qt/locale/bitcoin_ru.ts @@ -669,8 +669,8 @@ Address: %4 - Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended. - Опциональная комиссия за кадый KB транзакции, которое позволяет быть уверенным, что Ваша транзакция будет обработана быстро. Большинство транщакций занимают 1 KB. Рекомендованная комиссия: 0.01 BTC. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. + Опциональная комиссия за кадый kB транзакции, которое позволяет быть уверенным, что Ваша транзакция будет обработана быстро. Большинство транщакций занимают 1 kB. Рекомендованная комиссия: 0.01 BTC. @@ -679,8 +679,8 @@ Address: %4 - Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended. - Опциональная комиссия за кадый KB транзакции, которая позволяет быть уверенным, что Ваша транзакция будет обработана быстро. Большинство транзакций занимают 1 KB. Рекомендованная комиссия: 0.01 BTC. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. + Опциональная комиссия за кадый kB транзакции, которая позволяет быть уверенным, что Ваша транзакция будет обработана быстро. Большинство транзакций занимают 1 kB. Рекомендованная комиссия: 0.01 BTC. @@ -1519,9 +1519,9 @@ p, li { white-space: pre-wrap; } - Fee per KB to add to transactions you send + Fee per kB to add to transactions you send - Комиссия (за каждый KB транзакции) + Комиссия (за каждый kB транзакции) diff --git a/src/qt/locale/bitcoin_zh_TW.ts b/src/qt/locale/bitcoin_zh_TW.ts index b0c4bd12d8a..562ddb32302 100644 --- a/src/qt/locale/bitcoin_zh_TW.ts +++ b/src/qt/locale/bitcoin_zh_TW.ts @@ -673,8 +673,8 @@ Address: %4 - Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended. - 非必要的交易手續費, 有助於縮短你的交易處理時間. 以 KB 為計費單位, 而大部份交易的大小是 1KB. 建議設定為 0.01 位元幣. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. + 非必要的交易手續費, 有助於縮短你的交易處理時間. 以 kB 為計費單位, 而大部份交易的大小是 1kB. 建議設定為 0.01 位元幣. @@ -683,8 +683,8 @@ Address: %4 - Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended. - 非必要的交易手續費, 有助於縮短你的交易處理時間. 以 KB 為計費單位, 而大部份交易的大小是 1KB. 建議設定為 0.01 位元幣. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. + 非必要的交易手續費, 有助於縮短你的交易處理時間. 以 kB 為計費單位, 而大部份交易的大小是 1kB. 建議設定為 0.01 位元幣. @@ -1524,9 +1524,9 @@ p, li { white-space: pre-wrap; } - Fee per KB to add to transactions you send + Fee per kB to add to transactions you send - 交易付款時每 KB 的交易手續費 + 交易付款時每 kB 的交易手續費 diff --git a/src/qt/optionsdialog.cpp b/src/qt/optionsdialog.cpp index ea3164e3d79..75fd4ccf186 100644 --- a/src/qt/optionsdialog.cpp +++ b/src/qt/optionsdialog.cpp @@ -214,7 +214,7 @@ MainOptionsPage::MainOptionsPage(QWidget *parent): proxy_hbox->addStretch(1); layout->addLayout(proxy_hbox); - QLabel *fee_help = new QLabel(tr("Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended.")); + QLabel *fee_help = new QLabel(tr("Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended.")); fee_help->setWordWrap(true); layout->addWidget(fee_help); @@ -223,7 +223,7 @@ MainOptionsPage::MainOptionsPage(QWidget *parent): QLabel *fee_label = new QLabel(tr("Pay transaction &fee")); fee_hbox->addWidget(fee_label); fee_edit = new BitcoinAmountField(); - fee_edit->setToolTip(tr("Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended.")); + fee_edit->setToolTip(tr("Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended.")); fee_label->setBuddy(fee_edit); fee_hbox->addWidget(fee_edit); From e7c3e6e4b4bbfaf6772f0c8bd6b4278d0120e6e4 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Sun, 5 Feb 2012 11:53:52 +0100 Subject: [PATCH 087/298] Restructure credit transaction decomposition (solves issue #689) When a transaction has multiple outputs that go to the wallet, list these as multiple transactions in the UI. This is also applied to generated (coinbase) transactions. Also makes the code shorter and easier to understand. --- src/qt/transactionrecord.cpp | 60 ++++++++++++++---------------------- 1 file changed, 23 insertions(+), 37 deletions(-) diff --git a/src/qt/transactionrecord.cpp b/src/qt/transactionrecord.cpp index 52a3080e970..4059207b960 100644 --- a/src/qt/transactionrecord.cpp +++ b/src/qt/transactionrecord.cpp @@ -47,49 +47,35 @@ QList TransactionRecord::decomposeTransaction(const CWallet * // // Credit // - TransactionRecord sub(hash, nTime); - - sub.credit = nNet; - - if (wtx.IsCoinBase()) + BOOST_FOREACH(const CTxOut& txout, wtx.vout) { - // Generated - sub.type = TransactionRecord::Generated; - - if (nCredit == 0) + if(wallet->IsMine(txout)) { - int64 nUnmatured = 0; - BOOST_FOREACH(const CTxOut& txout, wtx.vout) - nUnmatured += wallet->GetCredit(txout); - sub.credit = nUnmatured; - } - } - else - { - bool foundAddress = false; - // Received by Bitcoin Address - BOOST_FOREACH(const CTxOut& txout, wtx.vout) - { - if(wallet->IsMine(txout)) + TransactionRecord sub(hash, nTime); + CBitcoinAddress address; + sub.idx = parts.size(); // sequence number + sub.credit = txout.nValue; + if (wtx.IsCoinBase()) { - CBitcoinAddress address; - if (ExtractAddress(txout.scriptPubKey, wallet, address)) - { - sub.type = TransactionRecord::RecvWithAddress; - sub.address = address.ToString(); - foundAddress = true; - break; - } + // Generated + sub.type = TransactionRecord::Generated; } - } - if(!foundAddress) - { - // Received by IP connection, or other non-address transaction like OP_EVAL - sub.type = TransactionRecord::RecvFromOther; - sub.address = mapValue["from"]; + else if (ExtractAddress(txout.scriptPubKey, wallet, address)) + { + // Received by Bitcoin Address + sub.type = TransactionRecord::RecvWithAddress; + sub.address = address.ToString(); + } + else + { + // Received by IP connection (deprecated features), or a multisignature or other non-simple transaction + sub.type = TransactionRecord::RecvFromOther; + sub.address = mapValue["from"]; + } + + parts.append(sub); } } - parts.append(sub); } else { From da6a3919a96b6070a1facc8ae8c8946bd74838e1 Mon Sep 17 00:00:00 2001 From: Gregory Maxwell Date: Sun, 5 Feb 2012 02:30:43 -0500 Subject: [PATCH 088/298] Have bitcoind recommend a secure RPC password. Increase invalid password delay. Help users avoid insecure configurations a bit by recommending a secure RPC password and increasing the incorrect password delay. This may open up a RPC DOS for users with exposed RPC ports and short passwords. Since users shouldn't have exposed RPC ports OR short passwords, the DOS risk is preferable to the compromise risk. Also logs the client IP address for incorrect attempts. --- src/bitcoinrpc.cpp | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/bitcoinrpc.cpp b/src/bitcoinrpc.cpp index 4031d0cbc34..821574a2ffd 100644 --- a/src/bitcoinrpc.cpp +++ b/src/bitcoinrpc.cpp @@ -2161,16 +2161,23 @@ void ThreadRPCServer2(void* parg) if (mapArgs["-rpcuser"] == "" && mapArgs["-rpcpassword"] == "") { + unsigned char rand_pwd[32]; + RAND_bytes(rand_pwd, 32); string strWhatAmI = "To use bitcoind"; if (mapArgs.count("-server")) strWhatAmI = strprintf(_("To use the %s option"), "\"-server\""); else if (mapArgs.count("-daemon")) strWhatAmI = strprintf(_("To use the %s option"), "\"-daemon\""); PrintConsole( - _("Error: %s, you must set rpcpassword=\nin the configuration file: %s\n" + _("Error: %s, you must set a rpcpassword in the configuration file:\n %s\n" + "It is recommended you use the following random password:\n" + "rpcuser=bitcoinrpc\n" + "rpcpassword=%s\n" + "(you do not need to remember this password)\n" "If the file does not exist, create it with owner-readable-only file permissions.\n"), strWhatAmI.c_str(), - GetConfigFile().c_str()); + GetConfigFile().c_str(), + EncodeBase58(&rand_pwd[0],&rand_pwd[0]+32).c_str()); #ifndef QT_GUI CreateThread(Shutdown, NULL); #endif @@ -2259,12 +2266,14 @@ void ThreadRPCServer2(void* parg) } if (!HTTPAuthorized(mapHeaders)) { - // Deter brute-forcing short passwords - if (mapArgs["-rpcpassword"].size() < 15) - Sleep(50); + printf("ThreadRPCServer incorrect password attempt from %s\n",peer.address().to_string().c_str()); + /* Deter brute-forcing short passwords. + If this results in a DOS the user really + shouldn't have their RPC port exposed.*/ + if (mapArgs["-rpcpassword"].size() < 20) + Sleep(250); stream << HTTPReply(401, "") << std::flush; - printf("ThreadRPCServer incorrect password attempt\n"); continue; } From 4bbd72cca108042cdffee74d10fcc7a540da2b51 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Tue, 7 Feb 2012 22:30:21 -0500 Subject: [PATCH 089/298] Update copyrights to 2012 for files modified this year --- COPYING | 2 +- src/bitcoinrpc.cpp | 2 +- src/db.cpp | 2 +- src/init.cpp | 2 +- src/key.h | 2 +- src/main.cpp | 2 +- src/main.h | 2 +- src/net.cpp | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/COPYING b/COPYING index ab042014e82..0f9223ba6b5 100644 --- a/COPYING +++ b/COPYING @@ -1,4 +1,4 @@ -Copyright (c) 2009-2011 Bitcoin Developers +Copyright (c) 2009-2012 Bitcoin Developers Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/bitcoinrpc.cpp b/src/bitcoinrpc.cpp index 821574a2ffd..b1d85146495 100644 --- a/src/bitcoinrpc.cpp +++ b/src/bitcoinrpc.cpp @@ -1,5 +1,5 @@ // Copyright (c) 2010 Satoshi Nakamoto -// Copyright (c) 2011 The Bitcoin developers +// Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying // file license.txt or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/db.cpp b/src/db.cpp index c2d18279dae..e681d98f1a2 100644 --- a/src/db.cpp +++ b/src/db.cpp @@ -1,5 +1,5 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto -// Copyright (c) 2011 The Bitcoin developers +// Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying // file license.txt or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/init.cpp b/src/init.cpp index e158e15da4d..3ca0dcf2513 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -1,5 +1,5 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto -// Copyright (c) 2011 The Bitcoin developers +// Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying // file license.txt or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" diff --git a/src/key.h b/src/key.h index 010591632ed..6da0dc288d5 100644 --- a/src/key.h +++ b/src/key.h @@ -1,5 +1,5 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto -// Copyright (c) 2011 The Bitcoin developers +// Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying // file license.txt or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_KEY_H diff --git a/src/main.cpp b/src/main.cpp index 07b07447c12..1f8abc04a25 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,5 +1,5 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto -// Copyright (c) 2011 The Bitcoin developers +// Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying // file license.txt or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" diff --git a/src/main.h b/src/main.h index 47394ff8e93..4232d2a0f71 100644 --- a/src/main.h +++ b/src/main.h @@ -1,5 +1,5 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto -// Copyright (c) 2011 The Bitcoin developers +// Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying // file license.txt or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_MAIN_H diff --git a/src/net.cpp b/src/net.cpp index 7b92e874ac5..ad7007d1c2d 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1,5 +1,5 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto -// Copyright (c) 2011 The Bitcoin developers +// Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying // file license.txt or http://www.opensource.org/licenses/mit-license.php. From 84d228ed839e527f8638db5f451e05bd58905f52 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Tue, 7 Feb 2012 18:20:01 -0500 Subject: [PATCH 090/298] Bugfix: Capitalize kB correctly (upstream: 9d4b05c) --- src/qt/locale/bitcoin_hu.ts | 12 ++++++------ src/qt/locale/bitcoin_it.ts | 12 ++++++------ src/qt/locale/bitcoin_pt_BR.ts | 12 ++++++------ src/qt/locale/bitcoin_uk.ts | 6 +++--- src/qt/locale/bitcoin_zh_CN.ts | 12 ++++++------ 5 files changed, 27 insertions(+), 27 deletions(-) diff --git a/src/qt/locale/bitcoin_hu.ts b/src/qt/locale/bitcoin_hu.ts index 25a0a24a18c..bc48ed889a5 100644 --- a/src/qt/locale/bitcoin_hu.ts +++ b/src/qt/locale/bitcoin_hu.ts @@ -673,8 +673,8 @@ Cím: %4 - Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended. - Opcionális, KB-onkénti tranzakciós díj a tranzakcióid minél gyorsabb feldolgozásának elősegítésére. A legtöbb tranzakció 1 KB-os. 0,01 BTC ajánlott. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. + Opcionális, kB-onkénti tranzakciós díj a tranzakcióid minél gyorsabb feldolgozásának elősegítésére. A legtöbb tranzakció 1 kB-os. 0,01 BTC ajánlott. @@ -683,8 +683,8 @@ Cím: %4 - Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended. - Opcionális, KB-onkénti tranzakciós díj a tranzakcióid minél gyorsabb feldolgozásának elősegítésére. A legtöbb tranzakció 1 KB-os. 0,01 BTC ajánlott. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. + Opcionális, kB-onkénti tranzakciós díj a tranzakcióid minél gyorsabb feldolgozásának elősegítésére. A legtöbb tranzakció 1 kB-os. 0,01 BTC ajánlott. @@ -1525,9 +1525,9 @@ p, li { white-space: pre-wrap; } - Fee per KB to add to transactions you send + Fee per kB to add to transactions you send - KB-onként felajánlandó díj az általad küldött tranzakciókhoz + kB-onként felajánlandó díj az általad küldött tranzakciókhoz diff --git a/src/qt/locale/bitcoin_it.ts b/src/qt/locale/bitcoin_it.ts index 95d76005fdd..02d0baa120d 100644 --- a/src/qt/locale/bitcoin_it.ts +++ b/src/qt/locale/bitcoin_it.ts @@ -675,8 +675,8 @@ Indirizzo: %4 - Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended. - Commissione di transazione per ogni KB; è opzionale e contribuisce ad assicurare che le transazioni siano elaborate velocemente. La maggior parte delle transazioni è 1KB. Commissione raccomandata 0,01. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. + Commissione di transazione per ogni kB; è opzionale e contribuisce ad assicurare che le transazioni siano elaborate velocemente. La maggior parte delle transazioni è 1kB. Commissione raccomandata 0,01. @@ -685,8 +685,8 @@ Indirizzo: %4 - Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended. - Commissione di transazione per ogni KB; è opzionale e contribuisce ad assicurare che le transazioni siano elaborate velocemente. La maggior parte delle transazioni è 1KB. Commissione raccomandata 0,01. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. + Commissione di transazione per ogni kB; è opzionale e contribuisce ad assicurare che le transazioni siano elaborate velocemente. La maggior parte delle transazioni è 1kB. Commissione raccomandata 0,01. @@ -1526,9 +1526,9 @@ p, li { white-space: pre-wrap; }⏎ - Fee per KB to add to transactions you send + Fee per kB to add to transactions you send - Commissione al KB da aggiungere alle transazioni in uscita + Commissione al kB da aggiungere alle transazioni in uscita diff --git a/src/qt/locale/bitcoin_pt_BR.ts b/src/qt/locale/bitcoin_pt_BR.ts index 2c2f7f1ae4d..68bd057fe2a 100644 --- a/src/qt/locale/bitcoin_pt_BR.ts +++ b/src/qt/locale/bitcoin_pt_BR.ts @@ -684,8 +684,8 @@ Address: %4 - Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended. - Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. @@ -694,8 +694,8 @@ Address: %4 - Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended. - Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. @@ -1541,9 +1541,9 @@ p, li { white-space: pre-wrap; } - Fee per KB to add to transactions you send + Fee per kB to add to transactions you send - Fee per KB to add to transactions you send + Fee per kB to add to transactions you send diff --git a/src/qt/locale/bitcoin_uk.ts b/src/qt/locale/bitcoin_uk.ts index 57313b7a521..6cbb51633b0 100644 --- a/src/qt/locale/bitcoin_uk.ts +++ b/src/qt/locale/bitcoin_uk.ts @@ -674,7 +674,7 @@ Address: %4 - Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. Опціональна комісія за кожен Кб переказу, яка дозволяє бути впевненим у тому, що ваш переказ буде оброблено швидко. Розмір більшості переказів рівен 1 Кб. Рекомендована комісія: 0,01. @@ -684,7 +684,7 @@ Address: %4 - Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. Опціональна комісія за кожен Кб переказу, яка дозволяє бути впевненим у тому, що ваш переказ буде оброблено швидко. Розмір більшості переказів рівен 1 Кб. Рекомендована комісія: 0,01. @@ -1525,7 +1525,7 @@ p, li { white-space: pre-wrap; } - Fee per KB to add to transactions you send + Fee per kB to add to transactions you send Комісія за Кб diff --git a/src/qt/locale/bitcoin_zh_CN.ts b/src/qt/locale/bitcoin_zh_CN.ts index 3faaac3c97b..832a86ed07b 100644 --- a/src/qt/locale/bitcoin_zh_CN.ts +++ b/src/qt/locale/bitcoin_zh_CN.ts @@ -674,8 +674,8 @@ Address: %4 - Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended. - 为每1KB交易数据支付交易费将保证您的交易尽快被处理.大部分交易数据都小于1KB. 建议支付0.01个比特币的交易费. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. + 为每1kB交易数据支付交易费将保证您的交易尽快被处理.大部分交易数据都小于1kB. 建议支付0.01个比特币的交易费. @@ -684,8 +684,8 @@ Address: %4 - Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended. - 为每1KB交易数据支付交易费将保证您的交易尽快被处理.大部分交易数据都小于1KB. 建议支付0.01个比特币的交易费. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. + 为每1kB交易数据支付交易费将保证您的交易尽快被处理.大部分交易数据都小于1kB. 建议支付0.01个比特币的交易费. @@ -1524,9 +1524,9 @@ p, li { white-space: pre-wrap; } - Fee per KB to add to transactions you send + Fee per kB to add to transactions you send - 每发送1KB交易所需的费用 + 每发送1kB交易所需的费用 From 76e707a44e280e2b0e6df776d16a86df1002ff3b Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Sat, 11 Feb 2012 15:25:42 +0100 Subject: [PATCH 091/298] Fix #822 --- src/rpc.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rpc.cpp b/src/rpc.cpp index a67f7fc9471..33108948d3c 100644 --- a/src/rpc.cpp +++ b/src/rpc.cpp @@ -1301,7 +1301,7 @@ void ThreadCleanWalletPassphrase(void* parg) if (nWalletUnlockTime < nMyWakeTime) nWalletUnlockTime = nMyWakeTime; } - free(parg); + delete (int*)parg; return; } From 888ac4e7a326986945ca91668c47a3d8fa981d49 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Thu, 9 Feb 2012 22:41:42 -0500 Subject: [PATCH 092/298] Get ext. IP from UPnP, make sure addrMe IsRoutable() in version. This fixes a potential bug where some NATs may replace the node's interal IP with its external IP in version messages, causing incorrect checksums when version messages begin being checksummed on February 14, 2012. --- src/net.cpp | 20 ++++++++++++++++++++ src/net.h | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/net.cpp b/src/net.cpp index 764246520ba..83e7f28c6bc 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1103,6 +1103,26 @@ void ThreadMapPort2(void* parg) r = UPNP_GetValidIGD(devlist, &urls, &data, lanaddr, sizeof(lanaddr)); if (r == 1) { + if (!addrLocalHost.IsRoutable()) + { + char externalIPAddress[40]; + r = UPNP_GetExternalIPAddress(urls.controlURL, data.first.servicetype, externalIPAddress); + if(r != UPNPCOMMAND_SUCCESS) + printf("UPnP: GetExternalIPAddress() returned %d\n", r); + else + { + if(externalIPAddress[0]) + { + printf("UPnP: ExternalIPAddress = %s\n", externalIPAddress); + CAddress addrExternalFromUPnP(externalIPAddress, 0, false, nLocalServices); + if (addrExternalFromUPnP.IsRoutable()) + addrLocalHost = addrExternalFromUPnP; + } + else + printf("UPnP: GetExternalIPAddress failed.\n"); + } + } + string strDesc = "Bitcoin " + FormatFullVersion(); #ifndef UPNPDISCOVER_SUCCESS /* miniupnpc 1.5 */ diff --git a/src/net.h b/src/net.h index 52df06f1be5..d8b90222769 100644 --- a/src/net.h +++ b/src/net.h @@ -355,7 +355,7 @@ public: /// when NTP implemented, change to just nTime = GetAdjustedTime() int64 nTime = (fInbound ? GetAdjustedTime() : GetTime()); CAddress addrYou = (fUseProxy ? CAddress("0.0.0.0") : addr); - CAddress addrMe = (fUseProxy ? CAddress("0.0.0.0") : addrLocalHost); + CAddress addrMe = (fUseProxy || !addrLocalHost.IsRoutable() ? CAddress("0.0.0.0") : addrLocalHost); RAND_bytes((unsigned char*)&nLocalHostNonce, sizeof(nLocalHostNonce)); PushMessage("version", VERSION, nLocalServices, nTime, addrYou, addrMe, nLocalHostNonce, std::string(pszSubVer), nBestHeight); From 4c38fbae959c69e524e2f7453a221b5f29a5d12f Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Fri, 10 Feb 2012 08:28:32 +0100 Subject: [PATCH 093/298] Enable accessible widgets Qt module on win32, so that people with screen readers such as NVDA can make sense of it. --- bitcoin-qt.pro | 2 +- src/init.cpp | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/bitcoin-qt.pro b/bitcoin-qt.pro index 19349c708d0..790c0751ca0 100644 --- a/bitcoin-qt.pro +++ b/bitcoin-qt.pro @@ -62,7 +62,7 @@ contains(USE_SSL, 1) { contains(BITCOIN_NEED_QT_PLUGINS, 1) { DEFINES += BITCOIN_NEED_QT_PLUGINS - QTPLUGIN += qcncodecs qjpcodecs qtwcodecs qkrcodecs + QTPLUGIN += qcncodecs qjpcodecs qtwcodecs qkrcodecs qtaccessiblewidgets } !windows { diff --git a/src/init.cpp b/src/init.cpp index 3ca0dcf2513..51e9ed604ee 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -20,6 +20,7 @@ Q_IMPORT_PLUGIN(qcncodecs) Q_IMPORT_PLUGIN(qjpcodecs) Q_IMPORT_PLUGIN(qtwcodecs) Q_IMPORT_PLUGIN(qkrcodecs) +Q_IMPORT_PLUGIN(qtaccessiblewidgets) #endif using namespace std; From 6ebb141bf941183aefc652b525c07430b35863ad Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Fri, 9 Dec 2011 22:35:57 +0100 Subject: [PATCH 094/298] Prevent window from being shown momentarily when using -min - In a previous patch, show() was added to all the page switcher functions. As the contructor calls showOverviewPage(), this means the window is shown in the constructor. - This change prevents this by connecting show() to the signal instead. --- src/qt/bitcoingui.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index f80038c3fba..5d9c0d9f00f 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -193,10 +193,15 @@ void BitcoinGUI::createActions() sendCoinsAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_2)); tabGroup->addAction(sendCoinsAction); + connect(overviewAction, SIGNAL(triggered()), this, SLOT(show())); connect(overviewAction, SIGNAL(triggered()), this, SLOT(gotoOverviewPage())); + connect(historyAction, SIGNAL(triggered()), this, SLOT(show())); connect(historyAction, SIGNAL(triggered()), this, SLOT(gotoHistoryPage())); + connect(addressBookAction, SIGNAL(triggered()), this, SLOT(show())); connect(addressBookAction, SIGNAL(triggered()), this, SLOT(gotoAddressBookPage())); + connect(receiveCoinsAction, SIGNAL(triggered()), this, SLOT(show())); connect(receiveCoinsAction, SIGNAL(triggered()), this, SLOT(gotoReceiveCoinsPage())); + connect(sendCoinsAction, SIGNAL(triggered()), this, SLOT(show())); connect(sendCoinsAction, SIGNAL(triggered()), this, SLOT(gotoSendCoinsPage())); quitAction = new QAction(QIcon(":/icons/quit"), tr("E&xit"), this); @@ -598,7 +603,6 @@ void BitcoinGUI::incomingTransaction(const QModelIndex & parent, int start, int void BitcoinGUI::gotoOverviewPage() { - show(); overviewAction->setChecked(true); centralWidget->setCurrentWidget(overviewPage); @@ -608,7 +612,6 @@ void BitcoinGUI::gotoOverviewPage() void BitcoinGUI::gotoHistoryPage() { - show(); historyAction->setChecked(true); centralWidget->setCurrentWidget(transactionsPage); @@ -619,7 +622,6 @@ void BitcoinGUI::gotoHistoryPage() void BitcoinGUI::gotoAddressBookPage() { - show(); addressBookAction->setChecked(true); centralWidget->setCurrentWidget(addressBookPage); @@ -630,7 +632,6 @@ void BitcoinGUI::gotoAddressBookPage() void BitcoinGUI::gotoReceiveCoinsPage() { - show(); receiveCoinsAction->setChecked(true); centralWidget->setCurrentWidget(receiveCoinsPage); @@ -641,7 +642,6 @@ void BitcoinGUI::gotoReceiveCoinsPage() void BitcoinGUI::gotoSendCoinsPage() { - show(); sendCoinsAction->setChecked(true); centralWidget->setCurrentWidget(sendCoinsPage); From 41cde5bbdcf76bda63cb7c55675340726c73b7fc Mon Sep 17 00:00:00 2001 From: Janne Pulkkinen Date: Fri, 3 Feb 2012 20:08:50 +0200 Subject: [PATCH 095/298] Fix Minimize to the tray instead of the taskbar --- src/qt/bitcoingui.cpp | 32 ++++++++++++++++++++++---------- src/qt/bitcoingui.h | 4 ++++ 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index 5d9c0d9f00f..cfcff136e0a 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -55,6 +55,7 @@ BitcoinGUI::BitcoinGUI(QWidget *parent): QMainWindow(parent), clientModel(0), walletModel(0), + dummyWidget(0), encryptWalletAction(0), changePassphraseAction(0), aboutQtAction(0), @@ -84,6 +85,9 @@ BitcoinGUI::BitcoinGUI(QWidget *parent): // Create the tray icon (or setup the dock icon) createTrayIcon(); + // Dummy widget used when restoring window state after minimization + dummyWidget = new QWidget(); + // Create tabs overviewPage = new OverviewPage(); @@ -157,6 +161,7 @@ BitcoinGUI::~BitcoinGUI() #ifdef Q_WS_MAC delete appMenuBar; #endif + delete dummyWidget; } void BitcoinGUI::createActions() @@ -193,15 +198,15 @@ void BitcoinGUI::createActions() sendCoinsAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_2)); tabGroup->addAction(sendCoinsAction); - connect(overviewAction, SIGNAL(triggered()), this, SLOT(show())); + connect(overviewAction, SIGNAL(triggered()), this, SLOT(showNormal())); connect(overviewAction, SIGNAL(triggered()), this, SLOT(gotoOverviewPage())); - connect(historyAction, SIGNAL(triggered()), this, SLOT(show())); + connect(historyAction, SIGNAL(triggered()), this, SLOT(showNormal())); connect(historyAction, SIGNAL(triggered()), this, SLOT(gotoHistoryPage())); - connect(addressBookAction, SIGNAL(triggered()), this, SLOT(show())); + connect(addressBookAction, SIGNAL(triggered()), this, SLOT(showNormal())); connect(addressBookAction, SIGNAL(triggered()), this, SLOT(gotoAddressBookPage())); - connect(receiveCoinsAction, SIGNAL(triggered()), this, SLOT(show())); + connect(receiveCoinsAction, SIGNAL(triggered()), this, SLOT(showNormal())); connect(receiveCoinsAction, SIGNAL(triggered()), this, SLOT(gotoReceiveCoinsPage())); - connect(sendCoinsAction, SIGNAL(triggered()), this, SLOT(show())); + connect(sendCoinsAction, SIGNAL(triggered()), this, SLOT(showNormal())); connect(sendCoinsAction, SIGNAL(triggered()), this, SLOT(gotoSendCoinsPage())); quitAction = new QAction(QIcon(":/icons/quit"), tr("E&xit"), this); @@ -379,10 +384,17 @@ void BitcoinGUI::trayIconActivated(QSystemTrayIcon::ActivationReason reason) // Click on system tray icon triggers "open bitcoin" openBitcoinAction->trigger(); } - } #endif +void BitcoinGUI::showNormal() +{ + // Reparent window to the desktop (in case it was hidden on minimize) + if(parent() != NULL) + setParent(NULL, Qt::Window); + QMainWindow::showNormal(); +} + void BitcoinGUI::optionsClicked() { if(!clientModel || !clientModel->getOptionsModel()) @@ -524,13 +536,13 @@ void BitcoinGUI::changeEvent(QEvent *e) { if(isMinimized()) { - hide(); - e->ignore(); + // Hiding the window from taskbar + setParent(dummyWidget, Qt::SubWindow); + return; } else { - show(); - e->accept(); + showNormal(); } } } diff --git a/src/qt/bitcoingui.h b/src/qt/bitcoingui.h index 9b672ee809d..1338998a98c 100644 --- a/src/qt/bitcoingui.h +++ b/src/qt/bitcoingui.h @@ -54,6 +54,8 @@ private: QStackedWidget *centralWidget; + QWidget *dummyWidget; + OverviewPage *overviewPage; QWidget *transactionsPage; AddressBookPage *addressBookPage; @@ -107,6 +109,8 @@ public slots: */ void askFee(qint64 nFeeRequired, bool *payFee); + void showNormal(); + private slots: // UI pages void gotoOverviewPage(); From 622f1438dec6f2fc5565597ac1f88c3873549f33 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Wed, 15 Feb 2012 20:56:29 +0100 Subject: [PATCH 096/298] Bugfix: do not create CAddress for invalid accepts --- src/net.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/net.cpp b/src/net.cpp index 83e7f28c6bc..423b7543905 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -885,13 +885,17 @@ void ThreadSocketHandler2(void* parg) struct sockaddr_in sockaddr; socklen_t len = sizeof(sockaddr); SOCKET hSocket = accept(hListenSocket, (struct sockaddr*)&sockaddr, &len); - CAddress addr(sockaddr); + CAddress addr; int nInbound = 0; + if (hSocket != INVALID_SOCKET) + addr = CAddress(sockaddr); + CRITICAL_BLOCK(cs_vNodes) BOOST_FOREACH(CNode* pnode, vNodes) if (pnode->fInbound) nInbound++; + if (hSocket == INVALID_SOCKET) { if (WSAGetLastError() != WSAEWOULDBLOCK) From d52397b3c02330d17cde6952e8bbc1c492c06007 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Wed, 15 Feb 2012 21:17:15 +0100 Subject: [PATCH 097/298] Several shutdown-related fixes * do not let vnThreadsRunning[1] go negative * do not perform locking operations while vnThreadsRunning[1] is decreased * check vnThreadsRunning[1] at exit --- src/net.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/net.cpp b/src/net.cpp index 423b7543905..a8d3d0b171b 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1431,9 +1431,13 @@ void ThreadOpenConnections2(void* parg) int64 nStart = GetTime(); loop { - // Limit outbound connections vnThreadsRunning[1]--; Sleep(500); + vnThreadsRunning[1]++; + if (fShutdown) + return; + + // Limit outbound connections loop { int nOutbound = 0; @@ -1445,13 +1449,12 @@ void ThreadOpenConnections2(void* parg) nMaxOutboundConnections = min(nMaxOutboundConnections, (int)GetArg("-maxconnections", 125)); if (nOutbound < nMaxOutboundConnections) break; + vnThreadsRunning[1]--; Sleep(2000); + vnThreadsRunning[1]++; if (fShutdown) return; } - vnThreadsRunning[1]++; - if (fShutdown) - return; bool fAddSeeds = false; @@ -1845,7 +1848,7 @@ bool StopNode() fShutdown = true; nTransactionsUpdated++; int64 nStart = GetTime(); - while (vnThreadsRunning[0] > 0 || vnThreadsRunning[2] > 0 || vnThreadsRunning[3] > 0 || vnThreadsRunning[4] > 0 + while (vnThreadsRunning[0] > 0 || vnThreadsRunning[1] > 0 || vnThreadsRunning[2] > 0 || vnThreadsRunning[3] > 0 || vnThreadsRunning[4] > 0 #ifdef USE_UPNP || vnThreadsRunning[5] > 0 #endif From 6928794f56738c002fd1e129cb64ffad0533b64f Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Wed, 15 Feb 2012 16:05:55 -0500 Subject: [PATCH 098/298] Properly include $*_LIB_PATH in makefile.unix --- src/makefile.unix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/makefile.unix b/src/makefile.unix index 53948bcba68..e75dda514fa 100644 --- a/src/makefile.unix +++ b/src/makefile.unix @@ -7,7 +7,7 @@ USE_UPNP:=0 DEFS=-DNOPCH DEFS += $(addprefix -I,$(BOOST_INCLUDE_PATH) $(BDB_INCLUDE_PATH) $(OPENSSL_INCLUDE_PATH)) -LIBS += $(addprefix -l,$(BOOST_LIB_PATH) $(BDB_LIB_PATH) $(OPENSSL_LIB_PATH)) +LIBS = $(addprefix -L,$(BOOST_LIB_PATH) $(BDB_LIB_PATH) $(OPENSSL_LIB_PATH)) LMODE = dynamic LMODE2 = dynamic @@ -21,7 +21,7 @@ else endif # for boost 1.37, add -mt to the boost libraries -LIBS= \ +LIBS += \ -Wl,-B$(LMODE) \ -l boost_system$(BOOST_LIB_SUFFIX) \ -l boost_filesystem$(BOOST_LIB_SUFFIX) \ From 25be0597caebe00f5d47199404574d93d8f76995 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Fri, 17 Feb 2012 14:46:06 +0100 Subject: [PATCH 099/298] don't allow -daemon in bitcoin-qt (changes only #defines) --- src/init.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/init.cpp b/src/init.cpp index 51e9ed604ee..bb549ec42bb 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -209,7 +209,7 @@ bool AppInit2(int argc, char* argv[]) #ifdef GUI " -server \t\t " + _("Accept command line and JSON-RPC commands\n") + #endif -#ifndef WIN32 +#if !defined(WIN32) && !defined(GUI) " -daemon \t\t " + _("Run in the background as a daemon and accept commands\n") + #endif " -testnet \t\t " + _("Use the test network\n") + @@ -248,7 +248,7 @@ bool AppInit2(int argc, char* argv[]) fTestNet = GetBoolArg("-testnet"); fDebug = GetBoolArg("-debug"); -#ifndef WIN32 +#if !defined(WIN32) && !defined(GUI) fDaemon = GetBoolArg("-daemon"); #else fDaemon = false; @@ -279,7 +279,7 @@ bool AppInit2(int argc, char* argv[]) } #endif -#ifndef WIN32 +#if !defined(WIN32) && !defined(GUI) if (fDaemon) { // Daemonize From 43163a5a4d0fd3c849dbb2e7070b7ba4f7a70d27 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Sat, 11 Feb 2012 20:02:55 +0100 Subject: [PATCH 100/298] Macros for manual critical sections --- src/net.h | 6 +++--- src/util.h | 6 ++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/net.h b/src/net.h index d8b90222769..53e13fd095e 100644 --- a/src/net.h +++ b/src/net.h @@ -277,7 +277,7 @@ public: void BeginMessage(const char* pszCommand) { - cs_vSend.Enter("cs_vSend", __FILE__, __LINE__); + ENTER_CRITICAL_SECTION(cs_vSend); if (nHeaderStart != -1) AbortMessage(); nHeaderStart = vSend.size(); @@ -296,7 +296,7 @@ public: vSend.resize(nHeaderStart); nHeaderStart = -1; nMessageStart = -1; - cs_vSend.Leave(); + LEAVE_CRITICAL_SECTION(cs_vSend); if (fDebug) printf("(aborted)\n"); @@ -334,7 +334,7 @@ public: nHeaderStart = -1; nMessageStart = -1; - cs_vSend.Leave(); + LEAVE_CRITICAL_SECTION(cs_vSend); } void EndMessageAbortIfEmpty() diff --git a/src/util.h b/src/util.h index a48979c0ef8..c4ee19fe01b 100644 --- a/src/util.h +++ b/src/util.h @@ -254,6 +254,12 @@ public: for (bool fcriticalblockonce=true; fcriticalblockonce; assert(("break caught by CRITICAL_BLOCK!" && !fcriticalblockonce)), fcriticalblockonce=false) \ for (CCriticalBlock criticalblock(cs, #cs, __FILE__, __LINE__); fcriticalblockonce; fcriticalblockonce=false) +#define ENTER_CRITICAL_SECTION(cs) \ + (cs).Enter(#cs, __FILE__, __LINE__) + +#define LEAVE_CRITICAL_SECTION(cs) \ + (cs).Leave() + class CTryCriticalBlock { protected: From 8960f2fc3353d5d7f8b9babd1aaef0e9869e39f4 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Sat, 11 Feb 2012 16:35:40 +0100 Subject: [PATCH 101/298] Fix wallet locking locking --- src/rpc.cpp | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/src/rpc.cpp b/src/rpc.cpp index 33108948d3c..5326cdc2b79 100644 --- a/src/rpc.cpp +++ b/src/rpc.cpp @@ -1279,33 +1279,31 @@ void ThreadCleanWalletPassphrase(void* parg) { int64 nMyWakeTime = GetTime() + *((int*)parg); + ENTER_CRITICAL_SECTION(cs_nWalletUnlockTime); + if (nWalletUnlockTime == 0) { - CRITICAL_BLOCK(cs_nWalletUnlockTime) - { - nWalletUnlockTime = nMyWakeTime; - } + nWalletUnlockTime = nMyWakeTime; while (GetTime() < nWalletUnlockTime) - Sleep(GetTime() - nWalletUnlockTime); - - CRITICAL_BLOCK(cs_nWalletUnlockTime) { - nWalletUnlockTime = 0; + int64 nToSleep = GetTime() - nWalletUnlockTime; + + LEAVE_CRITICAL_SECTION(cs_nWalletUnlockTime); + Sleep(nToSleep); + ENTER_CRITICAL_SECTION(cs_nWalletUnlockTime); } + + nWalletUnlockTime = 0; + pwalletMain->Lock(); } else { - CRITICAL_BLOCK(cs_nWalletUnlockTime) - { - if (nWalletUnlockTime < nMyWakeTime) - nWalletUnlockTime = nMyWakeTime; - } - delete (int*)parg; - return; + if (nWalletUnlockTime < nMyWakeTime) + nWalletUnlockTime = nMyWakeTime; } - pwalletMain->Lock(); + LEAVE_CRITICAL_SECTION(cs_nWalletUnlockTime); delete (int*)parg; } From 69ce70866d7498eb6efadca0cf57785c5cefd386 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Sat, 11 Feb 2012 18:01:24 +0100 Subject: [PATCH 102/298] Extra wallet locking fixes * Fix sign error in calculation of seconds to sleep * Do not mix GetTime() (seconds) and Sleep() (milliseconds) * Do not sleep forever if walletlock() is called * Do locking within critical section --- src/rpc.cpp | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/rpc.cpp b/src/rpc.cpp index 5326cdc2b79..da3384e398a 100644 --- a/src/rpc.cpp +++ b/src/rpc.cpp @@ -316,7 +316,7 @@ Value getinfo(const Array& params, bool fHelp) obj.push_back(Pair("keypoolsize", pwalletMain->GetKeyPoolSize())); obj.push_back(Pair("paytxfee", ValueFromAmount(nTransactionFee))); if (pwalletMain->IsCrypted()) - obj.push_back(Pair("unlocked_until", (boost::int64_t)nWalletUnlockTime)); + obj.push_back(Pair("unlocked_until", (boost::int64_t)nWalletUnlockTime / 1000)); obj.push_back(Pair("errors", GetWarnings("statusbar"))); return obj; } @@ -1277,7 +1277,7 @@ void ThreadTopUpKeyPool(void* parg) void ThreadCleanWalletPassphrase(void* parg) { - int64 nMyWakeTime = GetTime() + *((int*)parg); + int64 nMyWakeTime = GetTimeMillis() + *((int*)parg) * 1000; ENTER_CRITICAL_SECTION(cs_nWalletUnlockTime); @@ -1285,17 +1285,25 @@ void ThreadCleanWalletPassphrase(void* parg) { nWalletUnlockTime = nMyWakeTime; - while (GetTime() < nWalletUnlockTime) + do { - int64 nToSleep = GetTime() - nWalletUnlockTime; + if (nWalletUnlockTime==0) + break; + int64 nToSleep = nWalletUnlockTime - GetTimeMillis(); + if (nToSleep <= 0) + break; LEAVE_CRITICAL_SECTION(cs_nWalletUnlockTime); Sleep(nToSleep); ENTER_CRITICAL_SECTION(cs_nWalletUnlockTime); - } - nWalletUnlockTime = 0; - pwalletMain->Lock(); + } while(1); + + if (nWalletUnlockTime) + { + nWalletUnlockTime = 0; + pwalletMain->Lock(); + } } else { @@ -1408,9 +1416,9 @@ Value walletlock(const Array& params, bool fHelp) if (!pwalletMain->IsCrypted()) throw JSONRPCError(-15, "Error: running with an unencrypted wallet, but walletlock was called."); - pwalletMain->Lock(); CRITICAL_BLOCK(cs_nWalletUnlockTime) { + pwalletMain->Lock(); nWalletUnlockTime = 0; } From 82705af1eb521beefd63f81e3c5e39616fcf2076 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Fri, 17 Feb 2012 18:00:41 +0100 Subject: [PATCH 103/298] Change #ifdef GUI to #ifdef QT_GUI, GUI is not defined anymore... --- src/init.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/init.cpp b/src/init.cpp index bb549ec42bb..0d042f0cfbc 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -206,10 +206,10 @@ bool AppInit2(int argc, char* argv[]) #endif #endif " -paytxfee= \t " + _("Fee per kB to add to transactions you send\n") + -#ifdef GUI +#ifdef QT_GUI " -server \t\t " + _("Accept command line and JSON-RPC commands\n") + #endif -#if !defined(WIN32) && !defined(GUI) +#if !defined(WIN32) && !defined(QT_GUI) " -daemon \t\t " + _("Run in the background as a daemon and accept commands\n") + #endif " -testnet \t\t " + _("Use the test network\n") + @@ -248,7 +248,7 @@ bool AppInit2(int argc, char* argv[]) fTestNet = GetBoolArg("-testnet"); fDebug = GetBoolArg("-debug"); -#if !defined(WIN32) && !defined(GUI) +#if !defined(WIN32) && !defined(QT_GUI) fDaemon = GetBoolArg("-daemon"); #else fDaemon = false; @@ -279,7 +279,7 @@ bool AppInit2(int argc, char* argv[]) } #endif -#if !defined(WIN32) && !defined(GUI) +#if !defined(WIN32) && !defined(QT_GUI) if (fDaemon) { // Daemonize From 33e0c3a8662a11566cbb7bd382b7f6737f8c96a2 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Fri, 17 Feb 2012 15:26:20 +0100 Subject: [PATCH 104/298] Restructure IPC URL handling (fixes #851) --- src/qt/guiutil.cpp | 14 ++++++++++++++ src/qt/guiutil.h | 1 + src/qt/sendcoinsdialog.cpp | 10 ++++++++++ src/qt/sendcoinsdialog.h | 1 + 4 files changed, 26 insertions(+) diff --git a/src/qt/guiutil.cpp b/src/qt/guiutil.cpp index 158b84a285d..bc443ceeb65 100644 --- a/src/qt/guiutil.cpp +++ b/src/qt/guiutil.cpp @@ -72,3 +72,17 @@ bool GUIUtil::parseBitcoinURL(const QUrl *url, SendCoinsRecipient *out) } return true; } + +bool GUIUtil::parseBitcoinURL(QString url, SendCoinsRecipient *out) +{ + // Convert bitcoin:// to bitcoin: + // + // Cannot handle this later, because bitcoin:// will cause Qt to see the part after // as host, + // which will lowercase it (and thus invalidate the address). + if(url.startsWith("bitcoin://")) + { + url.replace(0, 10, "bitcoin:"); + } + QUrl urlInstance(url); + return parseBitcoinURL(&urlInstance, out); +} diff --git a/src/qt/guiutil.h b/src/qt/guiutil.h index bc4ddb8aaeb..129ab730384 100644 --- a/src/qt/guiutil.h +++ b/src/qt/guiutil.h @@ -29,6 +29,7 @@ public: // Parse "bitcoin:" URL into recipient object, return true on succesful parsing // See Bitcoin URL definition discussion here: https://bitcointalk.org/index.php?topic=33490.0 static bool parseBitcoinURL(const QUrl *url, SendCoinsRecipient *out); + static bool parseBitcoinURL(QString url, SendCoinsRecipient *out); }; #endif // GUIUTIL_H diff --git a/src/qt/sendcoinsdialog.cpp b/src/qt/sendcoinsdialog.cpp index 6d32891172f..e465b4141a4 100644 --- a/src/qt/sendcoinsdialog.cpp +++ b/src/qt/sendcoinsdialog.cpp @@ -265,6 +265,16 @@ void SendCoinsDialog::handleURL(const QUrl *url) pasteEntry(rv); } +void SendCoinsDialog::handleURL(const QString &url) +{ + SendCoinsRecipient rv; + if(!GUIUtil::parseBitcoinURL(url, &rv)) + { + return; + } + pasteEntry(rv); +} + void SendCoinsDialog::setBalance(qint64 balance, qint64 unconfirmedBalance) { Q_UNUSED(unconfirmedBalance); diff --git a/src/qt/sendcoinsdialog.h b/src/qt/sendcoinsdialog.h index a14f99e8b2f..fdff05783eb 100644 --- a/src/qt/sendcoinsdialog.h +++ b/src/qt/sendcoinsdialog.h @@ -30,6 +30,7 @@ public: void pasteEntry(const SendCoinsRecipient &rv); void handleURL(const QUrl *url); + void handleURL(const QString &url); public slots: void clear(); From caad1add4f383960ca09bb466ddd16652245befe Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Sat, 18 Feb 2012 15:36:40 +0100 Subject: [PATCH 105/298] Free pwalletdbEncryption after encryping wallet Fixes a memory leak. --- src/wallet.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wallet.cpp b/src/wallet.cpp index 43fb6b6da39..9f7422d1fbc 100644 --- a/src/wallet.cpp +++ b/src/wallet.cpp @@ -183,7 +183,7 @@ bool CWallet::EncryptWallet(const string& strWalletPassphrase) if (!pwalletdbEncryption->TxnCommit()) exit(1); //We now have keys encrypted in memory, but no on disk...die to avoid confusion and let the user reload their unencrypted wallet. - pwalletdbEncryption->Close(); + delete pwalletdbEncryption; pwalletdbEncryption = NULL; } From 471e0bdc7cc79a993230672dadbd193218b6103c Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Sun, 19 Feb 2012 18:44:51 +0100 Subject: [PATCH 106/298] Fix #650: CKey::SetSecret BIGNUM leak --- src/key.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/key.h b/src/key.h index 8b033a029f0..89d82fc8036 100644 --- a/src/key.h +++ b/src/key.h @@ -153,10 +153,13 @@ public: if (vchSecret.size() != 32) throw key_error("CKey::SetSecret() : secret must be 32 bytes"); BIGNUM *bn = BN_bin2bn(&vchSecret[0],32,BN_new()); - if (bn == NULL) + if (bn == NULL) throw key_error("CKey::SetSecret() : BN_bin2bn failed"); if (!EC_KEY_regenerate_key(pkey,bn)) + { + BN_clear_free(bn); throw key_error("CKey::SetSecret() : EC_KEY_regenerate_key failed"); + } BN_clear_free(bn); fSet = true; return true; From b085138f89e93eac900a863e0d1aa14472aa32d3 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Fri, 17 Feb 2012 18:25:14 +0100 Subject: [PATCH 107/298] Only fill in label from address book, if no label is filled in yet, fixes #840 --- src/qt/sendcoinsentry.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/qt/sendcoinsentry.cpp b/src/qt/sendcoinsentry.cpp index ab5460f8c2c..d98400c2608 100644 --- a/src/qt/sendcoinsentry.cpp +++ b/src/qt/sendcoinsentry.cpp @@ -59,8 +59,9 @@ void SendCoinsEntry::on_payTo_textChanged(const QString &address) { if(!model) return; - ui->addAsLabel->setText(model->getAddressTableModel()->labelForAddress(address)); -} + // Fill in label from address book, if no label is filled in yet + if(ui->addAsLabel->text().isEmpty()) + ui->addAsLabel->setText(model->getAddressTableModel()->labelForAddress(address));} void SendCoinsEntry::setModel(WalletModel *model) { From 001a64c71cb7f4090e953f49c32a6258e0d58767 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Fri, 17 Feb 2012 17:53:41 +0100 Subject: [PATCH 108/298] On windows, show message box with help, as there is no stderr (fixes #702) (partial) --- src/init.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/init.cpp b/src/init.cpp index 0d042f0cfbc..c8141f2c911 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -241,7 +241,12 @@ bool AppInit2(int argc, char* argv[]) // Remove tabs strUsage.erase(std::remove(strUsage.begin(), strUsage.end(), '\t'), strUsage.end()); +#if defined(QT_GUI) && defined(WIN32) + // On windows, show a message box, as there is no stderr + wxMessageBox(strUsage, "Usage"); +#else fprintf(stderr, "%s", strUsage.c_str()); +#endif return false; } From 54fee2d0ce1e4b389700cd9d043f9475d567cc25 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Sun, 19 Feb 2012 19:05:41 +0100 Subject: [PATCH 109/298] Fix #626: RecvLine wrong error message --- src/irc.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/irc.cpp b/src/irc.cpp index b632b965461..5dfab06bacd 100644 --- a/src/irc.cpp +++ b/src/irc.cpp @@ -110,14 +110,14 @@ bool RecvLine(SOCKET hSocket, string& strLine) if (nBytes == 0) { // socket closed - printf("IRC socket closed\n"); + printf("socket closed\n"); return false; } else { // socket error int nErr = WSAGetLastError(); - printf("IRC recv failed: %d\n", nErr); + printf("recv failed: %d\n", nErr); return false; } } From ab2be34059126d2eff11dd2bd20d740aea33f67d Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Sun, 19 Feb 2012 19:12:41 +0100 Subject: [PATCH 110/298] Fix #616: remove base_uint::operator&=(uint64 b) --- src/uint256.h | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/uint256.h b/src/uint256.h index 3e20201387b..ae263346a86 100644 --- a/src/uint256.h +++ b/src/uint256.h @@ -100,13 +100,6 @@ public: return *this; } - base_uint& operator&=(uint64 b) - { - pn[0] &= (unsigned int)b; - pn[1] &= (unsigned int)(b >> 32); - return *this; - } - base_uint& operator|=(uint64 b) { pn[0] |= (unsigned int)b; From 1be5779124680ad6f411377f0a052f691855d2ec Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Mon, 20 Feb 2012 22:35:08 +0100 Subject: [PATCH 111/298] ProcessBlock is sometimes called with pfrom==NULL --- src/main.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 1f8abc04a25..e94c872fbe3 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1406,7 +1406,8 @@ bool ProcessBlock(CNode* pfrom, CBlock* pblock) int64 deltaTime = pblock->GetBlockTime() - pcheckpoint->nTime; if (deltaTime < 0) { - pfrom->Misbehaving(100); + if (pfrom) + pfrom->Misbehaving(100); return error("ProcessBlock() : block with timestamp before last checkpoint"); } CBigNum bnNewBlock; @@ -1415,7 +1416,8 @@ bool ProcessBlock(CNode* pfrom, CBlock* pblock) bnRequired.SetCompact(ComputeMinWork(pcheckpoint->nBits, deltaTime)); if (bnNewBlock > bnRequired) { - pfrom->Misbehaving(100); + if (pfrom) + pfrom->Misbehaving(100); return error("ProcessBlock() : block with too little proof-of-work"); } } From feb3c15335d5279931c1e0f713400fb616459d0b Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Thu, 23 Feb 2012 13:33:30 -0500 Subject: [PATCH 112/298] Checkpoint block 168,000 --- src/checkpoints.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/checkpoints.cpp b/src/checkpoints.cpp index f78712ef4ba..f5ce053870f 100644 --- a/src/checkpoints.cpp +++ b/src/checkpoints.cpp @@ -30,6 +30,7 @@ namespace Checkpoints (118000, uint256("0x000000000000774a7f8a7a12dc906ddb9e17e75d684f15e00f8767f9e8f36553")) (134444, uint256("0x00000000000005b12ffd4cd315cd34ffd4a594f430ac814c91184a0d42d2b0fe")) (140700, uint256("0x000000000000033b512028abb90e1626d8b346fd0ed598ac0a3c371138dce2bd")) + (168000, uint256("0x000000000000099e61ea72015e79632f216fe6cb33d7899acb35b75c8303b763")) ; bool CheckBlock(int nHeight, const uint256& hash) From 0b11082d361ec08bca5025dbbc7f0b78c0fb8e13 Mon Sep 17 00:00:00 2001 From: Chris Moore Date: Fri, 24 Feb 2012 18:54:18 -0800 Subject: [PATCH 113/298] Don't show splash screen when -min is specified on the command line. --- src/qt/bitcoin.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index 2142db5a364..54e6bb34c20 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -147,9 +147,12 @@ int main(int argc, char *argv[]) app.setApplicationName(QApplication::translate("main", "Bitcoin-Qt")); QSplashScreen splash(QPixmap(":/images/splash"), 0); - splash.show(); - splash.setAutoFillBackground(true); - splashref = &splash; + if (!GetBoolArg("-min")) + { + splash.show(); + splash.setAutoFillBackground(true); + splashref = &splash; + } app.processEvents(); @@ -163,7 +166,8 @@ int main(int argc, char *argv[]) // Put this in a block, so that BitcoinGUI is cleaned up properly before // calling Shutdown(). BitcoinGUI window; - splash.finish(&window); + if (splashref) + splash.finish(&window); OptionsModel optionsModel(pwalletMain); ClientModel clientModel(&optionsModel); WalletModel walletModel(pwalletMain, &optionsModel); From ef48e9b7dfde66368c27ed34f5f42de1b8e781f9 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Sat, 25 Feb 2012 19:07:53 +0100 Subject: [PATCH 114/298] In UI, handle cases in which the last received block was generated in the future (secs<0) Fixes #874. --- src/qt/bitcoingui.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index cfcff136e0a..3c9a773f4e9 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -470,7 +470,11 @@ void BitcoinGUI::setNumBlocks(int count) QString text; // Represent time from last generated block in human readable text - if(secs < 60) + if(secs <= 0) + { + // Fully up to date. Leave text empty. + } + else if(secs < 60) { text = tr("%n second(s) ago","",secs); } @@ -490,7 +494,7 @@ void BitcoinGUI::setNumBlocks(int count) // Set icon state: spinning if catching up, tick otherwise if(secs < 30*60) { - tooltip = tr("Up to date") + QString("\n") + tooltip; + tooltip = tr("Up to date") + QString(".\n") + tooltip; labelBlocksIcon->setPixmap(QIcon(":/icons/synced").pixmap(STATUSBAR_ICONSIZE,STATUSBAR_ICONSIZE)); } else @@ -500,8 +504,11 @@ void BitcoinGUI::setNumBlocks(int count) syncIconMovie->start(); } - tooltip += QString("\n"); - tooltip += tr("Last received block was generated %1.").arg(text); + if(!text.isEmpty()) + { + tooltip += QString("\n"); + tooltip += tr("Last received block was generated %1.").arg(text); + } labelBlocksIcon->setToolTip(tooltip); progressBarLabel->setToolTip(tooltip); From 3108aed0f210fe6cb698237c7eeac8715fb95e31 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Wed, 29 Feb 2012 10:14:18 -0500 Subject: [PATCH 115/298] DoS fix for mapOrphanTransactions --- src/main.cpp | 25 ++++++++++++++++++++++++- src/main.h | 1 + 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index 9f12829042b..8b11c2bbf06 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -159,13 +159,14 @@ void static ResendWalletTransactions() // mapOrphanTransactions // -void static AddOrphanTx(const CDataStream& vMsg) +void AddOrphanTx(const CDataStream& vMsg) { CTransaction tx; CDataStream(vMsg) >> tx; uint256 hash = tx.GetHash(); if (mapOrphanTransactions.count(hash)) return; + CDataStream* pvMsg = mapOrphanTransactions[hash] = new CDataStream(vMsg); BOOST_FOREACH(const CTxIn& txin, tx.vin) mapOrphanTransactionsByPrev.insert(make_pair(txin.prevout.hash, pvMsg)); @@ -193,6 +194,23 @@ void static EraseOrphanTx(uint256 hash) mapOrphanTransactions.erase(hash); } +int LimitOrphanTxSize(int nMaxOrphans) +{ + int nEvicted = 0; + while (mapOrphanTransactions.size() > nMaxOrphans) + { + // Evict a random orphan: + std::vector randbytes(32); + RAND_bytes(&randbytes[0], 32); + uint256 randomhash(randbytes); + map::iterator it = mapOrphanTransactions.lower_bound(randomhash); + if (it == mapOrphanTransactions.end()) + it = mapOrphanTransactions.begin(); + EraseOrphanTx(it->first); + ++nEvicted; + } + return nEvicted; +} @@ -2183,6 +2201,11 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv) { printf("storing orphan tx %s\n", inv.hash.ToString().substr(0,10).c_str()); AddOrphanTx(vMsg); + + // DoS prevention: do not allow mapOrphanTransactions to grow unbounded + int nEvicted = LimitOrphanTxSize(MAX_ORPHAN_TRANSACTIONS); + if (nEvicted > 0) + printf("mapOrphan overflow, removed %d tx\n", nEvicted); } } diff --git a/src/main.h b/src/main.h index 25cf0790134..3e381b060b2 100644 --- a/src/main.h +++ b/src/main.h @@ -30,6 +30,7 @@ class CBlockIndex; static const unsigned int MAX_BLOCK_SIZE = 1000000; static const unsigned int MAX_BLOCK_SIZE_GEN = MAX_BLOCK_SIZE/2; static const int MAX_BLOCK_SIGOPS = MAX_BLOCK_SIZE/50; +static const int MAX_ORPHAN_TRANSACTIONS = MAX_BLOCK_SIZE/100; static const int64 COIN = 100000000; static const int64 CENT = 1000000; static const int64 MIN_TX_FEE = 50000; From d7962747c4bfe90f9991d121fd22ac625ae2de30 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Fri, 17 Feb 2012 17:58:02 +0100 Subject: [PATCH 116/298] Do not allow overwriting unspent transactions (BIP 30) Introduce the following network rule: * a block is not valid if it contains a transaction whose hash already exists in the block chain, unless all that transaction's outputs were already spent before said block. Warning: this is effectively a network rule change, with potential risk for forking the block chain. Leaving this unfixed carries the same risk however, for attackers that can cause a reorganisation in part of the network. Thanks to Russell O'Connor and Ben Reeves. --- src/main.cpp | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 6a3bacc78e9..812a55110ff 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -792,8 +792,10 @@ bool CTransaction::DisconnectInputs(CTxDB& txdb) } // Remove transaction from index - if (!txdb.EraseTxIndex(*this)) - return error("DisconnectInputs() : EraseTxPos failed"); + // This can fail if a duplicate of this transaction was in a chain that got + // reorganized away. This is only possible if this transaction was completely + // spent, so erasing it would be a no-op anway. + txdb.EraseTxIndex(*this); return true; } @@ -982,6 +984,26 @@ bool CBlock::ConnectBlock(CTxDB& txdb, CBlockIndex* pindex) if (!CheckBlock()) return false; + // Do not allow blocks that contain transactions which 'overwrite' older transactions, + // unless those are already completely spent. + // If such overwrites are allowed, coinbases and transactions depending upon those + // can be duplicated to remove the ability to spend the first instance -- even after + // being sent to another address. + // See BIP30 and http://r6.ca/blog/20120206T005236Z.html for more information. + // This logic is not necessary for memory pool transactions, as AcceptToMemoryPool + // already refuses previously-known transaction id's entirely. + // This rule applies to all blocks whose timestamp is after March 15, 2012, 0:00 UTC. + // On testnet it is enabled as of februari 20, 2012, 0:00 UTC. + if (pindex->nTime > 1331769600 || (fTestNet && pindex->nTime > 1329696000)) + BOOST_FOREACH(CTransaction& tx, vtx) + { + CTxIndex txindexOld; + if (txdb.ReadTxIndex(tx.GetHash(), txindexOld)) + BOOST_FOREACH(CDiskTxPos &pos, txindexOld.vSpent) + if (pos.IsNull()) + return false; + } + //// issue here: it doesn't know the version unsigned int nTxPos = pindex->nBlockPos + ::GetSerializeSize(CBlock(), SER_DISK) - 1 + GetSizeOfCompactSize(vtx.size()); From 4fc8c042a2f80ce0a1a277a2dcc1240c015ed400 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Sat, 3 Mar 2012 13:44:42 -0500 Subject: [PATCH 117/298] Bugfix: Check return value of SHGetSpecialFolderPath in MyGetSpecialFolderPath Upstream commit: 21ae37d (partial) --- src/util.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/util.cpp b/src/util.cpp index 85ca02f0aae..e2e104cc88b 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -643,13 +643,17 @@ string MyGetSpecialFolderPath(int nFolder, bool fCreate) { PSHGETSPECIALFOLDERPATHA pSHGetSpecialFolderPath = (PSHGETSPECIALFOLDERPATHA)GetProcAddress(hShell32, "SHGetSpecialFolderPathA"); + bool fSuccess = false; if (pSHGetSpecialFolderPath) + fSuccess = (*pSHGetSpecialFolderPath)(NULL, pszPath, nFolder, fCreate); FreeModule(hShell32); + if (fSuccess) + return pszPath; } // Backup option - if (pszPath[0] == '\0') + pszPath[0] = '\0'; { if (nFolder == CSIDL_STARTUP) { From 88aa771536014919e955c4f7b2cada9a0dcf8561 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Sat, 3 Mar 2012 13:51:10 -0500 Subject: [PATCH 118/298] Bugfix: Fix possible buffer overflow (#901) Upstream commit: 21ae37d (partial) --- src/util.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/util.cpp b/src/util.cpp index e2e104cc88b..0f496bc455a 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -653,20 +653,25 @@ string MyGetSpecialFolderPath(int nFolder, bool fCreate) } // Backup option - pszPath[0] = '\0'; + std::string strPath; { + const char *pszEnv; if (nFolder == CSIDL_STARTUP) { - strcpy(pszPath, getenv("USERPROFILE")); - strcat(pszPath, "\\Start Menu\\Programs\\Startup"); + pszEnv = getenv("USERPROFILE"); + if (pszEnv) + strPath = pszEnv; + strPath += "\\Start Menu\\Programs\\Startup"; } else if (nFolder == CSIDL_APPDATA) { - strcpy(pszPath, getenv("APPDATA")); + pszEnv = getenv("APPDATA"); + if (pszEnv) + strPath = pszEnv; } } - return pszPath; + return strPath; } #endif From b3b4b008e39ed77e5c579fa0ca179fe785ee5e79 Mon Sep 17 00:00:00 2001 From: nomnombtc Date: Mon, 5 Mar 2012 19:33:24 +0100 Subject: [PATCH 119/298] fix typo src/net.cpp --- src/net.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/net.cpp b/src/net.cpp index b314405efc7..f37c675ff9f 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -953,7 +953,7 @@ void ThreadSocketHandler2(void* parg) } else if (CNode::IsBanned(addr.ip)) { - printf("connetion from %s dropped (banned)\n", addr.ToString().c_str()); + printf("connection from %s dropped (banned)\n", addr.ToString().c_str()); closesocket(hSocket); } else From 11c34e0f6cf9cb2715c28b85a1ec8f47bf5ca8dd Mon Sep 17 00:00:00 2001 From: Gregory Maxwell Date: Sat, 10 Mar 2012 16:05:28 -0500 Subject: [PATCH 120/298] Resolves issue #922 - "wallet passphrase timeout of several years doesn't work" 2^31 milliseconds is only about 25 days. Also clamps Sleep() to 10 years, because it currently sleeps for 0 seconds when the sleep time would cross 2^31 seconds since the epoch. Hopefully boost will be fixed by 2028. --- src/rpc.cpp | 6 +++--- src/util.h | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/rpc.cpp b/src/rpc.cpp index da3384e398a..8967b2c9968 100644 --- a/src/rpc.cpp +++ b/src/rpc.cpp @@ -1277,7 +1277,7 @@ void ThreadTopUpKeyPool(void* parg) void ThreadCleanWalletPassphrase(void* parg) { - int64 nMyWakeTime = GetTimeMillis() + *((int*)parg) * 1000; + int64 nMyWakeTime = GetTimeMillis() + *((int64*)parg) * 1000; ENTER_CRITICAL_SECTION(cs_nWalletUnlockTime); @@ -1313,7 +1313,7 @@ void ThreadCleanWalletPassphrase(void* parg) LEAVE_CRITICAL_SECTION(cs_nWalletUnlockTime); - delete (int*)parg; + delete (int64*)parg; } Value walletpassphrase(const Array& params, bool fHelp) @@ -1353,7 +1353,7 @@ Value walletpassphrase(const Array& params, bool fHelp) "Stores the wallet decryption key in memory for seconds."); CreateThread(ThreadTopUpKeyPool, NULL); - int* pnSleepTime = new int(params[1].get_int()); + int64* pnSleepTime = new int64(params[1].get_int64()); CreateThread(ThreadCleanWalletPassphrase, pnSleepTime); return Value::null; diff --git a/src/util.h b/src/util.h index c4ee19fe01b..4e4cbb9f602 100644 --- a/src/util.h +++ b/src/util.h @@ -115,7 +115,9 @@ typedef u_int SOCKET; #define Beep(n1,n2) (0) inline void Sleep(int64 n) { - boost::thread::sleep(boost::get_system_time() + boost::posix_time::milliseconds(n)); + /*Boost has a year 2038 problem— if the request sleep time is past epoch+2^31 seconds the sleep returns instantly. + So we clamp our sleeps here to 10 years and hope that boost is fixed by 2028.*/ + boost::thread::sleep(boost::get_system_time() + boost::posix_time::milliseconds(n>315576000000LL?315576000000LL:n)); } #endif From 4986c35d74afd6fc313d7637eb0220f3df500009 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Mon, 19 Dec 2011 19:04:47 -0500 Subject: [PATCH 121/298] Code cleanup: use ECDSA_size() instead of fixed 10,000 byte sig buffer, and explicity init static var --- src/key.h | 13 +++++++------ src/main.cpp | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/key.h b/src/key.h index 89d82fc8036..477f550bcf4 100644 --- a/src/key.h +++ b/src/key.h @@ -214,13 +214,14 @@ public: bool Sign(uint256 hash, std::vector& vchSig) { - vchSig.clear(); - unsigned char pchSig[10000]; - unsigned int nSize = 0; - if (!ECDSA_sign(0, (unsigned char*)&hash, sizeof(hash), pchSig, &nSize, pkey)) + unsigned int nSize = ECDSA_size(pkey); + vchSig.resize(nSize); // Make sure it is big enough + if (!ECDSA_sign(0, (unsigned char*)&hash, sizeof(hash), &vchSig[0], &nSize, pkey)) + { + vchSig.clear(); return false; - vchSig.resize(nSize); - memcpy(&vchSig[0], pchSig, nSize); + } + vchSig.resize(nSize); // Shrink to fit actual size return true; } diff --git a/src/main.cpp b/src/main.cpp index 652d4c1f981..cd02652660a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1921,7 +1921,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv) } // Ask the first connected node for block updates - static int nAskedForBlocks; + static int nAskedForBlocks = 0; if (!pfrom->fClient && (pfrom->nVersion < 32000 || pfrom->nVersion >= 32400) && (nAskedForBlocks < 1 || vNodes.size() <= 1)) From 76a3bfa17c65481088df5713c0619f67cd856a83 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Thu, 15 Mar 2012 22:55:12 -0400 Subject: [PATCH 122/298] Fix Win32 RPC Crashes. --- bitcoin-qt.pro | 4 ++-- contrib/gitian-descriptors/qt-win32.yml | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/bitcoin-qt.pro b/bitcoin-qt.pro index 790c0751ca0..7fcb5079adb 100644 --- a/bitcoin-qt.pro +++ b/bitcoin-qt.pro @@ -251,8 +251,8 @@ isEmpty(BOOST_INCLUDE_PATH) { macx:BOOST_INCLUDE_PATH = /opt/local/include } -windows:LIBS += -lws2_32 -windows:DEFINES += WIN32 +windows:LIBS += -lmingwthrd -lws2_32 +windows:DEFINES += _MT WIN32 windows:RC_FILE = src/qt/res/bitcoin-qt.rc macx:HEADERS += src/qt/macdockiconhandler.h diff --git a/contrib/gitian-descriptors/qt-win32.yml b/contrib/gitian-descriptors/qt-win32.yml index 6eb76b21707..adccebbb918 100644 --- a/contrib/gitian-descriptors/qt-win32.yml +++ b/contrib/gitian-descriptors/qt-win32.yml @@ -47,6 +47,7 @@ script: | cp -a bin $SRCDIR/ cd $INSTDIR find . -name *.prl | xargs -l sed 's|/$||' -i + sed 's/QMAKE_LIBS_QT_ENTRY = -lmingw32 -lqtmain/QMAKE_LIBS_QT_ENTRY = -lqtmain/' -i mkspecs/unsupported/win32-g++-cross/qmake.conf #sed 's|QMAKE_PRL_LIBS.*|QMAKE_PRL_LIBS = -lQtDeclarative -lQtScript -lQtSvg -lQtSql -lQtXmlPatterns -lQtGui -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lwinspool -lmsimg32 -lQtNetwork -lQtCore -lole32 -luuid -lws2_32 -ladvapi32 -lshell32 -luser32 -lkernel32|' -i imports/Qt/labs/particles/qmlparticlesplugin.prl # as zip stores file timestamps, use faketime to intercept stat calls to set dates for all files to reference date From ffef16404d16678d54e767dda6c301ad51fb82a7 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Fri, 16 Mar 2012 16:04:26 -0400 Subject: [PATCH 123/298] Bump version to 0.4.5 --- contrib/Bitcoin.app/Contents/Info.plist | 2 +- doc/README | 2 +- doc/README_windows.txt | 2 +- share/setup.nsi | 6 +++--- src/serialize.h | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/contrib/Bitcoin.app/Contents/Info.plist b/contrib/Bitcoin.app/Contents/Info.plist index bef67460c88..b34827e3ca8 100644 --- a/contrib/Bitcoin.app/Contents/Info.plist +++ b/contrib/Bitcoin.app/Contents/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 0.4.4 + 0.4.5 CFBundleSignature ???? CFBundleVersion diff --git a/doc/README b/doc/README index 197f03dd56b..e572b2dd530 100644 --- a/doc/README +++ b/doc/README @@ -1,4 +1,4 @@ -Bitcoin 0.4.4 BETA +Bitcoin 0.4.5 BETA Copyright (c) 2009-2012 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/doc/README_windows.txt b/doc/README_windows.txt index ad357130c27..6a551a0b971 100644 --- a/doc/README_windows.txt +++ b/doc/README_windows.txt @@ -1,4 +1,4 @@ -Bitcoin 0.4.4 BETA +Bitcoin 0.4.5 BETA Copyright (c) 2009-2012 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/share/setup.nsi b/share/setup.nsi index 05983117909..643b0ffef8b 100644 --- a/share/setup.nsi +++ b/share/setup.nsi @@ -5,7 +5,7 @@ SetCompressor /SOLID lzma # General Symbol Definitions !define REGKEY "SOFTWARE\$(^Name)" -!define VERSION 0.4.4 +!define VERSION 0.4.5 !define COMPANY "Bitcoin project" !define URL http://www.bitcoin.org/ @@ -45,13 +45,13 @@ Var StartMenuGroup !insertmacro MUI_LANGUAGE English # Installer attributes -OutFile bitcoin-0.4.4-win32-setup.exe +OutFile bitcoin-0.4.5-win32-setup.exe InstallDir $PROGRAMFILES\Bitcoin CRCCheck on XPStyle on BrandingText " " ShowInstDetails show -VIProductVersion 0.4.4.0 +VIProductVersion 0.4.5.0 VIAddVersionKey ProductName Bitcoin VIAddVersionKey ProductVersion "${VERSION}" VIAddVersionKey CompanyName "${COMPANY}" diff --git a/src/serialize.h b/src/serialize.h index 2bc3a071d77..491169ff58b 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -59,7 +59,7 @@ class CDataStream; class CAutoFile; static const unsigned int MAX_SIZE = 0x02000000; -static const int VERSION = 40400; +static const int VERSION = 40500; static const char* pszSubVer = ""; static const bool VERSION_IS_BETA = true; From f322aa4d600f64eea8395811900dc98d562f1dac Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Fri, 16 Mar 2012 16:11:11 -0400 Subject: [PATCH 124/298] Bump version to 0.5.0.5 --- bitcoin-qt.pro | 2 +- doc/README | 2 +- doc/README_windows.txt | 2 +- share/setup.nsi | 6 +++--- src/serialize.h | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/bitcoin-qt.pro b/bitcoin-qt.pro index 7fcb5079adb..64b9670bfde 100644 --- a/bitcoin-qt.pro +++ b/bitcoin-qt.pro @@ -1,6 +1,6 @@ TEMPLATE = app TARGET = -VERSION = 0.5.0.4 +VERSION = 0.5.0.5 INCLUDEPATH += src src/json src/qt DEFINES += QT_GUI BOOST_THREAD_USE_LIB CONFIG += no_include_pwd diff --git a/doc/README b/doc/README index 6af11c3497e..9b3c561cbe1 100644 --- a/doc/README +++ b/doc/README @@ -1,4 +1,4 @@ -Bitcoin 0.5.0.4 BETA +Bitcoin 0.5.0.5 BETA Copyright (c) 2009-2012 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/doc/README_windows.txt b/doc/README_windows.txt index 25cb0692665..c23b0ea84d5 100644 --- a/doc/README_windows.txt +++ b/doc/README_windows.txt @@ -1,4 +1,4 @@ -Bitcoin 0.5.0.4 BETA +Bitcoin 0.5.0.5 BETA Copyright (c) 2009-2012 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/share/setup.nsi b/share/setup.nsi index 76ae81762db..4f764153e18 100644 --- a/share/setup.nsi +++ b/share/setup.nsi @@ -5,7 +5,7 @@ SetCompressor /SOLID lzma # General Symbol Definitions !define REGKEY "SOFTWARE\$(^Name)" -!define VERSION 0.5.0.4 +!define VERSION 0.5.0.5 !define COMPANY "Bitcoin project" !define URL http://www.bitcoin.org/ @@ -45,13 +45,13 @@ Var StartMenuGroup !insertmacro MUI_LANGUAGE English # Installer attributes -OutFile bitcoin-0.5.0.4-win32-setup.exe +OutFile bitcoin-0.5.0.5-win32-setup.exe InstallDir $PROGRAMFILES\Bitcoin CRCCheck on XPStyle on BrandingText " " ShowInstDetails show -VIProductVersion 0.5.0.4 +VIProductVersion 0.5.0.5 VIAddVersionKey ProductName Bitcoin VIAddVersionKey ProductVersion "${VERSION}" VIAddVersionKey CompanyName "${COMPANY}" diff --git a/src/serialize.h b/src/serialize.h index f5772024434..f10f933b163 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -60,7 +60,7 @@ class CDataStream; class CAutoFile; static const unsigned int MAX_SIZE = 0x02000000; -static const int VERSION = 50004; +static const int VERSION = 50005; static const char* pszSubVer = ""; static const bool VERSION_IS_BETA = true; From 7f23df06d7126e32bb2b80df355855bc9c8b242a Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Fri, 16 Mar 2012 16:12:16 -0400 Subject: [PATCH 125/298] Bump version to 0.5.4 --- bitcoin-qt.pro | 2 +- doc/README | 2 +- doc/README_windows.txt | 2 +- share/setup.nsi | 6 +++--- src/serialize.h | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/bitcoin-qt.pro b/bitcoin-qt.pro index 34ce109fe2c..ea9b52acf80 100644 --- a/bitcoin-qt.pro +++ b/bitcoin-qt.pro @@ -1,6 +1,6 @@ TEMPLATE = app TARGET = -VERSION = 0.5.3 +VERSION = 0.5.4 INCLUDEPATH += src src/json src/qt DEFINES += QT_GUI BOOST_THREAD_USE_LIB CONFIG += no_include_pwd diff --git a/doc/README b/doc/README index 13238149321..3d8c63a3e1a 100644 --- a/doc/README +++ b/doc/README @@ -1,4 +1,4 @@ -Bitcoin 0.5.3 BETA +Bitcoin 0.5.4 BETA Copyright (c) 2009-2012 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/doc/README_windows.txt b/doc/README_windows.txt index f52c1d17997..b4ad595419d 100644 --- a/doc/README_windows.txt +++ b/doc/README_windows.txt @@ -1,4 +1,4 @@ -Bitcoin 0.5.3 BETA +Bitcoin 0.5.4 BETA Copyright (c) 2009-2012 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/share/setup.nsi b/share/setup.nsi index 12a1a532daa..38f0a3a00a4 100644 --- a/share/setup.nsi +++ b/share/setup.nsi @@ -5,7 +5,7 @@ SetCompressor /SOLID lzma # General Symbol Definitions !define REGKEY "SOFTWARE\$(^Name)" -!define VERSION 0.5.3 +!define VERSION 0.5.4 !define COMPANY "Bitcoin project" !define URL http://www.bitcoin.org/ @@ -45,13 +45,13 @@ Var StartMenuGroup !insertmacro MUI_LANGUAGE English # Installer attributes -OutFile bitcoin-0.5.3-win32-setup.exe +OutFile bitcoin-0.5.4-win32-setup.exe InstallDir $PROGRAMFILES\Bitcoin CRCCheck on XPStyle on BrandingText " " ShowInstDetails show -VIProductVersion 0.5.3.0 +VIProductVersion 0.5.4.0 VIAddVersionKey ProductName Bitcoin VIAddVersionKey ProductVersion "${VERSION}" VIAddVersionKey CompanyName "${COMPANY}" diff --git a/src/serialize.h b/src/serialize.h index 71f24f81d5b..396e1727eb6 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -60,7 +60,7 @@ class CDataStream; class CAutoFile; static const unsigned int MAX_SIZE = 0x02000000; -static const int VERSION = 50300; +static const int VERSION = 50400; static const char* pszSubVer = ""; static const bool VERSION_IS_BETA = true; From 458b6e64368b06f8951e2fe5849272c11923dca8 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Wed, 15 Feb 2012 14:47:08 +0100 Subject: [PATCH 126/298] fix default suffixes in save dialog in GNOME, make it more clear that PNG is used (solves #833) --- src/qt/addressbookpage.cpp | 6 ++--- src/qt/guiutil.cpp | 49 ++++++++++++++++++++++++++++++++++++++ src/qt/guiutil.h | 15 ++++++++++++ src/qt/transactionview.cpp | 6 ++--- 4 files changed, 68 insertions(+), 8 deletions(-) diff --git a/src/qt/addressbookpage.cpp b/src/qt/addressbookpage.cpp index 0a147c9e104..76061233fc8 100644 --- a/src/qt/addressbookpage.cpp +++ b/src/qt/addressbookpage.cpp @@ -7,7 +7,6 @@ #include #include -#include #include AddressBookPage::AddressBookPage(Mode mode, Tabs tab, QWidget *parent) : @@ -206,10 +205,9 @@ void AddressBookPage::done(int retval) void AddressBookPage::exportClicked() { // CSV is currently the only supported format - QString filename = QFileDialog::getSaveFileName( + QString filename = GUIUtil::getSaveFileName( this, - tr("Export Address Book Data"), - QDir::currentPath(), + tr("Export Address Book Data"), QString(), tr("Comma separated file (*.csv)")); if (filename.isNull()) return; diff --git a/src/qt/guiutil.cpp b/src/qt/guiutil.cpp index bc443ceeb65..d1490c8f705 100644 --- a/src/qt/guiutil.cpp +++ b/src/qt/guiutil.cpp @@ -11,6 +11,8 @@ #include #include #include +#include +#include QString GUIUtil::dateTimeStr(qint64 nTime) { @@ -86,3 +88,50 @@ bool GUIUtil::parseBitcoinURL(QString url, SendCoinsRecipient *out) QUrl urlInstance(url); return parseBitcoinURL(&urlInstance, out); } + +QString GUIUtil::getSaveFileName(QWidget *parent, const QString &caption, + const QString &dir, + const QString &filter, + QString *selectedSuffixOut) +{ + QString selectedFilter; + QString myDir; + if(dir.isEmpty()) // Default to user documents location + { + myDir = QDesktopServices::storageLocation(QDesktopServices::DocumentsLocation); + } + else + { + myDir = dir; + } + QString result = QFileDialog::getSaveFileName(parent, caption, myDir, filter, &selectedFilter); + + /* Extract first suffix from filter pattern "Description (*.foo)" or "Description (*.foo *.bar ...) */ + QRegExp filter_re(".* \\(\\*\\.(.*)[ \\)]"); + QString selectedSuffix; + if(filter_re.exactMatch(selectedFilter)) + { + selectedSuffix = filter_re.cap(1); + } + + /* Add suffix if needed */ + QFileInfo info(result); + if(!result.isEmpty()) + { + if(info.suffix().isEmpty() && !selectedSuffix.isEmpty()) + { + /* No suffix specified, add selected suffix */ + if(!result.endsWith(".")) + result.append("."); + result.append(selectedSuffix); + } + } + + /* Return selected suffix if asked to */ + if(selectedSuffixOut) + { + *selectedSuffixOut = selectedSuffix; + } + return result; +} + diff --git a/src/qt/guiutil.h b/src/qt/guiutil.h index 129ab730384..d7523aa15c9 100644 --- a/src/qt/guiutil.h +++ b/src/qt/guiutil.h @@ -30,6 +30,21 @@ public: // See Bitcoin URL definition discussion here: https://bitcointalk.org/index.php?topic=33490.0 static bool parseBitcoinURL(const QUrl *url, SendCoinsRecipient *out); static bool parseBitcoinURL(QString url, SendCoinsRecipient *out); + + /** Get save file name, mimics QFileDialog::getSaveFileName, except that it appends a default suffix + when no suffix is provided by the user. + + @param[in] parent Parent window (or 0) + @param[in] caption Window caption (or empty, for default) + @param[in] dir Starting directory (or empty, to default to documents directory) + @param[in] filter Filter specification such as "Comma Separated Files (*.csv)" + @param[out] selectedSuffixOut Pointer to return the suffix (file type) that was selected (or 0). + Can be useful when choosing the save file format based on suffix. + */ + static QString getSaveFileName(QWidget *parent=0, const QString &caption=QString(), + const QString &dir=QString(), const QString &filter=QString(), + QString *selectedSuffixOut=0); + }; #endif // GUIUTIL_H diff --git a/src/qt/transactionview.cpp b/src/qt/transactionview.cpp index 3ef31854fb4..0bfce351a49 100644 --- a/src/qt/transactionview.cpp +++ b/src/qt/transactionview.cpp @@ -20,7 +20,6 @@ #include #include #include -#include #include #include #include @@ -265,10 +264,9 @@ void TransactionView::changedAmount(const QString &amount) void TransactionView::exportClicked() { // CSV is currently the only supported format - QString filename = QFileDialog::getSaveFileName( + QString filename = GUIUtil::getSaveFileName( this, - tr("Export Transaction Data"), - QDir::currentPath(), + tr("Export Transaction Data"), QString(), tr("Comma separated file (*.csv)")); if (filename.isNull()) return; From 91aadbdacf9a3111da76eb831ea36d6827e1d6fc Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Thu, 16 Feb 2012 10:22:31 -0500 Subject: [PATCH 127/298] Fix issue #848 : broken mining on testnet --- src/main.cpp | 20 ++++++++++++++++++-- src/main.h | 2 ++ src/rpc.cpp | 2 +- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index cd02652660a..ebf51ae1469 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -807,6 +807,15 @@ void static InvalidChainFound(CBlockIndex* pindexNew) printf("InvalidChainFound: WARNING: Displayed transactions may not be correct! You may need to upgrade, or other nodes may need to upgrade.\n"); } +void CBlock::UpdateTime(const CBlockIndex* pindexPrev) +{ + nTime = max(pindexPrev->GetMedianTimePast()+1, GetAdjustedTime()); + + // Updating time can change work required on testnet: + if (fTestNet) + nBits = GetNextWorkRequired(pindexPrev, this); +} + @@ -2896,7 +2905,7 @@ CBlock* CreateNewBlock(CReserveKey& reservekey) // Fill in header pblock->hashPrevBlock = pindexPrev->GetBlockHash(); pblock->hashMerkleRoot = pblock->BuildMerkleTree(); - pblock->nTime = max(pindexPrev->GetMedianTimePast()+1, GetAdjustedTime()); + pblock->UpdateTime(pindexPrev); pblock->nBits = GetNextWorkRequired(pindexPrev, pblock.get()); pblock->nNonce = 0; @@ -3053,6 +3062,7 @@ void static BitcoinMiner(CWallet *pwallet) FormatHashBuffers(pblock.get(), pmidstate, pdata, phash1); unsigned int& nBlockTime = *(unsigned int*)(pdata + 64 + 4); + unsigned int& nBlockBits = *(unsigned int*)(pdata + 64 + 8); unsigned int& nBlockNonce = *(unsigned int*)(pdata + 64 + 12); @@ -3140,8 +3150,14 @@ void static BitcoinMiner(CWallet *pwallet) break; // Update nTime every few seconds - pblock->nTime = max(pindexPrev->GetMedianTimePast()+1, GetAdjustedTime()); + pblock->UpdateTime(pindexPrev); nBlockTime = ByteReverse(pblock->nTime); + if (fTestNet) + { + // Changing pblock->nTime can change work required on testnet: + nBlockBits = ByteReverse(pblock->nBits); + hashTarget = CBigNum().SetCompact(pblock->nBits).getuint256(); + } } } } diff --git a/src/main.h b/src/main.h index 3e381b060b2..278f4f01c05 100644 --- a/src/main.h +++ b/src/main.h @@ -846,6 +846,8 @@ public: return n; } + void UpdateTime(const CBlockIndex* pindexPrev); + uint256 BuildMerkleTree() const { diff --git a/src/rpc.cpp b/src/rpc.cpp index 8967b2c9968..aade32ac1d8 100644 --- a/src/rpc.cpp +++ b/src/rpc.cpp @@ -1548,7 +1548,7 @@ Value getwork(const Array& params, bool fHelp) } // Update nTime - pblock->nTime = max(pindexPrev->GetMedianTimePast()+1, GetAdjustedTime()); + pblock->UpdateTime(pindexPrev); pblock->nNonce = 0; // Update nExtraNonce From 27960a36de879634ee8c491d0f4fe8160e8a4f75 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Thu, 16 Feb 2012 10:22:31 -0500 Subject: [PATCH 128/298] Fix issue #848 : broken mining on testnet --- src/bitcoinrpc.cpp | 4 ++-- src/main.cpp | 20 ++++++++++++++++++-- src/main.h | 2 ++ 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/bitcoinrpc.cpp b/src/bitcoinrpc.cpp index 36490e94f71..1f57bf9cd0d 100644 --- a/src/bitcoinrpc.cpp +++ b/src/bitcoinrpc.cpp @@ -1654,7 +1654,7 @@ Value getwork(const Array& params, bool fHelp) } // Update nTime - pblock->nTime = max(pindexPrev->GetMedianTimePast()+1, GetAdjustedTime()); + pblock->UpdateTime(pindexPrev); pblock->nNonce = 0; // Update nExtraNonce @@ -1751,7 +1751,7 @@ Value getmemorypool(const Array& params, bool fHelp) } // Update nTime - pblock->nTime = max(pindexPrev->GetMedianTimePast()+1, GetAdjustedTime()); + pblock->UpdateTime(pindexPrev); pblock->nNonce = 0; Array transactions; diff --git a/src/main.cpp b/src/main.cpp index 747805450a7..78a7ec3d275 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -820,6 +820,15 @@ void static InvalidChainFound(CBlockIndex* pindexNew) printf("InvalidChainFound: WARNING: Displayed transactions may not be correct! You may need to upgrade, or other nodes may need to upgrade.\n"); } +void CBlock::UpdateTime(const CBlockIndex* pindexPrev) +{ + nTime = max(pindexPrev->GetMedianTimePast()+1, GetAdjustedTime()); + + // Updating time can change work required on testnet: + if (fTestNet) + nBits = GetNextWorkRequired(pindexPrev, this); +} + @@ -2949,7 +2958,7 @@ CBlock* CreateNewBlock(CReserveKey& reservekey) // Fill in header pblock->hashPrevBlock = pindexPrev->GetBlockHash(); pblock->hashMerkleRoot = pblock->BuildMerkleTree(); - pblock->nTime = max(pindexPrev->GetMedianTimePast()+1, GetAdjustedTime()); + pblock->UpdateTime(pindexPrev); pblock->nBits = GetNextWorkRequired(pindexPrev, pblock.get()); pblock->nNonce = 0; @@ -3105,6 +3114,7 @@ void static BitcoinMiner(CWallet *pwallet) FormatHashBuffers(pblock.get(), pmidstate, pdata, phash1); unsigned int& nBlockTime = *(unsigned int*)(pdata + 64 + 4); + unsigned int& nBlockBits = *(unsigned int*)(pdata + 64 + 8); unsigned int& nBlockNonce = *(unsigned int*)(pdata + 64 + 12); @@ -3192,8 +3202,14 @@ void static BitcoinMiner(CWallet *pwallet) break; // Update nTime every few seconds - pblock->nTime = max(pindexPrev->GetMedianTimePast()+1, GetAdjustedTime()); + pblock->UpdateTime(pindexPrev); nBlockTime = ByteReverse(pblock->nTime); + if (fTestNet) + { + // Changing pblock->nTime can change work required on testnet: + nBlockBits = ByteReverse(pblock->nBits); + hashTarget = CBigNum().SetCompact(pblock->nBits).getuint256(); + } } } } diff --git a/src/main.h b/src/main.h index a1fb548f087..083d34029a9 100644 --- a/src/main.h +++ b/src/main.h @@ -856,6 +856,8 @@ public: return n; } + void UpdateTime(const CBlockIndex* pindexPrev); + uint256 BuildMerkleTree() const { From 1db5f43dc4d151a8b0543075385a57c3e57f54a3 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Fri, 16 Mar 2012 20:31:12 -0400 Subject: [PATCH 129/298] Bugfix: Missing includes --- src/qt/addressbookpage.cpp | 1 + src/qt/transactionview.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/src/qt/addressbookpage.cpp b/src/qt/addressbookpage.cpp index 76061233fc8..2c4407a81da 100644 --- a/src/qt/addressbookpage.cpp +++ b/src/qt/addressbookpage.cpp @@ -4,6 +4,7 @@ #include "addresstablemodel.h" #include "editaddressdialog.h" #include "csvmodelwriter.h" +#include "guiutil.h" #include #include diff --git a/src/qt/transactionview.cpp b/src/qt/transactionview.cpp index 0bfce351a49..1dd4c7b542a 100644 --- a/src/qt/transactionview.cpp +++ b/src/qt/transactionview.cpp @@ -10,6 +10,7 @@ #include "transactiondescdialog.h" #include "editaddressdialog.h" #include "optionsmodel.h" +#include "guiutil.h" #include #include From 8b3a795ea6bcbd83eab83edf75e98c57269aeb6e Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Fri, 16 Mar 2012 20:31:12 -0400 Subject: [PATCH 130/298] Bugfix: Missing includes --- src/qt/addressbookpage.cpp | 1 + src/qt/transactionview.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/src/qt/addressbookpage.cpp b/src/qt/addressbookpage.cpp index 76061233fc8..2c4407a81da 100644 --- a/src/qt/addressbookpage.cpp +++ b/src/qt/addressbookpage.cpp @@ -4,6 +4,7 @@ #include "addresstablemodel.h" #include "editaddressdialog.h" #include "csvmodelwriter.h" +#include "guiutil.h" #include #include diff --git a/src/qt/transactionview.cpp b/src/qt/transactionview.cpp index 0bfce351a49..1dd4c7b542a 100644 --- a/src/qt/transactionview.cpp +++ b/src/qt/transactionview.cpp @@ -10,6 +10,7 @@ #include "transactiondescdialog.h" #include "editaddressdialog.h" #include "optionsmodel.h" +#include "guiutil.h" #include #include From 1422e5bf518bf8a86f1e62f8f6c2552d242264bf Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Thu, 15 Mar 2012 22:25:07 -0400 Subject: [PATCH 131/298] Bump version to 0.5.3.1 --- bitcoin-qt.pro | 2 +- doc/README | 2 +- doc/README_windows.txt | 2 +- share/setup.nsi | 6 +++--- src/serialize.h | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/bitcoin-qt.pro b/bitcoin-qt.pro index 121a53f019c..92b0a6f03dc 100644 --- a/bitcoin-qt.pro +++ b/bitcoin-qt.pro @@ -1,6 +1,6 @@ TEMPLATE = app TARGET = -VERSION = 0.5.3 +VERSION = 0.5.3.1 INCLUDEPATH += src src/json src/qt DEFINES += QT_GUI BOOST_THREAD_USE_LIB CONFIG += no_include_pwd diff --git a/doc/README b/doc/README index 13238149321..f411638251b 100644 --- a/doc/README +++ b/doc/README @@ -1,4 +1,4 @@ -Bitcoin 0.5.3 BETA +Bitcoin 0.5.3.1 BETA Copyright (c) 2009-2012 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/doc/README_windows.txt b/doc/README_windows.txt index f52c1d17997..9b47fb805ea 100644 --- a/doc/README_windows.txt +++ b/doc/README_windows.txt @@ -1,4 +1,4 @@ -Bitcoin 0.5.3 BETA +Bitcoin 0.5.3.1 BETA Copyright (c) 2009-2012 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/share/setup.nsi b/share/setup.nsi index 12a1a532daa..a7d621c0956 100644 --- a/share/setup.nsi +++ b/share/setup.nsi @@ -5,7 +5,7 @@ SetCompressor /SOLID lzma # General Symbol Definitions !define REGKEY "SOFTWARE\$(^Name)" -!define VERSION 0.5.3 +!define VERSION 0.5.3.1 !define COMPANY "Bitcoin project" !define URL http://www.bitcoin.org/ @@ -45,13 +45,13 @@ Var StartMenuGroup !insertmacro MUI_LANGUAGE English # Installer attributes -OutFile bitcoin-0.5.3-win32-setup.exe +OutFile bitcoin-0.5.3.1-win32-setup.exe InstallDir $PROGRAMFILES\Bitcoin CRCCheck on XPStyle on BrandingText " " ShowInstDetails show -VIProductVersion 0.5.3.0 +VIProductVersion 0.5.3.1 VIAddVersionKey ProductName Bitcoin VIAddVersionKey ProductVersion "${VERSION}" VIAddVersionKey CompanyName "${COMPANY}" diff --git a/src/serialize.h b/src/serialize.h index 71f24f81d5b..e3888194055 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -60,7 +60,7 @@ class CDataStream; class CAutoFile; static const unsigned int MAX_SIZE = 0x02000000; -static const int VERSION = 50300; +static const int VERSION = 50301; static const char* pszSubVer = ""; static const bool VERSION_IS_BETA = true; From 1a4ac2b4d07eb9bf19d494586b0ff5c73ba2de68 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Sat, 17 Mar 2012 19:54:22 -0400 Subject: [PATCH 132/298] Move QMAKE_LIBS_QT_ENTRY adjustment to bitcoin side of build It could just as well be on either part of the gitian build, but to safely put it on the Qt side would require bumping the filename, and every gitian user rebuilding it. v0.5.3.1 put it on the Bitcoin side, and this is easier to work with and keep safe, so I'm moving it. --- bitcoin-qt.pro | 1 + contrib/gitian-descriptors/qt-win32.yml | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/bitcoin-qt.pro b/bitcoin-qt.pro index 92b0a6f03dc..33df7cd835e 100644 --- a/bitcoin-qt.pro +++ b/bitcoin-qt.pro @@ -254,6 +254,7 @@ isEmpty(BOOST_INCLUDE_PATH) { windows:LIBS += -lmingwthrd -lws2_32 windows:DEFINES += _MT WIN32 windows:RC_FILE = src/qt/res/bitcoin-qt.rc +windows:QMAKE_LIBS_QT_ENTRY -= -lmingw32 macx:HEADERS += src/qt/macdockiconhandler.h macx:OBJECTIVE_SOURCES += src/qt/macdockiconhandler.mm diff --git a/contrib/gitian-descriptors/qt-win32.yml b/contrib/gitian-descriptors/qt-win32.yml index adccebbb918..6eb76b21707 100644 --- a/contrib/gitian-descriptors/qt-win32.yml +++ b/contrib/gitian-descriptors/qt-win32.yml @@ -47,7 +47,6 @@ script: | cp -a bin $SRCDIR/ cd $INSTDIR find . -name *.prl | xargs -l sed 's|/$||' -i - sed 's/QMAKE_LIBS_QT_ENTRY = -lmingw32 -lqtmain/QMAKE_LIBS_QT_ENTRY = -lqtmain/' -i mkspecs/unsupported/win32-g++-cross/qmake.conf #sed 's|QMAKE_PRL_LIBS.*|QMAKE_PRL_LIBS = -lQtDeclarative -lQtScript -lQtSvg -lQtSql -lQtXmlPatterns -lQtGui -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lwinspool -lmsimg32 -lQtNetwork -lQtCore -lole32 -luuid -lws2_32 -ladvapi32 -lshell32 -luser32 -lkernel32|' -i imports/Qt/labs/particles/qmlparticlesplugin.prl # as zip stores file timestamps, use faketime to intercept stat calls to set dates for all files to reference date From b3ba40c6bf7417f9db6ee67afe388953d0d77e41 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Sat, 17 Mar 2012 19:54:22 -0400 Subject: [PATCH 133/298] Move QMAKE_LIBS_QT_ENTRY adjustment to bitcoin side of build It could just as well be on either part of the gitian build, but to safely put it on the Qt side would require bumping the filename, and every gitian user rebuilding it. v0.5.3.1 put it on the Bitcoin side, and this is easier to work with and keep safe, so I'm moving it. --- bitcoin-qt.pro | 1 + contrib/gitian-descriptors/qt-win32.yml | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/bitcoin-qt.pro b/bitcoin-qt.pro index 64b9670bfde..28eba2b9ea5 100644 --- a/bitcoin-qt.pro +++ b/bitcoin-qt.pro @@ -254,6 +254,7 @@ isEmpty(BOOST_INCLUDE_PATH) { windows:LIBS += -lmingwthrd -lws2_32 windows:DEFINES += _MT WIN32 windows:RC_FILE = src/qt/res/bitcoin-qt.rc +windows:QMAKE_LIBS_QT_ENTRY -= -lmingw32 macx:HEADERS += src/qt/macdockiconhandler.h macx:OBJECTIVE_SOURCES += src/qt/macdockiconhandler.mm diff --git a/contrib/gitian-descriptors/qt-win32.yml b/contrib/gitian-descriptors/qt-win32.yml index adccebbb918..6eb76b21707 100644 --- a/contrib/gitian-descriptors/qt-win32.yml +++ b/contrib/gitian-descriptors/qt-win32.yml @@ -47,7 +47,6 @@ script: | cp -a bin $SRCDIR/ cd $INSTDIR find . -name *.prl | xargs -l sed 's|/$||' -i - sed 's/QMAKE_LIBS_QT_ENTRY = -lmingw32 -lqtmain/QMAKE_LIBS_QT_ENTRY = -lqtmain/' -i mkspecs/unsupported/win32-g++-cross/qmake.conf #sed 's|QMAKE_PRL_LIBS.*|QMAKE_PRL_LIBS = -lQtDeclarative -lQtScript -lQtSvg -lQtSql -lQtXmlPatterns -lQtGui -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lwinspool -lmsimg32 -lQtNetwork -lQtCore -lole32 -luuid -lws2_32 -ladvapi32 -lshell32 -luser32 -lkernel32|' -i imports/Qt/labs/particles/qmlparticlesplugin.prl # as zip stores file timestamps, use faketime to intercept stat calls to set dates for all files to reference date From 0a1c5c9b104458b3e048c8e3ae5e9f347a5ab399 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Mon, 19 Mar 2012 12:15:03 -0400 Subject: [PATCH 134/298] Bump version to 0.5.0.6 --- bitcoin-qt.pro | 2 +- doc/README | 2 +- doc/README_windows.txt | 2 +- share/setup.nsi | 6 +++--- src/serialize.h | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/bitcoin-qt.pro b/bitcoin-qt.pro index 28eba2b9ea5..ff5df982479 100644 --- a/bitcoin-qt.pro +++ b/bitcoin-qt.pro @@ -1,6 +1,6 @@ TEMPLATE = app TARGET = -VERSION = 0.5.0.5 +VERSION = 0.5.0.6 INCLUDEPATH += src src/json src/qt DEFINES += QT_GUI BOOST_THREAD_USE_LIB CONFIG += no_include_pwd diff --git a/doc/README b/doc/README index 9b3c561cbe1..dc296f4e2e5 100644 --- a/doc/README +++ b/doc/README @@ -1,4 +1,4 @@ -Bitcoin 0.5.0.5 BETA +Bitcoin 0.5.0.6 BETA Copyright (c) 2009-2012 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/doc/README_windows.txt b/doc/README_windows.txt index c23b0ea84d5..f373b1449b3 100644 --- a/doc/README_windows.txt +++ b/doc/README_windows.txt @@ -1,4 +1,4 @@ -Bitcoin 0.5.0.5 BETA +Bitcoin 0.5.0.6 BETA Copyright (c) 2009-2012 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/share/setup.nsi b/share/setup.nsi index 4f764153e18..c574269bc49 100644 --- a/share/setup.nsi +++ b/share/setup.nsi @@ -5,7 +5,7 @@ SetCompressor /SOLID lzma # General Symbol Definitions !define REGKEY "SOFTWARE\$(^Name)" -!define VERSION 0.5.0.5 +!define VERSION 0.5.0.6 !define COMPANY "Bitcoin project" !define URL http://www.bitcoin.org/ @@ -45,13 +45,13 @@ Var StartMenuGroup !insertmacro MUI_LANGUAGE English # Installer attributes -OutFile bitcoin-0.5.0.5-win32-setup.exe +OutFile bitcoin-0.5.0.6-win32-setup.exe InstallDir $PROGRAMFILES\Bitcoin CRCCheck on XPStyle on BrandingText " " ShowInstDetails show -VIProductVersion 0.5.0.5 +VIProductVersion 0.5.0.6 VIAddVersionKey ProductName Bitcoin VIAddVersionKey ProductVersion "${VERSION}" VIAddVersionKey CompanyName "${COMPANY}" diff --git a/src/serialize.h b/src/serialize.h index f10f933b163..f628510a36e 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -60,7 +60,7 @@ class CDataStream; class CAutoFile; static const unsigned int MAX_SIZE = 0x02000000; -static const int VERSION = 50005; +static const int VERSION = 50006; static const char* pszSubVer = ""; static const bool VERSION_IS_BETA = true; From 00d832756cd1c4574774497dc1232101bea5db96 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Sun, 11 Mar 2012 17:57:44 -0400 Subject: [PATCH 135/298] Print wallet load errors (to debug.log) --- src/init.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/init.cpp b/src/init.cpp index 079e67b9363..2dccc81bf56 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -398,12 +398,14 @@ bool AppInit2(int argc, char* argv[]) else if (nLoadWalletRet == DB_NEED_REWRITE) { strErrors += _("Wallet needed to be rewritten: restart Bitcoin to complete \n"); + printf("%s", strErrors.c_str()); wxMessageBox(strErrors, "Bitcoin", wxOK | wxICON_ERROR); return false; } else strErrors += _("Error loading wallet.dat \n"); } + printf("%s", strErrors.c_str()); printf(" wallet %15"PRI64d"ms\n", GetTimeMillis() - nStart); RegisterWallet(pwalletMain); From 1194f003504fa6e9d9f59012ec736ebc7c231360 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Sun, 11 Mar 2012 18:07:40 -0400 Subject: [PATCH 136/298] Print more diagnostic info for the various DB_CORRUPT conditions --- src/db.cpp | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/src/db.cpp b/src/db.cpp index 783b0799639..7f9439bf745 100644 --- a/src/db.cpp +++ b/src/db.cpp @@ -798,7 +798,10 @@ int CWalletDB::LoadWallet(CWallet* pwallet) // Get cursor Dbc* pcursor = GetCursor(); if (!pcursor) + { + printf("Error getting wallet database cursor\n"); return DB_CORRUPT; + } loop { @@ -809,7 +812,10 @@ int CWalletDB::LoadWallet(CWallet* pwallet) if (ret == DB_NOTFOUND) break; else if (ret != 0) + { + printf("Error reading next record from wallet database\n"); return DB_CORRUPT; + } // Unserialize // Taking advantage of the fact that pair serialization @@ -879,19 +885,38 @@ int CWalletDB::LoadWallet(CWallet* pwallet) CPrivKey pkey; ssValue >> pkey; key.SetPrivKey(pkey); - if (key.GetPubKey() != vchPubKey || !key.IsValid()) + if (key.GetPubKey() != vchPubKey) + { + printf("Error reading wallet database: CPrivKey pubkey inconsistency\n"); return DB_CORRUPT; + } + if (!key.IsValid()) + { + printf("Error reading wallet database: invalid CPrivKey\n"); + return DB_CORRUPT; + } } else { CWalletKey wkey; ssValue >> wkey; key.SetPrivKey(wkey.vchPrivKey); - if (key.GetPubKey() != vchPubKey || !key.IsValid()) + if (key.GetPubKey() != vchPubKey) + { + printf("Error reading wallet database: CWalletKey pubkey inconsistency\n"); return DB_CORRUPT; + } + if (!key.IsValid()) + { + printf("Error reading wallet database: invalid CWalletKey\n"); + return DB_CORRUPT; + } } if (!pwallet->LoadKey(key)) + { + printf("Error reading wallet database: LoadKey failed\n"); return DB_CORRUPT; + } } else if (strType == "mkey") { @@ -900,7 +925,10 @@ int CWalletDB::LoadWallet(CWallet* pwallet) CMasterKey kMasterKey; ssValue >> kMasterKey; if(pwallet->mapMasterKeys.count(nID) != 0) + { + printf("Error reading wallet database: duplicate CMasterKey id %u\n", nID); return DB_CORRUPT; + } pwallet->mapMasterKeys[nID] = kMasterKey; if (pwallet->nMasterKeyMaxID < nID) pwallet->nMasterKeyMaxID = nID; @@ -912,7 +940,10 @@ int CWalletDB::LoadWallet(CWallet* pwallet) vector vchPrivKey; ssValue >> vchPrivKey; if (!pwallet->LoadCryptedKey(vchPubKey, vchPrivKey)) + { + printf("Error reading wallet database: LoadCryptedKey failed\n"); return DB_CORRUPT; + } fIsEncrypted = true; } else if (strType == "defaultkey") From 0ae535cdb2e331c81b35486ebaae09aa5e80d014 Mon Sep 17 00:00:00 2001 From: Joel Kaartinen Date: Fri, 16 Mar 2012 14:23:59 +0200 Subject: [PATCH 137/298] Make the sendcoins dialog use the configured unit type, even on the first attempt. --- src/qt/sendcoinsentry.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/qt/sendcoinsentry.cpp b/src/qt/sendcoinsentry.cpp index d98400c2608..caffaaeff28 100644 --- a/src/qt/sendcoinsentry.cpp +++ b/src/qt/sendcoinsentry.cpp @@ -66,6 +66,7 @@ void SendCoinsEntry::on_payTo_textChanged(const QString &address) void SendCoinsEntry::setModel(WalletModel *model) { this->model = model; + clear(); } void SendCoinsEntry::setRemoveEnabled(bool enabled) From e20417c333f86797ed328d990bf284080a69920b Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Fri, 17 Feb 2012 13:50:32 +0100 Subject: [PATCH 138/298] Hide window from taskbar when "minimize to tray" active by making window into Tool window --- src/qt/bitcoingui.cpp | 27 +++++++++------------------ src/qt/bitcoingui.h | 4 ---- 2 files changed, 9 insertions(+), 22 deletions(-) diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index 3c9a773f4e9..ff862cf40e1 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -55,7 +55,6 @@ BitcoinGUI::BitcoinGUI(QWidget *parent): QMainWindow(parent), clientModel(0), walletModel(0), - dummyWidget(0), encryptWalletAction(0), changePassphraseAction(0), aboutQtAction(0), @@ -85,9 +84,6 @@ BitcoinGUI::BitcoinGUI(QWidget *parent): // Create the tray icon (or setup the dock icon) createTrayIcon(); - // Dummy widget used when restoring window state after minimization - dummyWidget = new QWidget(); - // Create tabs overviewPage = new OverviewPage(); @@ -161,7 +157,6 @@ BitcoinGUI::~BitcoinGUI() #ifdef Q_WS_MAC delete appMenuBar; #endif - delete dummyWidget; } void BitcoinGUI::createActions() @@ -387,14 +382,6 @@ void BitcoinGUI::trayIconActivated(QSystemTrayIcon::ActivationReason reason) } #endif -void BitcoinGUI::showNormal() -{ - // Reparent window to the desktop (in case it was hidden on minimize) - if(parent() != NULL) - setParent(NULL, Qt::Window); - QMainWindow::showNormal(); -} - void BitcoinGUI::optionsClicked() { if(!clientModel || !clientModel->getOptionsModel()) @@ -541,15 +528,19 @@ void BitcoinGUI::changeEvent(QEvent *e) { if(clientModel && clientModel->getOptionsModel()->getMinimizeToTray()) { - if(isMinimized()) + QWindowStateChangeEvent *wsevt = static_cast(e); + bool wasMinimized = wsevt->oldState() & Qt::WindowMinimized; + bool isMinimized = windowState() & Qt::WindowMinimized; + if(!wasMinimized && isMinimized) { - // Hiding the window from taskbar - setParent(dummyWidget, Qt::SubWindow); + // Minimized, hide the window from taskbar + setWindowFlags(windowFlags() | Qt::Tool); return; } - else + else if(wasMinimized && !isMinimized) { - showNormal(); + // Unminimized, show the window in taskbar + setWindowFlags(windowFlags() &~ Qt::Tool); } } } diff --git a/src/qt/bitcoingui.h b/src/qt/bitcoingui.h index 1338998a98c..9b672ee809d 100644 --- a/src/qt/bitcoingui.h +++ b/src/qt/bitcoingui.h @@ -54,8 +54,6 @@ private: QStackedWidget *centralWidget; - QWidget *dummyWidget; - OverviewPage *overviewPage; QWidget *transactionsPage; AddressBookPage *addressBookPage; @@ -109,8 +107,6 @@ public slots: */ void askFee(qint64 nFeeRequired, bool *payFee); - void showNormal(); - private slots: // UI pages void gotoOverviewPage(); From b4c7b6a384e69ec31ae6067a9b9692fa7b02ab56 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Thu, 15 Mar 2012 22:30:08 +0100 Subject: [PATCH 139/298] Yet another attempt at implementing "minimize to tray" that works on all OSes --- src/qt/bitcoingui.cpp | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index ff862cf40e1..78becafe5b4 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -45,6 +45,7 @@ #include #include #include +#include #include #include @@ -523,29 +524,21 @@ void BitcoinGUI::error(const QString &title, const QString &message) void BitcoinGUI::changeEvent(QEvent *e) { + QMainWindow::changeEvent(e); #ifndef Q_WS_MAC // Ignored on Mac if(e->type() == QEvent::WindowStateChange) { if(clientModel && clientModel->getOptionsModel()->getMinimizeToTray()) { QWindowStateChangeEvent *wsevt = static_cast(e); - bool wasMinimized = wsevt->oldState() & Qt::WindowMinimized; - bool isMinimized = windowState() & Qt::WindowMinimized; - if(!wasMinimized && isMinimized) + if(!(wsevt->oldState() & Qt::WindowMinimized) && isMinimized()) { - // Minimized, hide the window from taskbar - setWindowFlags(windowFlags() | Qt::Tool); - return; - } - else if(wasMinimized && !isMinimized) - { - // Unminimized, show the window in taskbar - setWindowFlags(windowFlags() &~ Qt::Tool); + QTimer::singleShot(0, this, SLOT(hide())); + e->ignore(); } } } #endif - QMainWindow::changeEvent(e); } void BitcoinGUI::closeEvent(QCloseEvent *event) From 0e6c6e3fd1ab971c652e48fa04bac097e44e76fe Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Sat, 18 Feb 2012 13:32:25 +0100 Subject: [PATCH 140/298] Workaround for BN_bn2mpi reading/writing out of bounds When OpenSSL's BN_bn2mpi is passed a buffer of size 4, valgrind reports reading/writing one byte past it. I am unable to find evidence of this behaviour in BN_bn2mpi's source code, so it may be a spurious warning. However, this change is harmless, as only the bignum with value 0 results in an mpi serialization of size 4. --- src/bignum.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bignum.h b/src/bignum.h index 1a2406b9358..6e8d3cb8aba 100644 --- a/src/bignum.h +++ b/src/bignum.h @@ -243,7 +243,7 @@ public: std::vector getvch() const { unsigned int nSize = BN_bn2mpi(this, NULL); - if (nSize < 4) + if (nSize <= 4) return std::vector(); std::vector vch(nSize); BN_bn2mpi(this, &vch[0]); From 2f2ac3fece6c7f576c5957f05f342f2830301b54 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Tue, 13 Mar 2012 17:22:07 -0400 Subject: [PATCH 141/298] Minimal support for validating BIP16 pay-to-script-hash transactions Note this does NOT include accepting them in blocks (making them standard) --- src/main.cpp | 284 +++++++++++++++++++++++++++++++++++-------------- src/main.h | 53 ++++++++- src/script.cpp | 93 ++++++++++++++-- src/script.h | 45 +++++--- 4 files changed, 367 insertions(+), 108 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 652d4c1f981..c81f1318b08 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -374,15 +374,6 @@ bool CTransaction::AcceptToMemoryPool(CTxDB& txdb, bool fCheckInputs, bool* pfMi if ((int64)nLockTime > INT_MAX) return error("AcceptToMemoryPool() : not accepting nLockTime beyond 2038 yet"); - // Safety limits - unsigned int nSize = ::GetSerializeSize(*this, SER_NETWORK); - // Checking ECDSA signatures is a CPU bottleneck, so to avoid denial-of-service - // attacks disallow transactions with more than one SigOp per 34 bytes. - // 34 bytes because a TxOut is: - // 20-byte address + 8 byte bitcoin amount + 5 bytes of ops + 1 byte script length - if (GetSigOpCount() > nSize / 34 || nSize < 100) - return error("AcceptToMemoryPool() : nonstandard transaction"); - // Rather not work on nonstandard transactions (unless -testnet) if (!fTestNet && !IsStandard()) return error("AcceptToMemoryPool() : nonstandard transaction type"); @@ -426,17 +417,29 @@ bool CTransaction::AcceptToMemoryPool(CTxDB& txdb, bool fCheckInputs, bool* pfMi if (fCheckInputs) { - // Check against previous transactions + MapPrevTx mapInputs; map mapUnused; - int64 nFees = 0; bool fInvalid = false; - if (!ConnectInputs(txdb, mapUnused, CDiskTxPos(1,1,1), pindexBest, nFees, false, false, 0, fInvalid)) + if (!FetchInputs(txdb, mapUnused, false, false, mapInputs, fInvalid)) { if (fInvalid) return error("AcceptToMemoryPool() : FetchInputs found invalid tx %s", hash.ToString().substr(0,10).c_str()); - return error("AcceptToMemoryPool() : ConnectInputs failed %s", hash.ToString().substr(0,10).c_str()); + if (pfMissingInputs) + *pfMissingInputs = true; + return error("AcceptToMemoryPool() : FetchInputs failed %s", hash.ToString().substr(0,10).c_str()); } + // Safety limits + unsigned int nSize = ::GetSerializeSize(*this, SER_NETWORK); + // Checking ECDSA signatures is a CPU bottleneck, so to avoid denial-of-service + // attacks disallow transactions with more than one SigOp per 34 bytes. + // 34 bytes because a TxOut is: + // 20-byte address + 8 byte bitcoin amount + 5 bytes of ops + 1 byte script length + if (GetSigOpCount() > nSize / 34 || nSize < 100) + return error("AcceptToMemoryPool() : nonstandard transaction"); + + int64 nFees = GetValueIn(mapInputs)-GetValueOut(); + // Don't accept it if it can't get into a block if (nFees < GetMinFee(1000, true, true)) return error("AcceptToMemoryPool() : not enough fees"); @@ -465,6 +468,13 @@ bool CTransaction::AcceptToMemoryPool(CTxDB& txdb, bool fCheckInputs, bool* pfMi dFreeCount += nSize; } } + + // Check against previous transactions + // This is done last to help prevent CPU exhaustion denial-of-service attacks. + if (!ConnectInputs(mapInputs, mapUnused, CDiskTxPos(1,1,1), pindexBest, false, false)) + { + return error("AcceptToMemoryPool() : ConnectInputs failed %s", hash.ToString().substr(0,10).c_str()); + } } // Store transaction in memory @@ -853,9 +863,8 @@ bool CTransaction::DisconnectInputs(CTxDB& txdb) } -bool CTransaction::ConnectInputs(CTxDB& txdb, map& mapTestPool, CDiskTxPos posThisTx, - CBlockIndex* pindexBlock, int64& nFees, bool fBlock, bool fMiner, int64 nMinFee, - bool& fInvalid) +bool CTransaction::FetchInputs(CTxDB& txdb, const map& mapTestPool, + bool fBlock, bool fMiner, MapPrevTx& inputsRet, bool& fInvalid) { // FetchInputs can return false either because we just haven't seen some inputs // (in which case the transaction should be stored as an orphan) @@ -863,70 +872,143 @@ bool CTransaction::ConnectInputs(CTxDB& txdb, map& mapTestPoo // be dropped). If tx is definitely invalid, fInvalid will be set to true. fInvalid = false; + if (IsCoinBase()) + return true; // Coinbase transactions have no inputs to fetch. + + for (int i = 0; i < vin.size(); i++) + { + COutPoint prevout = vin[i].prevout; + if (inputsRet.count(prevout.hash)) + continue; // Got it already + + // Read txindex + CTxIndex& txindex = inputsRet[prevout.hash].first; + bool fFound = true; + if ((fBlock || fMiner) && mapTestPool.count(prevout.hash)) + { + // Get txindex from current proposed changes + txindex = mapTestPool.find(prevout.hash)->second; + } + else + { + // Read txindex from txdb + fFound = txdb.ReadTxIndex(prevout.hash, txindex); + } + if (!fFound && (fBlock || fMiner)) + return fMiner ? false : error("FetchInputs() : %s prev tx %s index entry not found", GetHash().ToString().substr(0,10).c_str(), prevout.hash.ToString().substr(0,10).c_str()); + + // Read txPrev + CTransaction& txPrev = inputsRet[prevout.hash].second; + if (!fFound || txindex.pos == CDiskTxPos(1,1,1)) + { + // Get prev tx from single transactions in memory + CRITICAL_BLOCK(cs_mapTransactions) + { + if (!mapTransactions.count(prevout.hash)) + return error("FetchInputs() : %s mapTransactions prev not found %s", GetHash().ToString().substr(0,10).c_str(), prevout.hash.ToString().substr(0,10).c_str()); + txPrev = mapTransactions[prevout.hash]; + } + if (!fFound) + txindex.vSpent.resize(txPrev.vout.size()); + } + else + { + // Get prev tx from disk + if (!txPrev.ReadFromDisk(txindex.pos)) + return error("FetchInputs() : %s ReadFromDisk prev tx %s failed", GetHash().ToString().substr(0,10).c_str(), prevout.hash.ToString().substr(0,10).c_str()); + } + } + + // Make sure all prevout.n's are valid: + for (int i = 0; i < vin.size(); i++) + { + const COutPoint prevout = vin[i].prevout; + assert(inputsRet.count(prevout.hash) != 0); + const CTxIndex& txindex = inputsRet[prevout.hash].first; + const CTransaction& txPrev = inputsRet[prevout.hash].second; + if (prevout.n >= txPrev.vout.size() || prevout.n >= txindex.vSpent.size()) + { + // Revisit this if/when transaction replacement is implemented and allows + // adding inputs: + fInvalid = true; + return error("FetchInputs() : %s prevout.n out of range %d %d %d prev tx %s\n%s", GetHash().ToString().substr(0,10).c_str(), prevout.n, txPrev.vout.size(), txindex.vSpent.size(), prevout.hash.ToString().substr(0,10).c_str(), txPrev.ToString().c_str()); + } + } + + return true; +} + +const CTxOut& CTransaction::GetOutputFor(const CTxIn& input, const MapPrevTx& inputs) const +{ + MapPrevTx::const_iterator mi = inputs.find(input.prevout.hash); + if (mi == inputs.end()) + throw std::runtime_error("CTransaction::GetOutputFor() : prevout.hash not found"); + + const CTransaction& txPrev = (mi->second).second; + if (input.prevout.n >= txPrev.vout.size()) + throw std::runtime_error("CTransaction::GetOutputFor() : prevout.n out of range"); + + return txPrev.vout[input.prevout.n]; +} + +int64 CTransaction::GetValueIn(const MapPrevTx& inputs) const +{ + if (IsCoinBase()) + return 0; + + int64 nResult = 0; + for (int i = 0; i < vin.size(); i++) + { + nResult += GetOutputFor(vin[i], inputs).nValue; + } + return nResult; + +} + +int CTransaction::GetP2SHSigOpCount(const MapPrevTx& inputs) const +{ + if (IsCoinBase()) + return 0; + + int nSigOps = 0; + for (int i = 0; i < vin.size(); i++) + { + const CTxOut& prevout = GetOutputFor(vin[i], inputs); + if (prevout.scriptPubKey.IsPayToScriptHash()) + nSigOps += prevout.scriptPubKey.GetSigOpCount(vin[i].scriptSig); + } + return nSigOps; +} + +bool CTransaction::ConnectInputs(MapPrevTx inputs, + map& mapTestPool, const CDiskTxPos& posThisTx, + const CBlockIndex* pindexBlock, bool fBlock, bool fMiner, bool fStrictPayToScriptHash) +{ // Take over previous transactions' spent pointers + // fBlock is true when this is called from AcceptBlock when a new best-block is added to the blockchain + // fMiner is true when called from the internal bitcoin miner + // ... both are false when called from CTransaction::AcceptToMemoryPool if (!IsCoinBase()) { int64 nValueIn = 0; + int64 nFees = 0; for (int i = 0; i < vin.size(); i++) { COutPoint prevout = vin[i].prevout; - - // Read txindex - CTxIndex txindex; - bool fFound = true; - if ((fBlock || fMiner) && mapTestPool.count(prevout.hash)) - { - // Get txindex from current proposed changes - txindex = mapTestPool[prevout.hash]; - } - else - { - // Read txindex from txdb - fFound = txdb.ReadTxIndex(prevout.hash, txindex); - } - if (!fFound && (fBlock || fMiner)) - return fMiner ? false : error("ConnectInputs() : %s prev tx %s index entry not found", GetHash().ToString().substr(0,10).c_str(), prevout.hash.ToString().substr(0,10).c_str()); - - // Read txPrev - CTransaction txPrev; - if (!fFound || txindex.pos == CDiskTxPos(1,1,1)) - { - // Get prev tx from single transactions in memory - CRITICAL_BLOCK(cs_mapTransactions) - { - if (!mapTransactions.count(prevout.hash)) - return error("ConnectInputs() : %s mapTransactions prev not found %s", GetHash().ToString().substr(0,10).c_str(), prevout.hash.ToString().substr(0,10).c_str()); - txPrev = mapTransactions[prevout.hash]; - } - if (!fFound) - txindex.vSpent.resize(txPrev.vout.size()); - } - else - { - // Get prev tx from disk - if (!txPrev.ReadFromDisk(txindex.pos)) - return error("ConnectInputs() : %s ReadFromDisk prev tx %s failed", GetHash().ToString().substr(0,10).c_str(), prevout.hash.ToString().substr(0,10).c_str()); - } + assert(inputs.count(prevout.hash) > 0); + CTxIndex& txindex = inputs[prevout.hash].first; + CTransaction& txPrev = inputs[prevout.hash].second; if (prevout.n >= txPrev.vout.size() || prevout.n >= txindex.vSpent.size()) - { - // Revisit this if/when transaction replacement is implemented and allows - // adding inputs: - fInvalid = true; return error("ConnectInputs() : %s prevout.n out of range %d %d %d prev tx %s\n%s", GetHash().ToString().substr(0,10).c_str(), prevout.n, txPrev.vout.size(), txindex.vSpent.size(), prevout.hash.ToString().substr(0,10).c_str(), txPrev.ToString().c_str()); - } // If prev is coinbase, check that it's matured if (txPrev.IsCoinBase()) - for (CBlockIndex* pindex = pindexBlock; pindex && pindexBlock->nHeight - pindex->nHeight < COINBASE_MATURITY; pindex = pindex->pprev) + for (const CBlockIndex* pindex = pindexBlock; pindex && pindexBlock->nHeight - pindex->nHeight < COINBASE_MATURITY; pindex = pindex->pprev) if (pindex->nBlockPos == txindex.pos.nBlockPos && pindex->nFile == txindex.pos.nFile) return error("ConnectInputs() : tried to spend coinbase at depth %d", pindexBlock->nHeight - pindex->nHeight); - // Verify signature - if (!VerifySignature(txPrev, *this, i)) - return error("ConnectInputs() : %s VerifySignature failed", GetHash().ToString().substr(0,10).c_str()); - - // Check for conflicts + // Check for conflicts (double-spend) if (!txindex.vSpent[prevout.n].IsNull()) return fMiner ? false : error("ConnectInputs() : %s prev tx already used at %s", GetHash().ToString().substr(0,10).c_str(), txindex.vSpent[prevout.n].ToString().c_str()); @@ -935,6 +1017,10 @@ bool CTransaction::ConnectInputs(CTxDB& txdb, map& mapTestPoo if (!MoneyRange(txPrev.vout[prevout.n].nValue) || !MoneyRange(nValueIn)) return error("ConnectInputs() : txin values out of range"); + // Verify signature + if (!VerifySignature(txPrev, *this, i, fStrictPayToScriptHash, 0)) + return error("ConnectInputs() : %s VerifySignature failed", GetHash().ToString().substr(0,10).c_str()); + // Mark outpoints as spent txindex.vSpent[prevout.n] = posThisTx; @@ -952,24 +1038,11 @@ bool CTransaction::ConnectInputs(CTxDB& txdb, map& mapTestPoo int64 nTxFee = nValueIn - GetValueOut(); if (nTxFee < 0) return error("ConnectInputs() : %s nTxFee < 0", GetHash().ToString().substr(0,10).c_str()); - if (nTxFee < nMinFee) - return false; nFees += nTxFee; if (!MoneyRange(nFees)) return error("ConnectInputs() : nFees out of range"); } - if (fBlock) - { - // Add transaction to changes - mapTestPool[GetHash()] = CTxIndex(posThisTx, vout.size()); - } - else if (fMiner) - { - // Add transaction to test pool - mapTestPool[GetHash()] = CTxIndex(CDiskTxPos(1,1,1), vout.size()); - } - return true; } @@ -995,7 +1068,7 @@ bool CTransaction::ClientConnectInputs() return false; // Verify signature - if (!VerifySignature(txPrev, *this, i)) + if (!VerifySignature(txPrev, *this, i, true, 0)) return error("ConnectInputs() : VerifySignature failed"); ///// this is redundant with the mapNextTx stuff, not sure which I want to get rid of @@ -1068,20 +1141,51 @@ bool CBlock::ConnectBlock(CTxDB& txdb, CBlockIndex* pindex) return false; } + // P2SH didn't become active until Apr 1 2012 (Feb 15 on testnet) + int64 nEvalSwitchTime = fTestNet ? 1329264000 : 1333238400; + bool fStrictPayToScriptHash = (pindex->nTime >= nEvalSwitchTime); + //// issue here: it doesn't know the version unsigned int nTxPos = pindex->nBlockPos + ::GetSerializeSize(CBlock(), SER_DISK) - 1 + GetSizeOfCompactSize(vtx.size()); map mapQueuedChanges; int64 nFees = 0; + int nSigOps = 0; BOOST_FOREACH(CTransaction& tx, vtx) { + nSigOps += tx.GetSigOpCount(); + if (nSigOps > MAX_BLOCK_SIGOPS) + return error("ConnectBlock() : too many sigops"); + CDiskTxPos posThisTx(pindex->nFile, pindex->nBlockPos, nTxPos); nTxPos += ::GetSerializeSize(tx, SER_DISK); bool fInvalid; - if (!tx.ConnectInputs(txdb, mapQueuedChanges, posThisTx, pindex, nFees, true, false, 0, fInvalid)) - return false; + MapPrevTx mapInputs; + if (!tx.IsCoinBase()) + { + if (!tx.FetchInputs(txdb, mapQueuedChanges, true, false, mapInputs, fInvalid)) + return false; + + if (fStrictPayToScriptHash) + { + // Add in sigops done by pay-to-script-hash inputs; + // this is to prevent a "rogue miner" from creating + // an incredibly-expensive-to-validate block. + nSigOps += tx.GetP2SHSigOpCount(mapInputs); + if (nSigOps > MAX_BLOCK_SIGOPS) + return error("ConnectBlock() : too many sigops"); + } + + nFees += tx.GetValueIn(mapInputs)-tx.GetValueOut(); + + if (!tx.ConnectInputs(mapInputs, mapQueuedChanges, posThisTx, pindex, true, false, fStrictPayToScriptHash)) + return false; + } + + mapQueuedChanges[tx.GetHash()] = CTxIndex(posThisTx, tx.vout.size()); } + // Write queued txindex changes for (map::iterator mi = mapQueuedChanges.begin(); mi != mapQueuedChanges.end(); ++mi) { @@ -1344,7 +1448,7 @@ bool CBlock::CheckBlock() const // Check that it's not full of nonstandard transactions if (GetSigOpCount() > MAX_BLOCK_SIGOPS) - return error("CheckBlock() : too many nonstandard transactions"); + return error("CheckBlock() : out-of-bounds SigOpCount"); // Check merkleroot if (hashMerkleRoot != BuildMerkleTree()) @@ -2854,6 +2958,8 @@ CBlock* CreateNewBlock(CReserveKey& reservekey) unsigned int nTxSize = ::GetSerializeSize(tx, SER_NETWORK); if (nBlockSize + nTxSize >= MAX_BLOCK_SIZE_GEN) continue; + + // Legacy limits on sigOps: int nTxSigOps = tx.GetSigOpCount(); if (nBlockSigOps + nTxSigOps >= MAX_BLOCK_SIGOPS) continue; @@ -2866,14 +2972,28 @@ CBlock* CreateNewBlock(CReserveKey& reservekey) // because we're already processing them in order of dependency map mapTestPoolTmp(mapTestPool); bool fInvalid; - if (!tx.ConnectInputs(txdb, mapTestPoolTmp, CDiskTxPos(1,1,1), pindexPrev, nFees, false, true, nMinFee, fInvalid)) + MapPrevTx mapInputs; + if (!tx.FetchInputs(txdb, mapTestPoolTmp, false, true, mapInputs, fInvalid)) continue; + + int64 nTxFees = tx.GetValueIn(mapInputs)-tx.GetValueOut(); + if (nTxFees < nMinFee) + continue; + + nTxSigOps += tx.GetP2SHSigOpCount(mapInputs); + if (nBlockSigOps + nTxSigOps >= MAX_BLOCK_SIGOPS) + continue; + + if (!tx.ConnectInputs(mapInputs, mapTestPoolTmp, CDiskTxPos(1,1,1), pindexPrev, false, true)) + continue; + mapTestPoolTmp[tx.GetHash()] = CTxIndex(CDiskTxPos(1,1,1), tx.vout.size()); swap(mapTestPool, mapTestPoolTmp); // Added pblock->vtx.push_back(tx); nBlockSize += nTxSize; nBlockSigOps += nTxSigOps; + nFees += nTxFees; // Add transactions that depend on this one to the priority queue uint256 hash = tx.GetHash(); diff --git a/src/main.h b/src/main.h index 3e381b060b2..f29ccde0800 100644 --- a/src/main.h +++ b/src/main.h @@ -386,6 +386,7 @@ public: }; +typedef std::map > MapPrevTx; // @@ -494,6 +495,15 @@ public: return n; } + /** Count ECDSA signature operations in pay-to-script-hash inputs. + This is a better measure of how expensive it is to process this transaction. + + @param[in] mapInputsMap of previous transactions that have outputs we're spending + @return maximum number of sigops required to validate this transaction's inputs + @see CTransaction::FetchInputs + */ + int GetP2SHSigOpCount(const MapPrevTx& mapInputs) const; + bool IsStandard() const { BOOST_FOREACH(const CTxIn& txin, vin) @@ -517,6 +527,16 @@ public: return nValueOut; } + /** Amount of bitcoins coming in to this transaction + Note that lightweight clients may not know anything besides the hash of previous transactions, + so may not be able to calculate this. + + @param[in] mapInputsMap of previous transactions that have outputs we're spending + @returnSum of value of all inputs (scriptSigs) + @see CTransaction::FetchInputs + */ + int64 GetValueIn(const MapPrevTx& mapInputs) const; + static bool AllowFree(double dPriority) { // Large (in bytes) low-priority (new, small-coin) transactions @@ -631,14 +651,41 @@ public: bool ReadFromDisk(CTxDB& txdb, COutPoint prevout); bool ReadFromDisk(COutPoint prevout); bool DisconnectInputs(CTxDB& txdb); - bool ConnectInputs(CTxDB& txdb, std::map& mapTestPool, CDiskTxPos posThisTx, - CBlockIndex* pindexBlock, int64& nFees, bool fBlock, bool fMiner, int64 nMinFee, - bool& fInvalid); + + /** Fetch from memory and/or disk. inputsRet keys are transaction hashes. + + @param[in] txdb Transaction database + @param[in] mapTestPool List of pending changes to the transaction index database + @param[in] fBlock True if being called to add a new best-block to the chain + @param[in] fMiner True if being called by CreateNewBlock + @param[out] inputsRet Pointers to this transaction's inputs + @param[out] fInvalid returns true if transaction is invalid + @return Returns true if all inputs are in txdb or mapTestPool + */ + bool FetchInputs(CTxDB& txdb, const std::map& mapTestPool, + bool fBlock, bool fMiner, MapPrevTx& inputsRet, bool& fInvalid); + + /** Sanity check previous transactions, then, if all checks succeed, + mark them as spent by this transaction. + + @param[in] inputsPrevious transactions (from FetchInputs) + @param[out] mapTestPoolKeeps track of inputs that need to be updated on disk + @param[in] posThisTxPosition of this transaction on disk + @param[in] pindexBlock + @param[in] fBlock true if called from ConnectBlock + @param[in] fMiner true if called from CreateNewBlock + @param[in] fStrictPayToScriptHash true if fully validating p2sh transactions + @return Returns true if all checks succeed + */ + bool ConnectInputs(MapPrevTx inputs, + std::map& mapTestPool, const CDiskTxPos& posThisTx, + const CBlockIndex* pindexBlock, bool fBlock, bool fMiner, bool fStrictPayToScriptHash=true); bool ClientConnectInputs(); bool CheckTransaction() const; bool AcceptToMemoryPool(CTxDB& txdb, bool fCheckInputs=true, bool* pfMissingInputs=NULL); bool AcceptToMemoryPool(bool fCheckInputs=true, bool* pfMissingInputs=NULL); protected: + const CTxOut& GetOutputFor(const CTxIn& input, const MapPrevTx& inputs) const; bool AddToMemoryPoolUnchecked(); public: bool RemoveFromMemoryPool(); diff --git a/src/script.cpp b/src/script.cpp index 6e7bcb5e14c..377a7abb28a 100644 --- a/src/script.cpp +++ b/src/script.cpp @@ -1146,16 +1146,40 @@ bool ExtractAddress(const CScript& scriptPubKey, const CKeyStore* keystore, CBit } -bool VerifyScript(const CScript& scriptSig, const CScript& scriptPubKey, const CTransaction& txTo, unsigned int nIn, int nHashType) +bool VerifyScript(const CScript& scriptSig, const CScript& scriptPubKey, const CTransaction& txTo, unsigned int nIn, + bool fValidatePayToScriptHash, int nHashType) { - vector > stack; + vector > stack, stackCopy; if (!EvalScript(stack, scriptSig, txTo, nIn, nHashType)) return false; + if (fValidatePayToScriptHash) + stackCopy = stack; if (!EvalScript(stack, scriptPubKey, txTo, nIn, nHashType)) return false; if (stack.empty()) return false; - return CastToBool(stack.back()); + + if (CastToBool(stack.back()) == false) + return false; + + // Additional validation for spend-to-script-hash transactions: + if (fValidatePayToScriptHash && scriptPubKey.IsPayToScriptHash()) + { + if (!scriptSig.IsPushOnly()) // scriptSig must be literals-only + return false; // or validation fails + + const valtype& pubKeySerialized = stackCopy.back(); + CScript pubKey2(pubKeySerialized.begin(), pubKeySerialized.end()); + popstack(stackCopy); + + if (!EvalScript(stackCopy, pubKey2, txTo, nIn, nHashType)) + return false; + if (stackCopy.empty()) + return false; + return CastToBool(stackCopy.back()); + } + + return true; } @@ -1177,14 +1201,14 @@ bool SignSignature(const CKeyStore &keystore, const CTransaction& txFrom, CTrans // Test solution if (scriptPrereq.empty()) - if (!VerifyScript(txin.scriptSig, txout.scriptPubKey, txTo, nIn, 0)) + if (!VerifyScript(txin.scriptSig, txout.scriptPubKey, txTo, nIn, true, 0)) return false; return true; } -bool VerifySignature(const CTransaction& txFrom, const CTransaction& txTo, unsigned int nIn, int nHashType) +bool VerifySignature(const CTransaction& txFrom, const CTransaction& txTo, unsigned int nIn, bool fValidatePayToScriptHash, int nHashType) { assert(nIn < txTo.vin.size()); const CTxIn& txin = txTo.vin[nIn]; @@ -1195,8 +1219,65 @@ bool VerifySignature(const CTransaction& txFrom, const CTransaction& txTo, unsig if (txin.prevout.hash != txFrom.GetHash()) return false; - if (!VerifyScript(txin.scriptSig, txout.scriptPubKey, txTo, nIn, nHashType)) + if (!VerifyScript(txin.scriptSig, txout.scriptPubKey, txTo, nIn, fValidatePayToScriptHash, nHashType)) return false; return true; } + +int CScript::GetSigOpCount(bool fAccurate) const +{ + int n = 0; + const_iterator pc = begin(); + opcodetype lastOpcode = OP_INVALIDOPCODE; + while (pc < end()) + { + opcodetype opcode; + if (!GetOp(pc, opcode)) + break; + if (opcode == OP_CHECKSIG || opcode == OP_CHECKSIGVERIFY) + n++; + else if (opcode == OP_CHECKMULTISIG || opcode == OP_CHECKMULTISIGVERIFY) + { + if (fAccurate && lastOpcode >= OP_1 && lastOpcode <= OP_16) + n += DecodeOP_N(lastOpcode); + else + n += 20; + } + lastOpcode = opcode; + } + return n; +} + +int CScript::GetSigOpCount(const CScript& scriptSig) const +{ + if (!IsPayToScriptHash()) + return GetSigOpCount(true); + + // This is a pay-to-script-hash scriptPubKey; + // get the last item that the scriptSig + // pushes onto the stack: + const_iterator pc = scriptSig.begin(); + vector data; + while (pc < scriptSig.end()) + { + opcodetype opcode; + if (!scriptSig.GetOp(pc, opcode, data)) + return 0; + if (opcode > OP_16) + return 0; + } + + /// ... and return it's opcount: + CScript subscript(data.begin(), data.end()); + return subscript.GetSigOpCount(true); +} + +bool CScript::IsPayToScriptHash() const +{ + // Extra-fast test for pay-to-script-hash CScripts: + return (this->size() == 23 && + this->at(0) == OP_HASH160 && + this->at(1) == 0x14 && + this->at(22) == OP_EQUAL); +} diff --git a/src/script.h b/src/script.h index e61ea2fd7eb..bc9fc9ab6fa 100644 --- a/src/script.h +++ b/src/script.h @@ -574,6 +574,14 @@ public: return true; } + // Encode/decode small integers: + static int DecodeOP_N(opcodetype opcode) + { + if (opcode == OP_0) + return 0; + assert(opcode >= OP_1 && opcode <= OP_16); + return (int)opcode - (int)(OP_1 - 1); + } void FindAndDelete(const CScript& b) { @@ -588,25 +596,28 @@ public: } while (GetOp(pc, opcode)); } - - - int GetSigOpCount() const + int Find(opcodetype op) const { - int n = 0; - const_iterator pc = begin(); - while (pc < end()) - { - opcodetype opcode; - if (!GetOp(pc, opcode)) - break; - if (opcode == OP_CHECKSIG || opcode == OP_CHECKSIGVERIFY) - n++; - else if (opcode == OP_CHECKMULTISIG || opcode == OP_CHECKMULTISIGVERIFY) - n += 20; - } - return n; + int nFound = 0; + opcodetype opcode; + for (const_iterator pc = begin(); pc != end() && GetOp(pc, opcode);) + if (opcode == op) + ++nFound; + return nFound; } + // Pre-version-0.6, Bitcoin always counted CHECKMULTISIGs + // as 20 sigops. With pay-to-script-hash, that changed: + // CHECKMULTISIGs serialized in scriptSigs are + // counted more accurately, assuming they are of the form + // ... OP_N CHECKMULTISIG ... + int GetSigOpCount(bool fAccurate=false) const; + + // Accurately count sigOps, including sigOps in + // pay-to-script-hash transactions: + int GetSigOpCount(const CScript& scriptSig) const; + + bool IsPayToScriptHash() const; bool IsPushOnly() const { @@ -698,6 +709,6 @@ bool IsStandard(const CScript& scriptPubKey); bool IsMine(const CKeyStore& keystore, const CScript& scriptPubKey); bool ExtractAddress(const CScript& scriptPubKey, const CKeyStore* pkeystore, CBitcoinAddress& addressRet); bool SignSignature(const CKeyStore& keystore, const CTransaction& txFrom, CTransaction& txTo, unsigned int nIn, int nHashType=SIGHASH_ALL, CScript scriptPrereq=CScript()); -bool VerifySignature(const CTransaction& txFrom, const CTransaction& txTo, unsigned int nIn, int nHashType=0); +bool VerifySignature(const CTransaction& txFrom, const CTransaction& txTo, unsigned int nIn, bool fValidatePayToScriptHash, int nHashType); #endif From fcc547346a9c9f66855b9c8584e405291c864287 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Sat, 17 Mar 2012 19:54:22 -0400 Subject: [PATCH 142/298] Move QMAKE_LIBS_QT_ENTRY adjustment to bitcoin side of build It could just as well be on either part of the gitian build, but to safely put it on the Qt side would require bumping the filename, and every gitian user rebuilding it. v0.5.3.1 put it on the Bitcoin side, and this is easier to work with and keep safe, so I'm moving it. Use `qmake MINGW_THREAD_BUGFIX=0` to disable --- bitcoin-qt.pro | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/bitcoin-qt.pro b/bitcoin-qt.pro index ff5df982479..ad6fb001ee4 100644 --- a/bitcoin-qt.pro +++ b/bitcoin-qt.pro @@ -251,10 +251,20 @@ isEmpty(BOOST_INCLUDE_PATH) { macx:BOOST_INCLUDE_PATH = /opt/local/include } -windows:LIBS += -lmingwthrd -lws2_32 -windows:DEFINES += _MT WIN32 +windows:LIBS += -lws2_32 +windows:DEFINES += WIN32 windows:RC_FILE = src/qt/res/bitcoin-qt.rc -windows:QMAKE_LIBS_QT_ENTRY -= -lmingw32 + +windows:!contains(MINGW_THREAD_BUGFIX, 0) { + # At least qmake's win32-g++-cross profile is missing the -lmingwthrd + # thread-safety flag. GCC has -mthreads to enable this, but it doesn't + # work with static linking. -lmingwthrd must come BEFORE -lmingw, so + # it is prepended to QMAKE_LIBS_QT_ENTRY. + # It can be turned off with MINGW_THREAD_BUGFIX=0, just in case it causes + # any problems on some untested qmake profile now or in the future. + DEFINES += _MT + QMAKE_LIBS_QT_ENTRY = -lmingwthrd $$QMAKE_LIBS_QT_ENTRY +} macx:HEADERS += src/qt/macdockiconhandler.h macx:OBJECTIVE_SOURCES += src/qt/macdockiconhandler.mm From e364ad962f40afb091db5f03a0c48342063672a0 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Tue, 20 Mar 2012 13:45:45 -0400 Subject: [PATCH 143/298] Use last checkpoint instead of hard-coded 140,700. Fixes #913. --- src/main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index 759e514ca81..c2decc339d9 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1508,10 +1508,11 @@ bool CBlock::AcceptBlock() return error("AcceptBlock() : AddToBlockIndex failed"); // Relay inventory, but don't relay old inventory during initial block download + int nBlockEstimate = Checkpoints::GetTotalBlocksEstimate(); if (hashBestChain == hash) CRITICAL_BLOCK(cs_vNodes) BOOST_FOREACH(CNode* pnode, vNodes) - if (nBestHeight > (pnode->nStartingHeight != -1 ? pnode->nStartingHeight - 2000 : 140700)) + if (nBestHeight > (pnode->nStartingHeight != -1 ? pnode->nStartingHeight - 2000 : nBlockEstimate)) pnode->PushInventory(CInv(MSG_BLOCK, hash)); return true; From 68d889db3458366a161b847f38346da0a650c1ed Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Thu, 22 Mar 2012 16:15:30 -0400 Subject: [PATCH 144/298] Fix grammatical errors in translation process documentation (partial of 2fac102) --- doc/translation_process.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/doc/translation_process.md b/doc/translation_process.md index cf1000573f0..603d557cf6f 100644 --- a/doc/translation_process.md +++ b/doc/translation_process.md @@ -1,7 +1,7 @@ Translations ============ -The QT GUI can be easily be translated into other languages. Here's how we +The Qt GUI can be easily translated into other languages. Here's how we handle those translations. Files and Folders @@ -30,10 +30,10 @@ This directory contains all translations. Filenames must adhere to this format: #### Source file -`src/qt/locale/bitcoin_en.ts` is a treated in a special way. It is used as the -source for all other translations. Whenever a string in the code is change +`src/qt/locale/bitcoin_en.ts` is treated in a special way. It is used as the +source for all other translations. Whenever a string in the code is changed this file must be updated to reflect those changes. Usually, this can be -accomplished by running `lupdate` +accomplished by running `lupdate`. Syncing with transifex ---------------------- @@ -42,9 +42,9 @@ We are using http://transifex.net as a frontend for translating the client. https://www.transifex.net/projects/p/bitcoin/resource/tx/ -The "transifex client":http://help.transifex.net/features/client/index.html -will help with fetching new translations from transifex. - +The "transifex client" (see: http://help.transifex.net/features/client/) +will help with fetching new translations from transifex. Use the following +config to be able to connect with the client. ### .tx/config From 8ed1f7c1532fe3e67ca5f7fc7c1c920bbf297203 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Sun, 19 Feb 2012 19:42:15 +0100 Subject: [PATCH 145/298] Report number of (dis)connected blocks in reorganization Also report old and new best, and fork point. --- src/main.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main.cpp b/src/main.cpp index c2decc339d9..12703621e8d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1311,6 +1311,9 @@ bool static Reorganize(CTxDB& txdb, CBlockIndex* pindexNew) BOOST_FOREACH(CTransaction& tx, vDelete) tx.RemoveFromMemoryPool(); + printf("REORGANIZE: Disconnected %i blocks; %s..%s\n", vDisconnect.size(), pfork->GetBlockHash().ToString().substr(0,20).c_str(), pindexBest->GetBlockHash().ToString().substr(0,20).c_str()); + printf("REORGANIZE: Connected %i blocks; %s..%s\n", vConnect.size(), pfork->GetBlockHash().ToString().substr(0,20).c_str(), pindexNew->GetBlockHash().ToString().substr(0,20).c_str()); + return true; } From b6751ed1b2a71e07cd3a8af4f02ce64fec39fe88 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Wed, 21 Mar 2012 13:15:27 +0100 Subject: [PATCH 146/298] More debug output for failed reorganizations --- src/main.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 12703621e8d..5c1b138dc3c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1251,6 +1251,9 @@ bool static Reorganize(CTxDB& txdb, CBlockIndex* pindexNew) vConnect.push_back(pindex); reverse(vConnect.begin(), vConnect.end()); + printf("REORGANIZE: Disconnect %i blocks; %s..%s\n", vDisconnect.size(), pfork->GetBlockHash().ToString().substr(0,20).c_str(), pindexBest->GetBlockHash().ToString().substr(0,20).c_str()); + printf("REORGANIZE: Connect %i blocks; %s..%s\n", vConnect.size(), pfork->GetBlockHash().ToString().substr(0,20).c_str(), pindexNew->GetBlockHash().ToString().substr(0,20).c_str()); + // Disconnect shorter branch vector vResurrect; BOOST_FOREACH(CBlockIndex* pindex, vDisconnect) @@ -1259,7 +1262,7 @@ bool static Reorganize(CTxDB& txdb, CBlockIndex* pindexNew) if (!block.ReadFromDisk(pindex)) return error("Reorganize() : ReadFromDisk for disconnect failed"); if (!block.DisconnectBlock(txdb, pindex)) - return error("Reorganize() : DisconnectBlock failed"); + return error("Reorganize() : DisconnectBlock %s failed", pindex->GetBlockHash().ToString().substr(0,20).c_str()); // Queue memory transactions to resurrect BOOST_FOREACH(const CTransaction& tx, block.vtx) @@ -1279,7 +1282,7 @@ bool static Reorganize(CTxDB& txdb, CBlockIndex* pindexNew) { // Invalid block txdb.TxnAbort(); - return error("Reorganize() : ConnectBlock failed"); + return error("Reorganize() : ConnectBlock %s failed", pindex->GetBlockHash().ToString().substr(0,20).c_str()); } // Queue memory transactions to delete @@ -1311,8 +1314,7 @@ bool static Reorganize(CTxDB& txdb, CBlockIndex* pindexNew) BOOST_FOREACH(CTransaction& tx, vDelete) tx.RemoveFromMemoryPool(); - printf("REORGANIZE: Disconnected %i blocks; %s..%s\n", vDisconnect.size(), pfork->GetBlockHash().ToString().substr(0,20).c_str(), pindexBest->GetBlockHash().ToString().substr(0,20).c_str()); - printf("REORGANIZE: Connected %i blocks; %s..%s\n", vConnect.size(), pfork->GetBlockHash().ToString().substr(0,20).c_str(), pindexNew->GetBlockHash().ToString().substr(0,20).c_str()); + printf("REORGANIZE: done\n"); return true; } From 04dc79f1cc19b48531cc9a16ca502eac34d7e95b Mon Sep 17 00:00:00 2001 From: Alistair Buxton Date: Sun, 18 Mar 2012 03:03:24 +0000 Subject: [PATCH 147/298] When disconnecting a node, clear the received buffer so that we do not process any already received messages. The primary reason to do this is if a node spams hundreds of messages and we ban them, we don't want to continue processing the rest of it. --- src/net.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/net.cpp b/src/net.cpp index a8d3d0b171b..763e160edd0 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -716,6 +716,7 @@ void CNode::CloseSocketDisconnect() printf("disconnecting node %s\n", addr.ToString().c_str()); closesocket(hSocket); hSocket = INVALID_SOCKET; + vRecv.clear(); } } From 1941765ae25d7223cdd4c44deb7474ae75dc48dc Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Wed, 21 Mar 2012 22:29:33 +0100 Subject: [PATCH 148/298] Fix warning about deprecated unescaped backslash --- bitcoin-qt.pro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bitcoin-qt.pro b/bitcoin-qt.pro index ad6fb001ee4..2b6fc5710b6 100644 --- a/bitcoin-qt.pro +++ b/bitcoin-qt.pro @@ -204,7 +204,7 @@ CODECFORTR = UTF-8 TRANSLATIONS = $$files(src/qt/locale/bitcoin_*.ts) isEmpty(QMAKE_LRELEASE) { - win32:QMAKE_LRELEASE = $$[QT_INSTALL_BINS]\lrelease.exe + win32:QMAKE_LRELEASE = $$[QT_INSTALL_BINS]\\lrelease.exe else:QMAKE_LRELEASE = $$[QT_INSTALL_BINS]/lrelease } isEmpty(TS_DIR):TS_DIR = src/qt/locale From fea0a27ddc30f2d51c386d268499d6c50363c202 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Thu, 22 Mar 2012 04:59:59 +0100 Subject: [PATCH 149/298] Check minversion before loading the rest of the wallet When a 0.6 wallet with compressed pubkeys is created, it writes a minversion record to prevent older clients from reading it. If the 0.5 loading it sees a key record before seeing the minversion record however, it will fail with DB_CORRUPT instead of DB_TOO_NEW. --- src/db.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/db.cpp b/src/db.cpp index 7f9439bf745..bf335e7e3fd 100644 --- a/src/db.cpp +++ b/src/db.cpp @@ -795,6 +795,13 @@ int CWalletDB::LoadWallet(CWallet* pwallet) //// todo: shouldn't we catch exceptions and try to recover and continue? CRITICAL_BLOCK(pwallet->cs_wallet) { + int nMinVersion = 0; + if (Read((string)"minversion", nMinVersion)) + { + if (nMinVersion > VERSION) + return DB_TOO_NEW; + } + // Get cursor Dbc* pcursor = GetCursor(); if (!pcursor) @@ -980,13 +987,6 @@ int CWalletDB::LoadWallet(CWallet* pwallet) if (strKey == "addrProxy") ssValue >> addrProxy; if (fHaveUPnP && strKey == "fUseUPnP") ssValue >> fUseUPnP; } - else if (strType == "minversion") - { - int nMinVersion = 0; - ssValue >> nMinVersion; - if (nMinVersion > VERSION) - return DB_TOO_NEW; - } } pcursor->close(); } From 9504e415cbeb128331fa4715bcccfaad6a443731 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Mon, 26 Mar 2012 12:33:35 -0400 Subject: [PATCH 150/298] Remove wxWidgets .exe and locales during setup --- share/setup.nsi | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/share/setup.nsi b/share/setup.nsi index c574269bc49..55390f3521e 100644 --- a/share/setup.nsi +++ b/share/setup.nsi @@ -75,6 +75,10 @@ Section -Main SEC0000 File /r /x *.exe /x *.o ../src\*.* SetOutPath $INSTDIR WriteRegStr HKCU "${REGKEY}\Components" Main 1 + + # Remove old wxwidgets-based-bitcoin executable and locales: + Delete /REBOOTOK $INSTDIR\bitcoin.exe + RMDir /r /REBOOTOK $INSTDIR\locale SectionEnd Section -post SEC0001 From ddd0d9ae54e52a299589c3655b5b2afc7c2bfd5e Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Tue, 27 Mar 2012 20:03:28 -0400 Subject: [PATCH 151/298] Minimal support for compressed-key signature recovery (for verifymessage) Upstream commits: 11529c6e4f7288d8a64c488a726ee3821c7adefe d4d9c734c315e99136fe245c5733ca75cab9f8bf --- src/key.h | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/key.h b/src/key.h index df5cfeb32c7..9673b2a0bca 100644 --- a/src/key.h +++ b/src/key.h @@ -169,6 +169,11 @@ protected: EC_KEY* pkey; bool fSet; + void SetCompressedPubKey() + { + EC_KEY_set_conv_form(pkey, POINT_CONVERSION_COMPRESSED); + } + public: CKey() { @@ -346,7 +351,8 @@ public: { if (vchSig.size() != 65) return false; - if (vchSig[0]<27 || vchSig[0]>=31) + int nV = vchSig[0]; + if (nV<27 || nV>=35) return false; ECDSA_SIG *sig = ECDSA_SIG_new(); BN_bin2bn(&vchSig[1],32,sig->r); @@ -354,7 +360,12 @@ public: EC_KEY_free(pkey); pkey = EC_KEY_new_by_curve_name(NID_secp256k1); - if (ECDSA_SIG_recover_key_GFp(pkey, sig, (unsigned char*)&hash, sizeof(hash), vchSig[0] - 27, 0) == 1) + if (nV >= 31) + { + SetCompressedPubKey(); + nV -= 4; + } + if (ECDSA_SIG_recover_key_GFp(pkey, sig, (unsigned char*)&hash, sizeof(hash), nV - 27, 0) == 1) { fSet = true; ECDSA_SIG_free(sig); From 60f89779a3586f8afae47bb8e9c374cd5fe7f8b6 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Sat, 25 Feb 2012 19:02:30 +0100 Subject: [PATCH 152/298] Do not invoke anti-DoS system for invalid BIP16 transactions Doing so would allow an attack on old nodes, which would relay a standard transaction spending a BIP16 output in an invalid way, until reaching a new node, which will disconnect their peer. Reported by makomk on IRC. --- src/main.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main.cpp b/src/main.cpp index 5c1b138dc3c..4316d242f9f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1028,7 +1028,15 @@ bool CTransaction::ConnectInputs(MapPrevTx inputs, // Verify signature if (!VerifySignature(txPrev, *this, i, fStrictPayToScriptHash, 0)) + { + // only during transition phase for P2SH: do not invoke (external) + // anti-DoS code for potentially old clients relaying bad P2SH + // transactions + if (fStrictPayToScriptHash && VerifySignature(txPrev, *this, i, false, 0)) + return error("ConnectInputs() : %s P2SH VerifySignature failed", GetHash().ToString().substr(0,10).c_str()); + return error("ConnectInputs() : %s VerifySignature failed", GetHash().ToString().substr(0,10).c_str()); + } // Mark outpoints as spent txindex.vSpent[prevout.n] = posThisTx; From d15180297fb68dbc423054bbfcd421bc02b7caef Mon Sep 17 00:00:00 2001 From: Vegard Nossum Date: Sun, 31 Jul 2011 20:00:38 +0200 Subject: [PATCH 153/298] Fix testing setup There were some problems with the existing testing setup: - Makefile rules for test-file compilation used CFLAGS instead of CXXFLAGS in makefile.unix --- src/makefile.unix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/makefile.unix b/src/makefile.unix index a2cbc7c77e1..6629067d8a8 100644 --- a/src/makefile.unix +++ b/src/makefile.unix @@ -133,7 +133,7 @@ bitcoind: $(OBJS:obj/%=obj/nogui/%) $(CXX) $(CXXFLAGS) -o $@ $^ $(LIBS) obj/test/test_bitcoin.o: $(wildcard test/*.cpp) $(HEADERS) - $(CXX) -c $(CFLAGS) -o $@ test/test_bitcoin.cpp + $(CXX) -c $(CXXFLAGS) -o $@ test/test_bitcoin.cpp test_bitcoin: obj/test/test_bitcoin.o $(filter-out obj/nogui/init.o,$(OBJS:obj/%=obj/nogui/%)) $(CXX) $(CXXFLAGS) -o $@ $(LIBPATHS) $^ -Wl,-Bstatic -lboost_unit_test_framework $(LIBS) From d53fbb4a53f4431291ba5b93f0fc1e85522e42de Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Wed, 4 Apr 2012 09:35:22 -0400 Subject: [PATCH 154/298] Fix script tests for P2SH Upstream: 922e8e2929a2e78270868385aa46f96002fbcff3 --- src/test/script_tests.cpp | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/test/script_tests.cpp b/src/test/script_tests.cpp index 13feb86b977..541f5f0c499 100644 --- a/src/test/script_tests.cpp +++ b/src/test/script_tests.cpp @@ -7,8 +7,8 @@ using namespace std; extern uint256 SignatureHash(CScript scriptCode, const CTransaction& txTo, unsigned int nIn, int nHashType); -extern bool VerifyScript(const CScript& scriptSig, const CScript& scriptPubKey, const CTransaction& txTo, unsigned int nIn, int nHashType); -extern bool VerifySignature(const CTransaction& txFrom, const CTransaction& txTo, unsigned int nIn, int nHashType); +extern bool VerifyScript(const CScript& scriptSig, const CScript& scriptPubKey, const CTransaction& txTo, unsigned int nIn, + bool fValidatePayToScriptHash, int nHashType); BOOST_AUTO_TEST_SUITE(script_tests) @@ -91,15 +91,15 @@ BOOST_AUTO_TEST_CASE(script_CHECKMULTISIG12) txTo12.vout[0].nValue = 1; CScript goodsig1 = sign_multisig(scriptPubKey12, key1, txTo12); - BOOST_CHECK(VerifyScript(goodsig1, scriptPubKey12, txTo12, 0, 0)); + BOOST_CHECK(VerifyScript(goodsig1, scriptPubKey12, txTo12, 0, true, 0)); txTo12.vout[0].nValue = 2; - BOOST_CHECK(!VerifyScript(goodsig1, scriptPubKey12, txTo12, 0, 0)); + BOOST_CHECK(!VerifyScript(goodsig1, scriptPubKey12, txTo12, 0, true, 0)); CScript goodsig2 = sign_multisig(scriptPubKey12, key2, txTo12); - BOOST_CHECK(VerifyScript(goodsig2, scriptPubKey12, txTo12, 0, 0)); + BOOST_CHECK(VerifyScript(goodsig2, scriptPubKey12, txTo12, 0, true, 0)); CScript badsig1 = sign_multisig(scriptPubKey12, key3, txTo12); - BOOST_CHECK(!VerifyScript(badsig1, scriptPubKey12, txTo12, 0, 0)); + BOOST_CHECK(!VerifyScript(badsig1, scriptPubKey12, txTo12, 0, true, 0)); } BOOST_AUTO_TEST_CASE(script_CHECKMULTISIG23) @@ -127,46 +127,46 @@ BOOST_AUTO_TEST_CASE(script_CHECKMULTISIG23) std::vector keys; keys.push_back(key1); keys.push_back(key2); CScript goodsig1 = sign_multisig(scriptPubKey23, keys, txTo23); - BOOST_CHECK(VerifyScript(goodsig1, scriptPubKey23, txTo23, 0, 0)); + BOOST_CHECK(VerifyScript(goodsig1, scriptPubKey23, txTo23, 0, true, 0)); keys.clear(); keys.push_back(key1); keys.push_back(key3); CScript goodsig2 = sign_multisig(scriptPubKey23, keys, txTo23); - BOOST_CHECK(VerifyScript(goodsig2, scriptPubKey23, txTo23, 0, 0)); + BOOST_CHECK(VerifyScript(goodsig2, scriptPubKey23, txTo23, 0, true, 0)); keys.clear(); keys.push_back(key2); keys.push_back(key3); CScript goodsig3 = sign_multisig(scriptPubKey23, keys, txTo23); - BOOST_CHECK(VerifyScript(goodsig3, scriptPubKey23, txTo23, 0, 0)); + BOOST_CHECK(VerifyScript(goodsig3, scriptPubKey23, txTo23, 0, true, 0)); keys.clear(); keys.push_back(key2); keys.push_back(key2); // Can't re-use sig CScript badsig1 = sign_multisig(scriptPubKey23, keys, txTo23); - BOOST_CHECK(!VerifyScript(badsig1, scriptPubKey23, txTo23, 0, 0)); + BOOST_CHECK(!VerifyScript(badsig1, scriptPubKey23, txTo23, 0, true, 0)); keys.clear(); keys.push_back(key2); keys.push_back(key1); // sigs must be in correct order CScript badsig2 = sign_multisig(scriptPubKey23, keys, txTo23); - BOOST_CHECK(!VerifyScript(badsig2, scriptPubKey23, txTo23, 0, 0)); + BOOST_CHECK(!VerifyScript(badsig2, scriptPubKey23, txTo23, 0, true, 0)); keys.clear(); keys.push_back(key3); keys.push_back(key2); // sigs must be in correct order CScript badsig3 = sign_multisig(scriptPubKey23, keys, txTo23); - BOOST_CHECK(!VerifyScript(badsig3, scriptPubKey23, txTo23, 0, 0)); + BOOST_CHECK(!VerifyScript(badsig3, scriptPubKey23, txTo23, 0, true, 0)); keys.clear(); keys.push_back(key4); keys.push_back(key2); // sigs must match pubkeys CScript badsig4 = sign_multisig(scriptPubKey23, keys, txTo23); - BOOST_CHECK(!VerifyScript(badsig4, scriptPubKey23, txTo23, 0, 0)); + BOOST_CHECK(!VerifyScript(badsig4, scriptPubKey23, txTo23, 0, true, 0)); keys.clear(); keys.push_back(key1); keys.push_back(key4); // sigs must match pubkeys CScript badsig5 = sign_multisig(scriptPubKey23, keys, txTo23); - BOOST_CHECK(!VerifyScript(badsig5, scriptPubKey23, txTo23, 0, 0)); + BOOST_CHECK(!VerifyScript(badsig5, scriptPubKey23, txTo23, 0, true, 0)); keys.clear(); // Must have signatures CScript badsig6 = sign_multisig(scriptPubKey23, keys, txTo23); - BOOST_CHECK(!VerifyScript(badsig6, scriptPubKey23, txTo23, 0, 0)); + BOOST_CHECK(!VerifyScript(badsig6, scriptPubKey23, txTo23, 0, true, 0)); } From 2f98e8c1a4b6b0da41399791b3161bcd8c032454 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Mon, 26 Mar 2012 22:12:25 +0200 Subject: [PATCH 155/298] Updated my GPG key --- .../gitian-downloader/bitcoin-download-config | 2 +- contrib/gitian-downloader/sipa-key.pgp | Bin 13642 -> 108922 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/gitian-downloader/bitcoin-download-config b/contrib/gitian-downloader/bitcoin-download-config index d21bb07808b..991971807f0 100644 --- a/contrib/gitian-downloader/bitcoin-download-config +++ b/contrib/gitian-downloader/bitcoin-download-config @@ -17,7 +17,7 @@ signers: key: devrandom D762373D24904A3E42F33B08B9A408E71DAAC974: weight: 40 - name: Sipa + name: "Pieter Wuille" key: sipa 77E72E69DA7EE0A148C06B21B34821D4944DE5F7: weight: 40 diff --git a/contrib/gitian-downloader/sipa-key.pgp b/contrib/gitian-downloader/sipa-key.pgp index 086c9eb42e4a1e3d017e4bc5fcf560dffc52c929..a52a5deb1b6c4691bb7073fc819080f66df6d2f2 100644 GIT binary patch delta 95814 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

G=xr8+JoEc#VG=ZkKSm2kwqLNnD&o3!6lO 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 delta 83 zcmV-Z0IdJ|(gwSS+(Drvw55v_q2+p)r#M p^c1sF_D%wm5CT@S5ePa0xBEo_(HE0(STnb7VF3gJw@r}&9uFok9i9LH From 3f47eb4a9a42d97a9a60d3b3351b0a353892ee44 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Mon, 26 Mar 2012 22:12:25 +0200 Subject: [PATCH 156/298] Updated my GPG key --- .../gitian-downloader/linux-download-config | 2 +- contrib/gitian-downloader/sipa-key.pgp | Bin 13642 -> 108922 bytes .../gitian-downloader/win32-download-config | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/contrib/gitian-downloader/linux-download-config b/contrib/gitian-downloader/linux-download-config index d21bb07808b..991971807f0 100644 --- a/contrib/gitian-downloader/linux-download-config +++ b/contrib/gitian-downloader/linux-download-config @@ -17,7 +17,7 @@ signers: key: devrandom D762373D24904A3E42F33B08B9A408E71DAAC974: weight: 40 - name: Sipa + name: "Pieter Wuille" key: sipa 77E72E69DA7EE0A148C06B21B34821D4944DE5F7: weight: 40 diff --git a/contrib/gitian-downloader/sipa-key.pgp b/contrib/gitian-downloader/sipa-key.pgp index 086c9eb42e4a1e3d017e4bc5fcf560dffc52c929..a52a5deb1b6c4691bb7073fc819080f66df6d2f2 100644 GIT binary patch delta 95814 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

G=xr8+JoEc#VG=ZkKSm2kwqLNnD&o3!6lO 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 delta 83 zcmV-Z0IdJ|(gwSS+(Drvw55v_q2+p)r#M p^c1sF_D%wm5CT@S5ePa0xBEo_(HE0(STnb7VF3gJw@r}&9uFok9i9LH diff --git a/contrib/gitian-downloader/win32-download-config b/contrib/gitian-downloader/win32-download-config index c0de21c48f7..0a7362a37d1 100644 --- a/contrib/gitian-downloader/win32-download-config +++ b/contrib/gitian-downloader/win32-download-config @@ -17,7 +17,7 @@ signers: key: devrandom D762373D24904A3E42F33B08B9A408E71DAAC974: weight: 40 - name: Sipa + name: "Pieter Wuille" key: sipa 77E72E69DA7EE0A148C06B21B34821D4944DE5F7: weight: 40 From 680667784103ad01cd0ae7e9c82a1e8e1458c793 Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Tue, 27 Mar 2012 23:15:05 +0200 Subject: [PATCH 157/298] removed an ugly line break in a transaction tooltip for case TransactionStatus::Mature --- src/qt/transactiontablemodel.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/qt/transactiontablemodel.cpp b/src/qt/transactiontablemodel.cpp index b863546691d..480d4ac25e0 100644 --- a/src/qt/transactiontablemodel.cpp +++ b/src/qt/transactiontablemodel.cpp @@ -288,20 +288,19 @@ QString TransactionTableModel::formatTxStatus(const TransactionRecord *wtx) cons } if(wtx->type == TransactionRecord::Generated) { - status += "\n"; switch(wtx->status.maturity) { case TransactionStatus::Immature: - status += tr("Mined balance will be available in %n more blocks", "", + status += "\n" + tr("Mined balance will be available in %n more blocks", "", wtx->status.matures_in); break; case TransactionStatus::Mature: break; case TransactionStatus::MaturesWarning: - status += tr("This block was not received by any other nodes and will probably not be accepted!"); + status += "\n" + tr("This block was not received by any other nodes and will probably not be accepted!"); break; case TransactionStatus::NotAccepted: - status += tr("Generated but not accepted"); + status += "\n" + tr("Generated but not accepted"); break; } } From 8fae3dae11db28dc58a4a7a1b697a6b78cbf62c7 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Mon, 12 Mar 2012 00:45:08 -0400 Subject: [PATCH 158/298] Add Luke-Jr's PGP key to gitian-downloader --- .../gitian-downloader/bitcoin-download-config | 4 ++++ contrib/gitian-downloader/luke-jr-key.pgp | Bin 0 -> 5467 bytes 2 files changed, 4 insertions(+) create mode 100644 contrib/gitian-downloader/luke-jr-key.pgp diff --git a/contrib/gitian-downloader/bitcoin-download-config b/contrib/gitian-downloader/bitcoin-download-config index 991971807f0..347670e586c 100644 --- a/contrib/gitian-downloader/bitcoin-download-config +++ b/contrib/gitian-downloader/bitcoin-download-config @@ -15,6 +15,10 @@ signers: weight: 40 name: Devrandom key: devrandom + E463A93F5F3117EEDE6C7316BD02942421F4889F: + weight: 40 + name: Luke-Jr + key: luke-jr D762373D24904A3E42F33B08B9A408E71DAAC974: weight: 40 name: "Pieter Wuille" diff --git a/contrib/gitian-downloader/luke-jr-key.pgp b/contrib/gitian-downloader/luke-jr-key.pgp new file mode 100644 index 0000000000000000000000000000000000000000..c40917d78c512ac13414b0d9e92c59f57e6a9c77 GIT binary patch literal 5467 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 Date: Mon, 12 Mar 2012 00:45:08 -0400 Subject: [PATCH 159/298] Add Luke-Jr's PGP key to gitian-downloader --- contrib/gitian-downloader/linux-download-config | 4 ++++ contrib/gitian-downloader/luke-jr-key.pgp | Bin 0 -> 5467 bytes contrib/gitian-downloader/win32-download-config | 4 ++++ 3 files changed, 8 insertions(+) create mode 100644 contrib/gitian-downloader/luke-jr-key.pgp diff --git a/contrib/gitian-downloader/linux-download-config b/contrib/gitian-downloader/linux-download-config index 991971807f0..347670e586c 100644 --- a/contrib/gitian-downloader/linux-download-config +++ b/contrib/gitian-downloader/linux-download-config @@ -15,6 +15,10 @@ signers: weight: 40 name: Devrandom key: devrandom + E463A93F5F3117EEDE6C7316BD02942421F4889F: + weight: 40 + name: Luke-Jr + key: luke-jr D762373D24904A3E42F33B08B9A408E71DAAC974: weight: 40 name: "Pieter Wuille" diff --git a/contrib/gitian-downloader/luke-jr-key.pgp b/contrib/gitian-downloader/luke-jr-key.pgp new file mode 100644 index 0000000000000000000000000000000000000000..c40917d78c512ac13414b0d9e92c59f57e6a9c77 GIT binary patch literal 5467 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 Date: Sat, 31 Mar 2012 15:08:25 +0200 Subject: [PATCH 160/298] Use a messagebox to display the error when -server is provided without providing a rpc password (plus part of 7cfbe1fee465e82ddbdc8ed17dfcce791bd765f5) --- src/bitcoinrpc.cpp | 5 +++-- src/noui.h | 2 ++ src/qt/bitcoin.cpp | 9 ++++++++- src/qt/bitcoingui.cpp | 9 +++++++-- src/qt/bitcoingui.h | 2 +- src/qtui.h | 2 ++ 6 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/bitcoinrpc.cpp b/src/bitcoinrpc.cpp index 1f57bf9cd0d..a4a1fd4d6b3 100644 --- a/src/bitcoinrpc.cpp +++ b/src/bitcoinrpc.cpp @@ -2174,7 +2174,7 @@ void ThreadRPCServer2(void* parg) strWhatAmI = strprintf(_("To use the %s option"), "\"-server\""); else if (mapArgs.count("-daemon")) strWhatAmI = strprintf(_("To use the %s option"), "\"-daemon\""); - PrintConsole( + ThreadSafeMessageBox(strprintf( _("Error: %s, you must set a rpcpassword in the configuration file:\n %s\n" "It is recommended you use the following random password:\n" "rpcuser=bitcoinrpc\n" @@ -2183,7 +2183,8 @@ void ThreadRPCServer2(void* parg) "If the file does not exist, create it with owner-readable-only file permissions.\n"), strWhatAmI.c_str(), GetConfigFile().c_str(), - EncodeBase58(&rand_pwd[0],&rand_pwd[0]+32).c_str()); + EncodeBase58(&rand_pwd[0],&rand_pwd[0]+32).c_str()), + _("Error"), wxOK | wxMODAL); #ifndef QT_GUI CreateThread(Shutdown, NULL); #endif diff --git a/src/noui.h b/src/noui.h index 754c2225fce..0bbf45a72ac 100644 --- a/src/noui.h +++ b/src/noui.h @@ -36,6 +36,8 @@ typedef void wxWindow; #define wxHELP 0x00008000 #define wxMORE 0x00010000 #define wxSETUP 0x00020000 +// Force blocking, modal message box dialog (not just notification) +#define wxMODAL 0x00040000 inline int MyMessageBox(const std::string& message, const std::string& caption="Message", int style=wxOK, wxWindow* parent=NULL, int x=-1, int y=-1) { diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index 54e6bb34c20..311fab3c9b9 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -41,12 +41,19 @@ int MyMessageBox(const std::string& message, const std::string& caption, int sty int ThreadSafeMessageBox(const std::string& message, const std::string& caption, int style, wxWindow* parent, int x, int y) { + bool modal = style & wxMODAL; + + if (modal) + while (!guiref) + sleep(1); + // Message from network thread if(guiref) { QMetaObject::invokeMethod(guiref, "error", Qt::QueuedConnection, Q_ARG(QString, QString::fromStdString(caption)), - Q_ARG(QString, QString::fromStdString(message))); + Q_ARG(QString, QString::fromStdString(message)), + Q_ARG(bool, modal)); } else { diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index 78becafe5b4..ed891f369de 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -516,10 +516,15 @@ void BitcoinGUI::refreshStatusBar() setNumBlocks(clientModel->getNumBlocks()); } -void BitcoinGUI::error(const QString &title, const QString &message) +void BitcoinGUI::error(const QString &title, const QString &message, bool modal) { // Report errors from network/worker thread - notificator->notify(Notificator::Critical, title, message); + if (modal) + { + QMessageBox::critical(this, title, message, QMessageBox::Ok, QMessageBox::Ok); + } else { + notificator->notify(Notificator::Critical, title, message); + } } void BitcoinGUI::changeEvent(QEvent *e) diff --git a/src/qt/bitcoingui.h b/src/qt/bitcoingui.h index 9b672ee809d..efe3e9cc6d7 100644 --- a/src/qt/bitcoingui.h +++ b/src/qt/bitcoingui.h @@ -100,7 +100,7 @@ public slots: /** Set the status bar text if there are any warnings (removes sync progress bar if applicable) */ void refreshStatusBar(); - void error(const QString &title, const QString &message); + void error(const QString &title, const QString &message, bool modal = false); /* It is currently not possible to pass a return value to another thread through BlockingQueuedConnection, so use an indirected pointer. http://bugreports.qt.nokia.com/browse/QTBUG-10440 diff --git a/src/qtui.h b/src/qtui.h index 17fc44e94b6..193f849249e 100644 --- a/src/qtui.h +++ b/src/qtui.h @@ -35,6 +35,8 @@ typedef void wxWindow; #define wxHELP 0x00008000 #define wxMORE 0x00010000 #define wxSETUP 0x00020000 +// Force blocking, modal message box dialog (not just notification) +#define wxMODAL 0x00040000 extern int MyMessageBox(const std::string& message, const std::string& caption="Message", int style=wxOK, wxWindow* parent=NULL, int x=-1, int y=-1); #define wxMessageBox MyMessageBox From bf754cfd01a4441f4e2c47387e26e6a3a1bff70f Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Fri, 16 Dec 2011 15:04:43 -0500 Subject: [PATCH 161/298] Add laanwj to gitian download scripts. --- .../gitian-downloader/bitcoin-download-config | 4 +++ contrib/gitian-downloader/laanwj-key.pgp | 28 +++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 contrib/gitian-downloader/laanwj-key.pgp diff --git a/contrib/gitian-downloader/bitcoin-download-config b/contrib/gitian-downloader/bitcoin-download-config index 347670e586c..88e48e2c23f 100644 --- a/contrib/gitian-downloader/bitcoin-download-config +++ b/contrib/gitian-downloader/bitcoin-download-config @@ -31,4 +31,8 @@ signers: weight: 40 name: "Gavin Andresen" key: gavinandresen + 71A3B16735405025D447E8F274810B012346C9A6 + weight: 40 + name: "Wladimir J. van der Laan" + key: laanwj minimum_weight: 120 diff --git a/contrib/gitian-downloader/laanwj-key.pgp b/contrib/gitian-downloader/laanwj-key.pgp new file mode 100644 index 00000000000..559295109d9 --- /dev/null +++ b/contrib/gitian-downloader/laanwj-key.pgp @@ -0,0 +1,28 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: SKS 1.1.0 + +mQENBE5UtMEBCADOUz2i9l/D8xYINCmfUDnxi+DXvX5LmZ39ZdvsoE+ugO0SRRGdIHEFO2is +0xezX50wXu9aneb+tEqM0BuiLo6VxaXpxrkxHpr6c4jf37SkE/H0qsi/txEUp7337y3+4HMG +lUjiuh802I72p1qusjsKBnmnnR0rwNouTcoDmGUDh7jpKCtzFv+2TR2dRthJn7vmmjq3+bG6 +PYfqoFY1yHrAGT1lrDBULZsQ/NBLI2+J4oo2LYv3GCq8GNnzrovqvTvui50VSROhLrOe58o2 +shE+sjQShAy5wYkPt1R1fQnpfx+5vf+TPnkxVwRb3h5GhCp0YL8XC/BXsd5vM4KlVH2rABEB +AAG0K1dsYWRpbWlyIEouIHZhbiBkZXIgTGFhbiA8bGFhbndqQGdtYWlsLmNvbT6JATgEEwEC +ACIFAk5UtMECGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEHSBCwEjRsmmy6YIAK09 +buNXyYQrJBsX16sXxEhx5QPKyF3uHJDFJv66SdnpvIkNoznsaPiRJkbTANop93FZmaGa6wVn +zGDiz7jPA8Dpxx5aAYPhIT+zPJAdXWM3wJ/Gio9besRNzniai8Lwi5MZ9R/5yFGBobm6/AcN +4sUoqA3NSV2U3I29R0Vwlzo8GVtmyi9ENSi6Oo7AcXNTRt69cxW4nAHkB+amwwDJlcAb31ex +bogYXPhScwqQZixRr+JBkKxBjkTXXnQypT4KI5SegYwQVYfyiZmDP7UHKe/u6pSKKbVphLg8 +xLB5spcXse8/a2+onrbNlw6y8TXiJ++Z54PE7zztWTXf2huakeG5AQ0ETlS0wQEIAMNO3OkP +xoPRKWzBLcI7JRITAW+HNaLTq3uN2+4WxA57DEjbL9EDoAv+7wTkDAL40f0T+xiu6GJcLFjw +GJZu/tYu7+mErHjrdo+K4suCQt7w5EXCBvOLjhW4tyYMzNx8hP+oqzOW9iEC+6VV91+DYeqt +EkJuyVXOI4vzBlTw8uGow8aMMsCq8XVvKUZFTPsjGl197Q5B3A+ZOFCR8xqiqdPjuz6MglVV +oFdDNu3EZn8zkGsQlovXoE9ndVeVzx/XMNmsxFaMYsReUs253RIf1FEfgExID0fg2OnyLCjS +2iFW1RgajS+/saIkKl+N1iuMzJA7wMAM0plhRueOG0MtZSsAEQEAAYkBHwQYAQIACQUCTlS0 +wQIbDAAKCRB0gQsBI0bJpmsDB/4waenn2CvSHXyomykfpwf5lMte1V5LvH3z5R2LY+1NopRv +LSz3iC39x69XWiTbhywDfgafnGPW4pWBOff2/bu5/A6z1Hnan1vyrRRD/hx1uMJ7S6q+bIvZ +iVIg1p0jH6tdIIhwX3cydhdRZHo7e9oSMgOUWsr6Ar59NRo9CENwGPE4U61HXfOnxWdrFWoA +XdwZczBeLxmUy6Vo6sKqv+gE4bqrtAM0sY/MsQ9cU95x+52ox/sq44lQMwd3ZBYUP7B1qbHI +hZSZuch6MLi5scLPeau0ZvCaljiaMeivP5+x0gWPRs0kI+9sZxInbqvrsJ6oOBJM3xYGhtn1 +zZ7qmZR7 +=si/k +-----END PGP PUBLIC KEY BLOCK----- From d02833c76ab7b26ed4fa27fdad8f1d6bcd1d801c Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Fri, 16 Dec 2011 15:04:43 -0500 Subject: [PATCH 162/298] Add laanwj to gitian download scripts. --- contrib/gitian-downloader/laanwj-key.pgp | 28 +++++++++++++++++++ .../gitian-downloader/linux-download-config | 4 +++ .../gitian-downloader/win32-download-config | 4 +++ 3 files changed, 36 insertions(+) create mode 100644 contrib/gitian-downloader/laanwj-key.pgp diff --git a/contrib/gitian-downloader/laanwj-key.pgp b/contrib/gitian-downloader/laanwj-key.pgp new file mode 100644 index 00000000000..559295109d9 --- /dev/null +++ b/contrib/gitian-downloader/laanwj-key.pgp @@ -0,0 +1,28 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: SKS 1.1.0 + +mQENBE5UtMEBCADOUz2i9l/D8xYINCmfUDnxi+DXvX5LmZ39ZdvsoE+ugO0SRRGdIHEFO2is +0xezX50wXu9aneb+tEqM0BuiLo6VxaXpxrkxHpr6c4jf37SkE/H0qsi/txEUp7337y3+4HMG +lUjiuh802I72p1qusjsKBnmnnR0rwNouTcoDmGUDh7jpKCtzFv+2TR2dRthJn7vmmjq3+bG6 +PYfqoFY1yHrAGT1lrDBULZsQ/NBLI2+J4oo2LYv3GCq8GNnzrovqvTvui50VSROhLrOe58o2 +shE+sjQShAy5wYkPt1R1fQnpfx+5vf+TPnkxVwRb3h5GhCp0YL8XC/BXsd5vM4KlVH2rABEB +AAG0K1dsYWRpbWlyIEouIHZhbiBkZXIgTGFhbiA8bGFhbndqQGdtYWlsLmNvbT6JATgEEwEC +ACIFAk5UtMECGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEHSBCwEjRsmmy6YIAK09 +buNXyYQrJBsX16sXxEhx5QPKyF3uHJDFJv66SdnpvIkNoznsaPiRJkbTANop93FZmaGa6wVn +zGDiz7jPA8Dpxx5aAYPhIT+zPJAdXWM3wJ/Gio9besRNzniai8Lwi5MZ9R/5yFGBobm6/AcN +4sUoqA3NSV2U3I29R0Vwlzo8GVtmyi9ENSi6Oo7AcXNTRt69cxW4nAHkB+amwwDJlcAb31ex +bogYXPhScwqQZixRr+JBkKxBjkTXXnQypT4KI5SegYwQVYfyiZmDP7UHKe/u6pSKKbVphLg8 +xLB5spcXse8/a2+onrbNlw6y8TXiJ++Z54PE7zztWTXf2huakeG5AQ0ETlS0wQEIAMNO3OkP +xoPRKWzBLcI7JRITAW+HNaLTq3uN2+4WxA57DEjbL9EDoAv+7wTkDAL40f0T+xiu6GJcLFjw +GJZu/tYu7+mErHjrdo+K4suCQt7w5EXCBvOLjhW4tyYMzNx8hP+oqzOW9iEC+6VV91+DYeqt +EkJuyVXOI4vzBlTw8uGow8aMMsCq8XVvKUZFTPsjGl197Q5B3A+ZOFCR8xqiqdPjuz6MglVV +oFdDNu3EZn8zkGsQlovXoE9ndVeVzx/XMNmsxFaMYsReUs253RIf1FEfgExID0fg2OnyLCjS +2iFW1RgajS+/saIkKl+N1iuMzJA7wMAM0plhRueOG0MtZSsAEQEAAYkBHwQYAQIACQUCTlS0 +wQIbDAAKCRB0gQsBI0bJpmsDB/4waenn2CvSHXyomykfpwf5lMte1V5LvH3z5R2LY+1NopRv +LSz3iC39x69XWiTbhywDfgafnGPW4pWBOff2/bu5/A6z1Hnan1vyrRRD/hx1uMJ7S6q+bIvZ +iVIg1p0jH6tdIIhwX3cydhdRZHo7e9oSMgOUWsr6Ar59NRo9CENwGPE4U61HXfOnxWdrFWoA +XdwZczBeLxmUy6Vo6sKqv+gE4bqrtAM0sY/MsQ9cU95x+52ox/sq44lQMwd3ZBYUP7B1qbHI +hZSZuch6MLi5scLPeau0ZvCaljiaMeivP5+x0gWPRs0kI+9sZxInbqvrsJ6oOBJM3xYGhtn1 +zZ7qmZR7 +=si/k +-----END PGP PUBLIC KEY BLOCK----- diff --git a/contrib/gitian-downloader/linux-download-config b/contrib/gitian-downloader/linux-download-config index 347670e586c..88e48e2c23f 100644 --- a/contrib/gitian-downloader/linux-download-config +++ b/contrib/gitian-downloader/linux-download-config @@ -31,4 +31,8 @@ signers: weight: 40 name: "Gavin Andresen" key: gavinandresen + 71A3B16735405025D447E8F274810B012346C9A6 + weight: 40 + name: "Wladimir J. van der Laan" + key: laanwj minimum_weight: 120 diff --git a/contrib/gitian-downloader/win32-download-config b/contrib/gitian-downloader/win32-download-config index 84ad989ada8..595626f28f9 100644 --- a/contrib/gitian-downloader/win32-download-config +++ b/contrib/gitian-downloader/win32-download-config @@ -31,4 +31,8 @@ signers: weight: 40 name: "Gavin Andresen" key: gavinandresen + 71A3B16735405025D447E8F274810B012346C9A6 + weight: 40 + name: "Wladimir J. van der Laan" + key: laanwj minimum_weight: 120 From 53e596512c62f3a874e616e80375f644c05ab42c Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Mon, 2 Apr 2012 20:34:17 +0200 Subject: [PATCH 163/298] Increase time ago of last block for "up to date" status from 30 to 90 minutes It was too hyperactive. gmaxwell: I mean that right now when the block gap goes over an hour it starts showing synchronizing. Increasing that to 90 minutes or so would make it only happen about 6.4 times per year --- src/qt/bitcoingui.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index ed891f369de..be608381713 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -480,7 +480,7 @@ void BitcoinGUI::setNumBlocks(int count) } // Set icon state: spinning if catching up, tick otherwise - if(secs < 30*60) + if(secs < 90*60) { tooltip = tr("Up to date") + QString(".\n") + tooltip; labelBlocksIcon->setPixmap(QIcon(":/icons/synced").pixmap(STATUSBAR_ICONSIZE,STATUSBAR_ICONSIZE)); From c7057326eaba2d50410016a9825f0052dd0248b5 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Thu, 5 Apr 2012 01:02:49 +0200 Subject: [PATCH 164/298] Verify status of encrypt/decrypt calls to detect failed padding --- src/crypter.cpp | 24 ++++++++++++++---------- src/keystore.cpp | 4 ++++ 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/crypter.cpp b/src/crypter.cpp index 9a8e6ca89ae..5b7bfec06a2 100644 --- a/src/crypter.cpp +++ b/src/crypter.cpp @@ -73,14 +73,16 @@ bool CCrypter::Encrypt(const CKeyingMaterial& vchPlaintext, std::vector& vchCiphertext, CKeyingM EVP_CIPHER_CTX ctx; + bool fOk = true; + EVP_CIPHER_CTX_init(&ctx); - EVP_DecryptInit_ex(&ctx, EVP_aes_256_cbc(), NULL, chKey, chIV); - - EVP_DecryptUpdate(&ctx, &vchPlaintext[0], &nPLen, &vchCiphertext[0], nLen); - EVP_DecryptFinal_ex(&ctx, (&vchPlaintext[0])+nPLen, &nFLen); - + if (fOk) fOk = EVP_DecryptInit_ex(&ctx, EVP_aes_256_cbc(), NULL, chKey, chIV); + if (fOk) fOk = EVP_DecryptUpdate(&ctx, &vchPlaintext[0], &nPLen, &vchCiphertext[0], nLen); + if (fOk) fOk = EVP_DecryptFinal_ex(&ctx, (&vchPlaintext[0])+nPLen, &nFLen); EVP_CIPHER_CTX_cleanup(&ctx); + if (!fOk) return false; + vchPlaintext.resize(nPLen + nFLen); return true; } diff --git a/src/keystore.cpp b/src/keystore.cpp index 68f57e7e0ef..2e4de87af5e 100644 --- a/src/keystore.cpp +++ b/src/keystore.cpp @@ -71,6 +71,8 @@ bool CCryptoKeyStore::Unlock(const CKeyingMaterial& vMasterKeyIn) CSecret vchSecret; if(!DecryptSecret(vMasterKeyIn, vchCryptedSecret, Hash(vchPubKey.begin(), vchPubKey.end()), vchSecret)) return false; + if (vchSecret.size() != 32) + return false; CKey key; key.SetSecret(vchSecret); if (key.GetPubKey() == vchPubKey) @@ -131,6 +133,8 @@ bool CCryptoKeyStore::GetKey(const CBitcoinAddress &address, CKey& keyOut) const CSecret vchSecret; if (!DecryptSecret(vMasterKey, vchCryptedSecret, Hash(vchPubKey.begin(), vchPubKey.end()), vchSecret)) return false; + if (vchSecret.size() != 32) + return false; keyOut.SetSecret(vchSecret); return true; } From 8ae76e0f5d1e9beeeab5f1dfc9b195d0999729d7 Mon Sep 17 00:00:00 2001 From: graingert Date: Fri, 6 Apr 2012 04:08:16 +0200 Subject: [PATCH 165/298] Change sign message bitcoin address tooltip to "The address to sign the message with" Closes #1050 --- src/qt/forms/messagepage.ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qt/forms/messagepage.ui b/src/qt/forms/messagepage.ui index 131e15bdb32..8bd6d8b54bd 100644 --- a/src/qt/forms/messagepage.ui +++ b/src/qt/forms/messagepage.ui @@ -35,7 +35,7 @@ - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) 34 From d652709abaccff37c1e5ea36a8334ad643809d23 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Sun, 25 Mar 2012 17:25:10 -0400 Subject: [PATCH 166/298] Bugfix: Replace "URL" with "URI" where we aren't actually working with URLs --- bitcoin-qt.pro | 4 +- src/qt/bitcoin.cpp | 22 +++++----- src/qt/bitcoingui.cpp | 12 +++--- src/qt/bitcoingui.h | 2 +- src/qt/guiutil.cpp | 18 ++++---- src/qt/guiutil.h | 8 ++-- src/qt/qtipcserver.cpp | 13 +++--- src/qt/qtipcserver.h | 2 + src/qt/sendcoinsdialog.cpp | 4 +- src/qt/sendcoinsdialog.h | 2 +- src/qt/test/test_main.cpp | 4 +- src/qt/test/{urltests.cpp => uritests.cpp} | 48 +++++++++++----------- src/qt/test/uritests.h | 15 +++++++ src/qt/test/urltests.h | 15 ------- src/qtui.h | 2 +- 15 files changed, 87 insertions(+), 84 deletions(-) rename src/qt/test/{urltests.cpp => uritests.cpp} (57%) create mode 100644 src/qt/test/uritests.h delete mode 100644 src/qt/test/urltests.h diff --git a/bitcoin-qt.pro b/bitcoin-qt.pro index d9206b3bfff..d156ea0278f 100644 --- a/bitcoin-qt.pro +++ b/bitcoin-qt.pro @@ -231,8 +231,8 @@ FORMS += src/qt/forms/qrcodedialog.ui contains(BITCOIN_QT_TEST, 1) { SOURCES += src/qt/test/test_main.cpp \ - src/qt/test/urltests.cpp -HEADERS += src/qt/test/urltests.h + src/qt/test/uritests.cpp +HEADERS += src/qt/test/uritests.h DEPENDPATH += src/qt/test QT += testlib TARGET = bitcoin-qt_test diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index 3450bb45700..71e2daf9318 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -81,7 +81,7 @@ bool ThreadSafeAskFee(int64 nFeeRequired, const std::string& strCaption, wxWindo return payFee; } -void ThreadSafeHandleURL(const std::string& strURL) +void ThreadSafeHandleURI(const std::string& strURI) { if(!guiref) return; @@ -93,8 +93,8 @@ void ThreadSafeHandleURL(const std::string& strURL) { connectionType = Qt::BlockingQueuedConnection; } - QMetaObject::invokeMethod(guiref, "handleURL", connectionType, - Q_ARG(QString, QString::fromStdString(strURL))); + QMetaObject::invokeMethod(guiref, "handleURI", connectionType, + Q_ARG(QString, QString::fromStdString(strURI))); } void CalledSetStatusBar(const std::string& strText, int nField) @@ -141,10 +141,10 @@ int main(int argc, char *argv[]) { if (strlen(argv[i]) > 7 && strncasecmp(argv[i], "bitcoin:", 8) == 0) { - const char *strURL = argv[i]; + const char *strURI = argv[i]; try { - boost::interprocess::message_queue mq(boost::interprocess::open_only, "BitcoinURL"); - if(mq.try_send(strURL, strlen(strURL), 0)) + boost::interprocess::message_queue mq(boost::interprocess::open_only, BITCOINURI_QUEUE_NAME); + if(mq.try_send(strURI, strlen(strURI), 0)) exit(0); else break; @@ -254,21 +254,21 @@ int main(int argc, char *argv[]) window.show(); } - // Place this here as guiref has to be defined if we dont want to lose URLs + // Place this here as guiref has to be defined if we dont want to lose URIs ipcInit(); #if !defined(MAC_OSX) && !defined(WIN32) // TODO: implement qtipcserver.cpp for Mac and Windows - // Check for URL in argv + // Check for URI in argv for (int i = 1; i < argc; i++) { if (strlen(argv[i]) > 7 && strncasecmp(argv[i], "bitcoin:", 8) == 0) { - const char *strURL = argv[i]; + const char *strURI = argv[i]; try { - boost::interprocess::message_queue mq(boost::interprocess::open_only, "BitcoinURL"); - mq.try_send(strURL, strlen(strURL), 0); + boost::interprocess::message_queue mq(boost::interprocess::open_only, BITCOINURI_QUEUE_NAME); + mq.try_send(strURI, strlen(strURI), 0); } catch (boost::interprocess::interprocess_exception &ex) { } diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index ee5fd32a6df..4a9b420485f 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -714,7 +714,7 @@ void BitcoinGUI::gotoMessagePage(QString addr) void BitcoinGUI::dragEnterEvent(QDragEnterEvent *event) { - // Accept only URLs + // Accept only URIs if(event->mimeData()->hasUrls()) event->acceptProposedAction(); } @@ -724,20 +724,20 @@ void BitcoinGUI::dropEvent(QDropEvent *event) if(event->mimeData()->hasUrls()) { gotoSendCoinsPage(); - QList urls = event->mimeData()->urls(); - foreach(const QUrl &url, urls) + QList uris = event->mimeData()->urls(); + foreach(const QUrl &uri, uris) { - sendCoinsPage->handleURL(url.toString()); + sendCoinsPage->handleURI(uri.toString()); } } event->acceptProposedAction(); } -void BitcoinGUI::handleURL(QString strURL) +void BitcoinGUI::handleURI(QString strURI) { gotoSendCoinsPage(); - sendCoinsPage->handleURL(strURL); + sendCoinsPage->handleURI(strURI); if(!isActiveWindow()) activateWindow(); diff --git a/src/qt/bitcoingui.h b/src/qt/bitcoingui.h index d221f6bad9c..744755dbaa3 100644 --- a/src/qt/bitcoingui.h +++ b/src/qt/bitcoingui.h @@ -127,7 +127,7 @@ public slots: @param[out] payFee true to pay the fee, false to not pay the fee */ void askFee(qint64 nFeeRequired, bool *payFee); - void handleURL(QString strURL); + void handleURI(QString strURI); void gotoMessagePage(); void gotoMessagePage(QString); diff --git a/src/qt/guiutil.cpp b/src/qt/guiutil.cpp index ac69bd07e90..24bb95d8a36 100644 --- a/src/qt/guiutil.cpp +++ b/src/qt/guiutil.cpp @@ -51,15 +51,15 @@ void GUIUtil::setupAmountWidget(QLineEdit *widget, QWidget *parent) widget->setAlignment(Qt::AlignRight|Qt::AlignVCenter); } -bool GUIUtil::parseBitcoinURL(const QUrl &url, SendCoinsRecipient *out) +bool GUIUtil::parseBitcoinURI(const QUrl &uri, SendCoinsRecipient *out) { - if(url.scheme() != QString("bitcoin")) + if(uri.scheme() != QString("bitcoin")) return false; SendCoinsRecipient rv; - rv.address = url.path(); + rv.address = uri.path(); rv.amount = 0; - QList > items = url.queryItems(); + QList > items = uri.queryItems(); for (QList >::iterator i = items.begin(); i != items.end(); i++) { bool fShouldReturnFalse = false; @@ -96,18 +96,18 @@ bool GUIUtil::parseBitcoinURL(const QUrl &url, SendCoinsRecipient *out) return true; } -bool GUIUtil::parseBitcoinURL(QString url, SendCoinsRecipient *out) +bool GUIUtil::parseBitcoinURI(QString uri, SendCoinsRecipient *out) { // Convert bitcoin:// to bitcoin: // // Cannot handle this later, because bitcoin:// will cause Qt to see the part after // as host, // which will lowercase it (and thus invalidate the address). - if(url.startsWith("bitcoin://")) + if(uri.startsWith("bitcoin://")) { - url.replace(0, 10, "bitcoin:"); + uri.replace(0, 10, "bitcoin:"); } - QUrl urlInstance(url); - return parseBitcoinURL(urlInstance, out); + QUrl uriInstance(uri); + return parseBitcoinURI(uriInstance, out); } QString GUIUtil::HtmlEscape(const QString& str, bool fMultiLine) diff --git a/src/qt/guiutil.h b/src/qt/guiutil.h index 75ba53f2069..0c78b3ccb04 100644 --- a/src/qt/guiutil.h +++ b/src/qt/guiutil.h @@ -29,10 +29,10 @@ public: static void setupAddressWidget(QLineEdit *widget, QWidget *parent); static void setupAmountWidget(QLineEdit *widget, QWidget *parent); - // Parse "bitcoin:" URL into recipient object, return true on succesful parsing - // See Bitcoin URL definition discussion here: https://bitcointalk.org/index.php?topic=33490.0 - static bool parseBitcoinURL(const QUrl &url, SendCoinsRecipient *out); - static bool parseBitcoinURL(QString url, SendCoinsRecipient *out); + // Parse "bitcoin:" URI into recipient object, return true on succesful parsing + // See Bitcoin URI definition discussion here: https://bitcointalk.org/index.php?topic=33490.0 + static bool parseBitcoinURI(const QUrl &, SendCoinsRecipient *out); + static bool parseBitcoinURI(QString uri, SendCoinsRecipient *out); // HTML escaping for rich text controls static QString HtmlEscape(const QString& str, bool fMultiLine=false); diff --git a/src/qt/qtipcserver.cpp b/src/qt/qtipcserver.cpp index 8b9270e178f..3c7889ca718 100644 --- a/src/qt/qtipcserver.cpp +++ b/src/qt/qtipcserver.cpp @@ -8,6 +8,7 @@ #include #include "headers.h" +#include "qtipcserver.h" using namespace boost::interprocess; using namespace boost::posix_time; @@ -16,7 +17,7 @@ using namespace std; void ipcShutdown() { - message_queue::remove("BitcoinURL"); + message_queue::remove(BITCOINURI_QUEUE_NAME); } void ipcThread(void* parg) @@ -30,7 +31,7 @@ void ipcThread(void* parg) ptime d = boost::posix_time::microsec_clock::universal_time() + millisec(100); if(mq->timed_receive(&strBuf, sizeof(strBuf), nSize, nPriority, d)) { - ThreadSafeHandleURL(std::string(strBuf, nSize)); + ThreadSafeHandleURI(std::string(strBuf, nSize)); Sleep(1000); } if (fShutdown) @@ -60,7 +61,7 @@ void ipcInit() size_t nSize; unsigned int nPriority; try { - mq = new message_queue(open_or_create, "BitcoinURL", 2, 256); + mq = new message_queue(open_or_create, BITCOINURI_QUEUE_NAME, 2, 256); // Make sure we don't lose any bitcoin: URIs for (int i = 0; i < 2; i++) @@ -68,15 +69,15 @@ void ipcInit() ptime d = boost::posix_time::microsec_clock::universal_time() + millisec(1); if(mq->timed_receive(&strBuf, sizeof(strBuf), nSize, nPriority, d)) { - ThreadSafeHandleURL(std::string(strBuf, nSize)); + ThreadSafeHandleURI(std::string(strBuf, nSize)); } else break; } // Make sure only one bitcoin instance is listening - message_queue::remove("BitcoinURL"); - mq = new message_queue(open_or_create, "BitcoinURL", 2, 256); + message_queue::remove(BITCOINURI_QUEUE_NAME); + mq = new message_queue(open_or_create, BITCOINURI_QUEUE_NAME, 2, 256); } catch (interprocess_exception &ex) { return; diff --git a/src/qt/qtipcserver.h b/src/qt/qtipcserver.h index 1de0334afda..fcff10d8dab 100644 --- a/src/qt/qtipcserver.h +++ b/src/qt/qtipcserver.h @@ -1,2 +1,4 @@ +#define BITCOINURI_QUEUE_NAME "BitcoinURI" + void ipcInit(); void ipcShutdown(); diff --git a/src/qt/sendcoinsdialog.cpp b/src/qt/sendcoinsdialog.cpp index 964313ea81d..592ae6f45ab 100644 --- a/src/qt/sendcoinsdialog.cpp +++ b/src/qt/sendcoinsdialog.cpp @@ -265,10 +265,10 @@ void SendCoinsDialog::pasteEntry(const SendCoinsRecipient &rv) } -void SendCoinsDialog::handleURL(const QString &url) +void SendCoinsDialog::handleURI(const QString &uri) { SendCoinsRecipient rv; - if(!GUIUtil::parseBitcoinURL(url, &rv)) + if(!GUIUtil::parseBitcoinURI(uri, &rv)) { return; } diff --git a/src/qt/sendcoinsdialog.h b/src/qt/sendcoinsdialog.h index 4dc3f08bc5d..5dcbfbeb619 100644 --- a/src/qt/sendcoinsdialog.h +++ b/src/qt/sendcoinsdialog.h @@ -30,7 +30,7 @@ public: QWidget *setupTabChain(QWidget *prev); void pasteEntry(const SendCoinsRecipient &rv); - void handleURL(const QString &url); + void handleURI(const QString &uri); public slots: void clear(); diff --git a/src/qt/test/test_main.cpp b/src/qt/test/test_main.cpp index 0a08eafa1ee..5b11e39ea37 100644 --- a/src/qt/test/test_main.cpp +++ b/src/qt/test/test_main.cpp @@ -1,11 +1,11 @@ #include #include -#include "urltests.h" +#include "uritests.h" // This is all you need to run all the tests int main(int argc, char *argv[]) { - URLTests test1; + URITests test1; QTest::qExec(&test1); } diff --git a/src/qt/test/urltests.cpp b/src/qt/test/uritests.cpp similarity index 57% rename from src/qt/test/urltests.cpp rename to src/qt/test/uritests.cpp index 1f11795a9bd..70c20be0eaf 100644 --- a/src/qt/test/urltests.cpp +++ b/src/qt/test/uritests.cpp @@ -1,4 +1,4 @@ -#include "urltests.h" +#include "uritests.h" #include "../guiutil.h" #include "../walletmodel.h" @@ -13,59 +13,59 @@ struct SendCoinsRecipient }; */ -void URLTests::urlTests() +void URITests::uriTests() { SendCoinsRecipient rv; - QUrl url; - url.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?req-dontexist=")); - QVERIFY(!GUIUtil::parseBitcoinURL(url, &rv)); + QUrl uri; + uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?req-dontexist=")); + QVERIFY(!GUIUtil::parseBitcoinURI(uri, &rv)); - url.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?dontexist=")); - QVERIFY(GUIUtil::parseBitcoinURL(url, &rv)); + uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?dontexist=")); + QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); QVERIFY(rv.label == QString()); QVERIFY(rv.amount == 0); - url.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?label=Wikipedia Example Address")); - QVERIFY(GUIUtil::parseBitcoinURL(url, &rv)); + uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?label=Wikipedia Example Address")); + QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); QVERIFY(rv.label == QString("Wikipedia Example Address")); QVERIFY(rv.amount == 0); - url.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.001")); - QVERIFY(GUIUtil::parseBitcoinURL(url, &rv)); + uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.001")); + QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); QVERIFY(rv.label == QString()); QVERIFY(rv.amount == 100000); - url.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=1.001")); - QVERIFY(GUIUtil::parseBitcoinURL(url, &rv)); + uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=1.001")); + QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); QVERIFY(rv.label == QString()); QVERIFY(rv.amount == 100100000); - url.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=100&label=Wikipedia Example")); - QVERIFY(GUIUtil::parseBitcoinURL(url, &rv)); + uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=100&label=Wikipedia Example")); + QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); QVERIFY(rv.amount == 10000000000); QVERIFY(rv.label == QString("Wikipedia Example")); - url.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?message=Wikipedia Example Address")); - QVERIFY(GUIUtil::parseBitcoinURL(url, &rv)); + uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?message=Wikipedia Example Address")); + QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); QVERIFY(rv.label == QString()); - QVERIFY(GUIUtil::parseBitcoinURL("bitcoin://175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?message=Wikipedia Example Address", &rv)); + QVERIFY(GUIUtil::parseBitcoinURI("bitcoin://175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?message=Wikipedia Example Address", &rv)); QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); QVERIFY(rv.label == QString()); // We currently dont implement the message paramenter (ok, yea, we break spec...) - url.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?req-message=Wikipedia Example Address")); - QVERIFY(!GUIUtil::parseBitcoinURL(url, &rv)); + uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?req-message=Wikipedia Example Address")); + QVERIFY(!GUIUtil::parseBitcoinURI(uri, &rv)); - url.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=1,000&label=Wikipedia Example")); - QVERIFY(!GUIUtil::parseBitcoinURL(url, &rv)); + uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=1,000&label=Wikipedia Example")); + QVERIFY(!GUIUtil::parseBitcoinURI(uri, &rv)); - url.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=1,000.0&label=Wikipedia Example")); - QVERIFY(!GUIUtil::parseBitcoinURL(url, &rv)); + uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=1,000.0&label=Wikipedia Example")); + QVERIFY(!GUIUtil::parseBitcoinURI(uri, &rv)); } diff --git a/src/qt/test/uritests.h b/src/qt/test/uritests.h new file mode 100644 index 00000000000..1237516e5f5 --- /dev/null +++ b/src/qt/test/uritests.h @@ -0,0 +1,15 @@ +#ifndef URITESTS_H +#define URITESTS_H + +#include +#include + +class URITests : public QObject +{ + Q_OBJECT + +private slots: + void uriTests(); +}; + +#endif // URITESTS_H diff --git a/src/qt/test/urltests.h b/src/qt/test/urltests.h deleted file mode 100644 index 393c5113909..00000000000 --- a/src/qt/test/urltests.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef URLTESTS_H -#define URLTESTS_H - -#include -#include - -class URLTests : public QObject -{ - Q_OBJECT - -private slots: - void urlTests(); -}; - -#endif // URLTESTS_H diff --git a/src/qtui.h b/src/qtui.h index 79873702702..05a56678d11 100644 --- a/src/qtui.h +++ b/src/qtui.h @@ -42,7 +42,7 @@ extern int MyMessageBox(const std::string& message, const std::string& caption=" #define wxMessageBox MyMessageBox extern int ThreadSafeMessageBox(const std::string& message, const std::string& caption, int style=wxOK, wxWindow* parent=NULL, int x=-1, int y=-1); extern bool ThreadSafeAskFee(int64 nFeeRequired, const std::string& strCaption, wxWindow* parent); -extern void ThreadSafeHandleURL(const std::string& strURL); +extern void ThreadSafeHandleURI(const std::string& strURI); extern void CalledSetStatusBar(const std::string& strText, int nField); extern void UIThreadCall(boost::function0 fn); extern void MainFrameRepaint(); From ce333560949c8b89fac4dfb5112d3a808a8d4ff8 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Sun, 25 Mar 2012 17:25:10 -0400 Subject: [PATCH 167/298] Bugfix: Replace "URL" with "URI" where we aren't actually working with URLs --- src/qt/bitcoingui.cpp | 8 ++++---- src/qt/guiutil.cpp | 20 ++++++++++---------- src/qt/guiutil.h | 8 ++++---- src/qt/sendcoinsdialog.cpp | 8 ++++---- src/qt/sendcoinsdialog.h | 4 ++-- 5 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index be608381713..0111ebbc9d7 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -659,7 +659,7 @@ void BitcoinGUI::gotoSendCoinsPage() void BitcoinGUI::dragEnterEvent(QDragEnterEvent *event) { - // Accept only URLs + // Accept only URIs if(event->mimeData()->hasUrls()) event->acceptProposedAction(); } @@ -669,10 +669,10 @@ void BitcoinGUI::dropEvent(QDropEvent *event) if(event->mimeData()->hasUrls()) { gotoSendCoinsPage(); - QList urls = event->mimeData()->urls(); - foreach(const QUrl &url, urls) + QList uris = event->mimeData()->urls(); + foreach(const QUrl &uri, uris) { - sendCoinsPage->handleURL(&url); + sendCoinsPage->handleURI(&uri); } } diff --git a/src/qt/guiutil.cpp b/src/qt/guiutil.cpp index d1490c8f705..f5e6e0a545f 100644 --- a/src/qt/guiutil.cpp +++ b/src/qt/guiutil.cpp @@ -47,16 +47,16 @@ void GUIUtil::setupAmountWidget(QLineEdit *widget, QWidget *parent) widget->setAlignment(Qt::AlignRight|Qt::AlignVCenter); } -bool GUIUtil::parseBitcoinURL(const QUrl *url, SendCoinsRecipient *out) +bool GUIUtil::parseBitcoinURI(const QUrl *uri, SendCoinsRecipient *out) { - if(url->scheme() != QString("bitcoin")) + if(uri->scheme() != QString("bitcoin")) return false; SendCoinsRecipient rv; - rv.address = url->path(); - rv.label = url->queryItemValue("label"); + rv.address = uri->path(); + rv.label = uri->queryItemValue("label"); - QString amount = url->queryItemValue("amount"); + QString amount = uri->queryItemValue("amount"); if(amount.isEmpty()) { rv.amount = 0; @@ -75,18 +75,18 @@ bool GUIUtil::parseBitcoinURL(const QUrl *url, SendCoinsRecipient *out) return true; } -bool GUIUtil::parseBitcoinURL(QString url, SendCoinsRecipient *out) +bool GUIUtil::parseBitcoinURI(QString uri, SendCoinsRecipient *out) { // Convert bitcoin:// to bitcoin: // // Cannot handle this later, because bitcoin:// will cause Qt to see the part after // as host, // which will lowercase it (and thus invalidate the address). - if(url.startsWith("bitcoin://")) + if(uri.startsWith("bitcoin://")) { - url.replace(0, 10, "bitcoin:"); + uri.replace(0, 10, "bitcoin:"); } - QUrl urlInstance(url); - return parseBitcoinURL(&urlInstance, out); + QUrl uriInstance(uri); + return parseBitcoinURI(&uriInstance, out); } QString GUIUtil::getSaveFileName(QWidget *parent, const QString &caption, diff --git a/src/qt/guiutil.h b/src/qt/guiutil.h index d7523aa15c9..8e75ee23ad2 100644 --- a/src/qt/guiutil.h +++ b/src/qt/guiutil.h @@ -26,10 +26,10 @@ public: static void setupAddressWidget(QLineEdit *widget, QWidget *parent); static void setupAmountWidget(QLineEdit *widget, QWidget *parent); - // Parse "bitcoin:" URL into recipient object, return true on succesful parsing - // See Bitcoin URL definition discussion here: https://bitcointalk.org/index.php?topic=33490.0 - static bool parseBitcoinURL(const QUrl *url, SendCoinsRecipient *out); - static bool parseBitcoinURL(QString url, SendCoinsRecipient *out); + // Parse "bitcoin:" URI into recipient object, return true on succesful parsing + // See Bitcoin URI definition discussion here: https://bitcointalk.org/index.php?topic=33490.0 + static bool parseBitcoinURI(const QUrl *, SendCoinsRecipient *out); + static bool parseBitcoinURI(QString uri, SendCoinsRecipient *out); /** Get save file name, mimics QFileDialog::getSaveFileName, except that it appends a default suffix when no suffix is provided by the user. diff --git a/src/qt/sendcoinsdialog.cpp b/src/qt/sendcoinsdialog.cpp index e465b4141a4..657761515b0 100644 --- a/src/qt/sendcoinsdialog.cpp +++ b/src/qt/sendcoinsdialog.cpp @@ -255,20 +255,20 @@ void SendCoinsDialog::pasteEntry(const SendCoinsRecipient &rv) } -void SendCoinsDialog::handleURL(const QUrl *url) +void SendCoinsDialog::handleURI(const QUrl *uri) { SendCoinsRecipient rv; - if(!GUIUtil::parseBitcoinURL(url, &rv)) + if(!GUIUtil::parseBitcoinURI(uri, &rv)) { return; } pasteEntry(rv); } -void SendCoinsDialog::handleURL(const QString &url) +void SendCoinsDialog::handleURI(const QString &uri) { SendCoinsRecipient rv; - if(!GUIUtil::parseBitcoinURL(url, &rv)) + if(!GUIUtil::parseBitcoinURI(uri, &rv)) { return; } diff --git a/src/qt/sendcoinsdialog.h b/src/qt/sendcoinsdialog.h index fdff05783eb..7da0a7fa072 100644 --- a/src/qt/sendcoinsdialog.h +++ b/src/qt/sendcoinsdialog.h @@ -29,8 +29,8 @@ public: QWidget *setupTabChain(QWidget *prev); void pasteEntry(const SendCoinsRecipient &rv); - void handleURL(const QUrl *url); - void handleURL(const QString &url); + void handleURI(const QUrl *uri); + void handleURI(const QString &uri); public slots: void clear(); From bf1f995c4c968f4325ac05474fcfd87924d62e36 Mon Sep 17 00:00:00 2001 From: p2k Date: Mon, 12 Mar 2012 14:20:55 +0100 Subject: [PATCH 168/298] Proper support for Growl 1.3 notifications --- src/qt/notificator.cpp | 15 ++++++++++----- src/qt/notificator.h | 3 ++- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/qt/notificator.cpp b/src/qt/notificator.cpp index a2314caa471..e668079536e 100644 --- a/src/qt/notificator.cpp +++ b/src/qt/notificator.cpp @@ -52,10 +52,13 @@ Notificator::Notificator(const QString &programName, QSystemTrayIcon *trayicon, OSStatus status = LSGetApplicationForInfo(kLSUnknownType, kLSUnknownCreator, CFSTR("growlTicket"), kLSRolesAll, 0, &cfurl); if (status != kLSApplicationNotFoundErr) { CFBundleRef bundle = CFBundleCreate(0, cfurl); - CFRelease(cfurl); if (CFStringCompare(CFBundleGetIdentifier(bundle), CFSTR("com.Growl.GrowlHelperApp"), kCFCompareCaseInsensitive | kCFCompareBackwards) == kCFCompareEqualTo) { - mode = Growl; + if (CFStringHasSuffix(CFURLGetString(cfurl), CFSTR("/Growl.app/"))) + mode = Growl13; + else + mode = Growl12; } + CFRelease(cfurl); CFRelease(bundle); } #endif @@ -226,7 +229,7 @@ void Notificator::notifySystray(Class cls, const QString &title, const QString & void Notificator::notifyGrowl(Class cls, const QString &title, const QString &text, const QIcon &icon) { const QString script( - "tell application \"GrowlHelperApp\"\n" + "tell application \"%5\"\n" " set the allNotificationsList to {\"Notification\"}\n" // -- Make a list of all the notification types (all) " set the enabledNotificationsList to {\"Notification\"}\n" // -- Make a list of the notifications (enabled) " register as application \"%1\" all notifications allNotificationsList default notifications enabledNotificationsList\n" // -- Register our script with Growl @@ -265,7 +268,8 @@ void Notificator::notifyGrowl(Class cls, const QString &title, const QString &te QString quotedTitle(title), quotedText(text); quotedTitle.replace("\\", "\\\\").replace("\"", "\\"); quotedText.replace("\\", "\\\\").replace("\"", "\\"); - qt_mac_execute_apple_script(script.arg(notificationApp, quotedTitle, quotedText, notificationIcon), 0); + QString growlApp(this->mode == Notificator::Growl13 ? "Growl" : "GrowlHelperApp"); + qt_mac_execute_apple_script(script.arg(notificationApp, quotedTitle, quotedText, notificationIcon, growlApp), 0); } #endif @@ -282,7 +286,8 @@ void Notificator::notify(Class cls, const QString &title, const QString &text, c notifySystray(cls, title, text, icon, millisTimeout); break; #ifdef Q_WS_MAC - case Growl: + case Growl12: + case Growl13: notifyGrowl(cls, title, text, icon); break; #endif diff --git a/src/qt/notificator.h b/src/qt/notificator.h index ed69ae5c611..dba39f3971c 100644 --- a/src/qt/notificator.h +++ b/src/qt/notificator.h @@ -48,7 +48,8 @@ private: None, Freedesktop, // Use DBus org.freedesktop.Notifications QSystemTray, // Use QSystemTray::showMessage - Growl // Use the Growl notification system (Mac only) + Growl12, // Use the Growl 1.2 notification system (Mac only) + Growl13 // Use the Growl 1.3 notification system (Mac only) }; QString programName; Mode mode; From 527b512cf754bc7846852f3a4a61d8b364c5abc3 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Fri, 6 Apr 2012 17:44:26 -0400 Subject: [PATCH 169/298] Bugfix: Windows lacks sleep(), so need to use Sleep() from util.h --- src/qt/bitcoin.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index 311fab3c9b9..1133f122e73 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -8,6 +8,7 @@ #include "headers.h" #include "init.h" +#include "util.h" #include #include @@ -45,7 +46,7 @@ int ThreadSafeMessageBox(const std::string& message, const std::string& caption, if (modal) while (!guiref) - sleep(1); + Sleep(1000); // Message from network thread if(guiref) From 06de079091d749ef43819fec2870f83971df8650 Mon Sep 17 00:00:00 2001 From: cardpuncher Date: Mon, 9 Apr 2012 22:22:38 +0300 Subject: [PATCH 170/298] Added comment lines in French & Turkish which basically mean "Bitcoin, virtual P2P cryptocurrency". --- contrib/debian/bitcoin-qt.desktop | 2 ++ 1 file changed, 2 insertions(+) diff --git a/contrib/debian/bitcoin-qt.desktop b/contrib/debian/bitcoin-qt.desktop index ea5a6e4ac44..7cb00a2c8b2 100644 --- a/contrib/debian/bitcoin-qt.desktop +++ b/contrib/debian/bitcoin-qt.desktop @@ -2,6 +2,8 @@ Encoding=UTF-8 Name=Bitcoin Comment=Bitcoin P2P Cryptocurrency +Comment[fr]=Bitcoin, monnaie virtuelle cryptographique pair à pair +Comment[tr]=Bitcoin, eşten eşe kriptografik sanal para birimi Exec=/usr/bin/bitcoin-qt Terminal=false Type=Application From 1f56046fd529c0ef9e35d26d68995c497751c54f Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Thu, 5 Apr 2012 20:36:27 +0200 Subject: [PATCH 171/298] Show error message instead of exception crash when unable to bind RPC port Fixes issue #875 --- src/bitcoinrpc.cpp | 22 ++++++++++++++++++++++ src/qt/bitcoingui.cpp | 4 ++++ 2 files changed, 26 insertions(+) diff --git a/src/bitcoinrpc.cpp b/src/bitcoinrpc.cpp index a4a1fd4d6b3..ac20ae86109 100644 --- a/src/bitcoinrpc.cpp +++ b/src/bitcoinrpc.cpp @@ -2161,6 +2161,10 @@ void ThreadRPCServer(void* parg) printf("ThreadRPCServer exiting\n"); } +#ifdef QT_GUI +extern bool HACK_SHUTDOWN; +#endif + void ThreadRPCServer2(void* parg) { printf("ThreadRPCServer started\n"); @@ -2196,9 +2200,27 @@ void ThreadRPCServer2(void* parg) asio::io_service io_service; ip::tcp::endpoint endpoint(bindAddress, GetArg("-rpcport", 8332)); +#ifndef QT_GUI ip::tcp::acceptor acceptor(io_service, endpoint); acceptor.set_option(boost::asio::ip::tcp::acceptor::reuse_address(true)); +#else + ip::tcp::acceptor acceptor(io_service); + try + { + acceptor.open(endpoint.protocol()); + acceptor.set_option(boost::asio::ip::tcp::acceptor::reuse_address(true)); + acceptor.bind(endpoint); + acceptor.listen(socket_base::max_connections); + } + catch(system::system_error &e) + { + HACK_SHUTDOWN = true; + ThreadSafeMessageBox(strprintf(_("An error occured while setting up the RPC port %i for listening: %s"), endpoint.port(), e.what()), + _("Error"), wxOK | wxMODAL); + return; + } +#endif #ifdef USE_SSL ssl::context context(io_service, ssl::context::sslv23); diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index 0111ebbc9d7..3433c6a1837 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -516,12 +516,16 @@ void BitcoinGUI::refreshStatusBar() setNumBlocks(clientModel->getNumBlocks()); } +bool HACK_SHUTDOWN = false; + void BitcoinGUI::error(const QString &title, const QString &message, bool modal) { // Report errors from network/worker thread if (modal) { QMessageBox::critical(this, title, message, QMessageBox::Ok, QMessageBox::Ok); + if (HACK_SHUTDOWN) + QMetaObject::invokeMethod(QCoreApplication::instance(), "quit", Qt::QueuedConnection); } else { notificator->notify(Notificator::Critical, title, message); } From 760d9480edd448a0ccac7d13739e46478bb79c54 Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Wed, 11 Apr 2012 14:21:15 +0200 Subject: [PATCH 172/298] removed (no label) string if we have NO label (partial of 9e0dba8c17eb6507083b4d7602541c25f1fd7f38) --- src/qt/addressbookpage.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/qt/addressbookpage.cpp b/src/qt/addressbookpage.cpp index 76aa87b134f..387043ae2b3 100644 --- a/src/qt/addressbookpage.cpp +++ b/src/qt/addressbookpage.cpp @@ -308,8 +308,8 @@ void AddressBookPage::on_showQRCode_clicked() foreach (QModelIndex index, indexes) { QString address = index.data().toString(), - label = index.sibling(index.row(), 0).data().toString(), - title = QString("%1 << %2 >>").arg(label).arg(address); + label = index.sibling(index.row(), 0).data(Qt::EditRole).toString(), + title = QString("%1%2<< %3 >>").arg(label).arg(label.isEmpty() ? "" : " ").arg(address); QRCodeDialog *d = new QRCodeDialog(title, address, label, tab == ReceivingTab, this); d->show(); From 278074eb238446d7feb90dafcbb537baa0068080 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Sat, 14 Apr 2012 15:27:12 -0400 Subject: [PATCH 173/298] Display an error, rather than crashing, if encoding a QR Code failed. (master workaround in b1a99c3a1fb2613e9c7cecd565e8cc604b03eb6f + 7261945eb5f64423d47a5bff63ecd8b65d88b8ed) --- src/qt/forms/qrcodedialog.ui | 3 +++ src/qt/qrcodedialog.cpp | 28 +++++++++++++++++++--------- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/qt/forms/qrcodedialog.ui b/src/qt/forms/qrcodedialog.ui index fa21f60b9e8..fa960069d9f 100644 --- a/src/qt/forms/qrcodedialog.ui +++ b/src/qt/forms/qrcodedialog.ui @@ -34,6 +34,9 @@ Qt::AlignCenter + + true + diff --git a/src/qt/qrcodedialog.cpp b/src/qt/qrcodedialog.cpp index 82959831dec..9cf50b0e58e 100644 --- a/src/qt/qrcodedialog.cpp +++ b/src/qt/qrcodedialog.cpp @@ -39,17 +39,27 @@ void QRCodeDialog::genCode() QString uri = getURI(); //qDebug() << "Encoding:" << uri.toUtf8().constData(); QRcode *code = QRcode_encodeString(uri.toUtf8().constData(), 0, QR_ECLEVEL_L, QR_MODE_8, 1); - myImage = QImage(code->width + 8, code->width + 8, QImage::Format_RGB32); - myImage.fill(0xffffff); - unsigned char *p = code->data; - for(int y = 0; y < code->width; y++) { - for(int x = 0; x < code->width; x++) { - myImage.setPixel(x + 4, y + 4, ((*p & 1) ? 0x0 : 0xffffff)); - p++; + if (code) + { + ui->lblQRCode->setText(""); + + QRcode *code = QRcode_encodeString(uri.toUtf8().constData(), 0, QR_ECLEVEL_L, QR_MODE_8, 1); + myImage = QImage(code->width + 8, code->width + 8, QImage::Format_RGB32); + myImage.fill(0xffffff); + unsigned char *p = code->data; + for (int y = 0; y < code->width; y++) + { + for (int x = 0; x < code->width; x++) + { + myImage.setPixel(x + 4, y + 4, ((*p & 1) ? 0x0 : 0xffffff)); + p++; + } } + QRcode_free(code); + ui->lblQRCode->setPixmap(QPixmap::fromImage(myImage).scaled(300, 300)); } - QRcode_free(code); - ui->lblQRCode->setPixmap(QPixmap::fromImage(myImage).scaled(300, 300)); + else + ui->lblQRCode->setText(tr("Error encoding URI into QR Code; try to reduce the text for label / message.")); } QString QRCodeDialog::getURI() From e88b6b341d75536f2743ce735c338c9fe93ba272 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Wed, 4 Apr 2012 20:56:13 -0400 Subject: [PATCH 174/298] Bug fix listtransactions from/count handling. --- src/rpc.cpp | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/src/rpc.cpp b/src/rpc.cpp index aade32ac1d8..b62da8ecdf0 100644 --- a/src/rpc.cpp +++ b/src/rpc.cpp @@ -1099,14 +1099,21 @@ Value listtransactions(const Array& params, bool fHelp) if (params.size() > 2) nFrom = params[2].get_int(); + if (nCount < 0) + throw JSONRPCError(-8, "Negative count"); + if (nFrom < 0) + throw JSONRPCError(-8, "Negative from"); + Array ret; CWalletDB walletdb(pwalletMain->strWalletFile); - // Firs: get all CWalletTx and CAccountingEntry into a sorted-by-time multimap: + // First: get all CWalletTx and CAccountingEntry into a sorted-by-time multimap. typedef pair TxPair; typedef multimap TxItems; TxItems txByTime; + // Note: maintaining indices in the database of (account,time) --> txid and (account, time) --> acentry + // would make this much faster for applications that do this a lot. for (map::iterator it = pwalletMain->mapWallet.begin(); it != pwalletMain->mapWallet.end(); ++it) { CWalletTx* wtx = &((*it).second); @@ -1119,10 +1126,8 @@ Value listtransactions(const Array& params, bool fHelp) txByTime.insert(make_pair(entry.nTime, TxPair((CWalletTx*)0, &entry))); } - // Now: iterate backwards until we have nCount items to return: - TxItems::reverse_iterator it = txByTime.rbegin(); - if (txByTime.size() > nFrom) std::advance(it, nFrom); - for (; it != txByTime.rend(); ++it) + // iterate backwards until we have nCount items to return: + for (TxItems::reverse_iterator it = txByTime.rbegin(); it != txByTime.rend(); ++it) { CWalletTx *const pwtx = (*it).second.first; if (pwtx != 0) @@ -1131,18 +1136,21 @@ Value listtransactions(const Array& params, bool fHelp) if (pacentry != 0) AcentryToJSON(*pacentry, strAccount, ret); - if (ret.size() >= nCount) break; + if (ret.size() >= (nCount+nFrom)) break; } - // ret is now newest to oldest + // ret is newest to oldest - // Make sure we return only last nCount items (sends-to-self might give us an extra): - if (ret.size() > nCount) - { - Array::iterator last = ret.begin(); - std::advance(last, nCount); - ret.erase(last, ret.end()); - } - std::reverse(ret.begin(), ret.end()); // oldest to newest + if (nFrom > ret.size()) nFrom = ret.size(); + if (nFrom+nCount > ret.size()) nCount = ret.size()-nFrom; + Array::iterator first = ret.begin(); + std::advance(first, nFrom); + Array::iterator last = ret.begin(); + std::advance(last, nFrom+nCount); + + if (last != ret.end()) ret.erase(last, ret.end()); + if (first != ret.begin()) ret.erase(ret.begin(), first); + + std::reverse(ret.begin(), ret.end()); // Return oldest to newest return ret; } From 1f917975359cc086926653075a43d64699a64677 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Fri, 13 Apr 2012 09:16:46 +0200 Subject: [PATCH 175/298] Add missing tooltip and key shortcut in settings dialog (#1088 without line break part) --- src/qt/optionsdialog.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/qt/optionsdialog.cpp b/src/qt/optionsdialog.cpp index 75fd4ccf186..0025337ab82 100644 --- a/src/qt/optionsdialog.cpp +++ b/src/qt/optionsdialog.cpp @@ -278,7 +278,8 @@ DisplayOptionsPage::DisplayOptionsPage(QWidget *parent): layout->addLayout(unit_hbox); - display_addresses = new QCheckBox(tr("Display addresses in transaction list"), this); + display_addresses = new QCheckBox(tr("&Display addresses in transaction list"), this); + display_addresses->setToolTip(tr("Whether to show Bitcoin addresses in the transaction list")); layout->addWidget(display_addresses); layout->addStretch(); From a558054709124a7e8208ce164175f7235166bedf Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Sat, 14 Apr 2012 08:21:22 +0200 Subject: [PATCH 176/298] Do not show green tick unless all known blocks are downloaded (fixes #921) --- src/qt/bitcoingui.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index 3433c6a1837..08ccb75b81d 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -480,7 +480,7 @@ void BitcoinGUI::setNumBlocks(int count) } // Set icon state: spinning if catching up, tick otherwise - if(secs < 90*60) + if(secs < 90*60 && count >= nTotalBlocks) { tooltip = tr("Up to date") + QString(".\n") + tooltip; labelBlocksIcon->setPixmap(QIcon(":/icons/synced").pixmap(STATUSBAR_ICONSIZE,STATUSBAR_ICONSIZE)); From f2862f1a499265ec4209dfdc42edf57946e26803 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Sat, 14 Apr 2012 18:32:30 +0200 Subject: [PATCH 177/298] Rename make_windows_icon.py to .sh as it is a shell script (fixes #1099) --- scripts/qt/{make_windows_icon.py => make_windows_icon.sh} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename scripts/qt/{make_windows_icon.py => make_windows_icon.sh} (100%) diff --git a/scripts/qt/make_windows_icon.py b/scripts/qt/make_windows_icon.sh similarity index 100% rename from scripts/qt/make_windows_icon.py rename to scripts/qt/make_windows_icon.sh From 02a38ac22bafcd35334d31e57f41289ae1498b7a Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Sat, 14 Apr 2012 15:38:26 -0400 Subject: [PATCH 178/298] Add symlink to scripts/qt/make_windows_icon.sh from old file name, just in case --- scripts/qt/make_windows_icon.py | 1 + 1 file changed, 1 insertion(+) create mode 120000 scripts/qt/make_windows_icon.py diff --git a/scripts/qt/make_windows_icon.py b/scripts/qt/make_windows_icon.py new file mode 120000 index 00000000000..f51c32a2158 --- /dev/null +++ b/scripts/qt/make_windows_icon.py @@ -0,0 +1 @@ +make_windows_icon.sh \ No newline at end of file From b557c17a37fc05ae8905d2ab310a1ad0d53834c0 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Sat, 14 Apr 2012 21:00:27 -0400 Subject: [PATCH 179/298] Bugfix: Check that QRcode_encodeString didn't return NULL (error) Without this, any error will segfault Bitcoin-Qt --- src/qt/qrcodedialog.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/qt/qrcodedialog.cpp b/src/qt/qrcodedialog.cpp index 9cf50b0e58e..567cfa75f16 100644 --- a/src/qt/qrcodedialog.cpp +++ b/src/qt/qrcodedialog.cpp @@ -38,12 +38,16 @@ void QRCodeDialog::genCode() { QString uri = getURI(); //qDebug() << "Encoding:" << uri.toUtf8().constData(); - QRcode *code = QRcode_encodeString(uri.toUtf8().constData(), 0, QR_ECLEVEL_L, QR_MODE_8, 1); - if (code) + { ui->lblQRCode->setText(""); QRcode *code = QRcode_encodeString(uri.toUtf8().constData(), 0, QR_ECLEVEL_L, QR_MODE_8, 1); + if (!code) + { + ui->lblQRCode->setText(tr("Error encoding URI into QR Code.")); + return; + } myImage = QImage(code->width + 8, code->width + 8, QImage::Format_RGB32); myImage.fill(0xffffff); unsigned char *p = code->data; @@ -58,8 +62,6 @@ void QRCodeDialog::genCode() QRcode_free(code); ui->lblQRCode->setPixmap(QPixmap::fromImage(myImage).scaled(300, 300)); } - else - ui->lblQRCode->setText(tr("Error encoding URI into QR Code; try to reduce the text for label / message.")); } QString QRCodeDialog::getURI() From b7566fe29c2053843d2cec90a70fd699f5590391 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Sun, 15 Apr 2012 13:08:21 -0400 Subject: [PATCH 180/298] Bump version to 0.6.0.7 Skipping 0.6.0.1 through 0.6.0.6 since the internal version for 0.6.0[.0] was in fact 0.6.0.6 --- bitcoin-qt.pro | 2 +- doc/README | 2 +- doc/README_windows.txt | 2 +- share/setup.nsi | 6 +++--- src/main.h | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/bitcoin-qt.pro b/bitcoin-qt.pro index d156ea0278f..db2bfe33d9f 100644 --- a/bitcoin-qt.pro +++ b/bitcoin-qt.pro @@ -1,6 +1,6 @@ TEMPLATE = app TARGET = -VERSION = 0.6.0 +VERSION = 0.6.0.7 INCLUDEPATH += src src/json src/qt DEFINES += QT_GUI BOOST_THREAD_USE_LIB CONFIG += no_include_pwd diff --git a/doc/README b/doc/README index 00694e2ae1d..800c72c83cf 100644 --- a/doc/README +++ b/doc/README @@ -1,4 +1,4 @@ -Bitcoin 0.6.0 BETA +Bitcoin 0.6.0.7 BETA Copyright (c) 2009-2012 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/doc/README_windows.txt b/doc/README_windows.txt index 9aa5aa744f6..a04aedcd788 100644 --- a/doc/README_windows.txt +++ b/doc/README_windows.txt @@ -1,4 +1,4 @@ -Bitcoin 0.6.0 BETA +Bitcoin 0.6.0.7 BETA Copyright (c) 2009-2012 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/share/setup.nsi b/share/setup.nsi index cc19daf84aa..fb9a0c67f26 100644 --- a/share/setup.nsi +++ b/share/setup.nsi @@ -5,7 +5,7 @@ SetCompressor /SOLID lzma # General Symbol Definitions !define REGKEY "SOFTWARE\$(^Name)" -!define VERSION 0.6.0 +!define VERSION 0.6.0.7 !define COMPANY "Bitcoin project" !define URL http://www.bitcoin.org/ @@ -45,13 +45,13 @@ Var StartMenuGroup !insertmacro MUI_LANGUAGE English # Installer attributes -OutFile bitcoin-0.6.0-win32-setup.exe +OutFile bitcoin-0.6.0.7-win32-setup.exe InstallDir $PROGRAMFILES\Bitcoin CRCCheck on XPStyle on BrandingText " " ShowInstDetails show -VIProductVersion 0.6.0.6 +VIProductVersion 0.6.0.7 VIAddVersionKey ProductName Bitcoin VIAddVersionKey ProductVersion "${VERSION}" VIAddVersionKey CompanyName "${COMPANY}" diff --git a/src/main.h b/src/main.h index 18d5dbdd746..fc114111641 100644 --- a/src/main.h +++ b/src/main.h @@ -26,7 +26,7 @@ class CInv; class CRequestTracker; class CNode; -static const int CLIENT_VERSION = 60006; +static const int CLIENT_VERSION = 60007; static const bool VERSION_IS_BETA = true; extern const std::string CLIENT_NAME; From e962c7f53253ff08f095b52c4eed97fe36cf3520 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Sun, 15 Apr 2012 13:23:34 -0400 Subject: [PATCH 181/298] Bugfix: nTotalBlocks wasn't in 0.5.0, so need to replace it with equivalent function call in backport --- src/qt/bitcoingui.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index 08ccb75b81d..778acd1e00e 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -4,6 +4,9 @@ * W.J. van der Laan 2011 * The Bitcoin Developers 2011 */ + +#include "checkpoints.h" + #include "bitcoingui.h" #include "transactiontablemodel.h" #include "addressbookpage.h" @@ -480,7 +483,7 @@ void BitcoinGUI::setNumBlocks(int count) } // Set icon state: spinning if catching up, tick otherwise - if(secs < 90*60 && count >= nTotalBlocks) + if(secs < 90*60 && count >= Checkpoints::GetTotalBlocksEstimate()) { tooltip = tr("Up to date") + QString(".\n") + tooltip; labelBlocksIcon->setPixmap(QIcon(":/icons/synced").pixmap(STATUSBAR_ICONSIZE,STATUSBAR_ICONSIZE)); From cb1035a00882405fac47eb92e7086c7231062e3d Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Sat, 14 Apr 2012 09:41:05 +0200 Subject: [PATCH 182/298] Show a message box when runaway exception happens This is more clear to users than when the program simply disappears (usually during initialization). It still logs the message to the console and debug log as well. --- src/qt/bitcoin.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index 1133f122e73..74ace600e0f 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -120,6 +120,15 @@ std::string _(const char* psz) return QCoreApplication::translate("bitcoin-core", psz).toStdString(); } +/* Handle runaway exceptions. Shows a message box with the problem and quits the program. + */ +static void handleRunawayException(std::exception *e) +{ + PrintExceptionContinue(e, "Runaway exception"); + QMessageBox::critical(0, "Runaway exception", BitcoinGUI::tr("A fatal error occured. Bitcoin can no longer continue safely and will quit.") + QString("\n\n") + QString::fromStdString(strMiscWarning)); + exit(1); +} + int main(int argc, char *argv[]) { QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); @@ -197,9 +206,9 @@ int main(int argc, char *argv[]) return 1; } } catch (std::exception& e) { - PrintException(&e, "Runaway exception"); + handleRunawayException(&e); } catch (...) { - PrintException(NULL, "Runaway exception"); + handleRunawayException(NULL); } return 0; } From 7c3db2129e3d625e05ee56b3d07d12c0b6cfed92 Mon Sep 17 00:00:00 2001 From: Chris Moore Date: Thu, 12 Apr 2012 13:13:08 -0700 Subject: [PATCH 183/298] CBitcoinSecret::SetString() now calls IsValid() to make sure it was passed something with the correct version. --- src/base58.h | 10 ++++++++++ src/test/key_tests.cpp | 12 +++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/base58.h b/src/base58.h index 755e34c418a..7fefbc5d748 100644 --- a/src/base58.h +++ b/src/base58.h @@ -396,6 +396,16 @@ public: return fExpectTestNet == fTestNet && (vchData.size() == 32 || (vchData.size() == 33 && vchData[32] == 1)); } + bool SetString(const char* pszSecret) + { + return CBase58Data::SetString(pszSecret) && IsValid(); + } + + bool SetString(const std::string& strSecret) + { + return SetString(strSecret.c_str()); + } + CBitcoinSecret(const CSecret& vchSecret, bool fCompressed) { SetSecret(vchSecret, fCompressed); diff --git a/src/test/key_tests.cpp b/src/test/key_tests.cpp index bc8759b6fac..a6dab623b08 100644 --- a/src/test/key_tests.cpp +++ b/src/test/key_tests.cpp @@ -14,6 +14,7 @@ static const string strSecret1 ("5HxWvvfubhXpYYpS3tJkw6fq9jE9j18THftkZjHHfmFiWtm static const string strSecret2 ("5KC4ejrDjv152FGwP386VD1i2NYc5KkfSMyv1nGy1VGDxGHqVY3"); static const string strSecret1C("Kwr371tjA9u2rFSMZjTNun2PXXP3WPZu2afRHTcta6KxEUdm1vEw"); static const string strSecret2C("L3Hq7a8FEQwJkW1M2GNKDW28546Vp5miewcCzSqUD9kCAXrJdS3g"); +static const string strAddress1("1HV9Lc3sNHZxwj4Zk6fB38tEmBryq2cBiF"); #ifdef KEY_TESTS_DUMPINFO void dumpKeyInfo(uint256 privkey) @@ -47,11 +48,12 @@ BOOST_AUTO_TEST_SUITE(key_tests) BOOST_AUTO_TEST_CASE(key_test1) { - CBitcoinSecret bsecret1, bsecret2, bsecret1C, bsecret2C; - bsecret1.SetString (strSecret1); - bsecret2.SetString (strSecret2); - bsecret1C.SetString(strSecret1C); - bsecret2C.SetString(strSecret2C); + CBitcoinSecret bsecret1, bsecret2, bsecret1C, bsecret2C, baddress1; + BOOST_CHECK( bsecret1.SetString (strSecret1)); + BOOST_CHECK( bsecret2.SetString (strSecret2)); + BOOST_CHECK( bsecret1C.SetString(strSecret1C)); + BOOST_CHECK( bsecret2C.SetString(strSecret2C)); + BOOST_CHECK(!baddress1.SetString(strAddress1)); bool fCompressed; CSecret secret1 = bsecret1.GetSecret (fCompressed); From 401db6d96b34bbfa8942af1090ce29cafcf79859 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Sun, 15 Apr 2012 11:42:40 +0200 Subject: [PATCH 184/298] work around issue in boost::program_options that prevents from compiling in clang --- src/util.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/util.cpp b/src/util.cpp index 0f496bc455a..c3290f4176d 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -4,6 +4,17 @@ // file license.txt or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" #include "strlcpy.h" + +// Work around clang compilation problem in Boost 1.46: +// /usr/include/boost/program_options/detail/config_file.hpp:163:17: error: call to function 'to_internal' that is neither visible in the template definition nor found by argument-dependent lookup +// See also: http://stackoverflow.com/questions/10020179/compilation-fail-in-boost-librairies-program-options +// http://clang.debian.net/status.php?version=3.0&key=CANNOT_FIND_FUNCTION +namespace boost { + namespace program_options { + std::string to_internal(const std::string&); + } +} + #include #include #include From f650d62fc66d67e9afb6917de9220b1e0e6759fe Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Sun, 15 Apr 2012 12:22:30 +0200 Subject: [PATCH 185/298] fix warnings: array subscript is of type 'char' [-Wchar-subscripts] --- src/bignum.h | 2 +- src/uint256.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bignum.h b/src/bignum.h index 6e8d3cb8aba..641ebf4b051 100644 --- a/src/bignum.h +++ b/src/bignum.h @@ -300,7 +300,7 @@ public: while (isxdigit(*psz)) { *this <<= 4; - int n = phexdigit[*psz++]; + int n = phexdigit[(unsigned char)*psz++]; *this += n; } if (fNegative) diff --git a/src/uint256.h b/src/uint256.h index ae263346a86..07809e49a8f 100644 --- a/src/uint256.h +++ b/src/uint256.h @@ -315,7 +315,7 @@ public: // hex string to uint static char phexdigit[256] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0, 0,0xa,0xb,0xc,0xd,0xe,0xf,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0xa,0xb,0xc,0xd,0xe,0xf,0,0,0,0,0,0,0,0,0 }; const char* pbegin = psz; - while (phexdigit[*psz] || *psz == '0') + while (phexdigit[(unsigned char)*psz] || *psz == '0') psz++; psz--; unsigned char* p1 = (unsigned char*)pn; From 85e975f37907848ad28240da5b5e682ceb565eb2 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Sun, 15 Apr 2012 12:22:30 +0200 Subject: [PATCH 186/298] fix warnings: array subscript is of type 'char' [-Wchar-subscripts] --- src/bignum.h | 2 +- src/uint256.h | 2 +- src/util.cpp | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/bignum.h b/src/bignum.h index 6e8d3cb8aba..641ebf4b051 100644 --- a/src/bignum.h +++ b/src/bignum.h @@ -300,7 +300,7 @@ public: while (isxdigit(*psz)) { *this <<= 4; - int n = phexdigit[*psz++]; + int n = phexdigit[(unsigned char)*psz++]; *this += n; } if (fNegative) diff --git a/src/uint256.h b/src/uint256.h index ae263346a86..07809e49a8f 100644 --- a/src/uint256.h +++ b/src/uint256.h @@ -315,7 +315,7 @@ public: // hex string to uint static char phexdigit[256] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0, 0,0xa,0xb,0xc,0xd,0xe,0xf,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0xa,0xb,0xc,0xd,0xe,0xf,0,0,0,0,0,0,0,0,0 }; const char* pbegin = psz; - while (phexdigit[*psz] || *psz == '0') + while (phexdigit[(unsigned char)*psz] || *psz == '0') psz++; psz--; unsigned char* p1 = (unsigned char*)pn; diff --git a/src/util.cpp b/src/util.cpp index f6c37a2d1f3..a9111673e77 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -567,7 +567,7 @@ vector DecodeBase64(const char* p, bool* pfInvalid) while (1) { - int dec = decode64_table[*p]; + int dec = decode64_table[(unsigned char)*p]; if (dec == -1) break; p++; switch (mode) @@ -607,12 +607,12 @@ vector DecodeBase64(const char* p, bool* pfInvalid) break; case 2: // 4n+2 base64 characters processed: require '==' - if (left || p[0] != '=' || p[1] != '=' || decode64_table[p[2]] != -1) + if (left || p[0] != '=' || p[1] != '=' || decode64_table[(unsigned char)p[2]] != -1) *pfInvalid = true; break; case 3: // 4n+3 base64 characters processed: require '=' - if (left || p[0] != '=' || decode64_table[p[1]] != -1) + if (left || p[0] != '=' || decode64_table[(unsigned char)p[1]] != -1) *pfInvalid = true; break; } From c4381587a600fca2aba0ca4d45c7a5f14fc25c0f Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Sun, 15 Apr 2012 12:31:56 +0200 Subject: [PATCH 187/298] fix warnings: 'XX' defined as a struct here but previously declared as a class [-Wmismatched-tags] --- src/qt/addresstablemodel.cpp | 3 ++- src/qt/transactiontablemodel.cpp | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/qt/addresstablemodel.cpp b/src/qt/addresstablemodel.cpp index 8fd6d52b7e1..5d724ea1d10 100644 --- a/src/qt/addresstablemodel.cpp +++ b/src/qt/addresstablemodel.cpp @@ -27,8 +27,9 @@ struct AddressTableEntry }; // Private implementation -struct AddressTablePriv +class AddressTablePriv { +public: CWallet *wallet; QList cachedAddressTable; diff --git a/src/qt/transactiontablemodel.cpp b/src/qt/transactiontablemodel.cpp index 480d4ac25e0..28620bf3aa2 100644 --- a/src/qt/transactiontablemodel.cpp +++ b/src/qt/transactiontablemodel.cpp @@ -45,8 +45,9 @@ struct TxLessThan }; // Private implementation -struct TransactionTablePriv +class TransactionTablePriv { +public: TransactionTablePriv(CWallet *wallet, TransactionTableModel *parent): wallet(wallet), parent(parent) From 5f4fee559e3a30d967b104ddadb82283788a9f8a Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Sun, 15 Apr 2012 12:42:52 +0200 Subject: [PATCH 188/298] fix warnings: enumeration values 'XX' not handled in switch [-Wswitch-enum] --- src/qt/editaddressdialog.cpp | 3 +++ src/qt/sendcoinsdialog.cpp | 2 ++ src/qt/walletmodel.h | 3 +-- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/qt/editaddressdialog.cpp b/src/qt/editaddressdialog.cpp index 8cc3c85d7ae..cecb8aecd79 100644 --- a/src/qt/editaddressdialog.cpp +++ b/src/qt/editaddressdialog.cpp @@ -106,6 +106,9 @@ void EditAddressDialog::accept() tr("New key generation failed."), QMessageBox::Ok, QMessageBox::Ok); return; + case AddressTableModel::OK: + // Failed with unknown reason. Just reject. + break; } return; diff --git a/src/qt/sendcoinsdialog.cpp b/src/qt/sendcoinsdialog.cpp index 657761515b0..4c58b38b785 100644 --- a/src/qt/sendcoinsdialog.cpp +++ b/src/qt/sendcoinsdialog.cpp @@ -148,6 +148,8 @@ void SendCoinsDialog::on_sendButton_clicked() tr("Error: The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here."), QMessageBox::Ok, QMessageBox::Ok); break; + case WalletModel::Aborted: // User aborted, nothing to do + break; case WalletModel::OK: accept(); break; diff --git a/src/qt/walletmodel.h b/src/qt/walletmodel.h index 055ba184b0c..e04ae8790c0 100644 --- a/src/qt/walletmodel.h +++ b/src/qt/walletmodel.h @@ -34,8 +34,7 @@ public: DuplicateAddress, TransactionCreationFailed, // Error returned when wallet is still locked TransactionCommitFailed, - Aborted, - MiscError + Aborted }; enum EncryptionStatus From fdcafa35359b3ad9af79d2367a1884d01607fb84 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Sun, 15 Apr 2012 12:53:14 +0200 Subject: [PATCH 189/298] fix warnings: unused variable 'XX' [-Wunused-variable] --- scripts/qt/extract_strings_qt.py | 12 +++++++++--- src/qt/bitcoinstrings.cpp | 7 ++++++- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/scripts/qt/extract_strings_qt.py b/scripts/qt/extract_strings_qt.py index 6627de4abf4..b0478699eee 100755 --- a/scripts/qt/extract_strings_qt.py +++ b/scripts/qt/extract_strings_qt.py @@ -53,9 +53,15 @@ child = Popen(['xgettext','--output=-','-n','--keyword=_'] + files, stdout=PIPE) messages = parse_po(out) f = open(OUT_CPP, 'w') -f.write('#include \n') -f.write('// Automatically generated by extract_strings.py\n') -f.write('static const char *bitcoin_strings[] = {') +f.write("""#include +// Automatically generated by extract_strings.py +#ifdef __GNUC__ +#define UNUSED __attribute__((unused)) +#else +#define UNUSED +#endif +""") +f.write('static const char UNUSED *bitcoin_strings[] = {') for (msgid, msgstr) in messages: if msgid != EMPTY: f.write('QT_TRANSLATE_NOOP("bitcoin-core", %s),\n' % ('\n'.join(msgid))) diff --git a/src/qt/bitcoinstrings.cpp b/src/qt/bitcoinstrings.cpp index 1b0a6767d78..2d77441b460 100644 --- a/src/qt/bitcoinstrings.cpp +++ b/src/qt/bitcoinstrings.cpp @@ -1,6 +1,11 @@ #include // Automatically generated by extract_strings.py -static const char *bitcoin_strings[] = {QT_TRANSLATE_NOOP("bitcoin-core", "Bitcoin version"), +#ifdef __GNUC__ +#define UNUSED __attribute__((unused)) +#else +#define UNUSED +#endif +static const char UNUSED *bitcoin_strings[] = {QT_TRANSLATE_NOOP("bitcoin-core", "Bitcoin version"), QT_TRANSLATE_NOOP("bitcoin-core", "Usage:"), QT_TRANSLATE_NOOP("bitcoin-core", "Send command to -server or bitcoind\n"), QT_TRANSLATE_NOOP("bitcoin-core", "List commands\n"), From 0aa0bb1ead81641480c0c7533a1f52dd6a07434e Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Sun, 15 Apr 2012 12:53:14 +0200 Subject: [PATCH 190/298] fix warnings: unused variable 'XX' [-Wunused-variable] --- scripts/qt/extract_strings_qt.py | 12 +++++++++--- src/net.cpp | 3 --- src/qt/bitcoinstrings.cpp | 7 ++++++- src/script.cpp | 1 - 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/scripts/qt/extract_strings_qt.py b/scripts/qt/extract_strings_qt.py index 6627de4abf4..b0478699eee 100755 --- a/scripts/qt/extract_strings_qt.py +++ b/scripts/qt/extract_strings_qt.py @@ -53,9 +53,15 @@ child = Popen(['xgettext','--output=-','-n','--keyword=_'] + files, stdout=PIPE) messages = parse_po(out) f = open(OUT_CPP, 'w') -f.write('#include \n') -f.write('// Automatically generated by extract_strings.py\n') -f.write('static const char *bitcoin_strings[] = {') +f.write("""#include +// Automatically generated by extract_strings.py +#ifdef __GNUC__ +#define UNUSED __attribute__((unused)) +#else +#define UNUSED +#endif +""") +f.write('static const char UNUSED *bitcoin_strings[] = {') for (msgid, msgstr) in messages: if msgid != EMPTY: f.write('QT_TRANSLATE_NOOP("bitcoin-core", %s),\n' % ('\n'.join(msgid))) diff --git a/src/net.cpp b/src/net.cpp index 37e73c421a8..9bdb1f283e1 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1305,8 +1305,6 @@ void ThreadOpenConnections2(void* parg) return; } - bool fAddSeeds = false; - // Add seed nodes if IRC isn't working bool fTOR = (fUseProxy && addrProxy.GetPort() == 9050); if (addrman.size()==0 && (GetTime() - nStart > 60 || fTOR) && !fTestNet) @@ -1332,7 +1330,6 @@ void ThreadOpenConnections2(void* parg) // Choose an address to connect to based on most recently seen // CAddress addrConnect; - int64 nBest = std::numeric_limits::min(); // Only connect to one address per a.b.?.? range. // Do this here so we don't have to critsect vNodes inside mapAddresses critsect. diff --git a/src/qt/bitcoinstrings.cpp b/src/qt/bitcoinstrings.cpp index 73db1fe46c5..73a63e92ba4 100644 --- a/src/qt/bitcoinstrings.cpp +++ b/src/qt/bitcoinstrings.cpp @@ -1,6 +1,11 @@ #include // Automatically generated by extract_strings.py -static const char *bitcoin_strings[] = {QT_TRANSLATE_NOOP("bitcoin-core", "Bitcoin version"), +#ifdef __GNUC__ +#define UNUSED __attribute__((unused)) +#else +#define UNUSED +#endif +static const char UNUSED *bitcoin_strings[] = {QT_TRANSLATE_NOOP("bitcoin-core", "Bitcoin version"), QT_TRANSLATE_NOOP("bitcoin-core", "Usage:"), QT_TRANSLATE_NOOP("bitcoin-core", "Send command to -server or bitcoind"), QT_TRANSLATE_NOOP("bitcoin-core", "List commands"), diff --git a/src/script.cpp b/src/script.cpp index b6f120289a6..21f101e1c59 100644 --- a/src/script.cpp +++ b/src/script.cpp @@ -1443,7 +1443,6 @@ bool ExtractAddresses(const CScript& scriptPubKey, txnouttype& typeRet, vector Date: Sun, 15 Apr 2012 12:59:20 +0200 Subject: [PATCH 191/298] fix warnings: delete called on 'XX' that has virtual functions but non-virtual destructor [-Wdelete-non-virtual-dtor] --- src/keystore.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/keystore.h b/src/keystore.h index 1f2c6aea3ea..cb297c35ab5 100644 --- a/src/keystore.h +++ b/src/keystore.h @@ -13,6 +13,8 @@ protected: mutable CCriticalSection cs_KeyStore; public: + virtual ~CKeyStore() {} + virtual bool AddKey(const CKey& key) =0; virtual bool HaveKey(const CBitcoinAddress &address) const =0; virtual bool GetKey(const CBitcoinAddress &address, CKey& keyOut) const =0; From 9c236a945c7dc5f401b0ae51b69e2b658c62654c Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Sun, 15 Apr 2012 13:03:28 +0200 Subject: [PATCH 192/298] fix warnings: '&&' within '||' [-Wlogical-op-parentheses] --- src/addrman.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/addrman.cpp b/src/addrman.cpp index 2ef666cf2c1..8fb40b46dfd 100644 --- a/src/addrman.cpp +++ b/src/addrman.cpp @@ -312,7 +312,7 @@ bool CAddrMan::Add_(const CAddress &addr, const CNetAddr& source, int64 nTimePen pinfo->nServices |= addr.nServices; // do not update if no new information is present - if (!addr.nTime || pinfo->nTime && addr.nTime <= pinfo->nTime) + if (!addr.nTime || (pinfo->nTime && addr.nTime <= pinfo->nTime)) return false; // do not update if the entry was already in the "tried" table From 8460185dec74383b1e49500683cfc7aa9ceba554 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Sun, 15 Apr 2012 13:27:00 +0200 Subject: [PATCH 193/298] fix warnings: suggest explicit braces to avoid ambiguous 'else' [-Wparentheses] --- src/main.cpp | 4 ++++ src/main.h | 2 ++ src/rpc.cpp | 4 ++++ src/wallet.cpp | 2 ++ src/wallet.h | 2 ++ 5 files changed, 14 insertions(+) diff --git a/src/main.cpp b/src/main.cpp index 4316d242f9f..059dd3db9e0 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1149,14 +1149,18 @@ bool CBlock::ConnectBlock(CTxDB& txdb, CBlockIndex* pindex) // This rule applies to all blocks whose timestamp is after March 15, 2012, 0:00 UTC. // On testnet it is enabled as of februari 20, 2012, 0:00 UTC. if (pindex->nTime > 1331769600 || (fTestNet && pindex->nTime > 1329696000)) + { BOOST_FOREACH(CTransaction& tx, vtx) { CTxIndex txindexOld; if (txdb.ReadTxIndex(tx.GetHash(), txindexOld)) + { BOOST_FOREACH(CDiskTxPos &pos, txindexOld.vSpent) if (pos.IsNull()) return false; + } } + } // P2SH didn't become active until Apr 1 2012 (Feb 15 on testnet) int64 nEvalSwitchTime = fTestNet ? 1329264000 : 1333238400; diff --git a/src/main.h b/src/main.h index e6f60a6a8db..b0f713e876e 100644 --- a/src/main.h +++ b/src/main.h @@ -572,9 +572,11 @@ public: // To limit dust spam, require MIN_TX_FEE/MIN_RELAY_TX_FEE if any output is less than 0.01 if (nMinFee < nBaseFee) + { BOOST_FOREACH(const CTxOut& txout, vout) if (txout.nValue < CENT) nMinFee = nBaseFee; + } // Raise the price as the block approaches full if (nBlockSize != 1 && nNewBlockSize >= MAX_BLOCK_SIZE_GEN/2) diff --git a/src/rpc.cpp b/src/rpc.cpp index b62da8ecdf0..bbfea33d765 100644 --- a/src/rpc.cpp +++ b/src/rpc.cpp @@ -685,8 +685,10 @@ Value getbalance(const Array& params, bool fHelp) list > listSent; wtx.GetAmounts(allGeneratedImmature, allGeneratedMature, listReceived, listSent, allFee, strSentAccount); if (wtx.GetDepthInMainChain() >= nMinDepth) + { BOOST_FOREACH(const PAIRTYPE(CBitcoinAddress,int64)& r, listReceived) nBalance += r.second; + } BOOST_FOREACH(const PAIRTYPE(CBitcoinAddress,int64)& r, listSent) nBalance -= r.second; nBalance -= allFee; @@ -1046,6 +1048,7 @@ void ListTransactions(const CWalletTx& wtx, const string& strAccount, int nMinDe // Received if (listReceived.size() > 0 && wtx.GetDepthInMainChain() >= nMinDepth) + { BOOST_FOREACH(const PAIRTYPE(CBitcoinAddress, int64)& r, listReceived) { string account; @@ -1063,6 +1066,7 @@ void ListTransactions(const CWalletTx& wtx, const string& strAccount, int nMinDe ret.push_back(entry); } } + } } void AcentryToJSON(const CAccountingEntry& acentry, const string& strAccount, Array& ret) diff --git a/src/wallet.cpp b/src/wallet.cpp index 9f7422d1fbc..3f51313e9bf 100644 --- a/src/wallet.cpp +++ b/src/wallet.cpp @@ -545,8 +545,10 @@ void CWalletTx::AddSupportingTransactions(CTxDB& txdb) vtxPrev.push_back(tx); if (nDepth < COPY_DEPTH) + { BOOST_FOREACH(const CTxIn& txin, tx.vin) vWorkQueue.push_back(txin.prevout.hash); + } } } } diff --git a/src/wallet.h b/src/wallet.h index 4387e1a01fd..bb9177b6849 100644 --- a/src/wallet.h +++ b/src/wallet.h @@ -499,8 +499,10 @@ public: return false; if (mapPrev.empty()) + { BOOST_FOREACH(const CMerkleTx& tx, vtxPrev) mapPrev[tx.GetHash()] = &tx; + } BOOST_FOREACH(const CTxIn& txin, ptx->vin) { From 1bdfa94a0164f73b453633861b91c67bb6bf10d8 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Sun, 15 Apr 2012 13:27:00 +0200 Subject: [PATCH 194/298] fix warnings: suggest explicit braces to avoid ambiguous 'else' [-Wparentheses] --- src/bitcoinrpc.cpp | 4 ++++ src/db.cpp | 4 ++++ src/main.cpp | 4 ++++ src/main.h | 2 ++ src/wallet.cpp | 2 ++ src/wallet.h | 2 ++ 6 files changed, 18 insertions(+) diff --git a/src/bitcoinrpc.cpp b/src/bitcoinrpc.cpp index a24667756f0..98702ee7cb2 100644 --- a/src/bitcoinrpc.cpp +++ b/src/bitcoinrpc.cpp @@ -802,8 +802,10 @@ Value getbalance(const Array& params, bool fHelp) list > listSent; wtx.GetAmounts(allGeneratedImmature, allGeneratedMature, listReceived, listSent, allFee, strSentAccount); if (wtx.GetDepthInMainChain() >= nMinDepth) + { BOOST_FOREACH(const PAIRTYPE(CBitcoinAddress,int64)& r, listReceived) nBalance += r.second; + } BOOST_FOREACH(const PAIRTYPE(CBitcoinAddress,int64)& r, listSent) nBalance -= r.second; nBalance -= allFee; @@ -1236,6 +1238,7 @@ void ListTransactions(const CWalletTx& wtx, const string& strAccount, int nMinDe // Received if (listReceived.size() > 0 && wtx.GetDepthInMainChain() >= nMinDepth) + { BOOST_FOREACH(const PAIRTYPE(CBitcoinAddress, int64)& r, listReceived) { string account; @@ -1253,6 +1256,7 @@ void ListTransactions(const CWalletTx& wtx, const string& strAccount, int nMinDe ret.push_back(entry); } } + } } void AcentryToJSON(const CAccountingEntry& acentry, const string& strAccount, Array& ret) diff --git a/src/db.cpp b/src/db.cpp index 2a09e2e6732..60e04a218ea 100644 --- a/src/db.cpp +++ b/src/db.cpp @@ -647,6 +647,7 @@ bool CTxDB::LoadBlockIndex() // check level 4: check whether spent txouts were spent within the main chain int nOutput = 0; if (nCheckLevel>3) + { BOOST_FOREACH(const CDiskTxPos &txpos, txindex.vSpent) { if (!txpos.IsNull()) @@ -687,9 +688,11 @@ bool CTxDB::LoadBlockIndex() } nOutput++; } + } } // check level 5: check whether all prevouts are marked spent if (nCheckLevel>4) + { BOOST_FOREACH(const CTxIn &txin, tx.vin) { CTxIndex txindex; @@ -700,6 +703,7 @@ bool CTxDB::LoadBlockIndex() pindexFork = pindex->pprev; } } + } } } } diff --git a/src/main.cpp b/src/main.cpp index d795ca1df94..ecb9a6af1dd 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1269,14 +1269,18 @@ bool CBlock::ConnectBlock(CTxDB& txdb, CBlockIndex* pindex) // This rule applies to all blocks whose timestamp is after March 15, 2012, 0:00 UTC. // On testnet it is enabled as of februari 20, 2012, 0:00 UTC. if (pindex->nTime > 1331769600 || (fTestNet && pindex->nTime > 1329696000)) + { BOOST_FOREACH(CTransaction& tx, vtx) { CTxIndex txindexOld; if (txdb.ReadTxIndex(tx.GetHash(), txindexOld)) + { BOOST_FOREACH(CDiskTxPos &pos, txindexOld.vSpent) if (pos.IsNull()) return false; + } } + } // BIP16 didn't become active until Apr 1 2012 (Feb 15 on testnet) int64 nBIP16SwitchTime = fTestNet ? 1329264000 : 1333238400; diff --git a/src/main.h b/src/main.h index fc114111641..e89258699d3 100644 --- a/src/main.h +++ b/src/main.h @@ -572,9 +572,11 @@ public: // To limit dust spam, require MIN_TX_FEE/MIN_RELAY_TX_FEE if any output is less than 0.01 if (nMinFee < nBaseFee) + { BOOST_FOREACH(const CTxOut& txout, vout) if (txout.nValue < CENT) nMinFee = nBaseFee; + } // Raise the price as the block approaches full if (nBlockSize != 1 && nNewBlockSize >= MAX_BLOCK_SIZE_GEN/2) diff --git a/src/wallet.cpp b/src/wallet.cpp index 27ed7228df2..49e1392c270 100644 --- a/src/wallet.cpp +++ b/src/wallet.cpp @@ -644,8 +644,10 @@ void CWalletTx::AddSupportingTransactions(CTxDB& txdb) vtxPrev.push_back(tx); if (nDepth < COPY_DEPTH) + { BOOST_FOREACH(const CTxIn& txin, tx.vin) vWorkQueue.push_back(txin.prevout.hash); + } } } } diff --git a/src/wallet.h b/src/wallet.h index e1065cff381..308a2665716 100644 --- a/src/wallet.h +++ b/src/wallet.h @@ -551,8 +551,10 @@ public: return false; if (mapPrev.empty()) + { BOOST_FOREACH(const CMerkleTx& tx, vtxPrev) mapPrev[tx.GetHash()] = &tx; + } BOOST_FOREACH(const CTxIn& txin, ptx->vin) { From e2ce6438a971d8cd22912c6ea831b9801c4a9a92 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Fri, 13 Apr 2012 21:08:46 +0200 Subject: [PATCH 195/298] Set label when selecting an address that already has a label. Fixes #1080. --- src/qt/sendcoinsentry.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/qt/sendcoinsentry.cpp b/src/qt/sendcoinsentry.cpp index caffaaeff28..c8242d8352f 100644 --- a/src/qt/sendcoinsentry.cpp +++ b/src/qt/sendcoinsentry.cpp @@ -59,9 +59,11 @@ void SendCoinsEntry::on_payTo_textChanged(const QString &address) { if(!model) return; - // Fill in label from address book, if no label is filled in yet - if(ui->addAsLabel->text().isEmpty()) - ui->addAsLabel->setText(model->getAddressTableModel()->labelForAddress(address));} + // Fill in label from address book, if address has an associated label + QString associatedLabel = model->getAddressTableModel()->labelForAddress(address); + if(!associatedLabel.isEmpty()) + ui->addAsLabel->setText(associatedLabel); +} void SendCoinsEntry::setModel(WalletModel *model) { From 12570da46ff9de4201ae9f3411db0e955d2993de Mon Sep 17 00:00:00 2001 From: Jeff Garzik Date: Fri, 13 Apr 2012 18:24:55 -0400 Subject: [PATCH 196/298] Locking fix for AlreadyHave() Access to mapTransactions[] must be guarded by cs_mapTransactions lock. --- src/main.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index 059dd3db9e0..57c18aed484 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1953,7 +1953,14 @@ bool static AlreadyHave(CTxDB& txdb, const CInv& inv) { switch (inv.type) { - case MSG_TX: return mapTransactions.count(inv.hash) || mapOrphanTransactions.count(inv.hash) || txdb.ContainsTx(inv.hash); + case MSG_TX: + CRITICAL_BLOCK(cs_mapTransactions) + { + return mapTransactions.count(inv.hash) || + mapOrphanTransactions.count(inv.hash) || + txdb.ContainsTx(inv.hash); + } + case MSG_BLOCK: return mapBlockIndex.count(inv.hash) || mapOrphanBlocks.count(inv.hash); } // Don't know what it is, just say we already got one From 1175d8f6a1782da777f406a8400b7281a7af09e7 Mon Sep 17 00:00:00 2001 From: Jeff Garzik Date: Tue, 17 Apr 2012 12:30:00 -0400 Subject: [PATCH 197/298] AlreadyHave(): only hold lock during mapTransactions access --- src/main.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 57c18aed484..f13b884f96c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1954,11 +1954,15 @@ bool static AlreadyHave(CTxDB& txdb, const CInv& inv) switch (inv.type) { case MSG_TX: + { + bool txInMap = false; CRITICAL_BLOCK(cs_mapTransactions) { - return mapTransactions.count(inv.hash) || - mapOrphanTransactions.count(inv.hash) || - txdb.ContainsTx(inv.hash); + txInMap = (mapTransactions.count(inv.hash) != 0); + } + return txInMap || + mapOrphanTransactions.count(inv.hash) || + txdb.ContainsTx(inv.hash); } case MSG_BLOCK: return mapBlockIndex.count(inv.hash) || mapOrphanBlocks.count(inv.hash); From d506c160eb4ccf826374e0d628ee09b9fff1def0 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Mon, 16 Apr 2012 11:46:13 +0200 Subject: [PATCH 198/298] Add forgotten initializer --- src/qt/csvmodelwriter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qt/csvmodelwriter.cpp b/src/qt/csvmodelwriter.cpp index 4b21b8c4bee..84578b33225 100644 --- a/src/qt/csvmodelwriter.cpp +++ b/src/qt/csvmodelwriter.cpp @@ -6,7 +6,7 @@ CSVModelWriter::CSVModelWriter(const QString &filename, QObject *parent) : QObject(parent), - filename(filename) + filename(filename), model(0) { } From ef2f3ddaf764f886fbb4d6004844fe88b8029cf2 Mon Sep 17 00:00:00 2001 From: Jeff Garzik Date: Sun, 15 Apr 2012 16:47:24 -0400 Subject: [PATCH 199/298] The string class returns string::npos, when find() fails. Noticed when sign-comparison warnings were enabled. --- src/irc.cpp | 8 ++++---- src/net.cpp | 4 ++-- src/rpc.cpp | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/irc.cpp b/src/irc.cpp index 5dfab06bacd..5ac2306f164 100644 --- a/src/irc.cpp +++ b/src/irc.cpp @@ -156,13 +156,13 @@ int RecvUntil(SOCKET hSocket, const char* psz1, const char* psz2=NULL, const cha if (!RecvLineIRC(hSocket, strLine)) return 0; printf("IRC %s\n", strLine.c_str()); - if (psz1 && strLine.find(psz1) != -1) + if (psz1 && strLine.find(psz1) != string::npos) return 1; - if (psz2 && strLine.find(psz2) != -1) + if (psz2 && strLine.find(psz2) != string::npos) return 2; - if (psz3 && strLine.find(psz3) != -1) + if (psz3 && strLine.find(psz3) != string::npos) return 3; - if (psz4 && strLine.find(psz4) != -1) + if (psz4 && strLine.find(psz4) != string::npos) return 4; } } diff --git a/src/net.cpp b/src/net.cpp index 763e160edd0..38fd3b5a14a 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -316,14 +316,14 @@ bool GetMyExternalIP2(const CAddress& addrConnect, const char* pszGet, const cha } if (pszKeyword == NULL) break; - if (strLine.find(pszKeyword) != -1) + if (strLine.find(pszKeyword) != string::npos) { strLine = strLine.substr(strLine.find(pszKeyword) + strlen(pszKeyword)); break; } } closesocket(hSocket); - if (strLine.find("<") != -1) + if (strLine.find("<") != string::npos) strLine = strLine.substr(0, strLine.find("<")); strLine = strLine.substr(strspn(strLine.c_str(), " \t\n\r")); while (strLine.size() > 0 && isspace(strLine[strLine.size()-1])) diff --git a/src/rpc.cpp b/src/rpc.cpp index bbfea33d765..8a02d95c1b3 100644 --- a/src/rpc.cpp +++ b/src/rpc.cpp @@ -147,7 +147,7 @@ Value help(const Array& params, bool fHelp) // Help text is returned in an exception string strHelp = string(e.what()); if (strCommand == "") - if (strHelp.find('\n') != -1) + if (strHelp.find('\n') != string::npos) strHelp = strHelp.substr(0, strHelp.find('\n')); strRet += strHelp + "\n"; } From 774e9b6dbb2c967ec979351cc4dba82fc0102ee1 Mon Sep 17 00:00:00 2001 From: Jeff Garzik Date: Sun, 15 Apr 2012 16:52:09 -0400 Subject: [PATCH 200/298] Fix loop index var types, fixing many minor sign comparison warnings foo.size() typically returns an unsigned integral type; make loop variables match those types' signedness. --- src/main.cpp | 34 +++++++++++++++++----------------- src/main.h | 12 ++++++------ src/net.cpp | 6 +++--- src/protocol.cpp | 2 +- src/uint256.h | 2 +- src/wallet.cpp | 14 +++++++------- src/wallet.h | 6 +++--- 7 files changed, 38 insertions(+), 38 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index f13b884f96c..76e07837945 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -389,7 +389,7 @@ bool CTransaction::AcceptToMemoryPool(CTxDB& txdb, bool fCheckInputs, bool* pfMi // Check for conflicts with in-memory transactions CTransaction* ptxOld = NULL; - for (int i = 0; i < vin.size(); i++) + for (unsigned int i = 0; i < vin.size(); i++) { COutPoint outpoint = vin[i].prevout; if (mapNextTx.count(outpoint)) @@ -405,7 +405,7 @@ bool CTransaction::AcceptToMemoryPool(CTxDB& txdb, bool fCheckInputs, bool* pfMi return false; if (!IsNewerThan(*ptxOld)) return false; - for (int i = 0; i < vin.size(); i++) + for (unsigned int i = 0; i < vin.size(); i++) { COutPoint outpoint = vin[i].prevout; if (!mapNextTx.count(outpoint) || mapNextTx[outpoint].ptx != ptxOld) @@ -511,7 +511,7 @@ bool CTransaction::AddToMemoryPoolUnchecked() { uint256 hash = GetHash(); mapTransactions[hash] = *this; - for (int i = 0; i < vin.size(); i++) + for (unsigned int i = 0; i < vin.size(); i++) mapNextTx[vin[i].prevout] = CInPoint(&mapTransactions[hash], i); nTransactionsUpdated++; } @@ -884,7 +884,7 @@ bool CTransaction::FetchInputs(CTxDB& txdb, const map& mapTes if (IsCoinBase()) return true; // Coinbase transactions have no inputs to fetch. - for (int i = 0; i < vin.size(); i++) + for (unsigned int i = 0; i < vin.size(); i++) { COutPoint prevout = vin[i].prevout; if (inputsRet.count(prevout.hash)) @@ -929,7 +929,7 @@ bool CTransaction::FetchInputs(CTxDB& txdb, const map& mapTes } // Make sure all prevout.n's are valid: - for (int i = 0; i < vin.size(); i++) + for (unsigned int i = 0; i < vin.size(); i++) { const COutPoint prevout = vin[i].prevout; assert(inputsRet.count(prevout.hash) != 0); @@ -966,7 +966,7 @@ int64 CTransaction::GetValueIn(const MapPrevTx& inputs) const return 0; int64 nResult = 0; - for (int i = 0; i < vin.size(); i++) + for (unsigned int i = 0; i < vin.size(); i++) { nResult += GetOutputFor(vin[i], inputs).nValue; } @@ -980,7 +980,7 @@ int CTransaction::GetP2SHSigOpCount(const MapPrevTx& inputs) const return 0; int nSigOps = 0; - for (int i = 0; i < vin.size(); i++) + for (unsigned int i = 0; i < vin.size(); i++) { const CTxOut& prevout = GetOutputFor(vin[i], inputs); if (prevout.scriptPubKey.IsPayToScriptHash()) @@ -1001,7 +1001,7 @@ bool CTransaction::ConnectInputs(MapPrevTx inputs, { int64 nValueIn = 0; int64 nFees = 0; - for (int i = 0; i < vin.size(); i++) + for (unsigned int i = 0; i < vin.size(); i++) { COutPoint prevout = vin[i].prevout; assert(inputs.count(prevout.hash) > 0); @@ -1073,7 +1073,7 @@ bool CTransaction::ClientConnectInputs() CRITICAL_BLOCK(cs_mapTransactions) { int64 nValueIn = 0; - for (int i = 0; i < vin.size(); i++) + for (unsigned int i = 0; i < vin.size(); i++) { // Get prev tx from single transactions in memory COutPoint prevout = vin[i].prevout; @@ -1284,7 +1284,7 @@ bool static Reorganize(CTxDB& txdb, CBlockIndex* pindexNew) // Connect longer branch vector vDelete; - for (int i = 0; i < vConnect.size(); i++) + for (unsigned int i = 0; i < vConnect.size(); i++) { CBlockIndex* pindex = vConnect[i]; CBlock block; @@ -1463,7 +1463,7 @@ bool CBlock::CheckBlock() const // First transaction must be coinbase, the rest must not be if (vtx.empty() || !vtx[0].IsCoinBase()) return error("CheckBlock() : first tx is not coinbase"); - for (int i = 1; i < vtx.size(); i++) + for (unsigned int i = 1; i < vtx.size(); i++) if (vtx[i].IsCoinBase()) return error("CheckBlock() : more than one coinbase"); @@ -1589,7 +1589,7 @@ bool static ProcessBlock(CNode* pfrom, CBlock* pblock) // Recursively process any orphan blocks that depended on this one vector vWorkQueue; vWorkQueue.push_back(hash); - for (int i = 0; i < vWorkQueue.size(); i++) + for (unsigned int i = 0; i < vWorkQueue.size(); i++) { uint256 hashPrev = vWorkQueue[i]; for (multimap::iterator mi = mapOrphanBlocksByPrev.lower_bound(hashPrev); @@ -1813,7 +1813,7 @@ void PrintBlockTree() // put the main timechain first vector& vNext = mapNext[pindex]; - for (int i = 0; i < vNext.size(); i++) + for (unsigned int i = 0; i < vNext.size(); i++) { if (vNext[i]->pnext) { @@ -1823,7 +1823,7 @@ void PrintBlockTree() } // iterate children - for (int i = 0; i < vNext.size(); i++) + for (unsigned int i = 0; i < vNext.size(); i++) vStack.push_back(make_pair(nCol+i, vNext[i])); } } @@ -2335,7 +2335,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv) vWorkQueue.push_back(inv.hash); // Recursively process any orphan transactions that depended on this one - for (int i = 0; i < vWorkQueue.size(); i++) + for (unsigned int i = 0; i < vWorkQueue.size(); i++) { uint256 hashPrev = vWorkQueue[i]; for (multimap::iterator mi = mapOrphanTransactionsByPrev.lower_bound(hashPrev); @@ -3112,7 +3112,7 @@ void FormatHashBuffers(CBlock* pblock, char* pmidstate, char* pdata, char* phash FormatHashBlocks(&tmp.hash1, sizeof(tmp.hash1)); // Byte swap all the input buffer - for (int i = 0; i < sizeof(tmp)/4; i++) + for (unsigned int i = 0; i < sizeof(tmp)/4; i++) ((unsigned int*)&tmp)[i] = ByteReverse(((unsigned int*)&tmp)[i]); // Precalc the first half of the first hash, which stays constant @@ -3234,7 +3234,7 @@ void static BitcoinMiner(CWallet *pwallet) // Check if something found if (nNonceFound != -1) { - for (int i = 0; i < sizeof(hash)/4; i++) + for (unsigned int i = 0; i < sizeof(hash)/4; i++) ((unsigned int*)&hash)[i] = ByteReverse(((unsigned int*)&hash)[i]); if (hash <= hashTarget) diff --git a/src/main.h b/src/main.h index b0f713e876e..de674b5bb10 100644 --- a/src/main.h +++ b/src/main.h @@ -455,13 +455,13 @@ public: { if (vin.size() != old.vin.size()) return false; - for (int i = 0; i < vin.size(); i++) + for (unsigned int i = 0; i < vin.size(); i++) if (vin[i].prevout != old.vin[i].prevout) return false; bool fNewer = false; unsigned int nLowest = UINT_MAX; - for (int i = 0; i < vin.size(); i++) + for (unsigned int i = 0; i < vin.size(); i++) { if (vin[i].nSequence != old.vin[i].nSequence) { @@ -636,9 +636,9 @@ public: vin.size(), vout.size(), nLockTime); - for (int i = 0; i < vin.size(); i++) + for (unsigned int i = 0; i < vin.size(); i++) str += " " + vin[i].ToString() + "\n"; - for (int i = 0; i < vout.size(); i++) + for (unsigned int i = 0; i < vout.size(); i++) str += " " + vout[i].ToString() + "\n"; return str; } @@ -1012,13 +1012,13 @@ public: hashMerkleRoot.ToString().substr(0,10).c_str(), nTime, nBits, nNonce, vtx.size()); - for (int i = 0; i < vtx.size(); i++) + for (unsigned int i = 0; i < vtx.size(); i++) { printf(" "); vtx[i].print(); } printf(" vMerkleTree: "); - for (int i = 0; i < vMerkleTree.size(); i++) + for (unsigned int i = 0; i < vMerkleTree.size(); i++) printf("%s ", vMerkleTree[i].ToString().substr(0,10).c_str()); printf("\n"); } diff --git a/src/net.cpp b/src/net.cpp index 38fd3b5a14a..92ccb1e8806 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -869,7 +869,7 @@ void ThreadSocketHandler2(void* parg) if (hSocketMax > -1) { printf("socket select error %d\n", nErr); - for (int i = 0; i <= hSocketMax; i++) + for (unsigned int i = 0; i <= hSocketMax; i++) FD_SET(i, &fdsetRecv); } FD_ZERO(&fdsetSend); @@ -1252,7 +1252,7 @@ void ThreadDNSAddressSeed2(void* parg) { printf("Loading addresses from DNS seeds (could take a while)\n"); - for (int seed_idx = 0; seed_idx < ARRAYLEN(strDNSSeed); seed_idx++) { + for (unsigned int seed_idx = 0; seed_idx < ARRAYLEN(strDNSSeed); seed_idx++) { vector vaddr; if (Lookup(strDNSSeed[seed_idx], vaddr, NODE_NETWORK, -1, true)) { @@ -1469,7 +1469,7 @@ void ThreadOpenConnections2(void* parg) if (fAddSeeds) { - for (int i = 0; i < ARRAYLEN(pnSeed); i++) + for (unsigned int i = 0; i < ARRAYLEN(pnSeed); i++) { // It'll only connect to one or two seed nodes because once it connects, // it'll get a pile of addresses with newer timestamps. diff --git a/src/protocol.cpp b/src/protocol.cpp index 48784b9cfb2..a3e54ebc3de 100644 --- a/src/protocol.cpp +++ b/src/protocol.cpp @@ -270,7 +270,7 @@ CInv::CInv(int typeIn, const uint256& hashIn) CInv::CInv(const std::string& strType, const uint256& hashIn) { - int i; + unsigned int i; for (i = 1; i < ARRAYLEN(ppszTypeName); i++) { if (strType == ppszTypeName[i]) diff --git a/src/uint256.h b/src/uint256.h index 07809e49a8f..bbdba995334 100644 --- a/src/uint256.h +++ b/src/uint256.h @@ -294,7 +294,7 @@ public: std::string GetHex() const { char psz[sizeof(pn)*2 + 1]; - for (int i = 0; i < sizeof(pn); i++) + for (unsigned int i = 0; i < sizeof(pn); i++) sprintf(psz + i*2, "%02x", ((unsigned char*)pn)[sizeof(pn) - i - 1]); return std::string(psz, psz + sizeof(pn)*2); } diff --git a/src/wallet.cpp b/src/wallet.cpp index 3f51313e9bf..b3eb06a3f64 100644 --- a/src/wallet.cpp +++ b/src/wallet.cpp @@ -512,7 +512,7 @@ void CWalletTx::AddSupportingTransactions(CTxDB& txdb) { map mapWalletPrev; set setAlreadyDone; - for (int i = 0; i < vWorkQueue.size(); i++) + for (unsigned int i = 0; i < vWorkQueue.size(); i++) { uint256 hash = vWorkQueue[i]; if (setAlreadyDone.count(hash)) @@ -607,7 +607,7 @@ void CWallet::ReacceptWalletTransactions() printf("ERROR: ReacceptWalletTransactions() : txindex.vSpent.size() %d != wtx.vout.size() %d\n", txindex.vSpent.size(), wtx.vout.size()); continue; } - for (int i = 0; i < txindex.vSpent.size(); i++) + for (unsigned int i = 0; i < txindex.vSpent.size(); i++) { if (wtx.IsSpent(i)) continue; @@ -771,7 +771,7 @@ bool CWallet::SelectCoinsMinConf(int64 nTargetValue, int nConfMine, int nConfThe if (nDepth < (pcoin->IsFromMe() ? nConfMine : nConfTheirs)) continue; - for (int i = 0; i < pcoin->vout.size(); i++) + for (unsigned int i = 0; i < pcoin->vout.size(); i++) { if (pcoin->IsSpent(i) || !IsMine(pcoin->vout[i])) continue; @@ -804,7 +804,7 @@ bool CWallet::SelectCoinsMinConf(int64 nTargetValue, int nConfMine, int nConfThe if (nTotalLower == nTargetValue || nTotalLower == nTargetValue + CENT) { - for (int i = 0; i < vValue.size(); ++i) + for (unsigned int i = 0; i < vValue.size(); ++i) { setCoinsRet.insert(vValue[i].second); nValueRet += vValue[i].first; @@ -837,7 +837,7 @@ bool CWallet::SelectCoinsMinConf(int64 nTargetValue, int nConfMine, int nConfThe bool fReachedTarget = false; for (int nPass = 0; nPass < 2 && !fReachedTarget; nPass++) { - for (int i = 0; i < vValue.size(); i++) + for (unsigned int i = 0; i < vValue.size(); i++) { if (nPass == 0 ? rand() % 2 : !vfIncluded[i]) { @@ -866,7 +866,7 @@ bool CWallet::SelectCoinsMinConf(int64 nTargetValue, int nConfMine, int nConfThe nValueRet += coinLowestLarger.first; } else { - for (int i = 0; i < vValue.size(); i++) + for (unsigned int i = 0; i < vValue.size(); i++) if (vfBest[i]) { setCoinsRet.insert(vValue[i].second); @@ -875,7 +875,7 @@ bool CWallet::SelectCoinsMinConf(int64 nTargetValue, int nConfMine, int nConfThe //// debug print printf("SelectCoins() best subset: "); - for (int i = 0; i < vValue.size(); i++) + for (unsigned int i = 0; i < vValue.size(); i++) if (vfBest[i]) printf("%s ", FormatMoney(vValue[i].first).c_str()); printf("total %s\n", FormatMoney(nBest).c_str()); diff --git a/src/wallet.h b/src/wallet.h index bb9177b6849..e0f39b4170a 100644 --- a/src/wallet.h +++ b/src/wallet.h @@ -355,7 +355,7 @@ public: bool UpdateSpent(const std::vector& vfNewSpent) { bool fReturn = false; - for (int i=0; i < vfNewSpent.size(); i++) + for (unsigned int i = 0; i < vfNewSpent.size(); i++) { if (i == vfSpent.size()) break; @@ -434,7 +434,7 @@ public: return nAvailableCreditCached; int64 nCredit = 0; - for (int i = 0; i < vout.size(); i++) + for (unsigned int i = 0; i < vout.size(); i++) { if (!IsSpent(i)) { @@ -487,7 +487,7 @@ public: std::vector vWorkQueue; vWorkQueue.reserve(vtxPrev.size()+1); vWorkQueue.push_back(this); - for (int i = 0; i < vWorkQueue.size(); i++) + for (unsigned int i = 0; i < vWorkQueue.size(); i++) { const CMerkleTx* ptx = vWorkQueue[i]; From 0c3aa881e2ac7a6142fcfcbb9b7d2824532fe522 Mon Sep 17 00:00:00 2001 From: Jeff Garzik Date: Sun, 15 Apr 2012 16:52:09 -0400 Subject: [PATCH 201/298] Fix loop index var types, fixing many minor sign comparison warnings foo.size() typically returns an unsigned integral type; make loop variables match those types' signedness. --- src/addrman.cpp | 4 ++-- src/bitcoinrpc.cpp | 2 +- src/main.cpp | 38 +++++++++++++++++++------------------- src/main.h | 12 ++++++------ src/net.cpp | 6 +++--- src/netbase.cpp | 2 +- src/protocol.cpp | 2 +- src/uint256.h | 2 +- src/wallet.cpp | 14 +++++++------- src/wallet.h | 6 +++--- 10 files changed, 44 insertions(+), 44 deletions(-) diff --git a/src/addrman.cpp b/src/addrman.cpp index 8fb40b46dfd..11dd2a7b7df 100644 --- a/src/addrman.cpp +++ b/src/addrman.cpp @@ -124,7 +124,7 @@ int CAddrMan::SelectTried(int nKBucket) // random shuffle the first few elements (using the entire list) // find the least recently tried among them int64 nOldest = -1; - for (int i=0; i &vNew = vvNew[nB]; diff --git a/src/bitcoinrpc.cpp b/src/bitcoinrpc.cpp index e9056ca0af2..ab4238fbb7a 100644 --- a/src/bitcoinrpc.cpp +++ b/src/bitcoinrpc.cpp @@ -1008,7 +1008,7 @@ Value addmultisigaddress(const Array& params, bool fHelp) "(got %d, need at least %d)", keys.size(), nRequired)); std::vector pubkeys; pubkeys.resize(keys.size()); - for (int i = 0; i < keys.size(); i++) + for (unsigned int i = 0; i < keys.size(); i++) { const std::string& ks = keys[i].get_str(); diff --git a/src/main.cpp b/src/main.cpp index ecb9a6af1dd..e2310b84948 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -293,7 +293,7 @@ bool CTransaction::AreInputsStandard(const MapPrevTx& mapInputs) const if (IsCoinBase()) return true; // Coinbases don't use vin normally - for (int i = 0; i < vin.size(); i++) + for (unsigned int i = 0; i < vin.size(); i++) { const CTxOut& prev = GetOutputFor(vin[i], mapInputs); @@ -487,7 +487,7 @@ bool CTransaction::AcceptToMemoryPool(CTxDB& txdb, bool fCheckInputs, bool* pfMi // Check for conflicts with in-memory transactions CTransaction* ptxOld = NULL; - for (int i = 0; i < vin.size(); i++) + for (unsigned int i = 0; i < vin.size(); i++) { COutPoint outpoint = vin[i].prevout; if (mapNextTx.count(outpoint)) @@ -503,7 +503,7 @@ bool CTransaction::AcceptToMemoryPool(CTxDB& txdb, bool fCheckInputs, bool* pfMi return false; if (!IsNewerThan(*ptxOld)) return false; - for (int i = 0; i < vin.size(); i++) + for (unsigned int i = 0; i < vin.size(); i++) { COutPoint outpoint = vin[i].prevout; if (!mapNextTx.count(outpoint) || mapNextTx[outpoint].ptx != ptxOld) @@ -612,7 +612,7 @@ bool CTransaction::AddToMemoryPoolUnchecked() { uint256 hash = GetHash(); mapTransactions[hash] = *this; - for (int i = 0; i < vin.size(); i++) + for (unsigned int i = 0; i < vin.size(); i++) mapNextTx[vin[i].prevout] = CInPoint(&mapTransactions[hash], i); nTransactionsUpdated++; ++nPooledTx; @@ -997,7 +997,7 @@ bool CTransaction::FetchInputs(CTxDB& txdb, const map& mapTes if (IsCoinBase()) return true; // Coinbase transactions have no inputs to fetch. - for (int i = 0; i < vin.size(); i++) + for (unsigned int i = 0; i < vin.size(); i++) { COutPoint prevout = vin[i].prevout; if (inputsRet.count(prevout.hash)) @@ -1042,7 +1042,7 @@ bool CTransaction::FetchInputs(CTxDB& txdb, const map& mapTes } // Make sure all prevout.n's are valid: - for (int i = 0; i < vin.size(); i++) + for (unsigned int i = 0; i < vin.size(); i++) { const COutPoint prevout = vin[i].prevout; assert(inputsRet.count(prevout.hash) != 0); @@ -1079,7 +1079,7 @@ int64 CTransaction::GetValueIn(const MapPrevTx& inputs) const return 0; int64 nResult = 0; - for (int i = 0; i < vin.size(); i++) + for (unsigned int i = 0; i < vin.size(); i++) { nResult += GetOutputFor(vin[i], inputs).nValue; } @@ -1093,7 +1093,7 @@ int CTransaction::GetP2SHSigOpCount(const MapPrevTx& inputs) const return 0; int nSigOps = 0; - for (int i = 0; i < vin.size(); i++) + for (unsigned int i = 0; i < vin.size(); i++) { const CTxOut& prevout = GetOutputFor(vin[i], inputs); if (prevout.scriptPubKey.IsPayToScriptHash()) @@ -1114,7 +1114,7 @@ bool CTransaction::ConnectInputs(MapPrevTx inputs, { int64 nValueIn = 0; int64 nFees = 0; - for (int i = 0; i < vin.size(); i++) + for (unsigned int i = 0; i < vin.size(); i++) { COutPoint prevout = vin[i].prevout; assert(inputs.count(prevout.hash) > 0); @@ -1193,7 +1193,7 @@ bool CTransaction::ClientConnectInputs() CRITICAL_BLOCK(cs_mapTransactions) { int64 nValueIn = 0; - for (int i = 0; i < vin.size(); i++) + for (unsigned int i = 0; i < vin.size(); i++) { // Get prev tx from single transactions in memory COutPoint prevout = vin[i].prevout; @@ -1404,7 +1404,7 @@ bool static Reorganize(CTxDB& txdb, CBlockIndex* pindexNew) // Connect longer branch vector vDelete; - for (int i = 0; i < vConnect.size(); i++) + for (unsigned int i = 0; i < vConnect.size(); i++) { CBlockIndex* pindex = vConnect[i]; CBlock block; @@ -1643,7 +1643,7 @@ bool CBlock::CheckBlock() const // First transaction must be coinbase, the rest must not be if (vtx.empty() || !vtx[0].IsCoinBase()) return DoS(100, error("CheckBlock() : first tx is not coinbase")); - for (int i = 1; i < vtx.size(); i++) + for (unsigned int i = 1; i < vtx.size(); i++) if (vtx[i].IsCoinBase()) return DoS(100, error("CheckBlock() : more than one coinbase")); @@ -1777,7 +1777,7 @@ bool ProcessBlock(CNode* pfrom, CBlock* pblock) // Recursively process any orphan blocks that depended on this one vector vWorkQueue; vWorkQueue.push_back(hash); - for (int i = 0; i < vWorkQueue.size(); i++) + for (unsigned int i = 0; i < vWorkQueue.size(); i++) { uint256 hashPrev = vWorkQueue[i]; for (multimap::iterator mi = mapOrphanBlocksByPrev.lower_bound(hashPrev); @@ -2001,7 +2001,7 @@ void PrintBlockTree() // put the main timechain first vector& vNext = mapNext[pindex]; - for (int i = 0; i < vNext.size(); i++) + for (unsigned int i = 0; i < vNext.size(); i++) { if (vNext[i]->pnext) { @@ -2011,7 +2011,7 @@ void PrintBlockTree() } // iterate children - for (int i = 0; i < vNext.size(); i++) + for (unsigned int i = 0; i < vNext.size(); i++) vStack.push_back(make_pair(nCol+i, vNext[i])); } } @@ -2364,7 +2364,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv) } CTxDB txdb("r"); - for (int nInv = 0; nInv < vInv.size(); nInv++) + for (unsigned int nInv = 0; nInv < vInv.size(); nInv++) { const CInv &inv = vInv[nInv]; @@ -2539,7 +2539,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv) vWorkQueue.push_back(inv.hash); // Recursively process any orphan transactions that depended on this one - for (int i = 0; i < vWorkQueue.size(); i++) + for (unsigned int i = 0; i < vWorkQueue.size(); i++) { uint256 hashPrev = vWorkQueue[i]; for (multimap::iterator mi = mapOrphanTransactionsByPrev.lower_bound(hashPrev); @@ -3294,7 +3294,7 @@ void FormatHashBuffers(CBlock* pblock, char* pmidstate, char* pdata, char* phash FormatHashBlocks(&tmp.hash1, sizeof(tmp.hash1)); // Byte swap all the input buffer - for (int i = 0; i < sizeof(tmp)/4; i++) + for (unsigned int i = 0; i < sizeof(tmp)/4; i++) ((unsigned int*)&tmp)[i] = ByteReverse(((unsigned int*)&tmp)[i]); // Precalc the first half of the first hash, which stays constant @@ -3419,7 +3419,7 @@ void static BitcoinMiner(CWallet *pwallet) // Check if something found if (nNonceFound != -1) { - for (int i = 0; i < sizeof(hash)/4; i++) + for (unsigned int i = 0; i < sizeof(hash)/4; i++) ((unsigned int*)&hash)[i] = ByteReverse(((unsigned int*)&hash)[i]); if (hash <= hashTarget) diff --git a/src/main.h b/src/main.h index e89258699d3..2f07372dfcf 100644 --- a/src/main.h +++ b/src/main.h @@ -456,13 +456,13 @@ public: { if (vin.size() != old.vin.size()) return false; - for (int i = 0; i < vin.size(); i++) + for (unsigned int i = 0; i < vin.size(); i++) if (vin[i].prevout != old.vin[i].prevout) return false; bool fNewer = false; unsigned int nLowest = std::numeric_limits::max(); - for (int i = 0; i < vin.size(); i++) + for (unsigned int i = 0; i < vin.size(); i++) { if (vin[i].nSequence != old.vin[i].nSequence) { @@ -636,9 +636,9 @@ public: vin.size(), vout.size(), nLockTime); - for (int i = 0; i < vin.size(); i++) + for (unsigned int i = 0; i < vin.size(); i++) str += " " + vin[i].ToString() + "\n"; - for (int i = 0; i < vout.size(); i++) + for (unsigned int i = 0; i < vout.size(); i++) str += " " + vout[i].ToString() + "\n"; return str; } @@ -1006,13 +1006,13 @@ public: hashMerkleRoot.ToString().substr(0,10).c_str(), nTime, nBits, nNonce, vtx.size()); - for (int i = 0; i < vtx.size(); i++) + for (unsigned int i = 0; i < vtx.size(); i++) { printf(" "); vtx[i].print(); } printf(" vMerkleTree: "); - for (int i = 0; i < vMerkleTree.size(); i++) + for (unsigned int i = 0; i < vMerkleTree.size(); i++) printf("%s ", vMerkleTree[i].ToString().substr(0,10).c_str()); printf("\n"); } diff --git a/src/net.cpp b/src/net.cpp index 9bdb1f283e1..c4bd027de2d 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -694,7 +694,7 @@ void ThreadSocketHandler2(void* parg) if (hSocketMax > -1) { printf("socket select error %d\n", nErr); - for (int i = 0; i <= hSocketMax; i++) + for (unsigned int i = 0; i <= hSocketMax; i++) FD_SET(i, &fdsetRecv); } FD_ZERO(&fdsetSend); @@ -1086,7 +1086,7 @@ void ThreadDNSAddressSeed2(void* parg) { printf("Loading addresses from DNS seeds (could take a while)\n"); - for (int seed_idx = 0; seed_idx < ARRAYLEN(strDNSSeed); seed_idx++) { + for (unsigned int seed_idx = 0; seed_idx < ARRAYLEN(strDNSSeed); seed_idx++) { vector vaddr; vector vAdd; if (LookupHost(strDNSSeed[seed_idx][1], vaddr)) @@ -1310,7 +1310,7 @@ void ThreadOpenConnections2(void* parg) if (addrman.size()==0 && (GetTime() - nStart > 60 || fTOR) && !fTestNet) { std::vector vAdd; - for (int i = 0; i < ARRAYLEN(pnSeed); i++) + for (unsigned int i = 0; i < ARRAYLEN(pnSeed); i++) { // It'll only connect to one or two seed nodes because once it connects, // it'll get a pile of addresses with newer timestamps. diff --git a/src/netbase.cpp b/src/netbase.cpp index baf7c412a0f..45fdca571fb 100644 --- a/src/netbase.cpp +++ b/src/netbase.cpp @@ -136,7 +136,7 @@ bool Lookup(const char *pszName, std::vector& vAddr, int portDefault, if (!fRet) return false; vAddr.resize(vIP.size()); - for (int i = 0; i < vIP.size(); i++) + for (unsigned int i = 0; i < vIP.size(); i++) vAddr[i] = CService(vIP[i], port); return true; } diff --git a/src/protocol.cpp b/src/protocol.cpp index 15fbf9fc0d1..06306cf8e1e 100644 --- a/src/protocol.cpp +++ b/src/protocol.cpp @@ -107,7 +107,7 @@ CInv::CInv(int typeIn, const uint256& hashIn) CInv::CInv(const std::string& strType, const uint256& hashIn) { - int i; + unsigned int i; for (i = 1; i < ARRAYLEN(ppszTypeName); i++) { if (strType == ppszTypeName[i]) diff --git a/src/uint256.h b/src/uint256.h index 0947816785e..309c1f7995d 100644 --- a/src/uint256.h +++ b/src/uint256.h @@ -287,7 +287,7 @@ public: std::string GetHex() const { char psz[sizeof(pn)*2 + 1]; - for (int i = 0; i < sizeof(pn); i++) + for (unsigned int i = 0; i < sizeof(pn); i++) sprintf(psz + i*2, "%02x", ((unsigned char*)pn)[sizeof(pn) - i - 1]); return std::string(psz, psz + sizeof(pn)*2); } diff --git a/src/wallet.cpp b/src/wallet.cpp index 49e1392c270..bd17bd926f4 100644 --- a/src/wallet.cpp +++ b/src/wallet.cpp @@ -611,7 +611,7 @@ void CWalletTx::AddSupportingTransactions(CTxDB& txdb) { map mapWalletPrev; set setAlreadyDone; - for (int i = 0; i < vWorkQueue.size(); i++) + for (unsigned int i = 0; i < vWorkQueue.size(); i++) { uint256 hash = vWorkQueue[i]; if (setAlreadyDone.count(hash)) @@ -718,7 +718,7 @@ void CWallet::ReacceptWalletTransactions() printf("ERROR: ReacceptWalletTransactions() : txindex.vSpent.size() %d != wtx.vout.size() %d\n", txindex.vSpent.size(), wtx.vout.size()); continue; } - for (int i = 0; i < txindex.vSpent.size(); i++) + for (unsigned int i = 0; i < txindex.vSpent.size(); i++) { if (wtx.IsSpent(i)) continue; @@ -897,7 +897,7 @@ bool CWallet::SelectCoinsMinConf(int64 nTargetValue, int nConfMine, int nConfThe if (nDepth < (pcoin->IsFromMe() ? nConfMine : nConfTheirs)) continue; - for (int i = 0; i < pcoin->vout.size(); i++) + for (unsigned int i = 0; i < pcoin->vout.size(); i++) { if (pcoin->IsSpent(i) || !IsMine(pcoin->vout[i])) continue; @@ -930,7 +930,7 @@ bool CWallet::SelectCoinsMinConf(int64 nTargetValue, int nConfMine, int nConfThe if (nTotalLower == nTargetValue || nTotalLower == nTargetValue + CENT) { - for (int i = 0; i < vValue.size(); ++i) + for (unsigned int i = 0; i < vValue.size(); ++i) { setCoinsRet.insert(vValue[i].second); nValueRet += vValue[i].first; @@ -963,7 +963,7 @@ bool CWallet::SelectCoinsMinConf(int64 nTargetValue, int nConfMine, int nConfThe bool fReachedTarget = false; for (int nPass = 0; nPass < 2 && !fReachedTarget; nPass++) { - for (int i = 0; i < vValue.size(); i++) + for (unsigned int i = 0; i < vValue.size(); i++) { if (nPass == 0 ? rand() % 2 : !vfIncluded[i]) { @@ -992,7 +992,7 @@ bool CWallet::SelectCoinsMinConf(int64 nTargetValue, int nConfMine, int nConfThe nValueRet += coinLowestLarger.first; } else { - for (int i = 0; i < vValue.size(); i++) + for (unsigned int i = 0; i < vValue.size(); i++) if (vfBest[i]) { setCoinsRet.insert(vValue[i].second); @@ -1001,7 +1001,7 @@ bool CWallet::SelectCoinsMinConf(int64 nTargetValue, int nConfMine, int nConfThe //// debug print printf("SelectCoins() best subset: "); - for (int i = 0; i < vValue.size(); i++) + for (unsigned int i = 0; i < vValue.size(); i++) if (vfBest[i]) printf("%s ", FormatMoney(vValue[i].first).c_str()); printf("total %s\n", FormatMoney(nBest).c_str()); diff --git a/src/wallet.h b/src/wallet.h index 308a2665716..5672c6069dd 100644 --- a/src/wallet.h +++ b/src/wallet.h @@ -400,7 +400,7 @@ public: bool UpdateSpent(const std::vector& vfNewSpent) { bool fReturn = false; - for (int i=0; i < vfNewSpent.size(); i++) + for (unsigned int i = 0; i < vfNewSpent.size(); i++) { if (i == vfSpent.size()) break; @@ -486,7 +486,7 @@ public: return nAvailableCreditCached; int64 nCredit = 0; - for (int i = 0; i < vout.size(); i++) + for (unsigned int i = 0; i < vout.size(); i++) { if (!IsSpent(i)) { @@ -539,7 +539,7 @@ public: std::vector vWorkQueue; vWorkQueue.reserve(vtxPrev.size()+1); vWorkQueue.push_back(this); - for (int i = 0; i < vWorkQueue.size(); i++) + for (unsigned int i = 0; i < vWorkQueue.size(); i++) { const CMerkleTx* ptx = vWorkQueue[i]; From 2abd083ea44ba00a23db87b8123a5732421a905f Mon Sep 17 00:00:00 2001 From: Jeff Garzik Date: Sun, 15 Apr 2012 16:58:32 -0400 Subject: [PATCH 202/298] Fix sign-compare warnings: netbase's Lookup* max-solutions may be unsigned --- src/netbase.cpp | 8 ++++---- src/netbase.h | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/netbase.cpp b/src/netbase.cpp index 45fdca571fb..8b30ffc140e 100644 --- a/src/netbase.cpp +++ b/src/netbase.cpp @@ -22,7 +22,7 @@ int nConnectTimeout = 5000; static const unsigned char pchIPv4[12] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff }; -bool static LookupIntern(const char *pszName, std::vector& vIP, int nMaxSolutions, bool fAllowLookup) +bool static LookupIntern(const char *pszName, std::vector& vIP, unsigned int nMaxSolutions, bool fAllowLookup) { vIP.clear(); struct addrinfo aiHint; @@ -77,7 +77,7 @@ bool static LookupIntern(const char *pszName, std::vector& vIP, int nM return (vIP.size() > 0); } -bool LookupHost(const char *pszName, std::vector& vIP, int nMaxSolutions, bool fAllowLookup) +bool LookupHost(const char *pszName, std::vector& vIP, unsigned int nMaxSolutions, bool fAllowLookup) { if (pszName[0] == 0) return false; @@ -93,12 +93,12 @@ bool LookupHost(const char *pszName, std::vector& vIP, int nMaxSolutio return LookupIntern(pszHost, vIP, nMaxSolutions, fAllowLookup); } -bool LookupHostNumeric(const char *pszName, std::vector& vIP, int nMaxSolutions) +bool LookupHostNumeric(const char *pszName, std::vector& vIP, unsigned int nMaxSolutions) { return LookupHost(pszName, vIP, nMaxSolutions, false); } -bool Lookup(const char *pszName, std::vector& vAddr, int portDefault, bool fAllowLookup, int nMaxSolutions) +bool Lookup(const char *pszName, std::vector& vAddr, int portDefault, bool fAllowLookup, unsigned int nMaxSolutions) { if (pszName[0] == 0) return false; diff --git a/src/netbase.h b/src/netbase.h index b5f9d5fad98..e86c114d479 100644 --- a/src/netbase.h +++ b/src/netbase.h @@ -126,10 +126,10 @@ class CService : public CNetAddr ) }; -bool LookupHost(const char *pszName, std::vector& vIP, int nMaxSolutions = 0, bool fAllowLookup = true); -bool LookupHostNumeric(const char *pszName, std::vector& vIP, int nMaxSolutions = 0); +bool LookupHost(const char *pszName, std::vector& vIP, unsigned int nMaxSolutions = 0, bool fAllowLookup = true); +bool LookupHostNumeric(const char *pszName, std::vector& vIP, unsigned int nMaxSolutions = 0); bool Lookup(const char *pszName, CService& addr, int portDefault = 0, bool fAllowLookup = true); -bool Lookup(const char *pszName, std::vector& vAddr, int portDefault = 0, bool fAllowLookup = true, int nMaxSolutions = 0); +bool Lookup(const char *pszName, std::vector& vAddr, int portDefault = 0, bool fAllowLookup = true, unsigned int nMaxSolutions = 0); bool LookupNumeric(const char *pszName, CService& addr, int portDefault = 0); bool ConnectSocket(const CService &addr, SOCKET& hSocketRet, int nTimeout = nConnectTimeout); From 1b7e5cbcad219e946bb4217741da6933d8302412 Mon Sep 17 00:00:00 2001 From: Jeff Garzik Date: Sun, 15 Apr 2012 16:59:48 -0400 Subject: [PATCH 203/298] CNode's nHeaderStart may be negative, so change its type (PARTIAL) --- src/net.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/net.h b/src/net.h index 53e13fd095e..24ab43a503d 100644 --- a/src/net.h +++ b/src/net.h @@ -111,7 +111,7 @@ public: int64 nLastRecv; int64 nLastSendEmpty; int64 nTimeConnected; - unsigned int nHeaderStart; + signed int nHeaderStart; unsigned int nMessageStart; CAddress addr; int nVersion; From 7f34351910ee63685beb169895a3eb5ef266dbb5 Mon Sep 17 00:00:00 2001 From: Jeff Garzik Date: Sun, 15 Apr 2012 17:00:20 -0400 Subject: [PATCH 204/298] Fix misc. minor sign-comparison warnings --- src/base58.h | 2 +- src/crypter.cpp | 2 +- src/key.h | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/base58.h b/src/base58.h index 592756ff74f..fe1927255c4 100644 --- a/src/base58.h +++ b/src/base58.h @@ -255,7 +255,7 @@ public: bool IsValid() const { - int nExpectedSize = 20; + unsigned int nExpectedSize = 20; bool fExpectTestNet = false; switch(nVersion) { diff --git a/src/crypter.cpp b/src/crypter.cpp index 5b7bfec06a2..e821b089bab 100644 --- a/src/crypter.cpp +++ b/src/crypter.cpp @@ -31,7 +31,7 @@ bool CCrypter::SetKeyFromPassphrase(const std::string& strKeyData, const std::ve i = EVP_BytesToKey(EVP_aes_256_cbc(), EVP_sha512(), &chSalt[0], (unsigned char *)&strKeyData[0], strKeyData.size(), nRounds, chKey, chIV); - if (i != WALLET_CRYPTO_KEY_SIZE) + if (i != (int)WALLET_CRYPTO_KEY_SIZE) { memset(&chKey, 0, sizeof chKey); memset(&chIV, 0, sizeof chIV); diff --git a/src/key.h b/src/key.h index 477f550bcf4..6bf750847ee 100644 --- a/src/key.h +++ b/src/key.h @@ -181,7 +181,7 @@ public: CPrivKey GetPrivKey() const { - unsigned int nSize = i2d_ECPrivateKey(pkey, NULL); + int nSize = i2d_ECPrivateKey(pkey, NULL); if (!nSize) throw key_error("CKey::GetPrivKey() : i2d_ECPrivateKey failed"); CPrivKey vchPrivKey(nSize, 0); @@ -202,7 +202,7 @@ public: std::vector GetPubKey() const { - unsigned int nSize = i2o_ECPublicKey(pkey, NULL); + int nSize = i2o_ECPublicKey(pkey, NULL); if (!nSize) throw key_error("CKey::GetPubKey() : i2o_ECPublicKey failed"); std::vector vchPubKey(nSize, 0); From dc588faf5922d8ca449dea61bbe899532497c914 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Tue, 17 Apr 2012 18:50:45 +0200 Subject: [PATCH 205/298] Fix potential deadlock Conflict: * cs_main in ProcessMessages() (before calling ProcessMessages) * cs_vSend in CNode::BeginMessage versus: * cs_vSend in ThreadMessageHandler2 (before calling SendMessages) * cs_main in SendMessages Even though cs_vSend is a try_lock, if it succeeds simultaneously with the locking of cs_main in ProcessMessages(), it could cause a deadlock. --- src/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index 76e07837945..e6f94210b98 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2618,7 +2618,7 @@ bool ProcessMessages(CNode* pfrom) bool SendMessages(CNode* pto, bool fSendTrickle) { - CRITICAL_BLOCK(cs_main) + TRY_CRITICAL_BLOCK(cs_main) { // Don't send anything until we get their version message if (pto->nVersion == 0) From e401e5eb79f944bf772e541baed9ef45f0cb4f43 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Tue, 17 Apr 2012 23:27:59 +0200 Subject: [PATCH 206/298] Add missing breaks in optionmodel's switch case --- src/qt/optionsmodel.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/qt/optionsmodel.cpp b/src/qt/optionsmodel.cpp index efc216dab8a..02daef5e210 100644 --- a/src/qt/optionsmodel.cpp +++ b/src/qt/optionsmodel.cpp @@ -123,10 +123,12 @@ bool OptionsModel::setData(const QModelIndex & index, const QVariant & value, in walletdb.WriteSetting("nDisplayUnit", nDisplayUnit); emit displayUnitChanged(unit); } + break; case DisplayAddresses: { bDisplayAddresses = value.toBool(); walletdb.WriteSetting("bDisplayAddresses", bDisplayAddresses); } + break; default: break; } From bd043f19c83654331e5418ea1e7af2bd213899a7 Mon Sep 17 00:00:00 2001 From: "Dwayne C. Litzenberger" Date: Mon, 16 Apr 2012 01:31:38 -0400 Subject: [PATCH 207/298] Fix phexdigits[255] is undefined. --- src/util.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/util.cpp b/src/util.cpp index c3290f4176d..a6065ef16cb 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -421,7 +421,7 @@ vector ParseHex(const char* psz) 0,1,2,3,4,5,6,7,8,9,-1,-1,-1,-1,-1,-1, -1,0xa,0xb,0xc,0xd,0xe,0xf,-1,-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, - -1,0xa,0xb,0xc,0xd,0xe,0xf,-1,-1,-1,-1,-1,-1,-1,-1,-1 + -1,0xa,0xb,0xc,0xd,0xe,0xf,-1,-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, From 810427470113ab25724a6f50abdcdf63118e683b Mon Sep 17 00:00:00 2001 From: "Dwayne C. Litzenberger" Date: Mon, 16 Apr 2012 01:31:38 -0400 Subject: [PATCH 208/298] Fix phexdigits[255] is undefined. --- src/util.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/util.cpp b/src/util.cpp index 5ba650420b8..b6b4ee645a2 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -418,7 +418,7 @@ static char phexdigit[256] = 0,1,2,3,4,5,6,7,8,9,-1,-1,-1,-1,-1,-1, -1,0xa,0xb,0xc,0xd,0xe,0xf,-1,-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, - -1,0xa,0xb,0xc,0xd,0xe,0xf,-1,-1,-1,-1,-1,-1,-1,-1,-1 + -1,0xa,0xb,0xc,0xd,0xe,0xf,-1,-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, From e5b980d72f808c46ea279d1fa5bfc1f8fb3363c3 Mon Sep 17 00:00:00 2001 From: "Dwayne C. Litzenberger" Date: Mon, 16 Apr 2012 01:32:55 -0400 Subject: [PATCH 209/298] Fix bugs on 'unsigned char' platforms. In ISO C++, the signedness of 'char' is undefined. On some platforms (e.g. ARM), 'char' is an unsigned type, but some of the code relies on 'char' being signed (as it is on x86). This is indicated by compiler warnings like this: bignum.h: In constructor 'CBigNum::CBigNum(char)': bignum.h:81:59: warning: comparison is always true due to limited range of data type [-Wtype-limits] util.cpp: In function 'bool IsHex(const string&)': util.cpp:427:28: warning: comparison is always false due to limited range of data type [-Wtype-limits] In particular, IsHex erroneously returned true regardless of the input characters, as long as the length of the string was a positive multiple of 2. Note: For testing, it's possible using GCC to force char to be unsigned by adding the -funsigned-char parameter to xCXXFLAGS. --- src/bignum.h | 5 +++-- src/script.h | 6 ++++-- src/uint256.h | 2 +- src/util.cpp | 8 ++++---- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/bignum.h b/src/bignum.h index 641ebf4b051..fd5364e810a 100644 --- a/src/bignum.h +++ b/src/bignum.h @@ -77,7 +77,8 @@ public: BN_clear_free(this); } - CBigNum(char n) { BN_init(this); if (n >= 0) setulong(n); else setint64(n); } + //CBigNum(char n) is not portable. Use 'signed char' or 'unsigned char'. + CBigNum(signed char n) { BN_init(this); if (n >= 0) setulong(n); else setint64(n); } CBigNum(short n) { BN_init(this); if (n >= 0) setulong(n); else setint64(n); } CBigNum(int n) { BN_init(this); if (n >= 0) setulong(n); else setint64(n); } CBigNum(long n) { BN_init(this); if (n >= 0) setulong(n); else setint64(n); } @@ -295,7 +296,7 @@ public: psz++; // hex string to bignum - static char phexdigit[256] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0, 0,0xa,0xb,0xc,0xd,0xe,0xf,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0xa,0xb,0xc,0xd,0xe,0xf,0,0,0,0,0,0,0,0,0 }; + static signed char phexdigit[256] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0, 0,0xa,0xb,0xc,0xd,0xe,0xf,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0xa,0xb,0xc,0xd,0xe,0xf,0,0,0,0,0,0,0,0,0 }; *this = 0; while (isxdigit(*psz)) { diff --git a/src/script.h b/src/script.h index bc9fc9ab6fa..7d15bbaebe0 100644 --- a/src/script.h +++ b/src/script.h @@ -402,7 +402,8 @@ public: } - explicit CScript(char b) { operator<<(b); } + //explicit CScript(char b) is not portable. Use 'signed char' or 'unsigned char'. + explicit CScript(signed char b) { operator<<(b); } explicit CScript(short b) { operator<<(b); } explicit CScript(int b) { operator<<(b); } explicit CScript(long b) { operator<<(b); } @@ -419,7 +420,8 @@ public: explicit CScript(const std::vector& b) { operator<<(b); } - CScript& operator<<(char b) { return push_int64(b); } + //CScript& operator<<(char b) is not portable. Use 'signed char' or 'unsigned char'. + CScript& operator<<(signed char b) { return push_int64(b); } CScript& operator<<(short b) { return push_int64(b); } CScript& operator<<(int b) { return push_int64(b); } CScript& operator<<(long b) { return push_int64(b); } diff --git a/src/uint256.h b/src/uint256.h index bbdba995334..0add8040510 100644 --- a/src/uint256.h +++ b/src/uint256.h @@ -313,7 +313,7 @@ public: psz += 2; // hex string to uint - static char phexdigit[256] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0, 0,0xa,0xb,0xc,0xd,0xe,0xf,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0xa,0xb,0xc,0xd,0xe,0xf,0,0,0,0,0,0,0,0,0 }; + static unsigned char phexdigit[256] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0, 0,0xa,0xb,0xc,0xd,0xe,0xf,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0xa,0xb,0xc,0xd,0xe,0xf,0,0,0,0,0,0,0,0,0 }; const char* pbegin = psz; while (phexdigit[(unsigned char)*psz] || *psz == '0') psz++; diff --git a/src/util.cpp b/src/util.cpp index a6065ef16cb..a45d19156f1 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -414,7 +414,7 @@ bool ParseMoney(const char* pszIn, int64& nRet) vector ParseHex(const char* psz) { - static char phexdigit[256] = + static signed char phexdigit[256] = { -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, @@ -438,12 +438,12 @@ vector ParseHex(const char* psz) { while (isspace(*psz)) psz++; - char c = phexdigit[(unsigned char)*psz++]; - if (c == (char)-1) + signed char c = phexdigit[(unsigned char)*psz++]; + if (c == (signed char)-1) break; unsigned char n = (c << 4); c = phexdigit[(unsigned char)*psz++]; - if (c == (char)-1) + if (c == (signed char)-1) break; n |= c; vch.push_back(n); From c43a9ea77db06b9d101f0551df373d417e5028af Mon Sep 17 00:00:00 2001 From: "Dwayne C. Litzenberger" Date: Mon, 16 Apr 2012 01:32:55 -0400 Subject: [PATCH 210/298] Fix bugs on 'unsigned char' platforms. In ISO C++, the signedness of 'char' is undefined. On some platforms (e.g. ARM), 'char' is an unsigned type, but some of the code relies on 'char' being signed (as it is on x86). This is indicated by compiler warnings like this: bignum.h: In constructor 'CBigNum::CBigNum(char)': bignum.h:81:59: warning: comparison is always true due to limited range of data type [-Wtype-limits] util.cpp: In function 'bool IsHex(const string&)': util.cpp:427:28: warning: comparison is always false due to limited range of data type [-Wtype-limits] In particular, IsHex erroneously returned true regardless of the input characters, as long as the length of the string was a positive multiple of 2. Note: For testing, it's possible using GCC to force char to be unsigned by adding the -funsigned-char parameter to xCXXFLAGS. --- src/bignum.h | 5 +++-- src/script.h | 6 ++++-- src/uint256.h | 2 +- src/util.cpp | 8 ++++---- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/bignum.h b/src/bignum.h index 9962b78372f..e691dbe94e5 100644 --- a/src/bignum.h +++ b/src/bignum.h @@ -78,7 +78,8 @@ public: BN_clear_free(this); } - CBigNum(char n) { BN_init(this); if (n >= 0) setulong(n); else setint64(n); } + //CBigNum(char n) is not portable. Use 'signed char' or 'unsigned char'. + CBigNum(signed char n) { BN_init(this); if (n >= 0) setulong(n); else setint64(n); } CBigNum(short n) { BN_init(this); if (n >= 0) setulong(n); else setint64(n); } CBigNum(int n) { BN_init(this); if (n >= 0) setulong(n); else setint64(n); } CBigNum(long n) { BN_init(this); if (n >= 0) setulong(n); else setint64(n); } @@ -296,7 +297,7 @@ public: psz++; // hex string to bignum - static char phexdigit[256] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0, 0,0xa,0xb,0xc,0xd,0xe,0xf,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0xa,0xb,0xc,0xd,0xe,0xf,0,0,0,0,0,0,0,0,0 }; + static signed char phexdigit[256] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0, 0,0xa,0xb,0xc,0xd,0xe,0xf,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0xa,0xb,0xc,0xd,0xe,0xf,0,0,0,0,0,0,0,0,0 }; *this = 0; while (isxdigit(*psz)) { diff --git a/src/script.h b/src/script.h index 524d08b3ec6..1aac324f62b 100644 --- a/src/script.h +++ b/src/script.h @@ -268,7 +268,8 @@ public: } - explicit CScript(char b) { operator<<(b); } + //explicit CScript(char b) is not portable. Use 'signed char' or 'unsigned char'. + explicit CScript(signed char b) { operator<<(b); } explicit CScript(short b) { operator<<(b); } explicit CScript(int b) { operator<<(b); } explicit CScript(long b) { operator<<(b); } @@ -285,7 +286,8 @@ public: explicit CScript(const std::vector& b) { operator<<(b); } - CScript& operator<<(char b) { return push_int64(b); } + //CScript& operator<<(char b) is not portable. Use 'signed char' or 'unsigned char'. + CScript& operator<<(signed char b) { return push_int64(b); } CScript& operator<<(short b) { return push_int64(b); } CScript& operator<<(int b) { return push_int64(b); } CScript& operator<<(long b) { return push_int64(b); } diff --git a/src/uint256.h b/src/uint256.h index 309c1f7995d..a65a2e496d1 100644 --- a/src/uint256.h +++ b/src/uint256.h @@ -306,7 +306,7 @@ public: psz += 2; // hex string to uint - static char phexdigit[256] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0, 0,0xa,0xb,0xc,0xd,0xe,0xf,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0xa,0xb,0xc,0xd,0xe,0xf,0,0,0,0,0,0,0,0,0 }; + static unsigned char phexdigit[256] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0, 0,0xa,0xb,0xc,0xd,0xe,0xf,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0xa,0xb,0xc,0xd,0xe,0xf,0,0,0,0,0,0,0,0,0 }; const char* pbegin = psz; while (phexdigit[(unsigned char)*psz] || *psz == '0') psz++; diff --git a/src/util.cpp b/src/util.cpp index b6b4ee645a2..039c482f71f 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -411,7 +411,7 @@ bool ParseMoney(const char* pszIn, int64& nRet) } -static char phexdigit[256] = +static signed char phexdigit[256] = { -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, @@ -447,12 +447,12 @@ vector ParseHex(const char* psz) { while (isspace(*psz)) psz++; - char c = phexdigit[(unsigned char)*psz++]; - if (c == (char)-1) + signed char c = phexdigit[(unsigned char)*psz++]; + if (c == (signed char)-1) break; unsigned char n = (c << 4); c = phexdigit[(unsigned char)*psz++]; - if (c == (char)-1) + if (c == (signed char)-1) break; n |= c; vch.push_back(n); From d0fe14ffecda4af98ffe7b1523f9a903bf7518a0 Mon Sep 17 00:00:00 2001 From: Timothy Redaelli Date: Fri, 20 Apr 2012 12:50:57 +0200 Subject: [PATCH 211/298] Add missing includes. (Fix bulding under GCC 4.7) (Note: GCC 4.7 build NOT tested with backports -Luke) --- src/uint256.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/uint256.h b/src/uint256.h index 0add8040510..320ee7e95a0 100644 --- a/src/uint256.h +++ b/src/uint256.h @@ -8,6 +8,7 @@ #include "serialize.h" #include +#include #include #include From 07d1a50aee407bcdc32c884801290ee2724637ea Mon Sep 17 00:00:00 2001 From: Jeff Garzik Date: Sun, 22 Apr 2012 13:44:12 -0400 Subject: [PATCH 212/298] Test ScriptSigArgsExpected() for error, before accumulating return value --- src/main.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 2473662620a..1bb64a62645 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -304,6 +304,8 @@ bool CTransaction::AreInputsStandard(const MapPrevTx& mapInputs) const if (!Solver(prevScript, whichType, vSolutions)) return false; int nArgsExpected = ScriptSigArgsExpected(whichType, vSolutions); + if (nArgsExpected < 0) + return false; // Transactions with extra stuff in their scriptSigs are // non-standard. Note that this EvalScript() call will @@ -325,10 +327,15 @@ bool CTransaction::AreInputsStandard(const MapPrevTx& mapInputs) const return false; if (whichType2 == TX_SCRIPTHASH) return false; - nArgsExpected += ScriptSigArgsExpected(whichType2, vSolutions2); + + int tmpExpected; + tmpExpected = ScriptSigArgsExpected(whichType2, vSolutions2); + if (tmpExpected < 0) + return false; + nArgsExpected += tmpExpected; } - if (stack.size() != nArgsExpected) + if (stack.size() != (unsigned int)nArgsExpected) return false; } From c21121752d95ee241eb616a9b958fc662c874803 Mon Sep 17 00:00:00 2001 From: Jeff Garzik Date: Sun, 22 Apr 2012 13:59:24 -0400 Subject: [PATCH 213/298] CBlock::WriteToDisk() properly checks ftell(3) for error return Rather than storing ftell(3)'s return value -- a long -- in an unsigned int, we store and check a properly typed temp. Then, assured a non-negative value, we store in nBlockPosRet. --- src/main.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main.h b/src/main.h index de674b5bb10..e835cdd7bb6 100644 --- a/src/main.h +++ b/src/main.h @@ -961,9 +961,10 @@ public: fileout << FLATDATA(pchMessageStart) << nSize; // Write block - nBlockPosRet = ftell(fileout); - if (nBlockPosRet == -1) + long fileOutPos = ftell(fileout); + if (fileOutPos < 0) return error("CBlock::WriteToDisk() : ftell failed"); + nBlockPosRet = fileOutPos; fileout << *this; // Flush stdio buffers and commit to disk before returning From 282e3ffe6e292ed6b11bc71414420de052193757 Mon Sep 17 00:00:00 2001 From: Timothy Redaelli Date: Wed, 25 Apr 2012 14:07:24 +0200 Subject: [PATCH 214/298] We should include netinet/in.h to use sockaddr_in (POSIX.1-2001) --- src/net.cpp | 2 ++ src/protocol.cpp | 1 + src/protocol.h | 4 ++++ 3 files changed, 7 insertions(+) diff --git a/src/net.cpp b/src/net.cpp index 92ccb1e8806..5135a88b32d 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -12,6 +12,8 @@ #ifdef __WXMSW__ #include +#else +#include #endif #ifdef USE_UPNP diff --git a/src/protocol.cpp b/src/protocol.cpp index a3e54ebc3de..7d80d5d5d0d 100644 --- a/src/protocol.cpp +++ b/src/protocol.cpp @@ -8,6 +8,7 @@ #ifndef __WXMSW__ # include +# include #endif // Prototypes from net.h, but that header (currently) stinks, can't #include it without breaking things diff --git a/src/protocol.h b/src/protocol.h index 53d3eef4d57..6db64900f23 100644 --- a/src/protocol.h +++ b/src/protocol.h @@ -10,6 +10,10 @@ #ifndef __INCLUDED_PROTOCOL_H__ #define __INCLUDED_PROTOCOL_H__ +#ifndef __WXMSW__ +#include +#endif + #include "serialize.h" #include #include "uint256.h" From dfac636fd7e4f0168daade3b3095f3d5a60fd524 Mon Sep 17 00:00:00 2001 From: Timothy Redaelli Date: Wed, 25 Apr 2012 14:07:24 +0200 Subject: [PATCH 215/298] We should include netinet/in.h to use sockaddr_in (POSIX.1-2001) --- src/net.cpp | 2 ++ src/protocol.cpp | 1 + src/protocol.h | 4 ++++ 3 files changed, 7 insertions(+) diff --git a/src/net.cpp b/src/net.cpp index 5b3faea79dd..e92c659a394 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -12,6 +12,8 @@ #ifdef WIN32 #include +#else +#include #endif #ifdef USE_UPNP diff --git a/src/protocol.cpp b/src/protocol.cpp index 9933452d4f6..16ad7468e1e 100644 --- a/src/protocol.cpp +++ b/src/protocol.cpp @@ -8,6 +8,7 @@ #ifndef WIN32 # include +# include #endif // Prototypes from net.h, but that header (currently) stinks, can't #include it without breaking things diff --git a/src/protocol.h b/src/protocol.h index 53d3eef4d57..c8723fa3ea8 100644 --- a/src/protocol.h +++ b/src/protocol.h @@ -10,6 +10,10 @@ #ifndef __INCLUDED_PROTOCOL_H__ #define __INCLUDED_PROTOCOL_H__ +#ifndef WIN32 +#include +#endif + #include "serialize.h" #include #include "uint256.h" From ea22a380de824500644db6fd6f33d0465b34f7a1 Mon Sep 17 00:00:00 2001 From: Timothy Redaelli Date: Wed, 25 Apr 2012 14:07:24 +0200 Subject: [PATCH 216/298] We should include netinet/in.h to use sockaddr_in (POSIX.1-2001) --- src/net.cpp | 2 ++ src/netbase.h | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/net.cpp b/src/net.cpp index 53682612435..e5cb6d4b249 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -13,6 +13,8 @@ #ifdef WIN32 #include +#else +#include #endif #ifdef USE_UPNP diff --git a/src/netbase.h b/src/netbase.h index e86c114d479..26c21401552 100644 --- a/src/netbase.h +++ b/src/netbase.h @@ -19,8 +19,6 @@ #include #include #include -#endif -#ifdef BSD #include #endif From aff6456e8ab47260c1d9598ed00f08fce4848f27 Mon Sep 17 00:00:00 2001 From: freewil Date: Thu, 26 Apr 2012 13:12:44 -0400 Subject: [PATCH 217/298] remove strange debug message from listsinceblock --- src/bitcoinrpc.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/bitcoinrpc.cpp b/src/bitcoinrpc.cpp index b141e733ff7..4e656284728 100644 --- a/src/bitcoinrpc.cpp +++ b/src/bitcoinrpc.cpp @@ -1318,7 +1318,6 @@ Value listsinceblock(const Array& params, bool fHelp) if (target_confirms == 1) { - printf("oops!\n"); lastblock = hashBestChain; } else From 3eb5fdbf5f73535f6a027bbcdf07958610794749 Mon Sep 17 00:00:00 2001 From: freewil Date: Thu, 26 Apr 2012 12:48:33 -0400 Subject: [PATCH 218/298] listsinceblock: rpc param blockid -> blockhash This is more consistent with the rest of the labeling seen by the user when accessing the rpc commands. --- src/bitcoinrpc.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bitcoinrpc.cpp b/src/bitcoinrpc.cpp index 4e656284728..3e82cd3ab77 100644 --- a/src/bitcoinrpc.cpp +++ b/src/bitcoinrpc.cpp @@ -1280,8 +1280,8 @@ Value listsinceblock(const Array& params, bool fHelp) { if (fHelp) throw runtime_error( - "listsinceblock [blockid] [target-confirmations]\n" - "Get all transactions in blocks since block [blockid], or all transactions if omitted"); + "listsinceblock [blockhash] [target-confirmations]\n" + "Get all transactions in blocks since block [blockhash], or all transactions if omitted"); CBlockIndex *pindex = NULL; int target_confirms = 1; From c18b82d5db39bff026f10694a062be2dc7048fd8 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Fri, 27 Apr 2012 10:50:24 -0400 Subject: [PATCH 219/298] Bump version to 0.4.6 --- contrib/Bitcoin.app/Contents/Info.plist | 2 +- doc/README | 2 +- doc/README_windows.txt | 2 +- share/setup.nsi | 6 +++--- src/serialize.h | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/contrib/Bitcoin.app/Contents/Info.plist b/contrib/Bitcoin.app/Contents/Info.plist index b34827e3ca8..8271c15ef45 100644 --- a/contrib/Bitcoin.app/Contents/Info.plist +++ b/contrib/Bitcoin.app/Contents/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 0.4.5 + 0.4.6 CFBundleSignature ???? CFBundleVersion diff --git a/doc/README b/doc/README index e572b2dd530..15f92bf4aff 100644 --- a/doc/README +++ b/doc/README @@ -1,4 +1,4 @@ -Bitcoin 0.4.5 BETA +Bitcoin 0.4.6 BETA Copyright (c) 2009-2012 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/doc/README_windows.txt b/doc/README_windows.txt index 6a551a0b971..8dde1a9365a 100644 --- a/doc/README_windows.txt +++ b/doc/README_windows.txt @@ -1,4 +1,4 @@ -Bitcoin 0.4.5 BETA +Bitcoin 0.4.6 BETA Copyright (c) 2009-2012 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/share/setup.nsi b/share/setup.nsi index 643b0ffef8b..27c87db84b7 100644 --- a/share/setup.nsi +++ b/share/setup.nsi @@ -5,7 +5,7 @@ SetCompressor /SOLID lzma # General Symbol Definitions !define REGKEY "SOFTWARE\$(^Name)" -!define VERSION 0.4.5 +!define VERSION 0.4.6 !define COMPANY "Bitcoin project" !define URL http://www.bitcoin.org/ @@ -45,13 +45,13 @@ Var StartMenuGroup !insertmacro MUI_LANGUAGE English # Installer attributes -OutFile bitcoin-0.4.5-win32-setup.exe +OutFile bitcoin-0.4.6-win32-setup.exe InstallDir $PROGRAMFILES\Bitcoin CRCCheck on XPStyle on BrandingText " " ShowInstDetails show -VIProductVersion 0.4.5.0 +VIProductVersion 0.4.6.0 VIAddVersionKey ProductName Bitcoin VIAddVersionKey ProductVersion "${VERSION}" VIAddVersionKey CompanyName "${COMPANY}" diff --git a/src/serialize.h b/src/serialize.h index 491169ff58b..302766062ab 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -59,7 +59,7 @@ class CDataStream; class CAutoFile; static const unsigned int MAX_SIZE = 0x02000000; -static const int VERSION = 40500; +static const int VERSION = 40600; static const char* pszSubVer = ""; static const bool VERSION_IS_BETA = true; From e5f43fe30992abd75b6f981fd287cfed64c627ee Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Fri, 27 Apr 2012 10:55:06 -0400 Subject: [PATCH 220/298] Bump version to 0.5.5 --- bitcoin-qt.pro | 2 +- doc/README | 2 +- doc/README_windows.txt | 2 +- share/setup.nsi | 6 +++--- src/serialize.h | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/bitcoin-qt.pro b/bitcoin-qt.pro index 60f1de89979..922f42ed766 100644 --- a/bitcoin-qt.pro +++ b/bitcoin-qt.pro @@ -1,6 +1,6 @@ TEMPLATE = app TARGET = -VERSION = 0.5.4 +VERSION = 0.5.5 INCLUDEPATH += src src/json src/qt DEFINES += QT_GUI BOOST_THREAD_USE_LIB CONFIG += no_include_pwd diff --git a/doc/README b/doc/README index 3d8c63a3e1a..41fecd7d477 100644 --- a/doc/README +++ b/doc/README @@ -1,4 +1,4 @@ -Bitcoin 0.5.4 BETA +Bitcoin 0.5.5 BETA Copyright (c) 2009-2012 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/doc/README_windows.txt b/doc/README_windows.txt index b4ad595419d..9feb2faed0f 100644 --- a/doc/README_windows.txt +++ b/doc/README_windows.txt @@ -1,4 +1,4 @@ -Bitcoin 0.5.4 BETA +Bitcoin 0.5.5 BETA Copyright (c) 2009-2012 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/share/setup.nsi b/share/setup.nsi index e231436408b..b2d0dd05298 100644 --- a/share/setup.nsi +++ b/share/setup.nsi @@ -5,7 +5,7 @@ SetCompressor /SOLID lzma # General Symbol Definitions !define REGKEY "SOFTWARE\$(^Name)" -!define VERSION 0.5.4 +!define VERSION 0.5.5 !define COMPANY "Bitcoin project" !define URL http://www.bitcoin.org/ @@ -45,13 +45,13 @@ Var StartMenuGroup !insertmacro MUI_LANGUAGE English # Installer attributes -OutFile bitcoin-0.5.4-win32-setup.exe +OutFile bitcoin-0.5.5-win32-setup.exe InstallDir $PROGRAMFILES\Bitcoin CRCCheck on XPStyle on BrandingText " " ShowInstDetails show -VIProductVersion 0.5.4.0 +VIProductVersion 0.5.5.0 VIAddVersionKey ProductName Bitcoin VIAddVersionKey ProductVersion "${VERSION}" VIAddVersionKey CompanyName "${COMPANY}" diff --git a/src/serialize.h b/src/serialize.h index 396e1727eb6..346594c86a4 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -60,7 +60,7 @@ class CDataStream; class CAutoFile; static const unsigned int MAX_SIZE = 0x02000000; -static const int VERSION = 50400; +static const int VERSION = 50500; static const char* pszSubVer = ""; static const bool VERSION_IS_BETA = true; From 5ad4028050d54be1bf60b99dc4edaa2a984f959b Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Fri, 27 Apr 2012 10:52:14 -0400 Subject: [PATCH 221/298] Windows build: compile against openssl 1.0.1b --- contrib/gitian-descriptors/gitian-win32.yml | 6 +++--- doc/build-msw.txt | 6 +++--- src/makefile.linux-mingw | 4 ++-- src/makefile.mingw | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/contrib/gitian-descriptors/gitian-win32.yml b/contrib/gitian-descriptors/gitian-win32.yml index 252e62e2369..f1990aa8e72 100644 --- a/contrib/gitian-descriptors/gitian-win32.yml +++ b/contrib/gitian-descriptors/gitian-win32.yml @@ -18,7 +18,7 @@ remotes: files: - "wxwidgets-win32-2.9.2-gitian.zip" - "boost-win32-1.47.0-gitian.zip" -- "openssl-1.0.0d.tar.gz" +- "openssl-1.0.1b.tar.gz" - "db-4.8.30.NC.tar.gz" - "miniupnpc-1.6.tar.gz" script: | @@ -50,8 +50,8 @@ script: | mv include/boost . cd .. # - tar xzf openssl-1.0.0d.tar.gz - cd openssl-1.0.0d + tar xzf openssl-1.0.1b.tar.gz + cd openssl-1.0.1b ./Configure --cross-compile-prefix=i586-mingw32msvc- mingw make cd .. diff --git a/doc/build-msw.txt b/doc/build-msw.txt index d08e3a23b7c..69c298bbbae 100644 --- a/doc/build-msw.txt +++ b/doc/build-msw.txt @@ -28,7 +28,7 @@ Libraries you need to download separately and build: default path download wxWidgets \wxwidgets-2.9.2-mgw http://www.wxwidgets.org/downloads/ -OpenSSL \openssl-1.0.0d-mgw http://www.openssl.org/source/ +OpenSSL \openssl-1.0.1b-mgw http://www.openssl.org/source/ Berkeley DB \db-4.8.30.NC-mgw http://www.oracle.com/technology/software/products/berkeley-db/index.html Boost \boost-1.47.0-mgw http://www.boost.org/users/download/ miniupnpc \miniupnpc-1.6-mgw http://miniupnp.tuxfamily.org/files/ @@ -42,7 +42,7 @@ miniupnpc New (3-clause) BSD license Versions used in this release: wxWidgets 2.9.2 -OpenSSL 1.0.0d +OpenSSL 1.0.1b Berkeley DB 4.8.30.NC Boost 1.47.0 miniupnpc 1.6 @@ -66,7 +66,7 @@ MSYS shell: un-tar sources with MSYS 'tar xfz' to avoid issue with symlinks (OpenSSL ticket 2377) change 'MAKE' env. variable from 'C:\MinGW32\bin\mingw32-make.exe' to '/c/MinGW32/bin/mingw32-make.exe' -cd /c/openssl-1.0.0d-mgw +cd /c/openssl-1.0.1b-mgw ./config make diff --git a/src/makefile.linux-mingw b/src/makefile.linux-mingw index 23b417cad18..945c15e87bb 100644 --- a/src/makefile.linux-mingw +++ b/src/makefile.linux-mingw @@ -9,7 +9,7 @@ USE_UPNP:=0 INCLUDEPATHS= \ -I"$(DEPSDIR)/boost_1_47_0" \ -I"$(DEPSDIR)/db-4.8.30.NC/build_unix" \ - -I"$(DEPSDIR)/openssl-1.0.0d/include" \ + -I"$(DEPSDIR)/openssl-1.0.1b/include" \ -I"$(DEPSDIR)/wxWidgets-2.9.2/lib/gcc_lib/mswud" \ -I"$(DEPSDIR)/wxWidgets-2.9.2/include" \ -I"$(DEPSDIR)/wxWidgets-2.9.2/lib/wx/include/i586-mingw32msvc-msw-unicode-static-2.9/" \ @@ -18,7 +18,7 @@ INCLUDEPATHS= \ LIBPATHS= \ -L"$(DEPSDIR)/boost_1_47_0/stage/lib" \ -L"$(DEPSDIR)/db-4.8.30.NC/build_unix" \ - -L"$(DEPSDIR)/openssl-1.0.0d" \ + -L"$(DEPSDIR)/openssl-1.0.1b" \ -L"$(DEPSDIR)/wxWidgets-2.9.2/lib" WXLIBS= -l wx_mswu-2.9-i586-mingw32msvc diff --git a/src/makefile.mingw b/src/makefile.mingw index ef7eebf4306..35254b38efe 100644 --- a/src/makefile.mingw +++ b/src/makefile.mingw @@ -7,14 +7,14 @@ USE_UPNP:=0 INCLUDEPATHS= \ -I"C:\boost-1.47.0-mgw" \ -I"C:\db-4.8.30.NC-mgw\build_unix" \ - -I"C:\openssl-1.0.0d-mgw\include" \ + -I"C:\openssl-1.0.1b-mgw\include" \ -I"C:\wxWidgets-2.9.2-mgw\lib\gcc_lib\mswud" \ -I"C:\wxWidgets-2.9.2-mgw\include" LIBPATHS= \ -L"C:\boost-1.47.0-mgw\stage\lib" \ -L"C:\db-4.8.30.NC-mgw\build_unix" \ - -L"C:\openssl-1.0.0d-mgw" \ + -L"C:\openssl-1.0.1b-mgw" \ -L"C:\wxWidgets-2.9.2-mgw\lib\gcc_lib" WXLIBS= \ From b7a2b6e1aa3d2b5fc8240dc0fd3a0e8acb213775 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Fri, 27 Apr 2012 10:52:14 -0400 Subject: [PATCH 222/298] Windows build: compile against openssl 1.0.1b --- contrib/gitian-descriptors/gitian-win32.yml | 8 ++++---- doc/build-msw.txt | 6 +++--- doc/release-process.txt | 2 +- src/makefile.linux-mingw | 4 ++-- src/makefile.mingw | 4 ++-- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/contrib/gitian-descriptors/gitian-win32.yml b/contrib/gitian-descriptors/gitian-win32.yml index 0f4670979ef..f9c5214cbd8 100644 --- a/contrib/gitian-descriptors/gitian-win32.yml +++ b/contrib/gitian-descriptors/gitian-win32.yml @@ -18,7 +18,7 @@ remotes: files: - "qt-win32-4.7.4-gitian.zip" - "boost-win32-1.47.0-gitian.zip" -- "openssl-1.0.0e.tar.gz" +- "openssl-1.0.1b.tar.gz" - "db-4.8.30.NC.tar.gz" - "miniupnpc-1.6.tar.gz" script: | @@ -42,8 +42,8 @@ script: | mv include/boost . cd .. # - tar xzf openssl-1.0.0e.tar.gz - cd openssl-1.0.0e + tar xzf openssl-1.0.1b.tar.gz + cd openssl-1.0.1b ./Configure --cross-compile-prefix=i586-mingw32msvc- mingw make cd .. @@ -71,7 +71,7 @@ script: | export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1 export FAKETIME=$REFERENCE_DATETIME export TZ=UTC - $HOME/qt/src/bin/qmake -spec unsupported/win32-g++-cross USE_SSL=1 MINIUPNPC_LIB_PATH=$HOME/build/miniupnpc MINIUPNPC_INCLUDE_PATH=$HOME/build/ BDB_LIB_PATH=$HOME/build/db-4.8.30.NC/build_unix BDB_INCLUDE_PATH=$HOME/build/db-4.8.30.NC/build_unix BOOST_LIB_PATH=$HOME/build/boost_1_47_0/stage/lib BOOST_INCLUDE_PATH=$HOME/build/boost_1_47_0 BOOST_LIB_SUFFIX=-mt-s BOOST_THREAD_LIB_SUFFIX=_win32-mt-s OPENSSL_LIB_PATH=$HOME/build/openssl-1.0.0e OPENSSL_INCLUDE_PATH=$HOME/build/openssl-1.0.0e/include INCLUDEPATH=$HOME/build DEFINES=BOOST_THREAD_USE_LIB BITCOIN_NEED_QT_PLUGINS=1 QMAKE_LRELEASE=lrelease QMAKE_CXXFLAGS=-frandom-seed=bitcoin QMAKE_LFLAGS=-frandom-seed=bitcoin + $HOME/qt/src/bin/qmake -spec unsupported/win32-g++-cross USE_SSL=1 MINIUPNPC_LIB_PATH=$HOME/build/miniupnpc MINIUPNPC_INCLUDE_PATH=$HOME/build/ BDB_LIB_PATH=$HOME/build/db-4.8.30.NC/build_unix BDB_INCLUDE_PATH=$HOME/build/db-4.8.30.NC/build_unix BOOST_LIB_PATH=$HOME/build/boost_1_47_0/stage/lib BOOST_INCLUDE_PATH=$HOME/build/boost_1_47_0 BOOST_LIB_SUFFIX=-mt-s BOOST_THREAD_LIB_SUFFIX=_win32-mt-s OPENSSL_LIB_PATH=$HOME/build/openssl-1.0.1b OPENSSL_INCLUDE_PATH=$HOME/build/openssl-1.0.1b/include INCLUDEPATH=$HOME/build DEFINES=BOOST_THREAD_USE_LIB BITCOIN_NEED_QT_PLUGINS=1 QMAKE_LRELEASE=lrelease QMAKE_CXXFLAGS=-frandom-seed=bitcoin QMAKE_LFLAGS=-frandom-seed=bitcoin make $MAKEOPTS cp release/bitcoin-qt.exe $OUTDIR/ # diff --git a/doc/build-msw.txt b/doc/build-msw.txt index 346be75f56c..2e54b029fc6 100644 --- a/doc/build-msw.txt +++ b/doc/build-msw.txt @@ -24,7 +24,7 @@ Dependencies Libraries you need to download separately and build: default path download -OpenSSL \openssl-1.0.0d-mgw http://www.openssl.org/source/ +OpenSSL \openssl-1.0.1b-mgw http://www.openssl.org/source/ Berkeley DB \db-4.8.30.NC-mgw http://www.oracle.com/technology/software/products/berkeley-db/index.html Boost \boost-1.47.0-mgw http://www.boost.org/users/download/ miniupnpc \miniupnpc-1.6-mgw http://miniupnp.tuxfamily.org/files/ @@ -36,7 +36,7 @@ Boost MIT-like license miniupnpc New (3-clause) BSD license Versions used in this release: -OpenSSL 1.0.0e +OpenSSL 1.0.1b Berkeley DB 4.8.30.NC Boost 1.47.0 miniupnpc 1.6 @@ -48,7 +48,7 @@ MSYS shell: un-tar sources with MSYS 'tar xfz' to avoid issue with symlinks (OpenSSL ticket 2377) change 'MAKE' env. variable from 'C:\MinGW32\bin\mingw32-make.exe' to '/c/MinGW32/bin/mingw32-make.exe' -cd /c/openssl-1.0.0e-mgw +cd /c/openssl-1.0.1b-mgw ./config make diff --git a/doc/release-process.txt b/doc/release-process.txt index 9be6b782a40..2d483d36d7d 100644 --- a/doc/release-process.txt +++ b/doc/release-process.txt @@ -24,7 +24,7 @@ * Fetch and build inputs: mkdir -p inputs; cd inputs/ wget 'http://miniupnp.free.fr/files/download.php?file=miniupnpc-1.6.tar.gz' -O miniupnpc-1.6.tar.gz - wget 'http://www.openssl.org/source/openssl-1.0.0e.tar.gz' + wget 'http://www.openssl.org/source/openssl-1.0.1b.tar.gz' wget 'http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz' wget 'http://downloads.sourceforge.net/project/boost/boost/1.47.0/boost_1_47_0.tar.bz2' wget 'http://download.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.7.4.tar.gz' diff --git a/src/makefile.linux-mingw b/src/makefile.linux-mingw index 61f8d4881f0..fa46d080bb1 100644 --- a/src/makefile.linux-mingw +++ b/src/makefile.linux-mingw @@ -9,13 +9,13 @@ USE_UPNP:=0 INCLUDEPATHS= \ -I"$(DEPSDIR)/boost_1_47_0" \ -I"$(DEPSDIR)/db-4.8.30.NC/build_unix" \ - -I"$(DEPSDIR)/openssl-1.0.0e/include" \ + -I"$(DEPSDIR)/openssl-1.0.1b/include" \ -I"$(DEPSDIR)" LIBPATHS= \ -L"$(DEPSDIR)/boost_1_47_0/stage/lib" \ -L"$(DEPSDIR)/db-4.8.30.NC/build_unix" \ - -L"$(DEPSDIR)/openssl-1.0.0e" + -L"$(DEPSDIR)/openssl-1.0.1b" LIBS= \ -l boost_system-mt-s \ diff --git a/src/makefile.mingw b/src/makefile.mingw index 2cb78d97e6a..5e9a4427f14 100644 --- a/src/makefile.mingw +++ b/src/makefile.mingw @@ -7,12 +7,12 @@ USE_UPNP:=0 INCLUDEPATHS= \ -I"C:\boost-1.47.0-mgw" \ -I"C:\db-4.8.30.NC-mgw\build_unix" \ - -I"C:\openssl-1.0.0d-mgw\include" + -I"C:\openssl-1.0.1b-mgw\include" LIBPATHS= \ -L"C:\boost-1.47.0-mgw\stage\lib" \ -L"C:\db-4.8.30.NC-mgw\build_unix" \ - -L"C:\openssl-1.0.0d-mgw" + -L"C:\openssl-1.0.1b-mgw" LIBS= \ -l boost_system-mgw45-mt-s-1_47 \ From dd02f3ca6e0a8ab1771887f5a49d3359a4d94d4d Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Fri, 27 Apr 2012 10:52:14 -0400 Subject: [PATCH 223/298] Windows build: compile against openssl 1.0.1b --- contrib/gitian-descriptors/deps-win32.yml | 6 +++--- contrib/gitian-descriptors/gitian-win32.yml | 2 +- doc/build-msw.txt | 6 +++--- doc/release-process.txt | 2 +- src/makefile.linux-mingw | 4 ++-- src/makefile.mingw | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/contrib/gitian-descriptors/deps-win32.yml b/contrib/gitian-descriptors/deps-win32.yml index 776a8da00ad..74fa1847b55 100644 --- a/contrib/gitian-descriptors/deps-win32.yml +++ b/contrib/gitian-descriptors/deps-win32.yml @@ -13,7 +13,7 @@ packages: reference_datetime: "2011-01-30 00:00:00" remotes: [] files: -- "openssl-1.0.0e.tar.gz" +- "openssl-1.0.1b.tar.gz" - "db-4.8.30.NC.tar.gz" - "miniupnpc-1.6.tar.gz" - "zlib-1.2.6.tar.gz" @@ -25,8 +25,8 @@ script: | export FAKETIME=$REFERENCE_DATETIME export TZ=UTC # - tar xzf openssl-1.0.0e.tar.gz - cd openssl-1.0.0e + tar xzf openssl-1.0.1b.tar.gz + cd openssl-1.0.1b ./Configure --cross-compile-prefix=i586-mingw32msvc- mingw make cd .. diff --git a/contrib/gitian-descriptors/gitian-win32.yml b/contrib/gitian-descriptors/gitian-win32.yml index 4f299c442b4..d2f4515b0b2 100644 --- a/contrib/gitian-descriptors/gitian-win32.yml +++ b/contrib/gitian-descriptors/gitian-win32.yml @@ -52,7 +52,7 @@ script: | export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1 export FAKETIME=$REFERENCE_DATETIME export TZ=UTC - $HOME/qt/src/bin/qmake -spec unsupported/win32-g++-cross USE_SSL=1 MINIUPNPC_LIB_PATH=$HOME/build/miniupnpc MINIUPNPC_INCLUDE_PATH=$HOME/build/ BDB_LIB_PATH=$HOME/build/db-4.8.30.NC/build_unix BDB_INCLUDE_PATH=$HOME/build/db-4.8.30.NC/build_unix BOOST_LIB_PATH=$HOME/build/boost_1_47_0/stage/lib BOOST_INCLUDE_PATH=$HOME/build/boost_1_47_0 BOOST_LIB_SUFFIX=-mt-s BOOST_THREAD_LIB_SUFFIX=_win32-mt-s OPENSSL_LIB_PATH=$HOME/build/openssl-1.0.0e OPENSSL_INCLUDE_PATH=$HOME/build/openssl-1.0.0e/include QRENCODE_LIB_PATH=$HOME/build/qrencode-3.2.0/.libs QRENCODE_INCLUDE_PATH=$HOME/build/qrencode-3.2.0 USE_QRCODE=1 INCLUDEPATH=$HOME/build DEFINES=BOOST_THREAD_USE_LIB BITCOIN_NEED_QT_PLUGINS=1 QMAKE_LRELEASE=lrelease QMAKE_CXXFLAGS=-frandom-seed=bitcoin QMAKE_LFLAGS=-frandom-seed=bitcoin + $HOME/qt/src/bin/qmake -spec unsupported/win32-g++-cross USE_SSL=1 MINIUPNPC_LIB_PATH=$HOME/build/miniupnpc MINIUPNPC_INCLUDE_PATH=$HOME/build/ BDB_LIB_PATH=$HOME/build/db-4.8.30.NC/build_unix BDB_INCLUDE_PATH=$HOME/build/db-4.8.30.NC/build_unix BOOST_LIB_PATH=$HOME/build/boost_1_47_0/stage/lib BOOST_INCLUDE_PATH=$HOME/build/boost_1_47_0 BOOST_LIB_SUFFIX=-mt-s BOOST_THREAD_LIB_SUFFIX=_win32-mt-s OPENSSL_LIB_PATH=$HOME/build/openssl-1.0.1b OPENSSL_INCLUDE_PATH=$HOME/build/openssl-1.0.1b/include QRENCODE_LIB_PATH=$HOME/build/qrencode-3.2.0/.libs QRENCODE_INCLUDE_PATH=$HOME/build/qrencode-3.2.0 USE_QRCODE=1 INCLUDEPATH=$HOME/build DEFINES=BOOST_THREAD_USE_LIB BITCOIN_NEED_QT_PLUGINS=1 QMAKE_LRELEASE=lrelease QMAKE_CXXFLAGS=-frandom-seed=bitcoin QMAKE_LFLAGS=-frandom-seed=bitcoin make $MAKEOPTS cp release/bitcoin-qt.exe $OUTDIR/ # diff --git a/doc/build-msw.txt b/doc/build-msw.txt index 7e3d1a7cbf0..b1805154e10 100644 --- a/doc/build-msw.txt +++ b/doc/build-msw.txt @@ -24,7 +24,7 @@ Dependencies Libraries you need to download separately and build: default path download -OpenSSL \openssl-1.0.0d-mgw http://www.openssl.org/source/ +OpenSSL \openssl-1.0.1b-mgw http://www.openssl.org/source/ Berkeley DB \db-4.8.30.NC-mgw http://www.oracle.com/technology/software/products/berkeley-db/index.html Boost \boost-1.47.0-mgw http://www.boost.org/users/download/ miniupnpc \miniupnpc-1.6-mgw http://miniupnp.tuxfamily.org/files/ @@ -36,7 +36,7 @@ Boost MIT-like license miniupnpc New (3-clause) BSD license Versions used in this release: -OpenSSL 1.0.0e +OpenSSL 1.0.1b Berkeley DB 4.8.30.NC Boost 1.47.0 miniupnpc 1.6 @@ -48,7 +48,7 @@ MSYS shell: un-tar sources with MSYS 'tar xfz' to avoid issue with symlinks (OpenSSL ticket 2377) change 'MAKE' env. variable from 'C:\MinGW32\bin\mingw32-make.exe' to '/c/MinGW32/bin/mingw32-make.exe' -cd /c/openssl-1.0.0e-mgw +cd /c/openssl-1.0.1b-mgw ./config make diff --git a/doc/release-process.txt b/doc/release-process.txt index 977780c9e70..05db17e3232 100644 --- a/doc/release-process.txt +++ b/doc/release-process.txt @@ -24,7 +24,7 @@ * Fetch and build inputs: mkdir -p inputs; cd inputs/ wget 'http://miniupnp.free.fr/files/download.php?file=miniupnpc-1.6.tar.gz' -O miniupnpc-1.6.tar.gz - wget 'http://www.openssl.org/source/openssl-1.0.0e.tar.gz' + wget 'http://www.openssl.org/source/openssl-1.0.1b.tar.gz' wget 'http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz' wget 'http://zlib.net/zlib-1.2.6.tar.gz' wget 'ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng-1.5.9.tar.gz' diff --git a/src/makefile.linux-mingw b/src/makefile.linux-mingw index 40ce1dcdca0..d728910b7f1 100644 --- a/src/makefile.linux-mingw +++ b/src/makefile.linux-mingw @@ -9,13 +9,13 @@ USE_UPNP:=0 INCLUDEPATHS= \ -I"$(DEPSDIR)/boost_1_47_0" \ -I"$(DEPSDIR)/db-4.8.30.NC/build_unix" \ - -I"$(DEPSDIR)/openssl-1.0.0e/include" \ + -I"$(DEPSDIR)/openssl-1.0.1b/include" \ -I"$(DEPSDIR)" LIBPATHS= \ -L"$(DEPSDIR)/boost_1_47_0/stage/lib" \ -L"$(DEPSDIR)/db-4.8.30.NC/build_unix" \ - -L"$(DEPSDIR)/openssl-1.0.0e" + -L"$(DEPSDIR)/openssl-1.0.1b" LIBS= \ -l boost_system-mt-s \ diff --git a/src/makefile.mingw b/src/makefile.mingw index f7dfcc74c15..7496e0a929c 100644 --- a/src/makefile.mingw +++ b/src/makefile.mingw @@ -7,12 +7,12 @@ USE_UPNP:=0 INCLUDEPATHS= \ -I"C:\boost-1.47.0-mgw" \ -I"C:\db-4.8.30.NC-mgw\build_unix" \ - -I"C:\openssl-1.0.0d-mgw\include" + -I"C:\openssl-1.0.1b-mgw\include" LIBPATHS= \ -L"C:\boost-1.47.0-mgw\stage\lib" \ -L"C:\db-4.8.30.NC-mgw\build_unix" \ - -L"C:\openssl-1.0.0d-mgw" + -L"C:\openssl-1.0.1b-mgw" LIBS= \ -l boost_system-mgw45-mt-s-1_47 \ From 3a70f3a4ec0cc3860b977597577fcf01cd5c13ae Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Fri, 27 Apr 2012 11:53:11 -0400 Subject: [PATCH 224/298] Bump win32.deps version number for new openssl --- contrib/gitian-descriptors/deps-win32.yml | 2 +- contrib/gitian-descriptors/gitian-win32.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/contrib/gitian-descriptors/deps-win32.yml b/contrib/gitian-descriptors/deps-win32.yml index 74fa1847b55..df1e3de3587 100644 --- a/contrib/gitian-descriptors/deps-win32.yml +++ b/contrib/gitian-descriptors/deps-win32.yml @@ -62,7 +62,7 @@ script: | make $MAKEOPTS cd .. # - zip -r $OUTDIR/bitcoin-deps-0.0.3.zip \ + zip -r $OUTDIR/bitcoin-deps-0.0.4.zip \ $(ls qrencode-*/{qrencode.h,.libs/libqrencode.{,l}a} | sort) \ $(ls db-*/build_unix/{libdb_cxx.a,db.h,db_cxx.h,libdb.a,.libs/libdb_cxx-?.?.a} | sort) \ $(find openssl-* -name '*.a' -o -name '*.h' | sort) \ diff --git a/contrib/gitian-descriptors/gitian-win32.yml b/contrib/gitian-descriptors/gitian-win32.yml index d2f4515b0b2..488cc95f648 100644 --- a/contrib/gitian-descriptors/gitian-win32.yml +++ b/contrib/gitian-descriptors/gitian-win32.yml @@ -17,7 +17,7 @@ remotes: files: - "qt-win32-4.7.4-gitian.zip" - "boost-win32-1.47.0-gitian.zip" -- "bitcoin-deps-0.0.3.zip" +- "bitcoin-deps-0.0.4.zip" script: | # mkdir $HOME/qt @@ -39,7 +39,7 @@ script: | mv include/boost . cd .. # - unzip bitcoin-deps-0.0.3.zip + unzip bitcoin-deps-0.0.4.zip # find -type f | xargs touch --date="$REFERENCE_DATETIME" # From 813dc92cdcdc575004d95627cdbdfb3cc87b87a5 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Wed, 11 Apr 2012 14:00:48 -0400 Subject: [PATCH 225/298] fix compiler error in bitcoinrpc RE: boost::system (Partial of 2232717cba9e9f06a01e8f37bcea4e79ee65205f) --- src/bitcoinrpc.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bitcoinrpc.cpp b/src/bitcoinrpc.cpp index 3e82cd3ab77..2f42fae1ee9 100644 --- a/src/bitcoinrpc.cpp +++ b/src/bitcoinrpc.cpp @@ -2224,7 +2224,7 @@ void ThreadRPCServer2(void* parg) acceptor.bind(endpoint); acceptor.listen(socket_base::max_connections); } - catch(system::system_error &e) + catch(boost::system::system_error &e) { HACK_SHUTDOWN = true; ThreadSafeMessageBox(strprintf(_("An error occured while setting up the RPC port %i for listening: %s"), endpoint.port(), e.what()), From 1fb6e2d9bf27bdce4e7220c667fc0bcd6feb9b4e Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Sun, 22 Apr 2012 17:32:08 +0200 Subject: [PATCH 226/298] change button tooltip on sign message page for copy to clipboard as it was missleading --- src/qt/forms/messagepage.ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qt/forms/messagepage.ui b/src/qt/forms/messagepage.ui index 8bd6d8b54bd..ae1e062fca4 100644 --- a/src/qt/forms/messagepage.ui +++ b/src/qt/forms/messagepage.ui @@ -128,7 +128,7 @@ - Copy the currently selected address to the system clipboard + Copy the current signature to the system clipboard &Copy to Clipboard From e6578e7fa7385dde7a0de9c2e87d8c0afa176314 Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Tue, 1 May 2012 01:56:47 +0200 Subject: [PATCH 227/298] remove unused typedef in serialize.h --- src/serialize.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/serialize.h b/src/serialize.h index 302766062ab..959a3a694ba 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -1244,8 +1244,6 @@ public: int nType; int nVersion; - typedef FILE element_type; - CAutoFile(FILE* filenew=NULL, int nTypeIn=SER_DISK, int nVersionIn=VERSION) { file = filenew; From 8edec3f9d6e91aa1a3f2cb9042d1137fce591142 Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Tue, 1 May 2012 18:45:10 +0200 Subject: [PATCH 228/298] fix DEPENDPATH in the project file, as json has no include sub-dir and src was in twice --- bitcoin-qt.pro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bitcoin-qt.pro b/bitcoin-qt.pro index 922f42ed766..56ecbfd984a 100644 --- a/bitcoin-qt.pro +++ b/bitcoin-qt.pro @@ -76,7 +76,7 @@ contains(BITCOIN_NEED_QT_PLUGINS, 1) { QMAKE_CXXFLAGS_WARN_ON = -fdiagnostics-show-option -Wall -Wno-strict-aliasing -Wno-invalid-offsetof -Wno-unused-variable -Wno-unused-parameter -Wno-sign-compare -Wno-char-subscripts -Wno-unused-value -Wno-sequence-point -Wno-parentheses -Wno-unknown-pragmas -Wno-switch # Input -DEPENDPATH += src/qt src src json/include +DEPENDPATH += src src/json src/qt HEADERS += src/qt/bitcoingui.h \ src/qt/transactiontablemodel.h \ src/qt/addresstablemodel.h \ From 48984829151d76fefb62029e500145d7e4f19a8d Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Tue, 1 May 2012 01:46:03 +0200 Subject: [PATCH 229/298] fix compiler warning "suggest parentheses around assignment used as truth value [-Wparentheses]" in util.cpp --- src/util.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/util.cpp b/src/util.cpp index a45d19156f1..766c3ab4477 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -236,7 +236,7 @@ inline int OutputDebugStringF(const char* pszFormat, ...) *pend = '\0'; char* p1 = pszBuffer; char* p2; - while (p2 = strchr(p1, '\n')) + while ((p2 = strchr(p1, '\n'))) { p2++; char c = *p2; From 6789e99e4f70b9e779598f1a31552a87b5bd9360 Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Tue, 1 May 2012 22:26:33 +0200 Subject: [PATCH 230/298] add bitcoin-qt.rc to OTHER_FILES (shown in Qt Creator) --- bitcoin-qt.pro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bitcoin-qt.pro b/bitcoin-qt.pro index 56ecbfd984a..8af8895db10 100644 --- a/bitcoin-qt.pro +++ b/bitcoin-qt.pro @@ -219,7 +219,7 @@ PRE_TARGETDEPS += compiler_TSQM_make_all # "Other files" to show in Qt Creator OTHER_FILES += \ - doc/*.rst doc/*.txt doc/README README.md + doc/*.rst doc/*.txt doc/README README.md res/bitcoin-qt.rc # platform specific defaults, if not overridden on command line isEmpty(BOOST_LIB_SUFFIX) { From cae1a682678e94015ff89be2c6fa6484c8ef6fbe Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Thu, 3 May 2012 11:30:52 +0200 Subject: [PATCH 231/298] remove obsolete BackupWallet() entry in wallet.h --- src/wallet.h | 1 - 1 file changed, 1 deletion(-) diff --git a/src/wallet.h b/src/wallet.h index e0f39b4170a..ea7b279268d 100644 --- a/src/wallet.h +++ b/src/wallet.h @@ -166,7 +166,6 @@ public: } int LoadWallet(bool& fFirstRunRet); -// bool BackupWallet(const std::string& strDest); bool SetAddressBookName(const CBitcoinAddress& address, const std::string& strName); From ad5a4c7c471912aa0bef52c33a1abfb01fe6d89d Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Sun, 29 Apr 2012 20:56:55 -0400 Subject: [PATCH 232/298] Check earlier for blocks with duplicate transactions. Fixes #1167 --- src/main.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main.cpp b/src/main.cpp index e6f94210b98..e8cbc01c7f0 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1472,6 +1472,16 @@ bool CBlock::CheckBlock() const if (!tx.CheckTransaction()) return error("CheckBlock() : CheckTransaction failed"); + // Check for duplicate txids. This is caught by ConnectInputs(), + // but catching it earlier avoids a potential DoS attack: + set uniqueTx; + BOOST_FOREACH(const CTransaction& tx, vtx) + { + uniqueTx.insert(tx.GetHash()); + } + if (uniqueTx.size() != vtx.size()) + return error("CheckBlock() : duplicate transaction"); + // Check that it's not full of nonstandard transactions if (GetSigOpCount() > MAX_BLOCK_SIGOPS) return error("CheckBlock() : out-of-bounds SigOpCount"); From 6a89317f621692e7d5c0c67b3a1440bf1b52b328 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Sun, 29 Apr 2012 20:56:55 -0400 Subject: [PATCH 233/298] Check earlier for blocks with duplicate transactions. Fixes #1167 --- src/main.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main.cpp b/src/main.cpp index d72a131a5f5..5f98d49530e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1492,6 +1492,16 @@ bool CBlock::CheckBlock() const if (!tx.CheckTransaction()) return DoS(tx.nDoS, error("CheckBlock() : CheckTransaction failed")); + // Check for duplicate txids. This is caught by ConnectInputs(), + // but catching it earlier avoids a potential DoS attack: + set uniqueTx; + BOOST_FOREACH(const CTransaction& tx, vtx) + { + uniqueTx.insert(tx.GetHash()); + } + if (uniqueTx.size() != vtx.size()) + return DoS(100, error("CheckBlock() : duplicate transaction")); + // Check that it's not full of nonstandard transactions if (GetSigOpCount() > MAX_BLOCK_SIGOPS) return DoS(100, error("CheckBlock() : out-of-bounds SigOpCount")); From c328c684c27b8a4e45c169cdcf4f003e7d9e976d Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Fri, 4 May 2012 19:54:24 +0000 Subject: [PATCH 234/298] Bugfix: Remove redundant duplicate transaction check --- src/main.cpp | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index ff4e2f0ded8..5f98d49530e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1502,16 +1502,6 @@ bool CBlock::CheckBlock() const if (uniqueTx.size() != vtx.size()) return DoS(100, error("CheckBlock() : duplicate transaction")); - // Check for duplicate txids. This is caught by ConnectInputs(), - // but catching it earlier avoids a potential DoS attack: - set uniqueTx; - BOOST_FOREACH(const CTransaction& tx, vtx) - { - uniqueTx.insert(tx.GetHash()); - } - if (uniqueTx.size() != vtx.size()) - return error("CheckBlock() : duplicate transaction"); - // Check that it's not full of nonstandard transactions if (GetSigOpCount() > MAX_BLOCK_SIGOPS) return DoS(100, error("CheckBlock() : out-of-bounds SigOpCount")); From 479c99022e0e65ac525b45d3a18599726c00cc03 Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Wed, 4 Apr 2012 09:07:55 +0200 Subject: [PATCH 235/298] remove HTML code around "Wallet" (displayed on overview page) and use Qt tags for font settings --- src/qt/forms/overviewpage.ui | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/qt/forms/overviewpage.ui b/src/qt/forms/overviewpage.ui index cc67fae5339..3cf7dd0ed34 100644 --- a/src/qt/forms/overviewpage.ui +++ b/src/qt/forms/overviewpage.ui @@ -78,12 +78,14 @@ + + + 11 + true + + - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> + Wallet From 607739befb6d4a647f03ed049b12222b1530f43c Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Sun, 6 May 2012 05:27:08 +0000 Subject: [PATCH 236/298] Bugfix: %-12I64d is not valid and causes the parameter to be skipped, use %12"PRI64d" instead Conflicts: src/walletdb.cpp --- src/db.cpp | 2 +- src/main.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/db.cpp b/src/db.cpp index bf335e7e3fd..4c0c557a5a8 100644 --- a/src/db.cpp +++ b/src/db.cpp @@ -867,7 +867,7 @@ int CWalletDB::LoadWallet(CWallet* pwallet) //// debug print //printf("LoadWallet %s\n", wtx.GetHash().ToString().c_str()); - //printf(" %12I64d %s %s %s\n", + //printf(" %12"PRI64d" %s %s %s\n", // wtx.vout[0].nValue, // DateTimeStrFormat("%x %H:%M:%S", wtx.GetBlockTime()).c_str(), // wtx.hashBlock.ToString().substr(0,20).c_str(), diff --git a/src/main.cpp b/src/main.cpp index e8cbc01c7f0..67d6638e0e5 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2971,7 +2971,7 @@ CBlock* CreateNewBlock(CReserveKey& reservekey) dPriority += (double)nValueIn * nConf; if (fDebug && GetBoolArg("-printpriority")) - printf("priority nValueIn=%-12I64d nConf=%-5d dPriority=%-20.1f\n", nValueIn, nConf, dPriority); + printf("priority nValueIn=%-12"PRI64d" nConf=%-5d dPriority=%-20.1f\n", nValueIn, nConf, dPriority); } // Priority is sum(valuein * age) / txsize From d41f22cb7675e8d45160511c3f45e51ba5dbbd00 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Sat, 5 May 2012 02:41:43 +0000 Subject: [PATCH 237/298] Bugfix: %-12I64d is not valid and causes the parameter to be skipped, use %12"PRI64d" instead --- src/main.cpp | 2 +- src/walletdb.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 427e435a908..c1c57d1d2b4 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -3188,7 +3188,7 @@ CBlock* CreateNewBlock(CReserveKey& reservekey) dPriority += (double)nValueIn * nConf; if (fDebug && GetBoolArg("-printpriority")) - printf("priority nValueIn=%-12I64d nConf=%-5d dPriority=%-20.1f\n", nValueIn, nConf, dPriority); + printf("priority nValueIn=%-12"PRI64d" nConf=%-5d dPriority=%-20.1f\n", nValueIn, nConf, dPriority); } // Priority is sum(valuein * age) / txsize diff --git a/src/walletdb.cpp b/src/walletdb.cpp index 709ecac1848..e5d57288e8a 100644 --- a/src/walletdb.cpp +++ b/src/walletdb.cpp @@ -189,7 +189,7 @@ int CWalletDB::LoadWallet(CWallet* pwallet) //// debug print //printf("LoadWallet %s\n", wtx.GetHash().ToString().c_str()); - //printf(" %12I64d %s %s %s\n", + //printf(" %12"PRI64d" %s %s %s\n", // wtx.vout[0].nValue, // DateTimeStrFormat("%x %H:%M:%S", wtx.GetBlockTime()).c_str(), // wtx.hashBlock.ToString().substr(0,20).c_str(), From b94e6eb5a510315c4713ffc8bcfbfceb674691dc Mon Sep 17 00:00:00 2001 From: Peter Todd Date: Sat, 28 Apr 2012 16:29:27 -0400 Subject: [PATCH 238/298] Fixed non-sensical error message Previously trying to create a multisig address that required less than one signature would output something like the following: "wrong number of keys(got 1, need at least 0)" --- src/bitcoinrpc.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/bitcoinrpc.cpp b/src/bitcoinrpc.cpp index 6525c151944..4426ac502ee 100644 --- a/src/bitcoinrpc.cpp +++ b/src/bitcoinrpc.cpp @@ -1002,10 +1002,12 @@ Value addmultisigaddress(const Array& params, bool fHelp) strAccount = AccountFromValue(params[2]); // Gather public keys - if (nRequired < 1 || keys.size() < nRequired) + if (nRequired < 1) + throw runtime_error("a multisignature address must require at least one key to redeem"); + if (keys.size() < nRequired) throw runtime_error( - strprintf("wrong number of keys" - "(got %d, need at least %d)", keys.size(), nRequired)); + strprintf("not enough keys supplied " + "(got %d keys, but need at least %d to redeem)", keys.size(), nRequired)); std::vector pubkeys; pubkeys.resize(keys.size()); for (unsigned int i = 0; i < keys.size(); i++) From e2b9bf9e6e846d2b182baf889f556e624c02e7a8 Mon Sep 17 00:00:00 2001 From: Peter Todd Date: Sat, 28 Apr 2012 16:29:27 -0400 Subject: [PATCH 239/298] Fixed non-sensical error message Previously trying to create a multisig address that required less than one signature would output something like the following: "wrong number of keys(got 1, need at least 0)" --- src/bitcoinrpc.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/bitcoinrpc.cpp b/src/bitcoinrpc.cpp index 15bcf1da3d2..0b851c4e701 100644 --- a/src/bitcoinrpc.cpp +++ b/src/bitcoinrpc.cpp @@ -999,10 +999,12 @@ Value addmultisigaddress(const Array& params, bool fHelp) strAccount = AccountFromValue(params[2]); // Gather public keys - if ((nRequired < 1) || ((int)keys.size() < nRequired)) + if (nRequired < 1) + throw runtime_error("a multisignature address must require at least one key to redeem"); + if ((int)keys.size() < nRequired) throw runtime_error( - strprintf("wrong number of keys" - "(got %d, need at least %d)", keys.size(), nRequired)); + strprintf("not enough keys supplied " + "(got %d keys, but need at least %d to redeem)", keys.size(), nRequired)); std::vector pubkeys; pubkeys.resize(keys.size()); for (unsigned int i = 0; i < keys.size(); i++) From adecb2ea00c8e8944a8c9bc5bc10e84ed1a568c0 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Sat, 5 May 2012 21:22:55 +0200 Subject: [PATCH 240/298] Fix addrman crashes A function returned the element to remove from a bucket, instead of its position in that bucket. This function was only called when a tried bucket overflowed, which only happens after many outgoing connections have been made. Closes: #1065, #1156 --- src/addrman.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/addrman.cpp b/src/addrman.cpp index 11dd2a7b7df..9edbcc3a5f4 100644 --- a/src/addrman.cpp +++ b/src/addrman.cpp @@ -124,17 +124,20 @@ int CAddrMan::SelectTried(int nKBucket) // random shuffle the first few elements (using the entire list) // find the least recently tried among them int64 nOldest = -1; + int nOldestPos = -1; for (unsigned int i = 0; i < ADDRMAN_TRIED_ENTRIES_INSPECT_ON_EVICT && i < vTried.size(); i++) { int nPos = GetRandInt(vTried.size() - i) + i; int nTemp = vTried[nPos]; vTried[nPos] = vTried[i]; vTried[i] = nTemp; - if (nOldest == -1 || mapInfo[nTemp].nLastSuccess < mapInfo[nOldest].nLastSuccess) + if (nOldest == -1 || mapInfo[nTemp].nLastSuccess < mapInfo[nOldest].nLastSuccess) { nOldest = nTemp; + nOldestPos = nPos; + } } - return nOldest; + return nOldestPos; } int CAddrMan::ShrinkNew(int nUBucket) From 700e5a4d86d5180e6bb905c25a9e05695617f445 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Sat, 5 May 2012 21:27:52 +0200 Subject: [PATCH 241/298] Bugfix: store source address in addrman --- src/addrman.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/addrman.h b/src/addrman.h index 91e1f87f052..5f1d7b2af9c 100644 --- a/src/addrman.h +++ b/src/addrman.h @@ -62,7 +62,7 @@ public: nRandomPos = -1; } - CAddrInfo(const CAddress &addrIn, const CNetAddr &addrSource) : CAddress(addrIn) + CAddrInfo(const CAddress &addrIn, const CNetAddr &addrSource) : CAddress(addrIn), source(addrSource) { Init(); } From e38d492822a82fc9f1324f9e08c6ff0627321511 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Sun, 6 May 2012 08:14:19 +0200 Subject: [PATCH 242/298] Hide UI immediately after leaving the main loop. Prevents it from seeming to hang during shutdown if shutdown is triggered while the window is open. --- src/qt/bitcoin.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index b7c8a45d725..3157eadef85 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -205,6 +205,7 @@ int main(int argc, char *argv[]) app.exec(); + window.hide(); guiref = 0; } Shutdown(NULL); From 486f7c8f65898ec5314bc75491eebabefdf3ca84 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Sun, 6 May 2012 08:14:19 +0200 Subject: [PATCH 243/298] Hide UI immediately after leaving the main loop. Prevents it from seeming to hang during shutdown if shutdown is triggered while the window is open. --- src/qt/bitcoin.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index 7c262e14cdf..97a8f916c39 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -281,6 +281,7 @@ int main(int argc, char *argv[]) #endif app.exec(); + window.hide(); window.setClientModel(0); window.setWalletModel(0); guiref = 0; From 293f2644ffd98742caa30b16405b95a6420e8ba0 Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Thu, 3 May 2012 14:52:15 +0200 Subject: [PATCH 244/298] fix #952 by checking if we have a new address or an updated label --- src/qt/walletmodel.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/qt/walletmodel.cpp b/src/qt/walletmodel.cpp index f028f10f6c6..710d3aa0adf 100644 --- a/src/qt/walletmodel.cpp +++ b/src/qt/walletmodel.cpp @@ -152,14 +152,20 @@ WalletModel::SendCoinsReturn WalletModel::sendCoins(const QListcs_wallet) { - if (!wallet->mapAddressBook.count(strAddress)) - wallet->SetAddressBookName(strAddress, rcp.label.toStdString()); + std::map::iterator mi = wallet->mapAddressBook.find(strAddress); + + // Check if we have a new address or an updated label + if (mi == wallet->mapAddressBook.end() || mi->second != strLabel) + { + wallet->SetAddressBookName(strAddress, strLabel); + } } } From 5cbe24202a6ba0b7780fcaa3a4530d46612f02da Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Thu, 3 May 2012 14:52:15 +0200 Subject: [PATCH 245/298] fix #952 by checking if we have a new address or an updated label --- src/qt/walletmodel.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/qt/walletmodel.cpp b/src/qt/walletmodel.cpp index a915274da3c..b9ccb06c09e 100644 --- a/src/qt/walletmodel.cpp +++ b/src/qt/walletmodel.cpp @@ -150,14 +150,21 @@ WalletModel::SendCoinsReturn WalletModel::sendCoins(const QListcs_wallet); - if (!wallet->mapAddressBook.count(strAddress)) - wallet->SetAddressBookName(strAddress, rcp.label.toStdString()); + + std::map::iterator mi = wallet->mapAddressBook.find(strAddress); + + // Check if we have a new address or an updated label + if (mi == wallet->mapAddressBook.end() || mi->second != strLabel) + { + wallet->SetAddressBookName(strAddress, strLabel); + } } } From eb3f661add15837434c286476a32e05f279a1919 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Sun, 18 Mar 2012 23:47:26 +0100 Subject: [PATCH 246/298] Prevent stuck block download in large reorganisations In cases of very large reorganisations (hundreds of blocks), a situation may appear where an 'inv' is sent as response to a 'getblocks', but the last block mentioned in the inv is already known to the receiver node. However, the supplying node uses a request for this last block as a trigger to send the rest of the inv blocks. If it never comes, the block chain download is stuck. This commit makes the receiver node always request the last inv'ed block, even if it is already known, to prevent this problem. --- src/main.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 67d6638e0e5..167e2821c0a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2178,8 +2178,10 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv) return error("message inv size() = %d", vInv.size()); CTxDB txdb("r"); - BOOST_FOREACH(const CInv& inv, vInv) + for (int nInv = 0; nInv < vInv.size(); nInv++) { + const CInv &inv = vInv[nInv]; + if (fShutdown) return true; pfrom->AddInventoryKnown(inv); @@ -2188,9 +2190,12 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv) if (fDebug) printf(" got inventory: %s %s\n", inv.ToString().c_str(), fAlreadyHave ? "have" : "new"); - if (!fAlreadyHave) + // Always request the last block in an inv bundle (even if we already have it), as it is the + // trigger for the other side to send further invs. If we are stuck on a (very long) side chain, + // this is necessary to connect earlier received orphan blocks to the chain again. + if (!fAlreadyHave || (inv.type == MSG_BLOCK && nInv==vInv.size()-1)) pfrom->AskFor(inv); - else if (inv.type == MSG_BLOCK && mapOrphanBlocks.count(inv.hash)) + if (inv.type == MSG_BLOCK && mapOrphanBlocks.count(inv.hash)) pfrom->PushGetBlocks(pindexBest, GetOrphanRoot(mapOrphanBlocks[inv.hash])); // Track requests for our stuff From 2403bb79bc232ea3f9a78448d0fb4ffcf385d209 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Sat, 5 May 2012 04:04:38 +0200 Subject: [PATCH 247/298] Prevent stuck download: correct solution Pull request #948 introduced a fix for nodes stuck on a long side branch of the main chain. The fix was non-functional however, as the additional getdata request was created in a first step of processing, but dropped in a second step as it was considered redundant. This commits fixes it by sending the request directly. --- src/main.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 167e2821c0a..a2fc7387fba 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2177,6 +2177,12 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv) if (vInv.size() > 50000) return error("message inv size() = %d", vInv.size()); + // find last block in inv vector + unsigned int nLastBlock = (unsigned int)(-1); + for (unsigned int nInv = 0; nInv < vInv.size(); nInv++) { + if (vInv[vInv.size() - 1 - nInv].type == MSG_BLOCK) + nLastBlock = vInv.size() - 1 - nInv; + } CTxDB txdb("r"); for (int nInv = 0; nInv < vInv.size(); nInv++) { @@ -2193,9 +2199,15 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv) // Always request the last block in an inv bundle (even if we already have it), as it is the // trigger for the other side to send further invs. If we are stuck on a (very long) side chain, // this is necessary to connect earlier received orphan blocks to the chain again. - if (!fAlreadyHave || (inv.type == MSG_BLOCK && nInv==vInv.size()-1)) + if (fAlreadyHave && nInv == nLastBlock) { + // bypass mapAskFor, and send request directly; it must go through. + std::vector vGetData(1,inv); + pfrom->PushMessage("getdata", vGetData); + } + + if (!fAlreadyHave) pfrom->AskFor(inv); - if (inv.type == MSG_BLOCK && mapOrphanBlocks.count(inv.hash)) + else if (inv.type == MSG_BLOCK && mapOrphanBlocks.count(inv.hash)) pfrom->PushGetBlocks(pindexBest, GetOrphanRoot(mapOrphanBlocks[inv.hash])); // Track requests for our stuff From 60953d05c8cc6eefb0c03d1d39209bdaf54725eb Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Sat, 5 May 2012 04:04:38 +0200 Subject: [PATCH 248/298] Prevent stuck download: correct solution Pull request #948 introduced a fix for nodes stuck on a long side branch of the main chain. The fix was non-functional however, as the additional getdata request was created in a first step of processing, but dropped in a second step as it was considered redundant. This commits fixes it by sending the request directly. --- src/main.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 9b93c85caff..7e4ed1100c4 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2391,6 +2391,12 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv) return error("message inv size() = %d", vInv.size()); } + // find last block in inv vector + unsigned int nLastBlock = (unsigned int)(-1); + for (unsigned int nInv = 0; nInv < vInv.size(); nInv++) { + if (vInv[vInv.size() - 1 - nInv].type == MSG_BLOCK) + nLastBlock = vInv.size() - 1 - nInv; + } CTxDB txdb("r"); for (unsigned int nInv = 0; nInv < vInv.size(); nInv++) { @@ -2407,9 +2413,15 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv) // Always request the last block in an inv bundle (even if we already have it), as it is the // trigger for the other side to send further invs. If we are stuck on a (very long) side chain, // this is necessary to connect earlier received orphan blocks to the chain again. - if (!fAlreadyHave || (inv.type == MSG_BLOCK && nInv==vInv.size()-1)) + if (fAlreadyHave && nInv == nLastBlock) { + // bypass mapAskFor, and send request directly; it must go through. + std::vector vGetData(1,inv); + pfrom->PushMessage("getdata", vGetData); + } + + if (!fAlreadyHave) pfrom->AskFor(inv); - if (inv.type == MSG_BLOCK && mapOrphanBlocks.count(inv.hash)) + else if (inv.type == MSG_BLOCK && mapOrphanBlocks.count(inv.hash)) pfrom->PushGetBlocks(pindexBest, GetOrphanRoot(mapOrphanBlocks[inv.hash])); // Track requests for our stuff From b803009c84b1e7ca16cc5a2105269bc3518970a0 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Mon, 7 May 2012 03:57:39 +0000 Subject: [PATCH 249/298] Update/fix translations --- src/qt/locale/bitcoin_da.ts | 1120 ++++++++------------------- src/qt/locale/bitcoin_de.ts | 1301 ++++++++++---------------------- src/qt/locale/bitcoin_en.ts | 1080 +++++++------------------- src/qt/locale/bitcoin_es.ts | 1118 ++++++++------------------- src/qt/locale/bitcoin_es_CL.ts | 1126 ++++++++------------------- src/qt/locale/bitcoin_hu.ts | 1109 +++++++-------------------- src/qt/locale/bitcoin_it.ts | 1133 ++++++++------------------- src/qt/locale/bitcoin_nb.ts | 1124 ++++++++------------------- src/qt/locale/bitcoin_nl.ts | 1228 +++++++++--------------------- src/qt/locale/bitcoin_pt_BR.ts | 1096 +++++++-------------------- src/qt/locale/bitcoin_ru.ts | 1149 ++++++++-------------------- src/qt/locale/bitcoin_uk.ts | 1130 ++++++++------------------- src/qt/locale/bitcoin_zh_CN.ts | 1119 ++++++++------------------- src/qt/locale/bitcoin_zh_TW.ts | 1119 ++++++++------------------- 14 files changed, 4291 insertions(+), 11661 deletions(-) diff --git a/src/qt/locale/bitcoin_da.ts b/src/qt/locale/bitcoin_da.ts index 7e5e6836476..81e864e30b7 100644 --- a/src/qt/locale/bitcoin_da.ts +++ b/src/qt/locale/bitcoin_da.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -14,14 +16,14 @@ - Copyright © 2009-2011 Bitcoin Developers + Copyright © 2009-2012 Bitcoin Developers This is experimental software. Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - Copyright © 2009-2011 Bitcoin Developers + Copyright © 2009-2012 Bitcoin Developers Dette program er ekperimentielt. @@ -78,22 +80,22 @@ Produktet indeholder software som er udviklet af OpenSSL Project til brug i Open &Slet - + Export Address Book Data Eksporter Adressekartoteketsdata - + Comma separated file (*.csv) Kommasepareret fil (*. csv) - + Error exporting Fejl under eksport - + Could not write to file %1. Kunne ikke skrive til filen %1. @@ -101,17 +103,17 @@ Produktet indeholder software som er udviklet af OpenSSL Project til brug i Open AddressTableModel - + Label Etiket - + Address Adresse - + (no label) (ingen etiket) @@ -125,125 +127,132 @@ Produktet indeholder software som er udviklet af OpenSSL Project til brug i Open + TextLabel TekstEtiket - + Enter passphrase Indtast adgangskode - + New passphrase Ny adgangskode - + Repeat new passphrase Gentag ny adgangskode - + Enter the new passphrase to the wallet.<br/>Please use a passphrase of <b>10 or more random characters</b>, or <b>eight or more words</b>. Indtast den nye adgangskode til tegnebogen.<br/>Brug venligst en adgangskode på <b>10 eller flere tilfældige tegn</b>, eller <b>otte eller flere ord</b>. - + Encrypt wallet Krypter tegnebog - + This operation needs your wallet passphrase to unlock the wallet. Denne funktion har brug for din tegnebogs kodeord for at låse tegnebogen op. - + Unlock wallet Lås tegnebog op - + This operation needs your wallet passphrase to decrypt the wallet. Denne funktion har brug for din tegnebogs kodeord for at dekryptere tegnebogen. - + Decrypt wallet Dekryptér tegnebog - + Change passphrase Skift adgangskode - + Enter the old and new passphrase to the wallet. Indtast den gamle og nye adgangskode til tegnebogen. - + Confirm wallet encryption Bekræft tegnebogskryptering - + WARNING: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! Are you sure you wish to encrypt your wallet? ADVARSEL: Hvis du krypterer din tegnebog og mister dit kodeord vil du <b>miste alle dine BITCOINS</b>! Er du sikker på at du ønsker at kryptere din tegnebog? - - + + Wallet encrypted Tegnebog krypteret - - Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - Husk, at kryptere din tegnebog vil ikke fuldt ud beskytte dine bitcoins mod at blive stjålet af malware på din computer. + + + Warning: The Caps Lock key is on. + - - - - + + + + Wallet encryption failed Tegnebogskryptering mislykkedes - + Wallet encryption failed due to an internal error. Your wallet was not encrypted. Tegnebogskryptering mislykkedes på grund af en intern fejl. Din tegnebog blev ikke krypteret. - - + + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. + Bitcoin will close now to finish the encryption process. Husk, at kryptere din tegnebog vil ikke fuldt ud beskytte dine bitcoins mod at blive stjålet af malware på din computer. + + + + The supplied passphrases do not match. De angivne kodeord stemmer ikke overens. - + Wallet unlock failed Tegnebogsoplåsning mislykkedes - - + + The passphrase entered for the wallet decryption was incorrect. Det angivne kodeord for tegnebogsdekrypteringen er forkert. - + Wallet decryption failed Tegnebogsdekryptering mislykkedes - + Wallet passphrase was succesfully changed. Tegnebogskodeord blev ændret. @@ -251,247 +260,273 @@ Er du sikker på at du ønsker at kryptere din tegnebog? BitcoinGUI - + Bitcoin Wallet Bitcoin Tegnebog - + + Synchronizing with network... Synkroniserer med netværk ... - + Block chain synchronization in progress Blokkæde synkronisering i gang - + &Overview &Oversigt - + Show general overview of wallet Vis generel oversigt over tegnebog - + &Transactions &Transaktioner - + Browse transaction history Gennemse transaktionshistorik - + &Address Book &Adressebog - + Edit the list of stored addresses and labels Rediger listen over gemte adresser og etiketter - + &Receive coins &Modtag coins - + Show the list of addresses for receiving payments Vis listen over adresser for at modtage betalinger - + &Send coins &Send coins - + Send coins to a bitcoin address Send coins til en bitcoinadresse - + E&xit &Luk - + Quit application Afslut program - + &About %1 &Om %1 - + Show information about Bitcoin Vis oplysninger om Bitcoin - + &Options... &Indstillinger ... - + Modify configuration options for bitcoin Rediger konfigurationsindstillinger af bitcoin - + Open &Bitcoin Åbn &Bitcoin - + Show the Bitcoin window Vis Bitcoinvinduet - + &Export... &Eksporter... - + Export the current view to a file Eksportér den aktuelle visning til en fil - + &Encrypt Wallet &Kryptér tegnebog - + Encrypt or decrypt wallet Kryptér eller dekryptér tegnebog - + &Change Passphrase &Skift adgangskode - + Change the passphrase used for wallet encryption Skift kodeord anvendt til tegnebogskryptering - + + About &Qt + Om &Qt + + + + Show information about Qt + Vis oplysninger om Qt + + + &File &Fil - + &Settings &Indstillinger - + &Help &Hjælp - + Tabs toolbar Faneværktøjslinje - + Actions toolbar Handlingsværktøjslinje - + [testnet] [testnet] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - %n aktiv(e) forbindelse(r) til Bitcoinnetværket%n aktiv(e) forbindelse(r) til Bitcoinnetværket + + %n aktiv(e) forbindelse(r) til Bitcoinnetværket + %n aktiv(e) forbindelse(r) til Bitcoinnetværket + - + Downloaded %1 of %2 blocks of transaction history. Downloadet %1 af %2 blokke af transaktionshistorie. - + Downloaded %1 blocks of transaction history. Downloadet %1 blokke af transaktionshistorie. - + %n second(s) ago - %n sekund(er) siden%n sekund(er) siden + + %n sekund(er) siden + %n sekund(er) siden + - + %n minute(s) ago - %n minut(ter) siden%n minut(ter) siden + + %n minut(ter) siden + %n minut(ter) siden + - + %n hour(s) ago - %n time(r) siden%n time(r) siden + + %n time(r) siden + %n time(r) siden + - + %n day(s) ago - %n dag(e) siden%n dag(e) siden + + %n dag(e) siden + %n dag(e) siden + - + Up to date Opdateret - + Catching up... Indhenter... - + Last received block was generated %1. Sidst modtagne blok blev genereret %1. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? Denne transaktion er over størrelsesbegrænsningen. Du kan stadig sende den for et gebyr på %1 som går til de noder der behandler din transaktion, og som hjælper med at støtte netværket. Ønsker du at betale gebyret? - + Sending... Sender... - + Sent transaction Afsendt transaktion - + Incoming transaction Indgående transaktion - + Date: %1 Amount: %2 Type: %3 @@ -504,15 +539,20 @@ Adresse: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> Tegnebog er <b>krypteret</b> og i øjeblikket <b>ulåst</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> Tegnebog er <b>krypteret</b> og i øjeblikket <b>låst</b> + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + + DisplayOptionsPage @@ -528,8 +568,13 @@ Adresse: %4 - Display addresses in transaction list - Vis adresser i transaktionensliste + &Display addresses in transaction list + &Vis adresser i transaktionensliste + + + + Whether to show Bitcoin addresses in the transaction list + @@ -580,22 +625,22 @@ Adresse: %4 Rediger afsendelsesadresse - + The entered address "%1" is already in the address book. Den indtastede adresse "%1" er allerede i adressebogen. - + The entered address "%1" is not a valid bitcoin address. Den indtastede adresse "%1" er ikke en gyldig bitcoinadresse. - + Could not unlock wallet. Kunne ikke låse tegnebog op. - + New key generation failed. Ny nøglegenerering mislykkedes. @@ -674,8 +719,8 @@ Adresse: %4 - Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. - Valgfri transaktionsgebyr pr. kB, der hjælper dine transaktioner med at blive behandlet hurtigt. De fleste transaktioner er på 1kB. Gebyr på 0.01 anbefales. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. + Valgfri transaktionsgebyr pr. kB, der hjælper dine transaktioner med at blive behandlet hurtigt. De fleste transaktioner er på 1 kB. Gebyr på 0.01 anbefales. @@ -684,8 +729,8 @@ Adresse: %4 - Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. - Valgfri transaktionsgebyr pr. kB, der hjælper dine transaktioner med at blive behandlet hurtigt. De fleste transaktioner er på 1kB. Gebyr på 0.01 anbefales. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. + Valgfri transaktionsgebyr pr. kB, der hjælper dine transaktioner med at blive behandlet hurtigt. De fleste transaktioner er på 1 kB. Gebyr på 0.01 anbefales. @@ -744,20 +789,12 @@ Adresse: %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> + + Wallet + - + <b>Recent transactions</b> <b>Nyeste transaktioner</b> @@ -781,13 +818,13 @@ p, li { white-space: pre-wrap; } SendCoinsDialog - - - - - - - + + + + + + + Send Coins Send Coins @@ -802,82 +839,87 @@ p, li { white-space: pre-wrap; } &Tilføj modtager... - + Clear all Ryd alle - + + Remove all transaction fields + + + + Balance: Saldo: - + 123.456 BTC 123.456 BTC - + Confirm the send action Bekræft afsendelsen - + &Send &Afsend - + <b>%1</b> to %2 (%3) <b>%1</b> til %2 (%3) - + Confirm send coins Bekræft afsendelse af coins - + Are you sure you want to send %1? Er du sikker på at du vil sende %1? - + and og - + The recepient address is not valid, please recheck. Modtagerens adresse er ikke gyldig. Tjek venligst adressen igen. - + The amount to pay must be larger than 0. Beløbet til betaling skal være større end 0. - + Amount exceeds your balance Beløbet overstiger din saldo - + Total exceeds your balance when the %1 transaction fee is included Totalen overstiger din saldo når %1 transaktionsgebyr er inkluderet - + Duplicate address found, can only send to each address once in one send operation Duplikeret adresse fundet. Du kan kun sende til hver adresse en gang pr. afsendelse. - + Error: Transaction creation failed Fejl: Oprettelse af transaktionen mislykkedes - + Error: The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. Fejl: Transaktionen blev afvist. Dette kan ske hvis nogle af dine coins i din tegnebog allerede var brugt, som hvis du brugte en kopi af wallet.dat og dine coins er blevet brugt i kopien, men ikke er markeret som brugt her. @@ -1098,54 +1140,60 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date Dato - + Type Type - + Address Adresse - + Amount Beløb - + Open for %n block(s) - Åben for %n blok(ke)Åben for %n blok(ke) + + Åben for %n blok(ke) + Åben for %n blok(ke) + - + Open until %1 Åben indtil %1 - + Offline (%1 confirmations) Offline (%1 bekræftelser) - + Unconfirmed (%1 of %2 confirmations) Ubekræftet (%1 af %2 bekræftelser) - + Confirmed (%1 confirmations) Bekræftet (%1 bekræftelser) Mined balance will be available in %n more blocks - Minerede balance vil være tilgængelig om %n blok(ke)Minerede balance vil være tilgængelig om %n blok(ke) + + Minerede balance vil være tilgængelig om %n blok(ke) + Minerede balance vil være tilgængelig om %n blok(ke) + @@ -1164,56 +1212,51 @@ p, li { white-space: pre-wrap; } - Received from IP - Modtaget fra IP + Received from + Modtaget fra - + Sent to Sendt til - - Sent to IP - Sendt til IP - - - + Payment to yourself Betaling til dig selv - + Mined Minerede - + (n/a) (n/a) - + Transaction status. Hover over this field to show number of confirmations. Transactionsstatus. Hold musen over dette felt for at vise antallet af bekræftelser. - + Date and time that the transaction was received. Dato og tid for at transaktionen blev modtaget. - + Type of transaction. Type af transaktion. - + Destination address of transaction. Destinationsadresse for transaktion. - + Amount removed from or added to balance. Beløb fjernet eller tilføjet balance. @@ -1312,67 +1355,67 @@ p, li { white-space: pre-wrap; } Vis detaljer... - + Export Transaction Data Eksportér Transaktionsdata - + Comma separated file (*.csv) Kommasepareret fil (*.csv) - + Confirmed Bekræftet - + Date Dato - + Type Type - + Label Etiket - + Address Adresse - + Amount Beløb - + ID ID - + Error exporting Fejl under eksport - + Could not write to file %1. Kunne ikke skrive til filen %1. - + Range: Interval: - + to til @@ -1388,218 +1431,218 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version Bitcoinversion - + Usage: Anvendelse: - + Send command to -server or bitcoind Send kommando til -server eller bitcoind - + List commands Liste over kommandoer - + Get help for a command Få hjælp til en kommando - + Options: Indstillinger: - + Specify configuration file (default: bitcoin.conf) Angiv konfigurationsfil (standard: bitcoin.conf) - + Specify pid file (default: bitcoind.pid) Angiv pid-fil (default: bitcoind.pid) - + Generate coins Generér coins - - Don't generate coins + + Don't generate coins Generér ikke coins - + Start minimized Start minimeret - + Specify data directory Angiv databibliotek - + Specify connection timeout (in milliseconds) Angiv tilslutningstimeout (i millisekunder) - + Connect through socks4 proxy Tilslut via SOCKS4 proxy - + Allow DNS lookups for addnode and connect Tillad DNS-opslag for addnode og connect - + Add a node to connect to Tilføj en node til at forbinde til - + Connect only to the specified node Tilslut kun til den angivne node - - Don't accept connections from outside + + Don't accept connections from outside Acceptér ikke forbindelser udefra - - Don't attempt to use UPnP to map the listening port + + Don't attempt to use UPnP to map the listening port Forsøg ikke at bruge UPnP til at konfigurere den lyttende port - + Attempt to use UPnP to map the listening port Forsøg at bruge UPnP til at kofnigurere den lyttende port - + Fee per kB to add to transactions you send Gebyr pr. kB, som skal tilføjes til transaktioner du sender - + Accept command line and JSON-RPC commands Accepter kommandolinje- og JSON-RPC-kommandoer - + Run in the background as a daemon and accept commands Kør i baggrunden som en service, og acceptér kommandoer - + Use the test network Brug test-netværket - + Username for JSON-RPC connections Brugernavn til JSON-RPC-forbindelser - + Password for JSON-RPC connections Password til JSON-RPC-forbindelser - + Listen for JSON-RPC connections on <port> (default: 8332) Lyt til JSON-RPC-forbindelser på <port> (standard: 8332) - + Allow JSON-RPC connections from specified IP address Tillad JSON-RPC-forbindelser fra bestemt IP-adresse - + Send commands to node running on <ip> (default: 127.0.0.1) Send kommandoer til node, der kører på <ip> (standard: 127.0.0.1) - + Set key pool size to <n> (default: 100) Sæt nøglepoolstørrelse til <n> (standard: 100) - + Rescan the block chain for missing wallet transactions Gennemsøg blokkæden for manglende tegnebogstransaktioner - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -1607,721 +1650,154 @@ SSL options: (see the Bitcoin Wiki for SSL setup instructions) SSL-indstillinger: (se Bitcoin Wiki for SSL opsætningsinstruktioner) - + Use OpenSSL (https) for JSON-RPC connections Brug OpenSSL (https) for JSON-RPC-forbindelser - + Server certificate file (default: server.cert) Servercertifikat-fil (standard: server.cert) - + Server private key (default: server.pem) Server private nøgle (standard: server.pem) - + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) Acceptabele ciphers (standard: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - + This help message Denne hjælpebesked - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. Kan låse data-biblioteket %s. Bitcoin kører sikkert allerede. - + Loading addresses... Indlæser adresser... - + Error loading addr.dat Fejl ved indlæsning af addr.dat - + Loading block index... Indlæser blok-indeks... - + Error loading blkindex.dat Fejl ved indlæsning af blkindex.dat - + Loading wallet... Indlæser tegnebog... - + Error loading wallet.dat: Wallet corrupted Fejl ved indlæsning af wallet.dat: Tegnebog ødelagt - + Error loading wallet.dat: Wallet requires newer version of Bitcoin Fejl ved indlæsning af wallet.dat: Tegnebog kræver en nyere version af Bitcoin - + Error loading wallet.dat Fejl ved indlæsning af wallet.dat - + Rescanning... Genindlæser... - + + Threshold for disconnecting misbehaving peers (default: 100) + + + + + + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) + + + + + Done loading Indlæsning gennemført - + Invalid -proxy address Ugyldig -proxy adresse - + Invalid amount for -paytxfee=<amount> Ugyldigt beløb for -paytxfee=<amount> - + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. Advarsel:-paytxfee er sat meget højt. Dette er det gebyr du vil betale, hvis du sender en transaktion. - + Error: CreateThread(StartNode) failed Fejl: CreateThread(StartNode) mislykkedes - + Warning: Disk space is low Advarsel: Diskplads er lav - + Unable to bind to port %d on this computer. Bitcoin is probably already running. Kunne ikke binde sig til port %d på denne computer. Bitcoin kører sikkert allerede. - - - This transaction is over the size limit. You can still send it for a fee of %s, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? - Denne transaktion er over størrelsesbegrænsningen. Du kan stadig sende den for et gebyr på %s som går til de noder der behandler din transaktion, og som hjælper med at støtte netværket. Ønsker du at betale gebyret? - - - - Enter the current passphrase to the wallet. - Indtast den nuværende adgangskode til tegnebogen. - - - - Passphrase - Adgangskode - - - - Please supply the current wallet decryption passphrase. - Angiv venligst det nuværende kodeord til dekryptering af tegnebog. - - - - The passphrase entered for the wallet decryption was incorrect. - Det angivne kodeord for tegnebogsdekrypteringen er forkert. - - - - Status - Status - - Date - Dato - - - - Description - Beskrivelse - - - - Debit - Debet - - - - Credit - Kredit - - - - Open for %d blocks - Åben for %d blokke - - - - Open until %s - Åben indtil %s - - - - %d/offline? - %d/offline? - - - - %d/unconfirmed - %d/ubekræftet - - - - %d confirmations - %d bekræftelser - - - - Generated - Genereret - - - - Generated (%s matures in %d more blocks) - Genereret (%s modnes om %d blokke) - - - - Generated - Warning: This block was not received by any other nodes and will probably not be accepted! - Genereret - Advarsel: Denne blok blev ikke modtaget af nogen andre noder, og vil formentlig ikke blive accepteret! - - - - Generated (not accepted) - Genereret (ikke accepteret) - - - - From: - Fra: - - - - Received with: - Modtaget med: - - - - Payment to yourself - Betaling til dig selv - - - - To: - Til: - - - - Generating - Generering - - - - (not connected) - (ikke tilsluttet) - - - - %d connections %d blocks %d transactions - %d forbindelser %d blokke %d transaktioner - - - - Wallet already encrypted. - Tegnebog er allerede krypteret. - - - - Enter the new passphrase to the wallet. -Please use a passphrase of 10 or more random characters, or eight or more words. - Indtast den nye adgangskode til tegnebogen. -Brug venligst en adgangskode på 10 eller flere tilfældige tegn, eller otte eller flere ord. - - - - Error: The supplied passphrase was too short. - Fejl: Den angivne kodeord var for kort. - - - - WARNING: If you encrypt your wallet and lose your passphrase, you will LOSE ALL OF YOUR BITCOINS! -Are you sure you wish to encrypt your wallet? - ADVARSEL: Hvis du krypterer din tegnebog og mister dit kodeord, vil du miste alle dine BITCOINS! -Er du sikker på at du ønsker at kryptere din tegnebog? - - - - Please re-enter your new wallet passphrase. - Angiv venligst dit nye tegneborgskodeord igen. - - - - Error: the supplied passphrases didn't match. - Fejl: de angive kodeord stemte ikke overens. - - - - Wallet encryption failed. - Tegnebogskryptering mislykkedes. - - - - Wallet Encrypted. -Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - Tegnebog Krypteret. -Husk at kryptere din tegnebog ikke fuldt ud kan beskytte din bitcoins mod at blive stjålet af malware inficerer din computer. - - - - Wallet is unencrypted, please encrypt it first. - Tegnebogen er ikke krypteret. Kryptér den venligst først. - - - - Enter the new passphrase for the wallet. - Indtast den nye adgangskode til tegnebogen. - - - - Re-enter the new passphrase for the wallet. - Genindtast den nye adgangskode til tegnebogen. - - - - Wallet Passphrase Changed. - Adgangskode til tegnebog ændret. - - - - New Receiving Address - Ny modtageradresse - - - - You should use a new address for each payment you receive. - -Label - Du bør bruge en ny adresse for hver betaling du modtager. - -Mærkat - - - - <b>Status:</b> - <b>Status:</b> - - - - , has not been successfully broadcast yet - , er ikke blevet transmitteret endnu - - - - , broadcast through %d node - , spredt gennem %d knudepunkt - - - - , broadcast through %d nodes - , spredt gennem %d knudepunkter - - - - <b>Date:</b> - <b>Dato:</b> - - - - <b>Source:</b> Generated<br> - <b>Kilde:</b> Genereret<br> - - - - <b>From:</b> - <b>Fra:</b> - - - - unknown - ukendt - - - - <b>To:</b> - <b>Til:</b> - - - - (yours, label: - (din, etiket: - - - - (yours) - (din) - - - - <b>Credit:</b> - <b>Kredit:</b> - - - - (%s matures in %d more blocks) - (%s bliver moden om %d blokke) - - - - (not accepted) - (ikke accepteret) - - - - <b>Debit:</b> - <b>Debet:</b> - - - - <b>Transaction fee:</b> - <b>Transaktionsgebyr:</b> - - - - <b>Net amount:</b> - <b>Nettobeløb:</b> - - - - Message: - Besked: - - - - Comment: - Kommentar: - - - - Generated coins must wait 120 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, it will change to "not accepted" and not be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Genererede coins skal vente 120 blokke, før de kan blive brugt. Da du genererede denne blok blev det transmitteret til netværket, for at blive føjet til blokkæden. Hvis det mislykkes at komme ind i kæden, vil den skifte til "ikke godkendt", og ikke blive kunne bruges. Dette kan lejlighedsvis ske, hvis en anden node genererer en blok inden for få sekunder af din. - - - - Cannot write autostart/bitcoin.desktop file - Skrivning til filen autostart/bitcoin.desktop ikke mulig - - - - Main - Generelt - - - - &Start Bitcoin on window system startup - &Start Bitcoin når systemet startes - - - - &Minimize on close - &Minimér ved lukning - - - - version %s - version %s - - - - Error in amount - Fejl i beløb - - - - Send Coins - Send Coins - - - - Amount exceeds your balance - Beløb overstiger saldo - - - - Total exceeds your balance when the - Det samlede beløb overstiger saldoen når - - - - transaction fee is included - transaktionsgebyret er inkluderet - - - - Payment sent - Betaling afsendt - - - - Sending... - Sender... - - - - Invalid address - Ugyldig adresse - - - - Sending %s to %s - Sender %s til %s - - - - CANCELLED - ANNULLERET - - - - Cancelled - Annulleret - - - - Transfer cancelled - Overførsel annulleret - - - - Error: - Fejl: - - - - Insufficient funds - Du har ikke penge nok - - - - Connecting... - Forbinder... - - - - Unable to connect - Forbindelse mislykkedes - - - - Requesting public key... - Efterspørger offentlig nøgle... - - - - Received public key... - Modtog offentlig nøgle... - - - - Recipient is not accepting transactions sent by IP address - Modtageren accepterer ikke transaktioner sendt til en IP-adresse - - - - Transfer was not accepted - Overførsel ikke accepteret - - - - Invalid response received - Ugyldigt svar modtaget - - - - Creating transaction... - Opretter transaktion... - - - - This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - Denne transaktion kræver at du betaler et transaktionsgebyr på mindst %s pga. af transaktionens størrelse, dens kompleksitet eller fordi den gør brug af nyligt modtagne penge - - - - Transaction creation failed - Opretning af transaktion mislykkedes - - - - Transaction aborted - Transaktion afbrudt - - - - Lost connection, transaction cancelled - Forbindelse afbrudt, transaktion annulleret - - - - Sending payment... - Sender betaling... - - - - The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. - Transaktionen blev afvist. Dette kan ske hvis nogle af pengene i din tegnebog allerede er brugt, for eksempel hvis du har brugt en kopi af din wallet.dat-fil og pengene er brugt i kopien af din tegnebog, men ikke blev markeret som brugte deri. - - - - Waiting for confirmation... - Afventer bekræftelse... - - - - The payment was sent, but the recipient was unable to verify it. -The transaction is recorded and will credit to the recipient, -but the comment information will be blank. - Betalingen blev afsendt, men modtageren var ikke i stand til at bekræfte den. -Transaktionen er oprettet og vil kreditere modtageren, -men kommentarfeltet vil være tomt. - - - - Payment was sent, but an invalid response was received - Betalingen blev afsendt, men et ugyldigt svar blev modtaget - - - - Payment completed - Betaling fuldført - - - - Name - Navn - - - - Address - Adresse - - - - Label - Etiket - - - - Bitcoin Address - Bitcoinadresse - - - - This is one of your own addresses for receiving payments and cannot be entered in the address book. - Dette er en af dine egne adresser til at modtage betalinger med, og kan ikke indtastes i adressebogen. - - - - Edit Address - Rediger Adresse - - - - Edit Address Label - Redigér adressemærkat - - - - Add Address - Tilføj adresse - - - - Bitcoin - Bitcoin - - - - Bitcoin - Generating - Bitcoin - Genererer - - - - Bitcoin - (not connected) - Bitcoin - (ikke tilsluttet) - - - - &Open Bitcoin - Å&bn Bitcoin - - - - &Send Bitcoins - &Send Bitcoins - - - - O&ptions... - &Indstillinger... - - - - E&xit - &Luk - - - - Program has crashed and will terminate. - Programmet er gået ned og vil afslutte. - - - Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. Advarsel: Undersøg venligst at din computers dato og klokkeslet er korrekt indstillet. Hvis der er fejl i disse vil Bitcoin ikke fungere korrekt. - + beta beta @@ -2329,9 +1805,9 @@ men kommentarfeltet vil være tomt. main - - Bitcoin Qt - Bitcoin Qt + + Bitcoin-Qt + - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_de.ts b/src/qt/locale/bitcoin_de.ts index c815b776997..01b108ff7f6 100644 --- a/src/qt/locale/bitcoin_de.ts +++ b/src/qt/locale/bitcoin_de.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -14,20 +16,20 @@ - Copyright © 2009-2011 Bitcoin Developers + Copyright © 2009-2012 Bitcoin Developers This is experimental software. Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - Copyright © 2009-2011 Bitcoin Entwickler + Copyright © 2009-2012 Bitcoin Entwickler Dies ist experimentelle Software. -Veröffentlicht unter der MIT/X11 Software-Lizenz. Sie können diese in der beiligenden Datei license.txt oder unter http://www.opensource.org/licenses/mit-license.php nachlesen. +Veröffentlicht unter der MIT/X11 Software-Lizenz, siehe beiligende Datei license.txt oder http://www.opensource.org/licenses/mit-license.php. -Dieses Produkt enthält Software, welche vom OpenSSL Projekt zur Verwendung im OpenSSL Toolkit (http://www.openssl.org/) entwickelt wurde, kryptographische Software von Eric Young (eay@cryptsoft.com) und UPnP Software von Thomas-Bernard. +Dieses Produkt enthält Software, die vom OpenSSL Projekt zur Verwendung im OpenSSL Toolkit (http://www.openssl.org/) entwickelt wurde, sowie kryptographische Software geschrieben von Eric Young (eay@cryptsoft.com) und UPnP Software geschrieben von Thomas Bernard. @@ -40,22 +42,22 @@ Dieses Produkt enthält Software, welche vom OpenSSL Projekt zur Verwendung im O These are your Bitcoin addresses for receiving payments. You may want to give a different one to each sender so you can keep track of who is paying you. - Dies sind ihre Bitcoin-Adressen zum Empfangen von Zahlungen. Um Ihre Zahlungen zurückverfolgen zu können, schlagen wir vor, jedem Sender eine andere Empfangsaddresse mitzuteilen. + Dies sind Ihre Bitcoin-Adressen zum Empfangen von Zahlungen. Es steht Ihnen frei, jedem Absender eine andere mitzuteilen, um einen besseren Überblick über eingehende Zahlungen zu erhalten. Double-click to edit address or label - Doppelklick zum Ändern der Adresse oder der Bezeichnung + Doppelklicken, um die Adresse oder die Bezeichnung zu bearbeiten Create a new address - Neue Adresse erstellen + Eine neue Adresse erstellen &New Address... - &Neue Adresse... + &Neue Adresse @@ -65,12 +67,12 @@ Dieses Produkt enthält Software, welche vom OpenSSL Projekt zur Verwendung im O &Copy to Clipboard - &In die Zwischenablage kopieren + In die Zwischenablage &kopieren Delete the currently selected address from the list. Only sending addresses can be deleted. - Die ausgewählte Adresse aus der Liste entfernen. Sie können nur ausgehende Adressen entfernen. + Die ausgewählte Adresse aus der Liste entfernen. Sie können nur Zahlungsadressen entfernen. @@ -78,40 +80,40 @@ Dieses Produkt enthält Software, welche vom OpenSSL Projekt zur Verwendung im O &Löschen - + Export Address Book Data Adressbuch exportieren - + Comma separated file (*.csv) Kommagetrennte Datei (*.csv) - + Error exporting Fehler beim Exportieren - + Could not write to file %1. - Konnte Datei %1 nicht zum Schreiben öffnen. + Konnte nicht in Datei %1 schreiben. AddressTableModel - + Label Bezeichnung - + Address Adresse - + (no label) (keine Bezeichnung) @@ -125,125 +127,131 @@ Dieses Produkt enthält Software, welche vom OpenSSL Projekt zur Verwendung im O + TextLabel - Text Bezeichnung + Textbezeichnung - + Enter passphrase Passphrase eingeben - + New passphrase Neue Passphrase - + Repeat new passphrase Neue Passphrase wiederholen - + Enter the new passphrase to the wallet.<br/>Please use a passphrase of <b>10 or more random characters</b>, or <b>eight or more words</b>. - Geben Sie die neue Passphrase für die Brieftasche ein.<br/>Bitte benutzen Sie eine Passphrase von <b>zehn oder mehr zufälligen Zeichen</b> oder <b>acht oder mehr Wörter</b>. + Geben Sie die neue Passphrase für die Brieftasche ein.<br>Bitte benutzen Sie eine Passphrase bestehend aus <b>10 oder mehr zufälligen Zeichen</b> oder <b>8 oder mehr Wörtern</b>. - + Encrypt wallet Brieftasche verschlüsseln - + This operation needs your wallet passphrase to unlock the wallet. Dieser Vorgang benötigt Ihre Passphrase um die Brieftasche zu entsperren. - + Unlock wallet Brieftasche entsperren - + This operation needs your wallet passphrase to decrypt the wallet. Dieser Vorgang benötigt Ihre Passphrase um die Brieftasche zu entschlüsseln. - + Decrypt wallet Brieftasche entschlüsseln - + Change passphrase Passphrase ändern - + Enter the old and new passphrase to the wallet. Geben Sie die alte und die neue Passphrase der Brieftasche ein. - + Confirm wallet encryption - Bestätige die Verschlüsselung der Brieftasche + Verschlüsselung der Brieftasche bestätigen - + WARNING: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! Are you sure you wish to encrypt your wallet? - WARNUNG: Wenn Sie Ihre Brieftasche verschlüsseln und Ihre Passphrase verlieren, werden Sie <b>ALLE IHRE BITCOINS VERLIEREN</b>! -Sind Sie sich sicher, dass Sie Ihre Brieftasche verschlüsseln möchten? + WARNUNG: Wenn Sie Ihre Brieftasche verschlüsseln und Ihre Passphrase verlieren, werden Sie <b>ALLE IHRE BITCOINS VERLIEREN</b>!<br><br>Sind Sie sich sicher, dass Sie Ihre Brieftasche verschlüsseln möchten? - - + + Wallet encrypted Brieftasche verschlüsselt - - Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - Beachten Sie, dass das Verschlüsseln Ihrer Brieftasche nicht komplett vor Diebstahl Ihrer Bitcoins durch Malware schützt, die Ihren Computer infiziert hat. + + + Warning: The Caps Lock key is on. + Warnung: Die Feststelltaste ist aktiviert. - - - - + + + + Wallet encryption failed Verschlüsselung der Brieftasche fehlgeschlagen - + Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Die Verschlüsselung der Brieftasche ist wegen eines internen Fehlers fehlgeschlagen. Ihre Brieftasche wurde nicht verschlüsselt. + Die Verschlüsselung der Brieftasche ist aufgrund eines internen Fehlers fehlgeschlagen. Ihre Brieftasche wurde nicht verschlüsselt. - - + + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. + Bitcoin wird jetzt beendet, um den Verschlüsselungsprozess abzuschließen. Bitte beachten Sie, dass die Verschlüsselung Ihrer Brieftasche nicht vollständig vor Diebstahl Ihrer Bitcoins durch Schadsoftware schützt, die Ihren Computer befällt. + + + + The supplied passphrases do not match. Die eingegebenen Passphrasen stimmen nicht überein. - + Wallet unlock failed Entsperrung der Brieftasche fehlgeschlagen - - + + The passphrase entered for the wallet decryption was incorrect. Die eingegebene Passphrase zum Entschlüsseln der Brieftasche war nicht korrekt. - + Wallet decryption failed Entschlüsselung der Brieftasche fehlgeschlagen - + Wallet passphrase was succesfully changed. Die Passphrase der Brieftasche wurde erfolgreich geändert. @@ -251,247 +259,273 @@ Sind Sie sich sicher, dass Sie Ihre Brieftasche verschlüsseln möchten? BitcoinGUI - + Bitcoin Wallet Bitcoin-Brieftasche - + + Synchronizing with network... Synchronisiere mit Netzwerk... - + Block chain synchronization in progress - Synchronisiere mit der Blockkette + Synchronisation der Blockkette wird durchgeführt - + &Overview &Übersicht - + Show general overview of wallet - Zeige allgemeine Übersicht der Brieftasche + Allgemeine Übersicht der Brieftasche anzeigen - + &Transactions &Transaktionen - + Browse transaction history Transaktionsverlauf durchsehen - + &Address Book &Adressbuch - - - Edit the list of stored addresses and labels - Gespeicherte Adressen und Bezeichnungen bearbeiten - - - - &Receive coins - &Bitcoins empfangen - - Show the list of addresses for receiving payments - Liste der Adressen zum Empfangen von Zahlungen anzeigen + Edit the list of stored addresses and labels + Liste der gespeicherten Zahlungsadressen und Bezeichnungen bearbeiten - &Send coins - &Bitcoins überweisen + &Receive coins + Bitcoins &empfangen + Show the list of addresses for receiving payments + Liste der Empfangsadressen anzeigen + + + + &Send coins + Bitcoins &überweisen + + + Send coins to a bitcoin address Bitcoins an eine Bitcoin-Adresse überweisen - + E&xit - + &Beenden - + Quit application Anwendung beenden - + &About %1 &Über %1 - + Show information about Bitcoin Informationen über Bitcoin anzeigen - + &Options... - &Einstellungen... + &Erweiterte Einstellungen... - + Modify configuration options for bitcoin - Einstellungen für Bitcoin ändern + Erweiterte Bitcoin-Einstellungen ändern - + Open &Bitcoin &Bitcoin öffnen - + Show the Bitcoin window Bitcoin-Fenster anzeigen - + &Export... - &Exportieren... + &Exportieren nach... - + Export the current view to a file Aktuelle Ansicht in eine Datei exportieren - + &Encrypt Wallet - Brieftasche &verschlüsseln + Brieftasche &verschlüsseln... - + Encrypt or decrypt wallet Brieftasche ent- oder verschlüsseln - + &Change Passphrase - Passphrase &ändern + Passphrase &ändern... - + Change the passphrase used for wallet encryption Ändert die Passphrase, die für die Verschlüsselung der Brieftasche benutzt wird - + + About &Qt + Über &Qt + + + + Show information about Qt + Informationen über Qt anzeigen + + + &File &Datei - + &Settings &Einstellungen - + &Help &Hilfe - + Tabs toolbar Registerkarten-Leiste - + Actions toolbar Aktionen-Werkzeugleiste - + [testnet] [testnet] - + bitcoin-qt bitcoin-qt - - %n active connection(s) to Bitcoin network - %n aktive Verbindung zum Bitcoin-Netzwerk%n aktive Verbindungen zum Bitcoin-Netzwerk - - - - Downloaded %1 of %2 blocks of transaction history. - %1 von %2 Blöcken des Transaktionsverlauf heruntergeladen. - - + %n active connection(s) to Bitcoin network + + %n aktive Verbindung zum Bitcoin-Netzwerk + %n aktive Verbindungen zum Bitcoin-Netzwerk + + + + + Downloaded %1 of %2 blocks of transaction history. + %1 von %2 Blöcken des Transaktionsverlaufs heruntergeladen. + + + Downloaded %1 blocks of transaction history. %1 Blöcke des Transaktionsverlaufs heruntergeladen. - + %n second(s) ago - vor %n Sekundevor %n Sekunden + + vor %n Sekunde + vor %n Sekunden + - + %n minute(s) ago - vor %n Minutevor %n Minuten + + vor %n Minute + vor %n Minuten + - + %n hour(s) ago - vor %n Stundevor %n Stunden + + vor %n Stunde + vor %n Stunden + - + %n day(s) ago - vor %n Tagvor %n Tagen + + vor %n Tag + vor %n Tagen + - + Up to date Auf aktuellem Stand - + Catching up... Hole auf... - + Last received block was generated %1. - Der letzte empfangene Block wurde am %1 generiert. + Der letzte empfangene Block wurde %1 generiert. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? - Die Transaktion übersteigt das Größenlimit. Sie können sie jedoch senden, wenn Sie einen zusätzlichen Betrag von %1 zahlen. Dieser geht an die Knoten, die Ihre Transaktion bearbeiten und unterstützt das Bitcoin-Netzwerk. Möchten Sie die Gebühr bezahlen? + Die Transaktion übersteigt das Größenlimit. Sie können sie trotzdem senden, wenn Sie eine zusätzliche Transaktionsgebühr in Höhe von %1 zahlen. Diese wird an die Knoten verteilt, die Ihre Transaktion bearbeiten und unterstützt damit das Bitcoin-Netzwerk.<br><br>Möchten Sie die Gebühr bezahlen? - + Sending... - Senden... + Transaktionsgebühr bestätigen - + Sent transaction Gesendete Transaktion - + Incoming transaction - Empfangene Transaktion + Eingehende Transaktion - + Date: %1 Amount: %2 Type: %3 @@ -503,14 +537,19 @@ Typ: %3 Adresse: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Brieftasche ist <b>verschlüsselt</b> und momentan <b>entsperrt</b> + Brieftasche ist <b>verschlüsselt</b> und aktuell <b>entsperrt</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> - Brieftasche ist <b>verschlüsselt</b> und momentan <b>gesperrt</b> + Brieftasche ist <b>verschlüsselt</b> und aktuell <b>gesperrt</b> + + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + @@ -523,12 +562,17 @@ Adresse: %4 Choose the default subdivision unit to show in the interface, and when sending coins - Wählen Sie die Standard-Unterteilungseinheit, die in der Benutzeroberfläche und beim Senden von Bitcoins angezeigt werden soll + Wählen Sie die Standard-Untereinheit, die in der Benutzeroberfläche und beim Überweisen von Bitcoins angezeigt werden soll - Display addresses in transaction list - Adressen in der Transaktionsliste anzeigen + &Display addresses in transaction list + &Adressen in der Transaktionsliste anzeigen + + + + Whether to show Bitcoin addresses in the transaction list + @@ -579,24 +623,24 @@ Adresse: %4 Zahlungsadresse bearbeiten - + The entered address "%1" is already in the address book. Die eingegebene Adresse "%1" befindet sich bereits im Adressbuch. - + The entered address "%1" is not a valid bitcoin address. Die eingegebene Adresse "%1" ist keine gültige Bitcoin-Adresse. - + Could not unlock wallet. Die Brieftasche konnte nicht entsperrt werden. - + New key generation failed. - Neue Schlüsselgenerierung fehlgeschlagen. + Generierung eines neuen Schlüssels fehlgeschlagen. @@ -604,22 +648,22 @@ Adresse: %4 &Start Bitcoin on window system startup - &Bitcoin beim Systemstart ausführen + Bitcoin beim &Systemstart ausführen Automatically start Bitcoin after the computer is turned on - Bitcoin automatisch starten, wenn der Computer eingeschaltet wird + Bitcoin automatisch ausführen, wenn der Computer eingeschaltet wird &Minimize to the tray instead of the taskbar - &In den Infobereich statt in die Taskleiste minimieren + In den Infobereich anstatt in die Taskleiste &minimieren Show only a tray icon after minimizing the window - Nur ein Symbol im Infobereich anzeigen, wenn das Fenster minimiert wird + Nur ein Symbol im Infobereich anzeigen, nachdem das Fenster minimiert wurde @@ -634,7 +678,7 @@ Adresse: %4 M&inimize on close - Beim Schließen m&inimieren + Beim Schließen &minimieren @@ -644,12 +688,12 @@ Adresse: %4 &Connect through SOCKS4 proxy: - &Über einen SOCKS4-Proxy verbinden: + Über einen SOCKS4-Proxy &verbinden: Connect to the Bitcon network through a SOCKS4 proxy (e.g. when connecting through Tor) - Über einen SOCKS4-Proxy zum Bitcoin-Netzwerk verbinden (bspw. für eine Verbindung über Tor) + Über einen SOCKS4-Proxy zum Bitcoin-Netzwerk verbinden (z.B. bei einer Verbindung über Tor) @@ -673,8 +717,8 @@ Adresse: %4 - Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. - Zusätzliche Transaktionsgebühr pro kB, welche sicherstellt, dass Ihre Transaktionen schnell bearbeitet werden. Die meisten Transaktionen sind 1 kB groß. Eine Gebühr von 0.01 wird empfohlen. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. + Optionale Transaktionsgebühr pro kB, die sicherstellt, dass Ihre Transaktionen schnell bearbeitet werden. Die meisten Transaktionen sind 1 kB groß. Eine Gebühr von 0.01 wird empfohlen. @@ -683,8 +727,8 @@ Adresse: %4 - Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. - Zusätzliche Transaktionsgebühr pro kB, welche sicherstellt, dass Ihre Transaktionen schnell bearbeitet werden. Die meisten Transaktionen sind 1 kB groß. Eine Gebühr von 0.01 wird empfohlen. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. + Optionale Transaktionsgebühr pro kB, die sicherstellt, dass Ihre Transaktionen schnell bearbeitet werden. Die meisten Transaktionen sind 1 kB groß. Eine Gebühr von 0.01 wird empfohlen. @@ -692,7 +736,7 @@ Adresse: %4 Main - Haupt + Allgemein @@ -702,7 +746,7 @@ Adresse: %4 Options - Einstellungen + Erweiterte Einstellungen @@ -743,20 +787,12 @@ Adresse: %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Brieftasche</span></p></body></html> + + Wallet + Brieftasche - + <b>Recent transactions</b> <b>Letzte Transaktionen</b> @@ -768,7 +804,7 @@ p, li { white-space: pre-wrap; } Total of transactions that have yet to be confirmed, and do not yet count toward the current balance - Anzahl der Transaktionen, die noch bestätigt werden müssen und noch nicht zum aktuellen Kontostand zählen + Betrag aus unbestätigten Transaktionen, der noch nicht im aktuellen Kontostand enthalten ist @@ -780,105 +816,110 @@ p, li { white-space: pre-wrap; } SendCoinsDialog - - - - - - - + + + + + + + Send Coins Bitcoins überweisen Send to multiple recipients at once - An mehrere Empfänger auf einmal überweisen + In einer Transaktion an mehrere Empfänger auf einmal überweisen &Add recipient... - &Empfänger hinzufügen... + &Empfänger hinzufügen - + Clear all Zurücksetzen - + + Remove all transaction fields + Alle Überweisungsfelder zurücksetzen + + + Balance: Kontostand: - + 123.456 BTC 123.456 BTC - + Confirm the send action Überweisung bestätigen - + &Send &Überweisen - + <b>%1</b> to %2 (%3) <b>%1</b> an %2 (%3) - + Confirm send coins Überweisung bestätigen - + Are you sure you want to send %1? - Sind Sie sich sicher, dass Sie folgendes überweisen möchten: %1? + Sind Sie sich sicher, dass Sie die folgende Überweisung ausführen möchten?<br>%1 - + and und - + The recepient address is not valid, please recheck. - Die Empfangsadresse ist ungültig, bitte nochmals überprüfen. + Die Zahlungsadresse ist ungültig, bitte nochmals überprüfen. - + The amount to pay must be larger than 0. - Der zu zahlende Betrag muss mehr als 0 betragen. + Der zu zahlende Betrag muss größer 0 sein. - + Amount exceeds your balance - Der Betrag übersteigt Ihren Kontostand + Der angegebene Betrag übersteigt Ihren Kontostand. - + Total exceeds your balance when the %1 transaction fee is included - Summe übersteigt aufgrund der Transaktionsgebühr in Höhe von %1 Ihren Kontostand + Der angegebene Betrag übersteigt aufgrund der Transaktionsgebühr in Höhe von %1 Ihren Kontostand. - + Duplicate address found, can only send to each address once in one send operation - Doppelte Adresse gefunden. Pro Vorgang kann an eine Adresse nur einmalig etwas überwiesen werden + Doppelte Adresse gefunden, pro Überweisung kann an jede Adresse nur einmalig etwas überwiesen werden - + Error: Transaction creation failed Fehler: Transaktionserstellung fehlgeschlagen - + Error: The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. - Fehler: Die Transaktion wurde abgelehnt. Dies kann passieren, wenn einige Ihrer Bitcoins aus Ihrer Brieftasche bereits ausgegeben wurden (z.B. aus einer Sicherungskopie Ihrer wallet.dat). + Fehler: Die Transaktion wurde abgelehnt. Dies kann passieren, wenn einige Bitcoins aus Ihrer Brieftasche bereits ausgegeben wurden. Beispielsweise weil Sie eine Kopie Ihrer wallet.dat genutzt, die Bitcoins dort ausgegeben haben und dies daher in der derzeit aktiven Brieftasche nicht vermerkt ist. @@ -902,7 +943,7 @@ p, li { white-space: pre-wrap; } Enter a label for this address to add it to your address book - Geben Sie hier eine Bezeichnung der Adresse ein, um sie zum Adressbuch hinzuzufügen + Adressbezeichnung eingeben (diese wird bei unbekannten Adressen inkl. der Adresse dem Adressbuch hinzugefügt) @@ -912,12 +953,12 @@ p, li { white-space: pre-wrap; } The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - Die Empfangsadresse für die Überweisung (z.B. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + Die Zahlungsadresse der Überweisung (z.B. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) Choose address from address book - Adresse aus dem Adressbuch auswählen + Adresse aus Adressbuch wählen @@ -980,17 +1021,17 @@ p, li { white-space: pre-wrap; } , has not been successfully broadcast yet - ; wurde noch nicht erfolgreich gesendet + , wurde noch nicht erfolgreich übertragen , broadcast through %1 node - ; über %1 Knoten gesendet + , über %1 Knoten übertragen , broadcast through %1 nodes - ; über %1 Knoten gesendet + , über %1 Knoten übertragen @@ -1023,12 +1064,12 @@ p, li { white-space: pre-wrap; } (yours, label: - (Ihre, Bezeichnung: + (Eigene Adresse, Bezeichnung: (yours) - (Ihre) + (Eigene Adresse) @@ -1041,7 +1082,7 @@ p, li { white-space: pre-wrap; } (%1 matures in %2 more blocks) - (%1 reift in weiteren %2 Blöcken) + %1 (reift noch %2 weitere Blöcke) @@ -1078,7 +1119,7 @@ p, li { white-space: pre-wrap; } Generated coins must wait 120 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, it will change to "not accepted" and not be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Generierte Bitcoins müssen 120 Blöcke lang warten, bevor sie ausgegeben werden können. Als Sie diesen Block generierten, wurde er an das Netzwerk gesendet, um ihn der Blockkette hinzuzufügen. Falls dies fehlschlägt wird der Status in "nicht angenommen" geändert und der Betrag wird nicht verfügbar werden. Das kann gelegentlich passieren, wenn ein anderer Knoten einen Block zur selben Zeit wie Sie generierte. + Generierte Bitcoins müssen 120 Blöcke lang warten, bevor sie ausgegeben werden können. Als Sie diesen Block generierten, wurde er an das Netzwerk übertragen, um ihn der Blockkette hinzuzufügen. Falls dies fehlschlägt wird der Status in "nicht angenommen" geändert und der Betrag wird nicht verfügbar werden. Das kann gelegentlich passieren, wenn ein anderer Knoten einen Block zur selben Zeit wie Sie generierte. @@ -1097,54 +1138,60 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date Datum - + Type Typ - + Address Adresse - + Amount Betrag - + Open for %n block(s) - Offen für %n BlockOffen für %n Blöcke + + Offen für %n Block + Offen für %n Blöcke + - + Open until %1 Offen bis %1 - + Offline (%1 confirmations) Nicht verbunden (%1 Bestätigungen) - + Unconfirmed (%1 of %2 confirmations) Unbestätigt (%1 von %2 Bestätigungen) - + Confirmed (%1 confirmations) Bestätigt (%1 Bestätigungen) Mined balance will be available in %n more blocks - Der erarbeitete Betrag wird in %n Block verfügbar seinDer erarbeitete Betrag wird in %n Blöcken verfügbar sein + + Der erarbeitete Betrag wird in %n Block verfügbar sein + Der erarbeitete Betrag wird in %n Blöcken verfügbar sein + @@ -1159,62 +1206,57 @@ p, li { white-space: pre-wrap; } Received with - Empfangen durch + Empfangen über - Received from IP - Empfangen von IP + Received from + Empfangen von - + Sent to Überwiesen an - - Sent to IP - Überwiesen an IP - - - + Payment to yourself - Zahlung an Sie selbst + Eigenüberweisung - + Mined Erarbeitet - + (n/a) (k.A.) - + Transaction status. Hover over this field to show number of confirmations. Transaktionsstatus. Fahren Sie mit der Maus über dieses Feld, um die Anzahl der Bestätigungen zu sehen. - + Date and time that the transaction was received. Datum und Uhrzeit als die Transaktion empfangen wurde. - + Type of transaction. - Art der Transaktion. + Art der Transaktion - + Destination address of transaction. - Empfangsadresse der Transaktion. + Zieladresse der Transaktion. - + Amount removed from or added to balance. - Betrag vom Kontostand entfernt oder hinzugefügt. + Der Betrag, der dem Kontostand abgezogen oder hinzugefügt wurde. @@ -1253,12 +1295,12 @@ p, li { white-space: pre-wrap; } Range... - Bereich... + Zeitraum Received with - Empfangen durch + Empfangen über @@ -1268,7 +1310,7 @@ p, li { white-space: pre-wrap; } To yourself - Zu Ihnen selbst + Eigenüberweisung @@ -1288,7 +1330,7 @@ p, li { white-space: pre-wrap; } Min amount - Kleinster Betrag + Minimaler Betrag @@ -1308,70 +1350,70 @@ p, li { white-space: pre-wrap; } Show details... - Details anzeigen... + Transaktionsdetails anzeigen - + Export Transaction Data Transaktionen exportieren - + Comma separated file (*.csv) Kommagetrennte Datei (*.csv) - + Confirmed Bestätigt - + Date Datum - + Type Typ - + Label Bezeichnung - + Address Adresse - + Amount Betrag - + ID ID - + Error exporting Fehler beim Exportieren - + Could not write to file %1. Konnte nicht in Datei %1 schreiben. - + Range: - Bereich: + Zeitraum: - + to bis @@ -1387,207 +1429,207 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version Bitcoin Version - + Usage: Verwendung: - + Send command to -server or bitcoind Sende Befehl an -server oder bitcoind - + List commands Befehle auflisten - + Get help for a command Hilfe für Befehl erhalten - + Options: Einstellungen: - + Specify configuration file (default: bitcoin.conf) Bitte wählen Sie eine Konfigurationsdatei (Standard: bitcoin.conf) - + Specify pid file (default: bitcoind.pid) Bitte wählen Sie den Namen der PID Datei (Standard bitcoind.pid) - + Generate coins Erarbeite Bitcoins - - Don't generate coins + + Don't generate coins Keine Bitcoins erarbeiten - + Start minimized minimiert starten - + Specify data directory Bitte wählen Sie das Datenverzeichnis - + Specify connection timeout (in milliseconds) Netzwerkverbindungsabbruch nach (in Millisekunden) - + Connect through socks4 proxy Durch SOCKS4-Proxy verbinden - + Allow DNS lookups for addnode and connect Erlaube DNS Namensauflösung für addnode und connect - + Add a node to connect to Bitcoin Knoten hinzufügen - + Connect only to the specified node Nur zu angegebenen Knoten verbinden - - Don't accept connections from outside + + Don't accept connections from outside Keine externen Transatkionen akzeptieren - - Don't attempt to use UPnP to map the listening port + + Don't attempt to use UPnP to map the listening port UPnP nicht verwenden - + Attempt to use UPnP to map the listening port Versuche eine Verbindung mittels UPnP herzustellen - + Fee per kB to add to transactions you send Gebühr pro kB, die gesendeten Transaktionen hinzugefügt wird - + Accept command line and JSON-RPC commands Erlaube Kommandozeilen und JSON-RPC Befehle - + Run in the background as a daemon and accept commands Als Hintergrunddienst starten und Befehle akzeptieren - + Use the test network Das Test Netzwerk verwenden - + Username for JSON-RPC connections Benutzername für JSON-RPC Verbindungen - + Password for JSON-RPC connections Passwort für JSON-RPC Verbindungen - + Listen for JSON-RPC connections on <port> (default: 8332) Port für JSON-RPC Befehle (Standard: 8332) - + Allow JSON-RPC connections from specified IP address JSON-RPC Befehle nur von dieser IP-Adresse erlauben - + Send commands to node running on <ip> (default: 127.0.0.1) Befehle an Bitcoin Knoten <ip> senden (Standard: 127.0.0.1) - + Set key pool size to <n> (default: 100) Menge der vorgenerierten Adressen (Standard: 100) - + Rescan the block chain for missing wallet transactions Blockkette nach verlorenen Transaktionen durchsuchen (rescan) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -1595,710 +1637,149 @@ SSL options: (see the Bitcoin Wiki for SSL setup instructions) - + Use OpenSSL (https) for JSON-RPC connections JSON-RPC Befehle über OpenSSL (https) - + Server certificate file (default: server.cert) SSL Server Zertifikat (Standard: server.cert) - + Server private key (default: server.pem) Privater SSL Schlüssel (Standard: server.pem) - + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) Erlaubte Kryptographiealgorithmen (Standard: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - + This help message Dieser Hilfetext - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. - Konnte das Datenverzeichnis %s nicht sperren. Evtl. wurde das Programm mehrfach gestartet. + Konnte das Datenverzeichnis %s nicht sperren. Evtl. wurde Bitcoin bereits gestartet. - + Loading addresses... Lade Adressen... - + Error loading addr.dat Fehler beim Laden der addr.dat - + Loading block index... Lade Blockindex... - + Error loading blkindex.dat Fehler beim laden der blkindex.dat - + Loading wallet... Lade Geldbörse... - + Error loading wallet.dat: Wallet corrupted Fehler beim Laden von wallet.dat: Brieftasche beschädigt - + Error loading wallet.dat: Wallet requires newer version of Bitcoin Fehler beim Laden von wallet.dat: Neuere Version von Bitcoin notwendig - + Error loading wallet.dat Fehler beim Laden von wallet.dat - + Rescanning... - Lade neu... + Durchsuche erneut... - + + Threshold for disconnecting misbehaving peers (default: 100) + + + + + + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) + + + + + Done loading Laden abgeschlossen - + Invalid -proxy address - Fehlerhafte Proxy Adresse + Fehlerhafte Proxy-Adresse - + Invalid amount for -paytxfee=<amount> Ungültige Angabe für -paytxfee=<Betrag> - + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. - Warnung: -paytxfee ist auf einen sehr hohen Wert gesetzt. Dies ist die Gebühr die beim senden einer Transaktion fällig wird. - - - - Error: CreateThread(StartNode) failed - Fehler: CreateThread(StartNode) fehlerhaft - - - - Warning: Disk space is low - Warnung: Festplattenplatz wird knapp. - - - - Unable to bind to port %d on this computer. Bitcoin is probably already running. - Fehler beim registrieren des Ports %d auf diesem Computer. Evtl. läuft BitCoin bereits - - - - This transaction is over the size limit. You can still send it for a fee of %s, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? - + Warnung: -paytxfee ist auf einen sehr hohen Wert gesetzt. Dies ist die Gebühr die beim Senden einer Transaktion fällig wird. - Enter the current passphrase to the wallet. - Geben Sie bitte das Passwort für die Brieftasche ein. + Error: CreateThread(StartNode) failed + Fehler: CreateThread(StartNode) fehlgeschlagen - Passphrase - Passwort + Warning: Disk space is low + Warnung: Festplattenplatz wird knapp - Please supply the current wallet decryption passphrase. - Bitte die aktuelle Passphrase zur Entschlüsselung eingeben. - - - - The passphrase entered for the wallet decryption was incorrect. - Das eingegebene Passwort für die Brieftasche war fehlerhaft - - - - Status - Status + Unable to bind to port %d on this computer. Bitcoin is probably already running. + Fehler beim registrieren des Ports %d auf diesem Computer. Evtl. wurde Bitcoin bereits gestartet. - Date - Datum - - - - Description - Beschreibung - - - - Debit - Debitoren + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. + Warnung: Bitte korrigieren Sie die Datums- und Uhrzeiteinstellungen Ihres Computers, da Bitcoin ansonsten nicht ordnungsgemäß funktionieren wird. - Credit - Kreditoren - - - - Open for %d blocks - Öffne für %d Blöcke - - - - Open until %s - Geöffnet bis %s - - - - %d/offline? - %d/offline? - - - - %d/unconfirmed - %d/unbestätigt - - - - %d confirmations - %d Bestätigungen - - - - Generated - Generiert - - - - Generated (%s matures in %d more blocks) - Erstellt (%s reift nach %d weiteren Blöcken) - - - - Generated - Warning: This block was not received by any other nodes and will probably not be accepted! - Generiert - Warnung: Dieser Block wurde bei keinem anderen Knoten empfangen und wird wahrscheinlich nicht akzeptiert! - - - - Generated (not accepted) - Generiert (nicht akzeptiert) - - - - From: - Von: - - - - Received with: - Erhalten mit: - - - - Payment to yourself - Bezahlung an sich selbst - - - - To: - An: - - - - Generating - Erzeuge - - - - (not connected) - (nicht verbunden) - - - - %d connections %d blocks %d transactions - %d Verbindungen %d Blöcke %d Transaktionen - - - - Wallet already encrypted. - Brieftasche ist bereits verschlüsselt. - - - - Enter the new passphrase to the wallet. -Please use a passphrase of 10 or more random characters, or eight or more words. - Geben Sie die neue Passphrase für die Brieftasche ein -Bitte benutzen Sie eine Passphrase von 10 oder mehr zufälligen Zeichen oder acht oder mehr Wörtern. - - - - Error: The supplied passphrase was too short. - Fehler: Das eingegebene Passwort war zu kurz. - - - - WARNING: If you encrypt your wallet and lose your passphrase, you will LOSE ALL OF YOUR BITCOINS! -Are you sure you wish to encrypt your wallet? - WARNUNG: Wenn Sie Ihre Brieftasche verschlüsseln und Ihre Passphrase verlieren, werden Sie <b>ALLE IHRE BITCOINS VERLIEREN</b>! Sind Sie sich sicher, dass Sie Ihre Brieftasche verschlüsseln möchten? - - - - Please re-enter your new wallet passphrase. - Bitte geben Sie Ihr neues Brieftaschenpasswort erneut ein. - - - - Error: the supplied passphrases didn't match. - Fehler: Die eingegebenen Passphrasen stimmen nicht überein. - - - - Wallet encryption failed. - Verschlüsselung der Brieftasche fehlgeschlagen. - - - - Wallet Encrypted. -Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - - - - - Wallet is unencrypted, please encrypt it first. - Brieftasche nicht verschlüsselt, bitte zuerst verschlüsseln. - - - - Enter the new passphrase for the wallet. - Gib eine neue Passphrase für die Brieftasche eine. - - - - Re-enter the new passphrase for the wallet. - Gib die neue Passphrase erneut ein. - - - - Wallet Passphrase Changed. - Passphrase geändert. - - - - New Receiving Address - Neue Empfangsadresse - - - - You should use a new address for each payment you receive. - -Label - - - - - <b>Status:</b> - <b>Status:</b> - - - - , has not been successfully broadcast yet - ; wurde noch nicht erfolgreich gesendet - - - - , broadcast through %d node - - - - - , broadcast through %d nodes - - - - - <b>Date:</b> - <b>Datum:</b> - - - - <b>Source:</b> Generated<br> - <b>Quelle:</b> Generiert<br> - - - - <b>From:</b> - <b>Von:</b> - - - - unknown - unbekannt - - - - <b>To:</b> - <b>An:</b> - - - - (yours, label: - (Ihre, Bezeichnung: - - - - (yours) - (Ihre) - - - - <b>Credit:</b> - <b>Gutschrift:</b> - - - - (%s matures in %d more blocks) - - - - - (not accepted) - (nicht angenommen) - - - - <b>Debit:</b> - <b>Belastung:</b> - - - - <b>Transaction fee:</b> - <b>Transaktionsgebühr:</b> - - - - <b>Net amount:</b> - <b>Nettobetrag:</b> - - - - Message: - Nachricht: - - - - Comment: - Kommentar: - - - - Generated coins must wait 120 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, it will change to "not accepted" and not be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Generierte Bitcoins müssen 120 Blöcke lang warten, bevor sie ausgegeben werden können. Als Sie diesen Block generierten, wurde er an das Netzwerk gesendet, um ihn der Blockkette hinzuzufügen. Falls dies fehlschlägt wird der Status in "nicht angenommen" geändert und der Betrag wird nicht verfügbar werden. Das kann gelegentlich passieren, wenn ein anderer Knoten einen Block zur selben Zeit wie Sie generierte. - - - - Cannot write autostart/bitcoin.desktop file - - - - - Main - Haupt - - - - &Start Bitcoin on window system startup - &Bitcoin beim Systemstart ausführen - - - - &Minimize on close - - - - - version %s - Version %s - - - - Error in amount - - - - - Send Coins - Bitcoins überweisen - - - - Amount exceeds your balance - Betrag übersteigt Ihr Guthaben - - - - Total exceeds your balance when the - - - - - transaction fee is included - - - - - Payment sent - Zahlung gesendet - - - - Sending... - Senden... - - - - Invalid address - ungültige Adresse - - - - Sending %s to %s - Sende %s an %s - - - - CANCELLED - ABGEBROCHEN - - - - Cancelled - Abgebrochen - - - - Transfer cancelled - - - - - Error: - Fehler: - - - - Insufficient funds - Unzureichender Kontostand - - - - Connecting... - Verbinde... - - - - Unable to connect - Kann nicht verbinden - - - - Requesting public key... - - - - - Received public key... - - - - - Recipient is not accepting transactions sent by IP address - - - - - Transfer was not accepted - - - - - Invalid response received - - - - - Creating transaction... - - - - - This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - - - - - Transaction creation failed - - - - - Transaction aborted - Transaktion abgebrochen - - - - Lost connection, transaction cancelled - - - - - Sending payment... - Sende Zahlung... - - - - The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. - Fehler: Die Transaktion wurde abgelehnt. Dies kann passieren, wenn einige Ihrer Bitcoins aus Ihrer Brieftasche bereits ausgegeben wurden (z.B. aus einer Sicherungskopie Ihrer wallet.dat). - - - - Waiting for confirmation... - Warte auf Bestätigung... - - - - The payment was sent, but the recipient was unable to verify it. -The transaction is recorded and will credit to the recipient, -but the comment information will be blank. - - - - - Payment was sent, but an invalid response was received - - - - - Payment completed - Die Zahlung wurde abgeschlossen - - - - Name - Name - - - - Address - Adresse - - - - Label - Bezeichnung - - - - Bitcoin Address - Bitcoin Adresse - - - - This is one of your own addresses for receiving payments and cannot be entered in the address book. - - - - - Edit Address - Adresse bearbeiten - - - - Edit Address Label - - - - - Add Address - Adresse hinzufügen - - - - Bitcoin - Bitcoin - - - - Bitcoin - Generating - Bitcoin - Generiere - - - - Bitcoin - (not connected) - Bitcoin - (nicht verbunden) - - - - &Open Bitcoin - - - - - &Send Bitcoins - - - - - O&ptions... - - - - - E&xit - - - - - Program has crashed and will terminate. - - - - - Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. - Bitte prüfen Sie Ihre Datums- und Uhrzeiteinstellungen, ansonsten kann es sein das BitCoin nicht ordnungsgemäss funktioniert. - - - beta Beta @@ -2306,9 +1787,9 @@ but the comment information will be blank. main - - Bitcoin Qt - Bitcoin Qt + + Bitcoin-Qt + - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_en.ts b/src/qt/locale/bitcoin_en.ts index 122f6d56a59..31ea0e5d0c2 100644 --- a/src/qt/locale/bitcoin_en.ts +++ b/src/qt/locale/bitcoin_en.ts @@ -16,7 +16,7 @@ - Copyright © 2009-2011 Bitcoin Developers + Copyright © 2009-2012 Bitcoin Developers This is experimental software. @@ -74,22 +74,22 @@ This product includes software developed by the OpenSSL Project for use in the O - + Export Address Book Data - + Comma separated file (*.csv) - + Error exporting - + Could not write to file %1. @@ -97,17 +97,17 @@ This product includes software developed by the OpenSSL Project for use in the O AddressTableModel - + Label - + Address - + (no label) @@ -121,124 +121,131 @@ This product includes software developed by the OpenSSL Project for use in the O + TextLabel - + Enter passphrase - + New passphrase - + Repeat new passphrase - + Enter the new passphrase to the wallet.<br/>Please use a passphrase of <b>10 or more random characters</b>, or <b>eight or more words</b>. - + Encrypt wallet - + This operation needs your wallet passphrase to unlock the wallet. - + Unlock wallet - + This operation needs your wallet passphrase to decrypt the wallet. - + Decrypt wallet - + Change passphrase - + Enter the old and new passphrase to the wallet. - + Confirm wallet encryption - + WARNING: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! Are you sure you wish to encrypt your wallet? - - + + Wallet encrypted - - Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. + + + Warning: The Caps Lock key is on. - - - - + + + + Wallet encryption failed - + Wallet encryption failed due to an internal error. Your wallet was not encrypted. - - - The supplied passphrases do not match. + + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - Wallet unlock failed - - - - - - - The passphrase entered for the wallet decryption was incorrect. + + The supplied passphrases do not match. + Wallet unlock failed + + + + + + + The passphrase entered for the wallet decryption was incorrect. + + + + Wallet decryption failed - + Wallet passphrase was succesfully changed. @@ -246,262 +253,273 @@ Are you sure you wish to encrypt your wallet? BitcoinGUI - + Bitcoin Wallet - + + Synchronizing with network... - + Block chain synchronization in progress - + &Overview - + Show general overview of wallet - + &Transactions - + Browse transaction history - + &Address Book - + Edit the list of stored addresses and labels - + &Receive coins - + Show the list of addresses for receiving payments - + &Send coins - + Send coins to a bitcoin address - + E&xit - + Quit application - + &About %1 - + Show information about Bitcoin - + &Options... - + Modify configuration options for bitcoin - + Open &Bitcoin - + Show the Bitcoin window - + &Export... - + Export the current view to a file - + &Encrypt Wallet - + Encrypt or decrypt wallet - + &Change Passphrase - + Change the passphrase used for wallet encryption - - &File + + About &Qt - - &Settings - - - - - &Help + + Show information about Qt + &File + + + + + &Settings + + + + + &Help + + + + Tabs toolbar - + Actions toolbar - + [testnet] - + bitcoin-qt - + %n active connection(s) to Bitcoin network - + %n active connection to Bitcoin network %n active connections to Bitcoin network - + Downloaded %1 of %2 blocks of transaction history. - + Downloaded %1 blocks of transaction history. - + %n second(s) ago - + %n second ago %n seconds ago - + %n minute(s) ago - + %n minute ago %n minutes ago - + %n hour(s) ago - + %n hour ago %n hours ago - + %n day(s) ago - + %n day ago %n days ago - + Up to date - + Catching up... - + Last received block was generated %1. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? - + Sending... - + Sent transaction - + Incoming transaction - + Date: %1 Amount: %2 Type: %3 @@ -510,15 +528,20 @@ Address: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + + DisplayOptionsPage @@ -534,7 +557,12 @@ Address: %4 - Display addresses in transaction list + &Display addresses in transaction list + + + + + Whether to show Bitcoin addresses in the transaction list @@ -586,22 +614,22 @@ Address: %4 - + The entered address "%1" is already in the address book. - + The entered address "%1" is not a valid bitcoin address. - + Could not unlock wallet. - + New key generation failed. @@ -680,7 +708,7 @@ Address: %4 - Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. @@ -690,7 +718,7 @@ Address: %4 - Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. @@ -750,16 +778,12 @@ Address: %4 - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> + + Wallet - + <b>Recent transactions</b> @@ -783,13 +807,13 @@ p, li { white-space: pre-wrap; } SendCoinsDialog - - - - - - - + + + + + + + Send Coins @@ -804,82 +828,87 @@ p, li { white-space: pre-wrap; } - + Clear all - + + Remove all transaction fields + + + + Balance: - + 123.456 BTC - + Confirm the send action - + &Send - + <b>%1</b> to %2 (%3) - + Confirm send coins - + Are you sure you want to send %1? - + and - + The recepient address is not valid, please recheck. - + The amount to pay must be larger than 0. - + Amount exceeds your balance - + Total exceeds your balance when the %1 transaction fee is included - + Duplicate address found, can only send to each address once in one send operation - + Error: Transaction creation failed - + Error: The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. @@ -1100,57 +1129,57 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date - + Type - + Address - + Amount - + Open for %n block(s) - + Open for %n block Open for %n blocks - + Open until %1 - + Offline (%1 confirmations) - + Unconfirmed (%1 of %2 confirmations) - + Confirmed (%1 confirmations) Mined balance will be available in %n more blocks - + Mined balance will be available in %n more block Mined balance will be available in %n more blocks @@ -1172,56 +1201,51 @@ p, li { white-space: pre-wrap; } - Received from IP + Received from - + Sent to - - Sent to IP - - - - + Payment to yourself - + Mined - + (n/a) - + Transaction status. Hover over this field to show number of confirmations. - + Date and time that the transaction was received. - + Type of transaction. - + Destination address of transaction. - + Amount removed from or added to balance. @@ -1320,67 +1344,67 @@ p, li { white-space: pre-wrap; } - + Export Transaction Data - + Comma separated file (*.csv) - + Confirmed - + Date - + Type - + Label - + Address - + Amount - + ID - + Error exporting - + Could not write to file %1. - + Range: - + to @@ -1396,895 +1420,335 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version - + Usage: - + Send command to -server or bitcoind - + List commands - + Get help for a command - + Options: - + Specify configuration file (default: bitcoin.conf) - + Specify pid file (default: bitcoind.pid) - + Generate coins - + Don't generate coins - + Start minimized - + Specify data directory - + Specify connection timeout (in milliseconds) - + Connect through socks4 proxy - + Allow DNS lookups for addnode and connect - + Add a node to connect to - + Connect only to the specified node - + Don't accept connections from outside - + Don't attempt to use UPnP to map the listening port - + Attempt to use UPnP to map the listening port - + Fee per kB to add to transactions you send - + Accept command line and JSON-RPC commands - + Run in the background as a daemon and accept commands - + Use the test network - + Username for JSON-RPC connections - + Password for JSON-RPC connections - + Listen for JSON-RPC connections on <port> (default: 8332) - + Allow JSON-RPC connections from specified IP address - + Send commands to node running on <ip> (default: 127.0.0.1) - + Set key pool size to <n> (default: 100) - + Rescan the block chain for missing wallet transactions - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) - + Use OpenSSL (https) for JSON-RPC connections - + Server certificate file (default: server.cert) - + Server private key (default: server.pem) - + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - + This help message - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. - + Loading addresses... - + Error loading addr.dat - + Loading block index... - + Error loading blkindex.dat - + Loading wallet... - + Error loading wallet.dat: Wallet corrupted - + Error loading wallet.dat: Wallet requires newer version of Bitcoin - + Error loading wallet.dat - + Rescanning... - + + Threshold for disconnecting misbehaving peers (default: 100) + + + + + + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) + + + + + Done loading - + Invalid -proxy address - + Invalid amount for -paytxfee=<amount> - + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. - + Error: CreateThread(StartNode) failed - + Warning: Disk space is low - + Unable to bind to port %d on this computer. Bitcoin is probably already running. - - - This transaction is over the size limit. You can still send it for a fee of %s, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? - - - - - Enter the current passphrase to the wallet. - - - - - Passphrase - - - - - Please supply the current wallet decryption passphrase. - - - - - The passphrase entered for the wallet decryption was incorrect. - - - - - Status - - - Date - - - - - Description - - - - - Debit - - - - - Credit - - - - - Open for %d blocks - - - - - Open until %s - - - - - %d/offline? - - - - - %d/unconfirmed - - - - - %d confirmations - - - - - Generated - - - - - Generated (%s matures in %d more blocks) - - - - - Generated - Warning: This block was not received by any other nodes and will probably not be accepted! - - - - - Generated (not accepted) - - - - - From: - - - - - Received with: - - - - - Payment to yourself - - - - - To: - - - - - Generating - - - - - (not connected) - - - - - %d connections %d blocks %d transactions - - - - - Wallet already encrypted. - - - - - Enter the new passphrase to the wallet. -Please use a passphrase of 10 or more random characters, or eight or more words. - - - - - Error: The supplied passphrase was too short. - - - - - WARNING: If you encrypt your wallet and lose your passphrase, you will LOSE ALL OF YOUR BITCOINS! -Are you sure you wish to encrypt your wallet? - - - - - Please re-enter your new wallet passphrase. - - - - - Error: the supplied passphrases didn't match. - - - - - Wallet encryption failed. - - - - - Wallet Encrypted. -Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - - - - - Wallet is unencrypted, please encrypt it first. - - - - - Enter the new passphrase for the wallet. - - - - - Re-enter the new passphrase for the wallet. - - - - - Wallet Passphrase Changed. - - - - - New Receiving Address - - - - - You should use a new address for each payment you receive. - -Label - - - - - <b>Status:</b> - - - - - , has not been successfully broadcast yet - - - - - , broadcast through %d node - - - - - , broadcast through %d nodes - - - - - <b>Date:</b> - - - - - <b>Source:</b> Generated<br> - - - - - <b>From:</b> - - - - - unknown - - - - - <b>To:</b> - - - - - (yours, label: - - - - - (yours) - - - - - <b>Credit:</b> - - - - - (%s matures in %d more blocks) - - - - - (not accepted) - - - - - <b>Debit:</b> - - - - - <b>Transaction fee:</b> - - - - - <b>Net amount:</b> - - - - - Message: - - - - - Comment: - - - - - Generated coins must wait 120 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, it will change to "not accepted" and not be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - - - - Cannot write autostart/bitcoin.desktop file - - - - - Main - - - - - &Start Bitcoin on window system startup - - - - - &Minimize on close - - - - - version %s - - - - - Error in amount - - - - - Send Coins - - - - - Amount exceeds your balance - - - - - Total exceeds your balance when the - - - - - transaction fee is included - - - - - Payment sent - - - - - Sending... - - - - - Invalid address - - - - - Sending %s to %s - - - - - CANCELLED - - - - - Cancelled - - - - - Transfer cancelled - - - - - Error: - - - - - Insufficient funds - - - - - Connecting... - - - - - Unable to connect - - - - - Requesting public key... - - - - - Received public key... - - - - - Recipient is not accepting transactions sent by IP address - - - - - Transfer was not accepted - - - - - Invalid response received - - - - - Creating transaction... - - - - - This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - - - - - Transaction creation failed - - - - - Transaction aborted - - - - - Lost connection, transaction cancelled - - - - - Sending payment... - - - - - The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. - - - - - Waiting for confirmation... - - - - - The payment was sent, but the recipient was unable to verify it. -The transaction is recorded and will credit to the recipient, -but the comment information will be blank. - - - - - Payment was sent, but an invalid response was received - - - - - Payment completed - - - - - Name - - - - - Address - - - - - Label - - - - - Bitcoin Address - - - - - This is one of your own addresses for receiving payments and cannot be entered in the address book. - - - - - Edit Address - - - - - Edit Address Label - - - - - Add Address - - - - - Bitcoin - - - - - Bitcoin - Generating - - - - - Bitcoin - (not connected) - - - - - &Open Bitcoin - - - - - &Send Bitcoins - - - - - O&ptions... - - - - - E&xit - - - - - Program has crashed and will terminate. - - - - Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. - + beta @@ -2292,8 +1756,8 @@ but the comment information will be blank. main - - Bitcoin Qt + + Bitcoin-Qt diff --git a/src/qt/locale/bitcoin_es.ts b/src/qt/locale/bitcoin_es.ts index 768efaec8f7..826a28c9d93 100644 --- a/src/qt/locale/bitcoin_es.ts +++ b/src/qt/locale/bitcoin_es.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -14,14 +16,14 @@ - Copyright © 2009-2011 Bitcoin Developers + Copyright © 2009-2012 Bitcoin Developers This is experimental software. Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - Copyright (c) 2009-2010 Bitcoin Developers + Copyright © 2009-2012 Bitcoin Developers Este es un software experimental. @@ -81,22 +83,22 @@ Eric Young (eay@cryptsoft.com) y UPnP software escrito por Thomas Bernard.Bo&rrar - + Export Address Book Data Exporta datos de la Guia de direcciones - + Comma separated file (*.csv) Archivos separados por coma (*.csv) - + Error exporting Exportar errores - + Could not write to file %1. No se pudo escribir al archivo %1. @@ -104,17 +106,17 @@ Eric Young (eay@cryptsoft.com) y UPnP software escrito por Thomas Bernard. AddressTableModel - + Label Etiqueta - + Address Dirección - + (no label) (sin etiqueta) @@ -128,125 +130,132 @@ Eric Young (eay@cryptsoft.com) y UPnP software escrito por Thomas Bernard. + TextLabel Cambiar contraseña: - + Enter passphrase Introduce contraseña actual - + New passphrase Nueva contraseña - + Repeat new passphrase Repite nueva contraseña: - + Enter the new passphrase to the wallet.<br/>Please use a passphrase of <b>10 or more random characters</b>, or <b>eight or more words</b>. Introduce la nueva contraseña de cartera.<br/>Por favor utiliza un contraseña <b>de 10 o mas caracteres aleatorios</b>, u <b>ocho o mas palabras</b>. - + Encrypt wallet Encriptar cartera - + This operation needs your wallet passphrase to unlock the wallet. Esta operación necesita la contraseña para desbloquear la cartera. - + Unlock wallet Desbloquea cartera - + This operation needs your wallet passphrase to decrypt the wallet. Esta operación necesita la contraseña para decriptar la cartera. - + Decrypt wallet Decriptar cartera - + Change passphrase Cambia contraseña - + Enter the old and new passphrase to the wallet. Introduce la contraseña anterior y la nueva de cartera - + Confirm wallet encryption Confirma la encriptación de cartera - + WARNING: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! Are you sure you wish to encrypt your wallet? ATENCION: ¡Si encriptas tu cartera y pierdes la contraseña perderas <b>TODOS TUS BITCOINS</b>!" ¿Seguro que quieres seguir encriptando la cartera? - - + + Wallet encrypted Cartera encriptada - - Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - Recuerda que encriptando tu cartera no garantiza mantener a salvo tus bitcoins en caso de tener viruses en el ordenador. + + + Warning: The Caps Lock key is on. + - - - - + + + + Wallet encryption failed Encriptación de cartera fallida - + Wallet encryption failed due to an internal error. Your wallet was not encrypted. Encriptación de cartera fallida debido a un error interno. Tu cartera no ha sido encriptada. - - + + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. + Bitcoin se cerrará para finalizar el proceso de encriptación. Recuerda que encriptando tu cartera no garantiza mantener a salvo tus bitcoins en caso de tener viruses en el ordenador. + + + + The supplied passphrases do not match. Las contraseñas no coinciden. - + Wallet unlock failed Desbloqueo de cartera fallido - - + + The passphrase entered for the wallet decryption was incorrect. La contraseña introducida para decriptar la cartera es incorrecta. - + Wallet decryption failed Decriptación de cartera fallida - + Wallet passphrase was succesfully changed. La contraseña de cartera ha sido cambiada con exit. @@ -254,247 +263,273 @@ Are you sure you wish to encrypt your wallet? BitcoinGUI - + Bitcoin Wallet Cartera Bitcoin - + + Synchronizing with network... Sincronizando con la red... - + Block chain synchronization in progress Sincronización cadena de bloques en progreso - + &Overview &Vista general - + Show general overview of wallet Muestra una vista general de cartera - + &Transactions &Transacciónes - + Browse transaction history Visiona el historial de transacciónes - + &Address Book &Guia de direcciónes - + Edit the list of stored addresses and labels Edita la lista de las direcciónes y etiquetas almacenada - + &Receive coins &Recibe monedas - + Show the list of addresses for receiving payments Muestra la lista de direcciónes utilizadas para recibir pagos - + &Send coins &Envia monedas - + Send coins to a bitcoin address Envia monedas a una dirección bitcoin - + E&xit &Salir - + Quit application Salir de la aplicación - + &About %1 S&obre %1 - + Show information about Bitcoin Muestra información sobre Bitcoin - + &Options... &Opciones - + Modify configuration options for bitcoin Modifica opciones de configuración - + Open &Bitcoin Abre &Bitcoin - + Show the Bitcoin window Muestra la ventana de Bitcoin - + &Export... &Exporta... - + Export the current view to a file Exporta la vista actual a un archivo - + &Encrypt Wallet &Encriptar cartera - + Encrypt or decrypt wallet Encriptar o decriptar cartera - + &Change Passphrase &Cambiar la contraseña - + Change the passphrase used for wallet encryption Cambiar la contraseña utilizada para la encriptación de cartera - + + About &Qt + + + + + Show information about Qt + Muestra información sobre Qt + + + &File &Archivo - + &Settings &Configuración - + &Help &Ayuda - + Tabs toolbar Barra de pestañas - + Actions toolbar Barra de acciónes - + [testnet] [testnet] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - %n conexión activa hacia la red Bitcoin%n conexiones activas hacia la red Bitcoin + + %n conexión activa hacia la red Bitcoin + %n conexiones activas hacia la red Bitcoin + - + Downloaded %1 of %2 blocks of transaction history. Se han bajado %1 de %2 bloques de historial. - + Downloaded %1 blocks of transaction history. Se han bajado %1 bloques de historial. - + %n second(s) ago - Hace %n segundoHace %n segundos + + Hace %n segundo + Hace %n segundos + - + %n minute(s) ago - Hace %n minutoHace %n minutos + + Hace %n minuto + Hace %n minutos + - + %n hour(s) ago - Hace %n horaHace %n horas + + Hace %n hora + Hace %n horas + - + %n day(s) ago - Hace %n díaHace %n días + + Hace %n día + Hace %n días + - + Up to date Actualizado - + Catching up... Recuperando... - + Last received block was generated %1. El ultimo bloque recibido fue generado %1. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? Esta transacción supera el límite. Puedes seguir enviandola incluyendo una comisión de %s que se va a repartir entre los nodos que procesan su transacción y ayudan a mantener la red. ¿Quieres seguir con la transacción? - + Sending... Enviando... - + Sent transaction Transacción enviada - + Incoming transaction Transacción entrante - + Date: %1 Amount: %2 Type: %3 @@ -506,15 +541,20 @@ Tipo: %3 Dirección: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> La cartera esta <b>encriptada</b> y actualmente <b>desbloqueda</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> La cartera esta <b>encriptada</b> y actualmente <b>bloqueda</b> + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + + DisplayOptionsPage @@ -530,8 +570,13 @@ Dirección: %4 - Display addresses in transaction list - Muestra direcciones en el listado de movimientos + &Display addresses in transaction list + &Muestra direcciones en el listado de movimientos + + + + Whether to show Bitcoin addresses in the transaction list + @@ -582,22 +627,22 @@ Dirección: %4 Editar dirección de envio - + The entered address "%1" is already in the address book. La dirección introducia "%1" ya esta guardada en la guia. - + The entered address "%1" is not a valid bitcoin address. La dirección introducida "%1" no es una dirección Bitcoin valida. - + Could not unlock wallet. No se pudo desbloquear la cartera. - + New key generation failed. La generación de nueva clave fallida. @@ -676,8 +721,8 @@ Dirección: %4 - Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. - Comisión opcional a las transacciones por kB que ayuda a asegurar que tus transacciones son procesadas rápidamente. La mayoría de las transacciones son de 1kB. Se recomienda una comisión de 0.01. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. + Comisión opcional a las transacciones por kB que ayuda a asegurar que tus transacciones son procesadas rápidamente. La mayoría de las transacciones son de 1 kB. Se recomienda una comisión de 0.01. @@ -686,8 +731,8 @@ Dirección: %4 - Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. - Comisión opcional a las transacciones por kB que ayuda a asegurar que tus transacciones son procesadas rápidamente. La mayoría de las transacciones son de 1kB. Se recomienda una comisión de 0.01. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. + Comisión opcional a las transacciones por kB que ayuda a asegurar que tus transacciones son procesadas rápidamente. La mayoría de las transacciones son de 1 kB. Se recomienda una comisión de 0.01. @@ -746,20 +791,12 @@ Dirección: %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Cartera</span></p></body></html> + + Wallet + Cartera - + <b>Recent transactions</b> <b>Movimientos recientes</b> @@ -783,13 +820,13 @@ p, li { white-space: pre-wrap; } SendCoinsDialog - - - - - - - + + + + + + + Send Coins Envia monedas @@ -804,82 +841,87 @@ p, li { white-space: pre-wrap; } &Agrega destinatario... - + Clear all &Borra todos - + + Remove all transaction fields + + + + Balance: Balance: - + 123.456 BTC 123.456 BTC - + Confirm the send action Confirma el envio - + &Send &Envía - + <b>%1</b> to %2 (%3) <b>%1</b> to %2 (%3) - + Confirm send coins Confirmar el envio de monedas - + Are you sure you want to send %1? Estas seguro que quieres enviar %1? - + and y - + The recepient address is not valid, please recheck. La dirección de destinatarion no es valida, comprueba otra vez. - + The amount to pay must be larger than 0. La cantidad por pagar tiene que ser mayor 0. - + Amount exceeds your balance La cantidad sobrepasa tu saldo - + Total exceeds your balance when the %1 transaction fee is included El total sobrepasa tu saldo cuando se incluyen %1 como tasa de envio - + Duplicate address found, can only send to each address once in one send operation Tienes una dirección duplicada, solo puedes enviar a direcciónes individuales de una sola vez - + Error: Transaction creation failed Error: La transacción no se pudo crear - + Error: The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. Error: La transacción fue rechazada. Esto puede haber ocurrido si alguna de las monedas ya estaba gastada o si ha usado una copia de wallet.dat y las monedas se gastaron en la copia pero no se han marcado como gastadas aqui. @@ -1100,54 +1142,60 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date Fecha - + Type Tipo - + Address Dirección - + Amount Cantidad - + Open for %n block(s) - Abierto por %n bloqueAbierto por %n bloques + + Abierto por %n bloque + Abierto por %n bloques + - + Open until %1 Abierto hasta %1 - + Offline (%1 confirmations) Fuera de linea (%1 confirmaciónes) - + Unconfirmed (%1 of %2 confirmations) No confirmado (%1 de %2 confirmaciónes) - + Confirmed (%1 confirmations) Confirmado (%1 confirmaciones) Mined balance will be available in %n more blocks - El balance minado estará disponible en %n bloque masEl balance minado estará disponible en %n bloques mas + + El balance minado estará disponible en %n bloque mas + El balance minado estará disponible en %n bloques mas + @@ -1166,56 +1214,51 @@ p, li { white-space: pre-wrap; } - Received from IP - Recibido de IP + Received from + Recibido de - + Sent to Enviado a - - Sent to IP - Enviado a IP - - - + Payment to yourself Pago proprio - + Mined Minado - + (n/a) (n/a) - + Transaction status. Hover over this field to show number of confirmations. Estado de transacción. Pasa el raton sobre este campo para ver el numero de confirmaciónes. - + Date and time that the transaction was received. Fecha y hora cuando se recibió la transaccion - + Type of transaction. Tipo de transacción. - + Destination address of transaction. Dirección de destino para la transacción - + Amount removed from or added to balance. Cantidad restada o añadida al balance @@ -1314,67 +1357,67 @@ p, li { white-space: pre-wrap; } Muestra detalles... - + Export Transaction Data Exportar datos de transacción - + Comma separated file (*.csv) Archivos separados por coma (*.csv) - + Confirmed Confirmado - + Date Fecha - + Type Tipo - + Label Etiqueta - + Address Dirección - + Amount Cantidad - + ID ID - + Error exporting Error exportando - + Could not write to file %1. No se pudo escribir en el archivo %1. - + Range: Rango: - + to para @@ -1390,220 +1433,220 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version Versión Bitcoin - + Usage: Uso: - + Send command to -server or bitcoind Envia comando a bitcoin lanzado con -server u bitcoind - + List commands Muestra comandos - + Get help for a command Recibir ayuda para un comando - + Options: Opciones: - + Specify configuration file (default: bitcoin.conf) Especifica archivo de configuración (predeterminado: bitcoin.conf) - + Specify pid file (default: bitcoind.pid) Especifica archivo pid (predeterminado: bitcoin.pid) - + Generate coins Genera monedas - - Don't generate coins + + Don't generate coins No generar monedas - + Start minimized Arranca minimizado - + Specify data directory Especifica directorio para los datos - + Specify connection timeout (in milliseconds) Especifica tiempo de espera para conexion (en milisegundos) - + Connect through socks4 proxy Conecta mediante proxy socks4 - + Allow DNS lookups for addnode and connect Permite búsqueda DNS para addnode y connect - + Add a node to connect to Agrega un nodo para conectarse - + Connect only to the specified node Conecta solo al nodo especificado - - Don't accept connections from outside + + Don't accept connections from outside No aceptar conexiones desde el exterior - - Don't attempt to use UPnP to map the listening port + + Don't attempt to use UPnP to map the listening port No intentar usar UPnP para mapear el puerto de entrada - + Attempt to use UPnP to map the listening port Intenta usar UPnP para mapear el puerto de escucha. - + Fee per kB to add to transactions you send Comisión por kB para agregar a las transacciones que envias - + Accept command line and JSON-RPC commands Aceptar comandos consola y JSON-RPC - + Run in the background as a daemon and accept commands Correr como demonio y acepta comandos - + Use the test network Usa la red de pruebas - + Username for JSON-RPC connections Usuario para las conexiones JSON-RPC - + Password for JSON-RPC connections Contraseña para las conexiones JSON-RPC - + Listen for JSON-RPC connections on <port> (default: 8332) Escucha conexiones JSON-RPC en el puerto <port> (predeterminado: 8332) - + Allow JSON-RPC connections from specified IP address Permite conexiones JSON-RPC desde la dirección IP especificada - + Send commands to node running on <ip> (default: 127.0.0.1) Envia comando al nodo situado en <ip> (predeterminado: 127.0.0.1) - + Set key pool size to <n> (default: 100) Ajusta el numero de claves en reserva <n> (predeterminado: 100) - + Rescan the block chain for missing wallet transactions Rescanea la cadena de bloques para transacciones perdidas de la cartera - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -1611,722 +1654,155 @@ SSL options: (see the Bitcoin Wiki for SSL setup instructions) - + Use OpenSSL (https) for JSON-RPC connections Usa OpenSSL (https) para las conexiones JSON-RPC - + Server certificate file (default: server.cert) Certificado del servidor (Predeterminado: server.cert) - + Server private key (default: server.pem) Clave privada del servidor (Predeterminado: server.pem) - + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) Cifrados aceptados (Predeterminado: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - + This help message Este mensaje de ayuda - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. No se puede obtener permiso de trabajo en la carpeta de datos %s. Probablemente Bitcoin ya se está ejecutando. - + Loading addresses... Cargando direcciónes... - + Error loading addr.dat Error cargando addr.dat - + Loading block index... Cargando el index de bloques... - + Error loading blkindex.dat Error cargando blkindex.dat - + Loading wallet... Cargando cartera... - + Error loading wallet.dat: Wallet corrupted Error cargando wallet.dat: Cartera dañada - + Error loading wallet.dat: Wallet requires newer version of Bitcoin Error cargando el archivo wallet.dat: Se necesita una versión mas nueva de Bitcoin - + Error loading wallet.dat Error cargando wallet.dat - + Rescanning... Rescaneando... - + + Threshold for disconnecting misbehaving peers (default: 100) + + + + + + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) + + + + + Done loading Carga completa - + Invalid -proxy address Dirección -proxy invalida - + Invalid amount for -paytxfee=<amount> Cantidad inválida para -paytxfee=<amount> - + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. Precaución: -paytxfee es muy alta. Esta es la comisión que pagarás si envias una transacción. - + Error: CreateThread(StartNode) failed Error: CreateThread(StartNode) fallido - + Warning: Disk space is low Atención: Poco espacio en el disco duro - + Unable to bind to port %d on this computer. Bitcoin is probably already running. No es posible escuchar en el puerto %d en este ordenador. Probablemente Bitcoin ya se está ejecutando. - - - This transaction is over the size limit. You can still send it for a fee of %s, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? - Esta transacción supera el límite. Puedes seguir enviandola incluyendo una comisión de %s que se va a repartir entre los nodos que procesan su transacción y ayudan a mantener la red. ¿Quieres seguir con la transacción? - - - - Enter the current passphrase to the wallet. - Introduce la contraseña actual de la cartera. - - - - Passphrase - Contraseña - - - - Please supply the current wallet decryption passphrase. - Por favor introduce la contraseña actual de la cartera. - - - - The passphrase entered for the wallet decryption was incorrect. - La contraseña introducida para decriptar la cartera es incorrecta. - - - - Status - Estado - - Date - Fecha - - - - Description - Descripción - - - - Debit - Debito - - - - Credit - Credito - - - - Open for %d blocks - Abierto para %d bloques - - - - Open until %s - Abierto hasta %s - - - - %d/offline? - %d/fuera de linea? - - - - %d/unconfirmed - %d/no confirmado - - - - %d confirmations - %d confirmaciónes - - - - Generated - Generado - - - - Generated (%s matures in %d more blocks) - Generado (%s madura en %d bloques) - - - - Generated - Warning: This block was not received by any other nodes and will probably not be accepted! - Generado - Cuidado: Este bloque no se recibió de otros nodos y probablemente no sea aceptado! - - - - Generated (not accepted) - Generado (no aceptado) - - - - From: - De: - - - - Received with: - Recibido con: - - - - Payment to yourself - Pago a ti mismo - - - - To: - Para: - - - - Generating - Generando - - - - (not connected) - (no conectado) - - - - %d connections %d blocks %d transactions - %d conexiones %d bloques %d transacciones - - - - Wallet already encrypted. - La cartera ya esta encriptada. - - - - Enter the new passphrase to the wallet. -Please use a passphrase of 10 or more random characters, or eight or more words. - Introduce la nueva contraseña de cartera. -Por favor utiliza un contraseña de 10 o mas caracteres aleatorios, u ocho o mas palabras. - - - - Error: The supplied passphrase was too short. - Error: La contraseña introducida es demasiado corta. - - - - WARNING: If you encrypt your wallet and lose your passphrase, you will LOSE ALL OF YOUR BITCOINS! -Are you sure you wish to encrypt your wallet? - ATENCION: ¡Si encriptas tu cartera y pierdes la contraseña perderas TODOS TUS BITCOINS! -¿Estas seguro que quieres seguir encriptando la cartera? - - - - Please re-enter your new wallet passphrase. - Por favor vuelve introducir la nueva contraseña. - - - - Error: the supplied passphrases didn't match. - Error: las contraseñas no son identicas. - - - - Wallet encryption failed. - Encriptacion de cartera fallida. - - - - Wallet Encrypted. -Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - Cartera Encriptada. -Recuerda que encriptando tu cartera no garantiza mantener a salvo tus bitcoins en caso de tener viruses en el ordenador. - - - - Wallet is unencrypted, please encrypt it first. - Cartera no encriptada, intenta encriptar primero. - - - - Enter the new passphrase for the wallet. - Introduce la nueva contraseña para la cartera. - - - - Re-enter the new passphrase for the wallet. - Reintroduce la nueva contraseña para la cartera. - - - - Wallet Passphrase Changed. - Contraseña de cartera cambiada. - - - - New Receiving Address - Nueva dirección de recepción - - - - You should use a new address for each payment you receive. - -Label - Debes usar una nueva dirección para cada pago que usted recibe. - -Etiqueta - - - - <b>Status:</b> - <b>Estado:</b> - - - - , has not been successfully broadcast yet - , no ha sido emitido satisfactoriamente todavía - - - - , broadcast through %d node - , emitido mediante %d nodo - - - - , broadcast through %d nodes - , emitido mediante %d nodos - - - - <b>Date:</b> - <b>Fecha:</b> - - - - <b>Source:</b> Generated<br> - <b>Fuente:</b> Generado<br> - - - - <b>From:</b> - <b>De:</b> - - - - unknown - desconocido - - - - <b>To:</b> - <b>Para:</b> - - - - (yours, label: - (tuya, etiqueta: - - - - (yours) - (tuya) - - - - <b>Credit:</b> - <b>Crédito:</b> - - - - (%s matures in %d more blocks) - (%s madura en %d bloques) - - - - (not accepted) - (no aceptada) - - - - <b>Debit:</b> - <b>Débito:</b> - - - - <b>Transaction fee:</b> - <b>Comisión transacción:</b> - - - - <b>Net amount:</b> - <b>Cantidad total:</b> - - - - Message: - Mensaje: - - - - Comment: - Comentario: - - - - Generated coins must wait 120 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, it will change to "not accepted" and not be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Las monedas generadas deben esperar 120 bloques antes de ser gastadas. Cuando has generado este bloque se emitió a la red para ser agregado en la cadena de bloques. Si falla al incluirse en la cadena, cambiará a "no aceptado" y las monedas no se podrán gastar. Esto puede ocurrir ocasionalmente si otro nodo genera un bloque casi al mismo tiempo que el tuyo. - - - - Cannot write autostart/bitcoin.desktop file - No se puede escribir el fichero autostart/bitcoin.desktop - - - - Main - Principal - - - - &Start Bitcoin on window system startup - &Arranca Bitcoin al iniciar el sistema - - - - &Minimize on close - &Minimiza al cerrar - - - - version %s - versión %s - - - - Error in amount - Error en la cantidad - - - - Send Coins - Envia monedas - - - - Amount exceeds your balance - La cantidad sobrepasa tu balance - - - - Total exceeds your balance when the - El total sobrepasa tu balance cuando se - - - - transaction fee is included - incluyen las tasas de transacción - - - - Payment sent - Pago enviado - - - - Sending... - Enviando... - - - - Invalid address - Dirección inválida - - - - Sending %s to %s - Enviando %s a %s - - - - CANCELLED - CANCELADO - - - - Cancelled - Cancelado - - - - Transfer cancelled - Transferencia cancelada - - - - Error: - Error: - - - - Insufficient funds - Fondos insuficientes - - - - Connecting... - Conectando... - - - - Unable to connect - No es posible conectar - - - - Requesting public key... - Pidiendo clave pública... - - - - Received public key... - Clave pública recibida... - - - - Recipient is not accepting transactions sent by IP address - El destinatario no accepta transacciones enviadas a direcciones IP - - - - Transfer was not accepted - La transferencia no fue aceptada - - - - Invalid response received - Respuesta inválida recibida - - - - Creating transaction... - Creando transacción... - - - - This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - Esta transacción requiere una comisión de al menos %s por su cantidad, complejidad o uso de fondos recibidos recientemente - - - - Transaction creation failed - Fallo al crear la transacción. - - - - Transaction aborted - Transacción abortada - - - - Lost connection, transaction cancelled - Conexión perdida, transacción cancelada - - - - Sending payment... - Enviando pago... - - - - The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. - La transacción fue rechazada. Esto puede haber ocurrido si alguna de las monedas ya estaba gastada o si ha usado una copia de wallet.dat y las monedas se gastaron en la copia pero no se han marcado como gastadas aqui. - - - - Waiting for confirmation... - Esperando confirmación... - - - - The payment was sent, but the recipient was unable to verify it. -The transaction is recorded and will credit to the recipient, -but the comment information will be blank. - El pago se ha enviado, pero el receptor no pudo verificarlo. -La transacción se grabó y el saldo fue transferido, -pero la información de los comentarios quedará en blanco. - - - - Payment was sent, but an invalid response was received - El pago fue enviado, pero se recibió una respuesta inválida - - - - Payment completed - Pago completado - - - - Name - Nombre - - - - Address - Dirección - - - - Label - Etiqueta - - - - Bitcoin Address - Dirección Bitcoin - - - - This is one of your own addresses for receiving payments and cannot be entered in the address book. - Esta es una de sus direcciones para recibir pagos y no puede incluirse en la libreta de direcciones. - - - - Edit Address - Edita dirección - - - - Edit Address Label - Edita etiqueta dirección - - - - Add Address - Agrega dirección - - - - Bitcoin - Bitcoin - - - - Bitcoin - Generating - Bitcoin - Generando - - - - Bitcoin - (not connected) - Bitcoin - (no conectado) - - - - &Open Bitcoin - &Abre Bitcoin - - - - &Send Bitcoins - &Envia Bitcoins - - - - O&ptions... - O&pciones - - - - E&xit - S&alir - - - - Program has crashed and will terminate. - El programa ha detectado un error y va a cerrarse. - - - Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. Precaución: Por favor revisa que la fecha y hora de tu ordenador son correctas. Si tu reloj está mal Bitcoin no funcionará correctamente. - + beta beta @@ -2334,9 +1810,9 @@ pero la información de los comentarios quedará en blanco. main - - Bitcoin Qt - Bitcoin Qt + + Bitcoin-Qt + diff --git a/src/qt/locale/bitcoin_es_CL.ts b/src/qt/locale/bitcoin_es_CL.ts index c0bea54429b..af883fdebe5 100644 --- a/src/qt/locale/bitcoin_es_CL.ts +++ b/src/qt/locale/bitcoin_es_CL.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -14,14 +16,14 @@ - Copyright © 2009-2011 Bitcoin Developers + Copyright © 2009-2012 Bitcoin Developers This is experimental software. Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - Copyright © 2009-2011 Bitcoin Developers + Copyright © 2009-2012 Bitcoin Developers Este es un software experimental. @@ -81,22 +83,22 @@ Eric Young (eay@cryptsoft.com) y UPnP software escrito por Thomas Bernard.&Borrar - + Export Address Book Data Exporta datos de la guia de direcciones - + Comma separated file (*.csv) Archivos separados por coma (*.csv) - + Error exporting Exportar errores - + Could not write to file %1. No se pudo escribir al archivo %1. @@ -104,17 +106,17 @@ Eric Young (eay@cryptsoft.com) y UPnP software escrito por Thomas Bernard. AddressTableModel - + Label Etiqueta - + Address Dirección - + (no label) (sin etiqueta) @@ -128,125 +130,132 @@ Eric Young (eay@cryptsoft.com) y UPnP software escrito por Thomas Bernard. + TextLabel Cambiar contraseña: - + Enter passphrase Introduce contraseña actual - + New passphrase Nueva contraseña - + Repeat new passphrase Repite nueva contraseña: - + Enter the new passphrase to the wallet.<br/>Please use a passphrase of <b>10 or more random characters</b>, or <b>eight or more words</b>. Introduce la nueva contraseña para la billetera.<br/>Por favor utiliza un contraseña <b>de 10 o mas caracteres aleatorios</b>, u <b>ocho o mas palabras</b>. - + Encrypt wallet Codificar billetera - + This operation needs your wallet passphrase to unlock the wallet. Esta operación necesita la contraseña para desbloquear la billetera. - + Unlock wallet Desbloquea billetera - + This operation needs your wallet passphrase to decrypt the wallet. Esta operación necesita la contraseña para decodificar la billetara. - + Decrypt wallet Decodificar cartera - + Change passphrase Cambia contraseña - + Enter the old and new passphrase to the wallet. Introduce la contraseña anterior y la nueva de cartera - + Confirm wallet encryption Confirma la codificación de cartera - + WARNING: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! Are you sure you wish to encrypt your wallet? ATENCIÓN: ¡Si codificas tu billetera y pierdes la contraseña perderás <b>TODOS TUS BITCOINS</b>!" ¿Seguro que quieres seguir codificando la billetera? - - + + Wallet encrypted Billetera codificada - - Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - Recuerda que codificando tu billetera no garantiza mantener a salvo tus bitcoins en caso de tener virus en el computador. + + + Warning: The Caps Lock key is on. + Precaucion: Mayúsculas Activadas - - - - + + + + Wallet encryption failed Falló la codificación de la billetera - + Wallet encryption failed due to an internal error. Your wallet was not encrypted. La codificación de la billetera falló debido a un error interno. Tu billetera no ha sido codificada. - - + + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. + Bitcoin se cerrará para finalizar el proceso de encriptación. Recuerde que encriptar su billetera no protegera completatamente sus bitcoins de ser robados por malware que infecte su computador + + + + The supplied passphrases do not match. Las contraseñas no coinciden. - + Wallet unlock failed Ha fallado el desbloqueo de la billetera - - + + The passphrase entered for the wallet decryption was incorrect. La contraseña introducida para decodificar la billetera es incorrecta. - + Wallet decryption failed Ha fallado la decodificación de la billetera - + Wallet passphrase was succesfully changed. La contraseña de billetera ha sido cambiada con éxito. @@ -254,247 +263,273 @@ Are you sure you wish to encrypt your wallet? BitcoinGUI - + Bitcoin Wallet Billetera Bitcoin - + + Synchronizing with network... Sincronizando con la red... - + Block chain synchronization in progress Sincronización de la cadena de bloques en progreso - + &Overview &Vista general - + Show general overview of wallet Muestra una vista general de la billetera - + &Transactions &Transacciónes - + Browse transaction history Explora el historial de transacciónes - + &Address Book &Guia de direcciónes - + Edit the list of stored addresses and labels Edita la lista de direcciones y etiquetas almacenadas - + &Receive coins &Recibir monedas - + Show the list of addresses for receiving payments Muestra la lista de direcciónes utilizadas para recibir pagos - + &Send coins &Envíar monedas - + Send coins to a bitcoin address Enviar monedas a una dirección bitcoin - + E&xit &Salir - + Quit application Salir del programa - + &About %1 S&obre %1 - + Show information about Bitcoin Muestra información acerca de Bitcoin - + &Options... &Opciones - + Modify configuration options for bitcoin Modifica las opciones de configuración de bitcoin - + Open &Bitcoin Abre &Bitcoin - + Show the Bitcoin window Muestra la ventana de Bitcoin - + &Export... &Exportar... - + Export the current view to a file Exportar la vista actual a un archivo - + &Encrypt Wallet &Codificar la billetera - + Encrypt or decrypt wallet Codificar o decodificar la billetera - + &Change Passphrase &Cambiar la contraseña - + Change the passphrase used for wallet encryption Cambiar la contraseña utilizada para la codificación de la billetera - + + About &Qt + Acerca de + + + + Show information about Qt + Mostrar Información sobre QT + + + &File &Archivo - + &Settings &Configuración - + &Help &Ayuda - + Tabs toolbar Barra de pestañas - + Actions toolbar Barra de acciónes - + [testnet] [red-de-pruebas] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - %n conexión activa hacia la red Bitcoin%n conexiones activas hacia la red Bitcoin + + %n conexión activa hacia la red Bitcoin + %n conexiones activas hacia la red Bitcoin + - + Downloaded %1 of %2 blocks of transaction history. Descargados %1 de %2 bloques del historial de transacciones. - + Downloaded %1 blocks of transaction history. Descargado %1 bloques del historial de transacciones. - + %n second(s) ago - Hace %n segundoHace %n segundos + + Hace %n segundo + Hace %n segundos + - + %n minute(s) ago - Hace %n minutoHace %n minutos + + Hace %n minuto + Hace %n minutos + - + %n hour(s) ago - Hace %n horaHace %n horas + + Hace %n hora + Hace %n horas + - + %n day(s) ago - Hace %n díaHace %n días + + Hace %n día + Hace %n días + - + Up to date Actualizado - + Catching up... Recuperando... - + Last received block was generated %1. El ultimo bloque recibido fue generado %1. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? Esta transacción supera el límite. Puedes seguir enviandola incluyendo una comisión de %s que se va a repartir entre los nodos que procesan su transacción y ayudan a mantener la red. ¿Quieres seguir con la transacción? - + Sending... Enviando... - + Sent transaction Transacción enviada - + Incoming transaction Transacción entrante - + Date: %1 Amount: %2 Type: %3 @@ -506,15 +541,20 @@ Tipo: %3 Dirección: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> La billetera esta <b>codificada</b> y actualmente <b>desbloqueda</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> La billetera esta <b>codificada</b> y actualmente <b>bloqueda</b> + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + + DisplayOptionsPage @@ -530,8 +570,13 @@ Dirección: %4 - Display addresses in transaction list - Muestra direcciones en el listado de transaccioines + &Display addresses in transaction list + &Muestra direcciones en el listado de transaccioines + + + + Whether to show Bitcoin addresses in the transaction list + @@ -582,22 +627,22 @@ Dirección: %4 Editar dirección de envio - + The entered address "%1" is already in the address book. La dirección introducida "%1" ya esta guardada en la libreta de direcciones. - + The entered address "%1" is not a valid bitcoin address. La dirección introducida "%1" no es una dirección Bitcoin valida. - + Could not unlock wallet. No se pudo desbloquear la billetera. - + New key generation failed. La generación de nueva clave falló. @@ -676,18 +721,18 @@ Dirección: %4 - Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. - Comisión de operación opcional por kB que ayuda a asegurar que tus transacciones sean procesadas rápidamente. La mayoría de las transacciones son de 1kB. Se recomienda una comisión de 0.01. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. + Comisión opcional por kB que ayuda a asegurar que sus transacciones son procesadas rápidamente. La mayoria de transacciones son de 1 KB. Se recomienda comisión de 0.01 Pay transaction &fee - Comision de &transacciónes + Comisión de &transacciónes - Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. - Comisión de operación opcional por kB que ayuda a asegurar que tus transacciones sean procesadas rápidamente. La mayoría de las transacciones son de 1kB. Se recomienda una comisión de 0.01. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. + Comisión opcional por kB que ayuda a asegurar que sus transacciones son procesadas rápidamente. La mayoria de transacciones son de 1 KB. Se recomienda comisión de 0.01 @@ -746,20 +791,12 @@ Dirección: %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Cartera</span></p></body></html> + + Wallet + Cartera - + <b>Recent transactions</b> <b>Transacciones recientes</b> @@ -783,13 +820,13 @@ p, li { white-space: pre-wrap; } SendCoinsDialog - - - - - - - + + + + + + + Send Coins Enviar monedas @@ -804,82 +841,87 @@ p, li { white-space: pre-wrap; } &Agrega destinatario... - + Clear all &Borra todos - + + Remove all transaction fields + Remover todos los campos de la transacción + + + Balance: Balance: - + 123.456 BTC 123.456 BTC - + Confirm the send action Confirma el envio - + &Send &Envía - + <b>%1</b> to %2 (%3) <b>%1</b> to %2 (%3) - + Confirm send coins Confirmar el envio de monedas - + Are you sure you want to send %1? Estas seguro que quieres enviar %1? - + and y - + The recepient address is not valid, please recheck. La dirección de destinatarion no es valida, comprueba otra vez. - + The amount to pay must be larger than 0. La cantidad por pagar tiene que ser mayor 0. - + Amount exceeds your balance La cantidad sobrepasa tu saldo - + Total exceeds your balance when the %1 transaction fee is included El total sobrepasa tu saldo cuando se incluyen %1 como tasa de envio - + Duplicate address found, can only send to each address once in one send operation Tienes una dirección duplicada, solo puedes enviar a direcciónes individuales de una sola vez - + Error: Transaction creation failed Error: La transacción no se pudo crear - + Error: The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. Error: La transacción fue rechazada. Esto puede haber ocurrido si alguna de las monedas ya estaba gastada o si ha usado una copia de wallet.dat y las monedas se gastaron en la copia pero no se han marcado como gastadas aqui. @@ -920,7 +962,7 @@ p, li { white-space: pre-wrap; } Choose address from address book - Elije dirección de la guia + Elije dirección de la guia @@ -1100,54 +1142,60 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date Fecha - + Type Tipo - + Address Dirección - + Amount Cantidad - + Open for %n block(s) - Abierto por %n bloqueAbierto por %n bloques + + Abierto por %n bloque + Abierto por %n bloques + - + Open until %1 Abierto hasta %1 - + Offline (%1 confirmations) Fuera de linea (%1 confirmaciónes) - + Unconfirmed (%1 of %2 confirmations) No confirmado (%1 de %2 confirmaciónes) - + Confirmed (%1 confirmations) Confirmado (%1 confirmaciones) Mined balance will be available in %n more blocks - El balance minado estará disponible en %n bloque masEl balance minado estará disponible en %n bloques mas + + El balance minado estará disponible en %n bloque mas + El balance minado estará disponible en %n bloques mas + @@ -1166,56 +1214,51 @@ p, li { white-space: pre-wrap; } - Received from IP - Recibido de IP + Received from + Recibido de - + Sent to Enviado a - - Sent to IP - Enviado a IP - - - + Payment to yourself - Pago proprio + Pagar a usted mismo - + Mined Minado - + (n/a) (n/a) - + Transaction status. Hover over this field to show number of confirmations. Estado de transacción. Pasa el raton sobre este campo para ver el numero de confirmaciónes. - + Date and time that the transaction was received. Fecha y hora cuando se recibió la transaccion - + Type of transaction. Tipo de transacción. - + Destination address of transaction. Dirección de destino para la transacción - + Amount removed from or added to balance. Cantidad restada o añadida al balance @@ -1314,67 +1357,67 @@ p, li { white-space: pre-wrap; } Muestra detalles... - + Export Transaction Data Exportar datos de transacción - + Comma separated file (*.csv) Archivos separados por coma (*.csv) - + Confirmed Confirmado - + Date Fecha - + Type Tipo - + Label Etiqueta - + Address Dirección - + Amount Cantidad - + ID ID - + Error exporting Error exportando - + Could not write to file %1. No se pudo escribir en el archivo %1. - + Range: Rango: - + to para @@ -1390,220 +1433,220 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version Versión Bitcoin - + Usage: Uso: - + Send command to -server or bitcoind Envia comando a bitcoin lanzado con -server u bitcoind - + List commands Muestra comandos - + Get help for a command Recibir ayuda para un comando - + Options: Opciones: - + Specify configuration file (default: bitcoin.conf) Especifica archivo de configuración (predeterminado: bitcoin.conf) - + Specify pid file (default: bitcoind.pid) Especifica archivo pid (predeterminado: bitcoin.pid) - + Generate coins Genera monedas - - Don't generate coins + + Don't generate coins No generar monedas - + Start minimized Arranca minimizado - + Specify data directory Especifica directorio para los datos - + Specify connection timeout (in milliseconds) Especifica tiempo de espera para conexion (en milisegundos) - + Connect through socks4 proxy Conecta mediante proxy socks4 - + Allow DNS lookups for addnode and connect Permite búsqueda DNS para addnode y connect - + Add a node to connect to Agrega un nodo para conectarse - + Connect only to the specified node Conecta solo al nodo especificado - - Don't accept connections from outside + + Don't accept connections from outside No aceptar conexiones desde el exterior - - Don't attempt to use UPnP to map the listening port + + Don't attempt to use UPnP to map the listening port No intentar usar UPnP para mapear el puerto de entrada - + Attempt to use UPnP to map the listening port Intenta usar UPnP para mapear el puerto de escucha. - + Fee per kB to add to transactions you send Comisión por kB para agregar a las transacciones que envias - + Accept command line and JSON-RPC commands Aceptar comandos consola y JSON-RPC - + Run in the background as a daemon and accept commands Correr como demonio y acepta comandos - + Use the test network Usa la red de pruebas - + Username for JSON-RPC connections Usuario para las conexiones JSON-RPC - + Password for JSON-RPC connections Contraseña para las conexiones JSON-RPC - + Listen for JSON-RPC connections on <port> (default: 8332) Escucha conexiones JSON-RPC en el puerto <port> (predeterminado: 8332) - + Allow JSON-RPC connections from specified IP address Permite conexiones JSON-RPC desde la dirección IP especificada - + Send commands to node running on <ip> (default: 127.0.0.1) Envia comando al nodo situado en <ip> (predeterminado: 127.0.0.1) - + Set key pool size to <n> (default: 100) Ajusta el numero de claves en reserva <n> (predeterminado: 100) - + Rescan the block chain for missing wallet transactions Rescanea la cadena de bloques para transacciones perdidas de la cartera - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -1611,722 +1654,155 @@ SSL options: (see the Bitcoin Wiki for SSL setup instructions) - + Use OpenSSL (https) for JSON-RPC connections Usa OpenSSL (https) para las conexiones JSON-RPC - + Server certificate file (default: server.cert) Certificado del servidor (Predeterminado: server.cert) - + Server private key (default: server.pem) Clave privada del servidor (Predeterminado: server.pem) - + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) Cifrados aceptados (Predeterminado: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - + This help message Este mensaje de ayuda - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. No se puede obtener permiso de trabajo en la carpeta de datos %s. Probablemente Bitcoin ya se está ejecutando. - + Loading addresses... Cargando direcciónes... - + Error loading addr.dat Error cargando addr.dat - + Loading block index... Cargando el index de bloques... - + Error loading blkindex.dat Error cargando blkindex.dat - + Loading wallet... Cargando cartera... - + Error loading wallet.dat: Wallet corrupted Error cargando wallet.dat: Cartera dañada - + Error loading wallet.dat: Wallet requires newer version of Bitcoin Error cargando el archivo wallet.dat: Se necesita una versión mas nueva de Bitcoin - + Error loading wallet.dat Error cargando wallet.dat - + Rescanning... Rescaneando... - + + Threshold for disconnecting misbehaving peers (default: 100) + + + + + + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) + + + + + Done loading Carga completa - + Invalid -proxy address Dirección -proxy invalida - + Invalid amount for -paytxfee=<amount> Cantidad inválida para -paytxfee=<amount> - + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. Precaución: -paytxfee es muy alta. Esta es la comisión que pagarás si envias una transacción. - + Error: CreateThread(StartNode) failed Error: CreateThread(StartNode) fallido - + Warning: Disk space is low Atención: Poco espacio en el disco duro - + Unable to bind to port %d on this computer. Bitcoin is probably already running. No es posible escuchar en el puerto %d en este ordenador. Probablemente Bitcoin ya se está ejecutando. - - - This transaction is over the size limit. You can still send it for a fee of %s, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? - Esta transacción supera el límite. Puedes seguir enviandola incluyendo una comisión de %s que se va a repartir entre los nodos que procesan su transacción y ayudan a mantener la red. ¿Quieres seguir con la transacción? - - - - Enter the current passphrase to the wallet. - Introduce la contraseña actual de la cartera. - - - - Passphrase - Contraseña - - - - Please supply the current wallet decryption passphrase. - Por favor introduce la contraseña actual de la cartera. - - - - The passphrase entered for the wallet decryption was incorrect. - La contraseña introducida para decriptar la cartera es incorrecta. - - - - Status - Estado - - Date - Fecha - - - - Description - Descripción - - - - Debit - Debito + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. + Precaución: Por favor revise que la fecha y hora de tu ordenador son correctas. Si tu reloj está mal configurado Bitcoin no funcionará correctamente. - Credit - Credito - - - - Open for %d blocks - Abierto para %d bloques - - - - Open until %s - Abierto hasta %s - - - - %d/offline? - %d/fuera de linea? - - - - %d/unconfirmed - %d/no confirmado - - - - %d confirmations - %d confirmaciónes - - - - Generated - Generado - - - - Generated (%s matures in %d more blocks) - Generado (%s madura en %d bloques) - - - - Generated - Warning: This block was not received by any other nodes and will probably not be accepted! - Generado - Cuidado: Este bloque no se recibió de otros nodos y probablemente no sea aceptado! - - - - Generated (not accepted) - Generado (no aceptado) - - - - From: - De: - - - - Received with: - Recibido con: - - - - Payment to yourself - Pago a ti mismo - - - - To: - Para: - - - - Generating - Generando - - - - (not connected) - (no conectado) - - - - %d connections %d blocks %d transactions - %d conexiones %d bloques %d transacciones - - - - Wallet already encrypted. - La cartera ya esta encriptada. - - - - Enter the new passphrase to the wallet. -Please use a passphrase of 10 or more random characters, or eight or more words. - Introduce la nueva contraseña de cartera. -Por favor utiliza un contraseña de 10 o mas caracteres aleatorios, u ocho o mas palabras. - - - - Error: The supplied passphrase was too short. - Error: La contraseña introducida es demasiado corta. - - - - WARNING: If you encrypt your wallet and lose your passphrase, you will LOSE ALL OF YOUR BITCOINS! -Are you sure you wish to encrypt your wallet? - ATENCION: ¡Si encriptas tu cartera y pierdes la contraseña perderas TODOS TUS BITCOINS! -¿Estas seguro que quieres seguir encriptando la cartera? - - - - Please re-enter your new wallet passphrase. - Por favor vuelve introducir la nueva contraseña. - - - - Error: the supplied passphrases didn't match. - Error: las contraseñas no son identicas. - - - - Wallet encryption failed. - Encriptacion de cartera fallida. - - - - Wallet Encrypted. -Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - Cartera Encriptada. -Recuerda que encriptando tu cartera no garantiza mantener a salvo tus bitcoins en caso de tener viruses en el ordenador. - - - - Wallet is unencrypted, please encrypt it first. - Cartera no encriptada, intenta encriptar primero. - - - - Enter the new passphrase for the wallet. - Introduce la nueva contraseña para la cartera. - - - - Re-enter the new passphrase for the wallet. - Reintroduce la nueva contraseña para la cartera. - - - - Wallet Passphrase Changed. - Contraseña de cartera cambiada. - - - - New Receiving Address - Nueva dirección de recepción - - - - You should use a new address for each payment you receive. - -Label - Debes usar una nueva dirección para cada pago que usted recibe. - -Etiqueta - - - - <b>Status:</b> - <b>Estado:</b> - - - - , has not been successfully broadcast yet - , no ha sido emitido satisfactoriamente todavía - - - - , broadcast through %d node - , emitido mediante %d nodo - - - - , broadcast through %d nodes - , emitido mediante %d nodos - - - - <b>Date:</b> - <b>Fecha:</b> - - - - <b>Source:</b> Generated<br> - <b>Fuente:</b> Generado<br> - - - - <b>From:</b> - <b>De:</b> - - - - unknown - desconocido - - - - <b>To:</b> - <b>Para:</b> - - - - (yours, label: - (tuya, etiqueta: - - - - (yours) - (tuya) - - - - <b>Credit:</b> - <b>Crédito:</b> - - - - (%s matures in %d more blocks) - (%s madura en %d bloques) - - - - (not accepted) - (no aceptada) - - - - <b>Debit:</b> - <b>Débito:</b> - - - - <b>Transaction fee:</b> - <b>Comisión transacción:</b> - - - - <b>Net amount:</b> - <b>Cantidad total:</b> - - - - Message: - Mensaje: - - - - Comment: - Comentario: - - - - Generated coins must wait 120 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, it will change to "not accepted" and not be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Las monedas generadas deben esperar 120 bloques antes de ser gastadas. Cuando has generado este bloque se emitió a la red para ser agregado en la cadena de bloques. Si falla al incluirse en la cadena, cambiará a "no aceptado" y las monedas no se podrán gastar. Esto puede ocurrir ocasionalmente si otro nodo genera un bloque casi al mismo tiempo que el tuyo. - - - - Cannot write autostart/bitcoin.desktop file - No se puede escribir el fichero autostart/bitcoin.desktop - - - - Main - Principal - - - - &Start Bitcoin on window system startup - &Arranca Bitcoin al iniciar el sistema - - - - &Minimize on close - &Minimiza al cerrar - - - - version %s - versión %s - - - - Error in amount - Error en la cantidad - - - - Send Coins - Envia monedas - - - - Amount exceeds your balance - La cantidad sobrepasa tu balance - - - - Total exceeds your balance when the - El total sobrepasa tu balance cuando se - - - - transaction fee is included - incluyen las tasas de transacción - - - - Payment sent - Pago enviado - - - - Sending... - Enviando... - - - - Invalid address - Dirección inválida - - - - Sending %s to %s - Enviando %s a %s - - - - CANCELLED - CANCELADO - - - - Cancelled - Cancelado - - - - Transfer cancelled - Transferencia cancelada - - - - Error: - Error: - - - - Insufficient funds - Fondos insuficientes - - - - Connecting... - Conectando... - - - - Unable to connect - No es posible conectar - - - - Requesting public key... - Pidiendo clave pública... - - - - Received public key... - Clave pública recibida... - - - - Recipient is not accepting transactions sent by IP address - El destinatario no accepta transacciones enviadas a direcciones IP - - - - Transfer was not accepted - La transferencia no fue aceptada - - - - Invalid response received - Respuesta inválida recibida - - - - Creating transaction... - Creando transacción... - - - - This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - Esta transacción requiere una comisión de al menos %s por su cantidad, complejidad o uso de fondos recibidos recientemente - - - - Transaction creation failed - Fallo al crear la transacción. - - - - Transaction aborted - Transacción abortada - - - - Lost connection, transaction cancelled - Conexión perdida, transacción cancelada - - - - Sending payment... - Enviando pago... - - - - The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. - La transacción fue rechazada. Esto puede haber ocurrido si alguna de las monedas ya estaba gastada o si ha usado una copia de wallet.dat y las monedas se gastaron en la copia pero no se han marcado como gastadas aqui. - - - - Waiting for confirmation... - Esperando confirmación... - - - - The payment was sent, but the recipient was unable to verify it. -The transaction is recorded and will credit to the recipient, -but the comment information will be blank. - El pago se ha enviado, pero el receptor no pudo verificarlo. -La transacción se grabó y el saldo fue transferido, -pero la información de los comentarios quedará en blanco. - - - - Payment was sent, but an invalid response was received - El pago fue enviado, pero se recibió una respuesta inválida - - - - Payment completed - Pago completado - - - - Name - Nombre - - - - Address - Dirección - - - - Label - Etiqueta - - - - Bitcoin Address - Dirección Bitcoin - - - - This is one of your own addresses for receiving payments and cannot be entered in the address book. - Esta es una de sus direcciones para recibir pagos y no puede incluirse en la libreta de direcciones. - - - - Edit Address - Edita dirección - - - - Edit Address Label - Edita etiqueta dirección - - - - Add Address - Agrega dirección - - - - Bitcoin - Bitcoin - - - - Bitcoin - Generating - Bitcoin - Generando - - - - Bitcoin - (not connected) - Bitcoin - (no conectado) - - - - &Open Bitcoin - &Abre Bitcoin - - - - &Send Bitcoins - &Envia Bitcoins - - - - O&ptions... - O&pciones - - - - E&xit - S&alir - - - - Program has crashed and will terminate. - El programa ha detectado un error y va a cerrarse. - - - - Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. - Precaución: Por favor revisa que la fecha y hora de tu ordenador son correctas. Si tu reloj está mal Bitcoin no funcionará correctamente. - - - beta beta @@ -2334,9 +1810,9 @@ pero la información de los comentarios quedará en blanco. main - - Bitcoin Qt - Bitcoin Qt + + Bitcoin-Qt + diff --git a/src/qt/locale/bitcoin_hu.ts b/src/qt/locale/bitcoin_hu.ts index bc48ed889a5..d39ab42bb5f 100644 --- a/src/qt/locale/bitcoin_hu.ts +++ b/src/qt/locale/bitcoin_hu.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -14,14 +16,14 @@ - Copyright © 2009-2011 Bitcoin Developers + Copyright © 2009-2012 Bitcoin Developers This is experimental software. Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - Szerzői jog © 2009-2011 Bitcoin Developers + Szerzői jog © 2009-2012 Bitcoin Developers Ez egy kísérleti program. MIT/X11 szoftverlicenc alatt kiadva, lásd a mellékelt fájlt license.txt vagy http://www.opensource.org/licenses/mit-license.php. @@ -77,22 +79,22 @@ Ez a termék az OpenSSL Project által lett kifejlesztve az OpenSSL Toolkit (htt &Törlés - + Export Address Book Data Címjegyzék adatainak exportálása - + Comma separated file (*.csv) Vesszővel elválasztott fájl (*. csv) - + Error exporting Hiba exportálás közben - + Could not write to file %1. %1 nevű fájl nem írható. @@ -100,17 +102,17 @@ Ez a termék az OpenSSL Project által lett kifejlesztve az OpenSSL Toolkit (htt AddressTableModel - + Label Címke - + Address Cím - + (no label) (nincs címke) @@ -124,125 +126,132 @@ Ez a termék az OpenSSL Project által lett kifejlesztve az OpenSSL Toolkit (htt + TextLabel SzövegCímke - + Enter passphrase Add meg a jelszót - + New passphrase Új jelszó - + Repeat new passphrase Új jelszó újra - + Enter the new passphrase to the wallet.<br/>Please use a passphrase of <b>10 or more random characters</b>, or <b>eight or more words</b>. Írd be az új jelszót a tárcához.<br/>Használj legalább 10<br/>véletlenszerű karaktert</b> vagy <b>legalább nyolc szót</b>. - + Encrypt wallet Tárca kódolása - + This operation needs your wallet passphrase to unlock the wallet. A tárcád megnyitásához a műveletnek szüksége van a tárcád jelszavára. - + Unlock wallet Tárca megnyitása - + This operation needs your wallet passphrase to decrypt the wallet. A tárcád dekódolásához a műveletnek szüksége van a tárcád jelszavára. - + Decrypt wallet Tárca dekódolása - + Change passphrase Jelszó megváltoztatása - + Enter the old and new passphrase to the wallet. Írd be a tárca régi és új jelszavát. - + Confirm wallet encryption Biztosan kódolni akarod a tárcát? - + WARNING: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! Are you sure you wish to encrypt your wallet? FIGYELEM: Ha kódolod a tárcát, és elveszíted a jelszavad, akkor <b>AZ ÖSSZES BITCOINODAT IS EL FOGOD VESZÍTENI!</b> Biztosan kódolni akarod a tárcát? - - + + Wallet encrypted Tárca kódolva - - Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - Ne feledd, hogy a tárca titkosítása sem nyújt teljes védelmet az adathalász programok fertőzésével szemben. + + + Warning: The Caps Lock key is on. + - - - - + + + + Wallet encryption failed Tárca kódolása sikertelen. - + Wallet encryption failed due to an internal error. Your wallet was not encrypted. Tárca kódolása belső hiba miatt sikertelen. A tárcád nem lett kódolva. - - + + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. + Bitcoin will close now to finish the encryption process. Ne feledd, hogy a tárca titkosítása sem nyújt teljes védelmet az adathalász programok fertőzésével szemben. + + + + The supplied passphrases do not match. A megadott jelszavak nem egyeznek. - + Wallet unlock failed Tárca megnyitása sikertelen - - + + The passphrase entered for the wallet decryption was incorrect. Hibás jelszó. - + Wallet decryption failed Dekódolás sikertelen. - + Wallet passphrase was succesfully changed. Jelszó megváltoztatva. @@ -250,247 +259,268 @@ Biztosan kódolni akarod a tárcát? BitcoinGUI - + Bitcoin Wallet Bitcoin-tárca - + + Synchronizing with network... Szinkronizálás a hálózattal... - + Block chain synchronization in progress Blokklánc-szinkronizálás folyamatban - + &Overview &Áttekintés - + Show general overview of wallet Tárca általános áttekintése - + &Transactions &Tranzakciók - + Browse transaction history Tranzakciótörténet megtekintése - + &Address Book Cím&jegyzék - + Edit the list of stored addresses and labels Tárolt címek és címkék listájának szerkesztése - + &Receive coins Érmék &fogadása - + Show the list of addresses for receiving payments Kiizetést fogadó címek listája - + &Send coins Érmék &küldése - + Send coins to a bitcoin address Érmék küldése megadott címre - + E&xit &Kilépés - + Quit application Kilépés - + &About %1 &A %1-ról - + Show information about Bitcoin Információk a Bitcoinról - + &Options... &Opciók... - + Modify configuration options for bitcoin Bitcoin konfigurációs opciók - + Open &Bitcoin A &Bitcoin megnyitása - + Show the Bitcoin window A Bitcoin-ablak mutatása - + &Export... &Exportálás... - + Export the current view to a file Jelenlegi nézet exportálása fájlba - + &Encrypt Wallet Tárca &kódolása - + Encrypt or decrypt wallet Tárca kódolása vagy dekódolása - + &Change Passphrase Jelszó &megváltoztatása - + Change the passphrase used for wallet encryption Tárcakódoló jelszó megváltoztatása - + + About &Qt + A &Qt-ról + + + + Show information about Qt + Információk a Qt ról + + + &File &Fájl - + &Settings &Beállítások - + &Help &Súgó - + Tabs toolbar Fül eszköztár - + Actions toolbar Parancsok eszköztár - + [testnet] [teszthálózat] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - %n aktív kapcsolat a Bitcoin-hálózattal%n aktív kapcsolat a Bitcoin-hálózattal + + %n aktív kapcsolat a Bitcoin-hálózattal + - + Downloaded %1 of %2 blocks of transaction history. %1 blokk letöltve a tranzakciótörténet %2 blokkjából. - + Downloaded %1 blocks of transaction history. %1 blokk letöltve a tranzakciótörténetből. - + %n second(s) ago - %n másodperccel ezelőtt%n másodperccel ezelőtt + + %n másodperccel ezelőtt + - + %n minute(s) ago - %n perccel ezelőtt%n perccel ezelőtt + + %n perccel ezelőtt + - + %n hour(s) ago - %n órával ezelőtt%n órával ezelőtt + + %n órával ezelőtt + - + %n day(s) ago - %n nappal ezelőtt%n nappal ezelőtt + + %n nappal ezelőtt + - + Up to date Naprakész - + Catching up... Frissítés... - + Last received block was generated %1. Az utolsóként kapott blokk generálva: %1. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? Ez a tranzakció túllépi a mérethatárt, de %1 tranzakciós díj ellenében így is elküldheted. Ezt a plusz összeget a tranzakcióidat feldolgozó csomópontok kapják, így magát a hálózatot támogatod vele. Hajlandó vagy megfizetni a díjat? - + Sending... Küldés... - + Sent transaction Tranzakció elküldve. - + Incoming transaction Beérkező tranzakció - + Date: %1 Amount: %2 Type: %3 @@ -503,15 +533,20 @@ Cím: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> Tárca <b>kódolva</b> és jelenleg <b>nyitva</b>. - + Wallet is <b>encrypted</b> and currently <b>locked</b> Tárca <b>kódolva</b> és jelenleg <b>zárva</b>. + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + + DisplayOptionsPage @@ -527,8 +562,13 @@ Cím: %4 - Display addresses in transaction list - Címek megjelenítése a tranzakciólistában + &Display addresses in transaction list + &Címek megjelenítése a tranzakciólistában + + + + Whether to show Bitcoin addresses in the transaction list + @@ -579,22 +619,22 @@ Cím: %4 Küldő cím szerkesztése - + The entered address "%1" is already in the address book. A megadott "%1" cím már szerepel a címjegyzékben. - + The entered address "%1" is not a valid bitcoin address. A megadott "%1" cím nem egy érvényes Bitcoin-cím. - + Could not unlock wallet. Tárca feloldása sikertelen - + New key generation failed. Új kulcs generálása sikertelen @@ -673,7 +713,7 @@ Cím: %4 - Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. Opcionális, kB-onkénti tranzakciós díj a tranzakcióid minél gyorsabb feldolgozásának elősegítésére. A legtöbb tranzakció 1 kB-os. 0,01 BTC ajánlott. @@ -683,7 +723,7 @@ Cím: %4 - Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. Opcionális, kB-onkénti tranzakciós díj a tranzakcióid minél gyorsabb feldolgozásának elősegítésére. A legtöbb tranzakció 1 kB-os. 0,01 BTC ajánlott. @@ -743,20 +783,12 @@ Cím: %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> + + Wallet + - + <b>Recent transactions</b> <b>Legutóbbi tranzakciók</b> @@ -780,13 +812,13 @@ p, li { white-space: pre-wrap; } SendCoinsDialog - - - - - - - + + + + + + + Send Coins Érmék küldése @@ -801,82 +833,87 @@ p, li { white-space: pre-wrap; } &Címzett hozzáadása ... - + Clear all Mindent töröl - + + Remove all transaction fields + + + + Balance: Egyenleg: - + 123.456 BTC 123.456 BTC - + Confirm the send action Küldés megerősítése - + &Send &Küldés - + <b>%1</b> to %2 (%3) <b>%1</b> %2-re (%3) - + Confirm send coins Küldés megerősítése - + Are you sure you want to send %1? Valóban el akarsz küldeni %1-t? - + and és - + The recepient address is not valid, please recheck. A címzett címe érvénytelen, kérlek, ellenőrizd. - + The amount to pay must be larger than 0. A fizetendő összegnek nagyobbnak kell lennie 0-nál. - + Amount exceeds your balance Nincs ennyi bitcoin az egyenlegeden. - + Total exceeds your balance when the %1 transaction fee is included A küldeni kívánt összeg és a %1 tranzakciós díj együtt meghaladja az egyenlegeden rendelkezésedre álló összeget. - + Duplicate address found, can only send to each address once in one send operation Többször szerepel ugyanaz a cím. Egy küldési műveletben egy címre csak egyszer lehet küldeni. - + Error: Transaction creation failed Hiba: nem sikerült létrehozni a tranzakciót - + Error: The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. Hiba: a tranzakciót elutasították. Ezt az okozhatja, ha már elköltöttél valamennyi érmét a tárcádból - például ha a wallet.dat-od egy másolatát használtad, és így az elköltés csak abban lett jelölve, de itt nem. @@ -1098,54 +1135,58 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date Dátum - + Type Típus - + Address Cím - + Amount Összeg - + Open for %n block(s) - %n blokkra megnyitva%n blokkra megnyitva + + %n blokkra megnyitva + - + Open until %1 %1-ig megnyitva - + Offline (%1 confirmations) Offline (%1 megerősítés) - + Unconfirmed (%1 of %2 confirmations) Megerősítetlen (%1 %2 megerősítésből) - + Confirmed (%1 confirmations) Megerősítve (%1 megerősítés) Mined balance will be available in %n more blocks - %n blokk múlva lesz elérhető a bányászott egyenleg.%n blokk múlva lesz elérhető a bányászott egyenleg. + + %n blokk múlva lesz elérhető a bányászott egyenleg. + @@ -1164,56 +1205,51 @@ p, li { white-space: pre-wrap; } - Received from IP - Erről az IP-címről + Received from + Erről az - + Sent to Erre a címre - - Sent to IP - Erre az IP-címre: - - - + Payment to yourself Magadnak kifizetve - + Mined Kibányászva - + (n/a) (nincs) - + Transaction status. Hover over this field to show number of confirmations. Tranzakció állapota. Húzd ide a kurzort, hogy lásd a megerősítések számát. - + Date and time that the transaction was received. Tranzakció fogadásának dátuma és időpontja. - + Type of transaction. Tranzakció típusa. - + Destination address of transaction. A tranzakció címzettjének címe. - + Amount removed from or added to balance. Az egyenleghez jóváírt vagy ráterhelt összeg. @@ -1312,67 +1348,67 @@ p, li { white-space: pre-wrap; } Részletek... - + Export Transaction Data Tranzakció adatainak exportálása - + Comma separated file (*.csv) Vesszővel elválasztott fájl (*.csv) - + Confirmed Megerősítve - + Date Dátum - + Type Típus - + Label Címke - + Address Cím - + Amount Összeg - + ID Azonosító - + Error exporting Hiba lépett fel exportálás közben - + Could not write to file %1. %1 fájlba való kiírás sikertelen. - + Range: Tartomány: - + to meddig @@ -1388,220 +1424,220 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version Bitcoin verzió - + Usage: Használat: - + Send command to -server or bitcoind Parancs küldése a -serverhez vagy a bitcoindhez - + List commands Parancsok kilistázása - + Get help for a command Segítség egy parancsról - + Options: Opciók - + Specify configuration file (default: bitcoin.conf) Konfigurációs fájl (alapértelmezett: bitcoin.conf) - + Specify pid file (default: bitcoind.pid) pid-fájl (alapértelmezett: bitcoind.pid) - + Generate coins Érmék generálása - - Don't generate coins + + Don't generate coins Bitcoin-generálás leállítása - + Start minimized Indítás lekicsinyítve - + Specify data directory Adatkönyvtár - + Specify connection timeout (in milliseconds) Csatlakozás időkerete (milliszekundumban) - + Connect through socks4 proxy Csatlakozás SOCKS4 proxyn keresztül - + Allow DNS lookups for addnode and connect DNS-kikeresés engedélyezése az addnode-nál és a connect-nél - + Add a node to connect to Elérendő csomópont megadása - + Connect only to the specified node Csatlakozás csak a megadott csomóponthoz - - Don't accept connections from outside + + Don't accept connections from outside Külső csatlakozások elutasítása - - Don't attempt to use UPnP to map the listening port + + Don't attempt to use UPnP to map the listening port UPnP-használat letiltása a figyelő port feltérképezésénél - + Attempt to use UPnP to map the listening port UPnP-használat engedélyezése a figyelő port feltérképezésénél - + Fee per kB to add to transactions you send kB-onként felajánlandó díj az általad küldött tranzakciókhoz - + Accept command line and JSON-RPC commands Parancssoros és JSON-RPC parancsok elfogadása - + Run in the background as a daemon and accept commands Háttérben futtatás daemonként és parancsok elfogadása - + Use the test network Teszthálózat használata - + Username for JSON-RPC connections Felhasználói név JSON-RPC csatlakozásokhoz - + Password for JSON-RPC connections Jelszó JSON-RPC csatlakozásokhoz - + Listen for JSON-RPC connections on <port> (default: 8332) JSON-RPC csatlakozásokhoz figyelendő <port> (alapértelmezett: 8332) - + Allow JSON-RPC connections from specified IP address JSON-RPC csatlakozások engedélyezése meghatározott IP-címről - + Send commands to node running on <ip> (default: 127.0.0.1) Parancsok küldése <ip> címen működő csomóponthoz (alapértelmezett: 127.0.0.1) - + Set key pool size to <n> (default: 100) Kulcskarika mérete <n> (alapértelmezett: 100) - + Rescan the block chain for missing wallet transactions Blokklánc újraszkennelése hiányzó tárca-tranzakciók után - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -1610,721 +1646,154 @@ SSL-opciók: (lásd a Bitcoin Wiki SSL-beállítási instrukcióit) - + Use OpenSSL (https) for JSON-RPC connections OpenSSL (https) használata JSON-RPC csatalkozásokhoz - + Server certificate file (default: server.cert) Szervertanúsítvány-fájl (alapértelmezett: server.cert) - + Server private key (default: server.pem) Szerver titkos kulcsa (alapértelmezett: server.pem) - + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) Elfogadható rejtjelkulcsok (alapértelmezett: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH ) - + This help message Ez a súgó-üzenet - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. Az %s adatkönyvtár nem zárható. A Bitcoin valószínűleg fut már. - + Loading addresses... Címek betöltése... - + Error loading addr.dat Hiba az addr.dat betöltése közben - + Loading block index... Blokkindex betöltése... - + Error loading blkindex.dat Hiba a blkindex.dat betöltése közben - + Loading wallet... Tárca betöltése... - + Error loading wallet.dat: Wallet corrupted Hiba a wallet.dat betöltése közben: meghibásodott tárca - + Error loading wallet.dat: Wallet requires newer version of Bitcoin Hiba a wallet.dat betöltése közben: ehhez a tárcához újabb verziójú Bitcoin-kliens szükséges - + Error loading wallet.dat Hiba a wallet.dat betöltése közben - + Rescanning... Újraszkennelés... - + + Threshold for disconnecting misbehaving peers (default: 100) + + + + + + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) + + + + + Done loading Betöltés befejezve. - + Invalid -proxy address Érvénytelen -proxy cím - + Invalid amount for -paytxfee=<amount> Étvénytelen -paytxfee=<összeg> összeg - + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. Figyelem: a -paytxfee nagyon magas. Ennyi tranzakciós díjat fogsz fizetni, ha elküldöd a tranzakciót. - + Error: CreateThread(StartNode) failed Hiba: CreateThread(StartNode) sikertelen - + Warning: Disk space is low Figyelem: kevés a hely a lemezen. - + Unable to bind to port %d on this computer. Bitcoin is probably already running. A %d port nem elérhető ezen a gépen. A Bitcoin valószínűleg fut már. - - - This transaction is over the size limit. You can still send it for a fee of %s, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? - Ez a tranzakció túllépi a mérethatárt, de %s tranzakciós díj ellenében így is elküldheted. Ezt a plusz összeget a tranzakcióidat feldolgozó csomópontok kapják, így magát a hálózatot támogatod vele. Hajlandó vagy megfizetni a díjat? - - - - Enter the current passphrase to the wallet. - Add meg a tárca jelenlegi jelszavát. - - - - Passphrase - Jelszó: - - - - Please supply the current wallet decryption passphrase. - Add meg a tárca jelenlegi dekódoló jelszavát. - - - - The passphrase entered for the wallet decryption was incorrect. - A megadott tárca-dekódoló jelszó helytelen. - - - - Status - Állapot - - Date - Dátum - - - - Description - Leírás - - - - Debit - Terhelés - - - - Credit - Jóváírás - - - - Open for %d blocks - %d blokkra megnyitva - - - - Open until %s - %s-ig megnyitva - - - - %d/offline? - %d/offline? - - - - %d/unconfirmed - %d/megerősítetlen - - - - %d confirmations - %d megerősítés - - - - Generated - Legenerálva - - - - Generated (%s matures in %d more blocks) - Legenerálva (%s érett %d blokkból) - - - - Generated - Warning: This block was not received by any other nodes and will probably not be accepted! - Legenerálva - Figyelem: Ezt a blokkot egyetlen másik csomópont sem kapta meg, így valószínűleg nem lesz elfogadva! - - - - Generated (not accepted) - Legenerálva (elutasítva) - - - - From: - Küldő: - - - - Received with: - Erre a címre: - - - - Payment to yourself - Magadnak kifizetve - - - - To: - Címzett: - - - - Generating - Generálás - - - - (not connected) - (nincs kapcsolat) - - - - %d connections %d blocks %d transactions - %d kapcsolat %d blokk %d tranzakció - - - - Wallet already encrypted. - A tárca már kódolt. - - - - Enter the new passphrase to the wallet. -Please use a passphrase of 10 or more random characters, or eight or more words. - Add meg a tárca új jelszavát. -Használj 10 vagy több véletlenszerű karaktert, vagy nyolc vagy több szót. - - - - Error: The supplied passphrase was too short. - Hiba: a megadott jelszó túl rövid. - - - - WARNING: If you encrypt your wallet and lose your passphrase, you will LOSE ALL OF YOUR BITCOINS! -Are you sure you wish to encrypt your wallet? - FIGYELEM: Ha lekódolod a tárcátm és elveszíted a jelszavad, úgy AZ ÖSSZES BITCOINODAT IS EL FOGOD VESZÍTENI! -Valóban szeretnéd lekódolni a tárcádat? - - - - Please re-enter your new wallet passphrase. - Add meg az új jelszavadat a tárcádhoz. - - - - Error: the supplied passphrases didn't match. - Hiba: a megadott jelszavak nem egyeznek. - - - - Wallet encryption failed. - Tárcakódolás sikertelen. - - - - Wallet Encrypted. -Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - Tárca lekódolva. -Ne feledd, hogy a gépedet megfertőző ártalmas programokkal szemben a tárcakódolás sem nyújt teljes védelmet. - - - - Wallet is unencrypted, please encrypt it first. - A tárca még nincs lekódolva. Előbb kódold le. - - - - Enter the new passphrase for the wallet. - Add meg a tárca új jelszavát. - - - - Re-enter the new passphrase for the wallet. - Add meg újra a tárca jelszavát. - - - - Wallet Passphrase Changed. - Tárca jelszava megváltoztatva. - - - - New Receiving Address - Új fogadó cím. - - - - You should use a new address for each payment you receive. - -Label - Érdemes minden fizetést új címmel fogadnod. - -Címke - - - - <b>Status:</b> - <b>Állapot</b> - - - - , has not been successfully broadcast yet - , még nem sikerült elküldeni. - - - - , broadcast through %d node - , elküldve %d csomóponton keresztül - - - - , broadcast through %d nodes - , elküldve %d csomóponton keresztül - - - - <b>Date:</b> - <b>Dátum:</b> - - - - <b>Source:</b> Generated<br> - <b>Forrás:</b> Legenerálva<br> - - - - <b>From:</b> - <b>Küldő:</b> - - - - unknown - ismeretlen - - - - <b>To:</b> - <b>Címzett:</b> - - - - (yours, label: - (tiéd, címke: - - - - (yours) - (tiéd) - - - - <b>Credit:</b> - <b>Jóváírás:</b> - - - - (%s matures in %d more blocks) - (%s, %d blokk múlva készül el) - - - - (not accepted) - (elutasítva) - - - - <b>Debit:</b> - <b>Terhelés:</b> - - - - <b>Transaction fee:</b> - <b>Tranzakciós díj:</b> - - - - <b>Net amount:</b> - <b>Nettó összeg:</b> - - - - Message: - Üzenet: - - - - Comment: - Megjegyzés: - - - - Generated coins must wait 120 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, it will change to "not accepted" and not be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - A frissen generált érméket csak 120 blokkal később tudod elkölteni. Ez a blokk nyomban szétküldésre került a hálózatba, amint legeneráltad, hogy hozzáadhassák a blokklánchoz. Ha nem kerül be a láncba, úgy az állapota "elutasítva"-ra módosul, és nem költheted el az érméket. Ez akkor következhet be időnként, ha egy másik csomópont mindössze néhány másodperc különbséggel generált le egy blokkot a tiédhez képest. - - - - Cannot write autostart/bitcoin.desktop file - Az autostart/bitcoin.desktop fájl nem írható. - - - - Main - - - - - &Start Bitcoin on window system startup - A Bitcoin &indítása a rendszer indulásakor - - - - &Minimize on close - &Kicsinyítés záráskor - - - - version %s - %s verzió - - - - Error in amount - Hiba az összegben - - - - Send Coins - Érmék küldése - - - - Amount exceeds your balance - Nincs ennyi bitcoinod. - - - - Total exceeds your balance when the - Az összeg és a tranzakciós díj együtt - - - - transaction fee is included - meghaladja az egyenlegedet. - - - - Payment sent - Elküldve. - - - - Sending... - Küldés... - - - - Invalid address - Érvénytelen cím - - - - Sending %s to %s - %s küldése ide: %s - - - - CANCELLED - MEGSZAKÍTVA - - - - Cancelled - Megszakítva - - - - Transfer cancelled - Átutalás megszakítva - - - - Error: - Hiba: - - - - Insufficient funds - Nincs elég bitcoinod. - - - - Connecting... - Csatlakozás... - - - - Unable to connect - Csatlakozás sikertelen. - - - - Requesting public key... - Nyilvános kulcs kérése... - - - - Received public key... - Nyilvános kulcs fogadva... - - - - Recipient is not accepting transactions sent by IP address - A címzett nem fogad IP-címre küldött tranzakciókat. - - - - Transfer was not accepted - Az átutalást elutasították. - - - - Invalid response received - Érvénytelen válasz - - - - Creating transaction... - Tranzakció létrehozása... - - - - This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - Ehhez a tranzakcióhoz legalább %s díj szükséges az összege, az összetettsége vagy frissen kapott bitcoinok használata miatt. - - - - Transaction creation failed - Tranzakció létrehozása sikertelen. - - - - Transaction aborted - Tranzakció megszakítva. - - - - Lost connection, transaction cancelled - Megszakadt a kapcsolat, tranzakció megszakítva. - - - - Sending payment... - Küldés... - - - - The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. - A tranzakciót elutasították. Ezt az okozhatja, ha már elköltöttél valamennyi érmét a tárcádból - például ha a wallet.dat-od egy másolatát használtad, és így az elköltés csak abban lett jelölve, de itt nem. - - - - Waiting for confirmation... - Várakozás megerősítésre... - - - - The payment was sent, but the recipient was unable to verify it. -The transaction is recorded and will credit to the recipient, -but the comment information will be blank. - A bitcoinok el lettek küldve, de a címzett nem tudta ellenőrizni. -A tranzakció feljegyzésre került és jóvá lesz írva a címzettnek, -de a megjegyzés-információ üres lesz. - - - - Payment was sent, but an invalid response was received - A bitcoinok el lettek küldve, de érvénytelen válasz érkezett a küldésre. - - - - Payment completed - Sikeresen elküldve. - - - - Name - Név - - - - Address - Cím - - - - Label - Címke - - - - Bitcoin Address - Bitcoin-cím - - - - This is one of your own addresses for receiving payments and cannot be entered in the address book. - Ez az egyik saját fogadó címed, ezért nem jegyezhető be a címtárba. - - - - Edit Address - Cím szerkesztése - - - - Edit Address Label - Cím címkéjének szerkesztése - - - - Add Address - Cím hozzáadása - - - - Bitcoin - Bitcoin - - - - Bitcoin - Generating - Bitcoin - generálás - - - - Bitcoin - (not connected) - Bitcoin - (nincs kapcsolat) - - - - &Open Bitcoin - Bitcoin megnyitása - - - - &Send Bitcoins - Küldés - - - - O&ptions... - O&pciók... - - - - E&xit - &Kilépés - - - - Program has crashed and will terminate. - A program összeomlott és kikapcsol. - - - Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. Figyelem: Ellenőrizd, hogy helyesen van-e beállítva a gépeden a dátum és az idő. A Bitcoin nem fog megfelelően működni, ha rosszul van beállítvaaz órád. - + beta béta @@ -2332,9 +1801,9 @@ de a megjegyzés-információ üres lesz. main - - Bitcoin Qt - Bitcoin Qt + + Bitcoin-Qt + - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_it.ts b/src/qt/locale/bitcoin_it.ts index 02d0baa120d..b163f358651 100644 --- a/src/qt/locale/bitcoin_it.ts +++ b/src/qt/locale/bitcoin_it.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -14,20 +16,20 @@ - Copyright © 2009-2011 Bitcoin Developers + Copyright © 2009-2012 Bitcoin Developers This is experimental software. Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - Copyright © 2009-2011 Bitcoin Developers + Copyright © 2009-2012 Bitcoin Developers Questo è un software sperimentale. -Distribuito sotto la licenza software MIT/X11, guarda il file license.txt incluso oppure su http://www.opensource.org/licenses/mit-license.php. +Distribuito sotto la licenza software MIT/X11, vedi il file license.txt incluso oppure su http://www.opensource.org/licenses/mit-license.php. -Questo prodotto include software sviluppato dal progetto OpenSSL per l&apos;uso del Toolkit OpenSSL (http://www.openssl.org/), software crittografico scritto da Eric Young (eay@cryptsoft.com) e software UPnP scritto da Thomas Bernard. +Questo prodotto include software sviluppato dal progetto OpenSSL per l'uso del Toolkit OpenSSL (http://www.openssl.org/), software crittografico scritto da Eric Young (eay@cryptsoft.com) e software UPnP scritto da Thomas Bernard. @@ -78,22 +80,22 @@ Questo prodotto include software sviluppato dal progetto OpenSSL per l&apos; &Cancella - + Export Address Book Data Esporta gli indirizzi della rubrica - + Comma separated file (*.csv) Testo CSV (*.csv) - + Error exporting Errore nell'esportazione - + Could not write to file %1. Impossibile scrivere sul file %1. @@ -101,17 +103,17 @@ Questo prodotto include software sviluppato dal progetto OpenSSL per l&apos; AddressTableModel - + Label Etichetta - + Address Indirizzo - + (no label) (nessuna etichetta) @@ -125,125 +127,132 @@ Questo prodotto include software sviluppato dal progetto OpenSSL per l&apos; + TextLabel Etichetta - + Enter passphrase Inserisci la passphrase - + New passphrase Nuova passphrase - + Repeat new passphrase Ripeti la passphrase - + Enter the new passphrase to the wallet.<br/>Please use a passphrase of <b>10 or more random characters</b>, or <b>eight or more words</b>. Inserisci la passphrase per il portamonete.<br/>Per piacere usare unapassphrase di <b>10 o più caratteri casuali</b>, o <b>otto o più parole</b>. - + Encrypt wallet Cifra il portamonete - + This operation needs your wallet passphrase to unlock the wallet. Quest'operazione necessita della passphrase per sbloccare il portamonete. - + Unlock wallet Sblocca il portamonete - + This operation needs your wallet passphrase to decrypt the wallet. Quest'operazione necessita della passphrase per decifrare il portamonete, - + Decrypt wallet Decifra il portamonete - + Change passphrase Cambia la passphrase - + Enter the old and new passphrase to the wallet. Inserisci la vecchia e la nuova passphrase per il portamonete. - + Confirm wallet encryption Conferma la cifratura del portamonete - + WARNING: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! Are you sure you wish to encrypt your wallet? - ATTENZIONE: se si cifra il portamonete e si perde la frase d'ordine, <b>SI PERDERANNO TUTTI I PROPRI BITCOIN</b>! + ATTENZIONE: se si cifra il portamonete e si perde la frase d'ordine, <b>SI PERDERANNO TUTTI I PROPRI BITCOIN</b>! Si è sicuri di voler cifrare il portamonete? - - + + Wallet encrypted Portamonete cifrato - - Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - Ricorda che la cifratura del portamonete non protegge del tutto i tuoi bitcoin dal furto da parte di malware che infettasse il tuo computer. + + + Warning: The Caps Lock key is on. + Attenzione: tasto Blocco maiuscole attivo. - - - - + + + + Wallet encryption failed Cifratura del portamonete fallita - + Wallet encryption failed due to an internal error. Your wallet was not encrypted. Cifratura del portamonete fallita a causa di un errore interno. Il portamonete non è stato cifrato. - - + + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. + Bitcoin verrà ora chiuso per finire il processo di crittazione. Ricorda che criptare il tuo portamonete non può fornire una protezione totale contro furti causati da malware che dovessero infettare il tuo computer. + + + + The supplied passphrases do not match. Le passphrase inserite non corrispondono. - + Wallet unlock failed Sblocco del portamonete fallito - - + + The passphrase entered for the wallet decryption was incorrect. La passphrase inserita per la decifrazione del portamonete è errata. - + Wallet decryption failed Decifrazione del portamonete fallita - + Wallet passphrase was succesfully changed. Passphrase del portamonete modificata con successo. @@ -251,247 +260,273 @@ Si è sicuri di voler cifrare il portamonete? BitcoinGUI - + Bitcoin Wallet Portamonete di bitcoin - + + Synchronizing with network... Sto sincronizzando con la rete... - + Block chain synchronization in progress sincronizzazione della catena di blocchi in corso - + &Overview &Sintesi - + Show general overview of wallet Mostra lo stato generale del portamonete - + &Transactions &Transazioni - + Browse transaction history Cerca nelle transazioni - + &Address Book &Rubrica - + Edit the list of stored addresses and labels Modifica la lista degli indirizzi salvati e delle etichette - + &Receive coins &Ricevi monete - + Show the list of addresses for receiving payments Mostra la lista di indirizzi su cui ricevere pagamenti - + &Send coins &Invia monete - + Send coins to a bitcoin address Invia monete ad un indirizzo bitcoin - + E&xit &Esci - + Quit application Chiudi applicazione - + &About %1 &Informazioni su %1 - + Show information about Bitcoin Mostra informazioni su Bitcoin - + &Options... &Opzioni... - + Modify configuration options for bitcoin Modifica configurazione opzioni per bitcoin - + Open &Bitcoin Apri &Bitcoin - + Show the Bitcoin window Mostra la finestra Bitcoin - + &Export... &Esporta... - + Export the current view to a file Esporta la visualizzazione corrente su file - + &Encrypt Wallet &Cifra il portamonete - + Encrypt or decrypt wallet Cifra o decifra il portamonete - + &Change Passphrase &Cambia la passphrase - + Change the passphrase used for wallet encryption Cambia la passphrase per la cifratura del portamonete - + + About &Qt + Informazioni su &Qt + + + + Show information about Qt + Mostra informazioni su Qt + + + &File &File - + &Settings &Impostazioni - + &Help &Aiuto - + Tabs toolbar Barra degli strumenti "Tabs" - + Actions toolbar Barra degli strumenti "Azioni" - + [testnet] [testnet] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - %n connessione attiva alla rete Bitcoin%n connessioni attive alla rete Bitcoin + + %n connessione attiva alla rete Bitcoin + %n connessioni attive alla rete Bitcoin + - + Downloaded %1 of %2 blocks of transaction history. Scaricati %1 dei %2 blocchi dello storico transazioni. - + Downloaded %1 blocks of transaction history. Scaricati %1 blocchi dello storico transazioni. - + %n second(s) ago - %n secondo fa%n secondi fa + + %n secondo fa + %n secondi fa + - + %n minute(s) ago - %n minuto fa%n minuti fa + + %n minuto fa + %n minuti fa + - + %n hour(s) ago - %n ora fa%n ore fa + + %n ora fa + %n ore fa + - + %n day(s) ago - %n giorno fa%n giorni fa + + %n giorno fa + %n giorni fa + - + Up to date Aggiornato - + Catching up... In aggiornamento... - + Last received block was generated %1. L'ultimo blocco ricevuto è stato generato %1 - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? Questa transazione è superiore al limite di dimensione. È comunque possibile inviarla con una commissione di %1, che va ai nodi che processano la tua transazione e contribuisce a sostenere la rete. Vuoi pagare la commissione? - + Sending... Invio... - + Sent transaction Transazione inviata - + Incoming transaction Transazione ricevuta - + Date: %1 Amount: %2 Type: %3 @@ -505,15 +540,20 @@ Indirizzo: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> Il portamonete è <b>cifrato</b> e attualmente <b>sbloccato</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> Il portamonete è <b>cifrato</b> e attualmente <b>bloccato</b> + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + + DisplayOptionsPage @@ -529,8 +569,13 @@ Indirizzo: %4 - Display addresses in transaction list - Mostra gli indirizzi nella lista delle transazioni + &Display addresses in transaction list + &Mostra gli indirizzi nella lista delle transazioni + + + + Whether to show Bitcoin addresses in the transaction list + @@ -581,22 +626,22 @@ Indirizzo: %4 Modifica indirizzo d'invio - + The entered address "%1" is already in the address book. L'indirizzo inserito "%1" è già in rubrica. - + The entered address "%1" is not a valid bitcoin address. L'indirizzo inserito "%1" non è un indirizzo bitcoin valido. - + Could not unlock wallet. Impossibile sbloccare il portamonete. - + New key generation failed. Generazione della nuova chiave non riuscita. @@ -675,8 +720,8 @@ Indirizzo: %4 - Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. - Commissione di transazione per ogni kB; è opzionale e contribuisce ad assicurare che le transazioni siano elaborate velocemente. La maggior parte delle transazioni è 1kB. Commissione raccomandata 0,01. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. + Commissione di transazione per kB; è opzionale e contribuisce ad assicurare che le transazioni siano elaborate velocemente. Le transazioni sono per la maggior parte da 1 kB. Commissione raccomandata 0,01. @@ -685,8 +730,8 @@ Indirizzo: %4 - Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. - Commissione di transazione per ogni kB; è opzionale e contribuisce ad assicurare che le transazioni siano elaborate velocemente. La maggior parte delle transazioni è 1kB. Commissione raccomandata 0,01. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. + Commissione di transazione per kB; è opzionale e contribuisce ad assicurare che le transazioni siano elaborate velocemente. Le transazioni sono per la maggior parte da 1 kB. Commissione raccomandata 0,01. @@ -745,20 +790,12 @@ Indirizzo: %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">⏎ -<html><head><meta name="qrichtext" content="1" /><style type="text/css">⏎ -p, li { white-space: pre-wrap; }⏎ -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;">⏎ -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> + + Wallet + - + <b>Recent transactions</b> <b>Transazioni recenti</b> @@ -782,13 +819,13 @@ p, li { white-space: pre-wrap; }⏎ SendCoinsDialog - - - - - - - + + + + + + + Send Coins Spedisci Bitcoin @@ -803,82 +840,87 @@ p, li { white-space: pre-wrap; }⏎ &Aggiungi beneficiario... - + Clear all Cancella tutto - + + Remove all transaction fields + Rimuovi tutti i campi della transazione + + + Balance: Saldo: - + 123.456 BTC 123,456 BTC - + Confirm the send action Conferma la spedizione - + &Send &Spedisci - + <b>%1</b> to %2 (%3) <b>%1</b> to %2 (%3) - + Confirm send coins Conferma la spedizione di bitcoin - + Are you sure you want to send %1? Si è sicuri di voler spedire %1? - + and e - + The recepient address is not valid, please recheck. L'indirizzo del beneficiario non è valido, per cortesia controlla. - + The amount to pay must be larger than 0. L'importo da pagare dev'essere maggiore di 0. - + Amount exceeds your balance L'importo è superiore al saldo attuale - + Total exceeds your balance when the %1 transaction fee is included Il totale è superiore al saldo attuale includendo la commissione %1 - + Duplicate address found, can only send to each address once in one send operation Trovato un indirizzo doppio, si può spedire solo una volta a ciascun indirizzo in una singola operazione. - + Error: Transaction creation failed Errore: creazione della transazione fallita - + Error: The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. Errore: la transazione è stata rifiutata. Ciò accade se alcuni bitcoin nel portamonete sono stati già spesi, ad esempio se è stata usata una copia del file wallet.dat e i bitcoin sono stati spesi dalla copia ma non segnati come spesi qui. @@ -1099,54 +1141,60 @@ p, li { white-space: pre-wrap; }⏎ TransactionTableModel - + Date Data - + Type Tipo - + Address Indirizzo - + Amount Importo - + Open for %n block(s) - Aperto per %n bloccoAperto per %n blocchi + + Aperto per %n blocco + Aperto per %n blocchi + - + Open until %1 Aperto fino a %1 - + Offline (%1 confirmations) Offline (%1 conferme) - + Unconfirmed (%1 of %2 confirmations) Non confermati (%1 su %2 conferme) - + Confirmed (%1 confirmations) Confermato (%1 conferme) Mined balance will be available in %n more blocks - Il saldo generato sarà disponibile tra %n altro bloccoIl saldo generato sarà disponibile tra %n altri blocchi + + Il saldo generato sarà disponibile tra %n altro blocco + Il saldo generato sarà disponibile tra %n altri blocchi + @@ -1165,56 +1213,51 @@ p, li { white-space: pre-wrap; }⏎ - Received from IP - Ricevuto da IP + Received from + Ricevuto da - + Sent to Spedito a - - Sent to IP - Inviato a IP - - - + Payment to yourself Pagamento a te stesso - + Mined Ottenuto dal mining - + (n/a) (N / a) - + Transaction status. Hover over this field to show number of confirmations. Stato della transazione. Passare con il mouse su questo campo per vedere il numero di conferme. - + Date and time that the transaction was received. Data e ora in cui la transazione è stata ricevuta. - + Type of transaction. Tipo di transazione. - + Destination address of transaction. Indirizzo di destinazione della transazione. - + Amount removed from or added to balance. Importo rimosso o aggiunto al saldo. @@ -1313,67 +1356,67 @@ p, li { white-space: pre-wrap; }⏎ Mostra i dettagli... - + Export Transaction Data Esporta i dati della transazione - + Comma separated file (*.csv) Testo CSV (*.csv) - + Confirmed Confermato - + Date Data - + Type Tipo - + Label Etichetta - + Address Indirizzo - + Amount Importo - + ID ID - + Error exporting Errore nell'esportazione - + Could not write to file %1. Impossibile scrivere sul file %1. - + Range: Intervallo: - + to a @@ -1389,220 +1432,220 @@ p, li { white-space: pre-wrap; }⏎ bitcoin-core - + Bitcoin version Versione di Bitcoin - + Usage: Utilizzo: - + Send command to -server or bitcoind Manda il comando a -server o bitcoind - + List commands Lista comandi - + Get help for a command Aiuto su un comando - + Options: Opzioni: - + Specify configuration file (default: bitcoin.conf) Specifica il file di configurazione (di default: bitcoin.conf) - + Specify pid file (default: bitcoind.pid) Specifica il file pid (default: bitcoind.pid) - + Generate coins Genera Bitcoin - - Don't generate coins + + Don't generate coins Non generare Bitcoin - + Start minimized Parti in icona - + Specify data directory Specifica la cartella dati - + Specify connection timeout (in milliseconds) Specifica il timeout di connessione (in millisecondi) - + Connect through socks4 proxy Connessione tramite socks4 proxy - + Allow DNS lookups for addnode and connect Consenti ricerche DNS per aggiungere nodi e collegare - + Add a node to connect to Aggiungi un nodo e connetti a - + Connect only to the specified node Connetti solo al nodo specificato - - Don't accept connections from outside + + Don't accept connections from outside - Non accettare connessioni dall'esterno + Non accettare connessioni dall'esterno - - Don't attempt to use UPnP to map the listening port + + Don't attempt to use UPnP to map the listening port - Non usare l'UPnP per mappare la porta + Non usare l'UPnP per mappare la porta - + Attempt to use UPnP to map the listening port - Prova ad usare l'UPnp per mappare la porta + Prova ad usare l'UPnp per mappare la porta - + Fee per kB to add to transactions you send Commissione al kB da aggiungere alle transazioni in uscita - + Accept command line and JSON-RPC commands Accetta da linea di comando e da comandi JSON-RPC - + Run in the background as a daemon and accept commands Esegui in background come demone e accetta i comandi - + Use the test network Utilizza la rete di prova - + Username for JSON-RPC connections Nome utente per connessioni JSON-RPC - + Password for JSON-RPC connections Password per connessioni JSON-RPC - + Listen for JSON-RPC connections on <port> (default: 8332) Attendi le connessioni JSON-RPC su <porta> (default: 8332) - + Allow JSON-RPC connections from specified IP address - Consenti connessioni JSON-RPC dall'indirizzo IP specificato + Consenti connessioni JSON-RPC dall'indirizzo IP specificato - + Send commands to node running on <ip> (default: 127.0.0.1) Inviare comandi al nodo in esecuzione su <ip> (default: 127.0.0.1) - + Set key pool size to <n> (default: 100) Impostare la quantità di chiavi di riserva a <n> (default: 100) - + Rescan the block chain for missing wallet transactions Ripeti analisi della catena dei blocchi per cercare le transazioni mancanti dal portamonete - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -1611,720 +1654,154 @@ Opzioni SSL: (vedi il wiki di Bitcoin per le istruzioni di configurazione SSL) - + Use OpenSSL (https) for JSON-RPC connections Utilizzare OpenSSL (https) per le connessioni JSON-RPC - + Server certificate file (default: server.cert) File certificato del server (default: server.cert) - + Server private key (default: server.pem) Chiave privata del server (default: server.pem) - + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) Cifrari accettabili (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - + This help message Questo messaggio di aiuto - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. Non è possibile ottenere i dati sulla directory %s. Probabilmente Bitcoin è già in esecuzione. - + Loading addresses... Caricamento indirizzi... - + Error loading addr.dat Errore nel caricamento di addr.dat - + Loading block index... Caricamento dell'indice del blocco... - + Error loading blkindex.dat Errore nel caricamento di blkindex.dat - + Loading wallet... Caricamento portamonete... - + Error loading wallet.dat: Wallet corrupted Errore nel caricamento di wallet.dat: il portamonete è danneggiato - + Error loading wallet.dat: Wallet requires newer version of Bitcoin Errore nel caricamento di wallet.dat: il portamonete richiede una versione più recente di Bitcoin - + Error loading wallet.dat Errore nel caricamento di wallet.dat - + Rescanning... Ripetere la scansione... - + + Threshold for disconnecting misbehaving peers (default: 100) + + + + + + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) + + + + + Done loading Caricamento completato - + Invalid -proxy address Indirizzo -proxy non valido - + Invalid amount for -paytxfee=<amount> Importo non valido per -paytxfee=<amount> - + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. Attenzione: -paytxfee è molto alta. Questa è la commissione che si paga quando si invia una transazione. - + Error: CreateThread(StartNode) failed Errore: CreateThread(StartNode) non riuscito - + Warning: Disk space is low Attenzione: lo spazio su disco è scarso - + Unable to bind to port %d on this computer. Bitcoin is probably already running. Impossibile collegarsi alla porta %d su questo computer. Probabilmente Bitcoin è già in esecuzione. - - - This transaction is over the size limit. You can still send it for a fee of %s, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? - La dimensione della transazione è fuori limite. Puoi ancora spedirla con una commissione di %s, che andrà ai nodi che processano la tua transazione e aiuterà a supportare il network. Vuoi pagare la commissione? - - - - Enter the current passphrase to the wallet. - Inserisci la frase d'ordine attuale per il portamonete. - - - - Passphrase - Passphrase - - - - Please supply the current wallet decryption passphrase. - Si prega di fornire la passphrase per la decifrazione del portamonete attuale. - - - - The passphrase entered for the wallet decryption was incorrect. - La passphrase inserita per la decifrazione del portamonete è errata. - - - - Status - Stato - - Date - Data - - - - Description - Descrizione - - - - Debit - Debito - - - - Credit - Credito - - - - Open for %d blocks - Aperto per %d blocchi - - - - Open until %s - Aperto fino a %s - - - - %d/offline? - %d/offline? - - - - %d/unconfirmed - %d/non confermati - - - - %d confirmations - %d conferme - - - - Generated - Generato - - - - Generated (%s matures in %d more blocks) - Generato (%s matura in altri %d blocchi) - - - - Generated - Warning: This block was not received by any other nodes and will probably not be accepted! - Generato - Attenzione: questo blocco non è stato ricevuto da altri nodi e probabilmente non sarà accettato! - - - - Generated (not accepted) - Generato (non accettato) - - - - From: - Da: - - - - Received with: - Ricevuto su: - - - - Payment to yourself - Pagamento a te stesso - - - - To: - Per: - - - - Generating - Generazione - - - - (not connected) - (non collegato) - - - - %d connections %d blocks %d transactions - %d connessioni %d blocchi %d transazioni - - - - Wallet already encrypted. - Portamonete già codificato. - - - - Enter the new passphrase to the wallet. -Please use a passphrase of 10 or more random characters, or eight or more words. - Inserisci una nuova passphrase per il portamonete. -Si prega di utilizzare una frase di 10 o più caratteri casuali, o di almeno otto parole. - - - - Error: The supplied passphrase was too short. - Errore: la passphrase è troppo breve. - - - - WARNING: If you encrypt your wallet and lose your passphrase, you will LOSE ALL OF YOUR BITCOINS! -Are you sure you wish to encrypt your wallet? - ATTENZIONE: se si cifra il portamonete e si perde la propria passphrase, si perdono tutti i BITCOIN! Sei sicuro di voler cifrare il portamonete? - - - - Please re-enter your new wallet passphrase. - Si prega di inserire ancora la nuova passphrase per il portamonete. - - - - Error: the supplied passphrases didn't match. - Errore: le passphrase fornite non coincidono. - - - - Wallet encryption failed. - Cifratura del portamonete fallita. - - - - Wallet Encrypted. -Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - Portamonete cifrato. -Ricorda che cifrare il portamonete non protegge completamente i bitcoin dal furto ad opera di malware che infettassero il computer. - - - - Wallet is unencrypted, please encrypt it first. - Il portamonete non è cifrato, per piacere prima cifralo. - - - - Enter the new passphrase for the wallet. - Inserisci la nuova passphrase per il portamonete. - - - - Re-enter the new passphrase for the wallet. - Inserisci ancora la nuova passphrase per il portamonete. - - - - Wallet Passphrase Changed. - Passphrase del portamonete cambiata. - - - - New Receiving Address - Nuovo indirizzo di ricezione - - - - You should use a new address for each payment you receive. - -Label - Si dovrebbe usare un nuovo indirizzo per ciascun pagamento che si riceve. - -Etichetta - - - - <b>Status:</b> - <b>Stato:</b> - - - - , has not been successfully broadcast yet - , non è stato ancora trasmesso con successo - - - - , broadcast through %d node - , trasmesso attraverso %d nodo - - - - , broadcast through %d nodes - , trasmesso attraverso %d nodi - - - - <b>Date:</b> - <b>Data:</b> - - - - <b>Source:</b> Generated<br> - <b>Fonte:</b> Generato<br> - - - - <b>From:</b> - <b>Da:</b> - - - - unknown - sconosciuto - - - - <b>To:</b> - <b>Per:</b> - - - - (yours, label: - (vostro, etichetta: - - - - (yours) - ( vostro) - - - - <b>Credit:</b> - <b>Credito:</b> - - - - (%s matures in %d more blocks) - (%s matura in altri %d blocchi) - - - - (not accepted) - (non accettata) - - - - <b>Debit:</b> - <b>Debito:</b> - - - - <b>Transaction fee:</b> - <b>Commissione:</b> - - - - <b>Net amount:</b> - <b>Importo netto:</b> - - - - Message: - Messaggio: - - - - Comment: - Commento: - - - - Generated coins must wait 120 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, it will change to "not accepted" and not be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Bisogna aspettare 120 blocchi prima di spendere i bitcoin generati. Quando hai generato questo blocco, è stato trasmesso al network per aggiungerlo alla catena dei blocchi. Se non entra nella catena, sarà modificato in "non accettato" e non risulterà spendibile. Questo potrebbe accadere a volte, quando un altro nodo genera un blocco entro pochi secondi da quando l'hai generato tu. - - - - Cannot write autostart/bitcoin.desktop file - Impossibile scrivere sul file autostart/bitcoin.desktop - - - - Main - Principale - - - - &Start Bitcoin on window system startup - &Fai partire Bitcoin all'avvio del sistema - - - - &Minimize on close - &Minimizza alla chiusura del programma - - - - version %s - versione %s - - - - Error in amount - Errore nell'importo - - - - Send Coins - Spedisci Bitcoin - - - - Amount exceeds your balance - L'importo supera la tua disponibilità - - - - Total exceeds your balance when the - L'importo supera la tua disponibilità se - - - - transaction fee is included - si include la commissione di transazione - - - - Payment sent - Pagamento inviato - - - - Sending... - Invio... - - - - Invalid address - Indirizzo non valido - - - - Sending %s to %s - Invio di %s a %s - - - - CANCELLED - ANNULLATO - - - - Cancelled - Annullato - - - - Transfer cancelled - Trasferimento annullato - - - - Error: - Errore: - - - - Insufficient funds - Fondi insufficienti - - - - Connecting... - Collegamento... - - - - Unable to connect - Impossibile connettersi - - - - Requesting public key... - Richiesta chiave pubblica... - - - - Received public key... - chiave pubblica ricevuta... - - - - Recipient is not accepting transactions sent by IP address - Il destinatario non accetta transazioni effettuate dall'indirizzo IP - - - - Transfer was not accepted - L'invio non è stato accettato - - - - Invalid response received - Risposta non valida ricevuta - - - - Creating transaction... - Creazione della transazione... - - - - This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - Questa operazione richiede una commissione di transazione di almeno %s a causa del suo importo, della complessità, o per l'utilizzo di fondi ricevuti recentemente - - - - Transaction creation failed - Creazione transazione non riuscita - - - - Transaction aborted - Transazione interrotta - - - - Lost connection, transaction cancelled - Persa la connessione, operazione annullata - - - - Sending payment... - Invio del pagamento... - - - - The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. - La transazione è stata rifiutata. Ciò può accadere se alcuni dei bitcoin nel tuo portamonete erano stati già spesi, ad esempio se hai usato una copia del wallet.dat e i bitcoin sono stati spesi nella copia ma non nella versione corrente. - - - - Waiting for confirmation... - In attesa di conferma... - - - - The payment was sent, but the recipient was unable to verify it. -The transaction is recorded and will credit to the recipient, -but the comment information will be blank. - Il pagamento è stato spedito ma il destinatario non è riuscito a verificarlo. -La transazione è registrata e sarà trasferita al destinatario, -ma le informazioni a commento saranno vuote. - - - - Payment was sent, but an invalid response was received - Il pagamento è stato inviato, ma è stata ricevuta una risposta non valida - - - - Payment completed - Pagamento completato - - - - Name - Nome - - - - Address - Indirizzo - - - - Label - Etichetta - - - - Bitcoin Address - Indirizzo Bitcoin - - - - This is one of your own addresses for receiving payments and cannot be entered in the address book. - Questo è uno dei tuoi indirizzi per ricevere pagamenti e non può essere inserito nella rubrica. - - - - Edit Address - Modifica indirizzo - - - - Edit Address Label - Modifica etichetta indirizzo - - - - Add Address - Aggiungi indirizzo - - - - Bitcoin - Bitcoin - - - - Bitcoin - Generating - Bitcoin - Generazione - - - - Bitcoin - (not connected) - Bitcoin - (non collegato) - - - - &Open Bitcoin - &Apri Bitcoin - - - - &Send Bitcoins - &Invia Bitcoin - - - - O&ptions... - O&pzioni... - - - - E&xit - &Esci - - - - Program has crashed and will terminate. - Il programma è andato in crash e si concluderà. - - - Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. Attenzione: si prega di controllare che la data del computer e l'ora siano corrette. Se il vostro orologio è sbagliato Bitcoin non funziona correttamente. - + beta beta @@ -2332,9 +1809,9 @@ ma le informazioni a commento saranno vuote. main - - Bitcoin Qt - Bitcoin Qt + + Bitcoin-Qt + - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_nb.ts b/src/qt/locale/bitcoin_nb.ts index aa5dd54817f..4b03d18c53c 100644 --- a/src/qt/locale/bitcoin_nb.ts +++ b/src/qt/locale/bitcoin_nb.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -14,20 +16,20 @@ - Copyright © 2009-2011 Bitcoin Developers + Copyright © 2009-2012 Bitcoin Developers This is experimental software. Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - Copyright © 2009-2011 Bitcoin Developers + Copyright © 2009-2012 Bitcoin Utviklerne Dette er eksperimentell programvare. -Distribuert under MIT/X11 programvarelisens. Se den medfølgende filen license.txt eller http://www.opensource.org/licenses/mit-license.php. +Distribuert under MIT/X11 programvarelisensen, se medfølgende fil license.txt eller http://www.opensource.org/licenses/mit-license.php. -Dette produktet inneholder programvare utviklet av OpenSSL Prosjektet for bruk i OpenSSL Toolkit (http://www.openssl.org/) og kryptografisk programvare skrevet av Eric Young (eay@cryptsoft.com) og UPnP programvare skrevet av Thomas Bernard. +Dette produktet inneholder programvare utviklet av OpenSSL prosjektet for bruk i OpenSSL Toolkit (http://www.openssl.org/) og kryptografisk programvare skrevet av Eric Young (eay@cryptsoft.com) og UPnP programvare skrevet av Thomas Bernard. @@ -78,22 +80,22 @@ Dette produktet inneholder programvare utviklet av OpenSSL Prosjektet for bruk i &Slett - + Export Address Book Data Eksporter adressebok - + Comma separated file (*.csv) Kommaseparert fil (*.csv) - + Error exporting Feil ved eksportering - + Could not write to file %1. Kunne ikke skrive til filen %1. @@ -101,17 +103,17 @@ Dette produktet inneholder programvare utviklet av OpenSSL Prosjektet for bruk i AddressTableModel - + Label Merkelapp - + Address Adresse - + (no label) (ingen merkelapp) @@ -125,125 +127,132 @@ Dette produktet inneholder programvare utviklet av OpenSSL Prosjektet for bruk i + TextLabel Merkelapp - + Enter passphrase Angi adgangsfrase - + New passphrase Ny adgangsfrase - + Repeat new passphrase Gjenta ny adgangsfrase - + Enter the new passphrase to the wallet.<br/>Please use a passphrase of <b>10 or more random characters</b>, or <b>eight or more words</b>. Skriv inn den nye adgangsfrasen for lommeboken.<br/>Vennligst bruk en adgangsfrase med <b>10 eller flere tilfeldige tegn</b>, eller <b>åtte eller flere ord</b>. - + Encrypt wallet Krypter lommebok - + This operation needs your wallet passphrase to unlock the wallet. Denne operasjonen krever adgangsfrasen til lommeboken for å låse den opp. - + Unlock wallet Lås opp lommebok - + This operation needs your wallet passphrase to decrypt the wallet. Denne operasjonen krever adgangsfrasen til lommeboken for å dekryptere den. - + Decrypt wallet Dekrypter lommebok - + Change passphrase Endre adgangsfrase - + Enter the old and new passphrase to the wallet. Skriv inn gammel og ny adgangsfrase for lommeboken. - + Confirm wallet encryption Bekreft kryptering av lommebok - + WARNING: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! Are you sure you wish to encrypt your wallet? ADVARSEL: Hvis du krypterer lommeboken og mister adgangsfrasen vil du <b>MISTE ALLE DINE BITCOINS</b>! Er du sikker på at du vil kryptere lommeboken? - - + + Wallet encrypted Lommebok kryptert - - Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - Husk at å kryptere lommeboken ikke vil beskytte dine bitcoins fullstendig fra å bli stjålet av skadevare som infiserer datamaskinen din. + + + Warning: The Caps Lock key is on. + Advarsel: Caps lock tasten er på. - - - - + + + + Wallet encryption failed Kryptering av lommebok feilet - + Wallet encryption failed due to an internal error. Your wallet was not encrypted. Kryptering av lommebok feilet på grunn av en intern feil. Din lommebok ble ikke kryptert. - - + + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. + Bitcoin vil nå lukkes for å fullføre krypteringsprosessen. Husk at kryptering av lommeboken ikke fullt ut kan beskytte dine bitcoins fra å bli stjålet om skadevare infiserer datamaskinen. + + + + The supplied passphrases do not match. De angitte adgangsfrasene er ulike. - + Wallet unlock failed Opplåsing av lommebok feilet - - + + The passphrase entered for the wallet decryption was incorrect. Adgangsfrasen angitt for dekryptering av lommeboken var feil. - + Wallet decryption failed Dekryptering av lommebok feilet - + Wallet passphrase was succesfully changed. Lommebokens adgangsfrase ble endret. @@ -251,247 +260,273 @@ Er du sikker på at du vil kryptere lommeboken? BitcoinGUI - + Bitcoin Wallet Bitcoin Lommebok - + + Synchronizing with network... Synkroniserer med nettverk... - + Block chain synchronization in progress Synkronisering av blokk-kjede igang - + &Overview &Oversikt - + Show general overview of wallet Vis generell oversikt over lommeboken - + &Transactions &Transaksjoner - + Browse transaction history Vis transaksjonshistorikk - + &Address Book &Adressebok - + Edit the list of stored addresses and labels Rediger listen over adresser og deres merkelapper - + &Receive coins &Motta bitcoins - + Show the list of addresses for receiving payments Vis listen over adresser for mottak av betalinger - + &Send coins &Send bitcoins - + Send coins to a bitcoin address Send bitcoins til en adresse - + E&xit &Avslutt - + Quit application Avslutt applikasjonen - + &About %1 &Om %1 - + Show information about Bitcoin Vis informasjon om Bitcoin - + &Options... &Innstillinger... - + Modify configuration options for bitcoin Endre innstillinger for bitcoin - + Open &Bitcoin Åpne &Bitcoin - + Show the Bitcoin window Vis Bitcoin-vinduet - + &Export... &Eksporter... - + Export the current view to a file Eksporter visningen til en fil - + &Encrypt Wallet &Krypter Lommebok - + Encrypt or decrypt wallet Krypter eller dekrypter lommebok - + &Change Passphrase &Endre Adgangsfrase - + Change the passphrase used for wallet encryption Endre adgangsfrasen brukt for kryptering av lommebok - + + About &Qt + Om &Qt + + + + Show information about Qt + Vis informasjon om Qt + + + &File &Fil - + &Settings &Innstillinger - + &Help &Hjelp - + Tabs toolbar Verktøylinje for faner - + Actions toolbar Verktøylinje for handlinger - + [testnet] [testnett] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - %n aktiv forbindelse til Bitcoin nettverket%n aktive forbindelser to Bitcoin nettverket + + %n aktiv forbindelse til Bitcoin-nettverket + %n aktive forbindelser til Bitcoin-nettverket + - + Downloaded %1 of %2 blocks of transaction history. Lastet ned %1 av %2 blokker med transaksjonshistorikk. - + Downloaded %1 blocks of transaction history. Lastet ned %1 blokker med transaksjonshistorikk. - + %n second(s) ago - %n sekund igjen%n sekunder igjen + + for %n sekund siden + for %n sekunder siden + - + %n minute(s) ago - %n minutt siden%n minutter siden + + for %n minutt siden + for %n minutter siden + - + %n hour(s) ago - %n time siden%n timer siden + + for %n time siden + for %n timer siden + - + %n day(s) ago - %n dag siden%n dager siden + + for %n dag siden + for %n dager siden + - + Up to date Ajour - + Catching up... Kommer ajour... - + Last received block was generated %1. Siste mottatte blokk ble generert %1. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? Denne transaksjonen overstiger størrelsesbegrensningen. Du kan likevel sende den med et gebyr på %1, som går til nodene som prosesserer transaksjonen din og støtter nettverket. Vil du betale gebyret? - + Sending... Sender... - + Sent transaction Sendt transaksjon - + Incoming transaction Innkommende transaksjon - + Date: %1 Amount: %2 Type: %3 @@ -504,15 +539,20 @@ Adresse: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> Lommeboken er <b>kryptert</b> og for tiden <b>ulåst</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> Lommeboken er <b>kryptert</b> og for tiden <b>låst</b> + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + + DisplayOptionsPage @@ -528,8 +568,13 @@ Adresse: %4 - Display addresses in transaction list - Vis adresser i transaksjonslisten + &Display addresses in transaction list + &Vis adresser i transaksjonslisten + + + + Whether to show Bitcoin addresses in the transaction list + @@ -580,22 +625,22 @@ Adresse: %4 Rediger utsendingsadresse - + The entered address "%1" is already in the address book. Den oppgitte adressen "%1" er allerede i adresseboken. - + The entered address "%1" is not a valid bitcoin address. en oppgitte adressen "%1" er ikke en gyldig bitcoin-adresse. - + Could not unlock wallet. Kunne ikke låse opp lommeboken. - + New key generation failed. Generering av ny nøkkel feilet. @@ -674,8 +719,8 @@ Adresse: %4 - Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. - Valgfritt transaksjonsgebyr per kB som hjelper for å sikre at transaksjonene dine blir raskt prosessert. De fleste transaksjoner er 1kB. Et gebyr på 0.01 anbefales. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. + Valgfritt transaksjonsgebyr per kB som sikrer at dine transaksjoner blir raskt prosessert. De fleste transaksjoner er 1 kB. Et gebyr på 0.01 er anbefalt. @@ -684,8 +729,8 @@ Adresse: %4 - Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. - Valgfritt transaksjonsgebyr per kB som hjelper for å sikre at transaksjonene dine blir raskt prosessert. De fleste transaksjoner er 1kB. Et gebyr på 0.01 anbefales. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. + Valgfritt transaksjonsgebyr per kB som sikrer at dine transaksjoner blir raskt prosessert. De fleste transaksjoner er 1 kB. Et gebyr på 0.01 er anbefalt. @@ -744,20 +789,12 @@ Adresse: %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Lommebok</span></p></body></html> + + Wallet + Lommebok - + <b>Recent transactions</b> <b>Siste transaksjoner</b> @@ -781,13 +818,13 @@ p, li { white-space: pre-wrap; } SendCoinsDialog - - - - - - - + + + + + + + Send Coins Send Bitcoins @@ -802,82 +839,87 @@ p, li { white-space: pre-wrap; } &Legg til mottaker... - + Clear all Fjern alle - + + Remove all transaction fields + Fjern alle transaksjonsfelter + + + Balance: Saldo: - + 123.456 BTC 123.456 BTC - + Confirm the send action Bekreft sending - + &Send &Send - + <b>%1</b> to %2 (%3) <b>%1</b> til %2 (%3) - + Confirm send coins Bekreft sending av bitcoins - + Are you sure you want to send %1? Er du sikker på at du vil sende %1? - + and og - + The recepient address is not valid, please recheck. Mottaksadressen er ugyldig, prøv igjen. - + The amount to pay must be larger than 0. Beløpen som skal betales må være over 0. - + Amount exceeds your balance Beløpet overstiger saldoen din - + Total exceeds your balance when the %1 transaction fee is included Totalen overgår din saldo når transaksjonsgebyret på %1 tas med - + Duplicate address found, can only send to each address once in one send operation Duplikate adresser funnet, kan kun sende til hver adresse en gang i hver sendeoperasjon - + Error: Transaction creation failed Feil: Opprettelse av transaksjon feilet - + Error: The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. Feil: Transaksjonen ble avvist. Dette kan skje hvis noen av myntene i lommeboken allerede var brukt, f.eks. hvis du kopierte wallet.dat og mynter ble brukt i kopien uten å bli markert brukt her. @@ -1098,54 +1140,60 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date Dato - + Type Type - + Address Adresse - + Amount Beløp - + Open for %n block(s) - Åpen for %n blokkÅpen for %n blokker + + Åpen for %n blokk + Åpen for %n blokker + - + Open until %1 Åpen til %1 - + Offline (%1 confirmations) Frakoblet (%1 bekreftelser) - + Unconfirmed (%1 of %2 confirmations) Ubekreftet (%1 av %2 bekreftelser) - + Confirmed (%1 confirmations) Bekreftet (%1 bekreftelser) Mined balance will be available in %n more blocks - Utvunnet saldo vil bli tilgjengelig om %n blokkUtvunnet saldo vil bli tilgjengelig om %n blokker + + Utvunnet saldo vil bli tilgjengelig om %n blokk + Utvunnet saldo vil bli tilgjengelig om %n blokker + @@ -1164,56 +1212,51 @@ p, li { white-space: pre-wrap; } - Received from IP - Mottatt fra IP + Received from + Mottatt fra - + Sent to Sendt til - - Sent to IP - Sendt til IP - - - + Payment to yourself Betaling til deg selv - + Mined Utvunnet - + (n/a) - - + Transaction status. Hover over this field to show number of confirmations. Transaksjonsstatus. Hold muspekeren over dette feltet for å se antall bekreftelser. - + Date and time that the transaction was received. Dato og tid for da transaksjonen ble mottat. - + Type of transaction. Type transaksjon. - + Destination address of transaction. Mottaksadresse for transaksjonen - + Amount removed from or added to balance. Beløp fjernet eller lagt til saldo. @@ -1312,67 +1355,67 @@ p, li { white-space: pre-wrap; } Vis detaljer... - + Export Transaction Data Eksporter transaksjonsdata - + Comma separated file (*.csv) Kommaseparert fil (*.csv) - + Confirmed Bekreftet - + Date Dato - + Type Type - + Label Merkelapp - + Address Adresse - + Amount Beløp - + ID ID - + Error exporting Feil ved eksport - + Could not write to file %1. Kunne ikke skrive til filen %1. - + Range: Intervall: - + to til @@ -1388,219 +1431,219 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version Bitcoin versjon - + Usage: Bruk: - + Send command to -server or bitcoind Send kommando til -server eller bitcoind - + List commands Vis liste over kommandoer - + Get help for a command Få hjelp til kommando - + Options: Innstillinger: - + Specify configuration file (default: bitcoin.conf) Angi konfigurasjonsfil (standard: bitcoin.conf) - + Specify pid file (default: bitcoind.pid) Angi pid-fil (standard: bitcoind.pid) - + Generate coins Generer mynter - - Don't generate coins + + Don't generate coins Ikke generer mynter - + Start minimized Start minimert - + Specify data directory Angi mappe for data - + Specify connection timeout (in milliseconds) Angi tidsavbrudd for forbindelser (i millisekunder) - + Connect through socks4 proxy Koble til gjennom sock4 mellomtjener - + Allow DNS lookups for addnode and connect Tillat DNS-oppslag for addnode og connect - + Add a node to connect to Legg til node for tilkobling - + Connect only to the specified node Koble kun til en oppgitt node - - Don't accept connections from outside + + Don't accept connections from outside Ikke ta imot tilkoblinger fra utsiden - - Don't attempt to use UPnP to map the listening port + + Don't attempt to use UPnP to map the listening port Ikke forsøk å bruke UPnP for å sette opp lytteport - + Attempt to use UPnP to map the listening port Forsøk å bruke UPnP for å sette opp lytteport - + Fee per kB to add to transactions you send Gebyr per kB som skal legges til transaksjoner du sender - + Accept command line and JSON-RPC commands Ta imot kommandoer fra både kommandolinje og JSON-RPC - + Run in the background as a daemon and accept commands Kjør som bakgrunnsprosess og ta imot kommandoer - + Use the test network Bruk testnettet - + Username for JSON-RPC connections Brukernavn for JSON-RPC forbindelser - + Password for JSON-RPC connections Passord for JSON-RPC forbindelser - + Listen for JSON-RPC connections on <port> (default: 8332) Lytt etter JSON-RPC forbindelser på <port> (standard: 8332) - + Allow JSON-RPC connections from specified IP address Tillat JSON-RPC forbindelser fra oppgitt IP-adresse - + Send commands to node running on <ip> (default: 127.0.0.1) Send kommandoer til noden som kjører på <ip> (standard: 127.0.0.1) - + Set key pool size to <n> (default: 100) Sett størrelsen på lager for nye nøkler til <n> (standard: 100) - + Rescan the block chain for missing wallet transactions Se igjennom blokk-kjeden på nytt etter manglende lommebokstransaksjoner - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -1608,721 +1651,154 @@ SSL options: (see the Bitcoin Wiki for SSL setup instructions) - + Use OpenSSL (https) for JSON-RPC connections Bruk OpenSSL (https) for JSON-RPC forbindelser - + Server certificate file (default: server.cert) Fil for tjenersertifikat (standard: server.cert) - + Server private key (default: server.pem) Privat nøkkel for tjener (standard: server.pem) - + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) Akseptable krypteringsmetoder (standard: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - + This help message Denne hjelpemeldingen - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. Kunne ikke låse datamappen %s. Bitcoin kjører sannsynligvis allerede. - + Loading addresses... Laster adresser... - + Error loading addr.dat Feil ved lasting av addr.dat - + Loading block index... Laster blokkindeks... - + Error loading blkindex.dat Feil ved lasting av blkindex.dat - + Loading wallet... Laster lommebok... - + Error loading wallet.dat: Wallet corrupted Feil ved lasting av wallet.dat: Skadde data i lommeboken - + Error loading wallet.dat: Wallet requires newer version of Bitcoin Feil ved lasting av wallet.dat: Lommeboken krever en nyere versjon av Bitcoin - + Error loading wallet.dat Feil ved lasting av wallet.dat - + Rescanning... Leser gjennom... - + + Threshold for disconnecting misbehaving peers (default: 100) + + + + + + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) + + + + + Done loading Ferdig med lasting - + Invalid -proxy address Ugyldig -proxy adresse for mellomtjener - + Invalid amount for -paytxfee=<amount> Ugyldig gebyrbeløp for -paytxfee=<beløp> - + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. Advarsel: -paytxfee er satt veldig høyt. Dette er transaksjonsgebyret du betaler når du sender en transaksjon. - + Error: CreateThread(StartNode) failed Feil: CreateThread(StartNode) feilet - + Warning: Disk space is low Advarsel: Lite ledig diskplass - + Unable to bind to port %d on this computer. Bitcoin is probably already running. Klarer ikke binde til port %d på denne datamaskinen. Bitcoin kjører sannsynligvis allerede. - - - This transaction is over the size limit. You can still send it for a fee of %s, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? - Denne transaksjonen er over maks-størrelsen. Du kan likevel sende med et gebyr på %s, som vil bli gitt til noder som prosesserer transaksjonen din og støtter nettverket. Vil du betale gebyret? - - - - Enter the current passphrase to the wallet. - Skriv inn nåværende adgangsfrase for lommeboken. - - - - Passphrase - Adgangsfrase - - - - Please supply the current wallet decryption passphrase. - Vennligst oppgå nåværende adgangsfrase for dekryptering. - - - - The passphrase entered for the wallet decryption was incorrect. - Adgangsfrasen oppgitt for dekryptering av lommeboken var feil. - - - - Status - Status - - Date - Dato - - - - Description - Beskrivelse - - - - Debit - Debet - - - - Credit - Kredit - - - - Open for %d blocks - Åpen for %d blokker - - - - Open until %s - Åpen til %s - - - - %d/offline? - %d/frakoblet? - - - - %d/unconfirmed - %d/ubekreftet - - - - %d confirmations - %d bekreftelser - - - - Generated - Generert - - - - Generated (%s matures in %d more blocks) - Generert (%s modnes om %d blokker) - - - - Generated - Warning: This block was not received by any other nodes and will probably not be accepted! - Generert - Advarsel: Denne blokken ble ikke mottatt av noen andre noder og vil sannsynligvis ikke bli akseptert! - - - - Generated (not accepted) - Generert (ikke akseptert) - - - - From: - Fra: - - - - Received with: - Mottatt med: - - - - Payment to yourself - Betaling til deg selv - - - - To: - Til: - - - - Generating - Genererer - - - - (not connected) - (ikke tilkoblet) - - - - %d connections %d blocks %d transactions - %d forbindelser %d blokker %d transaksjoner - - - - Wallet already encrypted. - Lommebok allerede kryptert. - - - - Enter the new passphrase to the wallet. -Please use a passphrase of 10 or more random characters, or eight or more words. - Skriv inn adgangsfrasen for lommeboken. -Vennligst bruk en adgangsfrase på 10 eller flere tilfeldige tegn, eller åtte eller flere ord. - - - - Error: The supplied passphrase was too short. - Feil: Angitt adgangsfrase var for kort. - - - - WARNING: If you encrypt your wallet and lose your passphrase, you will LOSE ALL OF YOUR BITCOINS! -Are you sure you wish to encrypt your wallet? - ADVARSEL: Hvis du krypterer lommeboken din og mister adgangsfrasen vil du MISTE ALLE DINE BITCOINS! -Er du sikker på at du vil kryptere lommeboken? - - - - Please re-enter your new wallet passphrase. - Vennligst gjenta adgangsfrasen for lommeboken. - - - - Error: the supplied passphrases didn't match. - Feil: de angitte adgangsfrasene er ulike. - - - - Wallet encryption failed. - Kryptering av lommebok feilet. - - - - Wallet Encrypted. -Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - Lommebok kryptert. -Husk at det å kryptere lommeboken ikke kan beskytte dine bitcoins fullstendig fra å bli stjålet av skadevare som infiserer datamaskinen din. - - - - Wallet is unencrypted, please encrypt it first. - Lommeboken er ukryptert, vennligst krypter den først. - - - - Enter the new passphrase for the wallet. - Skriv inn ny adgangsfrase for lommeboken. - - - - Re-enter the new passphrase for the wallet. - Gjenta adgangsfrasen for lommeboken. - - - - Wallet Passphrase Changed. - Adgangsfrasen for Lommeboken er Endret. - - - - New Receiving Address - Ny Mottaksadresse - - - - You should use a new address for each payment you receive. - -Label - Du bør bruke en ny adresse for hver betaling du mottar. - -Merkelapp - - - - <b>Status:</b> - <b>Status:</b> - - - - , has not been successfully broadcast yet - , har ikke blitt kringkastet uten problemer enda - - - - , broadcast through %d node - , kringkastet gjennom %d node - - - - , broadcast through %d nodes - , kringkastet gjennom %d noder - - - - <b>Date:</b> - <b>Dato:</b> - - - - <b>Source:</b> Generated<br> - <b>Kilde:</b> Generert<br> - - - - <b>From:</b> - <b>Fra:</b> - - - - unknown - ukjent - - - - <b>To:</b> - <b>Til:</b> - - - - (yours, label: - (din, merkelapp: - - - - (yours) - (din) - - - - <b>Credit:</b> - <b>Kredit:</b> - - - - (%s matures in %d more blocks) - (%s modnes om %d blokker) - - - - (not accepted) - (ikke akseptert) - - - - <b>Debit:</b> - <b>Debet:</b> - - - - <b>Transaction fee:</b> - <b>Transaksjonsgebyr:</b> - - - - <b>Net amount:</b> - <b>Nettobeløp:</b> - - - - Message: - Melding: - - - - Comment: - Kommentar: - - - - Generated coins must wait 120 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, it will change to "not accepted" and not be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Genererte mynter må vente 120 blokker før de kan brukes. Da du genererte denne blokken ble den kringkastet til nettverket for å legges til i blokk-kjeden. Hvis den ikke kommer med i kjeden vil den endres til "ikke akseptert" og ikke kunne brukes. Dette vil skje noen ganger når en annen node genererer en blokk bare sekunder fra din egen i tid. - - - - Cannot write autostart/bitcoin.desktop file - Kan ikke skrive til autostart/bitcoin.desktop filen - - - - Main - Hoved - - - - &Start Bitcoin on window system startup - &Start Bitcoin når systemet starter - - - - &Minimize on close - &Minimer ved lukking - - - - version %s - versjon %s - - - - Error in amount - Feil i beløp - - - - Send Coins - Send bitcoins - - - - Amount exceeds your balance - Beløpet overstiger saldoen - - - - Total exceeds your balance when the - Totalbeløpet overstiger saldoen når - - - - transaction fee is included - transaksjonsgebyret tas med - - - - Payment sent - Betaling sendt - - - - Sending... - Sender... - - - - Invalid address - Ugyldig adresse - - - - Sending %s to %s - Sender %s til %s - - - - CANCELLED - AVBRUTT - - - - Cancelled - Avbrutt - - - - Transfer cancelled - Overføring avbrutt - - - - Error: - Feil: - - - - Insufficient funds - Utilstrekkelige midler - - - - Connecting... - Kobler til... - - - - Unable to connect - Kunne ikke koble til - - - - Requesting public key... - Ber om offentlig nøkkel... - - - - Received public key... - Mottok offentlig nøkkel... - - - - Recipient is not accepting transactions sent by IP address - Mottaker tar ikke imot transaksjoner sendt via IP-adresse - - - - Transfer was not accepted - Overføring ble ikke akseptert - - - - Invalid response received - Ugyldig svar mottatt - - - - Creating transaction... - Oppretter transaksjon... - - - - This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - Denne transaksjonen krever et gebyr på minst %s pga. beløpet, kompleksiteten, eller bruk av nylig mottatte midler - - - - Transaction creation failed - Opprettelse av transaksjon feilet - - - - Transaction aborted - Transaksjon avbrutt - - - - Lost connection, transaction cancelled - Mistet forbindelsen, transaksjonen avbrutt - - - - Sending payment... - Sender betaling... - - - - The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. - Transaksjonen ble avvist. Dette kan skje hvis noen av myntene i lommeboken allerede er brukt, f.eks. hvis du kopierte wallet.dat og mynter ble brukt i kopien uten å bli markert som brukt her. - - - - Waiting for confirmation... - Venter på bekreftelse... - - - - The payment was sent, but the recipient was unable to verify it. -The transaction is recorded and will credit to the recipient, -but the comment information will be blank. - Betalingen ble sendt, men mottaker kunne ikke verifisere den. -Transaksjonen er lagret og beløpet vil bli kreditert mottaker, -men kommentaren vil bli blank. - - - - Payment was sent, but an invalid response was received - Betaling ble sendt, men et ugyldig svar kom tilbake - - - - Payment completed - Betaling fullført - - - - Name - Navn - - - - Address - Adresse - - - - Label - Merkelapp - - - - Bitcoin Address - Bitcoin-Adresse - - - - This is one of your own addresses for receiving payments and cannot be entered in the address book. - Dette er en av dine egne adresser for mottak av betalinger og kan ikke legges inn i adresseboken. - - - - Edit Address - Rediger Adresse - - - - Edit Address Label - Rediger Merkelapp - - - - Add Address - Legg til Adresse - - - - Bitcoin - Bitcoin - - - - Bitcoin - Generating - Bitcoin - Genererer - - - - Bitcoin - (not connected) - Bitcoin - (ikke tilkoblet) - - - - &Open Bitcoin - &Åpne Bitcoin - - - - &Send Bitcoins - &Send Bitcoins - - - - O&ptions... - &Innstillinger... - - - - E&xit - &Avslutt - - - - Program has crashed and will terminate. - Programmet har kræsjet og vil avslutte. - - - Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. Advarsel: Vennligst sjekk at dato og klokke er riktig innstilt på datamaskinen. Hvis klokken er feil vil ikke Bitcoin fungere ordentlig. - + beta beta @@ -2330,9 +1806,9 @@ men kommentaren vil bli blank. main - - Bitcoin Qt - Bitcoin Qt + + Bitcoin-Qt + - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_nl.ts b/src/qt/locale/bitcoin_nl.ts index 1db112bfd3d..5925bf25db6 100644 --- a/src/qt/locale/bitcoin_nl.ts +++ b/src/qt/locale/bitcoin_nl.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -15,20 +17,20 @@ - Copyright © 2009-2011 Bitcoin Developers + Copyright © 2009-2012 Bitcoin Developers This is experimental software. Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - Copyright © 2009-2011 Bitcoin-ontwikkelaars + Copyright © 2009-2012 Bitcoin Ontwikkelaars Dit is experimentele software. -Gedistributeerd onder de MIT/X11 software licentie, zie het bijgevoegde bestand license.txt of kijk op http://www.opensource.org/licenses/mit-license.php. +Gedistribueerd onder de MIT/X11 software licentie, zie het bijgevoegde bestand license.txt of http://www.opensource.org/licenses/mit-license.php. -Dit product bevat software ontwikkeld door het OpenSSL project voor gebruik in de OpenSSL Toolkit (http://www.openssl.org/), en cryptografische software geschreven door Eric Young (eay@cryptsoft.com) en UPnP software geschreven door Thomas Bernard. +Dit product bevat software ontwikkeld door het OpenSSL Project voor gebruik in de OpenSSL Toolkit (http://www.openssl.org/) en cryptografische software gemaakt door Eric Young (eay@cryptsoft.com) en UPnP software geschreven door Thomas Bernard. @@ -46,7 +48,7 @@ Dit product bevat software ontwikkeld door het OpenSSL project voor gebruik in d Double-click to edit address or label - Dubbelklik om adres of etiket te wijzigen + Dubbelklik om adres of label te wijzigen @@ -71,7 +73,7 @@ Dit product bevat software ontwikkeld door het OpenSSL project voor gebruik in d Delete the currently selected address from the list. Only sending addresses can be deleted. - Verwijder het huidige geselecteerde adres van de lijst. Alleen afzenderadressen kunnen verwijderd worden. + Verwijder het huidige geselecteerde adres van de lijst. Alleen zend-adressen kunnen verwijderd worden, niet uw ontvangstadressen. @@ -79,22 +81,22 @@ Dit product bevat software ontwikkeld door het OpenSSL project voor gebruik in d &Verwijder - + Export Address Book Data Exporteer Gegevens van het Adresboek - + Comma separated file (*.csv) Kommagescheiden bestand (*.csv) - + Error exporting Fout bij exporteren - + Could not write to file %1. Kon niet schrijven naar bestand %1. @@ -102,19 +104,19 @@ Dit product bevat software ontwikkeld door het OpenSSL project voor gebruik in d AddressTableModel - + Label - Etiket + Label - + Address Adres - + (no label) - (geen etiket) + (geen label) @@ -126,373 +128,406 @@ Dit product bevat software ontwikkeld door het OpenSSL project voor gebruik in d + TextLabel - TekstEtiket + TekstLabel - + Enter passphrase - Enter wachtwoord + Huidig wachtwoord - + New passphrase Nieuwe wachtwoord - + Repeat new passphrase Herhaal wachtwoord - + Enter the new passphrase to the wallet.<br/>Please use a passphrase of <b>10 or more random characters</b>, or <b>eight or more words</b>. - Vul een nieuw wachtwoord in voor uw portemonnee. <br/> Gebruik een wachtwoord van <b>10 of meer lukrake karakters</b>, of <8> acht of meer woorden</b> . + Vul een nieuw wachtwoord in voor uw portemonnee. <br/> Gebruik een wachtwoord van <b>10 of meer lukrake karakters</b>, of <b> acht of meer woorden</b> . - + Encrypt wallet Versleutel portemonnee - + This operation needs your wallet passphrase to unlock the wallet. Deze operatie vereist uw portemonneewachtwoord om de portemonnee te openen. - + Unlock wallet Open portemonnee - + This operation needs your wallet passphrase to decrypt the wallet. Deze operatie vereist uw portemonneewachtwoord om de portemonnee te ontsleutelen - + Decrypt wallet Ontsleutel portemonnee - + Change passphrase - Verander wachtwoord + Wijzig wachtwoord - + Enter the old and new passphrase to the wallet. - vul uw oude en nieuwe portemonneewachtwoord in. + Vul uw oude en nieuwe portemonneewachtwoord in. - + Confirm wallet encryption Bevestig versleuteling van de portemonnee - + WARNING: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! Are you sure you wish to encrypt your wallet? WAARSCHUWING: Wanneer uw portemonnee wordt versleuteld en u verliest uw wachtwoord, dan verliest u<b>AL UW BITCOINS</b>! Bent u er zeker van uw dat u uw portemonnee wilt versleutelen? - - + + Wallet encrypted Portemonnee versleuteld - - Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - Onthoud dat het versleutelen van uw portemonnee uw bitcoins niet volledig kan beschermen tegen diefstal, bijvoorbeeld door malware die uw computer infecteert. + + + Warning: The Caps Lock key is on. + Waarschuwing: De Caps-Lock-toets staat aan. - - - - + + + + Wallet encryption failed Portemonneeversleuteling mislukt - + Wallet encryption failed due to an internal error. Your wallet was not encrypted. Portemonneeversleuteling mislukt door een interne fout, Uw portemonnee is niet versleuteld. - - + + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. + Bitcoin zal nu afsluiten om het versleutelingsproces te voltooien. Onthoud dat het versleutelen van uw portemonnee u niet volledig kan beschermen: Malware kan uw computer infecteren en uw bitcoins stelen. + + + + The supplied passphrases do not match. Het opgegeven wachtwoord is niet correct - + Wallet unlock failed Portemonnee openen mislukt - - + + The passphrase entered for the wallet decryption was incorrect. Het opgegeven wachtwoord voor de portemonnee-ontsleuteling is niet correct. - + Wallet decryption failed Portemonnee-ontsleuteling mislukt - + Wallet passphrase was succesfully changed. - Portemonneewachtwoord is succesvol veranderd + Portemonneewachtwoord is succesvol gewijzigd BitcoinGUI - + Bitcoin Wallet Bitcoin-portemonnee - + + Synchronizing with network... Synchroniseren met netwerk... - + Block chain synchronization in progress - Bezig met blokkenketting-synchronisatie + Bezig met blokkenketen-synchronisatie - + &Overview &Overzicht - + Show general overview of wallet Toon algemeen overzicht van de portemonnee - + &Transactions &Transacties - + Browse transaction history Blader door transactieverleden - + &Address Book &Adresboek - + Edit the list of stored addresses and labels - Bewerk de lijst van opgeslagen adressen en etiketten + Bewerk de lijst van opgeslagen adressen en labels - + &Receive coins &Ontvang munten - + Show the list of addresses for receiving payments Toon lijst van adressen om betalingen mee te ontvangen - + &Send coins &Verstuur munten - + Send coins to a bitcoin address Verstuur munten naar een bitcoin-adres - + E&xit &Afsluiten - + Quit application Programma afsluiten - + &About %1 &Over %1 - + Show information about Bitcoin Laat informatie zien over Bitcoin - + &Options... &Opties... - + Modify configuration options for bitcoin - Verander instellingen van Bitcoin + Wijzig instellingen van Bitcoin - + Open &Bitcoin Open &Bitcoin - + Show the Bitcoin window Toon Bitcoin-venster - + &Export... &Exporteer... - + Export the current view to a file Exporteer huidige overzicht naar een bestand - + &Encrypt Wallet &Versleutel Portemonnee - + Encrypt or decrypt wallet Versleutel of ontsleutel portemonnee - + &Change Passphrase - &Verander wachtwoord + &Wijzig Wachtwoord + + + + Change the passphrase used for wallet encryption + wijzig het wachtwoord voor uw portemonneversleuteling - Change the passphrase used for wallet encryption - Verander het wachtwoord voor uw portemonneversleuteling + About &Qt + Over &Qt - + + Show information about Qt + Toon informatie over Qt + + + &File &Bestand - + &Settings &Instellingen - + &Help &Hulp - + Tabs toolbar Tab-werkbalk - + Actions toolbar Actie-werkbalk - + [testnet] [testnetwerk] - + bitcoin-qt bitcoin-qt - - %n active connection(s) to Bitcoin network - %n actieve connectie(s) naar Bitcoinnetwerk%n actieve connectie(s) naar Bitcoinnetwerk - - - - Downloaded %1 of %2 blocks of transaction history. - %1 van %2 blokken van transactiehistorie opgehaald - - + %n active connection(s) to Bitcoin network + + %n actieve connectie naar Bitcoinnetwerk + %n actieve connecties naar Bitcoinnetwerk + + + + + Downloaded %1 of %2 blocks of transaction history. + %1 van %2 blokken van transactiehistorie opgehaald. + + + Downloaded %1 blocks of transaction history. %1 blokken van transactiehistorie opgehaald. - + %n second(s) ago - %n seconde(n) geleden%n seconde(n) geleden + + %n seconde geleden + %n seconden geleden + - + %n minute(s) ago - %n minu(u)t(en) geleden%n minu(u)t(en) geleden + + %n minuut geleden + %n minuten geleden + - + %n hour(s) ago - %n u(u)r(en) geleden%n u(u)r(en) geleden + + %n uur geleden + %n uur geleden + - + %n day(s) ago - %n dag(en) geleden%n dag(en) geleden + + %n dag geleden + %n dagen geleden + - + Up to date Bijgewerkt - + Catching up... Aan het bijwerken... - + Last received block was generated %1. - Laatst ontvangen blok gegenereerd is %1 + Laatst ontvangen blok is %1 gegenereerd. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? Deze transactie overschrijdt de groottelimiet. Om de transactie alsnog te versturen kunt u transactiekosten betalen van %1. Deze transactiekosten gaan naar de nodes die uw transactie verwerken en het helpt op deze manier bij het ondersteunen van het netwerk. Wilt u de transactiekosten betalen? - + Sending... Versturen... - + Sent transaction Verzonden transactie - + Incoming transaction Binnenkomende transactie - + Date: %1 Amount: %2 Type: %3 @@ -505,15 +540,20 @@ Adres: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> Portemonnee is <b>versleuteld</b> en momenteel <b>geopend</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> Portemonnee is <b>versleuteld</b> en momenteel <b>gesloten</b> + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + + DisplayOptionsPage @@ -529,8 +569,13 @@ Adres: %4 - Display addresses in transaction list - Toon adressen in uw transactielijst + &Display addresses in transaction list + &Toon adressen in uw transactielijst + + + + Whether to show Bitcoin addresses in the transaction list + @@ -543,12 +588,12 @@ Adres: %4 &Label - &Etiket + &Label The label associated with this address book entry - Het etiket dat geassocieerd is met dit adres + Het label dat geassocieerd is met dit adres @@ -558,45 +603,45 @@ Adres: %4 The address associated with this address book entry. This can only be modified for sending addresses. - Het adres dat geassocieerd is met deze adresboek-opgave. Dit kan alleen worden veranderd voor afzenderadressen. + Het adres dat geassocieerd is met deze adresboek-opgave. Dit kan alleen worden veranderd voor zend-adressen. New receiving address - Nieuw ontvangst-adres + Nieuw ontvangstadres New sending address - Nieuw afzender-adres + Nieuw adres om naar te verzenden Edit receiving address - Bewerk ontvangst-adres + Bewerk ontvangstadres Edit sending address - Bewerk afzender-adres + Bewerk adres om naar te verzenden - + The entered address "%1" is already in the address book. Het opgegeven adres "%1" bestaat al in uw adresboek. - + The entered address "%1" is not a valid bitcoin address. Het opgegeven adres "%1" is een ongeldig bitcoinadres - + Could not unlock wallet. Kon de portemonnee niet openen. - + New key generation failed. Genereren nieuwe sleutel mislukt. @@ -606,7 +651,7 @@ Adres: %4 &Start Bitcoin on window system startup - &Start Bitcoin wanneer het systeem opstart + Start &Bitcoin wanneer het systeem opstart @@ -636,7 +681,7 @@ Adres: %4 M&inimize on close - &Minimaliseer bij sluiten van het venster + Minimaliseer bij &sluiten van het venster @@ -675,18 +720,18 @@ Adres: %4 - Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. - Optionele transactiekosten per kB die helpen ervoor te zorgen dat uw transacties snel verwerkt worden. De meeste transacties zijn 1kB. Transactiekosten van 0.01 wordt aangeraden. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. + Optionele transactiekosten per kB die helpen om uw transacties snel te verwerken. De meeste transacties zijn 1 kB. Transactiekosten van 0,01 wordt aangeraden Pay transaction &fee - Betaal transactie&kosten + Betaal &transactiekosten - Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. - Optionele transactiekosten per kB die helpen ervoor te zorgen dat uw transacties snel verwerkt worden. De meeste transacties zijn 1kB. Transactiekosten van 0.01 wordt aangeraden. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. + Optionele transactiekosten per kB die helpen om uw transacties snel te verwerken. De meeste transacties zijn 1 kB. Transactiekosten van 0,01 wordt aangeraden @@ -745,20 +790,12 @@ Adres: %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Portemonnee</span></p></body></html> + + Wallet + Portemonnee - + <b>Recent transactions</b> <b>Recente transacties</b> @@ -782,13 +819,13 @@ p, li { white-space: pre-wrap; } SendCoinsDialog - - - - - - - + + + + + + + Send Coins Verstuur munten @@ -800,85 +837,90 @@ p, li { white-space: pre-wrap; } &Add recipient... - &Voeg ontvanger toe... + Voeg &ontvanger toe... - + Clear all Verwijder alles - + + Remove all transaction fields + Verwijder alle transactievelden + + + Balance: Saldo: - + 123.456 BTC 123.456 BTC - + Confirm the send action Bevestig de verstuuractie - + &Send &Verstuur - + <b>%1</b> to %2 (%3) <b>%1</b> aan %2 (%3) - + Confirm send coins Bevestig versturen munten - + Are you sure you want to send %1? Weet u zeker dat u %1 wil versturen? - + and en - + The recepient address is not valid, please recheck. - Het ontvangstadres is niet geldig, controleer ingave. + Het ontvangstadres is niet geldig, controleer uw opgave. - + The amount to pay must be larger than 0. Het ingevoerde gedrag moet groter zijn dan 0. - + Amount exceeds your balance Bedrag overschrijdt uw huidige saldo - + Total exceeds your balance when the %1 transaction fee is included Totaal overschrijdt uw huidige saldo wanneer de %1 transactiekosten worden meegerekend - + Duplicate address found, can only send to each address once in one send operation Dubbel adres gevonden, u kunt slechts eenmaal naar een bepaald adres verzenden per verstuurtransactie - + Error: Transaction creation failed Fout: Aanmaak transactie mislukt - + Error: The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. Fout: De transactie was afgewezen. Dit kan gebeuren als u eerder uitgegeven munten opnieuw wilt versturen, zoals wanneer u een kopie van uw wallet.dat heeft gebruikt en in de kopie deze munten zijn gemarkeerd als uitgegeven, maar in de huidige nog niet. @@ -893,7 +935,7 @@ p, li { white-space: pre-wrap; } A&mount: - B&edrag: + Bedra&g: @@ -904,12 +946,12 @@ p, li { white-space: pre-wrap; } Enter a label for this address to add it to your address book - Vul een etiket in voor dit adres om het toe te voegen aan uw adresboek + Vul een label in voor dit adres om het toe te voegen aan uw adresboek &Label: - &Etiket: + &Label: @@ -982,17 +1024,17 @@ p, li { white-space: pre-wrap; } , has not been successfully broadcast yet - ,is nog niet succesvol uitgezonden + , is nog niet succesvol uitgezonden , broadcast through %1 node - , uitzending langs %1 node + , uitgezonden naar %1 node , broadcast through %1 nodes - ,uitzending langs %1 nodes + , uitgezonden naar %1 nodes @@ -1025,7 +1067,7 @@ p, li { white-space: pre-wrap; } (yours, label: - (Uw, etiket: + (Uw adres, label: @@ -1038,12 +1080,12 @@ p, li { white-space: pre-wrap; } <b>Credit:</b> - <b>Tegoed:</b> + <b>Bij:</b> (%1 matures in %2 more blocks) - (%1 verwezenlijkt in %2 meer blokken) + (%1 komt beschikbaar na %2 blokken) @@ -1055,7 +1097,7 @@ p, li { white-space: pre-wrap; } <b>Debit:</b> - <b>Debet:</b> + <b>Af:</b> @@ -1080,7 +1122,7 @@ p, li { white-space: pre-wrap; } Generated coins must wait 120 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, it will change to "not accepted" and not be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Gegeneerde munten moeten 120 blokken wachten voor ze kunnen worden uitgegeven. Je net gegenereerde blok is uitgezonden aan het netwerk om te worden toegevoegd aan de blokkenketting. Als het niet wordt geaccepteerd in de ketting, zal het blok als "ongeldig" worden aangemerkt en kan het niet worden uitgegeven. Dit kan soms gebeuren als een andere node net iets sneller een blok heeft gegenereerd; een paar seconden voor de uwe. + Gegeneerde munten moeten 120 blokken wachten voor ze kunnen worden uitgegeven. Uw net gegenereerde blok is uitgezonden aan het netwerk om te worden toegevoegd aan de blokkenketen. Als het niet wordt geaccepteerd in de keten, zal het blok als "ongeldig" worden aangemerkt en kan het niet worden uitgegeven. Dit kan soms gebeuren als een andere node net iets sneller een blok heeft gegenereerd; een paar seconden voor het uwe. @@ -1099,54 +1141,60 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date Datum - + Type Type - + Address Adres - + Amount Bedrag - + Open for %n block(s) - Open gedurende %n blok(ken)Open gedurende %n blok(ken) + + Open gedurende %n blok + Open gedurende %n blokken + - + Open until %1 Open tot %1 - + Offline (%1 confirmations) Niet verbonden (%1 bevestigingen) - + Unconfirmed (%1 of %2 confirmations) Onbevestigd (%1 van %2 bevestigd) - + Confirmed (%1 confirmations) Bevestigd (%1 bevestigingen) Mined balance will be available in %n more blocks - Ontgonnen saldo word beschikbaar na %n blokken meerOntgonnen saldo word beschikbaar na %n blokken meer + + Ontgonnen saldo komt beschikbaar na %n blok + Ontgonnen saldo komt beschikbaar na %n blokken + @@ -1165,56 +1213,51 @@ p, li { white-space: pre-wrap; } - Received from IP - Ontvangen van IP + Received from + Ontvangen van - + Sent to Verzonden aan - - Sent to IP - Verzonden aan IP - - - + Payment to yourself Betaling aan uzelf - + Mined Ontgonnen - + (n/a) (nvt) - + Transaction status. Hover over this field to show number of confirmations. Transactiestatus. Houd de muiscursor boven dit veld om het aantal bevestigingen te laten zien. - + Date and time that the transaction was received. Datum en tijd waarop deze transactie is ontvangen. - + Type of transaction. Type transactie. - + Destination address of transaction. Ontvangend adres van transactie - + Amount removed from or added to balance. Bedrag verwijderd van of toegevoegd aan saldo @@ -1285,7 +1328,7 @@ p, li { white-space: pre-wrap; } Enter address or label to search - Vul adres of etiket in om te zoeken + Vul adres of label in om te zoeken @@ -1300,12 +1343,12 @@ p, li { white-space: pre-wrap; } Copy label - Kopieer etiket + Kopieer label Edit label - Verander Etiket + Bewerk label @@ -1313,67 +1356,67 @@ p, li { white-space: pre-wrap; } Toon details... - + Export Transaction Data Exporteer transactiegegevens - + Comma separated file (*.csv) Kommagescheiden bestand (*.csv) - + Confirmed Bevestigd - + Date Datum - + Type Type - + Label - Etiket + Label - + Address Adres - + Amount Bedrag - + ID ID - + Error exporting Fout bij exporteren - + Could not write to file %1. Kon niet schrijven naar bestand %1. - + Range: Bereik: - + to naar @@ -1389,220 +1432,220 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version Bitcoinversie - + Usage: Gebruik: - + Send command to -server or bitcoind Stuur commando naar -server of bitcoind - + List commands - List van commando's + List van commando's - + Get help for a command Toon hulp voor een commando - + Options: Opties: - + Specify configuration file (default: bitcoin.conf) Specifieer configuratiebestand (standaard: bitcoin.conf) - + Specify pid file (default: bitcoind.pid) Specifieer pid-bestand (standaard: bitcoind.pid) - + Generate coins Genereer munten - - Don't generate coins + + Don't generate coins Genereer geen munten - + Start minimized Geminimaliseerd starten - + Specify data directory Stel datamap in - + Specify connection timeout (in milliseconds) Specificeer de time-out tijd (in milliseconden) - + Connect through socks4 proxy Verbind via socks4 proxy - + Allow DNS lookups for addnode and connect Sta DNS-naslag toe voor addnode en connect - + Add a node to connect to Voeg een node toe om mee te verbinden - + Connect only to the specified node Verbind alleen met deze node - - Don't accept connections from outside + + Don't accept connections from outside Sta geen verbindingen van buitenaf toe - - Don't attempt to use UPnP to map the listening port + + Don't attempt to use UPnP to map the listening port Probeer geen UPnP te gebruiken om de poort waarop geluisterd wordt te mappen - + Attempt to use UPnP to map the listening port Probeer UPnP te gebruiken om de poort waarop geluisterd wordt te mappen - + Fee per kB to add to transactions you send Kosten per kB om aan transacties toe te voegen die u verstuurt - + Accept command line and JSON-RPC commands - Aanvaard commandoregel en JSON-RPC commando's + Aanvaard commandoregel en JSON-RPC commando's - + Run in the background as a daemon and accept commands - Draai in de achtergrond als daemon en aanvaard commando's + Draai in de achtergrond als daemon en aanvaard commando's - + Use the test network Gebruik het testnetwerk - + Username for JSON-RPC connections Gebruikersnaam voor JSON-RPC verbindingen - + Password for JSON-RPC connections Wachtwoord voor JSON-RPC verbindingen - + Listen for JSON-RPC connections on <port> (default: 8332) Luister voor JSON-RPC verbindingen op <poort> (standaard: 8332) - + Allow JSON-RPC connections from specified IP address Sta JSON-RPC verbindingen van opgegeven IP adres toe - + Send commands to node running on <ip> (default: 127.0.0.1) - Verstuur commando's naar proces dat op <ip> draait (standaard: 127.0.0.1) + Verstuur commando's naar proces dat op <ip> draait (standaard: 127.0.0.1) - + Set key pool size to <n> (default: 100) Stel sleutelpoelgrootte in op <n> (standaard: 100) - + Rescan the block chain for missing wallet transactions Doorzoek de blokkenketting op ontbrekende portemonnee-transacties - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -1611,717 +1654,152 @@ SSL opties: (zie de Bitcoin wiki voor SSL instructies) - + Use OpenSSL (https) for JSON-RPC connections Gebruik OpenSSL (https) voor JSON-RPC verbindingen - + Server certificate file (default: server.cert) Certificaat-bestand voor server (standaard: server.cert) - + Server private key (default: server.pem) Geheime sleutel voor server (standaard: server.pem) - + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) Aanvaardbare ciphers (standaard: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - + This help message Dit helpbericht - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. Kan geen lock op de gegevensdirectory %s verkrijgen. Bitcoin draait vermoedelijk reeds. - + Loading addresses... Adressen aan het laden... - + Error loading addr.dat Fout bij laden van bestand addr.dat - + Loading block index... Blokindex aan het laden... - + Error loading blkindex.dat Fout bij laden van bestand addr.dat - + Loading wallet... Portemonnee aan het laden... - + Error loading wallet.dat: Wallet corrupted Fout bij het laden van wallet.dat: Portemonnee corrupt - + Error loading wallet.dat: Wallet requires newer version of Bitcoin Fout bij het laden van wallet.dat: Portemonnee vereist nieuwere versie van Bitcoin - + Error loading wallet.dat Fout bij laden van bestand wallet.dat - + Rescanning... Opnieuw aan het scannen ... - + + Threshold for disconnecting misbehaving peers (default: 100) + + + + + + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) + + + + + Done loading Klaar met laden - + Invalid -proxy address Foutief -proxy adres - + Invalid amount for -paytxfee=<amount> Ongeldig bedrag voor -paytxfee=<bedrag> - + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. Waarschuwing: -paytxfee is zeer hoog ingesteld. Dit zijn de transactiekosten die u betaalt bij het versturen van een transactie. - + Error: CreateThread(StartNode) failed Fout: CreateThread(StartNode) is mislukt - + Warning: Disk space is low Waarschuwing: Weinig schijfruimte over - + Unable to bind to port %d on this computer. Bitcoin is probably already running. Kan niet binden aan poort %d op deze computer. Bitcoin draait vermoedelijk reeds. - - - This transaction is over the size limit. You can still send it for a fee of %s, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? - Deze transactie overschrijdt de groottelimiet. Om de transactie alsnog te versturen kunt u transactiekosten betalen van %s. Deze transactiekosten gaan naar de nodes die uw transactie verwerken en het helpt op deze manier bij het ondersteunen van het netwerk. Wilt u de transactiekosten betalen? - - - - Enter the current passphrase to the wallet. - Voer het huidige portemonneewachtwoord in. - - - - Passphrase - Wachtwoordzin - - - - Please supply the current wallet decryption passphrase. - Voer het huidige portemonnee-ontsleutel-wachtwoord in. - - - - The passphrase entered for the wallet decryption was incorrect. - Het wachtwoord voor de portemonnee-ontsleuteling was incorrect. - - - - Status - Status - - Date - Datum - - - - Description - Omschrijving - - - - Debit - Debet - - - - Credit - Credit - - - - Open for %d blocks - Open voor %d blokken - - - - Open until %s - Open tot %s - - - - %d/offline? - %d/niet verbonden? - - - - %d/unconfirmed - %d/onbevestigd - - - - %d confirmations - %d bevestigingen - - - - Generated - Gegenereerd - - - - Generated (%s matures in %d more blocks) - Gegenereerd (%s wordt volwassen in %d meer blokken) - - - - Generated - Warning: This block was not received by any other nodes and will probably not be accepted! - Gegenereerd - Waarschuwing: Dit blok werd door geen enkele andere node ontvangen en zal waarschijnlijk niet worden geaccepteerd! - - - - Generated (not accepted) - Gegenereerd (niet geaccepteerd) - - - - From: - Van: - - - - Received with: - Ontvangen met: - - - - Payment to yourself - Betaling aan uzelf - - - - To: - Aan: - - - - Generating - Aan het genereren - - - - (not connected) - (Niet verbonden) - - - - %d connections %d blocks %d transactions - %d verbindingen %d blokken %d transacties - - - - Wallet already encrypted. - Portemonnee reeds versleuteld. - - - - Enter the new passphrase to the wallet. -Please use a passphrase of 10 or more random characters, or eight or more words. - Voer het nieuwe portemonneewachtwoord in. Gebruik een wachtwoord van 10 of meer willekeurige tekens, of acht of meer woorden. - - - - Error: The supplied passphrase was too short. - Fout: Het opgegeven wachtwoord was te kort. - - - - WARNING: If you encrypt your wallet and lose your passphrase, you will LOSE ALL OF YOUR BITCOINS! -Are you sure you wish to encrypt your wallet? - WAARSCHUWING: Als u uw portemonnee versleutelt en uw wachtwoord verliest, verliest u AL UW BITCOINS! Bent u er zeker van dat u uw portemonnee wilt versleutelen? - - - - Please re-enter your new wallet passphrase. - Voer uw nieuwe portemonneewachtwoord nogmaals in. - - - - Error: the supplied passphrases didn't match. - Fout: De opgegeven wachtwoorden kwamen niet overeen. - - - - Wallet encryption failed. - Portemonneeversleuteling mislukt. - - - - Wallet Encrypted. -Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - Portemonnee versleuteld. -Onthoud dat het versleutelen van uw portemonnee uw bitcoins niet volledig kan beschermen tegen diefstal, bijvoorbeeld door malware die uw computer infecteert. - - - - Wallet is unencrypted, please encrypt it first. - Portemonnee is onversleuteld, gelieve deze eerst te versleutelen. - - - - Enter the new passphrase for the wallet. - Voer het nieuwe portemonneewachtwoord in. - - - - Re-enter the new passphrase for the wallet. - Voer het nieuwe portemonneewachtwoord opnieuw in. - - - - Wallet Passphrase Changed. - Portemonnewachtwoord veranderd. - - - - New Receiving Address - Nieuw Ontvangstadres - - - - You should use a new address for each payment you receive. - -Label - Het is aan te raden om een nieuw adres te gebruiken voor elke betaling die u ontvangt. - -Etiket - - - - <b>Status:</b> - <b>Status:</b> - - - - , has not been successfully broadcast yet - , is nog niet succesvol uitgezonden - - - - , broadcast through %d node - , uitgezonden door %d node - - - - , broadcast through %d nodes - , uitgezonden door %d nodes - - - - <b>Date:</b> - <b>Datum:</b> - - - - <b>Source:</b> Generated<br> - <b>Bron:</b> Gegenereerd <br> - - - - <b>From:</b> - <b>Uit:</b> - - - - unknown - onbekend - - - - <b>To:</b> - <b>Aan:</b> - - - - (yours, label: - (uw, etiket: - - - - (yours) - (uw) - - - - <b>Credit:</b> - <b>Credit:</b> - - - - (%s matures in %d more blocks) - (%s wordt verwezenlijkt in %d meer blokken) - - - - (not accepted) - (Niet geaccepteerd) - - - - <b>Debit:</b> - <b>Debet:</b> - - - - <b>Transaction fee:</b> - <b>Transactiekosten:</b> - - - - <b>Net amount:</b> - <b>Netto bedrag:</b> - - - - Message: - Bericht: - - - - Comment: - Commentaar: - - - - Generated coins must wait 120 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, it will change to "not accepted" and not be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Gegeneerde munten moeten 120 blokken wachten voor ze kunnen worden uitgegeven. Je net gegenereerde blok is uitgezonden aan het netwerk om te worden toegevoegd aan de blokkenketting. Als het niet wordt geaccepteerd in de ketting, zal het blok als "ongeldig" worden aangemerkt en kan het niet worden uitgegeven. Dit kan soms gebeuren als een andere node net iets sneller een blok heeft gegenereerd; een paar seconden voor de uwe. - - - - Cannot write autostart/bitcoin.desktop file - Kan niet schrijven naar bestand autostart/bitcoin.desktop - - - - Main - Algemeen - - - - &Start Bitcoin on window system startup - &Start Bitcoin bij het opstarten van het systeem - - - - &Minimize on close - &Minimaliseer bij afsluiten - - - - version %s - versie %s - - - - Error in amount - Fout in bedrag - - - - Send Coins - Verstuur munten - - - - Amount exceeds your balance - Bedrag is hoger dan uw saldo - - - - Total exceeds your balance when the - Totaal is hoger dan uw saldo als de - - - - transaction fee is included - transactiekosten zijn meegerekend - - - - Payment sent - Betaling verzonden - - - - Sending... - Aan het versturen... - - - - Invalid address - Ongeldig adres - - - - Sending %s to %s - %s aan het versturen naar %s - - - - CANCELLED - GEANNULEERD - - - - Cancelled - Geannuleerd - - - - Transfer cancelled - Overschrijving geannuleerd - - - - Error: - Fout: - - - - Insufficient funds - Ontoereikend saldo - - - - Connecting... - Aan het verbinden... - - - - Unable to connect - Kan geen verbinding maken - - - - Requesting public key... - Publieke sleutel aan het aanvragen ... - - - - Received public key... - Publieke sleutel ontvangen... - - - - Recipient is not accepting transactions sent by IP address - Ontvanger accepteert geen transacties verzonden per IP-adres - - - - Transfer was not accepted - Overschrijving was niet geaccepteerd - - - - Invalid response received - Ongeldig antwoord ontvangen - - - - Creating transaction... - Transactie aan het creëren... - - - - This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - Deze transactie vereist transactiekosten van tenminste %s vanwege het bedrag, de complexiteit, of het gebruik van recentelijk ontvangen munten - - - - Transaction creation failed - Transactiecreatie mislukt - - - - Transaction aborted - Transactie geannuleerd - - - - Lost connection, transaction cancelled - Verbinding verbroken, transactie geannuleerd - - - - Sending payment... - Betaling aan het versturen... - - - - The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. - De transactie was afgewezen. Dit kan gebeuren als u eerder uitgegeven munten opnieuw wilt versturen, zoals wanneer u een kopie van uw wallet.dat heeft gebruikt en in de kopie deze munten zijn gemarkeerd als uitgegeven, maar in de huidige nog niet. - - - - Waiting for confirmation... - Aan het wachten voor bevestiging... - - - - The payment was sent, but the recipient was unable to verify it. -The transaction is recorded and will credit to the recipient, -but the comment information will be blank. - De betaling was verzonden, maar de ontvanger was niet in staat om deze te verifiëren. -De transactie is opgeslagen en zal ten goede komen aan de ontvanger, -maar het commentaarveld zal leeg zijn - - - - Payment was sent, but an invalid response was received - Betaling is verzonden, maar een ongeldig antwoord was ontvangen - - - - Payment completed - Betaling voltooid - - - - Name - Naam - - - - Address - Adres - - - - Label - Etiket - - - - Bitcoin Address - Bitcoinadres - - - - This is one of your own addresses for receiving payments and cannot be entered in the address book. - Dit is een van uw eigen adressen voor het ontvangen van betalingen en kan niet worden ingevoerd in het adresboek. - - - - Edit Address - Bewerk Adres - - - - Edit Address Label - Bewerk Adresetiket - - - - Add Address - Voeg Adres Toe - - - - Bitcoin - Bitcoin - - - - Bitcoin - Generating - Bitcoin - Aan het genereren - - - - Bitcoin - (not connected) - Bitcoin - (niet verbonden) - - - - &Open Bitcoin - &Open Bitcoin - - - - &Send Bitcoins - &Verstuur Bitcoins - - - - O&ptions... - O&pties... - - - - E&xit - A&fsluiten - - - - Program has crashed and will terminate. - Het programma is gecrasht en zal worden beëindigd. - - - Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. Waarschuwing: Controleer dat de datum en tijd op uw computer correct zijn ingesteld. Als uw klok fout staat zal Bitcoin niet correct werken. - + beta beta @@ -2329,9 +1807,9 @@ maar het commentaarveld zal leeg zijn main - - Bitcoin Qt - Bitcoin Qt + + Bitcoin-Qt + - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_pt_BR.ts b/src/qt/locale/bitcoin_pt_BR.ts index 68bd057fe2a..22037b881cf 100644 --- a/src/qt/locale/bitcoin_pt_BR.ts +++ b/src/qt/locale/bitcoin_pt_BR.ts @@ -16,7 +16,7 @@ - Copyright © 2009-2011 Bitcoin Developers + Copyright © 2009-2012 Bitcoin Developers This is experimental software. @@ -51,7 +51,7 @@ This product includes software developed by the OpenSSL Project for use in the O &New Address... - &Novo endereço ... + & Novo endereço ... @@ -61,7 +61,7 @@ This product includes software developed by the OpenSSL Project for use in the O &Copy to Clipboard - &Copie para a área de transferência do sistema + & Copie para a área de transferência do sistema @@ -71,43 +71,43 @@ This product includes software developed by the OpenSSL Project for use in the O &Delete - &Excluir + & Excluir - + Export Address Book Data Exportação de dados do Catálogo de Endereços - + Comma separated file (*.csv) Arquivo separado por vírgulas (*. csv) - + Error exporting Erro ao exportar - + Could not write to file %1. - + Could not write to file %1. AddressTableModel - + Label Rótulo - + Address Endereço - + (no label) (Sem rótulo) @@ -121,124 +121,131 @@ This product includes software developed by the OpenSSL Project for use in the O + TextLabel TextoDoRótulo - + Enter passphrase Digite a frase de segurança - + New passphrase Nova frase de segurança - + Repeat new passphrase Repita a nova frase de segurança - + Enter the new passphrase to the wallet.<br/>Please use a passphrase of <b>10 or more random characters</b>, or <b>eight or more words</b>. Digite a nova frase de seguraça da sua carteira. <br/> Por favor, use uma frase de <b>10 ou mais caracteres aleatórios,</b> ou <b>oito ou mais palavras.</b> - + Encrypt wallet Criptografar carteira - + This operation needs your wallet passphrase to unlock the wallet. Esta operação precisa de sua frase de segurança para desbloquear a carteira. - + Unlock wallet Desbloquear carteira - + This operation needs your wallet passphrase to decrypt the wallet. Esta operação precisa de sua frase de segurança para descriptografar a carteira. - + Decrypt wallet Descriptografar carteira - + Change passphrase Alterar frase de segurança - + Enter the old and new passphrase to the wallet. Digite a frase de segurança antiga e nova para a carteira. - + Confirm wallet encryption Confirmar criptografia da carteira - + WARNING: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! Are you sure you wish to encrypt your wallet? AVISO: Se você criptografar sua carteira e perder sua senha, você vai <b>perder todos os seus BITCOINS!</b> Tem certeza de que deseja criptografar sua carteira? - - + + Wallet encrypted Carteira criptografada - - Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - Lembre-se que sua carteira criptografada não poderá proteger totalmente os seus bitcoins de serem roubados por softwares maldosos que infectem seu computador. + + + Warning: The Caps Lock key is on. + - - - - + + + + Wallet encryption failed A criptografia da carteira falhou - + Wallet encryption failed due to an internal error. Your wallet was not encrypted. A criptografia da carteira falhou devido a um erro interno. Sua carteira não estava criptografada. - - - The supplied passphrases do not match. - A frase de segurança fornecida não confere. + + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. + Bitcoin will close now to finish the encryption process. Lembre-se que sua carteira criptografada não poderá proteger totalmente os seus bitcoins de serem roubados por softwares maldosos que infectem seu computador. + + The supplied passphrases do not match. + A frase de segurança fornecida não confere. + + + Wallet unlock failed A abertura da carteira falhou - - + + The passphrase entered for the wallet decryption was incorrect. A frase de segurança digitada para a descriptografia da carteira estava incorreta. - + Wallet decryption failed A descriptografia da carteira falhou - + Wallet passphrase was succesfully changed. A frase de segurança da carteira foi alterada com êxito. @@ -246,177 +253,188 @@ Are you sure you wish to encrypt your wallet? BitcoinGUI - + Bitcoin Wallet Carteira Bitcoin - + + Synchronizing with network... Sincronizando com a rede... - + Block chain synchronization in progress Sincronização da corrente de blocos em andamento - + &Overview &Visão geral - + Show general overview of wallet Mostrar visão geral da carteira - + &Transactions &Transações - + Browse transaction history Navegar pelo histórico de transações - + &Address Book &Catálogo de endereços - + Edit the list of stored addresses and labels Editar a lista de endereços e rótulos - + &Receive coins &Receber moedas - + Show the list of addresses for receiving payments Mostrar a lista de endereços para receber pagamentos - + &Send coins &Enviar moedas - + Send coins to a bitcoin address Enviar moedas para um endereço bitcoin - + E&xit E&xit - + Quit application Sair da aplicação - + &About %1 &About %1 - + Show information about Bitcoin Mostrar informação sobre Bitcoin - + &Options... &Opções... - + Modify configuration options for bitcoin Modificar opções de configuração para bitcoin - + Open &Bitcoin Abrir &Bitcoin - + Show the Bitcoin window Mostrar a janela Bitcoin - + &Export... &Exportar... - + Export the current view to a file Export para arquivo - + &Encrypt Wallet &Criptografar Carteira - + Encrypt or decrypt wallet Criptografar ou decriptogravar carteira - + &Change Passphrase &Mudar frase de segurança - + Change the passphrase used for wallet encryption Mudar a frase de segurança utilizada na criptografia da carteira - - &File - &Arquivo + + About &Qt + About &Qt - + + Show information about Qt + Mostrar informação sobre Qt + + + + &File + & Arquivo + + + &Settings E configurações - + &Help - &Ajuda + & Ajuda - + Tabs toolbar Barra de ferramentas - + Actions toolbar Barra de ações - + [testnet] [testnet] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network %n conexão ativa na rede Bitcoin @@ -424,17 +442,17 @@ Are you sure you wish to encrypt your wallet? - + Downloaded %1 of %2 blocks of transaction history. Carregados %1 de %2 blocos do histórico de transações. - + Downloaded %1 blocks of transaction history. Carregados %1 blocos do histórico de transações. - + %n second(s) ago %n segundo atrás @@ -442,7 +460,7 @@ Are you sure you wish to encrypt your wallet? - + %n minute(s) ago %n minutos atrás @@ -450,7 +468,7 @@ Are you sure you wish to encrypt your wallet? - + %n hour(s) ago %n hora atrás @@ -458,7 +476,7 @@ Are you sure you wish to encrypt your wallet? - + %n day(s) ago %n dia atrás @@ -466,63 +484,67 @@ Are you sure you wish to encrypt your wallet? - + Up to date Atualizado - + Catching up... Recuperando o atraso ... - + Last received block was generated %1. Last received block was generated %1. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? - + Sending... Sending... - + Sent transaction Sent transaction - + Incoming transaction Incoming transaction - + Date: %1 Amount: %2 Type: %3 Address: %4 - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - + Data: %1 +Quantidade: %2 +Tipo: %3 +Endereço: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> Wallet is <b>encrypted</b> and currently <b>unlocked</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> Wallet is <b>encrypted</b> and currently <b>locked</b> + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + + DisplayOptionsPage @@ -538,8 +560,13 @@ Address: %4 - Display addresses in transaction list - Display addresses in transaction list + &Display addresses in transaction list + + + + + Whether to show Bitcoin addresses in the transaction list + @@ -590,22 +617,22 @@ Address: %4 Edit sending address - + The entered address "%1" is already in the address book. The entered address "%1" is already in the address book. - + The entered address "%1" is not a valid bitcoin address. The entered address "%1" is not a valid bitcoin address. - + Could not unlock wallet. Could not unlock wallet. - + New key generation failed. New key generation failed. @@ -684,8 +711,8 @@ Address: %4 - Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. - Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. + @@ -694,8 +721,8 @@ Address: %4 - Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. - Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. + @@ -754,20 +781,12 @@ Address: %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> + + Wallet + - + <b>Recent transactions</b> <b>Recent transactions</b> @@ -791,13 +810,13 @@ p, li { white-space: pre-wrap; } SendCoinsDialog - - - - - - - + + + + + + + Send Coins Send Coins @@ -812,82 +831,87 @@ p, li { white-space: pre-wrap; } &Add recipient... - + Clear all Clear all - + + Remove all transaction fields + + + + Balance: Balance: - + 123.456 BTC 123.456 BTC - + Confirm the send action Confirm the send action - + &Send &Send - + <b>%1</b> to %2 (%3) <b>%1</b> to %2 (%3) - + Confirm send coins Confirm send coins - + Are you sure you want to send %1? Are you sure you want to send %1? - + and and - + The recepient address is not valid, please recheck. The recepient address is not valid, please recheck. - + The amount to pay must be larger than 0. The amount to pay must be larger than 0. - + Amount exceeds your balance Amount exceeds your balance - + Total exceeds your balance when the %1 transaction fee is included Total exceeds your balance when the %1 transaction fee is included - + Duplicate address found, can only send to each address once in one send operation Duplicate address found, can only send to each address once in one send operation - + Error: Transaction creation failed Error: Transaction creation failed - + Error: The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. Error: The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. @@ -1108,27 +1132,27 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date Date - + Type Type - + Address Address - + Amount Amount - + Open for %n block(s) Open for %n block @@ -1136,22 +1160,22 @@ p, li { white-space: pre-wrap; } - + Open until %1 Open until %1 - + Offline (%1 confirmations) Offline (%1 confirmations) - + Unconfirmed (%1 of %2 confirmations) Unconfirmed (%1 of %2 confirmations) - + Confirmed (%1 confirmations) Confirmed (%1 confirmations) @@ -1180,56 +1204,51 @@ p, li { white-space: pre-wrap; } - Received from IP - Received from IP + Received from + - + Sent to Sent to - - Sent to IP - Sent to IP - - - + Payment to yourself Payment to yourself - + Mined Mined - + (n/a) (n/a) - + Transaction status. Hover over this field to show number of confirmations. Transaction status. Hover over this field to show number of confirmations. - + Date and time that the transaction was received. Date and time that the transaction was received. - + Type of transaction. Type of transaction. - + Destination address of transaction. Destination address of transaction. - + Amount removed from or added to balance. Amount removed from or added to balance. @@ -1328,67 +1347,67 @@ p, li { white-space: pre-wrap; } Show details... - + Export Transaction Data Export Transaction Data - + Comma separated file (*.csv) Comma separated file (*.csv) - + Confirmed Confirmed - + Date Date - + Type Type - + Label Label - + Address Address - + Amount Amount - + ID ID - + Error exporting Error exporting - + Could not write to file %1. Could not write to file %1. - + Range: Range: - + to to @@ -1404,220 +1423,220 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version Bitcoin version - + Usage: Usage: - + Send command to -server or bitcoind Send command to -server or bitcoind - + List commands List commands - + Get help for a command Get help for a command - + Options: Options: - + Specify configuration file (default: bitcoin.conf) Specify configuration file (default: bitcoin.conf) - + Specify pid file (default: bitcoind.pid) Specify pid file (default: bitcoind.pid) - + Generate coins Generate coins - + Don't generate coins Don't generate coins - + Start minimized Start minimized - + Specify data directory Specify data directory - + Specify connection timeout (in milliseconds) Specify connection timeout (in milliseconds) - + Connect through socks4 proxy Connect through socks4 proxy - + Allow DNS lookups for addnode and connect Allow DNS lookups for addnode and connect - + Add a node to connect to Add a node to connect to - + Connect only to the specified node Connect only to the specified node - + Don't accept connections from outside Don't accept connections from outside - + Don't attempt to use UPnP to map the listening port Don't attempt to use UPnP to map the listening port - + Attempt to use UPnP to map the listening port Attempt to use UPnP to map the listening port - + Fee per kB to add to transactions you send Fee per kB to add to transactions you send - + Accept command line and JSON-RPC commands Accept command line and JSON-RPC commands - + Run in the background as a daemon and accept commands Run in the background as a daemon and accept commands - + Use the test network Use the test network - + Username for JSON-RPC connections Username for JSON-RPC connections - + Password for JSON-RPC connections Password for JSON-RPC connections - + Listen for JSON-RPC connections on <port> (default: 8332) Listen for JSON-RPC connections on <port> (default: 8332) - + Allow JSON-RPC connections from specified IP address Allow JSON-RPC connections from specified IP address - + Send commands to node running on <ip> (default: 127.0.0.1) Send commands to node running on <ip> (default: 127.0.0.1) - + Set key pool size to <n> (default: 100) Set key pool size to <n> (default: 100) - + Rescan the block chain for missing wallet transactions Rescan the block chain for missing wallet transactions - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -1626,721 +1645,154 @@ SSL options: (see the Bitcoin Wiki for SSL setup instructions) - + Use OpenSSL (https) for JSON-RPC connections Use OpenSSL (https) for JSON-RPC connections - + Server certificate file (default: server.cert) Server certificate file (default: server.cert) - + Server private key (default: server.pem) Server private key (default: server.pem) - + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - + This help message This help message - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. Cannot obtain a lock on data directory %s. Bitcoin is probably already running. - + Loading addresses... Loading addresses... - + Error loading addr.dat Error loading addr.dat - + Loading block index... Loading block index... - + Error loading blkindex.dat Error loading blkindex.dat - + Loading wallet... Loading wallet... - + Error loading wallet.dat: Wallet corrupted Error loading wallet.dat: Wallet corrupted - + Error loading wallet.dat: Wallet requires newer version of Bitcoin Error loading wallet.dat: Wallet requires newer version of Bitcoin - + Error loading wallet.dat Error loading wallet.dat - + Rescanning... Rescanning... - + + Threshold for disconnecting misbehaving peers (default: 100) + + + + + + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) + + + + + Done loading Done loading - + Invalid -proxy address Invalid -proxy address - + Invalid amount for -paytxfee=<amount> Invalid amount for -paytxfee=<amount> - + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. - + Error: CreateThread(StartNode) failed Error: CreateThread(StartNode) failed - + Warning: Disk space is low Warning: Disk space is low - + Unable to bind to port %d on this computer. Bitcoin is probably already running. Unable to bind to port %d on this computer. Bitcoin is probably already running. - - - This transaction is over the size limit. You can still send it for a fee of %s, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? - This transaction is over the size limit. You can still send it for a fee of %s, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? - - - - Enter the current passphrase to the wallet. - Enter the current passphrase to the wallet. - - - - Passphrase - Passphrase - - - - Please supply the current wallet decryption passphrase. - Please supply the current wallet decryption passphrase. - - - - The passphrase entered for the wallet decryption was incorrect. - The passphrase entered for the wallet decryption was incorrect. - - - - Status - Status - - Date - Date - - - - Description - Description - - - - Debit - Debit - - - - Credit - Credit - - - - Open for %d blocks - Open for %d blocks - - - - Open until %s - Open until %s - - - - %d/offline? - %d/offline? - - - - %d/unconfirmed - %d/unconfirmed - - - - %d confirmations - %d confirmations - - - - Generated - Generated - - - - Generated (%s matures in %d more blocks) - Generated (%s matures in %d more blocks) - - - - Generated - Warning: This block was not received by any other nodes and will probably not be accepted! - Generated - Warning: This block was not received by any other nodes and will probably not be accepted! - - - - Generated (not accepted) - Generated (not accepted) - - - - From: - From: - - - - Received with: - Received with: - - - - Payment to yourself - Payment to yourself - - - - To: - To: - - - - Generating - Generating - - - - (not connected) - (not connected) - - - - %d connections %d blocks %d transactions - %d connections %d blocks %d transactions - - - - Wallet already encrypted. - Wallet already encrypted. - - - - Enter the new passphrase to the wallet. -Please use a passphrase of 10 or more random characters, or eight or more words. - Enter the new passphrase to the wallet. -Please use a passphrase of 10 or more random characters, or eight or more words. - - - - Error: The supplied passphrase was too short. - Error: The supplied passphrase was too short. - - - - WARNING: If you encrypt your wallet and lose your passphrase, you will LOSE ALL OF YOUR BITCOINS! -Are you sure you wish to encrypt your wallet? - WARNING: If you encrypt your wallet and lose your passphrase, you will LOSE ALL OF YOUR BITCOINS! -Are you sure you wish to encrypt your wallet? - - - - Please re-enter your new wallet passphrase. - Please re-enter your new wallet passphrase. - - - - Error: the supplied passphrases didn't match. - Error: the supplied passphrases didn't match. - - - - Wallet encryption failed. - Wallet encryption failed. - - - - Wallet Encrypted. -Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - Wallet Encrypted. -Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - - - - Wallet is unencrypted, please encrypt it first. - Wallet is unencrypted, please encrypt it first. - - - - Enter the new passphrase for the wallet. - Enter the new passphrase for the wallet. - - - - Re-enter the new passphrase for the wallet. - Re-enter the new passphrase for the wallet. - - - - Wallet Passphrase Changed. - Wallet Passphrase Changed. - - - - New Receiving Address - New Receiving Address - - - - You should use a new address for each payment you receive. - -Label - You should use a new address for each payment you receive. - -Label - - - - <b>Status:</b> - <b>Status:</b> - - - - , has not been successfully broadcast yet - , has not been successfully broadcast yet - - - - , broadcast through %d node - , broadcast through %d node - - - - , broadcast through %d nodes - , broadcast through %d nodes - - - - <b>Date:</b> - <b>Date:</b> - - - - <b>Source:</b> Generated<br> - <b>Source:</b> Generated<br> - - - - <b>From:</b> - <b>From:</b> - - - - unknown - unknown - - - - <b>To:</b> - <b>To:</b> - - - - (yours, label: - (yours, label: - - - - (yours) - (yours) - - - - <b>Credit:</b> - <b>Credit:</b> - - - - (%s matures in %d more blocks) - (%s matures in %d more blocks) - - - - (not accepted) - (not accepted) - - - - <b>Debit:</b> - <b>Debit:</b> - - - - <b>Transaction fee:</b> - <b>Transaction fee:</b> - - - - <b>Net amount:</b> - <b>Net amount:</b> - - - - Message: - Message: - - - - Comment: - Comment: - - - - Generated coins must wait 120 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, it will change to "not accepted" and not be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Generated coins must wait 120 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, it will change to "not accepted" and not be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - - - Cannot write autostart/bitcoin.desktop file - Cannot write autostart/bitcoin.desktop file - - - - Main - Main - - - - &Start Bitcoin on window system startup - &Start Bitcoin on window system startup - - - - &Minimize on close - &Minimize on close - - - - version %s - version %s - - - - Error in amount - Error in amount - - - - Send Coins - Send Coins - - - - Amount exceeds your balance - Amount exceeds your balance - - - - Total exceeds your balance when the - Total exceeds your balance when the - - - - transaction fee is included - transaction fee is included - - - - Payment sent - Payment sent - - - - Sending... - Sending... - - - - Invalid address - Invalid address - - - - Sending %s to %s - Sending %s to %s - - - - CANCELLED - CANCELLED - - - - Cancelled - Cancelled - - - - Transfer cancelled - Transfer cancelled - - - - Error: - Error: - - - - Insufficient funds - Insufficient funds - - - - Connecting... - Connecting... - - - - Unable to connect - Unable to connect - - - - Requesting public key... - Requesting public key... - - - - Received public key... - Received public key... - - - - Recipient is not accepting transactions sent by IP address - Recipient is not accepting transactions sent by IP address - - - - Transfer was not accepted - Transfer was not accepted - - - - Invalid response received - Invalid response received - - - - Creating transaction... - Creating transaction... - - - - This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - - - - Transaction creation failed - Transaction creation failed - - - - Transaction aborted - Transaction aborted - - - - Lost connection, transaction cancelled - Lost connection, transaction cancelled - - - - Sending payment... - Sending payment... - - - - The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. - The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. - - - - Waiting for confirmation... - Waiting for confirmation... - - - - The payment was sent, but the recipient was unable to verify it. -The transaction is recorded and will credit to the recipient, -but the comment information will be blank. - The payment was sent, but the recipient was unable to verify it. -The transaction is recorded and will credit to the recipient, -but the comment information will be blank. - - - - Payment was sent, but an invalid response was received - Payment was sent, but an invalid response was received - - - - Payment completed - Payment completed - - - - Name - Name - - - - Address - Address - - - - Label - Label - - - - Bitcoin Address - Bitcoin Address - - - - This is one of your own addresses for receiving payments and cannot be entered in the address book. - This is one of your own addresses for receiving payments and cannot be entered in the address book. - - - - Edit Address - Edit Address - - - - Edit Address Label - Edit Address Label - - - - Add Address - Add Address - - - - Bitcoin - Bitcoin - - - - Bitcoin - Generating - Bitcoin - Generating - - - - Bitcoin - (not connected) - Bitcoin - (not connected) - - - - &Open Bitcoin - &Open Bitcoin - - - - &Send Bitcoins - &Send Bitcoins - - - - O&ptions... - O&ptions... - - - - E&xit - E&xit - - - - Program has crashed and will terminate. - Program has crashed and will terminate. - - - Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. - + beta beta @@ -2348,9 +1800,9 @@ but the comment information will be blank. main - - Bitcoin Qt - Bitcoin Qt + + Bitcoin-Qt + diff --git a/src/qt/locale/bitcoin_ru.ts b/src/qt/locale/bitcoin_ru.ts index a87ec11609c..10a4ce4afb6 100644 --- a/src/qt/locale/bitcoin_ru.ts +++ b/src/qt/locale/bitcoin_ru.ts @@ -1,33 +1,35 @@ - + + + UTF-8 AboutDialog About Bitcoin - О Bitcoin'е + О Bitcoin <b>Bitcoin</b> version - Версия Bitcoin'а + <b>Bitcoin</b> версия - Copyright © 2009-2011 Bitcoin Developers + Copyright © 2009-2012 Bitcoin Developers This is experimental software. Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - Copyright © 2009-2011 Разработчики сети Bitcoin + Все права защищены © 2009-2012 Разработчики Bitcoin -ВНИМАНИЕ: этот софт является экспериментальным! +Это экспериментальная программа. -Распространяется под лицензией MIT/X11, за дополнительной информацией обращайтесь к прилагающемуся файлу license.txt или документу по данной ссылке: http://www.opensource.org/licenses/mit-license.php. +Распространяется на правах лицензии MIT/X11, см. файл license.txt или http://www.opensource.org/licenses/mit-license.php. -Данный продукт включает в себя разработки проекта OpenSSL (http://www.openssl.org/), криптографические функции и алгоритмы, написанные Эриком Янгом (eay@cryptsoft.com) и функции для работы с UPnP за авторством Томаса Бернарда. +Этот продукт включате ПО, разработанное OpenSSL Project для использования в OpenSSL Toolkit (http://www.openssl.org/) и криптографическое ПО, написанное Eric Young (eay@cryptsoft.com) и ПО для работы с UPnP, написанное Thomas Bernard. @@ -78,22 +80,22 @@ This product includes software developed by the OpenSSL Project for use in the O &Удалить - + Export Address Book Data Экспортировать адресную книгу - + Comma separated file (*.csv) Текст, разделённый запятыми (*.csv) - + Error exporting Ошибка экспорта - + Could not write to file %1. Невозможно записать в файл %1. @@ -101,17 +103,17 @@ This product includes software developed by the OpenSSL Project for use in the O AddressTableModel - + Label Метка - + Address Адрес - + (no label) [нет метки] @@ -125,125 +127,132 @@ This product includes software developed by the OpenSSL Project for use in the O + TextLabel TextLabel - + Enter passphrase Введите пароль - + New passphrase Новый пароль - + Repeat new passphrase Повторите новый пароль - + Enter the new passphrase to the wallet.<br/>Please use a passphrase of <b>10 or more random characters</b>, or <b>eight or more words</b>. Введите новый пароль для бумажника. <br/> Пожалуйста, используйте фразы из <b>10 или более случайных символов,</b> или <b>восьми и более слов.</b> - + Encrypt wallet Зашифровать бумажник - + This operation needs your wallet passphrase to unlock the wallet. Для выполнения операции требуется пароль вашего бумажника. - + Unlock wallet Разблокировать бумажник - + This operation needs your wallet passphrase to decrypt the wallet. Для выполнения операции требуется пароль вашего бумажника. - + Decrypt wallet Расшифровать бумажник - + Change passphrase Сменить пароль - + Enter the old and new passphrase to the wallet. Введите старый и новый пароль для бумажника. - + Confirm wallet encryption Подтвердите шифрование бумажника - + WARNING: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! Are you sure you wish to encrypt your wallet? ВНИМАНИЕ: Если вы зашифруете бумажник и потеряете свой ​​пароль, вы <b>ПОТЕРЯЕТЕ ВСЕ ВАШИ БИТКОИНЫ!</b> Вы действительно хотите зашифровать ваш бумажник? - - + + Wallet encrypted Бумажник зашифрован - - Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - Помните, что шифрование вашего бумажника не может полностью защитить ваши биткоины от кражи вредоносными программами, заражающими компьютер. + + + Warning: The Caps Lock key is on. + Внимание: Caps Lock включен. - - - - + + + + Wallet encryption failed Не удалось зашифровать бумажник - + Wallet encryption failed due to an internal error. Your wallet was not encrypted. Шифрование бумажника не удалось из-за внутренней ошибки. Ваш бумажник не был зашифрован. - - + + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. + Сейчас программа закроется для завершения процесса шифрования. Помните, что шифрование вашего бумажника не может полностью защитить ваши биткоины от кражи с помощью инфицирования вашего компьютера вредоносным ПО. + + + + The supplied passphrases do not match. Введённые пароли не совпадают. - + Wallet unlock failed Разблокировка бумажника не удалась - - + + The passphrase entered for the wallet decryption was incorrect. Указанный пароль не подходит. - + Wallet decryption failed Расшифрование бумажника не удалось - + Wallet passphrase was succesfully changed. Пароль бумажника успешно изменён. @@ -251,247 +260,278 @@ Are you sure you wish to encrypt your wallet? BitcoinGUI - + Bitcoin Wallet Bitcoin-бумажник - + + Synchronizing with network... Синхронизация с сетью... - + Block chain synchronization in progress Идёт синхронизация цепочки блоков - + &Overview О&бзор - + Show general overview of wallet Показать общий обзор действий с бумажником - + &Transactions &Транзакции - + Browse transaction history Показать историю транзакций - + &Address Book &Адресная книга - + Edit the list of stored addresses and labels Изменить список сохранённых адресов и меток к ним - + &Receive coins - &Получение + &Получение монет - + Show the list of addresses for receiving payments Показать список адресов для получения платежей - + &Send coins - Отп&равка + Отп&равка монет - + Send coins to a bitcoin address Отправить монеты на указанный адрес - + E&xit В&ыход - + Quit application Закрыть приложение - + &About %1 &О %1 - + Show information about Bitcoin Показать информацию о Bitcoin'е - + &Options... Оп&ции... - + Modify configuration options for bitcoin Изменить настройки - + Open &Bitcoin &Показать бумажник - + Show the Bitcoin window Показать окно бумажника - + &Export... &Экспорт... - + Export the current view to a file Экспортировать в файл - + &Encrypt Wallet &Зашифровать бумажник - + Encrypt or decrypt wallet Зашифровать или расшифровать бумажник - + &Change Passphrase &Изменить пароль - + Change the passphrase used for wallet encryption Изменить пароль шифрования бумажника - + + About &Qt + О &Qt + + + + Show information about Qt + Показать информацию о Qt + + + &File &Файл - + &Settings &Настройки - + &Help &Помощь - + Tabs toolbar Панель вкладок - + Actions toolbar Панель действий - + [testnet] [тестовая сеть] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - %n активное соединение с сетью%n активных соединений с сетью%n активных соединений с сетью + + %n активное соединение с сетью + %n активных соединений с сетью + %n активных соединений с сетью + - + Downloaded %1 of %2 blocks of transaction history. Загружено %1 из %2 блоков истории транзакций. - + Downloaded %1 blocks of transaction history. Загружено %1 блоков истории транзакций. - + %n second(s) ago - %n секунду назад%n секунды назад%n секунд назад + + %n секунду назад + %n секунды назад + %n секунд назад + - + %n minute(s) ago - %n минуту назад%n минуты назад%n минут назад + + %n минуту назад + %n минуты назад + %n минут назад + - + %n hour(s) ago - %n час назад%n часа назад%n часов назад + + %n час назад + %n часа назад + %n часов назад + - + %n day(s) ago - %n день назад%n дня назад%n дней назад + + %n день назад + %n дня назад + %n дней назад + - + Up to date Синхронизированно - + Catching up... Синхронизируется... - + Last received block was generated %1. Последний полученный блок был сгенерирован %1. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? Данная транзакция превышает предельно допустимый размер. Но Вы можете всё равно совершить ей, добавив комиссию в %1, которая отправится тем узлам, которые обработают Вашу транзакцию и поможет поддержать сеть. Вы хотите добавить комиссию? - + Sending... Отправка... - + Sent transaction Исходящая транзакция - + Incoming transaction Входящая транзакция - + Date: %1 Amount: %2 Type: %3 @@ -504,15 +544,20 @@ Address: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> Бумажник <b>зашифрован</b> и в настоящее время <b>разблокирован</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> Бумажник <b>зашифрован</b> и в настоящее время <b>заблокирован</b> + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + + DisplayOptionsPage @@ -528,8 +573,13 @@ Address: %4 - Display addresses in transaction list - Показывать адреса в списке транзакций + &Display addresses in transaction list + &Показывать адреса в списке транзакций + + + + Whether to show Bitcoin addresses in the transaction list + @@ -580,22 +630,22 @@ Address: %4 Изменение адреса для отправки - + The entered address "%1" is already in the address book. Введённый адрес «%1» уже находится в адресной книге. - + The entered address "%1" is not a valid bitcoin address. Введённый адрес «%1» не является правильным Bitcoin-адресом. - + Could not unlock wallet. Не удается разблокировать бумажник. - + New key generation failed. Генерация нового ключа не удалась. @@ -674,8 +724,8 @@ Address: %4 - Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. - Опциональная комиссия за кадый kB транзакции, которое позволяет быть уверенным, что Ваша транзакция будет обработана быстро. Большинство транзакций занимают 1 kB. Рекомендованная комиссия: 0.01 BTC. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. + Опциональная комиссия за каждый КБ транзакции, которая позволяет быть уверенным, что Ваша транзакция будет обработано быстро. Большинство транзакций занимают 1КБ. Рекомендуется комиссия 0.01. @@ -684,8 +734,8 @@ Address: %4 - Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. - Опциональная комиссия за кадый kB транзакции, которая позволяет быть уверенным, что Ваша транзакция будет обработана быстро. Большинство транзакций занимают 1 kB. Рекомендованная комиссия: 0.01 BTC. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. + Опциональная комиссия за каждый КБ транзакции, которая позволяет быть уверенным, что Ваша транзакция будет обработано быстро. Большинство транзакций занимают 1КБ. Рекомендуется комиссия 0.01. @@ -744,20 +794,12 @@ Address: %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Бумажник</span></p></body></html> + + Wallet + Бумажник - + <b>Recent transactions</b> <b>Последние транзакции</b> @@ -774,20 +816,20 @@ p, li { white-space: pre-wrap; } Total number of transactions in wallet - Общая количество транзакций в Вашем бумажнике + Общее количество транзакций в Вашем бумажнике SendCoinsDialog - - - - - - - + + + + + + + Send Coins Отправка @@ -802,82 +844,87 @@ p, li { white-space: pre-wrap; } &Добавить получателя... - + Clear all Очистить всё - + + Remove all transaction fields + Удалить все поля транзакции + + + Balance: Баланс: - + 123.456 BTC 123.456 BTC - + Confirm the send action Подтвердить отправку - + &Send &Отправить - + <b>%1</b> to %2 (%3) <b>%1</b> адресату %2 (%3) - + Confirm send coins Подтвердите отправку монет - + Are you sure you want to send %1? Вы уверены, что хотите отправить %1? - + and и - + The recepient address is not valid, please recheck. Адрес получателя неверный, пожалуйста, перепроверьте. - + The amount to pay must be larger than 0. Количество монет для отправки должно быть больше 0. - + Amount exceeds your balance Количество отправляемых монет превышает Ваш баланс - + Total exceeds your balance when the %1 transaction fee is included Сумма превысит Ваш баланс, если комиссия в %1 будет добавлена к транзакции - + Duplicate address found, can only send to each address once in one send operation Обнаружен дублирующийся адрес. Отправка на один и тот же адрес возможна только один раз за одну операцию отправки - + Error: Transaction creation failed Ошибка: Создание транзакции не удалось - + Error: The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. Ошибка: В транзакции отказано. Такое может произойти, если некоторые монеты уже были потрачены, например, если Вы используете одну копию бумажника (wallet.dat), а монеты были потрачены из другой копии, но не были отмечены как потраченные в этой. Или в случае кражи (компрометации) Вашего бумажника. @@ -918,7 +965,7 @@ p, li { white-space: pre-wrap; } Choose address from address book - Выбрать адрес из адресной книги + Выберите адрес из адресной книги @@ -1098,54 +1145,62 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date Дата - + Type Тип - + Address Адрес - + Amount Количество - + Open for %n block(s) - Открыто для %n блокаОткрыто для %n блоковОткрыто для %n блоков + + Открыто для %n блока + Открыто для %n блоков + Открыто для %n блоков + - + Open until %1 Открыто до %1 - + Offline (%1 confirmations) Оффлайн (%1 подтверждений) - + Unconfirmed (%1 of %2 confirmations) Не подтверждено (%1 из %2 подтверждений) - + Confirmed (%1 confirmations) Подтверждено (%1 подтверждений) Mined balance will be available in %n more blocks - Добытыми монетами можно будет воспользоваться через %n блокДобытыми монетами можно будет воспользоваться через %n блокаДобытыми монетами можно будет воспользоваться через %n блоков + + Добытыми монетами можно будет воспользоваться через %n блок + Добытыми монетами можно будет воспользоваться через %n блока + Добытыми монетами можно будет воспользоваться через %n блоков + @@ -1164,56 +1219,51 @@ p, li { white-space: pre-wrap; } - Received from IP - Получено с IP-адреса + Received from + Получено от - + Sent to Отправлено - - Sent to IP - Отправлено на IP-адрес - - - + Payment to yourself Отправлено себе - + Mined Добыто - + (n/a) [не доступно] - + Transaction status. Hover over this field to show number of confirmations. Статус транзакции. Подведите курсор к нужному полю для того, чтобы увидеть количество подтверждений. - + Date and time that the transaction was received. Дата и время, когда транзакция была получена. - + Type of transaction. Тип транзакции. - + Destination address of transaction. Адрес назначения транзакции. - + Amount removed from or added to balance. Сумма, добавленная, или снятая с баланса. @@ -1312,67 +1362,67 @@ p, li { white-space: pre-wrap; } Показать детали... - + Export Transaction Data Экспортировать данные транзакций - + Comma separated file (*.csv) Текс, разделённый запятыми (*.csv) - + Confirmed Подтверждено - + Date Дата - + Type Тип - + Label Метка - + Address Адрес - + Amount Количество - + ID ID - + Error exporting Ошибка экспорта - + Could not write to file %1. Невозможно записать в файл %1. - + Range: Промежуток от: - + to до @@ -1388,219 +1438,219 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version Версия - + Usage: Использование: - + Send command to -server or bitcoind Отправить команду на сервер ( -server ) или демону - + List commands Список команд - + Get help for a command Получить помощь по команде - + Options: Опции: - + Specify configuration file (default: bitcoin.conf) Указать конфигурационный файл вместо используемого по умолчанию (bitcoin.conf) - + Specify pid file (default: bitcoind.pid) Указать pid-файл вместо используемого по умолчанию (bitcoin.pid) - + Generate coins Включить добычу монет - - Don't generate coins + + Don't generate coins Выключить добычу монет - + Start minimized Запускать минимизированным - + Specify data directory Указать рабочую директорию - + Specify connection timeout (in milliseconds) Указать таймаут соединения (в миллисекундах) - + Connect through socks4 proxy Соединяться через socks4-прокси - + Allow DNS lookups for addnode and connect Разрешить поиск в DNS для комманд "addnode" и "connect" - + Add a node to connect to Добавить узел для соединения - + Connect only to the specified node Соединяться только с указанным узлом - - Don't accept connections from outside + + Don't accept connections from outside Не принимать внешние соединения - - Don't attempt to use UPnP to map the listening port + + Don't attempt to use UPnP to map the listening port Не пытаться использовать UPnP - + Attempt to use UPnP to map the listening port Попытаться использовать UPnP для проброса прослушиваемого порта на роутере - + Fee per kB to add to transactions you send Комиссия (за каждый kB транзакции) - + Accept command line and JSON-RPC commands Принимать команды из командной строки и через JSON-RPC - + Run in the background as a daemon and accept commands Запустить в бекграунде (как демон) и принимать команды - + Use the test network Использовать тестовую сеть - + Username for JSON-RPC connections Имя пользователя для JSON-RPC соединений - + Password for JSON-RPC connections Пароль для JSON-RPC соединений - + Listen for JSON-RPC connections on <port> (default: 8332) Слушать <порт> для JSON-RPC соединений (по умолчанию: 8332) - + Allow JSON-RPC connections from specified IP address Разрешить JSON-RPC соединения с указанного адреса - + Send commands to node running on <ip> (default: 127.0.0.1) Отправлять команды на узел,запущенный на <IP> (по умолчанию: 127.0.0.1) - + Set key pool size to <n> (default: 100) - Установить размер key pool'а в <n> (по умолчанию: 100) + Установить размер key pool'а в <n> (по умолчанию: 100) - + Rescan the block chain for missing wallet transactions Просканировать цепочку блоков в поисках пропущенных транзакций для бумажника - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -1608,720 +1658,153 @@ SSL options: (see the Bitcoin Wiki for SSL setup instructions) - + Use OpenSSL (https) for JSON-RPC connections Использовать OpenSSL (https) для JSON-RPC соединений - + Server certificate file (default: server.cert) Сертификат (публичный ключ) сервера (по умолчанию: server.cert) - + Server private key (default: server.pem) Закрытый ключ сервера (по умолчанию: server.pem) - + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - Допустимые Cipher'ы для сервера (по умолчанию: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) + Допустимые Cipher'ы для сервера (по умолчанию: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - + This help message Данная справка - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. Невозможно установить блокировку на рабочую директорию %s. Возможно, бумажник уже запущен. - + Loading addresses... Загрузка адресов... - + Error loading addr.dat Ошибка при загрузке addr.dat - + Loading block index... Загрузка индекса блоков... - + Error loading blkindex.dat Ошибка при загрузке blkindex.dat - + Loading wallet... Загрузка бумажника... - + Error loading wallet.dat: Wallet corrupted Ошибка загрузки wallet.dat: Бумажник повреждён - + Error loading wallet.dat: Wallet requires newer version of Bitcoin Ошибка загрузки wallet.dat: Для данного бумажника требуется более новая версия Bitcoin - + Error loading wallet.dat Ошибка при загрузке wallet.dat - + Rescanning... Сканирование... - + + Threshold for disconnecting misbehaving peers (default: 100) + + + + + + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) + + + + + Done loading Загрузка завершена - + Invalid -proxy address Ошибка в адресе прокси - + Invalid amount for -paytxfee=<amount> Ошибка в сумме комиссии - + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. ВНИМАНИЕ: Установлена слишком большая комиссия (-paytxfee=). Данный параметр отвечает за комиссию, которую Вы будете добавлять к сумме при осуществлении транзакций. - + Error: CreateThread(StartNode) failed Ошибка: Созданиние потока (запуск узла) не удался - + Warning: Disk space is low ВНИМАНИЕ: На диске заканчивается свободное пространство - + Unable to bind to port %d on this computer. Bitcoin is probably already running. Невозможно забиндить порт %d на данном компьютере. Возможно, бумажник ужк запущен. - - - This transaction is over the size limit. You can still send it for a fee of %s, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? - Данная транзакция превышает предельно допустимый размер. Но Вы можете всё равно совершить ей, добавив комиссию в %s, которая отправится тем узлам, которые обработают Вашу транзакцию и поможет поддержать сеть. Вы хотите добавить комиссию? - - - - Enter the current passphrase to the wallet. - Введите текущий пароль от бумажника. - - - - Passphrase - Пароль - - - - Please supply the current wallet decryption passphrase. - Пожалуйста, укажите текущий пароль для расшифровки бумажника. - - - - The passphrase entered for the wallet decryption was incorrect. - Указанный пароль не подходит. - - - - Status - Статус - - Date - Дата - - - - Description - Описание - - - - Debit - Дебет - - - - Credit - Кредит - - - - Open for %d blocks - Открыто до получения %d блоков - - - - Open until %s - Открыто до %s - - - - %d/offline? - %d/оффлайн? - - - - %d/unconfirmed - %d/не подтверждено - - - - %d confirmations - %d подтверждений - - - - Generated - Сгенерированно - - - - Generated (%s matures in %d more blocks) - Сгенерированно (%s «созреет» через %d блоков) - - - - Generated - Warning: This block was not received by any other nodes and will probably not be accepted! - Сгенерированно - ВНИМАНИЕ: Данный блок не был получен ни одним другим узлом и, возможно, не будет подтверждён! - - - - Generated (not accepted) - Сгенерированно (не подтверждено) - - - - From: - Отправитель: - - - - Received with: - Получатель: - - - - Payment to yourself - Отправлено себе - - - - To: - Получатель: - - - - Generating - Генерация - - - - (not connected) - (не подключено) - - - - %d connections %d blocks %d transactions - %d подключений %d блоков %d транзакций - - - - Wallet already encrypted. - Бумажник уже зашифрован. - - - - Enter the new passphrase to the wallet. -Please use a passphrase of 10 or more random characters, or eight or more words. - Введите новый пароль для бумажника. -Пожалуйста, используейте пароль из 10 и более случайных символов или из 8 и более слов. - - - - Error: The supplied passphrase was too short. - ОШИБКА: Указанный пароль слишком короткий. - - - - WARNING: If you encrypt your wallet and lose your passphrase, you will LOSE ALL OF YOUR BITCOINS! -Are you sure you wish to encrypt your wallet? - ВНИМАНИЕ: Если Вы зашифруете Ваш бумажник и потеряете Ваш пароль — Вы ПОТЕРЯЕТЕ ВСЕ ВАШИ БИТКОИНЫ!!! -Вы уверены, что хотите зашифровать бумажник? - - - - Please re-enter your new wallet passphrase. - Пожалуйста, повторите ввод нового пароля. - - - - Error: the supplied passphrases didn't match. - ОШИБКА: указанные пароли не совпадают. - - - - Wallet encryption failed. - Шифрование бумажника не удалось. - - - - Wallet Encrypted. -Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - Бумажник зашифрован. -Запомните, что шифрование Вашего бумажника не может ПОЛНОСТЬЮ гарантировать защиту Ваших биткоинов от того, чтобы быть украденными с помощью шпионского ПО на Вашем компьютере. Пожалуйста, следите за безопасностью Вашего компьютера самостоятельно. - - - - Wallet is unencrypted, please encrypt it first. - Бумажник не зашифрован. Сначала зашифруйте его. - - - - Enter the new passphrase for the wallet. - Введите новый пароль для бумажника. - - - - Re-enter the new passphrase for the wallet. - Пожалуйста, повторите ввод нового пароля. - - - - Wallet Passphrase Changed. - Пароль от бумажника изменён. - - - - New Receiving Address - Новый адрес для получения - - - - You should use a new address for each payment you receive. - -Label - Вы должны использовать новый адрес для каждого платежа, который Вы получаете. - -Метка - - - - <b>Status:</b> - <b>Статус:</b> - - - - , has not been successfully broadcast yet - , ещё не было успешно разослано - - - - , broadcast through %d node - , разослано через %d узел - - - - , broadcast through %d nodes - , разослано через %d узлов - - - - <b>Date:</b> - <b>Дата:</b> - - - - <b>Source:</b> Generated<br> - <b>Источник:</b> [сгенерированно]<br> - - - - <b>From:</b> - <b>Отправитель:</b> - - - - unknown - неизвестно - - - - <b>To:</b> - <b>Получатель:</b> - - - - (yours, label: - (Ваш, метка: - - - - (yours) - (ваш) - - - - <b>Credit:</b> - <b>Кредит:</b> - - - - (%s matures in %d more blocks) - (%s «созреет» через %d блоков) - - - - (not accepted) - (не принято) - - - - <b>Debit:</b> - <b>Дебет:</b> - - - - <b>Transaction fee:</b> - <b>Комиссия:</b> - - - - <b>Net amount:</b> - <b>Общая сумма:</b> - - - - Message: - Сообщение: - - - - Comment: - Комментарий: - - - - Generated coins must wait 120 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, it will change to "not accepted" and not be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Сгенерированные монеты должны подождать 120 блоков прежде, чем они смогут быть отправлены. Когда Вы сгенерировали этот блок он был отправлен в сеть, чтобы он был добавлен к цепочке блоков. Если данная процедура не удастся, статус изменится на «не подтверждено» и монеты будут непередаваемыми. Такое может случайно происходить в случае, если другой узел сгенерирует блок на несколько секунд раньше. - - - - Cannot write autostart/bitcoin.desktop file - Не возможно записать файл autostart/bitcoin.desktop - - - - Main - Основное - - - - &Start Bitcoin on window system startup - &Запускать бумажник при входе в систему - - - - &Minimize on close - С&ворачивать вместо закрытия - - - - version %s - версия %s - - - - Error in amount - Ошибка в количестве - - - - Send Coins - Отправка - - - - Amount exceeds your balance - Сумма превышает Ваш баланс - - - - Total exceeds your balance when the - Общая сумма превысит Ваш баланс, если к транзакции будет добавлено ещё - - - - transaction fee is included - в качестве комиссии - - - - Payment sent - Платёж отправлен - - - - Sending... - Отправка... - - - - Invalid address - Ошибочный адрес - - - - Sending %s to %s - Отправка %s адресату %s - - - - CANCELLED - ОТМЕНЕНО - - - - Cancelled - Отменено - - - - Transfer cancelled - Транзакция отменена - - - - Error: - ОШИБКА: - - - - Insufficient funds - Недостаточно монет - - - - Connecting... - Подключение... - - - - Unable to connect - Невозможно подключиться - - - - Requesting public key... - Запрашивается открытый ключ... - - - - Received public key... - Получается публичный ключ... - - - - Recipient is not accepting transactions sent by IP address - Получатель не принимает транзакции, отправленные на IP адрес - - - - Transfer was not accepted - Передача была отвергнута - - - - Invalid response received - Получен неверный ответ - - - - Creating transaction... - Создание транзакции... - - - - This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - Данная транзакция требует добавления комиссии (по крайней мере в %s) из-за её размера, сложности, или из-за использования недавно полученных монет - - - - Transaction creation failed - Создание транзакции провалилось - - - - Transaction aborted - Транзакция отменена - - - - Lost connection, transaction cancelled - Потеряно соединение, транзакция отменена - - - - Sending payment... - Отправка платежа... - - - - The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. - В транзакции отказано. Такое может произойти, если некоторые монеты уже были потрачены, например, если Вы используете одну копию бумажника (wallet.dat), а монеты были потрачены из другой копии, но не были отмечены как потраченные в этой. Или в случае кражи (компрометации) Вашего бумажника. - - - - Waiting for confirmation... - Ожидание подтверждения... - - - - The payment was sent, but the recipient was unable to verify it. -The transaction is recorded and will credit to the recipient, -but the comment information will be blank. - Платёж был отправлен, но получатель не смог подтвердить его. -Транзакция записана и будет зачислена получателю, -но комментарий к платежу будет пустым. - - - - Payment was sent, but an invalid response was received - Платёж был отправлен, но был получен неверный ответ - - - - Payment completed - Платёж завершён - - - - Name - Имя - - - - Address - Адрес - - - - Label - Метка - - - - Bitcoin Address - Bitcoin-адрес - - - - This is one of your own addresses for receiving payments and cannot be entered in the address book. - Это один из Ваших личных адресов для получения платежей. Он не может быть добавлен в адресную книгу. - - - - Edit Address - Изменить адрес - - - - Edit Address Label - Изменить метку - - - - Add Address - Добавить адрес - - - - Bitcoin - Биткоин - - - - Bitcoin - Generating - Bitcoin - Генерация - - - - Bitcoin - (not connected) - Bitcoin - (нет связи) - - - - &Open Bitcoin - &Показать бумажник - - - - &Send Bitcoins - Отп&равка - - - - O&ptions... - Оп&ции... - - - - E&xit - Вы&ход - - - - Program has crashed and will terminate. - Программа экстренно завершилась и будет уничтожена. - - - Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. ВНИМАНИЕ: Проверьте дату и время, установленные на Вашем компьютере. Если Ваши часы идут не правильно Bitcoin может наботать не корректно. - + beta бета @@ -2329,9 +1812,9 @@ but the comment information will be blank. main - - Bitcoin Qt - Bitcoin Qt + + Bitcoin-Qt + - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_uk.ts b/src/qt/locale/bitcoin_uk.ts index 6cbb51633b0..70a13aa63ff 100644 --- a/src/qt/locale/bitcoin_uk.ts +++ b/src/qt/locale/bitcoin_uk.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -14,20 +16,20 @@ - Copyright © 2009-2011 Bitcoin Developers + Copyright © 2009-2012 Bitcoin Developers This is experimental software. Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - Авторське право © 2009-2011 Розробники Bitcoin + Авторське право © 2009-2012 Розробники Bitcoin Це програмне забезпечення є експериментальним. Поширюється за ліцензією MIT/X11, додаткова інформація міститься у файлі license.txt, а також за адресою http://www.opensource.org/licenses/mit-license.php. -Цей продукт включає в себе програмне забезпечення, розроблене в рамках проекту OpenSSL (http://www.openssl.org/), криптографічне програмне забезпечення, написане Еріком Янгом (eay@cryptsoft.com) та функції для роботи з UPnP, написані Томасом Бернардом. +Цей продукт включає в себе програмне забезпечення, розроблене в рамках проекту OpenSSL (http://www.openssl.org/), криптографічне програмне забезпечення, написане Еріком Янгом (eay@cryptsoft.com), та функції для роботи з UPnP, написані Томасом Бернардом. @@ -78,22 +80,22 @@ This product includes software developed by the OpenSSL Project for use in the O &Видалити - + Export Address Book Data Експортувати адресну книгу - + Comma separated file (*.csv) Файли відділені комами (*.csv) - + Error exporting Помилка при експортуванні - + Could not write to file %1. Неможливо записати у файл %1. @@ -101,17 +103,17 @@ This product includes software developed by the OpenSSL Project for use in the O AddressTableModel - + Label Назва - + Address Адреса - + (no label) (немає назви) @@ -125,125 +127,132 @@ This product includes software developed by the OpenSSL Project for use in the O + TextLabel Текстова мітка - + Enter passphrase Введіть пароль - + New passphrase Новий пароль - + Repeat new passphrase Повторіть пароль - + Enter the new passphrase to the wallet.<br/>Please use a passphrase of <b>10 or more random characters</b>, or <b>eight or more words</b>. Введіть новий пароль для гаманця.<br/>Будь ласка, використовуйте паролі що містять <b> як мінімум 10 випадкових символів </b> або <b> як мінімум 8 слів</b>. - + Encrypt wallet Зашифрувати гаманець - + This operation needs your wallet passphrase to unlock the wallet. Ця операція потребує пароль для розблокування гаманця. - + Unlock wallet Розблокувати гаманець - + This operation needs your wallet passphrase to decrypt the wallet. Ця операція потребує пароль для дешифрування гаманця. - + Decrypt wallet Дешифрувати гаманець - + Change passphrase Змінити пароль - + Enter the old and new passphrase to the wallet. Ввести старий та новий паролі для гаманця. - + Confirm wallet encryption Підтвердити шифрування гаманця - + WARNING: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! Are you sure you wish to encrypt your wallet? УВАГА: Якщо ви зашифруєте гаманець і забудете пароль, ви <b>ВТРАТИТЕ ВСІ СВОЇ БІТКОІНИ</b>! Ви дійсно хочете зашифрувати свій гаманець? - - + + Wallet encrypted Гаманець зашифровано - - Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - Пам’ятайте, що шифрування гаманця не може повністю захистити ваші біткоіни від кражі, у випадку якщо ваш комп’ютер буде інфіковано шкідливими програмами. + + + Warning: The Caps Lock key is on. + Увага: Ввімкнено Caps Lock - - - - + + + + Wallet encryption failed Не вдалося зашифрувати гаманець - + Wallet encryption failed due to an internal error. Your wallet was not encrypted. Виникла помилка під час шифрування гаманця. Ваш гаманець не було зашифровано. - - + + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. + Біткоін-клієнт буде закрито для завершення процесу шифрування. Пам’ятайте, що шифрування гаманця не може повністю захистити ваші біткоіни від кражі, у випадку якщо ваш комп’ютер буде інфіковано шкідливими програмами. + + + + The supplied passphrases do not match. Введені паролі не співпадають. - + Wallet unlock failed Не вдалося розблокувати гаманець - - + + The passphrase entered for the wallet decryption was incorrect. Введений пароль є невірним. - + Wallet decryption failed Не вдалося розшифрувати гаманець - + Wallet passphrase was succesfully changed. Пароль було успішно змінено. @@ -251,247 +260,278 @@ Are you sure you wish to encrypt your wallet? BitcoinGUI - + Bitcoin Wallet Гаманець - + + Synchronizing with network... Синхронізація з мережею... - + Block chain synchronization in progress Відбувається синхронізація ланцюжка блоків... - + &Overview &Огляд - + Show general overview of wallet Показати загальний огляд гаманця - + &Transactions Пе&реклади - + Browse transaction history Переглянути історію переказів - + &Address Book &Адресна книга - + Edit the list of stored addresses and labels Редагувати список збережених адрес та міток - + &Receive coins О&тримати - + Show the list of addresses for receiving payments Показати список адрес для отримання платежів - + &Send coins В&ідправити - + Send coins to a bitcoin address Відправити монети на вказану адресу - + E&xit &Вихід - + Quit application Вийти - + &About %1 П&ро %1 - + Show information about Bitcoin Показати інформацію про Bitcoin - + &Options... &Параметри... - + Modify configuration options for bitcoin Редагувати параметри - + Open &Bitcoin Показати &гаманець - + Show the Bitcoin window Показати вікно гаманця - + &Export... &Експорт... - + Export the current view to a file Експортувати в файл - + &Encrypt Wallet &Шифрування гаманця - + Encrypt or decrypt wallet Зашифрувати чи розшифрувати гаманець - + &Change Passphrase Змінити парол&ь - + Change the passphrase used for wallet encryption Змінити пароль, який використовується для шифрування гаманця - + + About &Qt + &Про Qt + + + + Show information about Qt + Показати інформацію про Qt + + + &File &Файл - + &Settings &Налаштування - + &Help &Довідка - + Tabs toolbar Панель вкладок - + Actions toolbar Панель дій - + [testnet] [тестова мережа] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - %n активне з’єднання з мережею%n активні з’єднання з мережею%n активних з’єднань з мережею + + %n активне з’єднання з мережею + %n активні з’єднання з мережею + %n активних з’єднань з мережею + - + Downloaded %1 of %2 blocks of transaction history. Завантажено %1 з %2 блоків історії переказів. - + Downloaded %1 blocks of transaction history. Завантажено %1 блоків історії транзакцій. - + %n second(s) ago - %n секунду тому%n секунди тому%n секунд тому + + %n секунду тому + %n секунди тому + %n секунд тому + - + %n minute(s) ago - %n хвилину тому%n хвилини тому%n хвилин тому + + %n хвилину тому + %n хвилини тому + %n хвилин тому + - + %n hour(s) ago - %n годину тому%n години тому%n годин тому + + %n годину тому + %n години тому + %n годин тому + - + %n day(s) ago - %n день тому%n дня тому%n днів тому + + %n день тому + %n дня тому + %n днів тому + - + Up to date Синхронізовано - + Catching up... Синхронізується... - + Last received block was generated %1. Останній отриманий блок було згенеровано %1. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? Цей переказ перевищує максимально допустимий розмір. Проте ви можете здійснити її, додавши комісію в %1, яка відправиться тим вузлам що оброблять ваш переказ, та допоможе підтримати мережу. Ви хочете додати комісію? - + Sending... Відправлення... - + Sent transaction Надіслані перекази - + Incoming transaction Отримані перекази - + Date: %1 Amount: %2 Type: %3 @@ -504,15 +544,20 @@ Address: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> <b>Зашифрований</b> гаманець <b>розблоковано</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> <b>Зашифрований</b> гаманець <b>заблоковано</b> + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + + DisplayOptionsPage @@ -528,8 +573,13 @@ Address: %4 - Display addresses in transaction list - Відображати адресу в списку переказів + &Display addresses in transaction list + &Відображати адресу в списку переказів + + + + Whether to show Bitcoin addresses in the transaction list + @@ -580,22 +630,22 @@ Address: %4 Редагувати адресу для відправлення - + The entered address "%1" is already in the address book. Введена адреса «%1» вже присутня в адресній книзі. - + The entered address "%1" is not a valid bitcoin address. Введена адреса «%1» не є коректною адресою в мережі Bitcoin. - + Could not unlock wallet. Неможливо розблокувати гаманець. - + New key generation failed. Не вдалося згенерувати нові ключі. @@ -674,8 +724,8 @@ Address: %4 - Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. - Опціональна комісія за кожен Кб переказу, яка дозволяє бути впевненим у тому, що ваш переказ буде оброблено швидко. Розмір більшості переказів рівен 1 Кб. Рекомендована комісія: 0,01. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. + Добровільна комісія за кожен Кб переказу, яка дозволяє бути впевненим у тому, що ваш переказ буде оброблено швидко. Розмір більшості переказів рівен 1 Кб. Рекомендована комісія: 0,01. @@ -684,8 +734,8 @@ Address: %4 - Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. - Опціональна комісія за кожен Кб переказу, яка дозволяє бути впевненим у тому, що ваш переказ буде оброблено швидко. Розмір більшості переказів рівен 1 Кб. Рекомендована комісія: 0,01. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. + Добровільна комісія за кожен Кб переказу, яка дозволяє бути впевненим у тому, що ваш переказ буде оброблено швидко. Розмір більшості переказів рівен 1 Кб. Рекомендована комісія: 0,01. @@ -744,20 +794,12 @@ Address: %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Гаманець</span></p></body></html> + + Wallet + Гаманець - + <b>Recent transactions</b> <b>Недавні перекази</b> @@ -781,13 +823,13 @@ p, li { white-space: pre-wrap; } SendCoinsDialog - - - - - - - + + + + + + + Send Coins Відправити @@ -802,82 +844,87 @@ p, li { white-space: pre-wrap; } Дод&ати одержувача... - + Clear all Очистити все - + + Remove all transaction fields + Видалити всі поля транзакції + + + Balance: Баланс: - + 123.456 BTC 123.456 BTC - + Confirm the send action Підтвердити відправлення - + &Send &Відправити - + <b>%1</b> to %2 (%3) <b>%1</b> адресату %2 (%3) - + Confirm send coins Підтвердіть відправлення - + Are you sure you want to send %1? Ви впевнені що хочете відправити %1 - + and і - + The recepient address is not valid, please recheck. Адреса отримувача невірна, будьласка перепровірте. - + The amount to pay must be larger than 0. Кількість монет для відправлення повинна бути більшою 0. - + Amount exceeds your balance Кількість монет для відправлення перевищує ваш баланс - + Total exceeds your balance when the %1 transaction fee is included Сума перевищить ваш баланс, якщо комісія %1 буде додана до вашого переказу - + Duplicate address found, can only send to each address once in one send operation Знайдено адресу що дублюється. Відправлення на кожну адресу дозволяється лише один раз на кожну операцію переказу. - + Error: Transaction creation failed Помилка: не вдалося створити переказ - + Error: The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. Помилка: переказ було відхилено. Це може статись, якщо декілька монет з вашого гаманця вже використані, наприклад, якщо ви використовуєте одну копію гаманця (wallet.dat), а монети були використані з іншої копії, але не позначені як використані в цій. @@ -1098,54 +1145,62 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date Дата - + Type Тип - + Address Адреса - + Amount Кількість - + Open for %n block(s) - Відкрити для %n блокуВідкрити для %n блоківВідкрити для %n блоків + + Відкрити для %n блоку + Відкрити для %n блоків + Відкрити для %n блоків + - + Open until %1 Відкрити до %1 - + Offline (%1 confirmations) Поза інтернетом (%1 підтверджень) - + Unconfirmed (%1 of %2 confirmations) Непідтверджено (%1 із %2 підтверджень) - + Confirmed (%1 confirmations) Підтверджено (%1 підтверджень) Mined balance will be available in %n more blocks - Добутими монетами можна буде скористатись через %n блокДобутими монетами можна буде скористатись через %n блокиДобутими монетами можна буде скористатись через %n блоків + + Добутими монетами можна буде скористатись через %n блок + Добутими монетами можна буде скористатись через %n блоки + Добутими монетами можна буде скористатись через %n блоків + @@ -1164,56 +1219,51 @@ p, li { white-space: pre-wrap; } - Received from IP - Отримано з IP-адреси + Received from + Отримано від - + Sent to Відправлено - - Sent to IP - Відправлено на IP-адресу - - - + Payment to yourself Відправлено собі - + Mined Добуто - + (n/a) (недоступно) - + Transaction status. Hover over this field to show number of confirmations. Статус переказу. Наведіть вказівник на це поле, щоб показати кількість підтверджень. - + Date and time that the transaction was received. Дата і час, коли переказ було отримано. - + Type of transaction. Тип переказу. - + Destination address of transaction. Адреса отримувача - + Amount removed from or added to balance. Сума, додана чи знята з балансу. @@ -1312,67 +1362,67 @@ p, li { white-space: pre-wrap; } Показати деталі... - + Export Transaction Data Експортувати дані переказів - + Comma separated file (*.csv) Файли, розділені комою (*.csv) - + Confirmed Підтверджені - + Date Дата - + Type Тип - + Label Мітка - + Address Адреса - + Amount Кількість - + ID Ідентифікатор - + Error exporting Помилка експорту - + Could not write to file %1. Неможливо записати у файл %1 - + Range: Діапазон від: - + to до @@ -1388,220 +1438,220 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version Версія - + Usage: Вкористання: - + Send command to -server or bitcoind Відправити команду серверу -server чи демону - + List commands Список команд - + Get help for a command Отримати довідку по команді - + Options: Параметри: - + Specify configuration file (default: bitcoin.conf) Вкажіть файл конфігурації (за промовчуванням: bitcoin.conf) - + Specify pid file (default: bitcoind.pid) Вкажіть pid-файл (за промовчуванням: bitcoind.pid) - + Generate coins Генерувати монети - - Don't generate coins + + Don't generate coins Не генерувати монети - + Start minimized Запускати згорнутим - + Specify data directory Вкажіть робочий каталог - + Specify connection timeout (in milliseconds) Вкажіть таймаут з’єднання (в мілісекундах) - + Connect through socks4 proxy Підключитись через SOCKS4-проксі - + Allow DNS lookups for addnode and connect Дозволити пошук в DNS для команд «addnode» і «connect» - + Add a node to connect to Додати вузол для підключення - + Connect only to the specified node Підключитись лише до вказаного вузла - - Don't accept connections from outside + + Don't accept connections from outside Не приймати підключення ззовні - - Don't attempt to use UPnP to map the listening port + + Don't attempt to use UPnP to map the listening port Не намагатись використовувати UPnP для відображення порту що прослуховується на роутері - + Attempt to use UPnP to map the listening port Намагатись використовувати UPnP для відображення порту що прослуховується на роутері - + Fee per kB to add to transactions you send Комісія за Кб - + Accept command line and JSON-RPC commands Приймати команди із командного рядка та команди JSON-RPC - + Run in the background as a daemon and accept commands Запустити в фоновому режимі (як демон) та приймати команди - + Use the test network Використовувати тестову мережу - + Username for JSON-RPC connections Ім’я користувача для JSON-RPC-з’єднань - + Password for JSON-RPC connections Пароль для JSON-RPC-з’єднань - + Listen for JSON-RPC connections on <port> (default: 8332) Прослуховувати <port> для JSON-RPC-з’єднань (за промовчуванням: 8332) - + Allow JSON-RPC connections from specified IP address Дозволити JSON-RPC-з’єднання з вказаної IP-адреси - + Send commands to node running on <ip> (default: 127.0.0.1) Відправляти команди на вузол, запущений на <ip> (за промовчуванням: 127.0.0.1) - + Set key pool size to <n> (default: 100) Встановити розмір пулу ключів <n> (за промовчуванням: 100) - + Rescan the block chain for missing wallet transactions Пересканувати ланцюжок блоків, в пошуку втрачених переказів - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -1610,720 +1660,154 @@ SSL options: (see the Bitcoin Wiki for SSL setup instructions) - + Use OpenSSL (https) for JSON-RPC connections Використовувати OpenSSL (https) для JSON-RPC-з’єднань - + Server certificate file (default: server.cert) Сертифікату сервера (за промовчуванням: server.cert) - + Server private key (default: server.pem) Закритий ключ сервера (за промовчуванням: server.pem) - + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) Допустимі шифри (за промовчуванням: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - + This help message Дана довідка - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. Неможливо встановити блокування на робочий каталог %s. Можливо, гаманець вже запущено. - + Loading addresses... Завантаження адрес... - + Error loading addr.dat Помилка при завантаженні addr.dat - + Loading block index... Завантаження індексу блоків... - + Error loading blkindex.dat Помилка при завантаженні blkindex.dat - + Loading wallet... Завантаження гаманця... - + Error loading wallet.dat: Wallet corrupted Помилка при завантаженні wallet.dat: Гаманець пошкоджено - + Error loading wallet.dat: Wallet requires newer version of Bitcoin - Помилка при завантаженні wallet.dat: Гаманець потребує новішої версії Bitcoin'а + Помилка при завантаженні wallet.dat: Гаманець потребує новішої версії Bitcoin'а - + Error loading wallet.dat Помилка при завантаженні wallet.dat - + Rescanning... Сканування... - + + Threshold for disconnecting misbehaving peers (default: 100) + + + + + + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) + + + + + Done loading Завантаження завершене - + Invalid -proxy address Помилка в адресі проксі-сервера - + Invalid amount for -paytxfee=<amount> Помилка у величині комісії - + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. Увага: встановлено занадто велику комісію (-paytxfee). Комісія зніматиметься кожен раз коли ви проводитимете перекази. - + Error: CreateThread(StartNode) failed Помилка: CreateThread(StartNode) дала збій - + Warning: Disk space is low Увага: На диску мало вільного місця - + Unable to bind to port %d on this computer. Bitcoin is probably already running. Неможливо прив’язати до порту %d на цьому комп’ютері. Молживо гаманець вже запущено. - - - This transaction is over the size limit. You can still send it for a fee of %s, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? - Цей переказ перевищує максимально допустимий розмір. Проте ви можете здійснити її, додавши комісію в %s, яка відправиться тим вузлам що оброблять ваш переказ, та допоможе підтримати мережу. Ви хочете додати комісію? - - - - Enter the current passphrase to the wallet. - Введіть пароль від гаманця. - - - - Passphrase - Пароль - - - - Please supply the current wallet decryption passphrase. - Будь ласка, вкажіть пароль для дешиврування гаманця. - - - - The passphrase entered for the wallet decryption was incorrect. - Пароль вказано невірно. - - - - Status - Статус - - Date - Дата - - - - Description - Опис - - - - Debit - Дебет - - - - Credit - Кредит - - - - Open for %d blocks - Відкрито до отримання %d блоків - - - - Open until %s - Відкрито до %s - - - - %d/offline? - %d/поза інтернетом? - - - - %d/unconfirmed - %d/не підтверджено - - - - %d confirmations - %d підтверджень - - - - Generated - Згенеровано - - - - Generated (%s matures in %d more blocks) - Згенеровано (%s «дозріє» через %d блоків) - - - - Generated - Warning: This block was not received by any other nodes and will probably not be accepted! - Згенеровано — увага: цей блок не був отриманий жодними іншими вузлами і, ймовірно, не буде прийнятий! - - - - Generated (not accepted) - Згенеровано (не підтверджено) - - - - From: - Відправник: - - - - Received with: - Отримувач: - - - - Payment to yourself - Відправлено собі - - - - To: - Отримувач: - - - - Generating - Генерація - - - - (not connected) - (не підключено) - - - - %d connections %d blocks %d transactions - %d з’єднань %d блоків %d переказів - - - - Wallet already encrypted. - Гаманець уже зашифровано. - - - - Enter the new passphrase to the wallet. -Please use a passphrase of 10 or more random characters, or eight or more words. - Введіть новий пароль для гаманця. -Будь ласка використовуйте пароль із як мінімум 10-и випадкових символів, або як мінімум із 8-и слів. - - - - Error: The supplied passphrase was too short. - Помилка: Вказаний пароль занадто короткий. - - - - WARNING: If you encrypt your wallet and lose your passphrase, you will LOSE ALL OF YOUR BITCOINS! -Are you sure you wish to encrypt your wallet? - УВАГА: Якщо ви зашифруєте гаманець і забудете пароль, ви ВТРАТИТЕ ВСІ СВОЇ БІТКОІНИ! -Ви дійсно хочете зашифрувати свій гаманець? - - - - Please re-enter your new wallet passphrase. - Будь ласка, повторіть новий пароль. - - - - Error: the supplied passphrases didn't match. - Помилка: введені паролі не співпадають. - - - - Wallet encryption failed. - Не вдалося зашифрувати гаманець. - - - - Wallet Encrypted. -Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - Гаманець зашифровано. -Пам’ятайте, що шифрування гаманця не може повністю захистити ваші біткоіни від кражі, у випадку якщо ваш комп’ютер буде інфіковано шкідливими програмами. - - - - Wallet is unencrypted, please encrypt it first. - Гаманець не зашифровано, спочатку зашифруйте його. - - - - Enter the new passphrase for the wallet. - Введіть новий пароль для гаманця. - - - - Re-enter the new passphrase for the wallet. - Повторіть ввід нового пароля. - - - - Wallet Passphrase Changed. - Змінено пароль від гаманця. - - - - New Receiving Address - Нова адреса для отримання - - - - You should use a new address for each payment you receive. - -Label - Ви повинні використовувати нову адресу для кожного переказу, який ви отримуєте. -Мітка - - - - <b>Status:</b> - <b>Статус:</b> - - - - , has not been successfully broadcast yet - , ще не було розіслано - - - - , broadcast through %d node - , розсилати через %d вузол - - - - , broadcast through %d nodes - , розсилати через %d вузлів - - - - <b>Date:</b> - <b>Дата:</b> - - - - <b>Source:</b> Generated<br> - <b>Джерело:</b> згенеровано<br> - - - - <b>From:</b> - <b>Відправник:</b> - - - - unknown - невідомо - - - - <b>To:</b> - <b>Отримувач:</b> - - - - (yours, label: - (ваша мітка: - - - - (yours) - (ваш) - - - - <b>Credit:</b> - <b>Кредит:</b> - - - - (%s matures in %d more blocks) - (%s «дозріє» через %d блоків) - - - - (not accepted) - (не прийнято) - - - - <b>Debit:</b> - <b>Дебет:</b> - - - - <b>Transaction fee:</b> - <b>Комісія:</b> - - - - <b>Net amount:</b> - <b>Загальна сума:</b> - - - - Message: - Повідомлення: - - - - Comment: - Коментар: - - - - Generated coins must wait 120 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, it will change to "not accepted" and not be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Після генерації монет, потрібно зачекати 120 блоків, перш ніж їх можна буде використати. Коли ви згенерували цей блок, його було відправлено в мережу для того, щоб він був доданий до ланцюжка блоків. Якщо ця процедура не вдасться, статус буде змінено на «не підтверджено» і ви не зможете потратити згенеровані монету. Таке може статись, якщо хтось інший згенерував блок на декілька секунд раніше. - - - - Cannot write autostart/bitcoin.desktop file - Неможливо записати файл autostart/bitcoin.desktop - - - - Main - Головне - - - - &Start Bitcoin on window system startup - &Запускати гаманець при вході в систему - - - - &Minimize on close - З&гортати замість закриття - - - - version %s - версія %s - - - - Error in amount - Помилка в кількості - - - - Send Coins - Відправка - - - - Amount exceeds your balance - Кількість монет для відправлення перевищує ваш баланс - - - - Total exceeds your balance when the - Сума перевищить ваш баланс, якщо комісія - - - - transaction fee is included - буде додана до вашого переказу - - - - Payment sent - Оплата відправлена - - - - Sending... - Відправлення... - - - - Invalid address - Помилкова адреса - - - - Sending %s to %s - Відправлення %s адресату %s - - - - CANCELLED - ВІДМІНЕНО - - - - Cancelled - Відмінено - - - - Transfer cancelled - Переказ відмінено - - - - Error: - Помилка: - - - - Insufficient funds - Недостатньо коштів - - - - Connecting... - Підключення... - - - - Unable to connect - Неможливо підключитись - - - - Requesting public key... - Запит публічного ключа... - - - - Received public key... - Отримання публічного ключа... - - - - Recipient is not accepting transactions sent by IP address - Одержувач не приймає перекази, відправлені на IP-адресу - - - - Transfer was not accepted - Переказ не підтверджено - - - - Invalid response received - Отримана помилкова відповідь - - - - Creating transaction... - Створення переказу... - - - - This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - Цей переказ потребує додавання комісії як мінімум в %s, через його розмір, складність, або внаслідок використання недавно отриманих коштів - - - - Transaction creation failed - Не вдалося створити переказ - - - - Transaction aborted - Переказ відмінено - - - - Lost connection, transaction cancelled - Втрачено з’єднання, переказ відмінено - - - - Sending payment... - Відправка оплати... - - - - The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. - Переказ було відхилено. Це може статись, якщо декілька монет з вашого гаманця вже використані, наприклад, якщо ви використовуєте одну копію гаманця (wallet.dat), а монети були використані з іншої копії, але не позначені як використані в цій. - - - - Waiting for confirmation... - Очікування підтвердження... - - - - The payment was sent, but the recipient was unable to verify it. -The transaction is recorded and will credit to the recipient, -but the comment information will be blank. - Оплата була відправлена, але отримувач не зміг підтвердити її. -Переказ було записано і він буде нарахований отримувачу, -але коментар буде порожнім. - - - - Payment was sent, but an invalid response was received - Оплата була відправлена, але отримано неправильну відповідь - - - - Payment completed - Оплата завершена - - - - Name - Ім’я - - - - Address - Адреса - - - - Label - Мітка - - - - Bitcoin Address - Bitcoin-адреса - - - - This is one of your own addresses for receiving payments and cannot be entered in the address book. - Це одина із ваших власних адрес для отримання платежів. Вона не може бути додана в адресну книгу. - - - - Edit Address - Редагувати адресу - - - - Edit Address Label - Редагувати мітку - - - - Add Address - Додати адресу - - - - Bitcoin - Bitcoin - - - - Bitcoin - Generating - Генерація - - - - Bitcoin - (not connected) - Bitcoin - (не підключений) - - - - &Open Bitcoin - &Показати гаманець - - - - &Send Bitcoins - &Відправка - - - - O&ptions... - &Налаштування - - - - E&xit - &Вихід - - - - Program has crashed and will terminate. - Внаслідок виникнення помилки, програма буде закрита. - - - Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. Увага: будь ласка, перевірте дату і час на свому комп’ютері. Якщо ваш годинник йде неправильно, Bitcoin може працювати некоректно. - + beta бета @@ -2331,9 +1815,9 @@ but the comment information will be blank. main - - Bitcoin Qt - Bitcoin Qt + + Bitcoin-Qt + - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_zh_CN.ts b/src/qt/locale/bitcoin_zh_CN.ts index 832a86ed07b..73e7e6c378f 100644 --- a/src/qt/locale/bitcoin_zh_CN.ts +++ b/src/qt/locale/bitcoin_zh_CN.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -14,20 +16,20 @@ - Copyright © 2009-2011 Bitcoin Developers + Copyright © 2009-2012 Bitcoin Developers This is experimental software. Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - 版权所有 © 2009-2011 比特币开发团队 + 版权归比特币开发者所有 © 2009-2012 -本软件目前尚属测试阶段 +这是一个实验性软件。 -本软件遵循 MIT/X11 软件协议,详细请查阅附带的 license.txt 文件,或访问 http://www.opensource.org/licenses/mit-license.php. +Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php. -本软件包含 OpenSSL 项目开发的 OpenSSL Toolkit 组件(http://www.openssl.org/), Eric Young (eay@cryptsoft.com) 开发的加密软件以及 Thomas Bernard 开发的UPnP软件 +This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. @@ -78,22 +80,22 @@ This product includes software developed by the OpenSSL Project for use in the O &删除 - + Export Address Book Data 导出地址薄数据 - + Comma separated file (*.csv) 逗号分隔文件 (*.csv) - + Error exporting 导出错误 - + Could not write to file %1. 无法写入文件 %1。 @@ -101,17 +103,17 @@ This product includes software developed by the OpenSSL Project for use in the O AddressTableModel - + Label 标签 - + Address 地址 - + (no label) (没有标签) @@ -125,125 +127,132 @@ This product includes software developed by the OpenSSL Project for use in the O + TextLabel 文本标签 - + Enter passphrase 输入口令 - + New passphrase 新口令 - + Repeat new passphrase 重复新口令 - + Enter the new passphrase to the wallet.<br/>Please use a passphrase of <b>10 or more random characters</b>, or <b>eight or more words</b>. 输入钱包的新口令。<br/>使用的口令请至少包含<b>10个以上随机字符</>,或者是<b>8个以上的单词</b>。 - + Encrypt wallet 加密钱包 - + This operation needs your wallet passphrase to unlock the wallet. 该操作需要您首先使用口令解锁钱包。 - + Unlock wallet 解锁钱包 - + This operation needs your wallet passphrase to decrypt the wallet. 该操作需要您首先使用口令解密钱包。 - + Decrypt wallet 解密钱包 - + Change passphrase 修改口令 - + Enter the old and new passphrase to the wallet. 请输入钱包的旧口令与新口令。 - + Confirm wallet encryption 确认加密钱包 - + WARNING: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! Are you sure you wish to encrypt your wallet? 警告:如果您加密了您的钱包之后忘记了口令,您将会<b>失去所有的比特币</b>! 确定要加密钱包吗? - - + + Wallet encrypted 钱包已加密 - - Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - 请注意,当您的计算机感染恶意软件时,加密钱包并不能完全规避您的比特币被偷窃的可能。 + + + Warning: The Caps Lock key is on. + 警告:大写锁定键CapsLock开启 - - - - + + + + Wallet encryption failed 钱包加密失败 - + Wallet encryption failed due to an internal error. Your wallet was not encrypted. 由于一个本地错误,加密钱包操作已经失败。您的钱包没有被加密。 - - + + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. + 将关闭软件以完成加密过程。 请您谨记:钱包加密并不是万能的,电脑中毒,您的比特币还是有可能丢失。 + + + + The supplied passphrases do not match. 口令不匹配。 - + Wallet unlock failed 钱包解锁失败 - - + + The passphrase entered for the wallet decryption was incorrect. 用于解密钱包的口令不正确。 - + Wallet decryption failed 钱包解密失败。 - + Wallet passphrase was succesfully changed. 钱包口令修改成功 @@ -251,247 +260,268 @@ Are you sure you wish to encrypt your wallet? BitcoinGUI - + Bitcoin Wallet 比特币钱包 - + + Synchronizing with network... 正在与网络同步... - + Block chain synchronization in progress 正在同步区域锁链 - + &Overview &概况 - + Show general overview of wallet 显示钱包概况 - + &Transactions &交易 - + Browse transaction history 查看交易历史 - + &Address Book &地址薄 - + Edit the list of stored addresses and labels 修改存储的地址和标签列表 - + &Receive coins &接收货币 - + Show the list of addresses for receiving payments 显示接收支付的地址列表 - + &Send coins &发送货币 - + Send coins to a bitcoin address 将货币发送到一个比特币地址 - + E&xit 退出 - + Quit application 退出程序 - + &About %1 &关于 %1 - + Show information about Bitcoin 显示比特币的相关信息 - + &Options... &选项... - + Modify configuration options for bitcoin 修改比特币配置选项 - + Open &Bitcoin 打开 &比特币 - + Show the Bitcoin window 显示比特币窗口 - + &Export... &导出... - + Export the current view to a file 导出当前视图到指定文件 - + &Encrypt Wallet &加密钱包 - + Encrypt or decrypt wallet 加密或解密钱包 - + &Change Passphrase &修改口令 - + Change the passphrase used for wallet encryption 修改钱包加密口令 - + + About &Qt + 关于 &Qt + + + + Show information about Qt + 显示Qt相关信息 + + + &File &文件 - + &Settings &设置 - + &Help &帮助 - + Tabs toolbar 分页工具栏 - + Actions toolbar 动作工具栏 - + [testnet] [testnet] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - %n 个到比特币网络的活动连接 + + %n 个到比特币网络的活动连接 + - + Downloaded %1 of %2 blocks of transaction history. %1 / %2 个交易历史的区块已下载 - + Downloaded %1 blocks of transaction history. %1 个交易历史的区块已下载 - + %n second(s) ago - %n 秒前 + + %n 秒前 + - + %n minute(s) ago - %n 分种前 + + %n 分种前 + - + %n hour(s) ago - %n 小时前 + + %n 小时前 + - + %n day(s) ago - %n 天前 + + %n 天前 + - + Up to date 最新状态 - + Catching up... 更新中... - + Last received block was generated %1. 最新收到的区块产生于 %1。 - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? 该笔交易的数据量超限.您可以选择支付 %1 交易费, 交易费将支付给处理该笔交易的网络节点,有助于维持比特币网络的运行. 您愿意支付交易费用吗? - + Sending... 发送中 - + Sent transaction 已发送交易 - + Incoming transaction 流入交易 - + Date: %1 Amount: %2 Type: %3 @@ -504,15 +534,20 @@ Address: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> 钱包已被<b>加密</b>,当前为<b>解锁</b>状态 - + Wallet is <b>encrypted</b> and currently <b>locked</b> 钱包已被<b>加密</b>,当前为<b>锁定</b>状态 + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + + DisplayOptionsPage @@ -528,8 +563,13 @@ Address: %4 - Display addresses in transaction list - 在交易列表中显示地址 + &Display addresses in transaction list + &在交易列表中显示地址 + + + + Whether to show Bitcoin addresses in the transaction list + @@ -580,22 +620,22 @@ Address: %4 编辑发送地址 - + The entered address "%1" is already in the address book. 输入的地址 "%1" 已经存在于地址薄。 - + The entered address "%1" is not a valid bitcoin address. 输入的地址 "%1" 并不是一个有效的比特币地址 - + Could not unlock wallet. 无法解锁钱包 - + New key generation failed. 密钥创建失败. @@ -674,8 +714,8 @@ Address: %4 - Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. - 为每1kB交易数据支付交易费将保证您的交易尽快被处理.大部分交易数据都小于1kB. 建议支付0.01个比特币的交易费. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. + 建议支付交易费用,有助于您的交易得到尽快处理. 绝大多数交易的字节数为 1 kB. 建议支付0.01个比特币. @@ -684,8 +724,8 @@ Address: %4 - Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. - 为每1kB交易数据支付交易费将保证您的交易尽快被处理.大部分交易数据都小于1kB. 建议支付0.01个比特币的交易费. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. + 建议支付交易费用,有助于您的交易得到尽快处理. 绝大多数交易的字节数为 1 kB. 建议支付0.01个比特币. @@ -744,20 +784,12 @@ Address: %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">钱包</span></p></body></html> + + Wallet + 钱包 - + <b>Recent transactions</b> <b>当前交易</b> @@ -781,13 +813,13 @@ p, li { white-space: pre-wrap; } SendCoinsDialog - - - - - - - + + + + + + + Send Coins 发送货币 @@ -802,82 +834,87 @@ p, li { white-space: pre-wrap; } &添加接收者... - + Clear all 清除全部 - + + Remove all transaction fields + 移除所有交易项 + + + Balance: 余额 - + 123.456 BTC 123.456 BTC - + Confirm the send action 确认并发送货币 - + &Send &发送 - + <b>%1</b> to %2 (%3) <b>%1</b> 到 %2 (%3) - + Confirm send coins 确认发送货币 - + Are you sure you want to send %1? 确定您要发送 %1? - + and - + The recepient address is not valid, please recheck. 接收者地址不合法,请检查。 - + The amount to pay must be larger than 0. 支付金额必须大于0. - + Amount exceeds your balance 余额不足。 - + Total exceeds your balance when the %1 transaction fee is included 计入 %1 的交易费后,您的余额不足以支付总价。 - + Duplicate address found, can only send to each address once in one send operation 发现重复地址,一次操作中只可以给每个地址发送一次 - + Error: Transaction creation failed 错误:交易创建失败。 - + Error: The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. 错误:交易被拒绝。这种情况通常发生在您钱包中的一些货币已经被消费之后,比如您使用了一个wallet.dat的副本,而货币在那个副本中已经被消费,但在当前钱包中未被标记为已消费。 @@ -1098,54 +1135,58 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date 日期 - + Type 类型 - + Address 地址 - + Amount 数量 - + Open for %n block(s) - 开启 %n 个数据块 + + 开启 %n 个数据块 + - + Open until %1 至 %1 个数据块时开启 - + Offline (%1 confirmations) 离线 (%1 个确认项) - + Unconfirmed (%1 of %2 confirmations) 未确认 (%1 / %2 条确认信息) - + Confirmed (%1 confirmations) 已确认 (%1 条确认信息) Mined balance will be available in %n more blocks - 挖矿所得将在 %n 个数据块之后可用 + + 挖矿所得将在 %n 个数据块之后可用 + @@ -1164,56 +1205,51 @@ p, li { white-space: pre-wrap; } - Received from IP - 从IP接收 + Received from + 收款来自 - + Sent to 发送到 - - Sent to IP - 发送到IP - - - + Payment to yourself 付款给自己 - + Mined 挖矿所得 - + (n/a) (n/a) - + Transaction status. Hover over this field to show number of confirmations. 交易状态。 鼠标移到此区域上可显示确认消息项的数目。 - + Date and time that the transaction was received. 接收交易的时间 - + Type of transaction. 交易类别。 - + Destination address of transaction. 交易目的地址。 - + Amount removed from or added to balance. 从余额添加或移除的金额 @@ -1312,67 +1348,67 @@ p, li { white-space: pre-wrap; } 显示细节... - + Export Transaction Data 导出交易数据 - + Comma separated file (*.csv) 逗号分隔文件(*.csv) - + Confirmed 已确认 - + Date 日期 - + Type 类别 - + Label 标签 - + Address 地址 - + Amount 金额 - + ID ID - + Error exporting 导出错误 - + Could not write to file %1. 无法写入文件 %1。 - + Range: 范围: - + to @@ -1388,155 +1424,155 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version 比特币版本 - + Usage: 使用: - + Send command to -server or bitcoind 发送命令到服务器或者 bitcoind - + List commands 列出命令 - + Get help for a command 获得某条命令的帮助 - + Options: 选项: - + Specify configuration file (default: bitcoin.conf) 指定配置文件 (默认为 bitcoin.conf) - + Specify pid file (default: bitcoind.pid) 指定 pid 文件 (默认为 bitcoind.pid) - + Generate coins 生成货币 - - Don't generate coins + + Don't generate coins 不要生成货币 - + Start minimized 启动时最小化 - + Specify data directory 指定数据目录 - + Specify connection timeout (in milliseconds) 指定连接超时时间 (微秒) - + Connect through socks4 proxy 通过 socks4 代理连接 - + Allow DNS lookups for addnode and connect 连接节点时允许DNS查找 - + Add a node to connect to 连接到指定节点 - + Connect only to the specified node 只连接到指定节点 - - Don't accept connections from outside + + Don't accept connections from outside 禁止接收外部连接 - - Don't attempt to use UPnP to map the listening port + + Don't attempt to use UPnP to map the listening port 禁止使用 UPnP 映射监听端口 - + Attempt to use UPnP to map the listening port 尝试使用 UPnP 映射监听端口 - + Fee per kB to add to transactions you send 每发送1kB交易所需的费用 - + Accept command line and JSON-RPC commands 接受命令行和 JSON-RPC 命令 - + Run in the background as a daemon and accept commands 在后台运行并接受命令 @@ -1544,63 +1580,63 @@ p, li { white-space: pre-wrap; } - + Use the test network 使用测试网络 - + Username for JSON-RPC connections JSON-RPC连接用户名 - + Password for JSON-RPC connections JSON-RPC连接密码 - + Listen for JSON-RPC connections on <port> (default: 8332) JSON-RPC连接监听<端口> (默认为 8332) - + Allow JSON-RPC connections from specified IP address 允许从指定IP接受到的JSON-RPC连接 - + Send commands to node running on <ip> (default: 127.0.0.1) 向IP地址为 <ip> 的节点发送指令 (缺省: 127.0.0.1) - + Set key pool size to <n> (default: 100) 设置密钥池大小为 <n> (缺省: 100) - + Rescan the block chain for missing wallet transactions 重新扫描数据链以查找遗漏的交易 - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -1609,720 +1645,153 @@ SSL 选项: (SSL 安装教程具体见比特币维基百科) - + Use OpenSSL (https) for JSON-RPC connections 为 JSON-RPC 连接使用 OpenSSL (https)连接 - + Server certificate file (default: server.cert) 服务器证书 (默认为 server.cert) - + Server private key (default: server.pem) 服务器私钥 (默认为 server.pem) - + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) 可接受的加密器 (默认为 TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - + This help message 该帮助信息 - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. 无法给数据目录 %s 加锁。比特币进程可能已在运行。 - + Loading addresses... 正在加载地址... - + Error loading addr.dat 加载 addr.dat 错误 - + Loading block index... 加载区块索引... - + Error loading blkindex.dat 加载 blkindex.dat 失败 - + Loading wallet... 正在加载钱包... - + Error loading wallet.dat: Wallet corrupted 加载 wallet.dat 失败:钱包崩溃 - + Error loading wallet.dat: Wallet requires newer version of Bitcoin 加载 wallet.dat 失败:运行钱包需要一个更新版本的比特币软件 - + Error loading wallet.dat 加载 wallet.dat 失败 - + Rescanning... 正在重新扫描... - + + Threshold for disconnecting misbehaving peers (default: 100) + + + + + + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) + + + + + Done loading 加载完成 - + Invalid -proxy address 代理地址不合法 - + Invalid amount for -paytxfee=<amount> 不合适的交易费 -paytxfee=<amount> - + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. 警告: -paytxfee 交易费设置过高. 每进行一笔交易您都将支付该数量的交易费. - + Error: CreateThread(StartNode) failed 错误:线程创建(StartNode)失败 - + Warning: Disk space is low 警告:磁盘空间不足 - + Unable to bind to port %d on this computer. Bitcoin is probably already running. 无法绑定端口 %d 到这台计算机。比特币进程可能已在运行。 - - - This transaction is over the size limit. You can still send it for a fee of %s, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? - 交易超出大小限制。你可以继续以 %s 的费用发送。这笔费用将被发送到处理此次交易的节点用以帮助支持这个网络。你想要支付此笔费用吗? - - - - Enter the current passphrase to the wallet. - 输入当前钱包口令 - - - - Passphrase - 口令 - - - - Please supply the current wallet decryption passphrase. - 请提供当前钱包解密口令 - - - - The passphrase entered for the wallet decryption was incorrect. - 当前钱包解密口令不正确。 - - - - Status - 状态 - - Date - 日期 - - - - Description - 描述 - - - - Debit - 支出 - - - - Credit - 收入 - - - - Open for %d blocks - 开启 %d 个数据块 - - - - Open until %s - 至 %s 个数据块时开启 - - - - %d/offline? - %d/ 离线? - - - - %d/unconfirmed - %d/未确认 - - - - %d confirmations - %d 确认项 - - - - Generated - 生成 - - - - Generated (%s matures in %d more blocks) - (%s 成熟于 %d 以上数据块) - - - - Generated - Warning: This block was not received by any other nodes and will probably not be accepted! - 已生成 - 警告:此区块未被其他接收并可能不被接受 - - - - Generated (not accepted) - 已生成(未接受) - - - - From: - 从: - - - - Received with: - 接收于 - - - - Payment to yourself - 支付给自己 - - - - To: - 到: - - - - Generating - 生成中 - - - - (not connected) - (未连接) - - - - %d connections %d blocks %d transactions - %d 个连接 %d 个数据块 %d 笔交易 - - - - Wallet already encrypted. - 钱包已被加密。 - - - - Enter the new passphrase to the wallet. -Please use a passphrase of 10 or more random characters, or eight or more words. - 请输入新的钱包密码. -密码须包含10个以上字符,或8个以上单词. - - - - Error: The supplied passphrase was too short. - 错误:提供的口令过短。 - - - - WARNING: If you encrypt your wallet and lose your passphrase, you will LOSE ALL OF YOUR BITCOINS! -Are you sure you wish to encrypt your wallet? - 警告:如果您在加密钱包后忘记密码, 你将会丢失钱包中所有的比特币! -您确定要对钱包进行加密吗? - - - - Please re-enter your new wallet passphrase. - 请重新输入您的新钱包口令 - - - - Error: the supplied passphrases didn't match. - 错误:提供的口令不匹配。 - - - - Wallet encryption failed. - 钱包加密失败。 - - - - Wallet Encrypted. -Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - 钱包加密成功. -谨记:如果您的电脑感染病毒或木马,即使钱包已经加密,也不能保证您的比特币不被窃,请做好电脑防毒工作. - - - - Wallet is unencrypted, please encrypt it first. - 钱包未加密,请先加密. - - - - Enter the new passphrase for the wallet. - 为钱包输入新口令 - - - - Re-enter the new passphrase for the wallet. - 请再次输入新口令。 - - - - Wallet Passphrase Changed. - 钱包口令已改变 - - - - New Receiving Address - 新接收地址 - - - - You should use a new address for each payment you receive. - -Label - 你应该为每一笔支付使用一条新地址 - -标签 - - - - <b>Status:</b> - <b>状态:</b> - - - - , has not been successfully broadcast yet - ,还未被成功广播。 - - - - , broadcast through %d node - ,通过%d个节点广播 - - - - , broadcast through %d nodes - ,通过%d个节点组广播 - - - - <b>Date:</b> - <b>日期:</b> - - - - <b>Source:</b> Generated<br> - <b>来源:</b> 生成<br> - - - - <b>From:</b> - <b>从:</b> - - - - unknown - 未知 - - - - <b>To:</b> - <b>到:</b> - - - - (yours, label: - (您的,标签: - - - - (yours) - (你的) - - - - <b>Credit:</b> - <b>收入:</b> - - - - (%s matures in %d more blocks) - (%s 成熟于 %d 以上数据块) - - - - (not accepted) - (拒绝) - - - - <b>Debit:</b> - <b>支出:</b> - - - - <b>Transaction fee:</b> - <b>交易费:</b> - - - - <b>Net amount:</b> - <b>网络金额:</b> - - - - Message: - 消息: - - - - Comment: - 备注: - - - - Generated coins must wait 120 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, it will change to "not accepted" and not be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - 新生产的比特币必须等待120个数据块之后才能被使用. 当您生产出此数据块,它将被广播至比特币网络并添加至数据链. 如果添加到数据链失败, 它的状态将变成"不被接受",生产的比特币将不能使用. 在您生产新数据块的几秒钟内, 如果其它节点也生产出同样的数据块,有可能会发生这种情况. - - - - Cannot write autostart/bitcoin.desktop file - 无法写入 autostart/bitcoin.desktop 文件 - - - - Main - 主要的 - - - - &Start Bitcoin on window system startup - &系统启动时运行比特币 - - - - &Minimize on close - &关闭时最小化 - - - - version %s - 版本 %s - - - - Error in amount - 金额错误 - - - - Send Coins - 已发送的货币 - - - - Amount exceeds your balance - 余额不足 - - - - Total exceeds your balance when the - 总价超出您的余额: - - - - transaction fee is included - 已包含交易费 - - - - Payment sent - 支付已发送 - - - - Sending... - 正在发送... - - - - Invalid address - 地址不合法 - - - - Sending %s to %s - 正在发送 %s 到 %s - - - - CANCELLED - 已取消 - - - - Cancelled - 已取消 - - - - Transfer cancelled - 传输已取消 - - - - Error: - 错误: - - - - Insufficient funds - 金额不足 - - - - Connecting... - 正在连接... - - - - Unable to connect - 无法连接 - - - - Requesting public key... - 正在请求公钥... - - - - Received public key... - 公钥已接收... - - - - Recipient is not accepting transactions sent by IP address - 接收者拒绝接收该 IP 地址发送的交易 - - - - Transfer was not accepted - 传输被拒绝 - - - - Invalid response received - 收到非法应答 - - - - Creating transaction... - 创建交易... - - - - This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - 由于交易量、复杂度或涉及新收到的比特币的原因,您需要为该笔交易支付至少 %s 个比特币的交易费. - - - - Transaction creation failed - 交易创建失败 - - - - Transaction aborted - 交易终止 - - - - Lost connection, transaction cancelled - 连接丢失,交易已被取消 - - - - Sending payment... - 发送支付... - - - - The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. - 交易被拒绝. 有时会发生这种错误, 愿因是您钱包中的一些钱已经被花掉了. 比如说您复制了钱包文件 wallet.dat, 然后用复制的钱包花掉了钱, 您现在所用的原始钱包中却没有该笔交易记录. - - - - Waiting for confirmation... - 等待确认... - - - - The payment was sent, but the recipient was unable to verify it. -The transaction is recorded and will credit to the recipient, -but the comment information will be blank. - 已付款, 但是无法验证收款人. -这笔交易已经被记录了, 金额也会被记入至收款人的账户, -但附注信息将会是空白. - - - - Payment was sent, but an invalid response was received - 支付已发送,但收到了一个非法应答。 - - - - Payment completed - 支付已完成 - - - - Name - 姓名 - - - - Address - 地址 - - - - Label - 标签 - - - - Bitcoin Address - 比特币地址 - - - - This is one of your own addresses for receiving payments and cannot be entered in the address book. - 这是一条您自己的用于接收支付的地址,不可以填入地址薄。 - - - - Edit Address - 编辑地址 - - - - Edit Address Label - 编辑地址标签 - - - - Add Address - 添加地址 - - - - Bitcoin - 比特币 - - - - Bitcoin - Generating - 比特币 - 生成中 - - - - Bitcoin - (not connected) - 比特币 - (未连接) - - - - &Open Bitcoin - &打开比特币 - - - - &Send Bitcoins - &发送比特币 - - - - O&ptions... - 选项 - - - - E&xit - 退出 - - - - Program has crashed and will terminate. - 程序崩溃,即将终止。 - - - Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. 警告:请确定您当前计算机的日期和时间是正确的。比特币将无法在错误的时间下正常工作。 - + beta 测试 @@ -2330,9 +1799,9 @@ but the comment information will be blank. main - - Bitcoin Qt - 比特币 Qt + + Bitcoin-Qt + 比特币-Qt - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_zh_TW.ts b/src/qt/locale/bitcoin_zh_TW.ts index fb5e533b25a..980a24d8fbb 100644 --- a/src/qt/locale/bitcoin_zh_TW.ts +++ b/src/qt/locale/bitcoin_zh_TW.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -14,20 +16,20 @@ - Copyright © 2009-2011 Bitcoin Developers + Copyright © 2009-2012 Bitcoin Developers This is experimental software. Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - 版權為位元幣開發人員自公元 2009 至 2011 年起所有 + 版權為 Bitcoin 開發人員自西元 2009 至 2012 年起所有 -這是個實驗性質的軟體. +這是個實驗性的軟體. -這個軟體在 MIT/X11 執照規範下發行散佈, 詳情請見附帶的 license.txt 檔案, 或網站 http://www.opensource.org/licenses/mit-license.php. +此軟體依據 MIX/X11 軟體授權條款散布, 詳情請見附帶的 license.txt 檔案, 或是以下網站: http://www.opensource.org/licenses/mit-license.php. -這個產品中包含了 OpenSSL 專案所開發的 OpenSSL Toolkit 軟體 (http://www.openssl.org/), Eric Young (eay@cryptsoft.com) 所寫的加解密軟體, 以及 Thomas Bernard 所寫的 UPnP 軟體. +此產品也包含了由 OpenSSL Project 所開發的 OpenSSL Toolkit (http://www.openssl.org/) 軟體, 由 Eric Young (eay@cryptsoft.com) 撰寫的加解密軟體, 以及由 Thomas Bernard 所撰寫的 UPnP 軟體. @@ -78,22 +80,22 @@ This product includes software developed by the OpenSSL Project for use in the O 刪除 - + Export Address Book Data 匯出位址簿資料 - + Comma separated file (*.csv) 逗號區隔資料檔 (*.csv) - + Error exporting 資料匯出有誤 - + Could not write to file %1. 無法寫入檔案 %1. @@ -101,17 +103,17 @@ This product includes software developed by the OpenSSL Project for use in the O AddressTableModel - + Label 標記 - + Address 位址 - + (no label) (沒有標記) @@ -125,125 +127,132 @@ This product includes software developed by the OpenSSL Project for use in the O + TextLabel 文字標籤 - + Enter passphrase 輸入密碼 - + New passphrase 新的密碼 - + Repeat new passphrase 重複新密碼 - + Enter the new passphrase to the wallet.<br/>Please use a passphrase of <b>10 or more random characters</b>, or <b>eight or more words</b>. 輸入錢包的新密碼.<br/>請用<b>10個以上的字元</b>, 或是<b>8個以上的字詞</b>. - + Encrypt wallet 錢包加密 - + This operation needs your wallet passphrase to unlock the wallet. 這個動作需要用你的錢包密碼來解鎖 - + Unlock wallet 錢包解鎖 - + This operation needs your wallet passphrase to decrypt the wallet. 這個動作需要用你的錢包密碼來解密 - + Decrypt wallet 錢包解密 - + Change passphrase 變更密碼 - + Enter the old and new passphrase to the wallet. 輸入錢包的新舊密碼. - + Confirm wallet encryption 錢包加密確認 - + WARNING: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! Are you sure you wish to encrypt your wallet? 警告: 如果將錢包加密後忘記密碼, 你會<b>失去其中所有的位元幣</b>! 你確定要將錢包加密嗎? - - + + Wallet encrypted 錢包已加密 - - Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - 請記得, 即使將錢包加密, 也不能完全防止因惡意軟體入侵, 而導致位元幣被偷. + + + Warning: The Caps Lock key is on. + 警告: 鍵盤輸入鎖定為大寫字母中. - - - - + + + + Wallet encryption failed 錢包加密失敗 - + Wallet encryption failed due to an internal error. Your wallet was not encrypted. 錢包加密因程式內部有誤而失敗. 你的錢包還是沒有加密. - - + + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. + 位元幣現在要關閉以完成加密程序. 請記住, 加密錢包無法完全防止入侵電腦的惡意程式偷取你的位元幣. + + + + The supplied passphrases do not match. 提供的密碼不符. - + Wallet unlock failed 錢包解鎖失敗 - - + + The passphrase entered for the wallet decryption was incorrect. 用來解密錢包的密碼輸入錯誤. - + Wallet decryption failed 錢包解密失敗 - + Wallet passphrase was succesfully changed. 錢包密碼變更成功. @@ -251,247 +260,268 @@ Are you sure you wish to encrypt your wallet? BitcoinGUI - + Bitcoin Wallet 位元幣錢包 - + + Synchronizing with network... 網路同步中... - + Block chain synchronization in progress 正在進行區塊鎖鏈的同步中 - + &Overview 總覽 - + Show general overview of wallet 顯示錢包一般總覽 - + &Transactions 交易 - + Browse transaction history 瀏覽交易紀錄 - + &Address Book 位址簿 - + Edit the list of stored addresses and labels 編輯儲存位址與標記的列表 - + &Receive coins 收錢 - + Show the list of addresses for receiving payments 顯示收款位址的列表 - + &Send coins 付錢 - + Send coins to a bitcoin address 付錢至某個位元幣位址 - + E&xit 結束 - + Quit application 結束應用程式 - + &About %1 關於%1 - + Show information about Bitcoin 顯示位元幣相關資訊 - + &Options... 選項... - + Modify configuration options for bitcoin 修改位元幣的設定選項 - + Open &Bitcoin 開啟位元幣 - + Show the Bitcoin window 顯示位元幣主視窗 - + &Export... 匯出... - + Export the current view to a file 將目前版面匯出至檔案 - + &Encrypt Wallet 錢包加密 - + Encrypt or decrypt wallet 將錢包加解密 - + &Change Passphrase 變更密碼 - + Change the passphrase used for wallet encryption 變更錢包加密用的密碼 - + + About &Qt + 關於 &Qt + + + + Show information about Qt + 顯示有關於 Qt 的資訊 + + + &File 檔案 - + &Settings 設定 - + &Help 求助 - + Tabs toolbar 分頁工具列 - + Actions toolbar 動作工具列 - + [testnet] [testnet] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - 與位元幣網路有 %n 個連線在使用中 + + 與位元幣網路有 %n 個連線在使用中 + - + Downloaded %1 of %2 blocks of transaction history. 已下載了 %1/%2 個交易紀錄的區塊. - + Downloaded %1 blocks of transaction history. 已下載了 %1 個交易紀錄的區塊. - + %n second(s) ago - %n 秒鐘前 + + %n 秒鐘前 + - + %n minute(s) ago - %n 分鐘前 + + %n 分鐘前 + - + %n hour(s) ago - %n 小時前 + + %n 小時前 + - + %n day(s) ago - %n 天前 + + %n 天前 + - + Up to date 最新狀態 - + Catching up... 進度追趕中... - + Last received block was generated %1. 最近收到的區塊產生於 %1. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? 這筆交易的資料大小超過限制了. 你還是可以付出 %1 的費用來傳送. 這筆費用會付給處理該筆交易的節點, 並幫助維持整個網路. 你願意支付這項費用嗎? - + Sending... 付出中... - + Sent transaction 付款交易 - + Incoming transaction 收款交易 - + Date: %1 Amount: %2 Type: %3 @@ -503,15 +533,20 @@ Address: %4 位址: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> 錢包<b>已加密</b>並且正<b>解鎖中</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> 錢包<b>已加密</b>並且正<b>上鎖中</b> + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + + DisplayOptionsPage @@ -527,8 +562,13 @@ Address: %4 - Display addresses in transaction list - 在交易列表中顯示位址 + &Display addresses in transaction list + &在交易列表中顯示位址 + + + + Whether to show Bitcoin addresses in the transaction list + @@ -579,22 +619,22 @@ Address: %4 編輯付款位址 - + The entered address "%1" is already in the address book. 輸入的位址"%1"已存在於位址簿中. - + The entered address "%1" is not a valid bitcoin address. 輸入的位址"%1"並非有效的位元幣位址 - + Could not unlock wallet. 無法將錢包解鎖. - + New key generation failed. 新密鑰產生失敗. @@ -673,8 +713,8 @@ Address: %4 - Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. - 非必要的交易手續費, 有助於縮短你的交易處理時間. 以 kB 為計費單位, 而大部份交易的大小是 1kB. 建議設定為 0.01 元. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. + 非必要的交易手續費, 以 kB 為計費單位, 且有助於縮短你的交易處理時間. 大部份交易的資料大小是 1 kB. 建議設定為 0.01 元. @@ -683,8 +723,8 @@ Address: %4 - Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1kB. Fee 0.01 recommended. - 非必要的交易手續費, 有助於縮短你的交易處理時間. 以 kB 為計費單位, 而大部份交易的大小是 1kB. 建議設定為 0.01 元. + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. + 非必要的交易手續費, 以 kB 為計費單位, 且有助於縮短你的交易處理時間. 大部份交易的資料大小是 1 kB. 建議設定為 0.01 元. @@ -743,20 +783,12 @@ Address: %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">錢包</span></p></body></html> + + Wallet + 錢包 - + <b>Recent transactions</b> <b>最近交易</b> @@ -780,13 +812,13 @@ p, li { white-space: pre-wrap; } SendCoinsDialog - - - - - - - + + + + + + + Send Coins 付錢 @@ -801,82 +833,87 @@ p, li { white-space: pre-wrap; } 加收款人... - + Clear all 全部清掉 - + + Remove all transaction fields + 移除所有交易欄位 + + + Balance: 餘額: - + 123.456 BTC 123.456 BTC - + Confirm the send action 確認付款動作 - + &Send 付出 - + <b>%1</b> to %2 (%3) <b>%1</b> 給 %2 (%3) - + Confirm send coins 確認付出金額 - + Are you sure you want to send %1? 確定要付出 %1 嗎? - + and - + The recepient address is not valid, please recheck. 無效的收款位址, 請再檢查看看. - + The amount to pay must be larger than 0. 付款金額必須大於 0. - + Amount exceeds your balance 金額超過了你的餘額 - + Total exceeds your balance when the %1 transaction fee is included 加上交易手續費 %1 後的總金額超過了你的餘額 - + Duplicate address found, can only send to each address once in one send operation 發現了重複的位址; 在一次付款作業中, 只能付給每個位址一次 - + Error: Transaction creation failed 錯誤: 交易產生失敗 - + Error: The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. 錯誤: 交易被拒絕. 有時候會發生這種錯誤, 是因為你錢包中的一些錢已經被花掉了. 比如說你複製了錢包檔 wallet.dat, 然後用複製的錢包花掉了錢, 你現在所用的原來的錢包中卻沒有該筆交易紀錄. @@ -1097,54 +1134,58 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date 日期 - + Type 種類 - + Address 位址 - + Amount 金額 - + Open for %n block(s) - 在 %n 個區塊內未定 + + 在 %n 個區塊內未定 + - + Open until %1 在 %1 前未定 - + Offline (%1 confirmations) 離線中 (經確認 %1 次) - + Unconfirmed (%1 of %2 confirmations) 未確認 (經確認 %1 次, 應確認 %2 次) - + Confirmed (%1 confirmations) 已確認 (經確認 %1 次) Mined balance will be available in %n more blocks - 生產金額將在 %n 個區塊產出後可用 + + 生產金額將在 %n 個區塊產出後可用 + @@ -1163,56 +1204,51 @@ p, li { white-space: pre-wrap; } - Received from IP - 收受於網路位址 + Received from + 收受自 - + Sent to 付出至 - - Sent to IP - 付出至網路位址 - - - + Payment to yourself 付給自己 - + Mined 開採所得 - + (n/a) (不適用) - + Transaction status. Hover over this field to show number of confirmations. 交易狀態. 移動游標至欄位上方來顯示確認次數. - + Date and time that the transaction was received. 收到交易的日期與時間. - + Type of transaction. 交易的種類. - + Destination address of transaction. 交易的目標位址. - + Amount removed from or added to balance. 減去或加入至餘額的金額 @@ -1311,67 +1347,67 @@ p, li { white-space: pre-wrap; } 顯示明細... - + Export Transaction Data 匯出交易資料 - + Comma separated file (*.csv) 逗號分隔資料檔 (*.csv) - + Confirmed 已確認 - + Date 日期 - + Type 種類 - + Label 標記 - + Address 位址 - + Amount 金額 - + ID 識別碼 - + Error exporting 匯出錯誤 - + Could not write to file %1. 無法寫入至 %1 檔案. - + Range: 範圍: - + to @@ -1387,214 +1423,214 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version 位元幣版本 - + Usage: 用法: - + Send command to -server or bitcoind 送指令至 -server 或 bitcoind - + List commands 列出指令 - + Get help for a command 取得指令說明 - + Options: 選項: - + Specify configuration file (default: bitcoin.conf) 指定設定檔 (預設: bitcoin.conf) - + Specify pid file (default: bitcoind.pid) 指定行程識別碼檔案 (預設: bitcoind.pid) - + Generate coins 生產位元幣 - - Don't generate coins + + Don't generate coins 不生產位元幣 - + Start minimized 啓動時最小化 - + Specify data directory 指定資料目錄 - + Specify connection timeout (in milliseconds) 指定連線逾時時間 (毫秒) - + Connect through socks4 proxy 透過 socks4 代理伺服器連線 - + Allow DNS lookups for addnode and connect 允許 addnode 和 connect 時做域名解析 - + Add a node to connect to 新增連線節點 - + Connect only to the specified node 只連線至指定節點 - - Don't accept connections from outside + + Don't accept connections from outside 不接受外來連線 - - Don't attempt to use UPnP to map the listening port + + Don't attempt to use UPnP to map the listening port 不嘗試用 UPnP 來設定服務連接埠的對應 - + Attempt to use UPnP to map the listening port 嘗試用 UPnP 來設定服務連接埠的對應 - + Fee per kB to add to transactions you send 交易付款時每 kB 的交易手續費 - + Accept command line and JSON-RPC commands 接受命令列與 JSON-RPC 指令 - + Run in the background as a daemon and accept commands 以背景程式執行並接受指令 - + Use the test network 使用測試網路 - + Username for JSON-RPC connections JSON-RPC 連線使用者名稱 - + Password for JSON-RPC connections JSON-RPC 連線密碼 - + Listen for JSON-RPC connections on <port> (default: 8332) 在通訊埠 <port> 聽候 JSON-RPC 連線 (預設: 8332) - + Allow JSON-RPC connections from specified IP address 只允許從指定網路位址來的 JSON-RPC 連線 - + Send commands to node running on <ip> (default: 127.0.0.1) 送指令給在 <ip> 的節點 (預設: 127.0.0.1) - + Set key pool size to <n> (default: 100) 設定密鑰池大小為 <n> (預設: 100) - + Rescan the block chain for missing wallet transactions 重新掃描區塊鎖鏈, 以尋找錢包所遺漏的交易. - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -1603,721 +1639,154 @@ SSL 選項: (SSL 設定程序請見 Bitcoin Wiki) - + Use OpenSSL (https) for JSON-RPC connections 使用 OpenSSL (https) 於JSON-RPC 連線 - + Server certificate file (default: server.cert) 伺服器憑證檔 (預設: server.cert) - + Server private key (default: server.pem) 伺服器密鑰檔 (預設: server.pem) - + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) 可以接受的加密法 (預設: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - + This help message 此協助訊息 - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. 無法鎖定資料目錄 %s. 也許位元幣已經在執行了. - + Loading addresses... 載入位址中... - + Error loading addr.dat 載入 addr.dat 錯誤 - + Loading block index... 載入區塊索引中... - + Error loading blkindex.dat 載入 blkindex.dat 失敗 - + Loading wallet... 載入錢包中... - + Error loading wallet.dat: Wallet corrupted 載入 wallet.dat 失敗: 錢包壞掉了 - + Error loading wallet.dat: Wallet requires newer version of Bitcoin 載入 wallet.dat 錯誤: 此錢包需要新版的 Bitcoin - + Error loading wallet.dat 載入 wallet.dat 錯誤 - + Rescanning... 重新掃描中... - + + Threshold for disconnecting misbehaving peers (default: 100) + + + + + + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) + + + + + Done loading 載入完成 - + Invalid -proxy address 無效的 -proxy 位址 - + Invalid amount for -paytxfee=<amount> -paytxfee=<金額> 中的金額無效 - + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. 警告: -paytxfee 設定得很高. 這是當你交易付款時所要支付的手續費. - + Error: CreateThread(StartNode) failed 錯誤: CreateThread(StartNode) 失敗 - + Warning: Disk space is low 警告: 磁碟空間很少 - + Unable to bind to port %d on this computer. Bitcoin is probably already running. 無法與這台電腦上的通訊埠 %d 連結. 也許 Bitcoin 已經在執行了. - - - This transaction is over the size limit. You can still send it for a fee of %s, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? - 這筆交易的資料大小超過限制了. 你還是可以付出 %s 的費用來傳送. 這項費用會付給處理該筆交易的節點, 並幫助維持整個網路. 你願意支付這項費用嗎? - - - - Enter the current passphrase to the wallet. - 輸入錢包目前的密碼. - - - - Passphrase - 密碼 - - - - Please supply the current wallet decryption passphrase. - 請提供錢包目前的解密密碼 - - - - The passphrase entered for the wallet decryption was incorrect. - 輸入的錢包解密密碼不對 - - - - Status - 狀態 - - Date - 日期 - - - - Description - 說明 - - - - Debit - 出帳 - - - - Credit - 入帳 - - - - Open for %d blocks - 在 %d 個區塊內未定 - - - - Open until %s - 在 %s 前未定 - - - - %d/offline? - %d/斷線中? - - - - %d/unconfirmed - %d/未確認 - - - - %d confirmations - 經確認 %d 次 - - - - Generated - 已產出 - - - - Generated (%s matures in %d more blocks) - 已產出 (%s 將在 %d 個區塊產出後熟成) - - - - Generated - Warning: This block was not received by any other nodes and will probably not be accepted! - 已產出 - 警告: 沒有任何的其他節點收到此區塊, 也許不會被接受! - - - - Generated (not accepted) - 已產出 (不被接受) - - - - From: - 來自: - - - - Received with: - 收受於: - - - - Payment to yourself - 付給自己 - - - - To: - 目的: - - - - Generating - 生產中 - - - - (not connected) - (未連線) - - - - %d connections %d blocks %d transactions - %d 個連線 %d 個區塊 %d 次交易 - - - - Wallet already encrypted. - 錢包已經加密了. - - - - Enter the new passphrase to the wallet. -Please use a passphrase of 10 or more random characters, or eight or more words. - 輸入錢包的新密碼. -密碼請用 10 個以上的字元, 或是 8 個以上的字詞. - - - - Error: The supplied passphrase was too short. - 錯誤: 提供的密碼太短了. - - - - WARNING: If you encrypt your wallet and lose your passphrase, you will LOSE ALL OF YOUR BITCOINS! -Are you sure you wish to encrypt your wallet? - 警告: 如果將錢包加密後忘記密碼, 你會失去其中所有的位元幣! -你確定要將錢包加密嗎? - - - - Please re-enter your new wallet passphrase. - 請再輸入一次新密碼. - - - - Error: the supplied passphrases didn't match. - 錯誤: 提供的密碼不相符. - - - - Wallet encryption failed. - 錢包加密失敗. - - - - Wallet Encrypted. -Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - 錢包已加密. -請記得, 即使將錢包加密, 也不能完全防止因惡意軟體入侵, 而導致位元幣被偷. - - - - Wallet is unencrypted, please encrypt it first. - 錢包未加密, 請先加密. - - - - Enter the new passphrase for the wallet. - 輸入錢包的新密碼. - - - - Re-enter the new passphrase for the wallet. - 再輸入一次錢包的新密碼. - - - - Wallet Passphrase Changed. - 錢包密碼已變更. - - - - New Receiving Address - 新增收款位址 - - - - You should use a new address for each payment you receive. - -Label - 每次收款你都應該要用一個新的位址. - -標記 - - - - <b>Status:</b> - <b>狀態:</b> - - - - , has not been successfully broadcast yet - , 尚未成功公告出去 - - - - , broadcast through %d node - , 公告至 %d 個節點 - - - - , broadcast through %d nodes - , 公告至 %d 個節點 - - - - <b>Date:</b> - <b>日期:</b> - - - - <b>Source:</b> Generated<br> - <b>來源:</b> 生產所得<br> - - - - <b>From:</b> - <b>來自:</b> - - - - unknown - 不明 - - - - <b>To:</b> - <b>目的:</b> - - - - (yours, label: - (你的, 標記為: - - - - (yours) - (你的) - - - - <b>Credit:</b> - <b>入帳:</b> - - - - (%s matures in %d more blocks) - (%s 將在 %d 個區塊產出後熟成) - - - - (not accepted) - (不被接受) - - - - <b>Debit:</b> - <b>出帳:</b> - - - - <b>Transaction fee:</b> - <b>交易手續費:</b> - - - - <b>Net amount:</b> - <b>淨額:</b> - - - - Message: - 訊息: - - - - Comment: - 附註: - - - - Generated coins must wait 120 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, it will change to "not accepted" and not be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - 生產出來的錢要再等 120 個區塊產出之後, 才能夠花用. 當你產出區塊時, 它會被公布到網路上, 以被串連至區塊鎖鏈. 如果串連失敗了, 它的狀態就會變成"不被接受", 且不能被花用. 當你產出區塊的幾秒鐘內, 其他節點也產出了區塊的話, 有時候就會發生這種情形. - - - - Cannot write autostart/bitcoin.desktop file - 無法寫入 autostart/bitcoin.desktop 檔案 - - - - Main - 主要 - - - - &Start Bitcoin on window system startup - 視窗系統啓動時同時開啓位元幣 - - - - &Minimize on close - 關閉時最小化 - - - - version %s - %s 版 - - - - Error in amount - 金額有誤 - - - - Send Coins - 付錢 - - - - Amount exceeds your balance - 金額超過了餘額 - - - - Total exceeds your balance when the - 包含手續費 - - - - transaction fee is included - 後總額超過了餘額 - - - - Payment sent - 已付款 - - - - Sending... - 付出中... - - - - Invalid address - 無效的位址 - - - - Sending %s to %s - 付出 %s 給 %s - - - - CANCELLED - 已取消 - - - - Cancelled - 已取消 - - - - Transfer cancelled - 交易已取消 - - - - Error: - 錯誤: - - - - Insufficient funds - 累積金額不足 - - - - Connecting... - 連線中... - - - - Unable to connect - 無法連線 - - - - Requesting public key... - 請求公鑰中... - - - - Received public key... - 接收公鑰中... - - - - Recipient is not accepting transactions sent by IP address - 收款人不接受來自以下網路位址的交易: - - - - Transfer was not accepted - 轉帳不被接受 - - - - Invalid response received - 收到了無效的回應 - - - - Creating transaction... - 交易建立中... - - - - This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - 這筆交易因為金額或複雜度或最近累積收款的關係, 需要至少 %s 的手續費 - - - - Transaction creation failed - 交易建立失敗 - - - - Transaction aborted - 交易取消 - - - - Lost connection, transaction cancelled - 斷線了, 交易已取消 - - - - Sending payment... - 付款中... - - - - The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. - 交易被拒絕了. 有時候會發生這種事, 是因為你錢包中的一些錢已經被花掉了. 比如說你複製了錢包檔 wallet.dat, 然後用複製的錢包花掉了錢, 你現在所用的原來的錢包中卻沒有該筆交易紀錄. - - - - Waiting for confirmation... - 等待確認中... - - - - The payment was sent, but the recipient was unable to verify it. -The transaction is recorded and will credit to the recipient, -but the comment information will be blank. - 已付款, 但是無法驗證收款人. -這筆交易已經被紀錄了, 金額也會被記入至收款人的帳戶, -然而附註資訊將會是空白. - - - - Payment was sent, but an invalid response was received - 已付款, 但是收到無效的回應 - - - - Payment completed - 付款完成 - - - - Name - 名稱 - - - - Address - 位址 - - - - Label - 標記 - - - - Bitcoin Address - 位元幣位址 - - - - This is one of your own addresses for receiving payments and cannot be entered in the address book. - 這是你的一個收款位址, 因而無法輸入於位址簿中. - - - - Edit Address - 編輯位址 - - - - Edit Address Label - 編輯位址標記 - - - - Add Address - 新增位址 - - - - Bitcoin - 位元幣 - - - - Bitcoin - Generating - 位元幣 - 生產中 - - - - Bitcoin - (not connected) - 位元幣 - (未連線) - - - - &Open Bitcoin - 開啓位元幣 - - - - &Send Bitcoins - 付位元幣 - - - - O&ptions... - 選項... - - - - E&xit - 結束 - - - - Program has crashed and will terminate. - 程式已當掉且將被終止. - - - Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. 警告: 請檢查電腦時間日期是否正確. 位元幣無法在時鐘不準的情況下正常運作. - + beta 公測版 @@ -2325,9 +1794,9 @@ but the comment information will be blank. main - - Bitcoin Qt - 位元幣Qt版 + + Bitcoin-Qt + 位元幣Qt版 - \ No newline at end of file + From b4813730015b9d5f5d2f0fbf17bdc45a642d4f9f Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Mon, 7 May 2012 05:34:18 +0000 Subject: [PATCH 250/298] Update/fix translations --- src/qt/locale/bitcoin_ca_ES.ts | 1127 +++++++++++++++--------------- src/qt/locale/bitcoin_cs.ts | 391 ++++++----- src/qt/locale/bitcoin_da.ts | 630 +++++++++-------- src/qt/locale/bitcoin_de.ts | 512 +++++++------- src/qt/locale/bitcoin_en.ts | 485 ++++++------- src/qt/locale/bitcoin_es.ts | 632 +++++++++-------- src/qt/locale/bitcoin_es_CL.ts | 558 ++++++++------- src/qt/locale/bitcoin_et.ts | 1149 +++++++++++++++--------------- src/qt/locale/bitcoin_eu_ES.ts | 1187 +++++++++++++++---------------- src/qt/locale/bitcoin_fa.ts | 409 ++++++----- src/qt/locale/bitcoin_fa_IR.ts | 1197 ++++++++++++++++---------------- src/qt/locale/bitcoin_fi.ts | 384 +++++----- src/qt/locale/bitcoin_fr_CA.ts | 1175 ++++++++++++++++--------------- src/qt/locale/bitcoin_fr_FR.ts | 384 +++++----- src/qt/locale/bitcoin_he.ts | 384 +++++----- src/qt/locale/bitcoin_hr.ts | 563 ++++++++------- src/qt/locale/bitcoin_hu.ts | 623 +++++++++-------- src/qt/locale/bitcoin_it.ts | 530 +++++++------- src/qt/locale/bitcoin_lt.ts | 413 ++++++----- src/qt/locale/bitcoin_nb.ts | 528 +++++++------- src/qt/locale/bitcoin_nl.ts | 514 +++++++------- src/qt/locale/bitcoin_pl.ts | 455 ++++++------ src/qt/locale/bitcoin_pt_BR.ts | 644 +++++++++-------- src/qt/locale/bitcoin_ro_RO.ts | 697 ++++++++++--------- src/qt/locale/bitcoin_ru.ts | 529 +++++++------- src/qt/locale/bitcoin_sk.ts | 467 +++++++------ src/qt/locale/bitcoin_sr.ts | 1017 ++++++++++++++------------- src/qt/locale/bitcoin_sv.ts | 664 +++++++++--------- src/qt/locale/bitcoin_tr.ts | 377 +++++----- src/qt/locale/bitcoin_uk.ts | 537 +++++++------- src/qt/locale/bitcoin_zh_CN.ts | 507 +++++++------- src/qt/locale/bitcoin_zh_TW.ts | 507 +++++++------- 32 files changed, 10557 insertions(+), 9619 deletions(-) diff --git a/src/qt/locale/bitcoin_ca_ES.ts b/src/qt/locale/bitcoin_ca_ES.ts index 0340550960b..e85456fbe77 100644 --- a/src/qt/locale/bitcoin_ca_ES.ts +++ b/src/qt/locale/bitcoin_ca_ES.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -21,7 +23,7 @@ This is experimental software. Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - + @@ -34,7 +36,7 @@ This product includes software developed by the OpenSSL Project for use in the O These are your Bitcoin addresses for receiving payments. You may want to give a different one to each sender so you can keep track of who is paying you. - + @@ -59,27 +61,27 @@ This product includes software developed by the OpenSSL Project for use in the O &Copy to Clipboard - + Show &QR Code - + Sign a message to prove you own this address - + &Sign Message - + Delete the currently selected address from the list. Only sending addresses can be deleted. - + @@ -89,60 +91,60 @@ This product includes software developed by the OpenSSL Project for use in the O Copy address - + Copy label - + Edit - + Delete - + Export Address Book Data - + Comma separated file (*.csv) - + Error exporting - + Could not write to file %1. - + AddressTableModel - + Label Etiqueta - + Address Direcció - + (no label) - + @@ -150,33 +152,33 @@ This product includes software developed by the OpenSSL Project for use in the O Dialog - + TextLabel - + Enter passphrase - + New passphrase - + Repeat new passphrase - + Enter the new passphrase to the wallet.<br/>Please use a passphrase of <b>10 or more random characters</b>, or <b>eight or more words</b>. - + @@ -186,60 +188,60 @@ This product includes software developed by the OpenSSL Project for use in the O This operation needs your wallet passphrase to unlock the wallet. - + Unlock wallet - + This operation needs your wallet passphrase to decrypt the wallet. - + Decrypt wallet - + Change passphrase - + Enter the old and new passphrase to the wallet. - + Confirm wallet encryption - + WARNING: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! Are you sure you wish to encrypt your wallet? - + Wallet encrypted - + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - + Warning: The Caps Lock key is on. - + @@ -247,353 +249,368 @@ Are you sure you wish to encrypt your wallet? Wallet encryption failed - + Wallet encryption failed due to an internal error. Your wallet was not encrypted. - + The supplied passphrases do not match. - + Wallet unlock failed - + The passphrase entered for the wallet decryption was incorrect. - + Wallet decryption failed - + Wallet passphrase was succesfully changed. - + BitcoinGUI - + Bitcoin Wallet - + - - + + Synchronizing with network... Sincronització amb la xarxa ... - + Block chain synchronization in progress Sincronització de la cadena en el progrés - + &Overview - + - + Show general overview of wallet Mostra panorama general de la cartera - + &Transactions - + - + Browse transaction history Cerca a l'historial de transaccions - + &Address Book - + - + Edit the list of stored addresses and labels Edita la llista d'adreces emmagatzemada i etiquetes - + &Receive coins &Rebre monedes - + Show the list of addresses for receiving payments - + - + &Send coins - + - + Send coins to a bitcoin address - + - + Sign &message - + - + Prove you control an address - + - + E&xit - + - + Quit application Sortir de l'aplicació - + &About %1 - + - + Show information about Bitcoin Mostra informació sobre Bitcoin - - - About &Qt - - - - - Show information about Qt - - + About &Qt + + + + + Show information about Qt + + + + &Options... &Opcions ... - + Modify configuration options for bitcoin Modificar les opcions de configuració per bitcoin - - - Open &Bitcoin - - - - - Show the Bitcoin window - - - - - &Export... - - - Export the data in the current tab to a file - + Open &Bitcoin + - &Encrypt Wallet - + Show the Bitcoin window + - Encrypt or decrypt wallet - + &Export... + + + + + Export the data in the current tab to a file + - &Backup Wallet - + &Encrypt Wallet + - Backup wallet to another location - - - - - &Change Passphrase - + Encrypt or decrypt wallet + + &Backup Wallet + + + + + Backup wallet to another location + + + + + &Change Passphrase + + + + Change the passphrase used for wallet encryption - + - + &File - + - + &Settings - + - + &Help &Ajuda - + Tabs toolbar - + - + Actions toolbar Accions de la barra d'eines - + [testnet] - + - + bitcoin-qt - + - + %n active connection(s) to Bitcoin network - + + + - + Downloaded %1 of %2 blocks of transaction history. - + - + Downloaded %1 blocks of transaction history. - + - + %n second(s) ago - + + + - + %n minute(s) ago - + + + - + %n hour(s) ago - + + + - + %n day(s) ago - + + + - + Up to date Al dia - + Catching up... Posar-se al dia ... - + Last received block was generated %1. - + - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? - + - + Sending... L'enviament de ... - + Sent transaction Transacció enviada - + Incoming transaction - + - + Date: %1 Amount: %2 Type: %3 Address: %4 - + - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> - + - + Wallet is <b>encrypted</b> and currently <b>locked</b> - + - + Backup Wallet - + - + Wallet Data (*.dat) - + - + Backup Failed - + - + There was an error trying to save the wallet data to the new location. - + + + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + @@ -601,17 +618,22 @@ Address: %4 &Unit to show amounts in: - + Choose the default subdivision unit to show in the interface, and when sending coins - + - Display addresses in transaction list - + &Display addresses in transaction list + + + + + Whether to show Bitcoin addresses in the transaction list + @@ -624,62 +646,62 @@ Address: %4 &Label - + The label associated with this address book entry - + &Address - + The address associated with this address book entry. This can only be modified for sending addresses. - + New receiving address - + New sending address - + Edit receiving address - + Edit sending address - + The entered address "%1" is already in the address book. - + The entered address "%1" is not a valid bitcoin address. - + Could not unlock wallet. - + New key generation failed. - + @@ -687,22 +709,22 @@ Address: %4 &Start Bitcoin on window system startup - + Automatically start Bitcoin after the computer is turned on - + &Minimize to the tray instead of the taskbar - + Show only a tray icon after minimizing the window - + @@ -712,62 +734,62 @@ Address: %4 Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - + M&inimize on close - + Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Quit in the menu. - + &Connect through SOCKS4 proxy: - + Connect to the Bitcon network through a SOCKS4 proxy (e.g. when connecting through Tor) - + Proxy &IP: - + IP address of the proxy (e.g. 127.0.0.1) - + &Port: - + Port of the proxy (e.g. 1234) - + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. - + Pay transaction &fee - + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. - + @@ -775,89 +797,89 @@ Address: %4 Message - + You can sign messages with your addresses to prove you own them. Be careful not to sign anything vague, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - + - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - + The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + Choose adress from address book - + Alt+A - + Paste address from clipboard - + Alt+P - + Enter the message you want to sign here - + Click "Sign Message" to get signature - + Sign a message to prove you own this address - + &Sign Message - + - Copy the currently selected address to the system clipboard - Copieu l'adreça seleccionada al porta-retalls del sistema + Copy the current signature to the system clipboard + &Copy to Clipboard - + Error signing - + %1 is not a valid address. - + Private key for %1 is not available. - + Sign failed - + @@ -865,17 +887,17 @@ Address: %4 Main - + Display - + Options - + @@ -883,7 +905,7 @@ Address: %4 Form - + @@ -893,17 +915,17 @@ Address: %4 123.456 BTC - + Number of transactions: - + 0 - + @@ -913,21 +935,17 @@ Address: %4 0 BTC - + - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - + + Wallet + - + <b>Recent transactions</b> - + @@ -937,12 +955,12 @@ p, li { white-space: pre-wrap; } Total of transactions that have yet to be confirmed, and do not yet count toward the current balance - + Total number of transactions in wallet - + @@ -950,52 +968,57 @@ p, li { white-space: pre-wrap; } Dialog - + QR Code - + - + Request Payment - + - + Amount: - + - + BTC - + - + Label: - + - + Message: - + - + &Save As... - + - + + Error encoding URI into QR Code. + + + + Save Image... - + - + PNG Images (*.png) - + @@ -1015,22 +1038,22 @@ p, li { white-space: pre-wrap; } Send to multiple recipients at once - + &Add recipient... - + Remove all transaction fields - + Clear all - + @@ -1040,42 +1063,42 @@ p, li { white-space: pre-wrap; } 123.456 BTC - + Confirm the send action - + &Send - + <b>%1</b> to %2 (%3) - + Confirm send coins - + Are you sure you want to send %1? - + and - + The recepient address is not valid, please recheck. - + @@ -1090,22 +1113,22 @@ p, li { white-space: pre-wrap; } Total exceeds your balance when the %1 transaction fee is included - + Duplicate address found, can only send to each address once in one send operation - + Error: Transaction creation failed - + Error: The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. - + @@ -1113,63 +1136,63 @@ p, li { white-space: pre-wrap; } Form - + A&mount: - + Pay &To: - + Enter a label for this address to add it to your address book - + &Label: - + The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - + Choose address from address book - + Alt+A - + Paste address from clipboard - + Alt+P - + Remove this recipient - + Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - + @@ -1177,85 +1200,85 @@ p, li { white-space: pre-wrap; } Open for %1 blocks - + Open until %1 - + %1/offline? - + %1/unconfirmed - + %1 confirmations - + <b>Status:</b> - + , has not been successfully broadcast yet - + , broadcast through %1 node - + , broadcast through %1 nodes - + <b>Date:</b> - + <b>Source:</b> Generated<br> - + <b>From:</b> - + unknown - + <b>To:</b> - + (yours, label: - + (yours) - + @@ -1263,54 +1286,54 @@ p, li { white-space: pre-wrap; } <b>Credit:</b> - + (%1 matures in %2 more blocks) - + (not accepted) - + <b>Debit:</b> - + <b>Transaction fee:</b> - + <b>Net amount:</b> - + Message: - + Comment: - + Transaction ID: - + Generated coins must wait 120 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, it will change to "not accepted" and not be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - + @@ -1318,130 +1341,134 @@ p, li { white-space: pre-wrap; } Transaction details - + This pane shows a detailed description of the transaction - + TransactionTableModel - + Date - + - + Type - + - + Address Direcció - + Amount - + - + Open for %n block(s) - + + + - + Open until %1 - + - + Offline (%1 confirmations) - + - + Unconfirmed (%1 of %2 confirmations) - + - + Confirmed (%1 confirmations) - + Mined balance will be available in %n more blocks - + + + This block was not received by any other nodes and will probably not be accepted! - + Generated but not accepted - + Received with - + Received from - + Sent to - + Payment to yourself - + Mined - + (n/a) - + Transaction status. Hover over this field to show number of confirmations. - + Date and time that the transaction was received. - + Type of transaction. - + Destination address of transaction. - + Amount removed from or added to balance. - + @@ -1450,122 +1477,122 @@ p, li { white-space: pre-wrap; } All - + Today - + This week - + This month - + Last month - + This year - + Range... - + Received with - + Sent to - + To yourself - + Mined - + Other - + Enter address or label to search - + Min amount - + Copy address - + Copy label - + Copy amount - + Edit label - + Show details... - + Export Transaction Data - + Comma separated file (*.csv) - + Confirmed - + Date - + Type - + @@ -1580,32 +1607,32 @@ p, li { white-space: pre-wrap; } Amount - + ID - + Error exporting - + Could not write to file %1. - + Range: - + to - + @@ -1618,346 +1645,346 @@ p, li { white-space: pre-wrap; } bitcoin-core - - - Bitcoin version - - - - - Usage: - - - - - Send command to -server or bitcoind - - - - - List commands - - - - - Get help for a command - - - Options: - + Bitcoin version + - Specify configuration file (default: bitcoin.conf) - + Usage: + - Specify pid file (default: bitcoind.pid) - + Send command to -server or bitcoind + - Generate coins - + List commands + - Don't generate coins - + Get help for a command + - Start minimized - + Options: + - Specify data directory - + Specify configuration file (default: bitcoin.conf) + - Specify connection timeout (in milliseconds) - + Specify pid file (default: bitcoind.pid) + - Connect through socks4 proxy - + Generate coins + - Allow DNS lookups for addnode and connect - + Don't generate coins + - Listen for connections on <port> (default: 8333 or testnet: 18333) - + Start minimized + - Maintain at most <n> connections to peers (default: 125) - + Specify data directory + - Add a node to connect to - + Specify connection timeout (in milliseconds) + - Connect only to the specified node - + Connect through socks4 proxy + - Don't accept connections from outside - + Allow DNS lookups for addnode and connect + - Don't bootstrap list of peers using DNS - + Listen for connections on <port> (default: 8333 or testnet: 18333) + - Threshold for disconnecting misbehaving peers (default: 100) - + Maintain at most <n> connections to peers (default: 125) + - Number of seconds to keep misbehaving peers from reconnecting (default: 86400) - + Add a node to connect to + + + + + Connect only to the specified node + + + + + Don't accept connections from outside + - Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) - + Don't bootstrap list of peers using DNS + - Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) - + Threshold for disconnecting misbehaving peers (default: 100) + - Don't attempt to use UPnP to map the listening port - - - - - Attempt to use UPnP to map the listening port - - - - - Fee per kB to add to transactions you send - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) + - Accept command line and JSON-RPC commands - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) + - Run in the background as a daemon and accept commands - + Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) + - Use the test network - + Don't attempt to use UPnP to map the listening port + - Output extra debugging information - + Attempt to use UPnP to map the listening port + - Prepend debug output with timestamp - + Fee per kB to add to transactions you send + - Send trace/debug info to console instead of debug.log file - + Accept command line and JSON-RPC commands + - Send trace/debug info to debugger - + Run in the background as a daemon and accept commands + - Username for JSON-RPC connections - + Use the test network + - Password for JSON-RPC connections - + Output extra debugging information + - Listen for JSON-RPC connections on <port> (default: 8332) - + Prepend debug output with timestamp + - Allow JSON-RPC connections from specified IP address - + Send trace/debug info to console instead of debug.log file + - Send commands to node running on <ip> (default: 127.0.0.1) - + Send trace/debug info to debugger + - Set key pool size to <n> (default: 100) - + Username for JSON-RPC connections + - Rescan the block chain for missing wallet transactions - + Password for JSON-RPC connections + - -SSL options: (see the Bitcoin Wiki for SSL setup instructions) - + Listen for JSON-RPC connections on <port> (default: 8332) + + + + + Allow JSON-RPC connections from specified IP address + + + + + Send commands to node running on <ip> (default: 127.0.0.1) + - Use OpenSSL (https) for JSON-RPC connections - + Set key pool size to <n> (default: 100) + - Server certificate file (default: server.cert) - + Rescan the block chain for missing wallet transactions + - Server private key (default: server.pem) - + +SSL options: (see the Bitcoin Wiki for SSL setup instructions) + - - Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - + + Use OpenSSL (https) for JSON-RPC connections + - This help message - + Server certificate file (default: server.cert) + - Cannot obtain a lock on data directory %s. Bitcoin is probably already running. - + Server private key (default: server.pem) + - - Loading addresses... - + + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) + - Error loading addr.dat - - - - - Error loading blkindex.dat - - - - - Error loading wallet.dat: Wallet corrupted - - - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin - - - - - Wallet needed to be rewritten: restart Bitcoin to complete - - - - - Error loading wallet.dat - + This help message + - Loading block index... - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. + - - Loading wallet... - + + Loading addresses... + - - Rescanning... - + + Error loading addr.dat + + + + + Error loading blkindex.dat + - Done loading - + Error loading wallet.dat: Wallet corrupted + - Invalid -proxy address - + Error loading wallet.dat: Wallet requires newer version of Bitcoin + - Invalid amount for -paytxfee=<amount> - + Wallet needed to be rewritten: restart Bitcoin to complete + - Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. - + Error loading wallet.dat + + + + + Loading block index... + + + + + Loading wallet... + + + + + Rescanning... + + + + + Done loading + - Error: CreateThread(StartNode) failed - + Invalid -proxy address + - Warning: Disk space is low - + Invalid amount for -paytxfee=<amount> + - Unable to bind to port %d on this computer. Bitcoin is probably already running. - + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. + - Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. - + Error: CreateThread(StartNode) failed + - + + Warning: Disk space is low + + + + + Unable to bind to port %d on this computer. Bitcoin is probably already running. + + + + + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. + + + + beta - + - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_cs.ts b/src/qt/locale/bitcoin_cs.ts index fafcf54d53d..0e8a32f3db4 100644 --- a/src/qt/locale/bitcoin_cs.ts +++ b/src/qt/locale/bitcoin_cs.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -136,17 +138,17 @@ Tento produkt zahrnuje programy vyvinuté OpenSSL Projektem pro použití v Open AddressTableModel - + Label Označení - + Address Adresa - + (no label) (bez označení) @@ -293,278 +295,298 @@ Jsi si jistý, že chceš peněženku zašifrovat? BitcoinGUI - + Bitcoin Wallet Bitcoinová peněženka - - + + Synchronizing with network... Synchronizuji se sítí... - + Block chain synchronization in progress Provádí se synchronizace řetězce bloků - + &Overview &Přehled - + Show general overview of wallet Zobraz celkový přehled peněženky - + &Transactions &Transakce - + Browse transaction history Procházet historii transakcí - + &Address Book &Adresář - + Edit the list of stored addresses and labels Uprav seznam uložených adres a jejich označení - + &Receive coins Pří&jem mincí - + Show the list of addresses for receiving payments Zobraz seznam adres pro příjem plateb - + &Send coins P&oslání mincí - + Send coins to a bitcoin address Pošli mince na Bitcoinovou adresu - + Sign &message Po&depiš zprávu - + Prove you control an address Prokaž vlastnictví adresy - + E&xit &Konec - + Quit application Ukončit aplikaci - + &About %1 &O %1 - + Show information about Bitcoin Zobraz informace o Bitcoinu - + About &Qt O &Qt - + Show information about Qt Zobraz informace o Qt - + &Options... &Možnosti... - + Modify configuration options for bitcoin Uprav nastavení Bitcoinu - + Open &Bitcoin Otevři &Bitcoin - + Show the Bitcoin window Zobraz okno Bitcoinu - + &Export... &Export... - + Export the data in the current tab to a file Exportovat data z tohoto panelu do souboru - + &Encrypt Wallet Zaši&fruj peněženku - + Encrypt or decrypt wallet Zašifruj nebo dešifruj peněženku - + &Backup Wallet &Zazálohovat peněženku - + Backup wallet to another location Zazálohuj peněženku na jiné místo - + &Change Passphrase Změň &heslo - + Change the passphrase used for wallet encryption Změň heslo k šifrování peněženky - + &File &Soubor - + &Settings &Nastavení - + &Help Ná&pověda - + Tabs toolbar Panel s listy - + Actions toolbar Panel akcí - + [testnet] [testnet] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - %n aktivní spojení do Bitcoinové sítě%n aktivní spojení do Bitcoinové sítě%n aktivních spojení do Bitcoinové sítě + + %n aktivní spojení do Bitcoinové sítě + %n aktivní spojení do Bitcoinové sítě + %n aktivních spojení do Bitcoinové sítě + - + Downloaded %1 of %2 blocks of transaction history. Staženo %1 z %2 bloků transakční historie. - + Downloaded %1 blocks of transaction history. Staženo %1 bloků transakční historie. - + %n second(s) ago - před vteřinoupřed %n vteřinamipřed %n vteřinami + + před vteřinou + před %n vteřinami + před %n vteřinami + - + %n minute(s) ago - před minutoupřed %n minutamipřed %n minutami + + před minutou + před %n minutami + před %n minutami + - + %n hour(s) ago - před hodinoupřed %n hodinamipřed %n hodinami + + před hodinou + před %n hodinami + před %n hodinami + - + %n day(s) ago - včerapřed %n dnypřed %n dny + + včera + před %n dny + před %n dny + - + Up to date aktuální - + Catching up... Stahuji... - + Last received block was generated %1. Poslední stažený blok byl vygenerován %1. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? Tahle transakce přesahuje velikostní limit. I tak ji ale můžeš poslat, pokud za ni zaplatíš poplatek %1, který půjde uzlům, které tvou transakci zpracují, a navíc tak podpoříš síť. Chceš zaplatit poplatek? - + Sending... Posílám... - + Sent transaction Odeslané transakce - + Incoming transaction Příchozí transakce - + Date: %1 Amount: %2 Type: %3 @@ -577,35 +599,40 @@ Adresa: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> Peněženka je <b>zašifrovaná</b> a momentálně <b>odemčená</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> Peněženka je <b>zašifrovaná</b> a momentálně <b>zamčená</b> - + Backup Wallet Záloha peněženky - + Wallet Data (*.dat) Data peněženky (*.dat) - + Backup Failed Zálohování selhalo - + There was an error trying to save the wallet data to the new location. Při ukládání peněženky na nové místo se přihodila nějaká chyba. + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + + DisplayOptionsPage @@ -621,8 +648,13 @@ Adresa: %4 - Display addresses in transaction list - Ukazovat adresy ve výpisu transakcí + &Display addresses in transaction list + &Ukazovat adresy ve výpisu transakcí + + + + Whether to show Bitcoin addresses in the transaction list + @@ -795,8 +827,8 @@ Adresa: %4 - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - Tvá adresa (např. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + @@ -840,8 +872,8 @@ Adresa: %4 - Copy the currently selected address to the system clipboard - Zkopíruj podpis do systémové schránky + Copy the current signature to the system clipboard + @@ -927,20 +959,12 @@ Adresa: %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Peněženka</span></p></body></html> + + Wallet + Peněženka - + <b>Recent transactions</b> <b>Poslední transakce</b> @@ -973,42 +997,47 @@ p, li { white-space: pre-wrap; } QR kód - + Request Payment Požadovat platbu - + Amount: Částka: - + BTC BTC - + Label: Označení: - + Message: Zpráva: - + &Save As... &Ulož jako... - + + Error encoding URI into QR Code. + + + + Save Image... Ulož obrázek... - + PNG Images (*.png) PNG obrázky (*.png) @@ -1344,54 +1373,62 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date Datum - + Type Typ - + Address Adresa - + Amount Částka - + Open for %n block(s) - Otevřeno pro 1 blokOtevřeno pro %n blokyOtevřeno pro %n bloků + + Otevřeno pro 1 blok + Otevřeno pro %n bloky + Otevřeno pro %n bloků + - + Open until %1 Otřevřeno dokud %1 - + Offline (%1 confirmations) Offline (%1 potvrzení) - + Unconfirmed (%1 of %2 confirmations) Nepotvrzeno (%1 z %2 potvrzení) - + Confirmed (%1 confirmations) Potvrzeno (%1 potvrzení) Mined balance will be available in %n more blocks - Vytěžené mince budou použitelné po jednom blokuVytěžené mince budou použitelné po %n blocíchVytěžené mince budou použitelné po %n blocích + + Vytěžené mince budou použitelné po jednom bloku + Vytěžené mince budou použitelné po %n blocích + Vytěžené mince budou použitelné po %n blocích + @@ -1634,346 +1671,346 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version Verze Bitcoinu - + Usage: Užití: - + Send command to -server or bitcoind Poslat příkaz pro -server nebo bitcoind - + List commands Výpis příkazů - + Get help for a command Získat nápovědu pro příkaz - + Options: Možnosti: - + Specify configuration file (default: bitcoin.conf) Konfigurační soubor (výchozí: bitcoin.conf) - + Specify pid file (default: bitcoind.pid) PID soubor (výchozí: bitcoind.pid) - + Generate coins Generovat mince - + Don't generate coins Negenerovat mince - + Start minimized Startovat minimalizovaně - + Specify data directory Adresář pro data - + Specify connection timeout (in milliseconds) Zadej časový limit spojení (v milisekundách) - + Connect through socks4 proxy Připojovat se přes socks4 proxy - + Allow DNS lookups for addnode and connect Povolit DNS dotazy pro addnode (přidání uzlu) a connect (připojení) - + Listen for connections on <port> (default: 8333 or testnet: 18333) Čekat na spojení na <portu> (výchozí: 8333 nebo testnet: 18333) - + Maintain at most <n> connections to peers (default: 125) Povol nejvýše <n> připojení k uzlům (výchozí: 125) - + Add a node to connect to Přidat uzel, ke kterému se připojit - + Connect only to the specified node Připojovat se pouze k udanému uzlu - + Don't accept connections from outside Nepřijímat připojení zvenčí - + Don't bootstrap list of peers using DNS Nenačítat seznam uzlů z DNS - + Threshold for disconnecting misbehaving peers (default: 100) Práh pro odpojování nesprávně se chovajících uzlů (výchozí: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Doba ve vteřinách, po kterou se nebudou moci nesprávně se chovající uzly znovu připojit (výchozí: 86400) - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) Maximální velikost přijímacího bufferu pro každé spojení, <n>*1000 bytů (výchozí: 10000) - + Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) Maximální velikost odesílacího bufferu pro každé spojení, <n>*1000 bytů (výchozí: 10000) - + Don't attempt to use UPnP to map the listening port Nesnažit se použít UPnP k namapování naslouchacího portu - + Attempt to use UPnP to map the listening port Snažit se použít UPnP k namapování naslouchacího portu - + Fee per kB to add to transactions you send Poplatek za kB, který se přidá ke každé odeslané transakci - + Accept command line and JSON-RPC commands Akceptovat příkazy z příkazové řádky a přes JSON-RPC - + Run in the background as a daemon and accept commands Běžet na pozadí jako démon a akceptovat příkazy - + Use the test network Použít testovací síť (testnet) - + Output extra debugging information Tisknout speciální ladící informace - + Prepend debug output with timestamp Připojit před ladící výstup časové razítko - + Send trace/debug info to console instead of debug.log file Posílat stopovací/ladící informace do konzole místo do souboru debug.log - + Send trace/debug info to debugger Posílat stopovací/ladící informace do debuggeru - + Username for JSON-RPC connections Uživatelské jméno pro JSON-RPC spojení - + Password for JSON-RPC connections Heslo pro JSON-RPC spojení - + Listen for JSON-RPC connections on <port> (default: 8332) Čekat na JSON-RPC spojení na <portu> (výchozí: 8332) - + Allow JSON-RPC connections from specified IP address Povolit JSON-RPC spojení ze specifikované IP adresy - + Send commands to node running on <ip> (default: 127.0.0.1) Posílat příkazy uzlu běžícím na <ip> (výchozí: 127.0.0.1) - + Set key pool size to <n> (default: 100) Nastavit zásobník klíčů na velikost <n> (výchozí: 100) - + Rescan the block chain for missing wallet transactions Přeskenovat řetězec bloků na chybějící transakce tvé pěněženky - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) Možnosti SSL: (viz instrukce nastavení SSL v Bitcoin Wiki) - + Use OpenSSL (https) for JSON-RPC connections Použít OpenSSL (https) pro JSON-RPC spojení - + Server certificate file (default: server.cert) Soubor se serverovým certifikátem (výchozí: server.cert) - + Server private key (default: server.pem) Soubor se serverovým soukromým klíčem (výchozí: server.pem) - + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) Akceptovatelné šifry (výchozí: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - + This help message Tato nápověda - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. Nedaří se mi získat zámek na datový adresář %s. Bitcoin pravděpodobně už jednou běží. - + Loading addresses... Načítám adresy... - + Error loading addr.dat Chyba při načítání addr.dat - + Error loading blkindex.dat Chyba při načítání blkindex.dat - + Error loading wallet.dat: Wallet corrupted Chyba při načítání wallet.dat: peněženka je poškozená - + Error loading wallet.dat: Wallet requires newer version of Bitcoin Chyba při načítání wallet.dat: peněženka vyžaduje novější verzi Bitcoinu - + Wallet needed to be rewritten: restart Bitcoin to complete Soubor s peněženkou potřeboval přepsat: restartuj Bitcoin, aby se operace dokončila - + Error loading wallet.dat Chyba při načítání wallet.dat - + Loading block index... Načítám index bloků... - + Loading wallet... Načítám peněženku... - + Rescanning... Přeskenovávám... - + Done loading Načítání dokončeno - + Invalid -proxy address Neplatná -proxy adresa - + Invalid amount for -paytxfee=<amount> Neplatná částka pro -paytxfee=<částka> - + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. Upozornění: -paytxfee je nastaveno velmi vysoko. Toto je transakční poplatek, který zaplatíš za každou poslanou transakci. - + Error: CreateThread(StartNode) failed Chyba: Selhalo CreateThread(StartNode) - + Warning: Disk space is low Upozornění: Na disku je málo místa - + Unable to bind to port %d on this computer. Bitcoin is probably already running. Nedaří se mi připojit na port %d na tomhle počítači. Bitcoin už pravděpodobně jednou běží. - + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. Upozornění: Zkontroluj, že máš v počítači správně nastavený datum a čas. Pokud jsou nastaveny špatně, Bitcoin nebude fungovat správně. - + beta beta - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_da.ts b/src/qt/locale/bitcoin_da.ts index 1a7f916ae04..9b909d8b6b8 100644 --- a/src/qt/locale/bitcoin_da.ts +++ b/src/qt/locale/bitcoin_da.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -21,7 +23,7 @@ This is experimental software. Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - + @@ -61,31 +63,31 @@ This product includes software developed by the OpenSSL Project for use in the O &Copy to Clipboard &Kopier til Udklipsholder - - - Show &QR Code - - - - - Sign a message to prove you own this address - - - - - &Sign Message - - Delete the currently selected address from the list. Only sending addresses can be deleted. Slet den valgte adresse fra listen. Kun adresser brugt til afsendelse kan slettes. + + + Show &QR Code + + &Delete &Slet + + + Sign a message to prove you own this address + + + + + &Sign Message + + Copy address @@ -99,12 +101,12 @@ This product includes software developed by the OpenSSL Project for use in the O Edit - + Delete - + @@ -130,17 +132,17 @@ This product includes software developed by the OpenSSL Project for use in the O AddressTableModel - + Label Etiket - + Address Adresse - + (no label) (ingen etiket) @@ -231,16 +233,11 @@ Er du sikker på at du ønsker at kryptere din tegnebog? Wallet encrypted Tegnebog krypteret - - - Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - - Warning: The Caps Lock key is on. - + @@ -255,6 +252,11 @@ Er du sikker på at du ønsker at kryptere din tegnebog? Wallet encryption failed due to an internal error. Your wallet was not encrypted. Tegnebogskryptering mislykkedes på grund af en intern fejl. Din tegnebog blev ikke krypteret. + + + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. + Bitcoin will close now to finish the encryption process. Husk, at kryptere din tegnebog vil ikke fuldt ud beskytte dine bitcoins mod at blive stjålet af malware på din computer. + @@ -287,278 +289,293 @@ Er du sikker på at du ønsker at kryptere din tegnebog? BitcoinGUI - + Bitcoin Wallet Bitcoin Tegnebog - - + + Synchronizing with network... Synkroniserer med netværk ... - + Block chain synchronization in progress Blokkæde synkronisering i gang - + &Overview &Oversigt - + Show general overview of wallet Vis generel oversigt over tegnebog - + &Transactions &Transaktioner - + Browse transaction history Gennemse transaktionshistorik - + &Address Book &Adressebog - + Edit the list of stored addresses and labels Rediger listen over gemte adresser og etiketter - + &Receive coins &Modtag coins - + Show the list of addresses for receiving payments Vis listen over adresser for at modtage betalinger - + &Send coins &Send coins - + Send coins to a bitcoin address Send coins til en bitcoinadresse - + Sign &message - + - + Prove you control an address - + - + E&xit &Luk - + Quit application Afslut program - + &About %1 &Om %1 - + Show information about Bitcoin Vis oplysninger om Bitcoin - - About &Qt - - - - - Show information about Qt - - - - + &Options... &Indstillinger ... - + Modify configuration options for bitcoin Rediger konfigurationsindstillinger af bitcoin - + Open &Bitcoin Åbn &Bitcoin - + Show the Bitcoin window Vis Bitcoinvinduet - + &Export... &Eksporter... - - Export the data in the current tab to a file - - - - + &Encrypt Wallet &Kryptér tegnebog - + Encrypt or decrypt wallet Kryptér eller dekryptér tegnebog - - &Backup Wallet - - - - - Backup wallet to another location - - - - + &Change Passphrase &Skift adgangskode - + Change the passphrase used for wallet encryption Skift kodeord anvendt til tegnebogskryptering - + + About &Qt + Om &Qt + + + + Show information about Qt + Vis oplysninger om Qt + + + + Export the data in the current tab to a file + + + + + &Backup Wallet + &Backup tegnebog + + + + Backup wallet to another location + + + + &File &Fil - + &Settings &Indstillinger - + &Help &Hjælp - + Tabs toolbar Faneværktøjslinje - + Actions toolbar Handlingsværktøjslinje - + [testnet] [testnet] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - %n aktiv(e) forbindelse(r) til Bitcoinnetværket%n aktiv(e) forbindelse(r) til Bitcoinnetværket + + %n aktiv(e) forbindelse(r) til Bitcoinnetværket + %n aktiv(e) forbindelse(r) til Bitcoinnetværket + - + Downloaded %1 of %2 blocks of transaction history. Downloadet %1 af %2 blokke af transaktionshistorie. - + Downloaded %1 blocks of transaction history. Downloadet %1 blokke af transaktionshistorie. - + %n second(s) ago - %n sekund(er) siden%n sekund(er) siden + + %n sekund(er) siden + %n sekund(er) siden + - + %n minute(s) ago - %n minut(ter) siden%n minut(ter) siden + + %n minut(ter) siden + %n minut(ter) siden + - + %n hour(s) ago - %n time(r) siden%n time(r) siden + + %n time(r) siden + %n time(r) siden + - + %n day(s) ago - %n dag(e) siden%n dag(e) siden + + %n dag(e) siden + %n dag(e) siden + - + Up to date Opdateret - + Catching up... Indhenter... - + Last received block was generated %1. Sidst modtagne blok blev genereret %1. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? Denne transaktion er over størrelsesbegrænsningen. Du kan stadig sende den for et gebyr på %1 som går til de noder der behandler din transaktion, og som hjælper med at støtte netværket. Ønsker du at betale gebyret? - + Sending... Sender... - + Sent transaction Afsendt transaktion - + Incoming transaction Indgående transaktion - + Date: %1 Amount: %2 Type: %3 @@ -571,34 +588,39 @@ Adresse: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> Tegnebog er <b>krypteret</b> og i øjeblikket <b>ulåst</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> Tegnebog er <b>krypteret</b> og i øjeblikket <b>låst</b> - + Backup Wallet - + - + Wallet Data (*.dat) - + - + Backup Failed - + - + There was an error trying to save the wallet data to the new location. - + + + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + @@ -615,8 +637,13 @@ Adresse: %4 - Display addresses in transaction list - Vis adresser i transaktionensliste + &Display addresses in transaction list + &Vis adresser i transaktionensliste + + + + Whether to show Bitcoin addresses in the transaction list + @@ -762,7 +789,7 @@ Adresse: %4 Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. - + @@ -772,7 +799,7 @@ Adresse: %4 Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. - + @@ -780,17 +807,17 @@ Adresse: %4 Message - + You can sign messages with your addresses to prove you own them. Be careful not to sign anything vague, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - + - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - Adresse som betalingen skal sendes til (f.eks. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + @@ -815,27 +842,27 @@ Adresse: %4 Enter the message you want to sign here - + Click "Sign Message" to get signature - + Sign a message to prove you own this address - + &Sign Message - + - Copy the currently selected address to the system clipboard - Kopier den valgte adresse til systemets udklipsholder + Copy the current signature to the system clipboard + @@ -847,22 +874,22 @@ Adresse: %4 Error signing - + %1 is not a valid address. - + Private key for %1 is not available. - + Sign failed - + @@ -921,20 +948,12 @@ Adresse: %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> + + Wallet + - + <b>Recent transactions</b> <b>Nyeste transaktioner</b> @@ -964,47 +983,52 @@ p, li { white-space: pre-wrap; } QR Code - + - + Request Payment - + - + Amount: - + - + BTC - + - + Label: - + - + Message: Besked: - + &Save As... - + - + + Error encoding URI into QR Code. + + + + Save Image... - + - + PNG Images (*.png) - + @@ -1031,16 +1055,16 @@ p, li { white-space: pre-wrap; } &Add recipient... &Tilføj modtager... - - - Remove all transaction fields - - Clear all Ryd alle + + + Remove all transaction fields + + Balance: @@ -1314,7 +1338,7 @@ p, li { white-space: pre-wrap; } Transaction ID: - + @@ -1338,54 +1362,60 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date Dato - + Type Type - + Address Adresse - + Amount Beløb - + Open for %n block(s) - Åben for %n blok(ke)Åben for %n blok(ke) + + Åben for %n blok(ke) + Åben for %n blok(ke) + - + Open until %1 Åben indtil %1 - + Offline (%1 confirmations) Offline (%1 bekræftelser) - + Unconfirmed (%1 of %2 confirmations) Ubekræftet (%1 af %2 bekræftelser) - + Confirmed (%1 confirmations) Bekræftet (%1 bekræftelser) Mined balance will be available in %n more blocks - Minerede balance vil være tilgængelig om %n blok(ke)Minerede balance vil være tilgængelig om %n blok(ke) + + Minerede balance vil være tilgængelig om %n blok(ke) + Minerede balance vil være tilgængelig om %n blok(ke) + @@ -1405,7 +1435,7 @@ p, li { white-space: pre-wrap; } Received from - + @@ -1539,7 +1569,7 @@ p, li { white-space: pre-wrap; } Copy amount - + @@ -1628,377 +1658,377 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version Bitcoinversion - + Usage: Anvendelse: - + Send command to -server or bitcoind Send kommando til -server eller bitcoind - + List commands Liste over kommandoer - + Get help for a command Få hjælp til en kommando - + Options: Indstillinger: - + Specify configuration file (default: bitcoin.conf) Angiv konfigurationsfil (standard: bitcoin.conf) - + Specify pid file (default: bitcoind.pid) Angiv pid-fil (default: bitcoind.pid) - + Generate coins Generér coins - + Don't generate coins Generér ikke coins - + Start minimized Start minimeret - + Specify data directory Angiv databibliotek - + Specify connection timeout (in milliseconds) Angiv tilslutningstimeout (i millisekunder) - + Connect through socks4 proxy Tilslut via SOCKS4 proxy - + Allow DNS lookups for addnode and connect Tillad DNS-opslag for addnode og connect - + Listen for connections on <port> (default: 8333 or testnet: 18333) - + - + Maintain at most <n> connections to peers (default: 125) - + - + Add a node to connect to Tilføj en node til at forbinde til - + Connect only to the specified node Tilslut kun til den angivne node - + Don't accept connections from outside Acceptér ikke forbindelser udefra - - - Don't bootstrap list of peers using DNS - - - - - Threshold for disconnecting misbehaving peers (default: 100) - - - - - Number of seconds to keep misbehaving peers from reconnecting (default: 86400) - - - Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) - + Don't bootstrap list of peers using DNS + - Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) - + Threshold for disconnecting misbehaving peers (default: 100) + + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) + + + + + Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) + + + + + Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) + + + + Don't attempt to use UPnP to map the listening port Forsøg ikke at bruge UPnP til at konfigurere den lyttende port - + Attempt to use UPnP to map the listening port Forsøg at bruge UPnP til at kofnigurere den lyttende port - + Fee per kB to add to transactions you send - + - + Accept command line and JSON-RPC commands Accepter kommandolinje- og JSON-RPC-kommandoer - + Run in the background as a daemon and accept commands Kør i baggrunden som en service, og acceptér kommandoer - + Use the test network Brug test-netværket - + Output extra debugging information - + - + Prepend debug output with timestamp - + - + Send trace/debug info to console instead of debug.log file - + - + Send trace/debug info to debugger - + - + Username for JSON-RPC connections Brugernavn til JSON-RPC-forbindelser - + Password for JSON-RPC connections Password til JSON-RPC-forbindelser - + Listen for JSON-RPC connections on <port> (default: 8332) Lyt til JSON-RPC-forbindelser på <port> (standard: 8332) - + Allow JSON-RPC connections from specified IP address Tillad JSON-RPC-forbindelser fra bestemt IP-adresse - + Send commands to node running on <ip> (default: 127.0.0.1) Send kommandoer til node, der kører på <ip> (standard: 127.0.0.1) - + Set key pool size to <n> (default: 100) Sæt nøglepoolstørrelse til <n> (standard: 100) - + Rescan the block chain for missing wallet transactions Gennemsøg blokkæden for manglende tegnebogstransaktioner - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) SSL-indstillinger: (se Bitcoin Wiki for SSL opsætningsinstruktioner) - + Use OpenSSL (https) for JSON-RPC connections Brug OpenSSL (https) for JSON-RPC-forbindelser - + Server certificate file (default: server.cert) Servercertifikat-fil (standard: server.cert) - + Server private key (default: server.pem) Server private nøgle (standard: server.pem) - + + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. + Kan låse data-biblioteket %s. Bitcoin kører sikkert allerede. + + + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) Acceptabele ciphers (standard: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - - This help message - Denne hjælpebesked - - - - - Cannot obtain a lock on data directory %s. Bitcoin is probably already running. - Kan låse data-biblioteket %s. Bitcoin kører sikkert allerede. - - - + Loading addresses... Indlæser adresser... - Error loading addr.dat - - - - - Error loading blkindex.dat - - - - - Error loading wallet.dat: Wallet corrupted - - - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin - + This help message + Denne hjælpebesked + - Wallet needed to be rewritten: restart Bitcoin to complete - - - - - Error loading wallet.dat - - - - Loading block index... Indlæser blok-indeks... - + Loading wallet... Indlæser tegnebog... - + Rescanning... Genindlæser... + + + Error loading addr.dat + Fejl ved indlæsning af addr.dat + + + + Error loading blkindex.dat + Fejl ved indlæsning af blkindex.dat + + Error loading wallet.dat: Wallet corrupted + Fejl ved indlæsning af wallet.dat: Tegnebog ødelagt + + + Done loading Indlæsning gennemført + Error loading wallet.dat: Wallet requires newer version of Bitcoin + Fejl ved indlæsning af wallet.dat: Tegnebog kræver en nyere version af Bitcoin + + + Invalid -proxy address Ugyldig -proxy adresse + Wallet needed to be rewritten: restart Bitcoin to complete + + + + Invalid amount for -paytxfee=<amount> Ugyldigt beløb for -paytxfee=<amount> + Error loading wallet.dat + Fejl ved indlæsning af wallet.dat + + + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. Advarsel:-paytxfee er sat meget højt. Dette er det gebyr du vil betale, hvis du sender en transaktion. - + Error: CreateThread(StartNode) failed Fejl: CreateThread(StartNode) mislykkedes - + Warning: Disk space is low Advarsel: Diskplads er lav - + Unable to bind to port %d on this computer. Bitcoin is probably already running. Kunne ikke binde sig til port %d på denne computer. Bitcoin kører sikkert allerede. - + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. Advarsel: Undersøg venligst at din computers dato og klokkeslet er korrekt indstillet. Hvis der er fejl i disse vil Bitcoin ikke fungere korrekt. - + beta beta - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_de.ts b/src/qt/locale/bitcoin_de.ts index 42cb17d64c8..d133e714311 100644 --- a/src/qt/locale/bitcoin_de.ts +++ b/src/qt/locale/bitcoin_de.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -67,11 +69,21 @@ Dieses Produkt enthält Software, die vom OpenSSL Projekt zur Verwendung im Open &Copy to Clipboard In die Zwischenablage &kopieren + + + Delete the currently selected address from the list. Only sending addresses can be deleted. + Die ausgewählte Adresse aus der Liste entfernen. Sie können nur Zahlungsadressen entfernen. + Show &QR Code &QR-Code anzeigen + + + &Delete + &Löschen + Sign a message to prove you own this address @@ -82,16 +94,6 @@ Dieses Produkt enthält Software, die vom OpenSSL Projekt zur Verwendung im Open &Sign Message Nachricht &signieren - - - Delete the currently selected address from the list. Only sending addresses can be deleted. - Die ausgewählte Adresse aus der Liste entfernen. Sie können nur Zahlungsadressen entfernen. - - - - &Delete - &Löschen - Copy address @@ -136,17 +138,17 @@ Dieses Produkt enthält Software, die vom OpenSSL Projekt zur Verwendung im Open AddressTableModel - + Label Bezeichnung - + Address Adresse - + (no label) (keine Bezeichnung) @@ -236,11 +238,6 @@ Are you sure you wish to encrypt your wallet? Wallet encrypted Brieftasche verschlüsselt - - - Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - Bitcoin wird jetzt beendet, um den Verschlüsselungsprozess abzuschließen. Bitte beachten Sie, dass die Verschlüsselung Ihrer Brieftasche nicht vollständig vor Diebstahl Ihrer Bitcoins durch Schadsoftware schützt, die Ihren Computer befällt. - @@ -260,6 +257,11 @@ Are you sure you wish to encrypt your wallet? Wallet encryption failed due to an internal error. Your wallet was not encrypted. Die Verschlüsselung der Brieftasche ist aufgrund eines internen Fehlers fehlgeschlagen. Ihre Brieftasche wurde nicht verschlüsselt. + + + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. + Bitcoin wird jetzt beendet, um den Verschlüsselungsprozess abzuschließen. Bitte beachten Sie, dass die Verschlüsselung Ihrer Brieftasche nicht vollständig vor Diebstahl Ihrer Bitcoins durch Schadsoftware schützt, die Ihren Computer befällt. + @@ -292,278 +294,293 @@ Are you sure you wish to encrypt your wallet? BitcoinGUI - + Bitcoin Wallet Bitcoin-Brieftasche - - + + Synchronizing with network... Synchronisiere mit Netzwerk... - + Block chain synchronization in progress Synchronisation der Blockkette wird durchgeführt - + &Overview &Übersicht - + Show general overview of wallet Allgemeine Übersicht der Brieftasche anzeigen - + &Transactions &Transaktionen - + Browse transaction history Transaktionsverlauf durchsehen - + &Address Book &Adressbuch - + Edit the list of stored addresses and labels Liste der gespeicherten Zahlungsadressen und Bezeichnungen bearbeiten - + &Receive coins Bitcoins &empfangen - + Show the list of addresses for receiving payments Liste der Empfangsadressen anzeigen - + &Send coins Bitcoins &überweisen - + Send coins to a bitcoin address Bitcoins an eine Bitcoin-Adresse überweisen - + Sign &message &Nachricht signieren... - + Prove you control an address Beweisen Sie die Kontrolle einer Adresse - + E&xit &Beenden - + Quit application Anwendung beenden - + &About %1 &Über %1 - + Show information about Bitcoin Informationen über Bitcoin anzeigen - - About &Qt - Über &Qt - - - - Show information about Qt - Informationen über Qt anzeigen - - - + &Options... &Erweiterte Einstellungen... - + Modify configuration options for bitcoin Erweiterte Bitcoin-Einstellungen ändern - + Open &Bitcoin &Bitcoin öffnen - + Show the Bitcoin window Bitcoin-Fenster anzeigen - + &Export... &Exportieren nach... - - Export the data in the current tab to a file - Daten der aktuellen Ansicht in eine Datei exportieren - - - + &Encrypt Wallet Brieftasche &verschlüsseln... - + Encrypt or decrypt wallet Brieftasche ent- oder verschlüsseln - - &Backup Wallet - Brieftasche &sichern... - - - - Backup wallet to another location - Eine Sicherungskopie der Brieftasche erstellen und abspeichern - - - + &Change Passphrase Passphrase &ändern... - + Change the passphrase used for wallet encryption Ändert die Passphrase, die für die Verschlüsselung der Brieftasche benutzt wird - + + About &Qt + Über &Qt + + + + Show information about Qt + Informationen über Qt anzeigen + + + + Export the data in the current tab to a file + Daten der aktuellen Ansicht in eine Datei exportieren + + + + &Backup Wallet + Brieftasche &sichern... + + + + Backup wallet to another location + Eine Sicherungskopie der Brieftasche erstellen und abspeichern + + + &File &Datei - + &Settings &Einstellungen - + &Help &Hilfe - + Tabs toolbar Registerkarten-Leiste - + Actions toolbar Aktionen-Werkzeugleiste - + [testnet] [testnet] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - %n aktive Verbindung zum Bitcoin-Netzwerk%n aktive Verbindungen zum Bitcoin-Netzwerk + + %n aktive Verbindung zum Bitcoin-Netzwerk + %n aktive Verbindungen zum Bitcoin-Netzwerk + - + Downloaded %1 of %2 blocks of transaction history. %1 von %2 Blöcken des Transaktionsverlaufs heruntergeladen. - + Downloaded %1 blocks of transaction history. %1 Blöcke des Transaktionsverlaufs heruntergeladen. - + %n second(s) ago - vor %n Sekundevor %n Sekunden + + vor %n Sekunde + vor %n Sekunden + - + %n minute(s) ago - vor %n Minutevor %n Minuten + + vor %n Minute + vor %n Minuten + - + %n hour(s) ago - vor %n Stundevor %n Stunden + + vor %n Stunde + vor %n Stunden + - + %n day(s) ago - vor %n Tagvor %n Tagen + + vor %n Tag + vor %n Tagen + - + Up to date Auf aktuellem Stand - + Catching up... Hole auf... - + Last received block was generated %1. Der letzte empfangene Block wurde %1 generiert. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? Die Transaktion übersteigt das Größenlimit. Sie können sie trotzdem senden, wenn Sie eine zusätzliche Transaktionsgebühr in Höhe von %1 zahlen. Diese wird an die Knoten verteilt, die Ihre Transaktion bearbeiten und unterstützt damit das Bitcoin-Netzwerk.<br><br>Möchten Sie die Gebühr bezahlen? - + Sending... Transaktionsgebühr bestätigen - + Sent transaction Gesendete Transaktion - + Incoming transaction Eingehende Transaktion - + Date: %1 Amount: %2 Type: %3 @@ -575,35 +592,40 @@ Typ: %3 Adresse: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> Brieftasche ist <b>verschlüsselt</b> und aktuell <b>entsperrt</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> Brieftasche ist <b>verschlüsselt</b> und aktuell <b>gesperrt</b> - + Backup Wallet Brieftasche sichern - + Wallet Data (*.dat) Brieftaschen-Datei (*.dat) - + Backup Failed Sicherung der Brieftasche fehlgeschlagen - + There was an error trying to save the wallet data to the new location. Fehler beim abspeichern der Sicherungskopie der Brieftasche. + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + + DisplayOptionsPage @@ -619,8 +641,13 @@ Adresse: %4 - Display addresses in transaction list - Adressen in der Transaktionsliste anzeigen + &Display addresses in transaction list + &Adressen in der Transaktionsliste anzeigen + + + + Whether to show Bitcoin addresses in the transaction list + @@ -793,8 +820,8 @@ Adresse: %4 - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - Die Adresse mit der die Nachricht signiert wird (z.B. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + @@ -838,8 +865,8 @@ Adresse: %4 - Copy the currently selected address to the system clipboard - Aktuelle Signatur in die Zwischenablage kopieren + Copy the current signature to the system clipboard + @@ -925,20 +952,12 @@ Adresse: %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Brieftasche</span></p></body></html> + + Wallet + Brieftasche - + <b>Recent transactions</b> <b>Letzte Transaktionen</b> @@ -971,42 +990,47 @@ p, li { white-space: pre-wrap; } QR-Code - + Request Payment Zahlung anfordern - + Amount: Betrag: - + BTC BTC - + Label: Bezeichnung: - + Message: Nachricht: - + &Save As... &Speichern unter... - + + Error encoding URI into QR Code. + + + + Save Image... QR-Code abspeichern - + PNG Images (*.png) PNG Bild (*.png) @@ -1035,16 +1059,16 @@ p, li { white-space: pre-wrap; } &Add recipient... &Empfänger hinzufügen - - - Remove all transaction fields - Alle Überweisungsfelder zurücksetzen - Clear all Zurücksetzen + + + Remove all transaction fields + Alle Überweisungsfelder zurücksetzen + Balance: @@ -1342,54 +1366,60 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date Datum - + Type Typ - + Address Adresse - + Amount Betrag - + Open for %n block(s) - Offen für %n BlockOffen für %n Blöcke + + Offen für %n Block + Offen für %n Blöcke + - + Open until %1 Offen bis %1 - + Offline (%1 confirmations) Nicht verbunden (%1 Bestätigungen) - + Unconfirmed (%1 of %2 confirmations) Unbestätigt (%1 von %2 Bestätigungen) - + Confirmed (%1 confirmations) Bestätigt (%1 Bestätigungen) Mined balance will be available in %n more blocks - Der erarbeitete Betrag wird in %n Block verfügbar seinDer erarbeitete Betrag wird in %n Blöcken verfügbar sein + + Der erarbeitete Betrag wird in %n Block verfügbar sein + Der erarbeitete Betrag wird in %n Blöcken verfügbar sein + @@ -1632,346 +1662,346 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version Bitcoin Version - + Usage: Verwendung: - + Send command to -server or bitcoind Befehl an -server oder bitcoind senden - + List commands Befehle auflisten - + Get help for a command Hilfe zu einem Befehl erhalten - + Options: Einstellungen: - + Specify configuration file (default: bitcoin.conf) Konfigurationsdatei angeben (Standard: bitcoin.conf) - + Specify pid file (default: bitcoind.pid) PID-Datei angeben (Standard: bitcoind.pid) - + Generate coins Bitcoins generieren - + Don't generate coins Keine Bitcoins generieren - + Start minimized Minimiert starten - + Specify data directory Datenverzeichnis angeben - + Specify connection timeout (in milliseconds) Verbindungstimeout angeben (in Millisekunden) - + Connect through socks4 proxy Über einen SOCKS4-Proxy verbinden: - + Allow DNS lookups for addnode and connect Erlaube DNS Namensauflösung für addnode und connect - + Listen for connections on <port> (default: 8333 or testnet: 18333) Verbindungen erwarten an <port> (Standard: 8333 oder test-Netzwerk: 18333) - + Maintain at most <n> connections to peers (default: 125) Maximal <n> Verbindungen zu Peers aufrechterhalten (Standard: 125) - + Add a node to connect to Einen Knoten hinzufügen, mit dem sich verbunden werden soll - + Connect only to the specified node Nur mit dem angegebenem Knoten verbinden - + Don't accept connections from outside Keine Verbindungen von außen akzeptieren - + Don't bootstrap list of peers using DNS Keine Peerliste durch die Nutzung von DNS erzeugen - + Threshold for disconnecting misbehaving peers (default: 100) Schwellenwert, um Verbindungen zu sich nicht konform verhaltenden Peers zu beenden (Standard: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Anzahl Sekunden, während denen sich nicht konform verhaltenden Peers die Wiederverbindung verweigert wird (Standard: 86400) - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) Maximale Größe des Empfangspuffers pro Verbindung, <n>*1000 Bytes (Standard: 10000) - + Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) Maximale Größe des Sendepuffers pro Verbindung, <n>*1000 Bytes (Standard: 10000) - + Don't attempt to use UPnP to map the listening port Nicht versuchen UPnP zu verwenden, um den abgehörten Port weiterzuleiten - + Attempt to use UPnP to map the listening port Versuchen UPnP zu verwenden, um den abgehörten Port weiterzuleiten - + Fee per kB to add to transactions you send Gebühr pro kB, die gesendeten Transaktionen hinzugefügt wird - + Accept command line and JSON-RPC commands Kommandozeilenbefehle und JSON-RPC Befehle annehmen - + Run in the background as a daemon and accept commands Als Hintergrunddienst starten und Befehle akzeptieren - + Use the test network Das test-Netzwerk verwenden - + Output extra debugging information Ausgabe zusätzlicher Debugging-Informationen - + Prepend debug output with timestamp Der Debug-Ausgabe einen Zeitstempel voranstellen - + Send trace/debug info to console instead of debug.log file Rückverfolgungs- und Debug-Informationen an die Konsole senden anstatt sie in die debug.log Datei zu schreiben - + Send trace/debug info to debugger Rückverfolgungs- und Debug-Informationen an den Debugger senden - + Username for JSON-RPC connections Benutzername für JSON-RPC Verbindungen - + Password for JSON-RPC connections Passwort für JSON-RPC Verbindungen - + Listen for JSON-RPC connections on <port> (default: 8332) JSON-RPC Verbindungen erwarten an <port> (Standard: 8332) - + Allow JSON-RPC connections from specified IP address JSON-RPC Verbindungen von der angegebenen IP-Adresse erlauben - + Send commands to node running on <ip> (default: 127.0.0.1) Sende Befehle an Knoten <ip> (Standard: 127.0.0.1) - + Set key pool size to <n> (default: 100) Setze Größe des Schlüsselpools auf <n> (Standard: 100) - + Rescan the block chain for missing wallet transactions Blockkette erneut nach fehlenden Transaktionen der Brieftasche durchsuchen - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) SSL Einstellungen: (siehe Bitcoin-Wiki für SSL Installationsanweisungen) - + Use OpenSSL (https) for JSON-RPC connections OpenSSL (https) für JSON-RPC Verbindungen benutzen - + Server certificate file (default: server.cert) Server Zertifikat (Standard: server.cert) - + Server private key (default: server.pem) Privater Serverschlüssel (Standard: server.pem) - - Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - Akzeptierte Chiffren (Standard: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - - - - This help message - Dieser Hilfetext - - - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. Konnte das Datenverzeichnis %s nicht sperren. Evtl. wurde Bitcoin bereits gestartet. - + + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) + Akzeptierte Chiffren (Standard: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) + + + Loading addresses... Lade Adressen... - Error loading addr.dat - Fehler beim Laden von addr.dat - - - - Error loading blkindex.dat - Fehler beim Laden von blkindex.dat - - - - Error loading wallet.dat: Wallet corrupted - Fehler beim Laden von wallet.dat: Brieftasche beschädigt - - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin - Fehler beim Laden von wallet.dat: Brieftasche benötigt neuere Version von Bitcoin + This help message + Dieser Hilfetext - Wallet needed to be rewritten: restart Bitcoin to complete - Brieftasche muss neu geschrieben werden: starten Sie Bitcoin zur Fertigstellung neu - - - - Error loading wallet.dat - Fehler beim Laden von wallet.dat (Brieftasche) - - - Loading block index... Lade Blockindex... - + Loading wallet... Lade Geldbörse... - + Rescanning... Durchsuche erneut... + + + Error loading addr.dat + Fehler beim Laden von addr.dat + + + + Error loading blkindex.dat + Fehler beim Laden von blkindex.dat + + Error loading wallet.dat: Wallet corrupted + Fehler beim Laden von wallet.dat: Brieftasche beschädigt + + + Done loading Laden abgeschlossen + Error loading wallet.dat: Wallet requires newer version of Bitcoin + Fehler beim Laden von wallet.dat: Brieftasche benötigt neuere Version von Bitcoin + + + Invalid -proxy address Fehlerhafte Proxy-Adresse + Wallet needed to be rewritten: restart Bitcoin to complete + Brieftasche muss neu geschrieben werden: starten Sie Bitcoin zur Fertigstellung neu + + + Invalid amount for -paytxfee=<amount> Ungültige Angabe für -paytxfee=<Betrag> + Error loading wallet.dat + Fehler beim Laden von wallet.dat (Brieftasche) + + + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. Warnung: -paytxfee ist auf einen sehr hohen Wert gesetzt. Dies ist die Gebühr die beim Senden einer Transaktion fällig wird. - + Error: CreateThread(StartNode) failed Fehler: CreateThread(StartNode) fehlgeschlagen - + Warning: Disk space is low Warnung: Festplattenplatz wird knapp - + Unable to bind to port %d on this computer. Bitcoin is probably already running. Fehler beim registrieren des Ports %d auf diesem Computer. Evtl. wurde Bitcoin bereits gestartet. - + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. Warnung: Bitte korrigieren Sie die Datums- und Uhrzeiteinstellungen Ihres Computers, da Bitcoin ansonsten nicht ordnungsgemäß funktionieren wird. - + beta Beta - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_en.ts b/src/qt/locale/bitcoin_en.ts index d83d4bc2d1d..7648e0dd1d2 100644 --- a/src/qt/locale/bitcoin_en.ts +++ b/src/qt/locale/bitcoin_en.ts @@ -63,11 +63,21 @@ This product includes software developed by the OpenSSL Project for use in the O &Copy to Clipboard + + + Delete the currently selected address from the list. Only sending addresses can be deleted. + + Show &QR Code + + + &Delete + + Sign a message to prove you own this address @@ -78,16 +88,6 @@ This product includes software developed by the OpenSSL Project for use in the O &Sign Message - - - Delete the currently selected address from the list. Only sending addresses can be deleted. - - - - - &Delete - - Copy address @@ -132,17 +132,17 @@ This product includes software developed by the OpenSSL Project for use in the O AddressTableModel - + Label - + Address - + (no label) @@ -232,11 +232,6 @@ Are you sure you wish to encrypt your wallet? Wallet encrypted - - - Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - - @@ -256,6 +251,11 @@ Are you sure you wish to encrypt your wallet? Wallet encryption failed due to an internal error. Your wallet was not encrypted. + + + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. + + @@ -288,293 +288,293 @@ Are you sure you wish to encrypt your wallet? BitcoinGUI - + Bitcoin Wallet - - + + Synchronizing with network... - + Block chain synchronization in progress - + &Overview - + Show general overview of wallet - + &Transactions - + Browse transaction history - + &Address Book - + Edit the list of stored addresses and labels - + &Receive coins - + Show the list of addresses for receiving payments - + &Send coins - + Send coins to a bitcoin address - + Sign &message - + Prove you control an address - + E&xit - + Quit application - + &About %1 - + Show information about Bitcoin - - About &Qt - - - - - Show information about Qt - - - - + &Options... - + Modify configuration options for bitcoin - + Open &Bitcoin - + Show the Bitcoin window - + &Export... - - Export the data in the current tab to a file - - - - + &Encrypt Wallet - + Encrypt or decrypt wallet - - &Backup Wallet - - - - - Backup wallet to another location - - - - + &Change Passphrase - + Change the passphrase used for wallet encryption - + + About &Qt + + + + + Show information about Qt + + + + + Export the data in the current tab to a file + + + + + &Backup Wallet + + + + + Backup wallet to another location + + + + &File - + &Settings - + &Help - + Tabs toolbar - + Actions toolbar - + [testnet] - + bitcoin-qt - + %n active connection(s) to Bitcoin network - + %n active connection to Bitcoin network %n active connections to Bitcoin network - + Downloaded %1 of %2 blocks of transaction history. - + Downloaded %1 blocks of transaction history. - + %n second(s) ago - + %n second ago %n seconds ago - + %n minute(s) ago - + %n minute ago %n minutes ago - + %n hour(s) ago - + %n hour ago %n hours ago - + %n day(s) ago - + %n day ago %n days ago - + Up to date - + Catching up... - + Last received block was generated %1. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? - + Sending... - + Sent transaction - + Incoming transaction - + Date: %1 Amount: %2 Type: %3 @@ -583,35 +583,40 @@ Address: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> - + Backup Wallet - + Wallet Data (*.dat) - + Backup Failed - + There was an error trying to save the wallet data to the new location. + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + + DisplayOptionsPage @@ -627,7 +632,12 @@ Address: %4 - Display addresses in transaction list + &Display addresses in transaction list + + + + + Whether to show Bitcoin addresses in the transaction list @@ -801,7 +811,7 @@ Address: %4 - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) @@ -846,7 +856,7 @@ Address: %4 - Copy the currently selected address to the system clipboard + Copy the current signature to the system clipboard @@ -933,16 +943,12 @@ Address: %4 - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> + + Wallet - + <b>Recent transactions</b> @@ -975,42 +981,47 @@ p, li { white-space: pre-wrap; } - + Request Payment - + Amount: - + BTC - + Label: - + Message: - + &Save As... - + + Error encoding URI into QR Code. + + + + Save Image... - + PNG Images (*.png) @@ -1040,13 +1051,13 @@ p, li { white-space: pre-wrap; } - - Remove all transaction fields + + Clear all - - Clear all + + Remove all transaction fields @@ -1346,57 +1357,57 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date - + Type - + Address - + Amount - + Open for %n block(s) - + Open for %n block Open for %n blocks - + Open until %1 - + Offline (%1 confirmations) - + Unconfirmed (%1 of %2 confirmations) - + Confirmed (%1 confirmations) Mined balance will be available in %n more blocks - + Mined balance will be available in %n more block Mined balance will be available in %n more blocks @@ -1642,343 +1653,343 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version - + Usage: - + Send command to -server or bitcoind - + List commands - + Get help for a command - + Options: - + Specify configuration file (default: bitcoin.conf) - + Specify pid file (default: bitcoind.pid) - + Generate coins - + Don't generate coins - + Start minimized - + Specify data directory - + Specify connection timeout (in milliseconds) - + Connect through socks4 proxy - + Allow DNS lookups for addnode and connect - + Listen for connections on <port> (default: 8333 or testnet: 18333) - + Maintain at most <n> connections to peers (default: 125) - + Add a node to connect to - + Connect only to the specified node - + Don't accept connections from outside - + Don't bootstrap list of peers using DNS - + Threshold for disconnecting misbehaving peers (default: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) - + Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) - + Don't attempt to use UPnP to map the listening port - + Attempt to use UPnP to map the listening port - + Fee per kB to add to transactions you send - + Accept command line and JSON-RPC commands - + Run in the background as a daemon and accept commands - + Use the test network - + Output extra debugging information - + Prepend debug output with timestamp - + Send trace/debug info to console instead of debug.log file - + Send trace/debug info to debugger - + Username for JSON-RPC connections - + Password for JSON-RPC connections - + Listen for JSON-RPC connections on <port> (default: 8332) - + Allow JSON-RPC connections from specified IP address - + Send commands to node running on <ip> (default: 127.0.0.1) - + Set key pool size to <n> (default: 100) - + Rescan the block chain for missing wallet transactions - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) - + Use OpenSSL (https) for JSON-RPC connections - + Server certificate file (default: server.cert) - + Server private key (default: server.pem) - - Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - - - - - This help message - - - - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. - + + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) + + + + Loading addresses... - Error loading addr.dat - - - - - Error loading blkindex.dat - - - - - Error loading wallet.dat: Wallet corrupted - - - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin + This help message - Wallet needed to be rewritten: restart Bitcoin to complete - - - - - Error loading wallet.dat - - - - Loading block index... - + Loading wallet... - + Rescanning... + + + Error loading addr.dat + + + + + Error loading blkindex.dat + + + Error loading wallet.dat: Wallet corrupted + + + + Done loading + Error loading wallet.dat: Wallet requires newer version of Bitcoin + + + + Invalid -proxy address + Wallet needed to be rewritten: restart Bitcoin to complete + + + + Invalid amount for -paytxfee=<amount> - Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. - - - - - Error: CreateThread(StartNode) failed - - - - - Warning: Disk space is low + Error loading wallet.dat - Unable to bind to port %d on this computer. Bitcoin is probably already running. + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. + Error: CreateThread(StartNode) failed + + + + + Warning: Disk space is low + + + + + Unable to bind to port %d on this computer. Bitcoin is probably already running. + + + + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. - + beta diff --git a/src/qt/locale/bitcoin_es.ts b/src/qt/locale/bitcoin_es.ts index a388508ff86..2ac8dbafe0e 100644 --- a/src/qt/locale/bitcoin_es.ts +++ b/src/qt/locale/bitcoin_es.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -21,7 +23,7 @@ This is experimental software. Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - + @@ -61,31 +63,31 @@ This product includes software developed by the OpenSSL Project for use in the O &Copy to Clipboard &Copiar al portapapeles - - - Show &QR Code - - - - - Sign a message to prove you own this address - - - - - &Sign Message - - Delete the currently selected address from the list. Only sending addresses can be deleted. Borra la dirección seleccionada de la lista. Solo las direcciónes de envio se pueden borrar. + + + Show &QR Code + + &Delete Bo&rrar + + + Sign a message to prove you own this address + + + + + &Sign Message + + Copy address @@ -99,12 +101,12 @@ This product includes software developed by the OpenSSL Project for use in the O Edit - + Delete - + @@ -130,17 +132,17 @@ This product includes software developed by the OpenSSL Project for use in the O AddressTableModel - + Label Etiqueta - + Address Dirección - + (no label) (sin etiqueta) @@ -231,16 +233,11 @@ Are you sure you wish to encrypt your wallet? Wallet encrypted Cartera encriptada - - - Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - - Warning: The Caps Lock key is on. - + @@ -255,6 +252,11 @@ Are you sure you wish to encrypt your wallet? Wallet encryption failed due to an internal error. Your wallet was not encrypted. Encriptación de cartera fallida debido a un error interno. Tu cartera no ha sido encriptada. + + + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. + Bitcoin se cerrará para finalizar el proceso de encriptación. Recuerda que encriptando tu cartera no garantiza mantener a salvo tus bitcoins en caso de tener viruses en el ordenador. + @@ -287,278 +289,293 @@ Are you sure you wish to encrypt your wallet? BitcoinGUI - + Bitcoin Wallet Cartera Bitcoin - - + + Synchronizing with network... Sincronizando con la red... - + Block chain synchronization in progress Sincronización cadena de bloques en progreso - + &Overview &Vista general - + Show general overview of wallet Muestra una vista general de cartera - + &Transactions &Transacciónes - + Browse transaction history Visiona el historial de transacciónes - + &Address Book &Guia de direcciónes - + Edit the list of stored addresses and labels Edita la lista de las direcciónes y etiquetas almacenada - + &Receive coins &Recibe monedas - + Show the list of addresses for receiving payments Muestra la lista de direcciónes utilizadas para recibir pagos - + &Send coins &Envia monedas - + Send coins to a bitcoin address Envia monedas a una dirección bitcoin - + Sign &message - + - + Prove you control an address - + - + E&xit &Salir - + Quit application Salir de la aplicación - + &About %1 S&obre %1 - + Show information about Bitcoin Muestra información sobre Bitcoin - - About &Qt - - - - - Show information about Qt - - - - + &Options... &Opciones - + Modify configuration options for bitcoin Modifica opciones de configuración - + Open &Bitcoin Abre &Bitcoin - + Show the Bitcoin window Muestra la ventana de Bitcoin - + &Export... &Exporta... - - Export the data in the current tab to a file - - - - + &Encrypt Wallet &Encriptar cartera - + Encrypt or decrypt wallet Encriptar o decriptar cartera - - &Backup Wallet - - - - - Backup wallet to another location - - - - + &Change Passphrase &Cambiar la contraseña - + Change the passphrase used for wallet encryption Cambiar la contraseña utilizada para la encriptación de cartera - + + About &Qt + Sobre &Qt + + + + Show information about Qt + Muestra información sobre Qt + + + + Export the data in the current tab to a file + + + + + &Backup Wallet + &Backup cartera + + + + Backup wallet to another location + + + + &File &Archivo - + &Settings &Configuración - + &Help &Ayuda - + Tabs toolbar Barra de pestañas - + Actions toolbar Barra de acciónes - + [testnet] [testnet] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - %n conexión activa hacia la red Bitcoin%n conexiones activas hacia la red Bitcoin + + %n conexión activa hacia la red Bitcoin + %n conexiones activas hacia la red Bitcoin + - + Downloaded %1 of %2 blocks of transaction history. Se han bajado %1 de %2 bloques de historial. - + Downloaded %1 blocks of transaction history. Se han bajado %1 bloques de historial. - + %n second(s) ago - Hace %n segundoHace %n segundos + + Hace %n segundo + Hace %n segundos + - + %n minute(s) ago - Hace %n minutoHace %n minutos + + Hace %n minuto + Hace %n minutos + - + %n hour(s) ago - Hace %n horaHace %n horas + + Hace %n hora + Hace %n horas + - + %n day(s) ago - Hace %n díaHace %n días + + Hace %n día + Hace %n días + - + Up to date Actualizado - + Catching up... Recuperando... - + Last received block was generated %1. El ultimo bloque recibido fue generado %1. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? Esta transacción supera el límite. Puedes seguir enviandola incluyendo una comisión de %s que se va a repartir entre los nodos que procesan su transacción y ayudan a mantener la red. ¿Quieres seguir con la transacción? - + Sending... Enviando... - + Sent transaction Transacción enviada - + Incoming transaction Transacción entrante - + Date: %1 Amount: %2 Type: %3 @@ -570,34 +587,39 @@ Tipo: %3 Dirección: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> La cartera esta <b>encriptada</b> y actualmente <b>desbloqueda</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> La cartera esta <b>encriptada</b> y actualmente <b>bloqueda</b> - + Backup Wallet - + - + Wallet Data (*.dat) - + - + Backup Failed - + - + There was an error trying to save the wallet data to the new location. - + + + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + @@ -614,8 +636,13 @@ Dirección: %4 - Display addresses in transaction list - Muestra direcciones en el listado de movimientos + &Display addresses in transaction list + &Muestra direcciones en el listado de movimientos + + + + Whether to show Bitcoin addresses in the transaction list + @@ -761,7 +788,7 @@ Dirección: %4 Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. - + @@ -771,7 +798,7 @@ Dirección: %4 Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. - + @@ -779,17 +806,17 @@ Dirección: %4 Message - + You can sign messages with your addresses to prove you own them. Be careful not to sign anything vague, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - + - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - La dirección donde enviar el pago (ej. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + @@ -814,27 +841,27 @@ Dirección: %4 Enter the message you want to sign here - + Click "Sign Message" to get signature - + Sign a message to prove you own this address - + &Sign Message - + - Copy the currently selected address to the system clipboard - Copia la dirección seleccionada al portapapeles + Copy the current signature to the system clipboard + @@ -846,22 +873,22 @@ Dirección: %4 Error signing - + %1 is not a valid address. - + Private key for %1 is not available. - + Sign failed - + @@ -920,20 +947,12 @@ Dirección: %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Cartera</span></p></body></html> + + Wallet + Cartera - + <b>Recent transactions</b> <b>Movimientos recientes</b> @@ -963,47 +982,52 @@ p, li { white-space: pre-wrap; } QR Code - + - + Request Payment - + - + Amount: - + - + BTC - + - + Label: - + - + Message: Mensaje: - + &Save As... - + - + + Error encoding URI into QR Code. + + + + Save Image... - + - + PNG Images (*.png) - + @@ -1030,16 +1054,16 @@ p, li { white-space: pre-wrap; } &Add recipient... &Agrega destinatario... - - - Remove all transaction fields - - Clear all &Borra todos + + + Remove all transaction fields + + Balance: @@ -1313,7 +1337,7 @@ p, li { white-space: pre-wrap; } Transaction ID: - + @@ -1337,54 +1361,60 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date Fecha - + Type Tipo - + Address Dirección - + Amount Cantidad - + Open for %n block(s) - Abierto por %n bloqueAbierto por %n bloques + + Abierto por %n bloque + Abierto por %n bloques + - + Open until %1 Abierto hasta %1 - + Offline (%1 confirmations) Fuera de linea (%1 confirmaciónes) - + Unconfirmed (%1 of %2 confirmations) No confirmado (%1 de %2 confirmaciónes) - + Confirmed (%1 confirmations) Confirmado (%1 confirmaciones) Mined balance will be available in %n more blocks - El balance minado estará disponible en %n bloque masEl balance minado estará disponible en %n bloques mas + + El balance minado estará disponible en %n bloque mas + El balance minado estará disponible en %n bloques mas + @@ -1404,7 +1434,7 @@ p, li { white-space: pre-wrap; } Received from - + @@ -1538,7 +1568,7 @@ p, li { white-space: pre-wrap; } Copy amount - + @@ -1627,380 +1657,380 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version Versión Bitcoin - + Usage: Uso: - + Send command to -server or bitcoind Envia comando a bitcoin lanzado con -server u bitcoind - + List commands Muestra comandos - + Get help for a command Recibir ayuda para un comando - + Options: Opciones: - + Specify configuration file (default: bitcoin.conf) Especifica archivo de configuración (predeterminado: bitcoin.conf) - + Specify pid file (default: bitcoind.pid) Especifica archivo pid (predeterminado: bitcoin.pid) - + Generate coins Genera monedas - + Don't generate coins No generar monedas - + Start minimized Arranca minimizado - + Specify data directory Especifica directorio para los datos - + Specify connection timeout (in milliseconds) Especifica tiempo de espera para conexion (en milisegundos) - + Connect through socks4 proxy Conecta mediante proxy socks4 - + Allow DNS lookups for addnode and connect Permite búsqueda DNS para addnode y connect - + Listen for connections on <port> (default: 8333 or testnet: 18333) - + - + Maintain at most <n> connections to peers (default: 125) - + - + Add a node to connect to Agrega un nodo para conectarse - + Connect only to the specified node Conecta solo al nodo especificado - + Don't accept connections from outside No aceptar conexiones desde el exterior - - - Don't bootstrap list of peers using DNS - - - - - Threshold for disconnecting misbehaving peers (default: 100) - - - - - Number of seconds to keep misbehaving peers from reconnecting (default: 86400) - - - Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) - + Don't bootstrap list of peers using DNS + - Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) - + Threshold for disconnecting misbehaving peers (default: 100) + + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) + + + + + Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) + + + + + Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) + + + + Don't attempt to use UPnP to map the listening port No intentar usar UPnP para mapear el puerto de entrada - + Attempt to use UPnP to map the listening port Intenta usar UPnP para mapear el puerto de escucha. - + Fee per kB to add to transactions you send - + - + Accept command line and JSON-RPC commands Aceptar comandos consola y JSON-RPC - + Run in the background as a daemon and accept commands Correr como demonio y acepta comandos - + Use the test network Usa la red de pruebas - + Output extra debugging information - + - + Prepend debug output with timestamp - + - + Send trace/debug info to console instead of debug.log file - + - + Send trace/debug info to debugger - + - + Username for JSON-RPC connections Usuario para las conexiones JSON-RPC - + Password for JSON-RPC connections Contraseña para las conexiones JSON-RPC - + Listen for JSON-RPC connections on <port> (default: 8332) Escucha conexiones JSON-RPC en el puerto <port> (predeterminado: 8332) - + Allow JSON-RPC connections from specified IP address Permite conexiones JSON-RPC desde la dirección IP especificada - + Send commands to node running on <ip> (default: 127.0.0.1) Envia comando al nodo situado en <ip> (predeterminado: 127.0.0.1) - + Set key pool size to <n> (default: 100) Ajusta el numero de claves en reserva <n> (predeterminado: 100) - + Rescan the block chain for missing wallet transactions Rescanea la cadena de bloques para transacciones perdidas de la cartera - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) Opciones SSL: (ver la Bitcoin Wiki para instrucciones de configuración SSL) - + Use OpenSSL (https) for JSON-RPC connections Usa OpenSSL (https) para las conexiones JSON-RPC - + Server certificate file (default: server.cert) Certificado del servidor (Predeterminado: server.cert) - + Server private key (default: server.pem) Clave privada del servidor (Predeterminado: server.pem) - - Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - Cifrados aceptados (Predeterminado: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - - - - - This help message - Este mensaje de ayuda - - - - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. No se puede obtener permiso de trabajo en la carpeta de datos %s. Probablemente Bitcoin ya se está ejecutando. - + + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) + Cifrados aceptados (Predeterminado: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) + + + + Loading addresses... Cargando direcciónes... - Error loading addr.dat - - - - - Error loading blkindex.dat - - - - - Error loading wallet.dat: Wallet corrupted - - - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin - + This help message + Este mensaje de ayuda + - Wallet needed to be rewritten: restart Bitcoin to complete - - - - - Error loading wallet.dat - - - - Loading block index... Cargando el index de bloques... - + Loading wallet... Cargando cartera... - + Rescanning... Rescaneando... + + + Error loading addr.dat + Error cargando addr.dat + + + + Error loading blkindex.dat + Error cargando blkindex.dat + + Error loading wallet.dat: Wallet corrupted + Error cargando wallet.dat: Cartera dañada + + + Done loading Carga completa + Error loading wallet.dat: Wallet requires newer version of Bitcoin + Error cargando el archivo wallet.dat: Se necesita una versión mas nueva de Bitcoin + + + Invalid -proxy address Dirección -proxy invalida + Wallet needed to be rewritten: restart Bitcoin to complete + + + + Invalid amount for -paytxfee=<amount> Cantidad inválida para -paytxfee=<amount> + Error loading wallet.dat + Error cargando wallet.dat + + + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. Precaución: -paytxfee es muy alta. Esta es la comisión que pagarás si envias una transacción. - + Error: CreateThread(StartNode) failed Error: CreateThread(StartNode) fallido - + Warning: Disk space is low Atención: Poco espacio en el disco duro - + Unable to bind to port %d on this computer. Bitcoin is probably already running. No es posible escuchar en el puerto %d en este ordenador. Probablemente Bitcoin ya se está ejecutando. - + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. Precaución: Por favor revisa que la fecha y hora de tu ordenador son correctas. Si tu reloj está mal Bitcoin no funcionará correctamente. - + beta beta - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_es_CL.ts b/src/qt/locale/bitcoin_es_CL.ts index d0986b691d7..828376edd4d 100644 --- a/src/qt/locale/bitcoin_es_CL.ts +++ b/src/qt/locale/bitcoin_es_CL.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -21,7 +23,7 @@ This is experimental software. Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - + @@ -61,11 +63,21 @@ This product includes software developed by the OpenSSL Project for use in the O &Copy to Clipboard &Copiar al portapapeles + + + Delete the currently selected address from the list. Only sending addresses can be deleted. + Borra la dirección seleccionada de la lista. Solo las direcciónes de envio se pueden borrar. + Show &QR Code Mostrar Código &QR + + + &Delete + &Borrar + Sign a message to prove you own this address @@ -76,16 +88,6 @@ This product includes software developed by the OpenSSL Project for use in the O &Sign Message Firmar Mensaje - - - Delete the currently selected address from the list. Only sending addresses can be deleted. - Borra la dirección seleccionada de la lista. Solo las direcciónes de envio se pueden borrar. - - - - &Delete - &Borrar - Copy address @@ -130,17 +132,17 @@ This product includes software developed by the OpenSSL Project for use in the O AddressTableModel - + Label Etiqueta - + Address Dirección - + (no label) (sin etiqueta) @@ -231,11 +233,6 @@ Are you sure you wish to encrypt your wallet? Wallet encrypted Billetera codificada - - - Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - Bitcoin se cerrará para finalizar el proceso de encriptación. Recuerde que encriptar su billetera no protegera completatamente sus bitcoins de ser robados por malware que infecte su computador - @@ -255,6 +252,11 @@ Are you sure you wish to encrypt your wallet? Wallet encryption failed due to an internal error. Your wallet was not encrypted. La codificación de la billetera falló debido a un error interno. Tu billetera no ha sido codificada. + + + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. + Bitcoin se cerrará para finalizar el proceso de encriptación. Recuerde que encriptar su billetera no protegera completatamente sus bitcoins de ser robados por malware que infecte su computador + @@ -287,278 +289,293 @@ Are you sure you wish to encrypt your wallet? BitcoinGUI - + Bitcoin Wallet Billetera Bitcoin - - + + Synchronizing with network... Sincronizando con la red... - + Block chain synchronization in progress Sincronización de la cadena de bloques en progreso - + &Overview &Vista general - + Show general overview of wallet Muestra una vista general de la billetera - + &Transactions &Transacciónes - + Browse transaction history Explora el historial de transacciónes - + &Address Book &Guia de direcciónes - + Edit the list of stored addresses and labels Edita la lista de direcciones y etiquetas almacenadas - + &Receive coins &Recibir monedas - + Show the list of addresses for receiving payments Muestra la lista de direcciónes utilizadas para recibir pagos - + &Send coins &Envíar monedas - + Send coins to a bitcoin address Enviar monedas a una dirección bitcoin - + Sign &message Firmar Mensaje - + Prove you control an address Suministre dirección de control - + E&xit &Salir - + Quit application Salir del programa - + &About %1 S&obre %1 - + Show information about Bitcoin Muestra información acerca de Bitcoin - - About &Qt - Acerca de - - - - Show information about Qt - Mostrar Información sobre QT - - - + &Options... &Opciones - + Modify configuration options for bitcoin Modifica las opciones de configuración de bitcoin - + Open &Bitcoin Abre &Bitcoin - + Show the Bitcoin window Muestra la ventana de Bitcoin - + &Export... &Exportar... - - Export the data in the current tab to a file - - - - + &Encrypt Wallet &Codificar la billetera - + Encrypt or decrypt wallet Codificar o decodificar la billetera - - &Backup Wallet - - - - - Backup wallet to another location - - - - + &Change Passphrase &Cambiar la contraseña - + Change the passphrase used for wallet encryption Cambiar la contraseña utilizada para la codificación de la billetera - + + About &Qt + Acerca de + + + + Show information about Qt + Mostrar Información sobre QT + + + + Export the data in the current tab to a file + + + + + &Backup Wallet + &Backup billetera + + + + Backup wallet to another location + + + + &File &Archivo - + &Settings &Configuración - + &Help &Ayuda - + Tabs toolbar Barra de pestañas - + Actions toolbar Barra de acciónes - + [testnet] [red-de-pruebas] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - %n conexión activa hacia la red Bitcoin%n conexiones activas hacia la red Bitcoin + + %n conexión activa hacia la red Bitcoin + %n conexiones activas hacia la red Bitcoin + - + Downloaded %1 of %2 blocks of transaction history. Descargados %1 de %2 bloques del historial de transacciones. - + Downloaded %1 blocks of transaction history. Descargado %1 bloques del historial de transacciones. - + %n second(s) ago - Hace %n segundoHace %n segundos + + Hace %n segundo + Hace %n segundos + - + %n minute(s) ago - Hace %n minutoHace %n minutos + + Hace %n minuto + Hace %n minutos + - + %n hour(s) ago - Hace %n horaHace %n horas + + Hace %n hora + Hace %n horas + - + %n day(s) ago - Hace %n díaHace %n días + + Hace %n día + Hace %n días + - + Up to date Actualizado - + Catching up... Recuperando... - + Last received block was generated %1. El ultimo bloque recibido fue generado %1. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? Esta transacción supera el límite. Puedes seguir enviandola incluyendo una comisión de %s que se va a repartir entre los nodos que procesan su transacción y ayudan a mantener la red. ¿Quieres seguir con la transacción? - + Sending... Enviando... - + Sent transaction Transacción enviada - + Incoming transaction Transacción entrante - + Date: %1 Amount: %2 Type: %3 @@ -570,34 +587,39 @@ Tipo: %3 Dirección: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> La billetera esta <b>codificada</b> y actualmente <b>desbloqueda</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> La billetera esta <b>codificada</b> y actualmente <b>bloqueda</b> - + Backup Wallet - + - + Wallet Data (*.dat) - + - + Backup Failed - + - + There was an error trying to save the wallet data to the new location. - + + + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + @@ -614,8 +636,13 @@ Dirección: %4 - Display addresses in transaction list - Muestra direcciones en el listado de transaccioines + &Display addresses in transaction list + &Muestra direcciones en el listado de transaccioines + + + + Whether to show Bitcoin addresses in the transaction list + @@ -784,12 +811,12 @@ Dirección: %4 You can sign messages with your addresses to prove you own them. Be careful not to sign anything vague, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - + - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - La dirección donde enviar el pago (ej. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + @@ -833,8 +860,8 @@ Dirección: %4 - Copy the currently selected address to the system clipboard - Copiar la dirección seleccionada al portapapeles + Copy the current signature to the system clipboard + @@ -920,20 +947,12 @@ Dirección: %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Cartera</span></p></body></html> + + Wallet + Cartera - + <b>Recent transactions</b> <b>Transacciones recientes</b> @@ -966,44 +985,49 @@ p, li { white-space: pre-wrap; } Código QR - + Request Payment Solicitar Pago - + Amount: Cantidad: - + BTC BTC - + Label: Etiqueta - + Message: Mensaje: - + &Save As... &Guardar Como... - - Save Image... - + + Error encoding URI into QR Code. + - + + Save Image... + + + + PNG Images (*.png) - + @@ -1030,16 +1054,16 @@ p, li { white-space: pre-wrap; } &Add recipient... &Agrega destinatario... - - - Remove all transaction fields - Remover todos los campos de la transacción - Clear all &Borra todos + + + Remove all transaction fields + Remover todos los campos de la transacción + Balance: @@ -1337,54 +1361,60 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date Fecha - + Type Tipo - + Address Dirección - + Amount Cantidad - + Open for %n block(s) - Abierto por %n bloqueAbierto por %n bloques + + Abierto por %n bloque + Abierto por %n bloques + - + Open until %1 Abierto hasta %1 - + Offline (%1 confirmations) Fuera de linea (%1 confirmaciónes) - + Unconfirmed (%1 of %2 confirmations) No confirmado (%1 de %2 confirmaciónes) - + Confirmed (%1 confirmations) Confirmado (%1 confirmaciones) Mined balance will be available in %n more blocks - El balance minado estará disponible en %n bloque masEl balance minado estará disponible en %n bloques mas + + El balance minado estará disponible en %n bloque mas + El balance minado estará disponible en %n bloques mas + @@ -1627,380 +1657,380 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version Versión Bitcoin - + Usage: Uso: - + Send command to -server or bitcoind Envia comando a bitcoin lanzado con -server u bitcoind - + List commands Muestra comandos - + Get help for a command Recibir ayuda para un comando - + Options: Opciones: - + Specify configuration file (default: bitcoin.conf) Especifica archivo de configuración (predeterminado: bitcoin.conf) - + Specify pid file (default: bitcoind.pid) Especifica archivo pid (predeterminado: bitcoin.pid) - + Generate coins Genera monedas - + Don't generate coins No generar monedas - + Start minimized Arranca minimizado - + Specify data directory Especifica directorio para los datos - + Specify connection timeout (in milliseconds) Especifica tiempo de espera para conexion (en milisegundos) - + Connect through socks4 proxy Conecta mediante proxy socks4 - + Allow DNS lookups for addnode and connect Permite búsqueda DNS para addnode y connect - + Listen for connections on <port> (default: 8333 or testnet: 18333) Escuchar por conecciones en <puerto> (Por defecto: 8333 o red de prueba: 18333) - + Maintain at most <n> connections to peers (default: 125) Mantener al menos <n> conecciones por cliente (por defecto: 125) - + Add a node to connect to Agrega un nodo para conectarse - + Connect only to the specified node Conecta solo al nodo especificado - + Don't accept connections from outside No aceptar conexiones desde el exterior - + Don't bootstrap list of peers using DNS - + - + Threshold for disconnecting misbehaving peers (default: 100) Umbral de desconección de clientes con mal comportamiento (por defecto: 100) - - - Number of seconds to keep misbehaving peers from reconnecting (default: 86400) - - - - - Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) - - - - - Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) - - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) + + + + + Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) + + + + + Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) + + + + Don't attempt to use UPnP to map the listening port No intentar usar UPnP para mapear el puerto de entrada - + Attempt to use UPnP to map the listening port Intenta usar UPnP para mapear el puerto de escucha. - + Fee per kB to add to transactions you send Comisión por kB para adicionarla a las transacciones enviadas - + Accept command line and JSON-RPC commands Aceptar comandos consola y JSON-RPC - + Run in the background as a daemon and accept commands Correr como demonio y acepta comandos - + Use the test network Usa la red de pruebas - + Output extra debugging information Adjuntar informacion extra de depuracion - + Prepend debug output with timestamp Anteponer salida de depuracion con marca de tiempo - + Send trace/debug info to console instead of debug.log file Enviar informacion de seguimiento a la consola en vez del archivo debug.log - + Send trace/debug info to debugger Enviar informacion de seguimiento al depurador - + Username for JSON-RPC connections Usuario para las conexiones JSON-RPC - + Password for JSON-RPC connections Contraseña para las conexiones JSON-RPC - + Listen for JSON-RPC connections on <port> (default: 8332) Escucha conexiones JSON-RPC en el puerto <port> (predeterminado: 8332) - + Allow JSON-RPC connections from specified IP address Permite conexiones JSON-RPC desde la dirección IP especificada - + Send commands to node running on <ip> (default: 127.0.0.1) Envia comando al nodo situado en <ip> (predeterminado: 127.0.0.1) - + Set key pool size to <n> (default: 100) Ajusta el numero de claves en reserva <n> (predeterminado: 100) - + Rescan the block chain for missing wallet transactions Rescanea la cadena de bloques para transacciones perdidas de la cartera - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) Opciones SSL: (ver la Bitcoin Wiki para instrucciones de configuración SSL) - + Use OpenSSL (https) for JSON-RPC connections Usa OpenSSL (https) para las conexiones JSON-RPC - + Server certificate file (default: server.cert) Certificado del servidor (Predeterminado: server.cert) - + Server private key (default: server.pem) Clave privada del servidor (Predeterminado: server.pem) - - Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - Cifrados aceptados (Predeterminado: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - - - - - This help message - Este mensaje de ayuda - - - - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. No se puede obtener permiso de trabajo en la carpeta de datos %s. Probablemente Bitcoin ya se está ejecutando. - + + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) + Cifrados aceptados (Predeterminado: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) + + + + Loading addresses... Cargando direcciónes... - Error loading addr.dat - Error cargando addr.dat - - - - Error loading blkindex.dat - Error cargando blkindex.dat - - - - Error loading wallet.dat: Wallet corrupted - Error cargando wallet.dat: Billetera corrupta - - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin - Error cargando wallet.dat: Billetera necesita una vercion reciente de Bitcoin + This help message + Este mensaje de ayuda + - Wallet needed to be rewritten: restart Bitcoin to complete - La billetera necesita ser reescrita: reinicie Bitcoin para completar - - - - Error loading wallet.dat - Error cargando wallet.dat - - - Loading block index... Cargando el index de bloques... - + Loading wallet... Cargando cartera... - + Rescanning... Rescaneando... + + + Error loading addr.dat + Error cargando addr.dat + + + + Error loading blkindex.dat + Error cargando blkindex.dat + + Error loading wallet.dat: Wallet corrupted + Error cargando wallet.dat: Billetera corrupta + + + Done loading Carga completa + Error loading wallet.dat: Wallet requires newer version of Bitcoin + Error cargando wallet.dat: Billetera necesita una vercion reciente de Bitcoin + + + Invalid -proxy address Dirección -proxy invalida + Wallet needed to be rewritten: restart Bitcoin to complete + La billetera necesita ser reescrita: reinicie Bitcoin para completar + + + Invalid amount for -paytxfee=<amount> Cantidad inválida para -paytxfee=<amount> + Error loading wallet.dat + Error cargando wallet.dat + + + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. Precaución: -paytxfee es muy alta. Esta es la comisión que pagarás si envias una transacción. - + Error: CreateThread(StartNode) failed Error: CreateThread(StartNode) fallido - + Warning: Disk space is low Atención: Poco espacio en el disco duro - + Unable to bind to port %d on this computer. Bitcoin is probably already running. No es posible escuchar en el puerto %d en este ordenador. Probablemente Bitcoin ya se está ejecutando. - + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. Precaución: Por favor revise que la fecha y hora de tu ordenador son correctas. Si tu reloj está mal configurado Bitcoin no funcionará correctamente. - + beta beta - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_et.ts b/src/qt/locale/bitcoin_et.ts index a14037f069c..72cdafd25fe 100644 --- a/src/qt/locale/bitcoin_et.ts +++ b/src/qt/locale/bitcoin_et.ts @@ -1,16 +1,18 @@ - + + + UTF-8 AboutDialog About Bitcoin - + <b>Bitcoin</b> version - + @@ -21,7 +23,7 @@ This is experimental software. Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - + @@ -29,17 +31,17 @@ This product includes software developed by the OpenSSL Project for use in the O Address Book - + These are your Bitcoin addresses for receiving payments. You may want to give a different one to each sender so you can keep track of who is paying you. - + Double-click to edit address or label - + @@ -54,7 +56,7 @@ This product includes software developed by the OpenSSL Project for use in the O Copy the currently selected address to the system clipboard - + @@ -64,22 +66,22 @@ This product includes software developed by the OpenSSL Project for use in the O Show &QR Code - + Sign a message to prove you own this address - + &Sign Message - + Delete the currently selected address from the list. Only sending addresses can be deleted. - + @@ -89,32 +91,32 @@ This product includes software developed by the OpenSSL Project for use in the O Copy address - + Copy label - + Edit - + Delete - + Export Address Book Data - + Comma separated file (*.csv) - + @@ -124,23 +126,23 @@ This product includes software developed by the OpenSSL Project for use in the O Could not write to file %1. - + AddressTableModel - + Label Silt - + Address Aadress - + (no label) (silti pole) @@ -156,90 +158,90 @@ This product includes software developed by the OpenSSL Project for use in the O TextLabel - + Enter passphrase - + New passphrase - + Repeat new passphrase - + Enter the new passphrase to the wallet.<br/>Please use a passphrase of <b>10 or more random characters</b>, or <b>eight or more words</b>. - + Encrypt wallet - + This operation needs your wallet passphrase to unlock the wallet. - + Unlock wallet - + This operation needs your wallet passphrase to decrypt the wallet. - + Decrypt wallet - + Change passphrase - + Enter the old and new passphrase to the wallet. - + Confirm wallet encryption - + WARNING: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! Are you sure you wish to encrypt your wallet? - + Wallet encrypted - + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - + Warning: The Caps Lock key is on. - + @@ -247,353 +249,368 @@ Are you sure you wish to encrypt your wallet? Wallet encryption failed - + Wallet encryption failed due to an internal error. Your wallet was not encrypted. - + The supplied passphrases do not match. - + Wallet unlock failed - + The passphrase entered for the wallet decryption was incorrect. - + Wallet decryption failed - + Wallet passphrase was succesfully changed. - + BitcoinGUI - + Bitcoin Wallet - - - - - - Synchronizing with network... - + - Block chain synchronization in progress - + + Synchronizing with network... + - + + Block chain synchronization in progress + + + + &Overview &Ülevaade - + Show general overview of wallet - + - + &Transactions &Tehingud - + Browse transaction history Sirvi tehingute ajalugu - + &Address Book &Aadressiraamat - + Edit the list of stored addresses and labels - + - + &Receive coins - + - + Show the list of addresses for receiving payments - + - + &Send coins - + - + Send coins to a bitcoin address - + - + Sign &message - + - + Prove you control an address - + - + E&xit - - - - - Quit application - + - &About %1 - - - - - Show information about Bitcoin - + Quit application + - About &Qt - + &About %1 + - Show information about Qt - + Show information about Bitcoin + + About &Qt + + + + + Show information about Qt + + + + &Options... &Valikud... - - - Modify configuration options for bitcoin - - - - - Open &Bitcoin - - - Show the Bitcoin window - + Modify configuration options for bitcoin + - + + Open &Bitcoin + + + + + Show the Bitcoin window + + + + &Export... &Ekspordi... - + Export the data in the current tab to a file - - - - - &Encrypt Wallet - - - - - Encrypt or decrypt wallet - + - &Backup Wallet - + &Encrypt Wallet + - Backup wallet to another location - - - - - &Change Passphrase - + Encrypt or decrypt wallet + - Change the passphrase used for wallet encryption - + &Backup Wallet + - + + Backup wallet to another location + + + + + &Change Passphrase + + + + + Change the passphrase used for wallet encryption + + + + &File &Fail - + &Settings &Seaded - + &Help &Abiinfo - + Tabs toolbar - + - + Actions toolbar - + - + [testnet] - + - + bitcoin-qt - + - + %n active connection(s) to Bitcoin network - + + + - + Downloaded %1 of %2 blocks of transaction history. - + - + Downloaded %1 blocks of transaction history. - + - + %n second(s) ago - + + + - + %n minute(s) ago - + + + - + %n hour(s) ago - + + + - + %n day(s) ago - + + + - + Up to date - + - + Catching up... - + - + Last received block was generated %1. - + - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? - + - + Sending... - + - + Sent transaction - + - + Incoming transaction - + - + Date: %1 Amount: %2 Type: %3 Address: %4 - + - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> - + - + Wallet is <b>encrypted</b> and currently <b>locked</b> - + - + Backup Wallet - + - + Wallet Data (*.dat) - + - + Backup Failed - + - + There was an error trying to save the wallet data to the new location. - + + + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + @@ -601,17 +618,22 @@ Address: %4 &Unit to show amounts in: - + Choose the default subdivision unit to show in the interface, and when sending coins - + - Display addresses in transaction list - + &Display addresses in transaction list + + + + + Whether to show Bitcoin addresses in the transaction list + @@ -629,57 +651,57 @@ Address: %4 The label associated with this address book entry - + &Address - + The address associated with this address book entry. This can only be modified for sending addresses. - + New receiving address - + New sending address - + Edit receiving address - + Edit sending address - + The entered address "%1" is already in the address book. - + The entered address "%1" is not a valid bitcoin address. - + Could not unlock wallet. - + New key generation failed. - + @@ -687,87 +709,87 @@ Address: %4 &Start Bitcoin on window system startup - + Automatically start Bitcoin after the computer is turned on - + &Minimize to the tray instead of the taskbar - + Show only a tray icon after minimizing the window - + Map port using &UPnP - + Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - + M&inimize on close - + Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Quit in the menu. - + &Connect through SOCKS4 proxy: - + Connect to the Bitcon network through a SOCKS4 proxy (e.g. when connecting through Tor) - + Proxy &IP: - + IP address of the proxy (e.g. 127.0.0.1) - + &Port: - + Port of the proxy (e.g. 1234) - + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. - + Pay transaction &fee - + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. - + @@ -775,62 +797,62 @@ Address: %4 Message - + You can sign messages with your addresses to prove you own them. Be careful not to sign anything vague, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - + - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - + The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + Choose adress from address book - + Alt+A - + Paste address from clipboard - + Alt+P - + Enter the message you want to sign here - + Click "Sign Message" to get signature - + Sign a message to prove you own this address - + &Sign Message - + - Copy the currently selected address to the system clipboard - + Copy the current signature to the system clipboard + @@ -842,22 +864,22 @@ Address: %4 Error signing - + %1 is not a valid address. - + Private key for %1 is not available. - + Sign failed - + @@ -865,17 +887,17 @@ Address: %4 Main - + Display - + Options - + @@ -883,66 +905,62 @@ Address: %4 Form - + Balance: - + 123.456 BTC - + Number of transactions: - + 0 - + Unconfirmed: - + 0 BTC - + - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - + + Wallet + - + <b>Recent transactions</b> - + Your current balance - + Total of transactions that have yet to be confirmed, and do not yet count toward the current balance - + Total number of transactions in wallet - + @@ -955,47 +973,52 @@ p, li { white-space: pre-wrap; } QR Code - + - + Request Payment - + - + Amount: - + - + BTC - + - + Label: - + - + Message: Sõnum: - + &Save As... - + - + + Error encoding URI into QR Code. + + + + Save Image... - + - + PNG Images (*.png) - + @@ -1010,102 +1033,102 @@ p, li { white-space: pre-wrap; } Send Coins - + Send to multiple recipients at once - + &Add recipient... - + Remove all transaction fields - + Clear all - + Balance: - + 123.456 BTC - + Confirm the send action - + &Send - + <b>%1</b> to %2 (%3) - + Confirm send coins - + Are you sure you want to send %1? - + and - + The recepient address is not valid, please recheck. - + The amount to pay must be larger than 0. - + Amount exceeds your balance - + Total exceeds your balance when the %1 transaction fee is included - + Duplicate address found, can only send to each address once in one send operation - + Error: Transaction creation failed - + Error: The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. - + @@ -1113,63 +1136,63 @@ p, li { white-space: pre-wrap; } Form - + A&mount: - + Pay &To: - + Enter a label for this address to add it to your address book - + &Label: - + The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - + Choose address from address book - + Alt+A - + Paste address from clipboard - + Alt+P - + Remove this recipient - + Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - + @@ -1177,63 +1200,63 @@ p, li { white-space: pre-wrap; } Open for %1 blocks - + Open until %1 - + %1/offline? - + %1/unconfirmed - + %1 confirmations - + <b>Status:</b> - + , has not been successfully broadcast yet - + , broadcast through %1 node - + , broadcast through %1 nodes - + <b>Date:</b> - + <b>Source:</b> Generated<br> - + <b>From:</b> - + @@ -1245,17 +1268,17 @@ p, li { white-space: pre-wrap; } <b>To:</b> - + (yours, label: - + (yours) - + @@ -1263,34 +1286,34 @@ p, li { white-space: pre-wrap; } <b>Credit:</b> - + (%1 matures in %2 more blocks) - + (not accepted) - + <b>Debit:</b> - + <b>Transaction fee:</b> - + <b>Net amount:</b> - + @@ -1305,12 +1328,12 @@ p, li { white-space: pre-wrap; } Transaction ID: - + Generated coins must wait 120 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, it will change to "not accepted" and not be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - + @@ -1318,130 +1341,134 @@ p, li { white-space: pre-wrap; } Transaction details - + This pane shows a detailed description of the transaction - + TransactionTableModel - + Date Kuupäev - + Type Tüüp - + Address Aadress - + Amount Kogus - + Open for %n block(s) - + + + - + Open until %1 - + - + Offline (%1 confirmations) - + - + Unconfirmed (%1 of %2 confirmations) - + - + Confirmed (%1 confirmations) - + Mined balance will be available in %n more blocks - + + + This block was not received by any other nodes and will probably not be accepted! - + Generated but not accepted - + Received with - + Received from - + Sent to - + Payment to yourself - + Mined - + (n/a) - + Transaction status. Hover over this field to show number of confirmations. - + Date and time that the transaction was received. - + Type of transaction. - + Destination address of transaction. - + Amount removed from or added to balance. - + @@ -1450,112 +1477,112 @@ p, li { white-space: pre-wrap; } All - + Today - + This week - + This month - + Last month - + This year - + Range... - + Received with - + Sent to - + To yourself - + Mined - + Other - + Enter address or label to search - + Min amount - + Copy address - + Copy label - + Copy amount - + Edit label - + Show details... - + Export Transaction Data - + Comma separated file (*.csv) - + Confirmed - + @@ -1585,7 +1612,7 @@ p, li { white-space: pre-wrap; } ID - + @@ -1595,17 +1622,17 @@ p, li { white-space: pre-wrap; } Could not write to file %1. - + Range: - + to - + @@ -1613,351 +1640,351 @@ p, li { white-space: pre-wrap; } Sending... - + bitcoin-core - - - Bitcoin version - - - - - Usage: - - - - - Send command to -server or bitcoind - - - - - List commands - - - - - Get help for a command - - - Options: - + Bitcoin version + - Specify configuration file (default: bitcoin.conf) - + Usage: + - Specify pid file (default: bitcoind.pid) - + Send command to -server or bitcoind + - Generate coins - + List commands + - Don't generate coins - + Get help for a command + - Start minimized - + Options: + - Specify data directory - + Specify configuration file (default: bitcoin.conf) + - Specify connection timeout (in milliseconds) - + Specify pid file (default: bitcoind.pid) + - Connect through socks4 proxy - + Generate coins + - Allow DNS lookups for addnode and connect - + Don't generate coins + - Listen for connections on <port> (default: 8333 or testnet: 18333) - + Start minimized + - Maintain at most <n> connections to peers (default: 125) - + Specify data directory + - Add a node to connect to - + Specify connection timeout (in milliseconds) + - Connect only to the specified node - + Connect through socks4 proxy + - Don't accept connections from outside - + Allow DNS lookups for addnode and connect + - Don't bootstrap list of peers using DNS - + Listen for connections on <port> (default: 8333 or testnet: 18333) + - Threshold for disconnecting misbehaving peers (default: 100) - + Maintain at most <n> connections to peers (default: 125) + - Number of seconds to keep misbehaving peers from reconnecting (default: 86400) - + Add a node to connect to + + + + + Connect only to the specified node + + + + + Don't accept connections from outside + - Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) - + Don't bootstrap list of peers using DNS + - Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) - + Threshold for disconnecting misbehaving peers (default: 100) + - Don't attempt to use UPnP to map the listening port - - - - - Attempt to use UPnP to map the listening port - - - - - Fee per kB to add to transactions you send - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) + - Accept command line and JSON-RPC commands - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) + - Run in the background as a daemon and accept commands - + Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) + - Use the test network - + Don't attempt to use UPnP to map the listening port + - Output extra debugging information - + Attempt to use UPnP to map the listening port + - Prepend debug output with timestamp - + Fee per kB to add to transactions you send + - Send trace/debug info to console instead of debug.log file - + Accept command line and JSON-RPC commands + - Send trace/debug info to debugger - + Run in the background as a daemon and accept commands + - Username for JSON-RPC connections - + Use the test network + - Password for JSON-RPC connections - + Output extra debugging information + - Listen for JSON-RPC connections on <port> (default: 8332) - + Prepend debug output with timestamp + - Allow JSON-RPC connections from specified IP address - + Send trace/debug info to console instead of debug.log file + - Send commands to node running on <ip> (default: 127.0.0.1) - + Send trace/debug info to debugger + - Set key pool size to <n> (default: 100) - + Username for JSON-RPC connections + - Rescan the block chain for missing wallet transactions - + Password for JSON-RPC connections + - -SSL options: (see the Bitcoin Wiki for SSL setup instructions) - + Listen for JSON-RPC connections on <port> (default: 8332) + + + + + Allow JSON-RPC connections from specified IP address + + + + + Send commands to node running on <ip> (default: 127.0.0.1) + - Use OpenSSL (https) for JSON-RPC connections - + Set key pool size to <n> (default: 100) + - Server certificate file (default: server.cert) - + Rescan the block chain for missing wallet transactions + - Server private key (default: server.pem) - + +SSL options: (see the Bitcoin Wiki for SSL setup instructions) + - - Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - + + Use OpenSSL (https) for JSON-RPC connections + - This help message - + Server certificate file (default: server.cert) + - Cannot obtain a lock on data directory %s. Bitcoin is probably already running. - + Server private key (default: server.pem) + - - Loading addresses... - + + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) + - Error loading addr.dat - - - - - Error loading blkindex.dat - - - - - Error loading wallet.dat: Wallet corrupted - - - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin - - - - - Wallet needed to be rewritten: restart Bitcoin to complete - - - - - Error loading wallet.dat - + This help message + - Loading block index... - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. + - - Loading wallet... - + + Loading addresses... + - - Rescanning... - + + Error loading addr.dat + + + + + Error loading blkindex.dat + - Done loading - + Error loading wallet.dat: Wallet corrupted + - Invalid -proxy address - + Error loading wallet.dat: Wallet requires newer version of Bitcoin + - Invalid amount for -paytxfee=<amount> - + Wallet needed to be rewritten: restart Bitcoin to complete + - Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. - + Error loading wallet.dat + + + + + Loading block index... + + + + + Loading wallet... + + + + + Rescanning... + + + + + Done loading + - Error: CreateThread(StartNode) failed - + Invalid -proxy address + - Warning: Disk space is low - + Invalid amount for -paytxfee=<amount> + - Unable to bind to port %d on this computer. Bitcoin is probably already running. - + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. + - Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. - + Error: CreateThread(StartNode) failed + - + + Warning: Disk space is low + + + + + Unable to bind to port %d on this computer. Bitcoin is probably already running. + + + + + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. + + + + beta - + - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_eu_ES.ts b/src/qt/locale/bitcoin_eu_ES.ts index b4e71af2e21..61a5ce4c09a 100644 --- a/src/qt/locale/bitcoin_eu_ES.ts +++ b/src/qt/locale/bitcoin_eu_ES.ts @@ -1,11 +1,13 @@ - + + + UTF-8 AboutDialog About Bitcoin - + @@ -21,7 +23,7 @@ This is experimental software. Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - + @@ -34,12 +36,12 @@ This product includes software developed by the OpenSSL Project for use in the O These are your Bitcoin addresses for receiving payments. You may want to give a different one to each sender so you can keep track of who is paying you. - + Double-click to edit address or label - + @@ -49,37 +51,37 @@ This product includes software developed by the OpenSSL Project for use in the O &New Address... - + Copy the currently selected address to the system clipboard - + &Copy to Clipboard - + Show &QR Code - + Sign a message to prove you own this address - + &Sign Message - + Delete the currently selected address from the list. Only sending addresses can be deleted. - + @@ -89,60 +91,60 @@ This product includes software developed by the OpenSSL Project for use in the O Copy address - + Copy label - + Edit - + Delete - + Export Address Book Data - + Comma separated file (*.csv) - + Error exporting - + Could not write to file %1. - + AddressTableModel - + Label - + - + Address Helbidea - + (no label) - + @@ -150,96 +152,96 @@ This product includes software developed by the OpenSSL Project for use in the O Dialog - + TextLabel - + Enter passphrase - + New passphrase - + Repeat new passphrase - + Enter the new passphrase to the wallet.<br/>Please use a passphrase of <b>10 or more random characters</b>, or <b>eight or more words</b>. - + Encrypt wallet - + This operation needs your wallet passphrase to unlock the wallet. - + Unlock wallet - + This operation needs your wallet passphrase to decrypt the wallet. - + Decrypt wallet - + Change passphrase - + Enter the old and new passphrase to the wallet. - + Confirm wallet encryption - + WARNING: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! Are you sure you wish to encrypt your wallet? - + Wallet encrypted - + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - + Warning: The Caps Lock key is on. - + @@ -247,353 +249,368 @@ Are you sure you wish to encrypt your wallet? Wallet encryption failed - + Wallet encryption failed due to an internal error. Your wallet was not encrypted. - + The supplied passphrases do not match. - + Wallet unlock failed - + The passphrase entered for the wallet decryption was incorrect. - + Wallet decryption failed - + Wallet passphrase was succesfully changed. - + BitcoinGUI - + Bitcoin Wallet - - - - - - Synchronizing with network... - + + + Synchronizing with network... + + + + Block chain synchronization in progress - + - + &Overview - + - + Show general overview of wallet - + - + &Transactions - + - + Browse transaction history - + - + &Address Book - + - + Edit the list of stored addresses and labels - + - + &Receive coins - + - + Show the list of addresses for receiving payments - + - + &Send coins - + - + Send coins to a bitcoin address - + - + Sign &message - + - + Prove you control an address - + - + E&xit - - - - - Quit application - + - &About %1 - - - - - Show information about Bitcoin - + Quit application + - About &Qt - + &About %1 + - Show information about Qt - + Show information about Bitcoin + - &Options... - + About &Qt + - Modify configuration options for bitcoin - + Show information about Qt + - Open &Bitcoin - + &Options... + - Show the Bitcoin window - - - - - &Export... - + Modify configuration options for bitcoin + - Export the data in the current tab to a file - + Open &Bitcoin + - &Encrypt Wallet - + Show the Bitcoin window + - Encrypt or decrypt wallet - + &Export... + + + + + Export the data in the current tab to a file + - &Backup Wallet - + &Encrypt Wallet + - Backup wallet to another location - - - - - &Change Passphrase - + Encrypt or decrypt wallet + + &Backup Wallet + + + + + Backup wallet to another location + + + + + &Change Passphrase + + + + Change the passphrase used for wallet encryption - + - + &File - + - + &Settings - + - + &Help - + - + Tabs toolbar - + - + Actions toolbar - + - + [testnet] - + - + bitcoin-qt - + - + %n active connection(s) to Bitcoin network - + + + - + Downloaded %1 of %2 blocks of transaction history. - + - + Downloaded %1 blocks of transaction history. - + - + %n second(s) ago - + + + - + %n minute(s) ago - + + + - + %n hour(s) ago - + + + - + %n day(s) ago - + + + - + Up to date - + - + Catching up... - + - + Last received block was generated %1. - + - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? - + - + Sending... - + - + Sent transaction - + - + Incoming transaction - + - + Date: %1 Amount: %2 Type: %3 Address: %4 - + - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> - + - + Wallet is <b>encrypted</b> and currently <b>locked</b> - + - + Backup Wallet - + - + Wallet Data (*.dat) - + - + Backup Failed - + - + There was an error trying to save the wallet data to the new location. - + + + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + @@ -601,17 +618,22 @@ Address: %4 &Unit to show amounts in: - + Choose the default subdivision unit to show in the interface, and when sending coins - + - Display addresses in transaction list - + &Display addresses in transaction list + + + + + Whether to show Bitcoin addresses in the transaction list + @@ -619,67 +641,67 @@ Address: %4 Edit Address - + &Label - + The label associated with this address book entry - + &Address - + The address associated with this address book entry. This can only be modified for sending addresses. - + New receiving address - + New sending address - + Edit receiving address - + Edit sending address - + The entered address "%1" is already in the address book. - + The entered address "%1" is not a valid bitcoin address. - + Could not unlock wallet. - + New key generation failed. - + @@ -687,87 +709,87 @@ Address: %4 &Start Bitcoin on window system startup - + Automatically start Bitcoin after the computer is turned on - + &Minimize to the tray instead of the taskbar - + Show only a tray icon after minimizing the window - + Map port using &UPnP - + Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - + M&inimize on close - + Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Quit in the menu. - + &Connect through SOCKS4 proxy: - + Connect to the Bitcon network through a SOCKS4 proxy (e.g. when connecting through Tor) - + Proxy &IP: - + IP address of the proxy (e.g. 127.0.0.1) - + &Port: - + Port of the proxy (e.g. 1234) - + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. - + Pay transaction &fee - + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. - + @@ -775,89 +797,89 @@ Address: %4 Message - + You can sign messages with your addresses to prove you own them. Be careful not to sign anything vague, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - + - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - + The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + Choose adress from address book - + Alt+A - + Paste address from clipboard - + Alt+P - + Enter the message you want to sign here - + Click "Sign Message" to get signature - + Sign a message to prove you own this address - + &Sign Message - + - Copy the currently selected address to the system clipboard - + Copy the current signature to the system clipboard + &Copy to Clipboard - + Error signing - + %1 is not a valid address. - + Private key for %1 is not available. - + Sign failed - + @@ -865,17 +887,17 @@ Address: %4 Main - + Display - + Options - + @@ -883,66 +905,62 @@ Address: %4 Form - + Balance: - + 123.456 BTC - + Number of transactions: - + 0 - + Unconfirmed: - + 0 BTC - + - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - + + Wallet + - + <b>Recent transactions</b> - + Your current balance - + Total of transactions that have yet to be confirmed, and do not yet count toward the current balance - + Total number of transactions in wallet - + @@ -950,52 +968,57 @@ p, li { white-space: pre-wrap; } Dialog - + QR Code - + - + Request Payment - + - + Amount: - + - + BTC - + - + Label: - + - + Message: - + - + &Save As... - + - + + Error encoding URI into QR Code. + + + + Save Image... - + - + PNG Images (*.png) - + @@ -1010,102 +1033,102 @@ p, li { white-space: pre-wrap; } Send Coins - + Send to multiple recipients at once - + &Add recipient... - + Remove all transaction fields - + Clear all - + Balance: - + 123.456 BTC - + Confirm the send action - + &Send - + <b>%1</b> to %2 (%3) - + Confirm send coins - + Are you sure you want to send %1? - + and - + The recepient address is not valid, please recheck. - + The amount to pay must be larger than 0. - + Amount exceeds your balance - + Total exceeds your balance when the %1 transaction fee is included - + Duplicate address found, can only send to each address once in one send operation - + Error: Transaction creation failed - + Error: The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. - + @@ -1113,63 +1136,63 @@ p, li { white-space: pre-wrap; } Form - + A&mount: - + Pay &To: - + Enter a label for this address to add it to your address book - + &Label: - + The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - + Choose address from address book - + Alt+A - + Paste address from clipboard - + Alt+P - + Remove this recipient - + Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - + @@ -1177,85 +1200,85 @@ p, li { white-space: pre-wrap; } Open for %1 blocks - + Open until %1 - + %1/offline? - + %1/unconfirmed - + %1 confirmations - + <b>Status:</b> - + , has not been successfully broadcast yet - + , broadcast through %1 node - + , broadcast through %1 nodes - + <b>Date:</b> - + <b>Source:</b> Generated<br> - + <b>From:</b> - + unknown - + <b>To:</b> - + (yours, label: - + (yours) - + @@ -1263,54 +1286,54 @@ p, li { white-space: pre-wrap; } <b>Credit:</b> - + (%1 matures in %2 more blocks) - + (not accepted) - + <b>Debit:</b> - + <b>Transaction fee:</b> - + <b>Net amount:</b> - + Message: - + Comment: - + Transaction ID: - + Generated coins must wait 120 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, it will change to "not accepted" and not be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - + @@ -1318,130 +1341,134 @@ p, li { white-space: pre-wrap; } Transaction details - + This pane shows a detailed description of the transaction - + TransactionTableModel - + Date - + - + Type - + - + Address Helbidea - + Amount - + - + Open for %n block(s) - + + + - + Open until %1 - + - + Offline (%1 confirmations) - + - + Unconfirmed (%1 of %2 confirmations) - + - + Confirmed (%1 confirmations) - + Mined balance will be available in %n more blocks - + + + This block was not received by any other nodes and will probably not be accepted! - + Generated but not accepted - + Received with - + Received from - + Sent to - + Payment to yourself - + Mined - + (n/a) - + Transaction status. Hover over this field to show number of confirmations. - + Date and time that the transaction was received. - + Type of transaction. - + Destination address of transaction. - + Amount removed from or added to balance. - + @@ -1450,127 +1477,127 @@ p, li { white-space: pre-wrap; } All - + Today - + This week - + This month - + Last month - + This year - + Range... - + Received with - + Sent to - + To yourself - + Mined - + Other - + Enter address or label to search - + Min amount - + Copy address - + Copy label - + Copy amount - + Edit label - + Show details... - + Export Transaction Data - + Comma separated file (*.csv) - + Confirmed - + Date - + Type - + Label - + @@ -1580,32 +1607,32 @@ p, li { white-space: pre-wrap; } Amount - + ID - + Error exporting - + Could not write to file %1. - + Range: - + to - + @@ -1613,351 +1640,351 @@ p, li { white-space: pre-wrap; } Sending... - + bitcoin-core - - - Bitcoin version - - - - - Usage: - - - - - Send command to -server or bitcoind - - - - - List commands - - - - - Get help for a command - - - Options: - + Bitcoin version + - Specify configuration file (default: bitcoin.conf) - + Usage: + - Specify pid file (default: bitcoind.pid) - + Send command to -server or bitcoind + - Generate coins - + List commands + - Don't generate coins - + Get help for a command + - Start minimized - + Options: + - Specify data directory - + Specify configuration file (default: bitcoin.conf) + - Specify connection timeout (in milliseconds) - + Specify pid file (default: bitcoind.pid) + - Connect through socks4 proxy - + Generate coins + - Allow DNS lookups for addnode and connect - + Don't generate coins + - Listen for connections on <port> (default: 8333 or testnet: 18333) - + Start minimized + - Maintain at most <n> connections to peers (default: 125) - + Specify data directory + - Add a node to connect to - + Specify connection timeout (in milliseconds) + - Connect only to the specified node - + Connect through socks4 proxy + - Don't accept connections from outside - + Allow DNS lookups for addnode and connect + - Don't bootstrap list of peers using DNS - + Listen for connections on <port> (default: 8333 or testnet: 18333) + - Threshold for disconnecting misbehaving peers (default: 100) - + Maintain at most <n> connections to peers (default: 125) + - Number of seconds to keep misbehaving peers from reconnecting (default: 86400) - + Add a node to connect to + + + + + Connect only to the specified node + + + + + Don't accept connections from outside + - Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) - + Don't bootstrap list of peers using DNS + - Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) - + Threshold for disconnecting misbehaving peers (default: 100) + - Don't attempt to use UPnP to map the listening port - - - - - Attempt to use UPnP to map the listening port - - - - - Fee per kB to add to transactions you send - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) + - Accept command line and JSON-RPC commands - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) + - Run in the background as a daemon and accept commands - + Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) + - Use the test network - + Don't attempt to use UPnP to map the listening port + - Output extra debugging information - + Attempt to use UPnP to map the listening port + - Prepend debug output with timestamp - + Fee per kB to add to transactions you send + - Send trace/debug info to console instead of debug.log file - + Accept command line and JSON-RPC commands + - Send trace/debug info to debugger - + Run in the background as a daemon and accept commands + - Username for JSON-RPC connections - + Use the test network + - Password for JSON-RPC connections - + Output extra debugging information + - Listen for JSON-RPC connections on <port> (default: 8332) - + Prepend debug output with timestamp + - Allow JSON-RPC connections from specified IP address - + Send trace/debug info to console instead of debug.log file + - Send commands to node running on <ip> (default: 127.0.0.1) - + Send trace/debug info to debugger + - Set key pool size to <n> (default: 100) - + Username for JSON-RPC connections + - Rescan the block chain for missing wallet transactions - + Password for JSON-RPC connections + - -SSL options: (see the Bitcoin Wiki for SSL setup instructions) - + Listen for JSON-RPC connections on <port> (default: 8332) + + + + + Allow JSON-RPC connections from specified IP address + + + + + Send commands to node running on <ip> (default: 127.0.0.1) + - Use OpenSSL (https) for JSON-RPC connections - + Set key pool size to <n> (default: 100) + - Server certificate file (default: server.cert) - + Rescan the block chain for missing wallet transactions + - Server private key (default: server.pem) - + +SSL options: (see the Bitcoin Wiki for SSL setup instructions) + - - Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - + + Use OpenSSL (https) for JSON-RPC connections + - This help message - + Server certificate file (default: server.cert) + - Cannot obtain a lock on data directory %s. Bitcoin is probably already running. - + Server private key (default: server.pem) + - - Loading addresses... - + + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) + - Error loading addr.dat - - - - - Error loading blkindex.dat - - - - - Error loading wallet.dat: Wallet corrupted - - - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin - - - - - Wallet needed to be rewritten: restart Bitcoin to complete - - - - - Error loading wallet.dat - + This help message + - Loading block index... - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. + - - Loading wallet... - + + Loading addresses... + - - Rescanning... - + + Error loading addr.dat + + + + + Error loading blkindex.dat + - Done loading - + Error loading wallet.dat: Wallet corrupted + - Invalid -proxy address - + Error loading wallet.dat: Wallet requires newer version of Bitcoin + - Invalid amount for -paytxfee=<amount> - + Wallet needed to be rewritten: restart Bitcoin to complete + - Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. - + Error loading wallet.dat + + + + + Loading block index... + + + + + Loading wallet... + + + + + Rescanning... + + + + + Done loading + - Error: CreateThread(StartNode) failed - + Invalid -proxy address + - Warning: Disk space is low - + Invalid amount for -paytxfee=<amount> + - Unable to bind to port %d on this computer. Bitcoin is probably already running. - + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. + - Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. - + Error: CreateThread(StartNode) failed + - + + Warning: Disk space is low + + + + + Unable to bind to port %d on this computer. Bitcoin is probably already running. + + + + + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. + + + + beta - + - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_fa.ts b/src/qt/locale/bitcoin_fa.ts index ed2aff6ac28..0f95796c1fa 100644 --- a/src/qt/locale/bitcoin_fa.ts +++ b/src/qt/locale/bitcoin_fa.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -138,17 +140,17 @@ This product includes software developed by the OpenSSL Project for use in the O AddressTableModel - + Label ر چسب - + Address ایل جدا - + (no label) خطای صادرت @@ -295,278 +297,288 @@ Are you sure you wish to encrypt your wallet? BitcoinGUI - + Bitcoin Wallet پنجره بیتکویین - - + + Synchronizing with network... همگام سازی با شبکه ... - + Block chain synchronization in progress همگام زنجیر بلوک در حال پیشرفت - + &Overview بررسی اجمالی - + Show general overview of wallet نمای کلی پنجره نشان بده - + &Transactions - &amp;معاملات + &معاملات - + Browse transaction history نمایش تاریخ معاملات - + &Address Book دفتر آدرس - + Edit the list of stored addresses and labels ویرایش لیست آدرسها و بر چسب های ذخیره ای - + &Receive coins در یافت سکه - + Show the list of addresses for receiving payments نمایش لیست آدرس ها برای در یافت پر داخت ها - + &Send coins رسال سکه ها - + Send coins to a bitcoin address ارسال سکه به آدرس بیتکویین - + Sign &message امضای &پیام - + Prove you control an address اثبات کنید که روی یک نشانی کنترل دارید - + E&xit خروج - + Quit application خروج از برنامه - + &About %1 &حدود%1 - + Show information about Bitcoin نمایش اطلاعات در مورد بیتکویین - + About &Qt درباره &Qt - + Show information about Qt نمایش اطلاعات درباره Qt - + &Options... تنظیمات... - + Modify configuration options for bitcoin صلاح تنظیمات برای بیتکویین - + Open &Bitcoin - باز کردن &amp;بیتکویین + باز کردن &بیتکویین - + Show the Bitcoin window نمایش پنجره بیتکویین - + &Export... &;صادرات - + Export the data in the current tab to a file - + - + &Encrypt Wallet &رمز بندی پنجره - + Encrypt or decrypt wallet رمز بندی یا رمز گشایی پنجره - + &Backup Wallet - + - + Backup wallet to another location - + - + &Change Passphrase تغییر عبارت عبور - + Change the passphrase used for wallet encryption عبارت عبور رمز گشایی پنجره تغییر کنید - + &File فایل - + &Settings تنظیمات - + &Help کمک - + Tabs toolbar نوار ابزار زبانه ها - + Actions toolbar نوار ابزار عملیت - + [testnet] آزمایش شبکه - + bitcoin-qt بیتکویین - + %n active connection(s) to Bitcoin network - در صد ارتباطات فعال بیتکویین با شبکه %n + + در صد ارتباطات فعال بیتکویین با شبکه %n + - + Downloaded %1 of %2 blocks of transaction history. %1 %2 دانلود 1% 2% بلوک معاملات - + Downloaded %1 blocks of transaction history. دانلود بلوکهای معملات %1 - + %n second(s) ago - %n بعد از چند دقیقه + + %n بعد از چند دقیقه + - + %n minute(s) ago - %n بعد از چند دقیقه + + %n بعد از چند دقیقه + - + %n hour(s) ago - %n بعد از چند دقیقه + + %n بعد از چند دقیقه + - + %n day(s) ago - %n بعد از چند روزز + + %n بعد از چند روزز + - + Up to date تا تاریخ - + Catching up... ابتلا به بالا - + Last received block was generated %1. خرین بلوک در یافت شده تولید شده بود %1 - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? این معامله از اندازه محدوده بیشتر است. شما می توانید آد را با دستمزد 1% بفرستید که شامل گره معامله شما می باشد و به شبکه های اینترنتی کمک خواهد کردو آیا شما می خواهید این پول پر داخت%1 - + Sending... ارسال... - + Sent transaction معامله ارسال شده - + Incoming transaction معامله در یافت شده - + Date: %1 Amount: %2 Type: %3 @@ -578,34 +590,39 @@ Address: %4 آدرس %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> زمایش شبکهه - + Wallet is <b>encrypted</b> and currently <b>locked</b> زمایش شبکه - + Backup Wallet - + - + Wallet Data (*.dat) - + - + Backup Failed - + - + There was an error trying to save the wallet data to the new location. - + + + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + @@ -622,8 +639,13 @@ Address: %4 - Display addresses in transaction list - نمایش آدرس ها در لیست معامله + &Display addresses in transaction list + &نمایش آدرس ها در لیست معامله + + + + Whether to show Bitcoin addresses in the transaction list + @@ -774,7 +796,7 @@ Address: %4 Pay transaction &fee - دستمزد&amp;پر داخت معامله + دستمزد&پر داخت معامله @@ -792,12 +814,12 @@ Address: %4 You can sign messages with your addresses to prove you own them. Be careful not to sign anything vague, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - + - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - آدرس برای ارسال پر داخت (bijvoorbeeld: 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + @@ -841,8 +863,8 @@ Address: %4 - Copy the currently selected address to the system clipboard - آدرس انتخاب شده در سیستم تخته رسم گیره دار کپی کنید + Copy the current signature to the system clipboard + @@ -928,20 +950,12 @@ Address: %4 0 - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">⏎ -<html><head><meta name="qrichtext" content="1" /><style type="text/css">⏎ -p, li { white-space: pre-wrap; }⏎ -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;">⏎ -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">کیف پول</span></p></body></html> + + Wallet + کیف پول - + <b>Recent transactions</b> اخرین معاملات&lt @@ -974,44 +988,49 @@ p, li { white-space: pre-wrap; }⏎ کد QR - + Request Payment درخواست پرداخت - + Amount: مقدار: - + BTC BTC - + Label: برچسب: - + Message: پیام - + &Save As... &ذخیره به عنوان... - - Save Image... - + + Error encoding URI into QR Code. + - + + Save Image... + + + + PNG Images (*.png) - + @@ -1134,12 +1153,12 @@ p, li { white-space: pre-wrap; }⏎ A&mount: - A&amp;مبلغ : + A&مبلغ : Pay &To: - به&amp;پر داخت : + به&پر داخت : @@ -1345,54 +1364,58 @@ p, li { white-space: pre-wrap; }⏎ TransactionTableModel - + Date تاریخ - + Type نوع - + Address ایل جدا - + Amount مبلغ - + Open for %n block(s) - بلوک %n باز شده برای + + بلوک %n باز شده برای + - + Open until %1 از شده تا 1%1 - + Offline (%1 confirmations) افلایین (%1) - + Unconfirmed (%1 of %2 confirmations) تایید نشده (%1/%2) - + Confirmed (%1 confirmations) تایید شده (%1) Mined balance will be available in %n more blocks - و بیشتر باشند قابل قابول می شود %n تزار اصلی بعد از اینکه بلوکها + + و بیشتر باشند قابل قابول می شود %n تزار اصلی بعد از اینکه بلوکها + @@ -1635,346 +1658,346 @@ p, li { white-space: pre-wrap; }⏎ bitcoin-core - + Bitcoin version سخه بیتکویین - + Usage: ستفاده : - + Send command to -server or bitcoind ارسال فرمان به سرور یا باتکویین - + List commands لیست فومان ها - + Get help for a command کمک برای فرمان - + Options: تنظیمات - + Specify configuration file (default: bitcoin.conf) (: bitcoin.confپیش فرض: )فایل تنظیمی خاص - + Specify pid file (default: bitcoind.pid) (bitcoind.pidپیش فرض : ) فایل پید خاص - + Generate coins سکه های تولید شده - + Don't generate coins تولید سکه ها - + Start minimized شروع حد اقل - + Specify data directory دایرکتور اطلاعاتی خاص - + Specify connection timeout (in milliseconds) (میلی ثانیه )فاصله ارتباط خاص - + Connect through socks4 proxy socks4 proxy ارتباط توسط - + Allow DNS lookups for addnode and connect اجازه متغیر دی ان اس برای اضافه گره یا ارتباط - + Listen for connections on <port> (default: 8333 or testnet: 18333) برای اتصالات به <port> (پیش‌فرض: 8333 یا تست‌نت: 18333) گوش کنید - + Maintain at most <n> connections to peers (default: 125) حداکثر <n> اتصال با همکاران برقرار داشته باشید (پیش‌فرض: 125) - + Add a node to connect to ضافه گره برای ارتباط به - + Connect only to the specified node ارتباط فقط به گره خاص - + Don't accept connections from outside قابل ارتباطات از بیرون - + Don't bootstrap list of peers using DNS فهرست همکاران را با استفاده از DNS خودراه‌اندازی نکنید - + Threshold for disconnecting misbehaving peers (default: 100) آستانه برای قطع ارتباط با همکاران بدرفتار (پیش‌فرض: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) مدت زمان به ثانیه برای جلوگیری از همکاران بدرفتار برای اتصال دوباره (پیش‌فرض: 86400) - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) حداکثر بافر دریافتی در هر اتصال، 1000*<n> (پیش‌فرض: 10000) - + Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) حداکثر بافر ارسالی در هر اتصال، 1000*<n> (پیش‌فرض: 10000) - + Don't attempt to use UPnP to map the listening port برای ترسیم بندر شنیدنی UPnP استفاده - + Attempt to use UPnP to map the listening port برای ترسیم بندر شنیدنی UPnP استفاده - + Fee per kB to add to transactions you send نرخ هر کیلوبایت برای اضافه کردن به تراکنش‌هایی که می‌فرستید - + Accept command line and JSON-RPC commands JSON-RPC قابل فرمانها و - + Run in the background as a daemon and accept commands اجرای در پس زمینه به عنوان شبح و قبول فرمان ها - + Use the test network استفاده شبکه آزمایش - + Output extra debugging information اطلاعات اشکال‌زدایی اضافی خروجی - + Prepend debug output with timestamp به خروجی اشکال‌زدایی برچسب زمان بزنید - + Send trace/debug info to console instead of debug.log file اطلاعات ردگیری/اشکال‌زدایی را به جای فایل لاگ اشکال‌زدایی به کنسول بفرستید - + Send trace/debug info to debugger اطلاعات ردگیری/اشکال‌زدایی را به اشکال‌زدا بفرستید - + Username for JSON-RPC connections JSON-RPC شناسه برای ارتباطات - + Password for JSON-RPC connections JSON-RPC عبارت عبور برای ارتباطات - + Listen for JSON-RPC connections on <port> (default: 8332) ( 8332پیش فرض :) &lt;poort&gt; JSON-RPC شنوایی برای ارتباطات - + Allow JSON-RPC connections from specified IP address از آدرس آی پی خاص JSON-RPC قبول ارتباطات - + Send commands to node running on <ip> (default: 127.0.0.1) (127.0.0.1پیش فرض: ) &lt;ip&gt; دادن فرمانها برای استفاده گره ها روی - + Set key pool size to <n> (default: 100) (100پیش فرض:)&lt;n&gt; گذاشتن اندازه کلید روی - + Rescan the block chain for missing wallet transactions اسکان مجدد زنجیر بلوکها برای گم والت معامله - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) ( نگاه کنید Bitcoin Wiki در SSLتنظیمات ):SSL گزینه های - + Use OpenSSL (https) for JSON-RPC connections JSON-RPCبرای ارتباطات استفاده کنید OpenSSL (https) - + Server certificate file (default: server.cert) (server.certپیش فرض: )گواهی نامه سرور - + Server private key (default: server.pem) (server.pemپیش فرض: ) کلید خصوصی سرور - + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) رمز های قابل قبول( TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - + This help message پیام کمکی - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. رمز گشایی دایرکتور داده ها امکان پذیر نیست. شاید بیت کویین در حال فعال می باشد%s - + Loading addresses... بار گیری آدرس ها - + Error loading addr.dat خطا در بارگیری addr.dat - + Error loading blkindex.dat خطا در بارگیری blkindex.dat - + Error loading wallet.dat: Wallet corrupted خطا در بارگیری wallet.dat: کیف پول خراب شده است - + Error loading wallet.dat: Wallet requires newer version of Bitcoin خطا در بارگیری wallet.dat: کیف پول به ویرایش جدیدتری از Biticon نیاز دارد - + Wallet needed to be rewritten: restart Bitcoin to complete سلام - + Error loading wallet.dat خطا در بارگیری wallet.dat - + Loading block index... بار گیری شاخص بلوک - + Loading wallet... بار گیری والت - + Rescanning... اسکان مجدد - + Done loading بار گیری انجام شده است - + Invalid -proxy address آدرس پروکسی معتبر نیست - + Invalid amount for -paytxfee=<amount> paytxfee=&lt;بالغ &gt;مبلغ نا معتبر - + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. خطا : پر داخت خیلی بالا است. این پر داخت معامله است که شما هنگام ارسال معامله باید پر داخت کنید - + Error: CreateThread(StartNode) failed خطا :ایجاد موضوع(گره) اشتباه بود - + Warning: Disk space is low هشدار: جای دیسک پایین است - + Unable to bind to port %d on this computer. Bitcoin is probably already running. وسل بندر به کامپیوتر امکان پذیر نیست. شاید بیتکویید در حال فعال است%d - + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. هشدار: تاریخ و ساعت کامپیوتر شما چک کنید. اگر ساعت درست نیست بیتکویین مناسب نخواهد کار کرد - + beta بتا - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_fa_IR.ts b/src/qt/locale/bitcoin_fa_IR.ts index 2e8df62f043..d8acb31ec05 100644 --- a/src/qt/locale/bitcoin_fa_IR.ts +++ b/src/qt/locale/bitcoin_fa_IR.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -21,7 +23,7 @@ This is experimental software. Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - + @@ -29,120 +31,120 @@ This product includes software developed by the OpenSSL Project for use in the O Address Book - + These are your Bitcoin addresses for receiving payments. You may want to give a different one to each sender so you can keep track of who is paying you. - + Double-click to edit address or label - + Create a new address - + &New Address... - + Copy the currently selected address to the system clipboard - + &Copy to Clipboard - + Show &QR Code - + Sign a message to prove you own this address - + &Sign Message - + Delete the currently selected address from the list. Only sending addresses can be deleted. - + &Delete - + Copy address - + Copy label - + Edit - + Delete - + Export Address Book Data - + Comma separated file (*.csv) - + Error exporting - + Could not write to file %1. - + AddressTableModel - + Label - + - + Address - + - + (no label) - + @@ -150,96 +152,96 @@ This product includes software developed by the OpenSSL Project for use in the O Dialog - + TextLabel - + Enter passphrase - + New passphrase - + Repeat new passphrase - + Enter the new passphrase to the wallet.<br/>Please use a passphrase of <b>10 or more random characters</b>, or <b>eight or more words</b>. - + Encrypt wallet - + This operation needs your wallet passphrase to unlock the wallet. - + Unlock wallet - + This operation needs your wallet passphrase to decrypt the wallet. - + Decrypt wallet - + Change passphrase - + Enter the old and new passphrase to the wallet. - + Confirm wallet encryption - + WARNING: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! Are you sure you wish to encrypt your wallet? - + Wallet encrypted - + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - + Warning: The Caps Lock key is on. - + @@ -247,353 +249,368 @@ Are you sure you wish to encrypt your wallet? Wallet encryption failed - + Wallet encryption failed due to an internal error. Your wallet was not encrypted. - + The supplied passphrases do not match. - + Wallet unlock failed - + The passphrase entered for the wallet decryption was incorrect. - + Wallet decryption failed - + Wallet passphrase was succesfully changed. - + BitcoinGUI - + Bitcoin Wallet - - - - - - Synchronizing with network... - + + + Synchronizing with network... + + + + Block chain synchronization in progress - + - + &Overview - + - + Show general overview of wallet - + - + &Transactions - + - + Browse transaction history - + - + &Address Book - + - + Edit the list of stored addresses and labels - + - + &Receive coins - + - + Show the list of addresses for receiving payments - + - + &Send coins - + - + Send coins to a bitcoin address - + - + Sign &message - + - + Prove you control an address - + - + E&xit - - - - - Quit application - + - &About %1 - - - - - Show information about Bitcoin - + Quit application + - About &Qt - + &About %1 + - Show information about Qt - + Show information about Bitcoin + - &Options... - + About &Qt + - Modify configuration options for bitcoin - + Show information about Qt + - Open &Bitcoin - + &Options... + - Show the Bitcoin window - - - - - &Export... - + Modify configuration options for bitcoin + - Export the data in the current tab to a file - + Open &Bitcoin + - &Encrypt Wallet - + Show the Bitcoin window + - Encrypt or decrypt wallet - + &Export... + + + + + Export the data in the current tab to a file + - &Backup Wallet - + &Encrypt Wallet + - Backup wallet to another location - - - - - &Change Passphrase - + Encrypt or decrypt wallet + + &Backup Wallet + + + + + Backup wallet to another location + + + + + &Change Passphrase + + + + Change the passphrase used for wallet encryption - + - + &File - + - + &Settings - + - + &Help - + - + Tabs toolbar - + - + Actions toolbar - + - + [testnet] - + - + bitcoin-qt - + - + %n active connection(s) to Bitcoin network - + + + - + Downloaded %1 of %2 blocks of transaction history. - + - + Downloaded %1 blocks of transaction history. - + - + %n second(s) ago - + + + - + %n minute(s) ago - + + + - + %n hour(s) ago - + + + - + %n day(s) ago - + + + - + Up to date - + - + Catching up... - + - + Last received block was generated %1. - + - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? - + - + Sending... - + - + Sent transaction - + - + Incoming transaction - + - + Date: %1 Amount: %2 Type: %3 Address: %4 - + - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> - + - + Wallet is <b>encrypted</b> and currently <b>locked</b> - + - + Backup Wallet - + - + Wallet Data (*.dat) - + - + Backup Failed - + - + There was an error trying to save the wallet data to the new location. - + + + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + @@ -601,17 +618,22 @@ Address: %4 &Unit to show amounts in: - + Choose the default subdivision unit to show in the interface, and when sending coins - + - Display addresses in transaction list - + &Display addresses in transaction list + &نمایش آدرس ها در لیست معامله + + + + Whether to show Bitcoin addresses in the transaction list + @@ -619,67 +641,67 @@ Address: %4 Edit Address - + &Label - + The label associated with this address book entry - + &Address - + The address associated with this address book entry. This can only be modified for sending addresses. - + New receiving address - + New sending address - + Edit receiving address - + Edit sending address - + The entered address "%1" is already in the address book. - + The entered address "%1" is not a valid bitcoin address. - + Could not unlock wallet. - + New key generation failed. - + @@ -687,87 +709,87 @@ Address: %4 &Start Bitcoin on window system startup - + Automatically start Bitcoin after the computer is turned on - + &Minimize to the tray instead of the taskbar - + Show only a tray icon after minimizing the window - + Map port using &UPnP - + Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - + M&inimize on close - + Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Quit in the menu. - + &Connect through SOCKS4 proxy: - + Connect to the Bitcon network through a SOCKS4 proxy (e.g. when connecting through Tor) - + Proxy &IP: - + IP address of the proxy (e.g. 127.0.0.1) - + &Port: - + Port of the proxy (e.g. 1234) - + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. - + Pay transaction &fee - + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. - + @@ -775,89 +797,89 @@ Address: %4 Message - + You can sign messages with your addresses to prove you own them. Be careful not to sign anything vague, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - + - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - + The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + Choose adress from address book - + Alt+A - + Paste address from clipboard - + Alt+P - + Enter the message you want to sign here - + Click "Sign Message" to get signature - + Sign a message to prove you own this address - + &Sign Message - + - Copy the currently selected address to the system clipboard - + Copy the current signature to the system clipboard + &Copy to Clipboard - + Error signing - + %1 is not a valid address. - + Private key for %1 is not available. - + Sign failed - + @@ -865,17 +887,17 @@ Address: %4 Main - + Display - + Options - + @@ -883,66 +905,62 @@ Address: %4 Form - + Balance: - + 123.456 BTC - + Number of transactions: - + 0 - + Unconfirmed: - + 0 BTC - + - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - + + Wallet + کیف پول - + <b>Recent transactions</b> - + Your current balance - + Total of transactions that have yet to be confirmed, and do not yet count toward the current balance - + Total number of transactions in wallet - + @@ -950,52 +968,57 @@ p, li { white-space: pre-wrap; } Dialog - + QR Code - + - + Request Payment - + - + Amount: - + - + BTC - + - + Label: - + - + Message: - + - + &Save As... - + - + + Error encoding URI into QR Code. + + + + Save Image... - + - + PNG Images (*.png) - + @@ -1010,102 +1033,102 @@ p, li { white-space: pre-wrap; } Send Coins - + Send to multiple recipients at once - + &Add recipient... - + Remove all transaction fields - + Clear all - + Balance: - + 123.456 BTC - + Confirm the send action - + &Send - + <b>%1</b> to %2 (%3) - + Confirm send coins - + Are you sure you want to send %1? - + and - + The recepient address is not valid, please recheck. - + The amount to pay must be larger than 0. - + Amount exceeds your balance - + Total exceeds your balance when the %1 transaction fee is included - + Duplicate address found, can only send to each address once in one send operation - + Error: Transaction creation failed - + Error: The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. - + @@ -1113,63 +1136,63 @@ p, li { white-space: pre-wrap; } Form - + A&mount: - + Pay &To: - + Enter a label for this address to add it to your address book - + &Label: - + The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - + Choose address from address book - + Alt+A - + Paste address from clipboard - + Alt+P - + Remove this recipient - + Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - + @@ -1177,85 +1200,85 @@ p, li { white-space: pre-wrap; } Open for %1 blocks - + Open until %1 - + %1/offline? - + %1/unconfirmed - + %1 confirmations - + <b>Status:</b> - + , has not been successfully broadcast yet - + , broadcast through %1 node - + , broadcast through %1 nodes - + <b>Date:</b> - + <b>Source:</b> Generated<br> - + <b>From:</b> - + unknown - + <b>To:</b> - + (yours, label: - + (yours) - + @@ -1263,54 +1286,54 @@ p, li { white-space: pre-wrap; } <b>Credit:</b> - + (%1 matures in %2 more blocks) - + (not accepted) - + <b>Debit:</b> - + <b>Transaction fee:</b> - + <b>Net amount:</b> - + Message: - + Comment: - + Transaction ID: - + Generated coins must wait 120 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, it will change to "not accepted" and not be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - + @@ -1318,130 +1341,134 @@ p, li { white-space: pre-wrap; } Transaction details - + This pane shows a detailed description of the transaction - + TransactionTableModel - + Date - + - + Type - + - + Address - + - + Amount - + - + Open for %n block(s) - + + + - + Open until %1 - + - + Offline (%1 confirmations) - + - + Unconfirmed (%1 of %2 confirmations) - + - + Confirmed (%1 confirmations) - + Mined balance will be available in %n more blocks - + + + This block was not received by any other nodes and will probably not be accepted! - + Generated but not accepted - + Received with - + Received from - + Sent to - + Payment to yourself - + Mined - + (n/a) - + Transaction status. Hover over this field to show number of confirmations. - + Date and time that the transaction was received. - + Type of transaction. - + Destination address of transaction. - + Amount removed from or added to balance. - + @@ -1450,162 +1477,162 @@ p, li { white-space: pre-wrap; } All - + Today - + This week - + This month - + Last month - + This year - + Range... - + Received with - + Sent to - + To yourself - + Mined - + Other - + Enter address or label to search - + Min amount - + Copy address - + Copy label - + Copy amount - + Edit label - + Show details... - + Export Transaction Data - + Comma separated file (*.csv) - + Confirmed - + Date - + Type - + Label - + Address - + Amount - + ID - + Error exporting - + Could not write to file %1. - + Range: - + to - + @@ -1613,351 +1640,351 @@ p, li { white-space: pre-wrap; } Sending... - + bitcoin-core - - - Bitcoin version - - - - - Usage: - - - - - Send command to -server or bitcoind - - - - - List commands - - - - - Get help for a command - - - Options: - + Bitcoin version + - Specify configuration file (default: bitcoin.conf) - + Usage: + - Specify pid file (default: bitcoind.pid) - + Send command to -server or bitcoind + - Generate coins - + List commands + - Don't generate coins - + Get help for a command + - Start minimized - + Options: + - Specify data directory - + Specify configuration file (default: bitcoin.conf) + - Specify connection timeout (in milliseconds) - + Specify pid file (default: bitcoind.pid) + - Connect through socks4 proxy - + Generate coins + - Allow DNS lookups for addnode and connect - + Don't generate coins + - Listen for connections on <port> (default: 8333 or testnet: 18333) - + Start minimized + - Maintain at most <n> connections to peers (default: 125) - + Specify data directory + - Add a node to connect to - + Specify connection timeout (in milliseconds) + - Connect only to the specified node - + Connect through socks4 proxy + - Don't accept connections from outside - + Allow DNS lookups for addnode and connect + - Don't bootstrap list of peers using DNS - + Listen for connections on <port> (default: 8333 or testnet: 18333) + - Threshold for disconnecting misbehaving peers (default: 100) - + Maintain at most <n> connections to peers (default: 125) + - Number of seconds to keep misbehaving peers from reconnecting (default: 86400) - + Add a node to connect to + + + + + Connect only to the specified node + + + + + Don't accept connections from outside + - Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) - + Don't bootstrap list of peers using DNS + - Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) - + Threshold for disconnecting misbehaving peers (default: 100) + - Don't attempt to use UPnP to map the listening port - - - - - Attempt to use UPnP to map the listening port - - - - - Fee per kB to add to transactions you send - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) + - Accept command line and JSON-RPC commands - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) + - Run in the background as a daemon and accept commands - + Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) + - Use the test network - + Don't attempt to use UPnP to map the listening port + - Output extra debugging information - + Attempt to use UPnP to map the listening port + - Prepend debug output with timestamp - + Fee per kB to add to transactions you send + - Send trace/debug info to console instead of debug.log file - + Accept command line and JSON-RPC commands + - Send trace/debug info to debugger - + Run in the background as a daemon and accept commands + - Username for JSON-RPC connections - + Use the test network + - Password for JSON-RPC connections - + Output extra debugging information + - Listen for JSON-RPC connections on <port> (default: 8332) - + Prepend debug output with timestamp + - Allow JSON-RPC connections from specified IP address - + Send trace/debug info to console instead of debug.log file + - Send commands to node running on <ip> (default: 127.0.0.1) - + Send trace/debug info to debugger + - Set key pool size to <n> (default: 100) - + Username for JSON-RPC connections + - Rescan the block chain for missing wallet transactions - + Password for JSON-RPC connections + - -SSL options: (see the Bitcoin Wiki for SSL setup instructions) - + Listen for JSON-RPC connections on <port> (default: 8332) + + + + + Allow JSON-RPC connections from specified IP address + + + + + Send commands to node running on <ip> (default: 127.0.0.1) + - Use OpenSSL (https) for JSON-RPC connections - + Set key pool size to <n> (default: 100) + - Server certificate file (default: server.cert) - + Rescan the block chain for missing wallet transactions + - Server private key (default: server.pem) - + +SSL options: (see the Bitcoin Wiki for SSL setup instructions) + - - Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - + + Use OpenSSL (https) for JSON-RPC connections + - This help message - + Server certificate file (default: server.cert) + - Cannot obtain a lock on data directory %s. Bitcoin is probably already running. - + Server private key (default: server.pem) + - - Loading addresses... - + + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) + - Error loading addr.dat - - - - - Error loading blkindex.dat - - - - - Error loading wallet.dat: Wallet corrupted - - - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin - - - - - Wallet needed to be rewritten: restart Bitcoin to complete - - - - - Error loading wallet.dat - + This help message + - Loading block index... - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. + - - Loading wallet... - + + Loading addresses... + - - Rescanning... - + + Error loading addr.dat + + + + + Error loading blkindex.dat + - Done loading - + Error loading wallet.dat: Wallet corrupted + - Invalid -proxy address - + Error loading wallet.dat: Wallet requires newer version of Bitcoin + - Invalid amount for -paytxfee=<amount> - + Wallet needed to be rewritten: restart Bitcoin to complete + - Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. - + Error loading wallet.dat + + + + + Loading block index... + + + + + Loading wallet... + + + + + Rescanning... + + + + + Done loading + - Error: CreateThread(StartNode) failed - + Invalid -proxy address + - Warning: Disk space is low - + Invalid amount for -paytxfee=<amount> + - Unable to bind to port %d on this computer. Bitcoin is probably already running. - + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. + - Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. - + Error: CreateThread(StartNode) failed + - + + Warning: Disk space is low + + + + + Unable to bind to port %d on this computer. Bitcoin is probably already running. + + + + + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. + + + + beta - + - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_fi.ts b/src/qt/locale/bitcoin_fi.ts index 8b6481930c7..a74b0a15019 100644 --- a/src/qt/locale/bitcoin_fi.ts +++ b/src/qt/locale/bitcoin_fi.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -136,17 +138,17 @@ This product includes software developed by the OpenSSL Project for use in the O AddressTableModel - + Label Nimi - + Address Osoite - + (no label) (ei nimeä) @@ -293,278 +295,293 @@ Tahdotko varmasti salata lompakon? BitcoinGUI - + Bitcoin Wallet Bitcoin-lompakko - - + + Synchronizing with network... Synkronoidaan verkon kanssa... - + Block chain synchronization in progress Block chainin synkronointi kesken - + &Overview &Yleisnäkymä - + Show general overview of wallet Näyttää kokonaiskatsauksen lompakon tilanteesta - + &Transactions &Rahansiirrot - + Browse transaction history Selaa rahansiirtohistoriaa - + &Address Book &Osoitekirja - + Edit the list of stored addresses and labels Muokkaa tallennettujen nimien ja osoitteiden listaa - + &Receive coins &Bitcoinien vastaanottaminen - + Show the list of addresses for receiving payments Näytä Bitcoinien vastaanottamiseen käytetyt osoitteet - + &Send coins &Lähetä Bitcoineja - + Send coins to a bitcoin address Lähetä Bitcoin-osoitteeseen - + Sign &message Allekirjoita &viesti - + Prove you control an address Todista että hallitset osoitetta - + E&xit L&opeta - + Quit application Lopeta ohjelma - + &About %1 &Tietoja %1 - + Show information about Bitcoin Näytä tietoa Bitcoin-projektista - + About &Qt Tietoja &Qt - + Show information about Qt Näytä tietoja QT:ta - + &Options... &Asetukset... - + Modify configuration options for bitcoin Muokkaa asetuksia - + Open &Bitcoin Avaa &Bitcoin - + Show the Bitcoin window Näytä Bitcoin-ikkuna - + &Export... &Vie... - + Export the data in the current tab to a file Vie aukiolevan välilehden tiedot tiedostoon - + &Encrypt Wallet &Salaa lompakko - + Encrypt or decrypt wallet Kryptaa tai dekryptaa lompakko - + &Backup Wallet &Varmuuskopioi lompakko - + Backup wallet to another location Varmuuskopioi lompakko toiseen sijaintiin - + &Change Passphrase &Vaihda tunnuslause - + Change the passphrase used for wallet encryption Vaihda lompakon salaukseen käytettävä tunnuslause - + &File &Tiedosto - + &Settings &Asetukset - + &Help &Apua - + Tabs toolbar Välilehtipalkki - + Actions toolbar Toimintopalkki - + [testnet] [testnet] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - %n aktiivinen yhteys Bitcoin-verkkoon%n aktiivista yhteyttä Bitcoin-verkkoon + + %n aktiivinen yhteys Bitcoin-verkkoon + %n aktiivista yhteyttä Bitcoin-verkkoon + - + Downloaded %1 of %2 blocks of transaction history. Ladattu %1 of %2 rahansiirtohistorian lohkoa. - + Downloaded %1 blocks of transaction history. Ladattu %1 lohkoa rahansiirron historiasta. - + %n second(s) ago - %n sekunti sitten%n sekuntia sitten + + %n sekunti sitten + %n sekuntia sitten + - + %n minute(s) ago - %n minuutti sitten%n minuuttia sitten + + %n minuutti sitten + %n minuuttia sitten + - + %n hour(s) ago - %n tunti sitten%n tuntia sitten + + %n tunti sitten + %n tuntia sitten + - + %n day(s) ago - %n päivä sitten%n päivää sitten + + %n päivä sitten + %n päivää sitten + - + Up to date Ohjelmisto on ajan tasalla - + Catching up... Kurotaan kiinni... - + Last received block was generated %1. Viimeisin vastaanotettu lohko tuotettu %1. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? Tämä rahansiirto ylittää kokorajoituksen. Voit siitä huolimatta lähettää sen %1 siirtopalkkion mikä menee solmuille jotka käsittelevät rahansiirtosi tämä auttaa myös verkostoa. Haluatko maksaa siirtopalkkion? - + Sending... Lähetetään... - + Sent transaction Lähetetyt rahansiirrot - + Incoming transaction Saapuva rahansiirto - + Date: %1 Amount: %2 Type: %3 @@ -576,35 +593,40 @@ Tyyppi: %3 Osoite: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> Lompakko on <b>salattu</b> ja tällä hetkellä <b>avoinna</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> Lompakko on <b>salattu</b> ja tällä hetkellä <b>lukittuna</b> - + Backup Wallet Varmuuskopioi lompakko - + Wallet Data (*.dat) Lompakkodata (*.dat) - + Backup Failed Varmuuskopio epäonnistui - + There was an error trying to save the wallet data to the new location. Virhe tallennettaessa lompakkodataa uuteen sijaintiin. + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + + DisplayOptionsPage @@ -620,8 +642,13 @@ Osoite: %4 - Display addresses in transaction list - Näytä osoitteet rahansiirtoluettelossa + &Display addresses in transaction list + &Näytä osoitteet rahansiirtoluettelossa + + + + Whether to show Bitcoin addresses in the transaction list + @@ -794,8 +821,8 @@ Osoite: %4 - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - Osoite, johon Bitcoinit lähetetään (esim. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + @@ -839,8 +866,8 @@ Osoite: %4 - Copy the currently selected address to the system clipboard - Kopioi valittu osoite leikepöydälle + Copy the current signature to the system clipboard + @@ -926,20 +953,12 @@ Osoite: %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Lompakko</span></p></body></html> + + Wallet + Lompakko - + <b>Recent transactions</b> <b>Viimeisimmät rahansiirrot</b> @@ -972,42 +991,47 @@ p, li { white-space: pre-wrap; } QR-koodi - + Request Payment Vastaanota maksu - + Amount: Määrä: - + BTC BTC - + Label: Tunniste: - + Message: Viesti: - + &Save As... &Tallenna nimellä... - + + Error encoding URI into QR Code. + + + + Save Image... Tallenna kuva... - + PNG Images (*.png) PNG kuvat (*png) @@ -1343,54 +1367,60 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date Päivämäärä - + Type Laatu - + Address Osoite - + Amount Määrä - + Open for %n block(s) - Auki %n lohkolleAuki %n lohkoille + + Auki %n lohkolle + Auki %n lohkoille + - + Open until %1 Avoinna %1 asti - + Offline (%1 confirmations) Ei yhteyttä verkkoon (%1 vahvistusta) - + Unconfirmed (%1 of %2 confirmations) Vahvistamatta (%1/%2 vahvistusta) - + Confirmed (%1 confirmations) Vahvistettu (%1 vahvistusta) Mined balance will be available in %n more blocks - Louhittu saldo tulee saataville %n lohkossaLouhittu saldo tulee saataville %n lohkossa + + Louhittu saldo tulee saataville %n lohkossa + Louhittu saldo tulee saataville %n lohkossa + @@ -1633,346 +1663,346 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version Bitcoinin versio - + Usage: Käyttö: - + Send command to -server or bitcoind Lähetä käsky palvelimelle tai bitcoind:lle - + List commands Lista komennoista - + Get help for a command Hanki apua käskyyn - + Options: Asetukset: - + Specify configuration file (default: bitcoin.conf) Määritä asetustiedosto (oletus: bitcoin.conf) - + Specify pid file (default: bitcoind.pid) Määritä pid-tiedosto (oletus: bitcoin.pid) - + Generate coins Generoi kolikoita - + Don't generate coins Älä generoi kolikoita - + Start minimized Käynnistä pienennettynä - + Specify data directory Määritä data-hakemisto - + Specify connection timeout (in milliseconds) Määritä yhteyden aikakatkaisu (millisekunneissa) - + Connect through socks4 proxy Yhteys socks4-proxyn kautta - + Allow DNS lookups for addnode and connect Salli DNS haut lisäsolmulle ja yhdistä - + Listen for connections on <port> (default: 8333 or testnet: 18333) Kuuntele yhteyksiä portista <port> (oletus: 8333 tai testnet: 18333) - + Maintain at most <n> connections to peers (default: 125) Pidä enintään <n> yhteyttä verkkoihin (oletus: 125) - + Add a node to connect to Lisää solmu mihin yhdistetään - + Connect only to the specified node Ota yhteys vain tiettyyn solmuun - + Don't accept connections from outside Älä hyväksy ulkopuolisia yhteyksiä - + Don't bootstrap list of peers using DNS Älä alkulataa listaa verkoista DNS:ää käyttäen - + Threshold for disconnecting misbehaving peers (default: 100) Kynnysarvo aikakatkaisulle heikosti toimiville verkoille (oletus: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Sekuntien määrä, kuinka kauan uudelleenkytkeydytään verkkoihin (oletus: 86400) - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) Maksimi verkkoyhteyden vastaanottopuskuri, <n>*1000 tavua (oletus: 10000) - + Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) Maksimi verkkoyhteyden lähetyspuskuri, <n>*1000 tavua (oletus: 10000) - + Don't attempt to use UPnP to map the listening port Älä käytä UPnP toimintoa kartoittamaan avointa porttia - + Attempt to use UPnP to map the listening port Yritä käyttää UPnP toimintoa kartoittamaan avointa porttia - + Fee per kB to add to transactions you send palkkio per kB lisätty lähettämiisi rahansiirtoihin - + Accept command line and JSON-RPC commands Hyväksy merkkipohjaiset- ja JSON-RPC-käskyt - + Run in the background as a daemon and accept commands Aja taustalla daemonina ja hyväksy komennot - + Use the test network Käytä test -verkkoa - + Output extra debugging information Tulosta ylimääräistä debuggaustietoa - + Prepend debug output with timestamp Lisää debuggaustiedon tulostukseen aikaleima - + Send trace/debug info to console instead of debug.log file Lähetä jäljitys/debug-tieto konsoliin, debug.log-tiedoston sijaan - + Send trace/debug info to debugger Lähetä jäljitys/debug-tieto debuggeriin - + Username for JSON-RPC connections Käyttäjätunnus JSON-RPC-yhteyksille - + Password for JSON-RPC connections Salasana JSON-RPC-yhteyksille - + Listen for JSON-RPC connections on <port> (default: 8332) Kuuntele JSON-RPC -yhteyksiä portista <port> (oletus: 8332) - + Allow JSON-RPC connections from specified IP address Salli JSON-RPC yhteydet tietystä ip-osoitteesta - + Send commands to node running on <ip> (default: 127.0.0.1) Lähetä käskyjä solmuun osoitteessa <ip> (oletus: 127.0.0.1) - + Set key pool size to <n> (default: 100) Aseta avainpoolin koko arvoon <n> (oletus: 100) - + Rescan the block chain for missing wallet transactions Skannaa uudelleen lohkoketju lompakon puuttuvien rahasiirtojen vuoksi - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) SSL-asetukset: (lisätietoja Bitcoin-Wikistä) - + Use OpenSSL (https) for JSON-RPC connections Käytä OpenSSL:ää (https) JSON-RPC-yhteyksille - + Server certificate file (default: server.cert) Palvelimen sertifikaatti-tiedosto (oletus: server.cert) - + Server private key (default: server.pem) Palvelimen yksityisavain (oletus: server.pem) - + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) Hyväksyttävä salaus (oletus: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - + This help message Tämä ohjeviesti - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. En pääse käsiksi data-hakemiston lukitukseen %s. Bitcoin on todennäköisesti jo käynnistetty. - + Loading addresses... Ladataan osoitteita... - + Error loading addr.dat Virhe ladattaessa addr.dat-tiedostoa - + Error loading blkindex.dat Virhe ladattaessa blkindex.dat-tiedostoa - + Error loading wallet.dat: Wallet corrupted Virhe ladattaessa wallet.dat-tiedostoa: Lompakko vioittunut - + Error loading wallet.dat: Wallet requires newer version of Bitcoin Virhe ladattaessa wallet.dat-tiedostoa: Tarvitset uudemman version Bitcoinista - + Wallet needed to be rewritten: restart Bitcoin to complete Lompakko tarvitsee uudelleenkirjoittaa: käynnistä Bitcoin uudelleen - + Error loading wallet.dat Virhe ladattaessa wallet.dat-tiedostoa - + Loading block index... Ladataan lohkoindeksiä... - + Loading wallet... Ladataan lompakkoa... - + Rescanning... Skannataan uudelleen... - + Done loading Lataus on valmis - + Invalid -proxy address Virheellinen proxy-osoite - + Invalid amount for -paytxfee=<amount> Virheellinen määrä -paytxfee=<amount> - + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. Varoitus:-paytxfee on erittäin korkea. Tämä on palkkio siirrosta minkä suoritat rahansiirrosta. - + Error: CreateThread(StartNode) failed Virhe: CreateThread(StartNode) epäonnistui - + Warning: Disk space is low Varoitus: Kiintolevytila on loppumassa - + Unable to bind to port %d on this computer. Bitcoin is probably already running. En pysty varaamaan porttia %d tähän koneeseen. Ehkä Bitcoin on jo käynnissä. - + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. Varoitus: Tarkista, ovatko tietokoneesi päivämäärä ja aika oikein. Mikäli aika on väärin, Bitcoin-ohjelma ei toimi oikein. - + beta beta - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_fr_CA.ts b/src/qt/locale/bitcoin_fr_CA.ts index cc0a0fd59f3..8b99b7ea86d 100644 --- a/src/qt/locale/bitcoin_fr_CA.ts +++ b/src/qt/locale/bitcoin_fr_CA.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -21,7 +23,7 @@ This is experimental software. Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - + @@ -64,17 +66,17 @@ This product includes software developed by the OpenSSL Project for use in the O Show &QR Code - + Sign a message to prove you own this address - + &Sign Message - + @@ -89,22 +91,22 @@ This product includes software developed by the OpenSSL Project for use in the O Copy address - + Copy label - + Edit - + Delete - + @@ -114,35 +116,35 @@ This product includes software developed by the OpenSSL Project for use in the O Comma separated file (*.csv) - + Error exporting - + Could not write to file %1. - + AddressTableModel - + Label - + - + Address - + - + (no label) - + @@ -150,96 +152,96 @@ This product includes software developed by the OpenSSL Project for use in the O Dialog - + TextLabel - + Enter passphrase - + New passphrase - + Repeat new passphrase - + Enter the new passphrase to the wallet.<br/>Please use a passphrase of <b>10 or more random characters</b>, or <b>eight or more words</b>. - + Encrypt wallet - + This operation needs your wallet passphrase to unlock the wallet. - + Unlock wallet - + This operation needs your wallet passphrase to decrypt the wallet. - + Decrypt wallet - + Change passphrase - + Enter the old and new passphrase to the wallet. - + Confirm wallet encryption - + WARNING: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! Are you sure you wish to encrypt your wallet? - + Wallet encrypted - + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - + Warning: The Caps Lock key is on. - + @@ -247,353 +249,368 @@ Are you sure you wish to encrypt your wallet? Wallet encryption failed - + Wallet encryption failed due to an internal error. Your wallet was not encrypted. - + The supplied passphrases do not match. - + Wallet unlock failed - + The passphrase entered for the wallet decryption was incorrect. - + Wallet decryption failed - + Wallet passphrase was succesfully changed. - + BitcoinGUI - + Bitcoin Wallet - - - - - - Synchronizing with network... - + + + Synchronizing with network... + + + + Block chain synchronization in progress - + - + &Overview - + - + Show general overview of wallet - + - + &Transactions - + - + Browse transaction history - + - + &Address Book - + - + Edit the list of stored addresses and labels - + - + &Receive coins - + - + Show the list of addresses for receiving payments - + - + &Send coins - + - + Send coins to a bitcoin address - + - + Sign &message - + - + Prove you control an address - + - + E&xit - - - - - Quit application - + - &About %1 - - - - - Show information about Bitcoin - + Quit application + - About &Qt - + &About %1 + - Show information about Qt - + Show information about Bitcoin + - &Options... - + About &Qt + - Modify configuration options for bitcoin - + Show information about Qt + - Open &Bitcoin - + &Options... + - Show the Bitcoin window - - - - - &Export... - + Modify configuration options for bitcoin + - Export the data in the current tab to a file - + Open &Bitcoin + - &Encrypt Wallet - + Show the Bitcoin window + - Encrypt or decrypt wallet - + &Export... + + + + + Export the data in the current tab to a file + - &Backup Wallet - + &Encrypt Wallet + - Backup wallet to another location - - - - - &Change Passphrase - + Encrypt or decrypt wallet + + &Backup Wallet + + + + + Backup wallet to another location + + + + + &Change Passphrase + + + + Change the passphrase used for wallet encryption - + - + &File - + - + &Settings - + - + &Help - + - + Tabs toolbar - + - + Actions toolbar - + - + [testnet] - + - + bitcoin-qt - + - + %n active connection(s) to Bitcoin network - + + + - + Downloaded %1 of %2 blocks of transaction history. - + - + Downloaded %1 blocks of transaction history. - + - + %n second(s) ago - + + + - + %n minute(s) ago - + + + - + %n hour(s) ago - + + + - + %n day(s) ago - + + + - + Up to date - + - + Catching up... - + - + Last received block was generated %1. - + - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? - + - + Sending... - + - + Sent transaction - + - + Incoming transaction - + - + Date: %1 Amount: %2 Type: %3 Address: %4 - + - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> - + - + Wallet is <b>encrypted</b> and currently <b>locked</b> - + - + Backup Wallet - + - + Wallet Data (*.dat) - + - + Backup Failed - + - + There was an error trying to save the wallet data to the new location. - + + + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + @@ -601,17 +618,22 @@ Address: %4 &Unit to show amounts in: - + Choose the default subdivision unit to show in the interface, and when sending coins - + - Display addresses in transaction list - + &Display addresses in transaction list + + + + + Whether to show Bitcoin addresses in the transaction list + @@ -619,67 +641,67 @@ Address: %4 Edit Address - + &Label - + The label associated with this address book entry - + &Address - + The address associated with this address book entry. This can only be modified for sending addresses. - + New receiving address - + New sending address - + Edit receiving address - + Edit sending address - + The entered address "%1" is already in the address book. - + The entered address "%1" is not a valid bitcoin address. - + Could not unlock wallet. - + New key generation failed. - + @@ -687,87 +709,87 @@ Address: %4 &Start Bitcoin on window system startup - + Automatically start Bitcoin after the computer is turned on - + &Minimize to the tray instead of the taskbar - + Show only a tray icon after minimizing the window - + Map port using &UPnP - + Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - + M&inimize on close - + Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Quit in the menu. - + &Connect through SOCKS4 proxy: - + Connect to the Bitcon network through a SOCKS4 proxy (e.g. when connecting through Tor) - + Proxy &IP: - + IP address of the proxy (e.g. 127.0.0.1) - + &Port: - + Port of the proxy (e.g. 1234) - + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. - + Pay transaction &fee - + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. - + @@ -775,62 +797,62 @@ Address: %4 Message - + You can sign messages with your addresses to prove you own them. Be careful not to sign anything vague, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - + - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - + The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + Choose adress from address book - + Alt+A - + Paste address from clipboard - + Alt+P - + Enter the message you want to sign here - + Click "Sign Message" to get signature - + Sign a message to prove you own this address - + &Sign Message - + - Copy the currently selected address to the system clipboard - Copier l'adresse surligné a votre presse-papier + Copy the current signature to the system clipboard + @@ -842,22 +864,22 @@ Address: %4 Error signing - + %1 is not a valid address. - + Private key for %1 is not available. - + Sign failed - + @@ -865,17 +887,17 @@ Address: %4 Main - + Display - + Options - + @@ -883,66 +905,62 @@ Address: %4 Form - + Balance: - + 123.456 BTC - + Number of transactions: - + 0 - + Unconfirmed: - + 0 BTC - + - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - + + Wallet + - + <b>Recent transactions</b> - + Your current balance - + Total of transactions that have yet to be confirmed, and do not yet count toward the current balance - + Total number of transactions in wallet - + @@ -950,52 +968,57 @@ p, li { white-space: pre-wrap; } Dialog - + QR Code - + - + Request Payment - + - + Amount: - + - + BTC - + - + Label: - + - + Message: - + - + &Save As... - + - + + Error encoding URI into QR Code. + + + + Save Image... - + - + PNG Images (*.png) - + @@ -1010,102 +1033,102 @@ p, li { white-space: pre-wrap; } Send Coins - + Send to multiple recipients at once - + &Add recipient... - + Remove all transaction fields - + Clear all - + Balance: - + 123.456 BTC - + Confirm the send action - + &Send - + <b>%1</b> to %2 (%3) - + Confirm send coins - + Are you sure you want to send %1? - + and - + The recepient address is not valid, please recheck. - + The amount to pay must be larger than 0. - + Amount exceeds your balance - + Total exceeds your balance when the %1 transaction fee is included - + Duplicate address found, can only send to each address once in one send operation - + Error: Transaction creation failed - + Error: The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. - + @@ -1113,63 +1136,63 @@ p, li { white-space: pre-wrap; } Form - + A&mount: - + Pay &To: - + Enter a label for this address to add it to your address book - + &Label: - + The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - + Choose address from address book - + Alt+A - + Paste address from clipboard - + Alt+P - + Remove this recipient - + Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - + @@ -1177,85 +1200,85 @@ p, li { white-space: pre-wrap; } Open for %1 blocks - + Open until %1 - + %1/offline? - + %1/unconfirmed - + %1 confirmations - + <b>Status:</b> - + , has not been successfully broadcast yet - + , broadcast through %1 node - + , broadcast through %1 nodes - + <b>Date:</b> - + <b>Source:</b> Generated<br> - + <b>From:</b> - + unknown - + <b>To:</b> - + (yours, label: - + (yours) - + @@ -1263,54 +1286,54 @@ p, li { white-space: pre-wrap; } <b>Credit:</b> - + (%1 matures in %2 more blocks) - + (not accepted) - + <b>Debit:</b> - + <b>Transaction fee:</b> - + <b>Net amount:</b> - + Message: - + Comment: - + Transaction ID: - + Generated coins must wait 120 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, it will change to "not accepted" and not be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - + @@ -1318,130 +1341,134 @@ p, li { white-space: pre-wrap; } Transaction details - + This pane shows a detailed description of the transaction - + TransactionTableModel - + Date - + - + Type - + - + Address - + - + Amount - + - + Open for %n block(s) - + + + - + Open until %1 - + - + Offline (%1 confirmations) - + - + Unconfirmed (%1 of %2 confirmations) - + - + Confirmed (%1 confirmations) - + Mined balance will be available in %n more blocks - + + + This block was not received by any other nodes and will probably not be accepted! - + Generated but not accepted - + Received with - + Received from - + Sent to - + Payment to yourself - + Mined - + (n/a) - + Transaction status. Hover over this field to show number of confirmations. - + Date and time that the transaction was received. - + Type of transaction. - + Destination address of transaction. - + Amount removed from or added to balance. - + @@ -1450,162 +1477,162 @@ p, li { white-space: pre-wrap; } All - + Today - + This week - + This month - + Last month - + This year - + Range... - + Received with - + Sent to - + To yourself - + Mined - + Other - + Enter address or label to search - + Min amount - + Copy address - + Copy label - + Copy amount - + Edit label - + Show details... - + Export Transaction Data - + Comma separated file (*.csv) - + Confirmed - + Date - + Type - + Label - + Address - + Amount - + ID - + Error exporting - + Could not write to file %1. - + Range: - + to - + @@ -1613,351 +1640,351 @@ p, li { white-space: pre-wrap; } Sending... - + bitcoin-core - - - Bitcoin version - - - - - Usage: - - - - - Send command to -server or bitcoind - - - - - List commands - - - - - Get help for a command - - - Options: - + Bitcoin version + - Specify configuration file (default: bitcoin.conf) - + Usage: + - Specify pid file (default: bitcoind.pid) - + Send command to -server or bitcoind + - Generate coins - + List commands + - Don't generate coins - + Get help for a command + - Start minimized - + Options: + - Specify data directory - + Specify configuration file (default: bitcoin.conf) + - Specify connection timeout (in milliseconds) - + Specify pid file (default: bitcoind.pid) + - Connect through socks4 proxy - + Generate coins + - Allow DNS lookups for addnode and connect - + Don't generate coins + - Listen for connections on <port> (default: 8333 or testnet: 18333) - + Start minimized + - Maintain at most <n> connections to peers (default: 125) - + Specify data directory + - Add a node to connect to - + Specify connection timeout (in milliseconds) + - Connect only to the specified node - + Connect through socks4 proxy + - Don't accept connections from outside - + Allow DNS lookups for addnode and connect + - Don't bootstrap list of peers using DNS - + Listen for connections on <port> (default: 8333 or testnet: 18333) + - Threshold for disconnecting misbehaving peers (default: 100) - + Maintain at most <n> connections to peers (default: 125) + - Number of seconds to keep misbehaving peers from reconnecting (default: 86400) - + Add a node to connect to + + + + + Connect only to the specified node + + + + + Don't accept connections from outside + - Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) - + Don't bootstrap list of peers using DNS + - Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) - + Threshold for disconnecting misbehaving peers (default: 100) + - Don't attempt to use UPnP to map the listening port - - - - - Attempt to use UPnP to map the listening port - - - - - Fee per kB to add to transactions you send - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) + - Accept command line and JSON-RPC commands - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) + - Run in the background as a daemon and accept commands - + Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) + - Use the test network - + Don't attempt to use UPnP to map the listening port + - Output extra debugging information - + Attempt to use UPnP to map the listening port + - Prepend debug output with timestamp - + Fee per kB to add to transactions you send + - Send trace/debug info to console instead of debug.log file - + Accept command line and JSON-RPC commands + - Send trace/debug info to debugger - + Run in the background as a daemon and accept commands + - Username for JSON-RPC connections - + Use the test network + - Password for JSON-RPC connections - + Output extra debugging information + - Listen for JSON-RPC connections on <port> (default: 8332) - + Prepend debug output with timestamp + - Allow JSON-RPC connections from specified IP address - + Send trace/debug info to console instead of debug.log file + - Send commands to node running on <ip> (default: 127.0.0.1) - + Send trace/debug info to debugger + - Set key pool size to <n> (default: 100) - + Username for JSON-RPC connections + - Rescan the block chain for missing wallet transactions - + Password for JSON-RPC connections + - -SSL options: (see the Bitcoin Wiki for SSL setup instructions) - + Listen for JSON-RPC connections on <port> (default: 8332) + + + + + Allow JSON-RPC connections from specified IP address + + + + + Send commands to node running on <ip> (default: 127.0.0.1) + - Use OpenSSL (https) for JSON-RPC connections - + Set key pool size to <n> (default: 100) + - Server certificate file (default: server.cert) - + Rescan the block chain for missing wallet transactions + - Server private key (default: server.pem) - + +SSL options: (see the Bitcoin Wiki for SSL setup instructions) + - - Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - + + Use OpenSSL (https) for JSON-RPC connections + - This help message - + Server certificate file (default: server.cert) + - Cannot obtain a lock on data directory %s. Bitcoin is probably already running. - + Server private key (default: server.pem) + - - Loading addresses... - + + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) + - Error loading addr.dat - - - - - Error loading blkindex.dat - - - - - Error loading wallet.dat: Wallet corrupted - - - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin - - - - - Wallet needed to be rewritten: restart Bitcoin to complete - - - - - Error loading wallet.dat - + This help message + - Loading block index... - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. + - - Loading wallet... - + + Loading addresses... + - - Rescanning... - + + Error loading addr.dat + + + + + Error loading blkindex.dat + - Done loading - + Error loading wallet.dat: Wallet corrupted + - Invalid -proxy address - + Error loading wallet.dat: Wallet requires newer version of Bitcoin + - Invalid amount for -paytxfee=<amount> - + Wallet needed to be rewritten: restart Bitcoin to complete + - Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. - + Error loading wallet.dat + + + + + Loading block index... + + + + + Loading wallet... + + + + + Rescanning... + + + + + Done loading + - Error: CreateThread(StartNode) failed - + Invalid -proxy address + - Warning: Disk space is low - + Invalid amount for -paytxfee=<amount> + - Unable to bind to port %d on this computer. Bitcoin is probably already running. - + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. + - Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. - + Error: CreateThread(StartNode) failed + - + + Warning: Disk space is low + + + + + Unable to bind to port %d on this computer. Bitcoin is probably already running. + + + + + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. + + + + beta - + - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_fr_FR.ts b/src/qt/locale/bitcoin_fr_FR.ts index 08cea95b93e..5473a2020ad 100644 --- a/src/qt/locale/bitcoin_fr_FR.ts +++ b/src/qt/locale/bitcoin_fr_FR.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -136,17 +138,17 @@ Ce produit inclut des logiciels développés par OpenSSL Project pour utilisatio AddressTableModel - + Label Étiquette - + Address Adresse - + (no label) (aucune étiquette) @@ -293,278 +295,293 @@ Are you sure you wish to encrypt your wallet? BitcoinGUI - + Bitcoin Wallet Porte-monnaie Bitcoin - - + + Synchronizing with network... Synchronisation avec le réseau... - + Block chain synchronization in progress Synchronisation de la chaîne de blocs en cours - + &Overview &Vue d'ensemble - + Show general overview of wallet Affiche une vue d'ensemble du porte-monnaie - + &Transactions &Transactions - + Browse transaction history Permet de parcourir l'historique des transactions - + &Address Book Carnet d'&adresses - + Edit the list of stored addresses and labels Éditer la liste des adresses et des étiquettes stockées - + &Receive coins &Recevoir des pièces - + Show the list of addresses for receiving payments Affiche la liste des adresses pour recevoir des paiements - + &Send coins &Envoyer des pièces - + Send coins to a bitcoin address Envoyer des pièces à une adresse bitcoin - + Sign &message Signer un &message - + Prove you control an address Prouver que vous contrôlez une adresse - + E&xit Q&uitter - + Quit application Quitter l'application - + &About %1 &À propos de %1 - + Show information about Bitcoin Afficher des informations à propos de Bitcoin - + About &Qt À propos de &Qt - + Show information about Qt Afficher des informations sur Qt - + &Options... &Options... - + Modify configuration options for bitcoin Modifier les options de configuration pour bitcoin - + Open &Bitcoin Ouvrir &Bitcoin - + Show the Bitcoin window Afficher la fenêtre de Bitcoin - + &Export... &Exporter... - + Export the data in the current tab to a file Exporter les données de l'onglet courant vers un fichier - + &Encrypt Wallet &Chiffrer le porte-monnaie - + Encrypt or decrypt wallet Chiffrer ou décrypter le porte-monnaie - + &Backup Wallet &Sauvegarder le porte-monnaie - + Backup wallet to another location Sauvegarder le porte-monnaie à un autre emplacement - + &Change Passphrase &Modifier la phrase de passe - + Change the passphrase used for wallet encryption Modifier la phrase de passe utilisée pour le cryptage du porte-monnaie - + &File &Fichier - + &Settings &Réglages - + &Help &Aide - + Tabs toolbar Barre d'outils des onglets - + Actions toolbar Barre d'outils des actions - + [testnet] [testnet] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - %n connexion active avec le réseau Bitcoin%n connexions actives avec le réseau Bitcoin + + %n connexion active avec le réseau Bitcoin + %n connexions actives avec le réseau Bitcoin + - + Downloaded %1 of %2 blocks of transaction history. %1 blocs de l'historique des transactions téléchargés sur un total de %2. - + Downloaded %1 blocks of transaction history. %1 blocs de l'historique de transaction téléchargé. - + %n second(s) ago - il y a %n secondeil y a %n secondes + + il y a %n seconde + il y a %n secondes + - + %n minute(s) ago - il y a %n minuteil y a %n minutes + + il y a %n minute + il y a %n minutes + - + %n hour(s) ago - il y a %n heureil y a %n heures + + il y a %n heure + il y a %n heures + - + %n day(s) ago - il y a %n jouril y a %n jours + + il y a %n jour + il y a %n jours + - + Up to date À jour - + Catching up... Rattrapage... - + Last received block was generated %1. Le dernier bloc reçu a été généré %1. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? Cette transaction dépasse la limite de taille. Vous pouvez quand-même l'envoyer en vous acquittant de frais d'un montant de %1, qui iront aux nœuds qui traitent la transaction et aideront à soutenir le réseau. Voulez-vous payer les frais ? - + Sending... Envoi en cours... - + Sent transaction Transaction envoyée - + Incoming transaction Transaction entrante - + Date: %1 Amount: %2 Type: %3 @@ -577,35 +594,40 @@ Adresse : %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> Le porte-monnaie est <b>chiffré</b> et est actuellement <b>déverrouillé</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> Le porte-monnaie est <b>chiffré</b> et est actuellement <b>verrouillé</b> - + Backup Wallet Sauvegarder le porte-monnaie - + Wallet Data (*.dat) Données de porte-monnaie (*.dat) - + Backup Failed La sauvegarde a échoué - + There was an error trying to save the wallet data to the new location. Une erreur est survenue lors de l'enregistrement des données de porte-monnaie à un autre emplacement. + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + + DisplayOptionsPage @@ -621,8 +643,13 @@ Adresse : %4 - Display addresses in transaction list - Afficher les adresses dans la liste des transactions + &Display addresses in transaction list + &Afficher les adresses dans la liste des transactions + + + + Whether to show Bitcoin addresses in the transaction list + @@ -795,8 +822,8 @@ Adresse : %4 - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - L'adresse à laquelle le paiement sera envoyé (par ex. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + @@ -840,8 +867,8 @@ Adresse : %4 - Copy the currently selected address to the system clipboard - Copier l'adresse surlignée dans votre presse-papiers + Copy the current signature to the system clipboard + @@ -927,20 +954,12 @@ Adresse : %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Porte-monnaie</span></p></body></html> + + Wallet + Porte-monnaie - + <b>Recent transactions</b> <b>Transactions récentes</b> @@ -973,42 +992,47 @@ p, li { white-space: pre-wrap; } QR Code - + Request Payment Demande de paiement - + Amount: Montant : - + BTC BTC - + Label: Étiquette : - + Message: Message : - + &Save As... &Enregistrer sous... - + + Error encoding URI into QR Code. + + + + Save Image... Enregistrer l'image... - + PNG Images (*.png) Images PNG (*.png) @@ -1344,54 +1368,60 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date Date - + Type Type - + Address Adresse - + Amount Montant - + Open for %n block(s) - Ouvert pour %n blocOuvert pour %n blocs + + Ouvert pour %n bloc + Ouvert pour %n blocs + - + Open until %1 Ouvert jusqu'à %1 - + Offline (%1 confirmations) Hors ligne (%1 confirmations) - + Unconfirmed (%1 of %2 confirmations) Non confirmée (%1 confirmations sur un total de %2) - + Confirmed (%1 confirmations) Confirmée (%1 confirmations) Mined balance will be available in %n more blocks - Le solde d'extraction (mined) sera disponible dans %n blocLe solde d'extraction (mined) sera disponible dans %n blocs + + Le solde d'extraction (mined) sera disponible dans %n bloc + Le solde d'extraction (mined) sera disponible dans %n blocs + @@ -1634,346 +1664,346 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version Version de bitcoin - + Usage: Utilisation : - + Send command to -server or bitcoind Envoyer une commande à -server ou à bitcoind - + List commands Lister les commandes - + Get help for a command Obtenir de l'aide pour une commande - + Options: Options : - + Specify configuration file (default: bitcoin.conf) Spécifier le fichier de configuration (par défaut : bitcoin.conf) - + Specify pid file (default: bitcoind.pid) Spécifier le fichier pid (par défaut : bitcoind.pid) - + Generate coins Générer des pièces - + Don't generate coins Ne pas générer de pièces - + Start minimized Démarrer sous forme minimisée - + Specify data directory Spécifier le répertoire de données - + Specify connection timeout (in milliseconds) Spécifier le délai d'expiration de la connexion (en millisecondes) - + Connect through socks4 proxy Connexion via un proxy socks4 - + Allow DNS lookups for addnode and connect Autoriser les recherches DNS pour l'ajout de nœuds et la connexion - + Listen for connections on <port> (default: 8333 or testnet: 18333) Écouter les connexions sur le <port> (par défaut : 8333 ou testnet : 18333) - + Maintain at most <n> connections to peers (default: 125) Garder au plus <n> connexions avec les pairs (par défaut : 125) - + Add a node to connect to Ajouter un nœud auquel se connecter - + Connect only to the specified node Ne se connecter qu'au nœud spécifié - + Don't accept connections from outside Ne pas accepter les connexion depuis l'extérieur - + Don't bootstrap list of peers using DNS Ne pas amorcer la liste des pairs en utilisant le DNS - + Threshold for disconnecting misbehaving peers (default: 100) Seuil de déconnexion des pairs de mauvaise qualité (par défaut : 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Délai en secondes de refus de reconnexion aux pairs de mauvaise qualité (par défaut : 86400) - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) Tampon maximal de réception par connexion, <n>*1000 octets (par défaut : 10000) - + Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) Tampon maximal d'envoi par connexion, <n>*1000 octets (par défaut : 10000) - + Don't attempt to use UPnP to map the listening port Ne pas tenter d'utiliser l'UPnP pour ouvrir le port d'écoute - + Attempt to use UPnP to map the listening port Essayer d'utiliser l'UPnP pour ouvrir le port d'écoute - + Fee per kB to add to transactions you send Frais par ko à ajouter aux transactions que vous enverrez - + Accept command line and JSON-RPC commands Accepter les commandes de JSON-RPC et de la ligne de commande - + Run in the background as a daemon and accept commands Fonctionner en arrière-plan en tant que démon et accepter les commandes - + Use the test network Utiliser le réseau de test - + Output extra debugging information Informations de débogage supplémentaires - + Prepend debug output with timestamp Faire précéder les données de débogage par un horodatage - + Send trace/debug info to console instead of debug.log file Envoyer les informations de débogage/trace à la console au lieu du fichier debug.log - + Send trace/debug info to debugger Envoyer les informations de débogage/trace au débogueur - + Username for JSON-RPC connections Nom d'utilisateur pour les connexions JSON-RPC - + Password for JSON-RPC connections Mot de passe pour les connexions JSON-RPC - + Listen for JSON-RPC connections on <port> (default: 8332) Écouter les connexions JSON-RPC sur le <port> (par défaut : 8332) - + Allow JSON-RPC connections from specified IP address Autoriser les connexions JSON-RPC depuis l'adresse IP spécifiée - + Send commands to node running on <ip> (default: 127.0.0.1) Envoyer des commandes au nœud fonctionnant à <ip> (par défaut : 127.0.0.1) - + Set key pool size to <n> (default: 100) Régler la taille de la plage de clefs sur <n> (par défaut : 100) - + Rescan the block chain for missing wallet transactions Réanalyser la chaîne de blocs pour les transactions de porte-monnaie manquantes - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) Options SSL : (cf. le wiki Bitcoin pour les réglages SSL) - + Use OpenSSL (https) for JSON-RPC connections Utiliser OpenSSL (https) pour les connexions JSON-RPC - + Server certificate file (default: server.cert) Fichier de certificat serveur (par défaut : server.cert) - + Server private key (default: server.pem) Clef privée du serveur (par défaut : server.pem) - + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) Clefs de chiffrement acceptables (par défaut : TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - + This help message Ce message d'aide - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. Impossible d'obtenir un verrou sur le répertoire de données %s. Bitcoin fonctionne probablement déjà. - + Loading addresses... Chargement des adresses... - + Error loading addr.dat Erreur lors du chargement de addr.dat - + Error loading blkindex.dat Erreur lors du chargement de blkindex.dat - + Error loading wallet.dat: Wallet corrupted Erreur lors du chargement de wallet.dat : porte-monnaie corrompu - + Error loading wallet.dat: Wallet requires newer version of Bitcoin Erreur lors du chargement de wallet.dat : le porte-monnaie nécessite une version plus récente de Bitcoin - + Wallet needed to be rewritten: restart Bitcoin to complete Le porte-monnaie nécessitait une réécriture. Veuillez redémarrer Bitcoin pour terminer l'opération - + Error loading wallet.dat Erreur lors du chargement de wallet.dat - + Loading block index... Chargement de l'index des blocs... - + Loading wallet... Chargement du porte-monnaie... - + Rescanning... Nouvelle analyse... - + Done loading Chargement terminé - + Invalid -proxy address Adresse -proxy invalide - + Invalid amount for -paytxfee=<amount> Montant invalide pour -paytxfee=<montant> - + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. Attention : -paytxfee est réglée sur un montant très élevé. Il s'agit des frais de transaction que vous payerez si vous envoyez une transaction. - + Error: CreateThread(StartNode) failed Erreur : CreateThread(StartNode) a échoué - + Warning: Disk space is low Attention : l'espace disque est faible - + Unable to bind to port %d on this computer. Bitcoin is probably already running. Impossible de s'attacher au port %d sur cet ordinateur. Bitcoin fonctionne probablement déjà. - + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. Attention : veuillez vérifier que l'heure et la date de votre ordinateur sont corrects. Si votre horloge n'est pas à l'heure, Bitcoin ne fonctionnera pas correctement. - + beta bêta - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_he.ts b/src/qt/locale/bitcoin_he.ts index 627245092a3..487dd6ab274 100644 --- a/src/qt/locale/bitcoin_he.ts +++ b/src/qt/locale/bitcoin_he.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -136,17 +138,17 @@ This product includes software developed by the OpenSSL Project for use in the O AddressTableModel - + Label תוית - + Address כתובת - + (no label) (ללא כתובת) @@ -293,278 +295,293 @@ Are you sure you wish to encrypt your wallet? BitcoinGUI - + Bitcoin Wallet ארנק ביטקוין - - + + Synchronizing with network... מסתנכרן עם הרשת... - + Block chain synchronization in progress סנכרון עם שרשרת הבלוקים בעיצומו - + &Overview &סקירה - + Show general overview of wallet הצג סקירה כללית של הארנק - + &Transactions &פעולות - + Browse transaction history דפדף בהיסטוריית הפעולות - + &Address Book פנקס &כתובות - + Edit the list of stored addresses and labels ערוך את רשימת הכתובות והתויות - + &Receive coins &קבלת מטבעות - + Show the list of addresses for receiving payments הצג את רשימת הכתובות לקבלת תשלומים - + &Send coins &שלח מטבעות - + Send coins to a bitcoin address שלח מטבעות לכתובת ביטקוין - + Sign &message חתום על הו&דעה - + Prove you control an address הוכח שאתה שולט בכתובת - + E&xit י&ציאה - + Quit application סגור תוכנה - + &About %1 &אודות %1 - + Show information about Bitcoin הצג מידע על ביטקוין - + About &Qt אודות Qt - + Show information about Qt הצג מידע על Qt - + &Options... &אפשרויות - + Modify configuration options for bitcoin שנה הגדרות עבור ביטקוין - + Open &Bitcoin פתח את &ביטקוין - + Show the Bitcoin window הצג את חלון ביטקוין - + &Export... י&צא - + Export the data in the current tab to a file יצוא הנתונים בטאב הנוכחי לקובץ - + &Encrypt Wallet הצ&פן ארנק - + Encrypt or decrypt wallet הצפן או פענח ארנק - + &Backup Wallet &גיבוי ארנק - + Backup wallet to another location גיבוי הארנק למקום אחר - + &Change Passphrase שנה &סיסמה - + Change the passphrase used for wallet encryption שנה את הסיסמה להצפנת הארנק - + &File &קובץ - + &Settings ה&גדרות - + &Help &עזרה - + Tabs toolbar סרגל כלים טאבים - + Actions toolbar סרגל כלים פעולות - + [testnet] [רשת-בדיקה] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - חיבור פעיל אחד לרשת הביטקוין%n חיבורים פעילים לרשת הביטקוין + + חיבור פעיל אחד לרשת הביטקוין + %n חיבורים פעילים לרשת הביטקוין + - + Downloaded %1 of %2 blocks of transaction history. הורדו %1 מתוך %2 בלוקים של היסטוריית פעולות. - + Downloaded %1 blocks of transaction history. הורדו %1 בלוקים של היסטוריית פעולות. - + %n second(s) ago - לפני שניהלפני %n שניות + + לפני שניה + לפני %n שניות + - + %n minute(s) ago - לפני דקהלפני %n דקות + + לפני דקה + לפני %n דקות + - + %n hour(s) ago - לפני שעהלפני %n שעות + + לפני שעה + לפני %n שעות + - + %n day(s) ago - לפני יוםלפני %n ימים + + לפני יום + לפני %n ימים + - + Up to date עדכני - + Catching up... מתעדכן... - + Last received block was generated %1. הבלוק האחרון שהתקבל נוצר ב-%1. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? הפעולה הזאת חורגת מהמגבלה. ניתן לשלוח אותה תמורת עמלה בסך %1, שמגיעה לצמתים שמעבדים את הפעולה ועוזרת לתמוך ברשת. האם אתה מעוניין לשלם את העמלה? - + Sending... שולח... - + Sent transaction פעולה שנשלחה - + Incoming transaction פעולה שהתקבלה - + Date: %1 Amount: %2 Type: %3 @@ -576,35 +593,40 @@ Address: %4 כתובת: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> הארנק <b>מוצפן</b> וכרגע <b>פתוח</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> הארנק <b>מוצפן</b> וכרגע <b>נעול</b> - + Backup Wallet גיבוי ארנק - + Wallet Data (*.dat) נתוני ארנק (*.dat) - + Backup Failed הגיבוי נכשל - + There was an error trying to save the wallet data to the new location. היתה שגיאה בניסיון לשמור את מידע הארנק למיקום החדש. + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + + DisplayOptionsPage @@ -620,8 +642,13 @@ Address: %4 - Display addresses in transaction list - הצג כתובות ברשימת הפעולות + &Display addresses in transaction list + &הצג כתובות ברשימת הפעולות + + + + Whether to show Bitcoin addresses in the transaction list + @@ -794,8 +821,8 @@ Address: %4 - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - הכתובת אליה יישלח התשלום (למשל 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + @@ -839,8 +866,8 @@ Address: %4 - Copy the currently selected address to the system clipboard - העתק את הכתובת שסומנה ללוח המערכת + Copy the current signature to the system clipboard + @@ -926,20 +953,12 @@ Address: %4 0 ביטקוין - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> + + Wallet + - + <b>Recent transactions</b> <b>פעולות אחרונות</b> @@ -972,42 +991,47 @@ p, li { white-space: pre-wrap; } קוד QR - + Request Payment בקש תשלום - + Amount: כמות: - + BTC ביטקוין - + Label: תוית: - + Message: הודעה: - + &Save As... &שמור בשם... - + + Error encoding URI into QR Code. + + + + Save Image... שמור תמונה... - + PNG Images (*.png) תמונות PNG (*.png) @@ -1343,54 +1367,60 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date תאריך - + Type סוג - + Address כתובת - + Amount כמות - + Open for %n block(s) - פתוח למשך בלוק אחדפתוח למשך %n בלוקים + + פתוח למשך בלוק אחד + פתוח למשך %n בלוקים + - + Open until %1 פתוח עד %1 - + Offline (%1 confirmations) לא מחובר (%1 אישורים) - + Unconfirmed (%1 of %2 confirmations) ממתין לאישור (%1 מתוך %2 אישורים) - + Confirmed (%1 confirmations) מאושר (%1 אישורים) Mined balance will be available in %n more blocks - יתרה שנכרתה תהיה זמינה עוד בלוק אחדיתרה שנכרתה תהיה זמינה עוד %n בלוקים + + יתרה שנכרתה תהיה זמינה עוד בלוק אחד + יתרה שנכרתה תהיה זמינה עוד %n בלוקים + @@ -1633,345 +1663,345 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version גרסת ביטקוין - + Usage: שימוש: - + Send command to -server or bitcoind שלח פקודה ל -server או bitcoind - + List commands רשימת פקודות - + Get help for a command קבל עזרה עבור פקודה - + Options: אפשרויות: - + Specify configuration file (default: bitcoin.conf) ציין קובץ הגדרות (ברירת מחדל: bitcoin.conf) - + Specify pid file (default: bitcoind.pid) ציין קובץ pid (ברירת מחדל: bitcoind.pid) - + Generate coins צור מטבעות - + Don't generate coins אל תייצר מטבעות - + Start minimized התחל ממוזער - + Specify data directory ציין תיקיית נתונים - + Specify connection timeout (in milliseconds) ציין הגבלת זמן לחיבור (במילישניות) - + Connect through socks4 proxy התחבר דרך פרוקסי socks4 - + Allow DNS lookups for addnode and connect אפשר עיון ב-DNS להוספת צומת וחיבור - + Listen for connections on <port> (default: 8333 or testnet: 18333) האזן לחיבורים ב<פורט> (ברירת מחדל: 8333 או ברשת הבדיקה: 18333) - + Maintain at most <n> connections to peers (default: 125) החזק לכל היותר <n> חיבורים לעמיתים (ברירת מחדל: 125) - + Add a node to connect to הוסף צומת להתחבר אליו - + Connect only to the specified node התחבר רק לצומת המצוין - + Don't accept connections from outside אל תקבל חיבורים מבחוץ - + Don't bootstrap list of peers using DNS אל תשתמש ב-DNS לאתחול רשימת עמיתים - + Threshold for disconnecting misbehaving peers (default: 100) סף להתנתקות מעמיתים הנוהגים שלא כהלכה (ברירת מחדל: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) מספר שניות למנוע מעמיתים הנוהגים שלא כהלכה מלהתחבר מחדש (ברירת מחדל: 86400) - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) חוצץ מירבי לקבלה לכל חיבור, <n>*1000 בתים (ברירת מחדל: 10000) - + Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) חוצץ מירבי לשליחה לכל חיבור, <n>*1000 בתים (ברירת מחדל: 10000) - + Don't attempt to use UPnP to map the listening port אל תנסה להשתמש ב-UPnP כדי למפות את הפורט להאזנה - + Attempt to use UPnP to map the listening port נסה להשתמש ב-UPnP כדי למפות את הפורט להאזנה - + Fee per kB to add to transactions you send עמלה לכל kB להוסיף לפעולות שאתה שולח - + Accept command line and JSON-RPC commands קבל פקודות משורת הפקודה ו- JSON-RPC - + Run in the background as a daemon and accept commands רוץ ברקע כדימון וקבל פקודות - + Use the test network השתמש ברשת הבדיקה - + Output extra debugging information פלוט מידע דיבאג נוסף - + Prepend debug output with timestamp הוסף חותמת זמן לפני פלט דיבאג - + Send trace/debug info to console instead of debug.log file שלח מידע דיבאג ועקבה לקונסולה במקום לקובץ debug.log - + Send trace/debug info to debugger שלח מידע דיבאג ועקבה לכלי דיבאג - + Username for JSON-RPC connections שם משתמש לחיבורי JSON-RPC - + Password for JSON-RPC connections סיסמה לחיבורי JSON-RPC - + Listen for JSON-RPC connections on <port> (default: 8332) האזן לחיבורי JSON-RPC ב<פורט> (ברירת מחדל: 8332) - + Allow JSON-RPC connections from specified IP address אפשר חיבורי JSON-RPC מכתובת האינטרנט המצוינת - + Send commands to node running on <ip> (default: 127.0.0.1) שלח פקודות לצומת ב-<ip> (ברירת מחדל: 127.0.0.1) - + Set key pool size to <n> (default: 100) קבע את גודל המאגר ל -<n> (ברירת מחדל: 100) - + Rescan the block chain for missing wallet transactions סרוק מחדש את שרשרת הבלוקים למציאת פעולות חסרות בארנק - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) אפשרויות SSL: (ראה את הויקי של ביטקוין עבור הוראות להתקנת SSL) - + Use OpenSSL (https) for JSON-RPC connections השתמש ב-OpenSSL (https( עבור חיבורי JSON-RPC - + Server certificate file (default: server.cert) קובץ תעודת שרת (ברירת מחדל: server.cert) - + Server private key (default: server.pem) מפתח פרטי של השרת (ברירת מחדל: server.pem) - + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) צפנים קבילים (ברירת מחדל: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - + This help message הודעת העזרה הזו - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. אינו מסוגל לנעול את תיקיית הנתונים %s. כנראה שביטקוין כבר רץ. - + Loading addresses... טוען כתובות... - + Error loading addr.dat שגיאה בטעינת הקובץ addr.dat - + Error loading blkindex.dat שגיאה בטעינת הקובץ blkindex.dat - + Error loading wallet.dat: Wallet corrupted שגיאה בטעינת הקובץ wallet.dat: הארנק מושחת - + Error loading wallet.dat: Wallet requires newer version of Bitcoin שגיאה בטעינת הקובץ wallet.dat: הארנק דורש גרסה חדשה יותר של ביטקוין - + Wallet needed to be rewritten: restart Bitcoin to complete יש לכתוב מחדש את הארנק: אתחל את ביטקוין לסיום - + Error loading wallet.dat שגיאה בטעינת הקובץ wallet.dat - + Loading block index... טוען את אינדקס הבלוקים... - + Loading wallet... טוען ארנק... - + Rescanning... סורק מחדש... - + Done loading טעינה הושלמה - + Invalid -proxy address כתובת פרוקסי לא תקינה - + Invalid amount for -paytxfee=<amount> כמות לא תקינה בפרמטר -paytxfee=<amount> - + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. אזהרה: ערך גבוה מדי הושם בפרמטר -paytxfee. זו העמלה שתשלם אם אתה שולח פעולה. - + Error: CreateThread(StartNode) failed שגיאה: כישלון ב- CreateThread(StartNode) - + Warning: Disk space is low אזהרה: מעט מקום בדיסק - + Unable to bind to port %d on this computer. Bitcoin is probably already running. לא מסוגל להיקשר לפורט %d במחשב הזה. כנראה שביטקוין כבר רץ. - + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. אזהרה: אנא בדוק שהתאריך והשעה של המחשב הזה נכונים. אם השעון שלך שגוי ביטקוין לא יפעל כהלכה. - + beta בטא - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_hr.ts b/src/qt/locale/bitcoin_hr.ts index 9d9e2695aed..5b412bb3dd6 100644 --- a/src/qt/locale/bitcoin_hr.ts +++ b/src/qt/locale/bitcoin_hr.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -21,7 +23,7 @@ This is experimental software. Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - + @@ -64,17 +66,17 @@ This product includes software developed by the OpenSSL Project for use in the O Show &QR Code - + Sign a message to prove you own this address - + &Sign Message - + @@ -99,12 +101,12 @@ This product includes software developed by the OpenSSL Project for use in the O Edit - + Delete - + @@ -130,17 +132,17 @@ This product includes software developed by the OpenSSL Project for use in the O AddressTableModel - + Label Oznaka - + Address Adresa - + (no label) (bez oznake) @@ -234,13 +236,13 @@ Jeste li sigurni da želite šifrirati svoj novčanik? Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - + Warning: The Caps Lock key is on. - + @@ -287,278 +289,298 @@ Jeste li sigurni da želite šifrirati svoj novčanik? BitcoinGUI - + Bitcoin Wallet Bitcoin novčanik - - + + Synchronizing with network... Usklađivanje s mrežom ... - + Block chain synchronization in progress Sinkronizacija lanca blokova u tijeku - + &Overview &Pregled - + Show general overview of wallet Prikaži opći pregled novčanika - + &Transactions &Transakcije - + Browse transaction history Pretraži povijest transakcija - + &Address Book &Adresar - + Edit the list of stored addresses and labels Uređivanje popisa pohranjenih adresa i oznaka - + &Receive coins &Primanje novca - + Show the list of addresses for receiving payments Prikaži popis adresa za primanje isplate - + &Send coins &Pošalji novac - + Send coins to a bitcoin address Slanje novca na bitcoin adresu - + Sign &message - + - + Prove you control an address - + - + E&xit &Izlaz - + Quit application Izlazak iz programa - + &About %1 &Više o %1 - + Show information about Bitcoin Prikaži informacije o Bitcoinu - - - About &Qt - - - - - Show information about Qt - - + About &Qt + + + + + Show information about Qt + + + + &Options... &Postavke - + Modify configuration options for bitcoin Promijeni postavke konfiguracije za bitcoin - + Open &Bitcoin Otvori &Bitcoin - + Show the Bitcoin window Prikaži Bitcoin prozor - + &Export... &Izvoz... - + Export the data in the current tab to a file - + - + &Encrypt Wallet &Šifriraj novčanik - + Encrypt or decrypt wallet Šifriranje ili dešifriranje novčanika - + &Backup Wallet - + &Backup novčanika - + Backup wallet to another location - + - + &Change Passphrase &Promijena lozinke - + Change the passphrase used for wallet encryption Promijenite lozinku za šifriranje novčanika - + &File &Datoteka - + &Settings &Konfiguracija - + &Help &Pomoć - + Tabs toolbar Traka kartica - + Actions toolbar Traka akcija - + [testnet] [testnet] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - %n aktivna veza na Bitcoin mrežu%n aktivne veze na Bitcoin mrežu%n aktivnih veza na Bitcoin mrežu + + %n aktivna veza na Bitcoin mrežu + %n aktivne veze na Bitcoin mrežu + %n aktivnih veza na Bitcoin mrežu + - + Downloaded %1 of %2 blocks of transaction history. Preuzeto %1 od %2 blokova povijesti transakcije. - + Downloaded %1 blocks of transaction history. Preuzeto %1 blokova povijesti transakcije. - + %n second(s) ago - prije %n sekundeprije %n sekundeprije %n sekundi + + prije %n sekunde + prije %n sekunde + prije %n sekundi + - + %n minute(s) ago - prije %n minuteprije %n minuteprije %n minuta + + prije %n minute + prije %n minute + prije %n minuta + - + %n hour(s) ago - prije %n sataprije %n sataprije %n sati + + prije %n sata + prije %n sata + prije %n sati + - + %n day(s) ago - prije %n danaprije %n danaprije %n dana + + prije %n dana + prije %n dana + prije %n dana + - + Up to date Ažurno - + Catching up... Ažuriranje... - + Last received block was generated %1. Zadnji primljeni blok je generiran %1. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? Ova transakcija je preko ograničenja veličine. Možete ju ipak poslati za naknadu od %1, koja se daje čvorovima koji procesiraju vaše transakcije i tako podržavate mrežu. Želite li platiti naknadu? - + Sending... Slanje... - + Sent transaction Poslana transakcija - + Incoming transaction Dolazna transakcija - + Date: %1 Amount: %2 Type: %3 @@ -571,34 +593,39 @@ Adresa:%4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> Novčanik je <b>šifriran</b> i trenutno <b>otključan</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> Novčanik je <b>šifriran</b> i trenutno <b>zaključan</b> - + Backup Wallet - + - + Wallet Data (*.dat) - + - + Backup Failed - + - + There was an error trying to save the wallet data to the new location. - + + + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + @@ -615,8 +642,13 @@ Adresa:%4 - Display addresses in transaction list - Prikaži adrese u popisu transakcija + &Display addresses in transaction list + &Prikaži adrese u popisu transakcija + + + + Whether to show Bitcoin addresses in the transaction list + @@ -762,7 +794,7 @@ Adresa:%4 Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. - + @@ -772,7 +804,7 @@ Adresa:%4 Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. - + @@ -780,17 +812,17 @@ Adresa:%4 Message - + You can sign messages with your addresses to prove you own them. Be careful not to sign anything vague, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - + - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - Adresa za slanje plaćanja (npr. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + @@ -815,27 +847,27 @@ Adresa:%4 Enter the message you want to sign here - + Click "Sign Message" to get signature - + Sign a message to prove you own this address - + &Sign Message - + - Copy the currently selected address to the system clipboard - Kopiraj trenutno odabranu adresu u međuspremnik + Copy the current signature to the system clipboard + @@ -847,22 +879,22 @@ Adresa:%4 Error signing - + %1 is not a valid address. - + Private key for %1 is not available. - + Sign failed - + @@ -921,20 +953,12 @@ Adresa:%4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Lisnica</span></p></body></html> + + Wallet + Lisnica - + <b>Recent transactions</b> <b>Nedavne transakcije</b> @@ -964,47 +988,52 @@ p, li { white-space: pre-wrap; } QR Code - + - + Request Payment - + - + Amount: - + - + BTC - + - + Label: - + - + Message: Poruka: - + &Save As... - + - + + Error encoding URI into QR Code. + + + + Save Image... - + - + PNG Images (*.png) - + @@ -1034,7 +1063,7 @@ p, li { white-space: pre-wrap; } Remove all transaction fields - + @@ -1314,7 +1343,7 @@ p, li { white-space: pre-wrap; } Transaction ID: - + @@ -1338,54 +1367,62 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date Datum - + Type Tip - + Address Adresa - + Amount Iznos - + Open for %n block(s) - Otvoren za %n blokaOtvoren za %n blokovaOtvoren za %n blokova + + Otvoren za %n bloka + Otvoren za %n blokova + Otvoren za %n blokova + - + Open until %1 Otvoren do %1 - + Offline (%1 confirmations) Nije na mreži (%1 potvrda) - + Unconfirmed (%1 of %2 confirmations) Nepotvrđen (%1 od %2 potvrda) - + Confirmed (%1 confirmations) Potvrđen (%1 potvrda) Mined balance will be available in %n more blocks - Saldo iskovanih novčićća bit de dostupan nakon %n dodatnog blokaSaldo iskovanih novčićća bit de dostupan nakon %n dodatnih blokovaSaldo iskovanih novčićća bit de dostupan nakon %n dodatnih blokova + + Saldo iskovanih novčićća bit de dostupan nakon %n dodatnog bloka + Saldo iskovanih novčićća bit de dostupan nakon %n dodatnih blokova + Saldo iskovanih novčićća bit de dostupan nakon %n dodatnih blokova + @@ -1405,7 +1442,7 @@ p, li { white-space: pre-wrap; } Received from - + @@ -1539,7 +1576,7 @@ p, li { white-space: pre-wrap; } Copy amount - + @@ -1628,345 +1665,345 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version Bitcoin verzija - + Usage: Upotreba: - + Send command to -server or bitcoind Pošalji komandu usluzi -server ili bitcoind - + List commands Prikaži komande - + Get help for a command Potraži pomoć za komandu - + Options: Postavke: - + Specify configuration file (default: bitcoin.conf) Odredi konfiguracijsku datoteku (ugrađeni izbor: bitcoin.conf) - + Specify pid file (default: bitcoind.pid) Odredi proces ID datoteku (ugrađeni izbor: bitcoin.pid) - + Generate coins Generiraj novčiće - + Don't generate coins Ne generiraj novčiće - + Start minimized Pokreni minimiziran - + Specify data directory Odredi direktorij za datoteke - + Specify connection timeout (in milliseconds) Odredi vremenski prozor za spajanje na mrežu (u milisekundama) - + Connect through socks4 proxy Poveži se kroz socks4 proxy - + Allow DNS lookups for addnode and connect Dozvoli DNS upite za dodavanje nodova i povezivanje - + Listen for connections on <port> (default: 8333 or testnet: 18333) - + - + Maintain at most <n> connections to peers (default: 125) - + - + Add a node to connect to Unesite nod s kojim se želite spojiti - + Connect only to the specified node Poveži se samo sa određenim nodom - + Don't accept connections from outside Ne prihvaćaj povezivanje izvana - - - Don't bootstrap list of peers using DNS - - - - - Threshold for disconnecting misbehaving peers (default: 100) - - - - - Number of seconds to keep misbehaving peers from reconnecting (default: 86400) - - - Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) - + Don't bootstrap list of peers using DNS + - Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) - + Threshold for disconnecting misbehaving peers (default: 100) + + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) + + + + + Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) + + + + + Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) + + + + Don't attempt to use UPnP to map the listening port Ne pokušaj koristiti UPnP da otvoriš port za uslugu - + Attempt to use UPnP to map the listening port Pokušaj koristiti UPnP da otvoriš port za uslugu - + Fee per kB to add to transactions you send - + - + Accept command line and JSON-RPC commands Prihvati komande iz tekst moda i JSON-RPC - + Run in the background as a daemon and accept commands Izvršavaj u pozadini kao uslužnik i prihvaćaj komande - + Use the test network Koristi test mrežu - + Output extra debugging information - + - + Prepend debug output with timestamp - + - + Send trace/debug info to console instead of debug.log file - + - + Send trace/debug info to debugger - + - + Username for JSON-RPC connections Korisničko ime za JSON-RPC veze - + Password for JSON-RPC connections Lozinka za JSON-RPC veze - + Listen for JSON-RPC connections on <port> (default: 8332) Prihvaćaj JSON-RPC povezivanje na portu broj <port> (ugrađeni izbor: 8332) - + Allow JSON-RPC connections from specified IP address Dozvoli JSON-RPC povezivanje s određene IP adrese - + Send commands to node running on <ip> (default: 127.0.0.1) Pošalji komande nodu na adresi <ip> (ugrađeni izbor: 127.0.0.1) - + Set key pool size to <n> (default: 100) Podesi memorijski prostor za ključeve na <n> (ugrađeni izbor: 100) - + Rescan the block chain for missing wallet transactions Ponovno pretraži lanac blokova za transakcije koje nedostaju - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) SSL postavke: (za detalje o podešavanju SSL opcija vidi Bitcoin Wiki) - + Use OpenSSL (https) for JSON-RPC connections Koristi OpenSSL (https) za JSON-RPC povezivanje - + Server certificate file (default: server.cert) Uslužnikov SSL certifikat (ugrađeni izbor: server.cert) - + Server private key (default: server.pem) Uslužnikov privatni ključ (ugrađeni izbor: server.pem) - + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) Prihvaljivi načini šifriranja (ugrađeni izbor: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - + This help message Ova poruka za pomoć - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. Program ne može pristupiti direktoriju s datotekama %s. Bitcoin program je vjerojatno već pokrenut. - + Loading addresses... Učitavanje adresa... - - - Error loading addr.dat - - - - - Error loading blkindex.dat - - - - - Error loading wallet.dat: Wallet corrupted - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin - - - - - Wallet needed to be rewritten: restart Bitcoin to complete - + Error loading addr.dat + - Error loading wallet.dat - + Error loading blkindex.dat + - + + Error loading wallet.dat: Wallet corrupted + + + + + Error loading wallet.dat: Wallet requires newer version of Bitcoin + + + + + Wallet needed to be rewritten: restart Bitcoin to complete + + + + + Error loading wallet.dat + + + + Loading block index... Učitavanje indeksa blokova... - + Loading wallet... Učitavanje novčanika... - + Rescanning... Rescaniranje - + Done loading Učitavanje gotovo - + Invalid -proxy address Nevaljala -proxy adresa - + Invalid amount for -paytxfee=<amount> Nevaljali iznos za opciju -paytxfee=<amount> - + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. Upozorenje: -paytxfee je podešen na preveliki iznos. To je iznos koji ćete platiti za obradu transakcije. - + Error: CreateThread(StartNode) failed Greška: CreateThread(StartNode) nije uspjela - + Warning: Disk space is low Upozorenje: Malo diskovnog prostora - + Unable to bind to port %d on this computer. Bitcoin is probably already running. Program ne može koristiti port %d na ovom računalu. Bitcoin program je vjerojatno već pokrenut. - + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. Upozorenje: Molimo provjerite jesu li datum i vrijeme na vašem računalu točni. Ako vaš sat ide krivo, Bitcoin neće raditi ispravno. - + beta beta - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_hu.ts b/src/qt/locale/bitcoin_hu.ts index 7a66fa6c108..8c867b082c7 100644 --- a/src/qt/locale/bitcoin_hu.ts +++ b/src/qt/locale/bitcoin_hu.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -21,7 +23,7 @@ This is experimental software. Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - + @@ -61,31 +63,31 @@ This product includes software developed by the OpenSSL Project for use in the O &Copy to Clipboard &Másolás a vágólapra - - - Show &QR Code - - - - - Sign a message to prove you own this address - - - - - &Sign Message - - Delete the currently selected address from the list. Only sending addresses can be deleted. A kiválasztott cím törlése a listáról. Csak a küldő címek törölhetőek. + + + Show &QR Code + + &Delete &Törlés + + + Sign a message to prove you own this address + + + + + &Sign Message + + Copy address @@ -99,12 +101,12 @@ This product includes software developed by the OpenSSL Project for use in the O Edit - + Delete - + @@ -130,17 +132,17 @@ This product includes software developed by the OpenSSL Project for use in the O AddressTableModel - + Label Címke - + Address Cím - + (no label) (nincs címke) @@ -231,16 +233,11 @@ Biztosan kódolni akarod a tárcát? Wallet encrypted Tárca kódolva - - - Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - - Warning: The Caps Lock key is on. - + @@ -255,6 +252,11 @@ Biztosan kódolni akarod a tárcát? Wallet encryption failed due to an internal error. Your wallet was not encrypted. Tárca kódolása belső hiba miatt sikertelen. A tárcád nem lett kódolva. + + + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. + Bitcoin will close now to finish the encryption process. Ne feledd, hogy a tárca titkosítása sem nyújt teljes védelmet az adathalász programok fertőzésével szemben. + @@ -287,278 +289,288 @@ Biztosan kódolni akarod a tárcát? BitcoinGUI - + Bitcoin Wallet Bitcoin-tárca - - + + Synchronizing with network... Szinkronizálás a hálózattal... - + Block chain synchronization in progress Blokklánc-szinkronizálás folyamatban - + &Overview &Áttekintés - + Show general overview of wallet Tárca általános áttekintése - + &Transactions &Tranzakciók - + Browse transaction history Tranzakciótörténet megtekintése - + &Address Book Cím&jegyzék - + Edit the list of stored addresses and labels Tárolt címek és címkék listájának szerkesztése - + &Receive coins Érmék &fogadása - + Show the list of addresses for receiving payments Kiizetést fogadó címek listája - + &Send coins Érmék &küldése - + Send coins to a bitcoin address Érmék küldése megadott címre - + Sign &message - + - + Prove you control an address - + - + E&xit &Kilépés - + Quit application Kilépés - + &About %1 &A %1-ról - + Show information about Bitcoin Információk a Bitcoinról - - About &Qt - - - - - Show information about Qt - - - - + &Options... &Opciók... - + Modify configuration options for bitcoin Bitcoin konfigurációs opciók - + Open &Bitcoin A &Bitcoin megnyitása - + Show the Bitcoin window A Bitcoin-ablak mutatása - + &Export... &Exportálás... - - Export the data in the current tab to a file - - - - + &Encrypt Wallet Tárca &kódolása - + Encrypt or decrypt wallet Tárca kódolása vagy dekódolása - - &Backup Wallet - - - - - Backup wallet to another location - - - - + &Change Passphrase Jelszó &megváltoztatása - + Change the passphrase used for wallet encryption Tárcakódoló jelszó megváltoztatása - + + About &Qt + A &Qt-ról + + + + Show information about Qt + Információk a Qt ról + + + + Export the data in the current tab to a file + + + + + &Backup Wallet + + + + + Backup wallet to another location + + + + &File &Fájl - + &Settings &Beállítások - + &Help &Súgó - + Tabs toolbar Fül eszköztár - + Actions toolbar Parancsok eszköztár - + [testnet] [teszthálózat] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - %n aktív kapcsolat a Bitcoin-hálózattal%n aktív kapcsolat a Bitcoin-hálózattal + + %n aktív kapcsolat a Bitcoin-hálózattal + - + Downloaded %1 of %2 blocks of transaction history. %1 blokk letöltve a tranzakciótörténet %2 blokkjából. - + Downloaded %1 blocks of transaction history. %1 blokk letöltve a tranzakciótörténetből. - + %n second(s) ago - %n másodperccel ezelőtt%n másodperccel ezelőtt + + %n másodperccel ezelőtt + - + %n minute(s) ago - %n perccel ezelőtt%n perccel ezelőtt + + %n perccel ezelőtt + - + %n hour(s) ago - %n órával ezelőtt%n órával ezelőtt + + %n órával ezelőtt + - + %n day(s) ago - %n nappal ezelőtt%n nappal ezelőtt + + %n nappal ezelőtt + - + Up to date Naprakész - + Catching up... Frissítés... - + Last received block was generated %1. Az utolsóként kapott blokk generálva: %1. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? Ez a tranzakció túllépi a mérethatárt, de %1 tranzakciós díj ellenében így is elküldheted. Ezt a plusz összeget a tranzakcióidat feldolgozó csomópontok kapják, így magát a hálózatot támogatod vele. Hajlandó vagy megfizetni a díjat? - + Sending... Küldés... - + Sent transaction Tranzakció elküldve. - + Incoming transaction Beérkező tranzakció - + Date: %1 Amount: %2 Type: %3 @@ -571,34 +583,39 @@ Cím: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> Tárca <b>kódolva</b> és jelenleg <b>nyitva</b>. - + Wallet is <b>encrypted</b> and currently <b>locked</b> Tárca <b>kódolva</b> és jelenleg <b>zárva</b>. - + Backup Wallet - + - + Wallet Data (*.dat) - + - + Backup Failed - + - + There was an error trying to save the wallet data to the new location. - + + + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + @@ -615,8 +632,13 @@ Cím: %4 - Display addresses in transaction list - Címek megjelenítése a tranzakciólistában + &Display addresses in transaction list + &Címek megjelenítése a tranzakciólistában + + + + Whether to show Bitcoin addresses in the transaction list + @@ -762,7 +784,7 @@ Cím: %4 Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. - + @@ -772,7 +794,7 @@ Cím: %4 Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. - + @@ -780,17 +802,17 @@ Cím: %4 Message - + You can sign messages with your addresses to prove you own them. Be careful not to sign anything vague, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - + - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - Címzett címe (pl.: 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L ) + The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + @@ -815,27 +837,27 @@ Cím: %4 Enter the message you want to sign here - + Click "Sign Message" to get signature - + Sign a message to prove you own this address - + &Sign Message - + - Copy the currently selected address to the system clipboard - A kiválasztott cím másolása a vágólapra + Copy the current signature to the system clipboard + @@ -847,22 +869,22 @@ Cím: %4 Error signing - + %1 is not a valid address. - + Private key for %1 is not available. - + Sign failed - + @@ -921,20 +943,12 @@ Cím: %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> + + Wallet + - + <b>Recent transactions</b> <b>Legutóbbi tranzakciók</b> @@ -964,47 +978,52 @@ p, li { white-space: pre-wrap; } QR Code - + - + Request Payment - + - + Amount: - + - + BTC - + - + Label: - + - + Message: Üzenet: - + &Save As... - + - + + Error encoding URI into QR Code. + + + + Save Image... - + - + PNG Images (*.png) - + @@ -1031,16 +1050,16 @@ p, li { white-space: pre-wrap; } &Add recipient... &Címzett hozzáadása ... - - - Remove all transaction fields - - Clear all Mindent töröl + + + Remove all transaction fields + + Balance: @@ -1315,7 +1334,7 @@ p, li { white-space: pre-wrap; } Transaction ID: - + @@ -1339,54 +1358,58 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date Dátum - + Type Típus - + Address Cím - + Amount Összeg - + Open for %n block(s) - %n blokkra megnyitva%n blokkra megnyitva + + %n blokkra megnyitva + - + Open until %1 %1-ig megnyitva - + Offline (%1 confirmations) Offline (%1 megerősítés) - + Unconfirmed (%1 of %2 confirmations) Megerősítetlen (%1 %2 megerősítésből) - + Confirmed (%1 confirmations) Megerősítve (%1 megerősítés) Mined balance will be available in %n more blocks - %n blokk múlva lesz elérhető a bányászott egyenleg.%n blokk múlva lesz elérhető a bányászott egyenleg. + + %n blokk múlva lesz elérhető a bányászott egyenleg. + @@ -1406,7 +1429,7 @@ p, li { white-space: pre-wrap; } Received from - + @@ -1540,7 +1563,7 @@ p, li { white-space: pre-wrap; } Copy amount - + @@ -1629,245 +1652,245 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version Bitcoin verzió - + Usage: Használat: - + Send command to -server or bitcoind Parancs küldése a -serverhez vagy a bitcoindhez - + List commands Parancsok kilistázása - + Get help for a command Segítség egy parancsról - + Options: Opciók - + Specify configuration file (default: bitcoin.conf) Konfigurációs fájl (alapértelmezett: bitcoin.conf) - + Specify pid file (default: bitcoind.pid) pid-fájl (alapértelmezett: bitcoind.pid) - + Generate coins Érmék generálása - + Don't generate coins Bitcoin-generálás leállítása - + Start minimized Indítás lekicsinyítve - + Specify data directory Adatkönyvtár - + Specify connection timeout (in milliseconds) Csatlakozás időkerete (milliszekundumban) - + Connect through socks4 proxy Csatlakozás SOCKS4 proxyn keresztül - + Allow DNS lookups for addnode and connect DNS-kikeresés engedélyezése az addnode-nál és a connect-nél - + Listen for connections on <port> (default: 8333 or testnet: 18333) - + - + Maintain at most <n> connections to peers (default: 125) - + - + Add a node to connect to Elérendő csomópont megadása - + Connect only to the specified node Csatlakozás csak a megadott csomóponthoz - + Don't accept connections from outside Külső csatlakozások elutasítása - - - Don't bootstrap list of peers using DNS - - - - - Threshold for disconnecting misbehaving peers (default: 100) - - - - - Number of seconds to keep misbehaving peers from reconnecting (default: 86400) - - - Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) - + Don't bootstrap list of peers using DNS + - Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) - + Threshold for disconnecting misbehaving peers (default: 100) + + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) + + + + + Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) + + + + + Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) + + + + Don't attempt to use UPnP to map the listening port UPnP-használat letiltása a figyelő port feltérképezésénél - + Attempt to use UPnP to map the listening port UPnP-használat engedélyezése a figyelő port feltérképezésénél - + Fee per kB to add to transactions you send - + - + Accept command line and JSON-RPC commands Parancssoros és JSON-RPC parancsok elfogadása - + Run in the background as a daemon and accept commands Háttérben futtatás daemonként és parancsok elfogadása - + Use the test network Teszthálózat használata - + Output extra debugging information - + - + Prepend debug output with timestamp - + - + Send trace/debug info to console instead of debug.log file - + - + Send trace/debug info to debugger - + - + Username for JSON-RPC connections Felhasználói név JSON-RPC csatlakozásokhoz - + Password for JSON-RPC connections Jelszó JSON-RPC csatlakozásokhoz - + Listen for JSON-RPC connections on <port> (default: 8332) JSON-RPC csatlakozásokhoz figyelendő <port> (alapértelmezett: 8332) - + Allow JSON-RPC connections from specified IP address JSON-RPC csatlakozások engedélyezése meghatározott IP-címről - + Send commands to node running on <ip> (default: 127.0.0.1) Parancsok küldése <ip> címen működő csomóponthoz (alapértelmezett: 127.0.0.1) - + Set key pool size to <n> (default: 100) Kulcskarika mérete <n> (alapértelmezett: 100) - + Rescan the block chain for missing wallet transactions Blokklánc újraszkennelése hiányzó tárca-tranzakciók után - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -1875,134 +1898,134 @@ SSL-opciók: (lásd a Bitcoin Wiki SSL-beállítási instrukcióit) - + Use OpenSSL (https) for JSON-RPC connections OpenSSL (https) használata JSON-RPC csatalkozásokhoz - + Server certificate file (default: server.cert) Szervertanúsítvány-fájl (alapértelmezett: server.cert) - + Server private key (default: server.pem) Szerver titkos kulcsa (alapértelmezett: server.pem) - + + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. + Az %s adatkönyvtár nem zárható. A Bitcoin valószínűleg fut már. + + + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) Elfogadható rejtjelkulcsok (alapértelmezett: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH ) - - This help message - Ez a súgó-üzenet - - - - - Cannot obtain a lock on data directory %s. Bitcoin is probably already running. - Az %s adatkönyvtár nem zárható. A Bitcoin valószínűleg fut már. - - - + Loading addresses... Címek betöltése... - Error loading addr.dat - - - - - Error loading blkindex.dat - - - - - Error loading wallet.dat: Wallet corrupted - - - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin - + This help message + Ez a súgó-üzenet + - Wallet needed to be rewritten: restart Bitcoin to complete - - - - - Error loading wallet.dat - - - - Loading block index... Blokkindex betöltése... - + Loading wallet... Tárca betöltése... - + Rescanning... Újraszkennelés... + + + Error loading addr.dat + Hiba az addr.dat betöltése közben + + + + Error loading blkindex.dat + Hiba az blkindex.dat betöltése közben + + Error loading wallet.dat: Wallet corrupted + Hiba a wallet.dat betöltése közben: meghibásodott tárca + + + Done loading Betöltés befejezve. + Error loading wallet.dat: Wallet requires newer version of Bitcoin + Hiba a wallet.dat betöltése közben: ehhez a tárcához újabb verziójú Bitcoin-kliens szükséges + + + Invalid -proxy address Érvénytelen -proxy cím + Wallet needed to be rewritten: restart Bitcoin to complete + + + + Invalid amount for -paytxfee=<amount> Étvénytelen -paytxfee=<összeg> összeg + Error loading wallet.dat + Hiba az wallet.dat betöltése közben + + + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. Figyelem: a -paytxfee nagyon magas. Ennyi tranzakciós díjat fogsz fizetni, ha elküldöd a tranzakciót. - + Error: CreateThread(StartNode) failed Hiba: CreateThread(StartNode) sikertelen - + Warning: Disk space is low Figyelem: kevés a hely a lemezen. - + Unable to bind to port %d on this computer. Bitcoin is probably already running. A %d port nem elérhető ezen a gépen. A Bitcoin valószínűleg fut már. - + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. Figyelem: Ellenőrizd, hogy helyesen van-e beállítva a gépeden a dátum és az idő. A Bitcoin nem fog megfelelően működni, ha rosszul van beállítvaaz órád. - + beta béta - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_it.ts b/src/qt/locale/bitcoin_it.ts index 98dc47e5ed1..82d695391b7 100644 --- a/src/qt/locale/bitcoin_it.ts +++ b/src/qt/locale/bitcoin_it.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -67,11 +69,21 @@ Questo prodotto include software sviluppato dal progetto OpenSSL per l'uso &Copy to Clipboard &Copia nella clipboard + + + Delete the currently selected address from the list. Only sending addresses can be deleted. + Cancella l'indirizzo attualmente selezionato dalla lista. Solo indirizzi d'invio possono essere cancellati. + Show &QR Code Mostra il codice &QR + + + &Delete + &Cancella + Sign a message to prove you own this address @@ -82,16 +94,6 @@ Questo prodotto include software sviluppato dal progetto OpenSSL per l'uso &Sign Message &Firma il messaggio - - - Delete the currently selected address from the list. Only sending addresses can be deleted. - Cancella l'indirizzo attualmente selezionato dalla lista. Solo indirizzi d'invio possono essere cancellati. - - - - &Delete - &Cancella - Copy address @@ -136,17 +138,17 @@ Questo prodotto include software sviluppato dal progetto OpenSSL per l'uso AddressTableModel - + Label Etichetta - + Address Indirizzo - + (no label) (nessuna etichetta) @@ -237,11 +239,6 @@ Si è sicuri di voler cifrare il portamonete? Wallet encrypted Portamonete cifrato - - - Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - Bitcoin verrà ora chiuso per finire il processo di crittazione. Ricorda che criptare il tuo portamonete non può fornire una protezione totale contro furti causati da malware che dovessero infettare il tuo computer. - @@ -261,6 +258,11 @@ Si è sicuri di voler cifrare il portamonete? Wallet encryption failed due to an internal error. Your wallet was not encrypted. Cifratura del portamonete fallita a causa di un errore interno. Il portamonete non è stato cifrato. + + + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. + Bitcoin verrà ora chiuso per finire il processo di crittazione. Ricorda che criptare il tuo portamonete non può fornire una protezione totale contro furti causati da malware che dovessero infettare il tuo computer. + @@ -293,278 +295,293 @@ Si è sicuri di voler cifrare il portamonete? BitcoinGUI - + Bitcoin Wallet Portamonete di bitcoin - - + + Synchronizing with network... Sto sincronizzando con la rete... - + Block chain synchronization in progress sincronizzazione della catena di blocchi in corso - + &Overview &Sintesi - + Show general overview of wallet Mostra lo stato generale del portamonete - + &Transactions &Transazioni - + Browse transaction history Cerca nelle transazioni - + &Address Book &Rubrica - + Edit the list of stored addresses and labels Modifica la lista degli indirizzi salvati e delle etichette - + &Receive coins &Ricevi monete - + Show the list of addresses for receiving payments Mostra la lista di indirizzi su cui ricevere pagamenti - + &Send coins &Invia monete - + Send coins to a bitcoin address Invia monete ad un indirizzo bitcoin - + Sign &message Firma il &messaggio - + Prove you control an address Dimostra di controllare un indirizzo - + E&xit &Esci - + Quit application Chiudi applicazione - + &About %1 &Informazioni su %1 - + Show information about Bitcoin Mostra informazioni su Bitcoin - - About &Qt - Informazioni su &Qt - - - - Show information about Qt - Mostra informazioni su Qt - - - + &Options... &Opzioni... - + Modify configuration options for bitcoin Modifica configurazione opzioni per bitcoin - + Open &Bitcoin Apri &Bitcoin - + Show the Bitcoin window Mostra la finestra Bitcoin - + &Export... &Esporta... - - Export the data in the current tab to a file - - - - + &Encrypt Wallet &Cifra il portamonete - + Encrypt or decrypt wallet Cifra o decifra il portamonete - - &Backup Wallet - - - - - Backup wallet to another location - - - - + &Change Passphrase &Cambia la passphrase - + Change the passphrase used for wallet encryption Cambia la passphrase per la cifratura del portamonete - + + About &Qt + Informazioni su &Qt + + + + Show information about Qt + Mostra informazioni su Qt + + + + Export the data in the current tab to a file + + + + + &Backup Wallet + &Backup il portamonete + + + + Backup wallet to another location + + + + &File &File - + &Settings &Impostazioni - + &Help &Aiuto - + Tabs toolbar Barra degli strumenti "Tabs" - + Actions toolbar Barra degli strumenti "Azioni" - + [testnet] [testnet] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - %n connessione attiva alla rete Bitcoin%n connessioni attive alla rete Bitcoin + + %n connessione attiva alla rete Bitcoin + %n connessioni attive alla rete Bitcoin + - + Downloaded %1 of %2 blocks of transaction history. Scaricati %1 dei %2 blocchi dello storico transazioni. - + Downloaded %1 blocks of transaction history. Scaricati %1 blocchi dello storico transazioni. - + %n second(s) ago - %n secondo fa%n secondi fa + + %n secondo fa + %n secondi fa + - + %n minute(s) ago - %n minuto fa%n minuti fa + + %n minuto fa + %n minuti fa + - + %n hour(s) ago - %n ora fa%n ore fa + + %n ora fa + %n ore fa + - + %n day(s) ago - %n giorno fa%n giorni fa + + %n giorno fa + %n giorni fa + - + Up to date Aggiornato - + Catching up... In aggiornamento... - + Last received block was generated %1. L'ultimo blocco ricevuto è stato generato %1 - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? Questa transazione è superiore al limite di dimensione. È comunque possibile inviarla con una commissione di %1, che va ai nodi che processano la tua transazione e contribuisce a sostenere la rete. Vuoi pagare la commissione? - + Sending... Invio... - + Sent transaction Transazione inviata - + Incoming transaction Transazione ricevuta - + Date: %1 Amount: %2 Type: %3 @@ -578,34 +595,39 @@ Indirizzo: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> Il portamonete è <b>cifrato</b> e attualmente <b>sbloccato</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> Il portamonete è <b>cifrato</b> e attualmente <b>bloccato</b> - + Backup Wallet - + - + Wallet Data (*.dat) - + - + Backup Failed - + - + There was an error trying to save the wallet data to the new location. - + + + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + @@ -622,8 +644,13 @@ Indirizzo: %4 - Display addresses in transaction list - Mostra gli indirizzi nella lista delle transazioni + &Display addresses in transaction list + &Mostra gli indirizzi nella lista delle transazioni + + + + Whether to show Bitcoin addresses in the transaction list + @@ -792,12 +819,12 @@ Indirizzo: %4 You can sign messages with your addresses to prove you own them. Be careful not to sign anything vague, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - + - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - L'indirizzo del beneficiario cui inviare il pagamento (ad esempio 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + @@ -841,8 +868,8 @@ Indirizzo: %4 - Copy the currently selected address to the system clipboard - Copia l'indirizzo attualmente selezionato nella clipboard + Copy the current signature to the system clipboard + @@ -928,20 +955,12 @@ Indirizzo: %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">⏎ -<html><head><meta name="qrichtext" content="1" /><style type="text/css">⏎ -p, li { white-space: pre-wrap; }⏎ -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;">⏎ -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> + + Wallet + - + <b>Recent transactions</b> <b>Transazioni recenti</b> @@ -974,44 +993,49 @@ p, li { white-space: pre-wrap; }⏎ Codice QR - + Request Payment Richiedi pagamento - + Amount: Importo: - + BTC BTC - + Label: Etichetta: - + Message: Messaggio: - + &Save As... &Salva come... - - Save Image... - + + Error encoding URI into QR Code. + - + + Save Image... + + + + PNG Images (*.png) - + @@ -1038,16 +1062,16 @@ p, li { white-space: pre-wrap; }⏎ &Add recipient... &Aggiungi beneficiario... - - - Remove all transaction fields - Rimuovi tutti i campi della transazione - Clear all Cancella tutto + + + Remove all transaction fields + Rimuovi tutti i campi della transazione + Balance: @@ -1345,54 +1369,60 @@ p, li { white-space: pre-wrap; }⏎ TransactionTableModel - + Date Data - + Type Tipo - + Address Indirizzo - + Amount Importo - + Open for %n block(s) - Aperto per %n bloccoAperto per %n blocchi + + Aperto per %n blocco + Aperto per %n blocchi + - + Open until %1 Aperto fino a %1 - + Offline (%1 confirmations) Offline (%1 conferme) - + Unconfirmed (%1 of %2 confirmations) Non confermati (%1 su %2 conferme) - + Confirmed (%1 confirmations) Confermato (%1 conferme) Mined balance will be available in %n more blocks - Il saldo generato sarà disponibile tra %n altro bloccoIl saldo generato sarà disponibile tra %n altri blocchi + + Il saldo generato sarà disponibile tra %n altro blocco + Il saldo generato sarà disponibile tra %n altri blocchi + @@ -1635,245 +1665,245 @@ p, li { white-space: pre-wrap; }⏎ bitcoin-core - + Bitcoin version Versione di Bitcoin - + Usage: Utilizzo: - + Send command to -server or bitcoind Manda il comando a -server o bitcoind - + List commands Lista comandi - + Get help for a command Aiuto su un comando - + Options: Opzioni: - + Specify configuration file (default: bitcoin.conf) Specifica il file di configurazione (di default: bitcoin.conf) - + Specify pid file (default: bitcoind.pid) Specifica il file pid (default: bitcoind.pid) - + Generate coins Genera Bitcoin - + Don't generate coins Non generare Bitcoin - + Start minimized Parti in icona - + Specify data directory Specifica la cartella dati - + Specify connection timeout (in milliseconds) Specifica il timeout di connessione (in millisecondi) - + Connect through socks4 proxy Connessione tramite socks4 proxy - + Allow DNS lookups for addnode and connect Consenti ricerche DNS per aggiungere nodi e collegare - + Listen for connections on <port> (default: 8333 or testnet: 18333) Ascolta le connessioni JSON-RPC su <porta> (default: 8333 o testnet: 18333) - + Maintain at most <n> connections to peers (default: 125) Mantieni al massimo <n> connessioni ai peer (default: 125) - + Add a node to connect to Aggiungi un nodo e connetti a - + Connect only to the specified node Connetti solo al nodo specificato - + Don't accept connections from outside Non accettare connessioni dall'esterno - + Don't bootstrap list of peers using DNS Non avviare la lista dei peer usando il DNS - + Threshold for disconnecting misbehaving peers (default: 100) Soglia di disconnessione dei peer di cattiva qualità (default: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Numero di secondi di sospensione che i peer di cattiva qualità devono trascorrere prima di riconnettersi (default: 86400) - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) Buffer di ricezione massimo per connessione, <n>*1000 byte (default: 10000) - + Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) Buffer di invio massimo per connessione, <n>*1000 byte (default: 10000) - + Don't attempt to use UPnP to map the listening port Non usare l'UPnP per mappare la porta - + Attempt to use UPnP to map the listening port Prova ad usare l'UPnp per mappare la porta - + Fee per kB to add to transactions you send Commissione per kB da aggiungere alle transazioni in uscita - + Accept command line and JSON-RPC commands Accetta da linea di comando e da comandi JSON-RPC - + Run in the background as a daemon and accept commands Esegui in background come demone e accetta i comandi - + Use the test network Utilizza la rete di prova - + Output extra debugging information Produci informazioni extra utili al debug - + Prepend debug output with timestamp Anteponi all'output di debug una marca temporale - + Send trace/debug info to console instead of debug.log file Invia le informazioni di trace/debug alla console invece che al file debug.log - + Send trace/debug info to debugger Invia le informazioni di trace/debug al debugger - + Username for JSON-RPC connections Nome utente per connessioni JSON-RPC - + Password for JSON-RPC connections Password per connessioni JSON-RPC - + Listen for JSON-RPC connections on <port> (default: 8332) Attendi le connessioni JSON-RPC su <porta> (default: 8332) - + Allow JSON-RPC connections from specified IP address Consenti connessioni JSON-RPC dall'indirizzo IP specificato - + Send commands to node running on <ip> (default: 127.0.0.1) Inviare comandi al nodo in esecuzione su <ip> (default: 127.0.0.1) - + Set key pool size to <n> (default: 100) Impostare la quantità di chiavi di riserva a <n> (default: 100) - + Rescan the block chain for missing wallet transactions Ripeti analisi della catena dei blocchi per cercare le transazioni mancanti dal portamonete - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -1881,134 +1911,134 @@ Opzioni SSL: (vedi il wiki di Bitcoin per le istruzioni di configurazione SSL) - + Use OpenSSL (https) for JSON-RPC connections Utilizzare OpenSSL (https) per le connessioni JSON-RPC - + Server certificate file (default: server.cert) File certificato del server (default: server.cert) - + Server private key (default: server.pem) Chiave privata del server (default: server.pem) - + + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. + Non è possibile ottenere i dati sulla directory %s. Probabilmente Bitcoin è già in esecuzione. + + + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) Cifrari accettabili (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - - This help message - Questo messaggio di aiuto - - - - - Cannot obtain a lock on data directory %s. Bitcoin is probably already running. - Non è possibile ottenere i dati sulla directory %s. Probabilmente Bitcoin è già in esecuzione. - - - + Loading addresses... Caricamento indirizzi... - Error loading addr.dat - Errore caricamento addr.dat - - - - Error loading blkindex.dat - Errore caricamento blkindex.dat - - - - Error loading wallet.dat: Wallet corrupted - Errore caricamento wallet.dat: Wallet corrotto - - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin - Errore caricamento wallet.dat: il wallet richiede una versione nuova di Bitcoin + This help message + Questo messaggio di aiuto + - Wallet needed to be rewritten: restart Bitcoin to complete - Il portamonete deve essere riscritto: riavviare Bitcoin per completare - - - - Error loading wallet.dat - Errore caricamento wallet.dat - - - Loading block index... Caricamento dell'indice del blocco... - + Loading wallet... Caricamento portamonete... - + Rescanning... Ripetere la scansione... + + + Error loading addr.dat + Errore caricamento addr.dat + + + + Error loading blkindex.dat + Errore caricamento blkindex.dat + + Error loading wallet.dat: Wallet corrupted + Errore caricamento wallet.dat: Wallet corrotto + + + Done loading Caricamento completato + Error loading wallet.dat: Wallet requires newer version of Bitcoin + Errore caricamento wallet.dat: il wallet richiede una versione nuova di Bitcoin + + + Invalid -proxy address Indirizzo -proxy non valido + Wallet needed to be rewritten: restart Bitcoin to complete + Il portamonete deve essere riscritto: riavviare Bitcoin per completare + + + Invalid amount for -paytxfee=<amount> Importo non valido per -paytxfee=<amount> + Error loading wallet.dat + Errore caricamento wallet.dat + + + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. Attenzione: -paytxfee è molto alta. Questa è la commissione che si paga quando si invia una transazione. - + Error: CreateThread(StartNode) failed Errore: CreateThread(StartNode) non riuscito - + Warning: Disk space is low Attenzione: lo spazio su disco è scarso - + Unable to bind to port %d on this computer. Bitcoin is probably already running. Impossibile collegarsi alla porta %d su questo computer. Probabilmente Bitcoin è già in esecuzione. - + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. Attenzione: si prega di controllare che la data del computer e l'ora siano corrette. Se il vostro orologio è sbagliato Bitcoin non funziona correttamente. - + beta beta - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_lt.ts b/src/qt/locale/bitcoin_lt.ts index d733f1a7252..46f3ef3e2f2 100644 --- a/src/qt/locale/bitcoin_lt.ts +++ b/src/qt/locale/bitcoin_lt.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -137,17 +139,17 @@ Platinama pagal licenziją MIT/X11, papildomą informaciją rasite faile license AddressTableModel - + Label Žymė - + Address Adresas - + (no label) (nėra žymės) @@ -294,278 +296,298 @@ Ar jūs tikrai norite užšifruoti savo piniginę? BitcoinGUI - + Bitcoin Wallet Bitkoinų piniginė - - + + Synchronizing with network... Sinchronizavimas su tinklu ... - + Block chain synchronization in progress Vyksta blokų grandinės sinchronizavimas - + &Overview &O Apžvalga - + Show general overview of wallet Rodyti piniginės bendrą apžvalgą - + &Transactions &T Sandoriai - + Browse transaction history Apžvelgti sandorių istoriją - + &Address Book &Adresų knygelė - + Edit the list of stored addresses and labels Redaguoti išsaugotus adresus bei žymes - + &Receive coins &R Gautos monetos - + Show the list of addresses for receiving payments Parodyti adresų sąraša mokėjimams gauti - + &Send coins &Siųsti monetas - + Send coins to a bitcoin address Siųsti monetas bitkoinų adresu - + Sign &message Registruoti praneši&mą - + Prove you control an address Įrodyti, kad jūs valdyti adresą - + E&xit &x išėjimas - + Quit application Išjungti programą - + &About %1 &Apie %1 - + Show information about Bitcoin Rodyti informaciją apie Bitkoiną - + About &Qt Apie &Qt - + Show information about Qt Rodyti informaciją apie Qt - + &Options... &Opcijos... - + Modify configuration options for bitcoin Keisti bitcoin konfigūracijos galimybes - + Open &Bitcoin Atidaryti &Bitcoin - + Show the Bitcoin window Rodyti Bitcoin langą - + &Export... &Eksportas... - + Export the data in the current tab to a file - + - + &Encrypt Wallet &E Užšifruoti piniginę - + Encrypt or decrypt wallet Užšifruoti ar iššifruoti piniginę - + &Backup Wallet - + &Backup piniginę - + Backup wallet to another location - + - + &Change Passphrase &C Pakeisti slaptažodį - + Change the passphrase used for wallet encryption Pakeisti slaptažodį naudojamą piniginės užšifravimui - + &File &Failas - + &Settings Nu&Statymai - + &Help &H Pagelba - + Tabs toolbar Tabs įrankių juosta - + Actions toolbar Veiksmų įrankių juosta - + [testnet] [testavimotinklas] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - %n Bitcoin tinklo aktyvus ryšys%n Bitcoin tinklo aktyvūs ryšiai%n Bitcoin tinklo aktyvūs ryšiai + + %n Bitcoin tinklo aktyvus ryšys + %n Bitcoin tinklo aktyvūs ryšiai + %n Bitcoin tinklo aktyvūs ryšiai + - + Downloaded %1 of %2 blocks of transaction history. Atsisiuntė %1 iš %2 sandorių istorijos blokų - + Downloaded %1 blocks of transaction history. Atsisiuntė %1 iš %2 sandorių istorijos blokų - + %n second(s) ago - Prieš %n sekundęPrieš %n sekundesPrieš %n sekundžių + + Prieš %n sekundę + Prieš %n sekundes + Prieš %n sekundžių + - + %n minute(s) ago - Prieš %n minutęPrieš %n minutesPrieš %n minutčių + + Prieš %n minutę + Prieš %n minutes + Prieš %n minutčių + - + %n hour(s) ago - Prieš %n valandąPrieš %n valandasPrieš %n valandų + + Prieš %n valandą + Prieš %n valandas + Prieš %n valandų + - + %n day(s) ago - Prieš %n dienąPrieš %n dienasPrieš %n dienų + + Prieš %n dieną + Prieš %n dienas + Prieš %n dienų + - + Up to date Iki šiol - + Catching up... Gaudo... - + Last received block was generated %1. Paskutinis gautas blokas buvo sukurtas %1. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? Šis sandoris viršija leistiną dydį. Jūs galite įvykdyti jį papildomai sumokėję %1 mokesčių, kurie bus išsiųsti tais pačiais mazgais kuriais vyko sandoris ir padės palaikyti tinklą. Ar jūs norite apmokėti papildomą mokestį? - + Sending... Siunčiama... - + Sent transaction Sandoris nusiųstas - + Incoming transaction Ateinantis sandoris - + Date: %1 Amount: %2 Type: %3 @@ -577,34 +599,39 @@ Tipas: %3 Adresas: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> Piniginė <b>užšifruota</b> ir šiuo metu <b>atrakinta</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> Piniginė <b>užšifruota</b> ir šiuo metu <b>užrakinta</b> - + Backup Wallet - + - + Wallet Data (*.dat) - + - + Backup Failed - + - + There was an error trying to save the wallet data to the new location. - + + + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + @@ -621,8 +648,13 @@ Adresas: %4 - Display addresses in transaction list - Rodyti adresus sandorių sąraše + &Display addresses in transaction list + &Rodyti adresus sandorių sąraše + + + + Whether to show Bitcoin addresses in the transaction list + @@ -791,12 +823,12 @@ Adresas: %4 You can sign messages with your addresses to prove you own them. Be careful not to sign anything vague, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - + - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - Nurodyti adresą mokėjimui siųsti (pvz. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + @@ -840,8 +872,8 @@ Adresas: %4 - Copy the currently selected address to the system clipboard - Kopijuoti pasirinktą adresą į sistemos mainų atmintį + Copy the current signature to the system clipboard + @@ -927,20 +959,12 @@ Adresas: %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> + + Wallet + - + <b>Recent transactions</b> <b>Naujausi sandoris</b> @@ -973,44 +997,49 @@ p, li { white-space: pre-wrap; } QR kodas - + Request Payment Prašau išmokėti - + Amount: Suma: - + BTC BTC - + Label: Žymė: - + Message: Žinutė: - + &Save As... &S išsaugoti kaip... - - Save Image... - + + Error encoding URI into QR Code. + - + + Save Image... + + + + PNG Images (*.png) - + @@ -1344,54 +1373,62 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date Data - + Type Tipas - + Address Adresas - + Amount Suma - + Open for %n block(s) - Atidaryta %n blokuiAtidaryta %n blokamsAtidaryta %n blokų + + Atidaryta %n blokui + Atidaryta %n blokams + Atidaryta %n blokų + - + Open until %1 Atidaryta kol %n - + Offline (%1 confirmations) Atjungta (%1 patvirtinimai) - + Unconfirmed (%1 of %2 confirmations) Nepatvirtintos (%1 iš %2 patvirtinimų) - + Confirmed (%1 confirmations) Patvirtinta (%1 patvirtinimai) Mined balance will be available in %n more blocks - Išgautas balansas bus pasiekiamas po %n blokoIšgautas balansas bus pasiekiamas po %n blokųIšgautas balansas bus pasiekiamas po %n blokų + + Išgautas balansas bus pasiekiamas po %n bloko + Išgautas balansas bus pasiekiamas po %n blokų + Išgautas balansas bus pasiekiamas po %n blokų + @@ -1634,345 +1671,345 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version Bitcoin versija - + Usage: Naudojimas: - + Send command to -server or bitcoind Siųsti komandą serveriui arba bitcoind - + List commands Komandų sąrašas - + Get help for a command Suteikti pagalba komandai - + Options: Opcijos: - + Specify configuration file (default: bitcoin.conf) Nurodyti konfigūracijos failą (pagal nutylėjimąt: bitcoin.conf) - + Specify pid file (default: bitcoind.pid) Nurodyti pid failą (pagal nutylėjimą: bitcoind.pid) - + Generate coins Sukurti monetas - + Don't generate coins Neišgavinėti monetų - + Start minimized Pradžia sumažinta - + Specify data directory Nustatyti duomenų direktoriją - + Specify connection timeout (in milliseconds) Nustatyti sujungimo trukmę (milisekundėmis) - + Connect through socks4 proxy Prisijungti per socks4 proxy - + Allow DNS lookups for addnode and connect Leisti DNS paiešką sujungimui ir mazgo pridėjimui - + Listen for connections on <port> (default: 8333 or testnet: 18333) Sujungimo klausymas prijungčiai <port> (pagal nutylėjimą: 8333 arba testnet: 18333) - + Maintain at most <n> connections to peers (default: 125) Palaikyti ne daugiau <n> jungčių kolegoms (pagal nutylėjimą: 125) - + Add a node to connect to Pridėti mazgą prie sujungti su - + Connect only to the specified node Prisijungti tik prie nurodyto mazgo - + Don't accept connections from outside Nepriimti išorinio sujungimo - + Don't bootstrap list of peers using DNS Neleisti kolegų sąrašo naudojant DNS - + Threshold for disconnecting misbehaving peers (default: 100) Atjungimo dėl netinkamo kolegų elgesio riba (pagal nutylėjimą: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Sekundžių kiekis eikiamas palaikyti ryšį dėl lygiarangių nestabilumo (pagal nutylėjimą: 86.400) - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) Maksimalus buferis priėmimo sujungimui <n>*1000 bitų (pagal nutylėjimą: 10000) - + Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) Maksimalus buferis siuntimo sujungimui <n>*1000 bitų (pagal nutylėjimą: 10000) - + Don't attempt to use UPnP to map the listening port Nenaudoti UPnP klausymo prievado struktūros - + Attempt to use UPnP to map the listening port Bandymas naudoti UPnP struktūra klausymosi prievadui - + Fee per kB to add to transactions you send Įtraukti mokestį už kB siunčiamiems sandoriams - + Accept command line and JSON-RPC commands Priimti komandinę eilutę ir JSON-RPC komandas - + Run in the background as a daemon and accept commands Dirbti fone kaip šešėlyje ir priimti komandas - + Use the test network Naudoti testavimo tinklą - + Output extra debugging information Išėjimo papildomas derinimo informacija - + Prepend debug output with timestamp Prideėti laiko žymę derinimo rezultatams - + Send trace/debug info to console instead of debug.log file Siųsti atsekimo/derinimo info į konsolę vietoj debug.log failo - + Send trace/debug info to debugger Siųsti sekimo/derinimo info derintojui - + Username for JSON-RPC connections Vartotojo vardas JSON-RPC jungimuisi - + Password for JSON-RPC connections Slaptažodis JSON-RPC sujungimams - + Listen for JSON-RPC connections on <port> (default: 8332) Klausymas JSON-RPC sujungimui prijungčiai <port> (pagal nutylėjimą: 8332) - + Allow JSON-RPC connections from specified IP address Leisti JSON-RPC tik iš nurodytų IP adresų - + Send commands to node running on <ip> (default: 127.0.0.1) Siųsti komandą mazgui dirbančiam <ip> (pagal nutylėjimą: 127.0.0.1) - + Set key pool size to <n> (default: 100) Nustatyti rakto apimties dydį <n> (pagal nutylėjimą: 100) - + Rescan the block chain for missing wallet transactions Ieškoti prarastų piniginės sandorių blokų grandinėje - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) SSL opcijos (žr.e Bitcoin Wiki for SSL setup instructions) - + Use OpenSSL (https) for JSON-RPC connections Naudoti OpenSSL (https) jungimuisi JSON-RPC - + Server certificate file (default: server.cert) Serverio sertifikato failas (pagal nutylėjimą: server.cert) - + Server private key (default: server.pem) Serverio privatus raktas (pagal nutylėjimą: server.pem) - + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) Priimtini šifrai (pagal nutylėjimą: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - + This help message Pagelbos žinutė - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. Negali gauti duomenų katalogo %s rakto. Bitcoin tikriausiai jau veikia. - + Loading addresses... Užkraunami adresai... - + Error loading addr.dat addr.dat pakrovimo klaida - + Error loading blkindex.dat blkindex.dat pakrovimo klaida - + Error loading wallet.dat: Wallet corrupted wallet.dat pakrovimo klaida, wallet.dat sugadintas - + Error loading wallet.dat: Wallet requires newer version of Bitcoin wallet.dat pakrovimo klaida, wallet.dat reikalauja naujasnės Bitcoin versijos - + Wallet needed to be rewritten: restart Bitcoin to complete Piniginė turi būti prrašyta: įvykdymui perkraukite Bitcoin - + Error loading wallet.dat wallet.dat pakrovimo klaida - + Loading block index... Užkraunami blokų indeksai... - + Loading wallet... Užkraunama piniginė... - + Rescanning... Peržiūra - + Done loading Pakrovimas baigtas - + Invalid -proxy address Neteisingas proxy adresas - + Invalid amount for -paytxfee=<amount> Neteisinga suma -paytxfee=<amount> - + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. Įspėjimas: -paytxfee yra nustatytas per didelis. Tai sandorio mokestis, kurį turėsite mokėti, jei siųsite sandorį. - + Error: CreateThread(StartNode) failed Klaida: nepasileidžia CreateThread(StartNode) - + Warning: Disk space is low Įspėjimas: nepakanka vietos diske - + Unable to bind to port %d on this computer. Bitcoin is probably already running. Nepavyko susieti šiame kompiuteryje prievado %d. Bitcoin tikriausiai jau veikia. - + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. Įspėjimas: Patikrinkite, kad kompiuterio data ir laikas yra teisingi.Jei Jūsų laikrodis neteisingai nustatytas Bitcoin, veiks netinkamai. - + beta beta - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_nb.ts b/src/qt/locale/bitcoin_nb.ts index eac291c846d..3914bc07fd1 100644 --- a/src/qt/locale/bitcoin_nb.ts +++ b/src/qt/locale/bitcoin_nb.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -67,11 +69,21 @@ Dette produktet inneholder programvare utviklet av OpenSSL prosjektet for bruk i &Copy to Clipboard &Kopier til utklippstavle + + + Delete the currently selected address from the list. Only sending addresses can be deleted. + Slett den valgte adressen fra listen. Bare adresser for sending kan slettes. + Show &QR Code Vis &QR Kode + + + &Delete + &Slett + Sign a message to prove you own this address @@ -82,16 +94,6 @@ Dette produktet inneholder programvare utviklet av OpenSSL prosjektet for bruk i &Sign Message &Signér Melding - - - Delete the currently selected address from the list. Only sending addresses can be deleted. - Slett den valgte adressen fra listen. Bare adresser for sending kan slettes. - - - - &Delete - &Slett - Copy address @@ -136,17 +138,17 @@ Dette produktet inneholder programvare utviklet av OpenSSL prosjektet for bruk i AddressTableModel - + Label Merkelapp - + Address Adresse - + (no label) (ingen merkelapp) @@ -237,11 +239,6 @@ Er du sikker på at du vil kryptere lommeboken? Wallet encrypted Lommebok kryptert - - - Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - Bitcoin vil nå lukkes for å fullføre krypteringsprosessen. Husk at kryptering av lommeboken ikke fullt ut kan beskytte dine bitcoins fra å bli stjålet om skadevare infiserer datamaskinen. - @@ -261,6 +258,11 @@ Er du sikker på at du vil kryptere lommeboken? Wallet encryption failed due to an internal error. Your wallet was not encrypted. Kryptering av lommebok feilet på grunn av en intern feil. Din lommebok ble ikke kryptert. + + + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. + Bitcoin vil nå lukkes for å fullføre krypteringsprosessen. Husk at kryptering av lommeboken ikke fullt ut kan beskytte dine bitcoins fra å bli stjålet om skadevare infiserer datamaskinen. + @@ -293,278 +295,293 @@ Er du sikker på at du vil kryptere lommeboken? BitcoinGUI - + Bitcoin Wallet Bitcoin Lommebok - - + + Synchronizing with network... Synkroniserer med nettverk... - + Block chain synchronization in progress Synkronisering av blokk-kjede igang - + &Overview &Oversikt - + Show general overview of wallet Vis generell oversikt over lommeboken - + &Transactions &Transaksjoner - + Browse transaction history Vis transaksjonshistorikk - + &Address Book &Adressebok - + Edit the list of stored addresses and labels Rediger listen over adresser og deres merkelapper - + &Receive coins &Motta bitcoins - + Show the list of addresses for receiving payments Vis listen over adresser for mottak av betalinger - + &Send coins &Send bitcoins - + Send coins to a bitcoin address Send bitcoins til en adresse - + Sign &message Signér &melding - + Prove you control an address Bevis at du kontrollerer en adresse - + E&xit &Avslutt - + Quit application Avslutt applikasjonen - + &About %1 &Om %1 - + Show information about Bitcoin Vis informasjon om Bitcoin - - About &Qt - Om &Qt - - - - Show information about Qt - Vis informasjon om Qt - - - + &Options... &Innstillinger... - + Modify configuration options for bitcoin Endre innstillinger for bitcoin - + Open &Bitcoin Åpne &Bitcoin - + Show the Bitcoin window Vis Bitcoin-vinduet - + &Export... &Eksporter... - - Export the data in the current tab to a file - - - - + &Encrypt Wallet &Krypter Lommebok - + Encrypt or decrypt wallet Krypter eller dekrypter lommebok - - &Backup Wallet - - - - - Backup wallet to another location - - - - + &Change Passphrase &Endre Adgangsfrase - + Change the passphrase used for wallet encryption Endre adgangsfrasen brukt for kryptering av lommebok - + + About &Qt + Om &Qt + + + + Show information about Qt + Vis informasjon om Qt + + + + Export the data in the current tab to a file + + + + + &Backup Wallet + &Backup Lommebok + + + + Backup wallet to another location + + + + &File &Fil - + &Settings &Innstillinger - + &Help &Hjelp - + Tabs toolbar Verktøylinje for faner - + Actions toolbar Verktøylinje for handlinger - + [testnet] [testnett] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - %n aktiv forbindelse til Bitcoin-nettverket%n aktive forbindelser til Bitcoin-nettverket + + %n aktiv forbindelse til Bitcoin-nettverket + %n aktive forbindelser til Bitcoin-nettverket + - + Downloaded %1 of %2 blocks of transaction history. Lastet ned %1 av %2 blokker med transaksjonshistorikk. - + Downloaded %1 blocks of transaction history. Lastet ned %1 blokker med transaksjonshistorikk. - + %n second(s) ago - for %n sekund sidenfor %n sekunder siden + + for %n sekund siden + for %n sekunder siden + - + %n minute(s) ago - for %n minutt sidenfor %n minutter siden + + for %n minutt siden + for %n minutter siden + - + %n hour(s) ago - for %n time sidenfor %n timer siden + + for %n time siden + for %n timer siden + - + %n day(s) ago - for %n dag sidenfor %n dager siden + + for %n dag siden + for %n dager siden + - + Up to date Ajour - + Catching up... Kommer ajour... - + Last received block was generated %1. Siste mottatte blokk ble generert %1. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? Denne transaksjonen overstiger størrelsesbegrensningen. Du kan likevel sende den med et gebyr på %1, som går til nodene som prosesserer transaksjonen din og støtter nettverket. Vil du betale gebyret? - + Sending... Sender... - + Sent transaction Sendt transaksjon - + Incoming transaction Innkommende transaksjon - + Date: %1 Amount: %2 Type: %3 @@ -577,34 +594,39 @@ Adresse: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> Lommeboken er <b>kryptert</b> og for tiden <b>ulåst</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> Lommeboken er <b>kryptert</b> og for tiden <b>låst</b> - + Backup Wallet - + - + Wallet Data (*.dat) - + - + Backup Failed - + - + There was an error trying to save the wallet data to the new location. - + + + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + @@ -621,8 +643,13 @@ Adresse: %4 - Display addresses in transaction list - Vis adresser i transaksjonslisten + &Display addresses in transaction list + &Vis adresser i transaksjonslisten + + + + Whether to show Bitcoin addresses in the transaction list + @@ -791,12 +818,12 @@ Adresse: %4 You can sign messages with your addresses to prove you own them. Be careful not to sign anything vague, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - + - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - Adressen betalingen skal sendes til (f.eks. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + @@ -840,8 +867,8 @@ Adresse: %4 - Copy the currently selected address to the system clipboard - Kopier den valgte adressen til systemets utklippstavle + Copy the current signature to the system clipboard + @@ -927,20 +954,12 @@ Adresse: %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Lommebok</span></p></body></html> + + Wallet + Lommebok - + <b>Recent transactions</b> <b>Siste transaksjoner</b> @@ -973,44 +992,49 @@ p, li { white-space: pre-wrap; } QR Kode - + Request Payment Etterspør Betaling - + Amount: Beløp: - + BTC BTC - + Label: Merkelapp: - + Message: Melding: - + &Save As... &Lagre Som... - - Save Image... - + + Error encoding URI into QR Code. + - + + Save Image... + + + + PNG Images (*.png) - + @@ -1037,16 +1061,16 @@ p, li { white-space: pre-wrap; } &Add recipient... &Legg til mottaker... - - - Remove all transaction fields - Fjern alle transaksjonsfelter - Clear all Fjern alle + + + Remove all transaction fields + Fjern alle transaksjonsfelter + Balance: @@ -1344,54 +1368,60 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date Dato - + Type Type - + Address Adresse - + Amount Beløp - + Open for %n block(s) - Åpen for %n blokkÅpen for %n blokker + + Åpen for %n blokk + Åpen for %n blokker + - + Open until %1 Åpen til %1 - + Offline (%1 confirmations) Frakoblet (%1 bekreftelser) - + Unconfirmed (%1 of %2 confirmations) Ubekreftet (%1 av %2 bekreftelser) - + Confirmed (%1 confirmations) Bekreftet (%1 bekreftelser) Mined balance will be available in %n more blocks - Utvunnet saldo vil bli tilgjengelig om %n blokkUtvunnet saldo vil bli tilgjengelig om %n blokker + + Utvunnet saldo vil bli tilgjengelig om %n blokk + Utvunnet saldo vil bli tilgjengelig om %n blokker + @@ -1634,347 +1664,347 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version Bitcoin versjon - + Usage: Bruk: - + Send command to -server or bitcoind Send kommando til -server eller bitcoind - + List commands List opp kommandoer - + Get help for a command Vis hjelpetekst for en kommando - + Options: Innstillinger: - + Specify configuration file (default: bitcoin.conf) Angi konfigurasjonsfil (standardverdi: bitcoin.conf) - + Specify pid file (default: bitcoind.pid) Angi pid-fil (standardverdi: bitcoind.pid) - + Generate coins Generér bitcoins - + Don't generate coins Ikke generér bitcoins - + Start minimized Start minimert - + Specify data directory Angi mappe for datafiler - + Specify connection timeout (in milliseconds) Angi tidsavbrudd for forbindelse (i millisekunder) - + Connect through socks4 proxy Koble til gjennom socks4 proxy - + Allow DNS lookups for addnode and connect Tillat DNS-oppslag for addnode og connect - + Listen for connections on <port> (default: 8333 or testnet: 18333) Lytt etter tilkoblinger på <port> (standardverdi: 8333 eller testnet: 18333) - + Maintain at most <n> connections to peers (default: 125) Hold maks <n> koblinger åpne til andre noder (standardverdi: 125) - + Add a node to connect to Legg til node for tilkobling - + Connect only to the specified node Koble kun til angitt node - + Don't accept connections from outside Ikke ta imot tilkoblinger fra omverden - + Don't bootstrap list of peers using DNS Ikke lag initiell nodeliste ved hjelp av DNS - + Threshold for disconnecting misbehaving peers (default: 100) Grenseverdi for å koble fra noder med dårlig oppførsel (standardverdi: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Antall sekunder noder med dårlig oppførsel hindres fra å koble til på nytt (standardverdi: 86400) - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) Maksimum mottaksbuffer per tilkobling, <n>*1000 bytes (standardverdi: 10000) - + Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) Maksimum sendebuffer per tilkobling, <n>*1000 bytes (standardverdi: 10000) - + Don't attempt to use UPnP to map the listening port Ikke sett opp port vha. UPnP - + Attempt to use UPnP to map the listening port Sett opp port vha. UPnP - + Fee per kB to add to transactions you send Gebyr per kB for transaksjoner du sender - + Accept command line and JSON-RPC commands Ta imot kommandolinje- og JSON-RPC-kommandoer - + Run in the background as a daemon and accept commands Kjør i bakgrunnen som daemon og ta imot kommandoer - + Use the test network Bruk testnettverket - + Output extra debugging information Gi ut ekstra debuginformasjon - + Prepend debug output with timestamp Sett tidsstempel på debugmeldinger - + Send trace/debug info to console instead of debug.log file Send spor/debug informasjon til konsollet istedenfor debug.log filen - + Send trace/debug info to debugger Send spor/debug informasjon til debugger - + Username for JSON-RPC connections Brukernavn for JSON-RPC forbindelser - + Password for JSON-RPC connections Passord for JSON-RPC forbindelser - + Listen for JSON-RPC connections on <port> (default: 8332) Lytt etter JSON-RPC tilkoblinger på <port> (standardverdi: 8332) - + Allow JSON-RPC connections from specified IP address Tillat JSON-RPC tilkoblinger fra angitt IP-adresse - + Send commands to node running on <ip> (default: 127.0.0.1) Send kommandoer til node på <ip> (standardverdi: 127.0.0.1) - + Set key pool size to <n> (default: 100) Angi størrelse på nøkkel-lager til <n> (standardverdi: 100) - + Rescan the block chain for missing wallet transactions Se gjennom blokk-kjeden etter manglende lommeboktransaksjoner - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) SSL innstillinger: (se Bitcoin Wiki for instruksjoner om SSL oppsett) - + Use OpenSSL (https) for JSON-RPC connections Bruk OpenSSL (https) for JSON-RPC forbindelser - + Server certificate file (default: server.cert) Servers sertifikat (standardverdi: server.cert) - + Server private key (default: server.pem) Servers private nøkkel (standardverdi: server.pem) - - Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - Akseptable krypteringsmetoder (standardverdi: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - - - - This help message - Denne hjelpemeldingen - - - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. Kunne ikke låse datamappen %s. Bitcoin kjører sannsynligvis allerede. - + + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) + Akseptable krypteringsmetoder (standardverdi: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) + + + Loading addresses... Laster adresser... - Error loading addr.dat - Feil ved lasting av addr.dat - - - - Error loading blkindex.dat - Feil ved lasting av blkindex.dat - - - - Error loading wallet.dat: Wallet corrupted - Feil ved lasting av wallet.dat: Lommeboken er skadet - - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin - Feil ved lasting av wallet.dat: Lommeboken krever en nyere versjon av Bitcoin + This help message + Denne hjelpemeldingen - Wallet needed to be rewritten: restart Bitcoin to complete - Lommeboken måtte skrives om: start Bitcoin på nytt for å fullføre - - - - Error loading wallet.dat - Feil ved lasting av wallet.dat - - - Loading block index... Laster blokkindeks... - + Loading wallet... Laster lommebok... - + Rescanning... Leser gjennom... + + + Error loading addr.dat + Feil ved lasting av addr.dat + + + + Error loading blkindex.dat + Feil ved lasting av blkindex.dat + + Error loading wallet.dat: Wallet corrupted + Feil ved lasting av wallet.dat: Lommeboken er skadet + + + Done loading Ferdig med lasting + Error loading wallet.dat: Wallet requires newer version of Bitcoin + Feil ved lasting av wallet.dat: Lommeboken krever en nyere versjon av Bitcoin + + + Invalid -proxy address Ugyldig -proxy adresse for mellomtjener + Wallet needed to be rewritten: restart Bitcoin to complete + Lommeboken måtte skrives om: start Bitcoin på nytt for å fullføre + + + Invalid amount for -paytxfee=<amount> Ugyldig gebyrbeløp for -paytxfee=<beløp> + Error loading wallet.dat + Feil ved lasting av wallet.dat + + + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. Advarsel: -paytxfee er satt veldig høyt. Dette er transaksjonsgebyret du betaler når du sender en transaksjon. - + Error: CreateThread(StartNode) failed Feil: CreateThread(StartNode) feilet - + Warning: Disk space is low Advarsel: Lite ledig diskplass - + Unable to bind to port %d on this computer. Bitcoin is probably already running. Klarer ikke binde til port %d på denne datamaskinen. Bitcoin kjører sannsynligvis allerede. - + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. Advarsel: Vennligst sjekk at dato og klokke er riktig innstilt på datamaskinen. Hvis klokken er feil vil ikke Bitcoin fungere ordentlig. - + beta beta - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_nl.ts b/src/qt/locale/bitcoin_nl.ts index 7425d215635..5af89a88fd3 100644 --- a/src/qt/locale/bitcoin_nl.ts +++ b/src/qt/locale/bitcoin_nl.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -68,11 +70,21 @@ Dit product bevat software ontwikkeld door het OpenSSL Project voor gebruik in d &Copy to Clipboard &Kopieer naar Klembord + + + Delete the currently selected address from the list. Only sending addresses can be deleted. + Verwijder het huidige geselecteerde adres van de lijst. Alleen zend-adressen kunnen verwijderd worden, niet uw ontvangstadressen. + Show &QR Code Toon &QR-Code + + + &Delete + &Verwijder + Sign a message to prove you own this address @@ -83,16 +95,6 @@ Dit product bevat software ontwikkeld door het OpenSSL Project voor gebruik in d &Sign Message &Onderteken Bericht - - - Delete the currently selected address from the list. Only sending addresses can be deleted. - Verwijder het huidige geselecteerde adres van de lijst. Alleen zend-adressen kunnen verwijderd worden, niet uw ontvangstadressen. - - - - &Delete - &Verwijder - Copy address @@ -137,17 +139,17 @@ Dit product bevat software ontwikkeld door het OpenSSL Project voor gebruik in d AddressTableModel - + Label Label - + Address Adres - + (no label) (geen label) @@ -238,11 +240,6 @@ Bent u er zeker van uw dat u uw portemonnee wilt versleutelen? Wallet encrypted Portemonnee versleuteld - - - Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - Bitcoin zal nu afsluiten om het versleutelingsproces te voltooien. Onthoud dat het versleutelen van uw portemonnee u niet volledig kan beschermen: Malware kan uw computer infecteren en uw bitcoins stelen. - @@ -262,6 +259,11 @@ Bent u er zeker van uw dat u uw portemonnee wilt versleutelen? Wallet encryption failed due to an internal error. Your wallet was not encrypted. Portemonneeversleuteling mislukt door een interne fout, Uw portemonnee is niet versleuteld. + + + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. + Bitcoin zal nu afsluiten om het versleutelingsproces te voltooien. Onthoud dat het versleutelen van uw portemonnee u niet volledig kan beschermen: Malware kan uw computer infecteren en uw bitcoins stelen. + @@ -294,278 +296,293 @@ Bent u er zeker van uw dat u uw portemonnee wilt versleutelen? BitcoinGUI - + Bitcoin Wallet Bitcoin-portemonnee - - + + Synchronizing with network... Synchroniseren met netwerk... - + Block chain synchronization in progress Bezig met blokkenketen-synchronisatie - + &Overview &Overzicht - + Show general overview of wallet Toon algemeen overzicht van de portemonnee - + &Transactions &Transacties - + Browse transaction history Blader door transactieverleden - + &Address Book &Adresboek - + Edit the list of stored addresses and labels Bewerk de lijst van opgeslagen adressen en labels - + &Receive coins &Ontvang munten - + Show the list of addresses for receiving payments Toon lijst van adressen om betalingen mee te ontvangen - + &Send coins &Verstuur munten - + Send coins to a bitcoin address Verstuur munten naar een bitcoin-adres - + Sign &message &Onderteken Bericht - + Prove you control an address Bewijs dat u een adres bezit - + E&xit &Afsluiten - + Quit application Programma afsluiten - + &About %1 &Over %1 - + Show information about Bitcoin Laat informatie zien over Bitcoin - - About &Qt - Over &Qt - - - - Show information about Qt - Toon informatie over Qt - - - + &Options... &Opties... - + Modify configuration options for bitcoin Wijzig instellingen van Bitcoin - + Open &Bitcoin Open &Bitcoin - + Show the Bitcoin window Toon Bitcoin-venster - + &Export... &Exporteer... - - Export the data in the current tab to a file - Exporteer de data in de huidige tab naar een bestand - - - + &Encrypt Wallet &Versleutel Portemonnee - + Encrypt or decrypt wallet Versleutel of ontsleutel portemonnee - - &Backup Wallet - Backup &Portemonnee - - - - Backup wallet to another location - &Backup portemonnee naar een andere locatie - - - + &Change Passphrase &Wijzig Wachtwoord - + Change the passphrase used for wallet encryption wijzig het wachtwoord voor uw portemonneversleuteling - + + About &Qt + Over &Qt + + + + Show information about Qt + Toon informatie over Qt + + + + Export the data in the current tab to a file + Exporteer de data in de huidige tab naar een bestand + + + + &Backup Wallet + Backup &Portemonnee + + + + Backup wallet to another location + &Backup portemonnee naar een andere locatie + + + &File &Bestand - + &Settings &Instellingen - + &Help &Hulp - + Tabs toolbar Tab-werkbalk - + Actions toolbar Actie-werkbalk - + [testnet] [testnetwerk] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - %n actieve connectie naar Bitcoinnetwerk%n actieve connecties naar Bitcoinnetwerk + + %n actieve connectie naar Bitcoinnetwerk + %n actieve connecties naar Bitcoinnetwerk + - + Downloaded %1 of %2 blocks of transaction history. %1 van %2 blokken van transactiehistorie opgehaald. - + Downloaded %1 blocks of transaction history. %1 blokken van transactiehistorie opgehaald. - + %n second(s) ago - %n seconde geleden%n seconden geleden + + %n seconde geleden + %n seconden geleden + - + %n minute(s) ago - %n minuut geleden%n minuten geleden + + %n minuut geleden + %n minuten geleden + - + %n hour(s) ago - %n uur geleden%n uur geleden + + %n uur geleden + %n uur geleden + - + %n day(s) ago - %n dag geleden%n dagen geleden + + %n dag geleden + %n dagen geleden + - + Up to date Bijgewerkt - + Catching up... Aan het bijwerken... - + Last received block was generated %1. Laatst ontvangen blok is %1 gegenereerd. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? Deze transactie overschrijdt de groottelimiet. Om de transactie alsnog te versturen kunt u transactiekosten betalen van %1. Deze transactiekosten gaan naar de nodes die uw transactie verwerken en het helpt op deze manier bij het ondersteunen van het netwerk. Wilt u de transactiekosten betalen? - + Sending... Versturen... - + Sent transaction Verzonden transactie - + Incoming transaction Binnenkomende transactie - + Date: %1 Amount: %2 Type: %3 @@ -578,35 +595,40 @@ Adres: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> Portemonnee is <b>versleuteld</b> en momenteel <b>geopend</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> Portemonnee is <b>versleuteld</b> en momenteel <b>gesloten</b> - + Backup Wallet Backup Portemonnee - + Wallet Data (*.dat) Portemonnee-data (*.dat) - + Backup Failed Backup Mislukt - + There was an error trying to save the wallet data to the new location. Er is een fout opgetreden bij het wegschrijven van de portemonnee-data naar de nieuwe locatie. + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + + DisplayOptionsPage @@ -622,8 +644,13 @@ Adres: %4 - Display addresses in transaction list - Toon adressen in uw transactielijst + &Display addresses in transaction list + &Toon adressen in uw transactielijst + + + + Whether to show Bitcoin addresses in the transaction list + @@ -796,8 +823,8 @@ Adres: %4 - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - Het adres waaraan u wilt betalen (bijv. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + @@ -841,8 +868,8 @@ Adres: %4 - Copy the currently selected address to the system clipboard - Kopieer het huidig geselecteerde adres naar het klembord + Copy the current signature to the system clipboard + @@ -928,20 +955,12 @@ Adres: %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Portemonnee</span></p></body></html> + + Wallet + Portemonnee - + <b>Recent transactions</b> <b>Recente transacties</b> @@ -974,42 +993,47 @@ p, li { white-space: pre-wrap; } QR-code - + Request Payment Vraag betaling aan - + Amount: Bedrag: - + BTC BTC - + Label: Label: - + Message: Bericht: - + &Save As... &Opslaan Als... - + + Error encoding URI into QR Code. + + + + Save Image... Afbeelding Opslaan... - + PNG Images (*.png) PNG-Afbeeldingen (*.png) @@ -1038,16 +1062,16 @@ p, li { white-space: pre-wrap; } &Add recipient... Voeg &ontvanger toe... - - - Remove all transaction fields - Verwijder alle transactievelden - Clear all Verwijder alles + + + Remove all transaction fields + Verwijder alle transactievelden + Balance: @@ -1345,54 +1369,60 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date Datum - + Type Type - + Address Adres - + Amount Bedrag - + Open for %n block(s) - Open gedurende %n blokOpen gedurende %n blokken + + Open gedurende %n blok + Open gedurende %n blokken + - + Open until %1 Open tot %1 - + Offline (%1 confirmations) Niet verbonden (%1 bevestigingen) - + Unconfirmed (%1 of %2 confirmations) Onbevestigd (%1 van %2 bevestigd) - + Confirmed (%1 confirmations) Bevestigd (%1 bevestigingen) Mined balance will be available in %n more blocks - Ontgonnen saldo komt beschikbaar na %n blokOntgonnen saldo komt beschikbaar na %n blokken + + Ontgonnen saldo komt beschikbaar na %n blok + Ontgonnen saldo komt beschikbaar na %n blokken + @@ -1635,244 +1665,244 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version Bitcoinversie - + Usage: Gebruik: - + Send command to -server or bitcoind Stuur commando naar -server of bitcoind - + List commands List van commando's - + Get help for a command Toon hulp voor een commando - + Options: Opties: - + Specify configuration file (default: bitcoin.conf) Specifieer configuratiebestand (standaard: bitcoin.conf) - + Specify pid file (default: bitcoind.pid) Specifieer pid-bestand (standaard: bitcoind.pid) - + Generate coins Genereer munten - + Don't generate coins Genereer geen munten - + Start minimized Geminimaliseerd starten - + Specify data directory Stel datamap in - + Specify connection timeout (in milliseconds) Specificeer de time-out tijd (in milliseconden) - + Connect through socks4 proxy Verbind via socks4 proxy - + Allow DNS lookups for addnode and connect Sta DNS-naslag toe voor addnode en connect - + Listen for connections on <port> (default: 8333 or testnet: 18333) Luister voor verbindingen op <poort> (standaard: 8333 of testnet: 18333) - + Maintain at most <n> connections to peers (default: 125) Onderhoud maximaal <n> verbindingen naar peers (standaard: 125) - + Add a node to connect to Voeg een node toe om mee te verbinden - + Connect only to the specified node Verbind alleen met deze node - + Don't accept connections from outside Sta geen verbindingen van buitenaf toe - + Don't bootstrap list of peers using DNS Gebruik geen DNS om de lijst met peers op te starten - + Threshold for disconnecting misbehaving peers (default: 100) Drempel om verbinding te verbreken naar zich misdragende peers (standaard: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Aantal seconden dat zich misdragende peers niet opnieuw mogen verbinden (standaard: 86400) - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) Maximale ontvangstbuffer per connectie, <n>*1000 bytes (standaard: 10000) - + Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) Maximale zendbuffer per connectie, <n>*1000 bytes (standaard: 10000) - + Don't attempt to use UPnP to map the listening port Probeer geen UPnP te gebruiken om de poort waarop geluisterd wordt te mappen - + Attempt to use UPnP to map the listening port Probeer UPnP te gebruiken om de poort waarop geluisterd wordt te mappen - + Fee per kB to add to transactions you send Transactiekosten per kB om toe te voegen aan transacties die u verzendt - + Accept command line and JSON-RPC commands Aanvaard commandoregel en JSON-RPC commando's - + Run in the background as a daemon and accept commands Draai in de achtergrond als daemon en aanvaard commando's - + Use the test network Gebruik het testnetwerk - + Output extra debugging information Toon extra debuggingsinformatie - + Prepend debug output with timestamp Voorzie de debuggingsuitvoer van een tijdsaanduiding - + Send trace/debug info to console instead of debug.log file Stuur trace/debug-info naar de console in plaats van het debug.log bestand - + Send trace/debug info to debugger Stuur trace/debug-info naar debugger - + Username for JSON-RPC connections Gebruikersnaam voor JSON-RPC verbindingen - + Password for JSON-RPC connections Wachtwoord voor JSON-RPC verbindingen - + Listen for JSON-RPC connections on <port> (default: 8332) Luister voor JSON-RPC verbindingen op <poort> (standaard: 8332) - + Allow JSON-RPC connections from specified IP address Sta JSON-RPC verbindingen van opgegeven IP adres toe - + Send commands to node running on <ip> (default: 127.0.0.1) Verstuur commando's naar proces dat op <ip> draait (standaard: 127.0.0.1) - + Set key pool size to <n> (default: 100) Stel sleutelpoelgrootte in op <n> (standaard: 100) - + Rescan the block chain for missing wallet transactions Doorzoek de blokkenketen op ontbrekende portemonnee-transacties - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -1880,133 +1910,133 @@ SSL opties: (zie de Bitcoin wiki voor SSL instructies) - + Use OpenSSL (https) for JSON-RPC connections Gebruik OpenSSL (https) voor JSON-RPC verbindingen - + Server certificate file (default: server.cert) Certificaat-bestand voor server (standaard: server.cert) - + Server private key (default: server.pem) Geheime sleutel voor server (standaard: server.pem) - - Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - Aanvaardbare ciphers (standaard: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - - - - This help message - Dit helpbericht - - - - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. Kan geen lock op de gegevensdirectory %s verkrijgen. Bitcoin draait vermoedelijk reeds. - + + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) + Aanvaardbare ciphers (standaard: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) + + + Loading addresses... Adressen aan het laden... - Error loading addr.dat - Fout bij laden addr.dat - - - - Error loading blkindex.dat - Fout bij laden blkindex.dat - - - - Error loading wallet.dat: Wallet corrupted - Fout bij laden wallet.dat: Portemonnee corrupt - - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin - Fout bij laden wallet.dat: Portemonnee vereist een nieuwere versie van Bitcoin + This help message + Dit helpbericht + - Wallet needed to be rewritten: restart Bitcoin to complete - Portemonnee moest herschreven worden: Herstart Bitcoin om te voltooien - - - - Error loading wallet.dat - Fout bij laden wallet.dat - - - Loading block index... Blokindex aan het laden... - + Loading wallet... Portemonnee aan het laden... - + Rescanning... Opnieuw aan het scannen ... + + + Error loading addr.dat + Fout bij laden addr.dat + + + + Error loading blkindex.dat + Fout bij laden blkindex.dat + + Error loading wallet.dat: Wallet corrupted + Fout bij laden wallet.dat: Portemonnee corrupt + + + Done loading Klaar met laden + Error loading wallet.dat: Wallet requires newer version of Bitcoin + Fout bij laden wallet.dat: Portemonnee vereist een nieuwere versie van Bitcoin + + + Invalid -proxy address Foutief -proxy adres + Wallet needed to be rewritten: restart Bitcoin to complete + Portemonnee moest herschreven worden: Herstart Bitcoin om te voltooien + + + Invalid amount for -paytxfee=<amount> Ongeldig bedrag voor -paytxfee=<bedrag> + Error loading wallet.dat + Fout bij laden wallet.dat + + + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. Waarschuwing: -paytxfee is zeer hoog ingesteld. Dit zijn de transactiekosten die u betaalt bij het versturen van een transactie. - + Error: CreateThread(StartNode) failed Fout: CreateThread(StartNode) is mislukt - + Warning: Disk space is low Waarschuwing: Weinig schijfruimte over - + Unable to bind to port %d on this computer. Bitcoin is probably already running. Kan niet binden aan poort %d op deze computer. Bitcoin draait vermoedelijk reeds. - + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. Waarschuwing: Controleer dat de datum en tijd op uw computer correct zijn ingesteld. Als uw klok fout staat zal Bitcoin niet correct werken. - + beta beta - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_pl.ts b/src/qt/locale/bitcoin_pl.ts index af42dc02495..693bc642b66 100644 --- a/src/qt/locale/bitcoin_pl.ts +++ b/src/qt/locale/bitcoin_pl.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -141,17 +143,17 @@ www.transifex.net/projects/p/bitcoin/ AddressTableModel - + Label Etykieta - + Address Adres - + (no label) (bez etykiety) @@ -245,7 +247,7 @@ Czy na pewno chcesz zaszyfrować swój portfel? Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - + @@ -298,278 +300,298 @@ Czy na pewno chcesz zaszyfrować swój portfel? BitcoinGUI - + Bitcoin Wallet Portfel Bitcoin - - + + Synchronizing with network... Synchronizacja z siecią... - + Block chain synchronization in progress Synchronizacja bloku łańcucha w toku. - + &Overview P&odsumowanie - + Show general overview of wallet Pokazuje ogólny zarys portfela - + &Transactions &Transakcje - + Browse transaction history Przeglądaj historię transakcji - + &Address Book Książka &adresowa - + Edit the list of stored addresses and labels Edytuj listę zapisanych adresów i i etykiet - + &Receive coins Odbie&rz monety - + Show the list of addresses for receiving payments Pokaż listę adresów do otrzymywania płatności - + &Send coins Wy&syłka monet - + Send coins to a bitcoin address Wyślij monety na adres bitcoin - + Sign &message Podpisz wiado&mość - + Prove you control an address Udowodnij, że kontrolujesz adres - + E&xit &Zakończ - + Quit application Zamknij program - + &About %1 &O %1 - + Show information about Bitcoin Pokaż informację o Bitcoin - + About &Qt O &Qt - + Show information about Qt Pokazuje informacje o Qt - + &Options... &Opcje... - + Modify configuration options for bitcoin Zmienia opcje konfiguracji bitcoina - + Open &Bitcoin Otwórz &Bitcoin - + Show the Bitcoin window Pokaż okno Bitcoin - + &Export... &Eksportuj... - + Export the data in the current tab to a file - + - + &Encrypt Wallet Zaszyfruj portf&el - + Encrypt or decrypt wallet Zaszyfruj lub odszyfruj portfel - + &Backup Wallet - + &Backup portfel - + Backup wallet to another location - + - + &Change Passphrase Zmień h&asło - + Change the passphrase used for wallet encryption Zmień hasło użyte do szyfrowania portfela - + &File &Plik - + &Settings P&referencje - + &Help Pomo&c - + Tabs toolbar Pasek zakładek - + Actions toolbar Pasek akcji - + [testnet] [testnet] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - %n aktywne połączenie do sieci Bitcoin%n aktywne połączenia do sieci Bitcoin%n aktywnych połączeń do sieci Bitcoin + + %n aktywne połączenie do sieci Bitcoin + %n aktywne połączenia do sieci Bitcoin + %n aktywnych połączeń do sieci Bitcoin + - + Downloaded %1 of %2 blocks of transaction history. Pobrano %1 z %2 bloków z historią transakcji. - + Downloaded %1 blocks of transaction history. Pobrano %1 bloków z historią transakcji. - + %n second(s) ago - %n sekundę temu%n sekundy temu%n sekund temu + + %n sekundę temu + %n sekundy temu + %n sekund temu + - + %n minute(s) ago - %n minutę temu%n minuty temu%n minut temu + + %n minutę temu + %n minuty temu + %n minut temu + - + %n hour(s) ago - %n godzinę temu%n godziny temu%n godzin temu + + %n godzinę temu + %n godziny temu + %n godzin temu + - + %n day(s) ago - %n dzień temu%n dni temu%n dni temu + + %n dzień temu + %n dni temu + %n dni temu + - + Up to date Aktualny - + Catching up... Łapanie bloków... - + Last received block was generated %1. Ostatnio otrzymany blok została wygenerowany %1. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? - + - + Sending... Wysyłanie... - + Sent transaction Transakcja wysłana - + Incoming transaction Transakcja przychodząca - + Date: %1 Amount: %2 Type: %3 @@ -582,34 +604,39 @@ Adres: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> Portfel jest <b>zaszyfrowany</b> i obecnie <b>niezablokowany</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> Portfel jest <b>zaszyfrowany</b> i obecnie <b>zablokowany</b> - + Backup Wallet - + - + Wallet Data (*.dat) - + - + Backup Failed - + - + There was an error trying to save the wallet data to the new location. - + + + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + @@ -626,8 +653,13 @@ Adres: %4 - Display addresses in transaction list - Wyświetlaj adresy w liście transakcji + &Display addresses in transaction list + &Wyświetlaj adresy w liście transakcji + + + + Whether to show Bitcoin addresses in the transaction list + @@ -796,12 +828,12 @@ Adres: %4 You can sign messages with your addresses to prove you own them. Be careful not to sign anything vague, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - + - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - Adres do wysłania należności do (np. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + @@ -845,8 +877,8 @@ Adres: %4 - Copy the currently selected address to the system clipboard - Skopiuj aktualnie wybrany adres do schowka + Copy the current signature to the system clipboard + @@ -932,20 +964,12 @@ Adres: %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Portfel</span></p></body></html> + + Wallet + Portfel - + <b>Recent transactions</b> <b>Ostatnie transakcje</b> @@ -978,44 +1002,49 @@ p, li { white-space: pre-wrap; } Kod QR - + Request Payment Prośba o płatność - + Amount: Kwota: - + BTC BTC - + Label: Etykieta: - + Message: Wiadomość: - + &Save As... Zapi&sz jako... - - Save Image... - + + Error encoding URI into QR Code. + - + + Save Image... + + + + PNG Images (*.png) - + @@ -1125,7 +1154,7 @@ p, li { white-space: pre-wrap; } Error: The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. - + @@ -1288,7 +1317,7 @@ p, li { white-space: pre-wrap; } (%1 matures in %2 more blocks) - + @@ -1349,54 +1378,62 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date Data - + Type Typ - + Address Adres - + Amount Kwota - + Open for %n block(s) - Otwórz dla %n blokuOtwórz dla %n blokówOtwórz dla %n bloków + + Otwórz dla %n bloku + Otwórz dla %n bloków + Otwórz dla %n bloków + - + Open until %1 Otwórz do %1 - + Offline (%1 confirmations) Offline (%1 potwierdzeń) - + Unconfirmed (%1 of %2 confirmations) Niezatwierdzony (%1 z %2 potwierdzeń) - + Confirmed (%1 confirmations) Zatwierdzony (%1 potwierdzeń) Mined balance will be available in %n more blocks - Wydobyta kwota będzie dostępna za %n blokWydobyta kwota będzie dostępna za %n blokówWydobyta kwota będzie dostępna za %n bloki + + Wydobyta kwota będzie dostępna za %n blok + Wydobyta kwota będzie dostępna za %n bloków + Wydobyta kwota będzie dostępna za %n bloki + @@ -1639,346 +1676,346 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version Wersja Bitcoin - + Usage: Użycie: - + Send command to -server or bitcoind Wyślij polecenie do -server lub bitcoind - + List commands Lista poleceń - + Get help for a command Uzyskaj pomoc do polecenia - + Options: Opcje: - + Specify configuration file (default: bitcoin.conf) Wskaż plik konfiguracyjny (domyślnie: bitcoin.conf) - + Specify pid file (default: bitcoind.pid) Wskaż plik pid (domyślnie: bitcoin.pid) - + Generate coins Generuj monety - + Don't generate coins Nie generuj monet - + Start minimized Uruchom zminimalizowany - + Specify data directory Wskaż folder danych - + Specify connection timeout (in milliseconds) Wskaż czas oczekiwania bezczynności połączenia (w milisekundach) - + Connect through socks4 proxy Łączy przez proxy socks4 - + Allow DNS lookups for addnode and connect - + - + Listen for connections on <port> (default: 8333 or testnet: 18333) Nasłuchuj połączeń na <port> (domyślnie: 8333 lub testnet: 18333) - + Maintain at most <n> connections to peers (default: 125) Utrzymuj maksymalnie <n> połączeń z peerami (domyślnie: 125) - + Add a node to connect to Dodaj węzeł do łączenia się - + Connect only to the specified node Łącz tylko do wskazanego węzła - + Don't accept connections from outside Nie akceptuj połączeń zewnętrznych - - - Don't bootstrap list of peers using DNS - - - - - Threshold for disconnecting misbehaving peers (default: 100) - - - - - Number of seconds to keep misbehaving peers from reconnecting (default: 86400) - - + Don't bootstrap list of peers using DNS + + + + + Threshold for disconnecting misbehaving peers (default: 100) + + + + + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) + + + + Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) Maksymalny bufor odbioru na połączenie, <n>*1000 bajtów (domyślnie: 10000) - + Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) Maksymalny bufor wysyłu na połączenie, <n>*1000 bajtów (domyślnie: 10000) - + Don't attempt to use UPnP to map the listening port Nie próbuj używać UPnP do mapowania portu nasłuchu - + Attempt to use UPnP to map the listening port Próbuj używać UPnP do mapowania portu nasłuchu - + Fee per kB to add to transactions you send Prowizja za kB dodawana do wysyłanej transakcji - + Accept command line and JSON-RPC commands - + - + Run in the background as a daemon and accept commands Uruchom w tle jako daemon i przyjmuj polecenia - + Use the test network Użyj sieci testowej - + Output extra debugging information - + - + Prepend debug output with timestamp - + - + Send trace/debug info to console instead of debug.log file - + - + Send trace/debug info to debugger - + - + Username for JSON-RPC connections Nazwa użytkownika dla połączeń JSON-RPC - + Password for JSON-RPC connections Hasło do połączeń JSON-RPC - + Listen for JSON-RPC connections on <port> (default: 8332) Nasłuchuj połączeń JSON-RPC na <port> (domyślnie: 8332) - + Allow JSON-RPC connections from specified IP address Przyjmuj połączenia JSON-RPC ze wskazanego adresu IP - + Send commands to node running on <ip> (default: 127.0.0.1) Wysyłaj polecenia do węzła działającego na <ip> (domyślnie: 127.0.0.1) - + Set key pool size to <n> (default: 100) Ustaw rozmiar puli kluczy na <n> (domyślnie: 100) - + Rescan the block chain for missing wallet transactions Przeskanuj blok łańcuchów żeby znaleźć zaginione transakcje portfela - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) opcje SSL: (sprawdź Bitcoin Wiki dla instrukcje konfiguracji SSL) - + Use OpenSSL (https) for JSON-RPC connections Użyj OpenSSL (https) do połączeń JSON-RPC - + Server certificate file (default: server.cert) Plik certyfikatu serwera (domyślnie: server.cert) - + Server private key (default: server.pem) Klucz prywatny serwera (domyślnie: server.pem) - + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) Aceptowalne szyfry (domyślnie: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - + This help message Ta wiadomość pomocy - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. Nie można zablokować folderu danych %s. Bitcoin prawdopodobnie już działa. - + Loading addresses... Wczytywanie adresów... - + Error loading addr.dat Błąd ładowania addr.dat - + Error loading blkindex.dat Błąd ładownia blkindex.dat - + Error loading wallet.dat: Wallet corrupted Błąd ładowania wallet.dat: Uszkodzony portfel - + Error loading wallet.dat: Wallet requires newer version of Bitcoin Błąd ładowania wallet.dat: Portfel wymaga nowszej wersji Bitcoin - + Wallet needed to be rewritten: restart Bitcoin to complete Portfel wymaga przepisania: zrestartuj Bitcoina żeby ukończyć - + Error loading wallet.dat Błąd ładowania wallet.dat - + Loading block index... Ładowanie indeksu bloku... - + Loading wallet... Wczytywanie portfela... - + Rescanning... Ponowne skanowanie... - + Done loading Wczytywanie zakończone - + Invalid -proxy address Nieprawidłowy adres -proxy - + Invalid amount for -paytxfee=<amount> Nieprawidłowa kwota dla -paytxfee=<amount> - + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. Ostrzeżenie: -paytxfee jest bardzo duży. To jest prowizja za transakcje, którą płacisz, gdy wysyłasz monety. - + Error: CreateThread(StartNode) failed Błąd: CreateThread(StartNode) nie powiodło się - + Warning: Disk space is low Ostrzeżenie: kończy się miejsce na dysku - + Unable to bind to port %d on this computer. Bitcoin is probably already running. Nie można przywiązać portu %d na tym komputerze. Bitcoin prawdopodobnie już działa. - + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. Ostrzeżenie: Proszę sprawdzić poprawność czasu i daty na tym komputerze. Jeśli czas jest zły Bitcoin może nie działać prawidłowo. - + beta beta - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_pt_BR.ts b/src/qt/locale/bitcoin_pt_BR.ts index 69568f4a94a..63b5ce47b9c 100644 --- a/src/qt/locale/bitcoin_pt_BR.ts +++ b/src/qt/locale/bitcoin_pt_BR.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -21,7 +23,7 @@ This is experimental software. Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - + @@ -49,7 +51,7 @@ This product includes software developed by the OpenSSL Project for use in the O &New Address... - &amp; Novo endereço ... + & Novo endereço ... @@ -59,32 +61,32 @@ This product includes software developed by the OpenSSL Project for use in the O &Copy to Clipboard - &amp; Copie para a área de transferência do sistema - - - - Show &QR Code - - - - - Sign a message to prove you own this address - - - - - &Sign Message - + & Copie para a área de transferência do sistema Delete the currently selected address from the list. Only sending addresses can be deleted. Excluir o endereço selecionado da lista. Apenas endereços de envio podem ser excluídos. + + + Show &QR Code + + &Delete - &amp; Excluir + & Excluir + + + + Sign a message to prove you own this address + + + + + &Sign Message + @@ -99,12 +101,12 @@ This product includes software developed by the OpenSSL Project for use in the O Edit - + Delete - + @@ -130,17 +132,17 @@ This product includes software developed by the OpenSSL Project for use in the O AddressTableModel - + Label Rótulo - + Address Endereço - + (no label) (Sem rótulo) @@ -230,16 +232,11 @@ Are you sure you wish to encrypt your wallet? Wallet encrypted Carteira criptografada - - - Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - - Warning: The Caps Lock key is on. - + @@ -254,6 +251,11 @@ Are you sure you wish to encrypt your wallet? Wallet encryption failed due to an internal error. Your wallet was not encrypted. A criptografia da carteira falhou devido a um erro interno. Sua carteira não estava criptografada. + + + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. + Bitcoin will close now to finish the encryption process. Lembre-se que sua carteira criptografada não poderá proteger totalmente os seus bitcoins de serem roubados por softwares maldosos que infectem seu computador. + @@ -286,278 +288,293 @@ Are you sure you wish to encrypt your wallet? BitcoinGUI - + Bitcoin Wallet Carteira Bitcoin - - + + Synchronizing with network... Sincronizando com a rede... - + Block chain synchronization in progress Sincronização da corrente de blocos em andamento - + &Overview &Visão geral - + Show general overview of wallet Mostrar visão geral da carteira - + &Transactions &Transações - + Browse transaction history Navegar pelo histórico de transações - + &Address Book &Catálogo de endereços - + Edit the list of stored addresses and labels Editar a lista de endereços e rótulos - + &Receive coins &Receber moedas - + Show the list of addresses for receiving payments Mostrar a lista de endereços para receber pagamentos - + &Send coins &Enviar moedas - + Send coins to a bitcoin address Enviar moedas para um endereço bitcoin - + Sign &message - + - + Prove you control an address - + - + E&xit E&xit - + Quit application Sair da aplicação - + &About %1 &About %1 - + Show information about Bitcoin Mostrar informação sobre Bitcoin - - About &Qt - - - - - Show information about Qt - - - - + &Options... &Opções... - + Modify configuration options for bitcoin Modificar opções de configuração para bitcoin - + Open &Bitcoin Abrir &Bitcoin - + Show the Bitcoin window Mostrar a janela Bitcoin - + &Export... &Exportar... - - Export the data in the current tab to a file - - - - + &Encrypt Wallet &Criptografar Carteira - + Encrypt or decrypt wallet Criptografar ou decriptogravar carteira - - &Backup Wallet - - - - - Backup wallet to another location - - - - + &Change Passphrase &Mudar frase de segurança - + Change the passphrase used for wallet encryption Mudar a frase de segurança utilizada na criptografia da carteira - - &File - &amp; Arquivo + + About &Qt + - + + Show information about Qt + Mostrar informação sobre Qt + + + + Export the data in the current tab to a file + + + + + &Backup Wallet + &Backup Carteira + + + + Backup wallet to another location + + + + + &File + & Arquivo + + + &Settings E configurações - + &Help - &amp; Ajuda + & Ajuda - + Tabs toolbar Barra de ferramentas - + Actions toolbar Barra de ações - + [testnet] [testnet] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - %n conexão ativa na rede Bitcoin%n conexões ativas na rede Bitcoin + + %n conexão ativa na rede Bitcoin + %n conexões ativas na rede Bitcoin + - + Downloaded %1 of %2 blocks of transaction history. Carregados %1 de %2 blocos do histórico de transações. - + Downloaded %1 blocks of transaction history. Carregados %1 blocos do histórico de transações. - + %n second(s) ago - %n segundo atrás%n segundos atrás + + %n segundo atrás + %n segundos atrás + - + %n minute(s) ago - %n minutos atrás%n minutos atrás + + %n minutos atrás + %n minutos atrás + - + %n hour(s) ago - %n hora atrás%n horas atrás + + %n hora atrás + %n horas atrás + - + %n day(s) ago - %n dia atrás%n dias atrás + + %n dia atrás + %n dias atrás + - + Up to date Atualizado - + Catching up... Recuperando o atraso ... - + Last received block was generated %1. Last received block was generated %1. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? - + Sending... Sending... - + Sent transaction Sent transaction - + Incoming transaction Incoming transaction - + Date: %1 Amount: %2 Type: %3 @@ -569,34 +586,39 @@ Tipo: %3 Endereço: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> Wallet is <b>encrypted</b> and currently <b>unlocked</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> Wallet is <b>encrypted</b> and currently <b>locked</b> - + Backup Wallet - + - + Wallet Data (*.dat) - + - + Backup Failed - + - + There was an error trying to save the wallet data to the new location. - + + + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + @@ -613,8 +635,13 @@ Endereço: %4 - Display addresses in transaction list - Display addresses in transaction list + &Display addresses in transaction list + + + + + Whether to show Bitcoin addresses in the transaction list + @@ -760,7 +787,7 @@ Endereço: %4 Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. - + @@ -770,7 +797,7 @@ Endereço: %4 Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. - + @@ -778,17 +805,17 @@ Endereço: %4 Message - + You can sign messages with your addresses to prove you own them. Be careful not to sign anything vague, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - + - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + @@ -813,54 +840,54 @@ Endereço: %4 Enter the message you want to sign here - + Click "Sign Message" to get signature - + Sign a message to prove you own this address - + &Sign Message - + - Copy the currently selected address to the system clipboard - Copie o endereço selecionado para a área de transferência do sistema + Copy the current signature to the system clipboard + &Copy to Clipboard - &amp; Copie para a área de transferência do sistema + & Copie para a área de transferência do sistema Error signing - + %1 is not a valid address. - + Private key for %1 is not available. - + Sign failed - + @@ -919,20 +946,12 @@ Endereço: %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> + + Wallet + - + <b>Recent transactions</b> <b>Recent transactions</b> @@ -962,47 +981,52 @@ p, li { white-space: pre-wrap; } QR Code - + - + Request Payment - + - + Amount: - + - + BTC - + - + Label: - + - + Message: Message: - + &Save As... - + - + + Error encoding URI into QR Code. + + + + Save Image... - + - + PNG Images (*.png) - + @@ -1029,16 +1053,16 @@ p, li { white-space: pre-wrap; } &Add recipient... &Add recipient... - - - Remove all transaction fields - - Clear all Clear all + + + Remove all transaction fields + + Balance: @@ -1312,7 +1336,7 @@ p, li { white-space: pre-wrap; } Transaction ID: - + @@ -1336,54 +1360,60 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date Date - + Type Type - + Address Address - + Amount Amount - + Open for %n block(s) - Open for %n blockOpen for %n blocks + + Open for %n block + Open for %n blocks + - + Open until %1 Open until %1 - + Offline (%1 confirmations) Offline (%1 confirmations) - + Unconfirmed (%1 of %2 confirmations) Unconfirmed (%1 of %2 confirmations) - + Confirmed (%1 confirmations) Confirmed (%1 confirmations) Mined balance will be available in %n more blocks - Mined balance will be available in %n more blockMined balance will be available in %n more blocks + + Mined balance will be available in %n more block + Mined balance will be available in %n more blocks + @@ -1403,7 +1433,7 @@ p, li { white-space: pre-wrap; } Received from - + @@ -1537,7 +1567,7 @@ p, li { white-space: pre-wrap; } Copy amount - + @@ -1626,245 +1656,245 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version Bitcoin version - + Usage: Usage: - + Send command to -server or bitcoind Send command to -server or bitcoind - + List commands List commands - + Get help for a command Get help for a command - + Options: Options: - + Specify configuration file (default: bitcoin.conf) Specify configuration file (default: bitcoin.conf) - + Specify pid file (default: bitcoind.pid) Specify pid file (default: bitcoind.pid) - + Generate coins Generate coins - + Don't generate coins Don't generate coins - + Start minimized Start minimized - + Specify data directory Specify data directory - + Specify connection timeout (in milliseconds) Specify connection timeout (in milliseconds) - + Connect through socks4 proxy Connect through socks4 proxy - + Allow DNS lookups for addnode and connect Allow DNS lookups for addnode and connect - + Listen for connections on <port> (default: 8333 or testnet: 18333) - + - + Maintain at most <n> connections to peers (default: 125) - + - + Add a node to connect to Add a node to connect to - + Connect only to the specified node Connect only to the specified node - + Don't accept connections from outside Don't accept connections from outside - - - Don't bootstrap list of peers using DNS - - - - - Threshold for disconnecting misbehaving peers (default: 100) - - - - - Number of seconds to keep misbehaving peers from reconnecting (default: 86400) - - - Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) - + Don't bootstrap list of peers using DNS + - Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) - + Threshold for disconnecting misbehaving peers (default: 100) + + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) + + + + + Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) + + + + + Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) + + + + Don't attempt to use UPnP to map the listening port Don't attempt to use UPnP to map the listening port - + Attempt to use UPnP to map the listening port Attempt to use UPnP to map the listening port - + Fee per kB to add to transactions you send - + - + Accept command line and JSON-RPC commands Accept command line and JSON-RPC commands - + Run in the background as a daemon and accept commands Run in the background as a daemon and accept commands - + Use the test network Use the test network - + Output extra debugging information - + - + Prepend debug output with timestamp - + - + Send trace/debug info to console instead of debug.log file - + - + Send trace/debug info to debugger - + - + Username for JSON-RPC connections Username for JSON-RPC connections - + Password for JSON-RPC connections Password for JSON-RPC connections - + Listen for JSON-RPC connections on <port> (default: 8332) Listen for JSON-RPC connections on <port> (default: 8332) - + Allow JSON-RPC connections from specified IP address Allow JSON-RPC connections from specified IP address - + Send commands to node running on <ip> (default: 127.0.0.1) Send commands to node running on <ip> (default: 127.0.0.1) - + Set key pool size to <n> (default: 100) Set key pool size to <n> (default: 100) - + Rescan the block chain for missing wallet transactions Rescan the block chain for missing wallet transactions - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -1872,134 +1902,134 @@ SSL options: (see the Bitcoin Wiki for SSL setup instructions) - + Use OpenSSL (https) for JSON-RPC connections Use OpenSSL (https) for JSON-RPC connections - + Server certificate file (default: server.cert) Server certificate file (default: server.cert) - + Server private key (default: server.pem) Server private key (default: server.pem) - + + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. + + + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - - This help message - This help message - - - - - Cannot obtain a lock on data directory %s. Bitcoin is probably already running. - Cannot obtain a lock on data directory %s. Bitcoin is probably already running. - - - + Loading addresses... Loading addresses... - Error loading addr.dat - - - - - Error loading blkindex.dat - - - - - Error loading wallet.dat: Wallet corrupted - - - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin - + This help message + This help message + - Wallet needed to be rewritten: restart Bitcoin to complete - - - - - Error loading wallet.dat - - - - Loading block index... Loading block index... - + Loading wallet... Loading wallet... - + Rescanning... Rescanning... + + + Error loading addr.dat + + + + + Error loading blkindex.dat + + + Error loading wallet.dat: Wallet corrupted + + + + Done loading Done loading + Error loading wallet.dat: Wallet requires newer version of Bitcoin + + + + Invalid -proxy address Invalid -proxy address + Wallet needed to be rewritten: restart Bitcoin to complete + + + + Invalid amount for -paytxfee=<amount> Invalid amount for -paytxfee=<amount> + Error loading wallet.dat + + + + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. - + Error: CreateThread(StartNode) failed Error: CreateThread(StartNode) failed - + Warning: Disk space is low Warning: Disk space is low - + Unable to bind to port %d on this computer. Bitcoin is probably already running. Unable to bind to port %d on this computer. Bitcoin is probably already running. - + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. - + beta beta - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_ro_RO.ts b/src/qt/locale/bitcoin_ro_RO.ts index 17c71e48f6e..061db1878fe 100644 --- a/src/qt/locale/bitcoin_ro_RO.ts +++ b/src/qt/locale/bitcoin_ro_RO.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -21,7 +23,7 @@ This is experimental software. Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - + @@ -64,17 +66,17 @@ This product includes software developed by the OpenSSL Project for use in the O Show &QR Code - + Sign a message to prove you own this address - + &Sign Message - + @@ -99,12 +101,12 @@ This product includes software developed by the OpenSSL Project for use in the O Edit - + Delete - + @@ -130,17 +132,17 @@ This product includes software developed by the OpenSSL Project for use in the O AddressTableModel - + Label Etichetă - + Address Adresă - + (no label) (fără etichetă) @@ -234,13 +236,13 @@ Sunteţi sigur că doriţi să criptaţi portofelul electronic? Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - + Warning: The Caps Lock key is on. - + @@ -287,314 +289,339 @@ Sunteţi sigur că doriţi să criptaţi portofelul electronic? BitcoinGUI - + Bitcoin Wallet Portofel electronic Bitcoin - - + + Synchronizing with network... Se sincronizează cu reţeaua... - + Block chain synchronization in progress Se sincronizează blocurile. - + &Overview &Detalii - + Show general overview of wallet Afişează detalii despre portofelul electronic - + &Transactions &Tranzacţii - + Browse transaction history Istoricul tranzacţiilor - + &Address Book &Lista de adrese - + Edit the list of stored addresses and labels Editaţi lista de adrese şi etichete. - + &Receive coins &Primiţi Bitcoin - + Show the list of addresses for receiving payments Lista de adrese pentru recepţionarea plăţilor - + &Send coins &Trimiteţi Bitcoin - + Send coins to a bitcoin address &Trimiteţi Bitcoin către o anumită adresă - + Sign &message - + - + Prove you control an address - + - + E&xit - + - + Quit application Părăsiţi aplicaţia - + &About %1 - + - + Show information about Bitcoin Informaţii despre Bitcoin - - - About &Qt - - - - - Show information about Qt - - + About &Qt + + + + + Show information about Qt + + + + &Options... &Setări... - + Modify configuration options for bitcoin Modifică setările pentru Bitcoin - + Open &Bitcoin Deschide &Bitcoin - + Show the Bitcoin window Afişează fereastra Bitcoin - + &Export... &Exportă... - + Export the data in the current tab to a file - + - + &Encrypt Wallet Criptează portofelul electronic - + Encrypt or decrypt wallet Criptează şi decriptează portofelul electronic - + &Backup Wallet - + &Backup portofelul electronic - + Backup wallet to another location - + - + &Change Passphrase &Schimbă parola - + Change the passphrase used for wallet encryption &Schimbă parola folosită pentru criptarea portofelului electronic - + &File &Fişier - + &Settings &Setări - + &Help &Ajutor - + Tabs toolbar Bara de ferestre de lucru - + Actions toolbar Bara de acţiuni - + [testnet] [testnet] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - %n active connections to Bitcoin network%n active connections to Bitcoin network%n active connections to Bitcoin network + + %n active connections to Bitcoin network + %n active connections to Bitcoin network + %n active connections to Bitcoin network + - + Downloaded %1 of %2 blocks of transaction history. S-au descărcat %1 din %2 blocuri din istoricul tranzaciilor. - + Downloaded %1 blocks of transaction history. S-au descărcat %1 blocuri din istoricul tranzaciilor. - + %n second(s) ago - %n seconds ago%n seconds ago%n seconds ago + + %n seconds ago + %n seconds ago + %n seconds ago + - + %n minute(s) ago - Acum %n minutAcum %n minuteAcum %n minute + + Acum %n minut + Acum %n minute + Acum %n minute + - + %n hour(s) ago - Acum %n orăAcum %n oreAcum %n ore + + Acum %n oră + Acum %n ore + Acum %n ore + - + %n day(s) ago - Acum %n ziAcum %n zileAcum %n zile + + Acum %n zi + Acum %n zile + Acum %n zile + - + Up to date Actualizat - + Catching up... Se actualizează... - + Last received block was generated %1. Ultimul bloc primit a fost generat %1. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? Această tranzacţie depăşeşte limita. Puteţi iniţia tranzacţia platind un comision de %1, de care vor beneficia nodurile care procesează tranzacţia şi ajută la menţinerea reţelei. Acceptaţi plata comisionului? - + Sending... Expediază... - + Sent transaction Tranzacţie expediată - + Incoming transaction Tranzacţie recepţionată - + Date: %1 Amount: %2 Type: %3 Address: %4 - + - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> Portofelul electronic este <b>criptat</b> iar in momentul de faţă este <b>deblocat</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> Portofelul electronic este <b>criptat</b> iar in momentul de faţă este <b>blocat</b> - + Backup Wallet - + - + Wallet Data (*.dat) - + - + Backup Failed - + - + There was an error trying to save the wallet data to the new location. - + + + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + @@ -611,8 +638,13 @@ Address: %4 - Display addresses in transaction list - Afişează adresele în lista de tranzacţii + &Display addresses in transaction list + &Afişează adresele în lista de tranzacţii + + + + Whether to show Bitcoin addresses in the transaction list + @@ -758,7 +790,7 @@ Address: %4 Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. - + @@ -768,7 +800,7 @@ Address: %4 Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. - + @@ -776,17 +808,17 @@ Address: %4 Message - + You can sign messages with your addresses to prove you own them. Be careful not to sign anything vague, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - + - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - Adresa către care se va face plata (de exemplu: 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + @@ -811,27 +843,27 @@ Address: %4 Enter the message you want to sign here - + Click "Sign Message" to get signature - + Sign a message to prove you own this address - + &Sign Message - + - Copy the currently selected address to the system clipboard - Copiați adresa selectată în clipboard + Copy the current signature to the system clipboard + @@ -843,22 +875,22 @@ Address: %4 Error signing - + %1 is not a valid address. - + Private key for %1 is not available. - + Sign failed - + @@ -917,20 +949,12 @@ Address: %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> + + Wallet + - + <b>Recent transactions</b> <b>Ultimele tranzacţii</b> @@ -960,47 +984,52 @@ p, li { white-space: pre-wrap; } QR Code - + - + Request Payment - + - + Amount: - + - + BTC - + - + Label: - + - + Message: Mesaj: - + &Save As... - + - + + Error encoding URI into QR Code. + + + + Save Image... - + - + PNG Images (*.png) - + @@ -1030,7 +1059,7 @@ p, li { white-space: pre-wrap; } Remove all transaction fields - + @@ -1149,7 +1178,7 @@ p, li { white-space: pre-wrap; } Choose address from address book - + @@ -1310,7 +1339,7 @@ p, li { white-space: pre-wrap; } Transaction ID: - + @@ -1334,54 +1363,62 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date Data - + Type Tipul - + Address Adresa - + Amount Cantitate - + Open for %n block(s) - Deschis pentru for %n blocDeschis pentru %n blocuriDeschis pentru %n blocuri + + Deschis pentru for %n bloc + Deschis pentru %n blocuri + Deschis pentru %n blocuri + - + Open until %1 Deschis până la %1 - + Offline (%1 confirmations) Neconectat (%1 confirmări) - + Unconfirmed (%1 of %2 confirmations) Neconfirmat (%1 din %2 confirmări) - + Confirmed (%1 confirmations) Confirmat (%1 confirmări) Mined balance will be available in %n more blocks - Soldul de bitcoin produs va fi disponibil după încă %n blocSoldul de bitcoin produs va fi disponibil după încă %n blocuriSoldul de bitcoin produs va fi disponibil după încă %n blocuri + + Soldul de bitcoin produs va fi disponibil după încă %n bloc + Soldul de bitcoin produs va fi disponibil după încă %n blocuri + Soldul de bitcoin produs va fi disponibil după încă %n blocuri + @@ -1401,7 +1438,7 @@ p, li { white-space: pre-wrap; } Received from - + @@ -1535,7 +1572,7 @@ p, li { white-space: pre-wrap; } Copy amount - + @@ -1624,345 +1661,345 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version versiunea Bitcoin - + Usage: Uz: - + Send command to -server or bitcoind Trimite comanda la -server sau bitcoind - + List commands Listă de comenzi - + Get help for a command Ajutor pentru o comandă - + Options: Setări: - - - Specify configuration file (default: bitcoin.conf) - - - - - Specify pid file (default: bitcoind.pid) - - - - - Generate coins - - - - - Don't generate coins - - - - - Start minimized - - - Specify data directory - + Specify configuration file (default: bitcoin.conf) + - Specify connection timeout (in milliseconds) - + Specify pid file (default: bitcoind.pid) + - Connect through socks4 proxy - + Generate coins + - Allow DNS lookups for addnode and connect - + Don't generate coins + - Listen for connections on <port> (default: 8333 or testnet: 18333) - + Start minimized + - Maintain at most <n> connections to peers (default: 125) - + Specify data directory + - Add a node to connect to - + Specify connection timeout (in milliseconds) + - Connect only to the specified node - + Connect through socks4 proxy + - Don't accept connections from outside - + Allow DNS lookups for addnode and connect + - Don't bootstrap list of peers using DNS - + Listen for connections on <port> (default: 8333 or testnet: 18333) + - Threshold for disconnecting misbehaving peers (default: 100) - + Maintain at most <n> connections to peers (default: 125) + - Number of seconds to keep misbehaving peers from reconnecting (default: 86400) - + Add a node to connect to + + + + + Connect only to the specified node + + + + + Don't accept connections from outside + - Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) - + Don't bootstrap list of peers using DNS + - Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) - + Threshold for disconnecting misbehaving peers (default: 100) + - Don't attempt to use UPnP to map the listening port - - - - - Attempt to use UPnP to map the listening port - - - - - Fee per kB to add to transactions you send - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) + - Accept command line and JSON-RPC commands - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) + - Run in the background as a daemon and accept commands - + Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) + - Use the test network - + Don't attempt to use UPnP to map the listening port + - Output extra debugging information - + Attempt to use UPnP to map the listening port + - Prepend debug output with timestamp - + Fee per kB to add to transactions you send + - Send trace/debug info to console instead of debug.log file - + Accept command line and JSON-RPC commands + - Send trace/debug info to debugger - + Run in the background as a daemon and accept commands + - Username for JSON-RPC connections - + Use the test network + - Password for JSON-RPC connections - + Output extra debugging information + - Listen for JSON-RPC connections on <port> (default: 8332) - + Prepend debug output with timestamp + - Allow JSON-RPC connections from specified IP address - + Send trace/debug info to console instead of debug.log file + - Send commands to node running on <ip> (default: 127.0.0.1) - + Send trace/debug info to debugger + - Set key pool size to <n> (default: 100) - + Username for JSON-RPC connections + - Rescan the block chain for missing wallet transactions - + Password for JSON-RPC connections + - -SSL options: (see the Bitcoin Wiki for SSL setup instructions) - + Listen for JSON-RPC connections on <port> (default: 8332) + + + + + Allow JSON-RPC connections from specified IP address + + + + + Send commands to node running on <ip> (default: 127.0.0.1) + - Use OpenSSL (https) for JSON-RPC connections - + Set key pool size to <n> (default: 100) + - Server certificate file (default: server.cert) - + Rescan the block chain for missing wallet transactions + - Server private key (default: server.pem) - + +SSL options: (see the Bitcoin Wiki for SSL setup instructions) + - - Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - + + Use OpenSSL (https) for JSON-RPC connections + - This help message - + Server certificate file (default: server.cert) + - Cannot obtain a lock on data directory %s. Bitcoin is probably already running. - + Server private key (default: server.pem) + - + + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) + + + + + This help message + + + + + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. + + + + Loading addresses... Încarc adrese... - - - Error loading addr.dat - - - - - Error loading blkindex.dat - - - - - Error loading wallet.dat: Wallet corrupted - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin - - - - - Wallet needed to be rewritten: restart Bitcoin to complete - + Error loading addr.dat + - Error loading wallet.dat - + Error loading blkindex.dat + - + + Error loading wallet.dat: Wallet corrupted + + + + + Error loading wallet.dat: Wallet requires newer version of Bitcoin + + + + + Wallet needed to be rewritten: restart Bitcoin to complete + + + + + Error loading wallet.dat + + + + Loading block index... Încarc indice bloc... - + Loading wallet... Încarc portofel... - + Rescanning... Rescanez... - + Done loading Încărcare terminată - - - Invalid -proxy address - - - - - Invalid amount for -paytxfee=<amount> - - - - - Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. - - - Error: CreateThread(StartNode) failed - + Invalid -proxy address + - Warning: Disk space is low - + Invalid amount for -paytxfee=<amount> + - Unable to bind to port %d on this computer. Bitcoin is probably already running. - + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. + - Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. - + Error: CreateThread(StartNode) failed + - + + Warning: Disk space is low + + + + + Unable to bind to port %d on this computer. Bitcoin is probably already running. + + + + + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. + + + + beta - + - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_ru.ts b/src/qt/locale/bitcoin_ru.ts index d706b33b979..877f91ce1e9 100644 --- a/src/qt/locale/bitcoin_ru.ts +++ b/src/qt/locale/bitcoin_ru.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -67,11 +69,21 @@ This product includes software developed by the OpenSSL Project for use in the O &Copy to Clipboard &Kопировать + + + Delete the currently selected address from the list. Only sending addresses can be deleted. + Удалить выделенный адрес из списка (могут быть удалены только записи из адресной книги). + Show &QR Code Показать &QR код + + + &Delete + &Удалить + Sign a message to prove you own this address @@ -82,16 +94,6 @@ This product includes software developed by the OpenSSL Project for use in the O &Sign Message &Подписать сообщение - - - Delete the currently selected address from the list. Only sending addresses can be deleted. - Удалить выделенный адрес из списка (могут быть удалены только записи из адресной книги). - - - - &Delete - &Удалить - Copy address @@ -136,17 +138,17 @@ This product includes software developed by the OpenSSL Project for use in the O AddressTableModel - + Label Метка - + Address Адрес - + (no label) [нет метки] @@ -237,11 +239,6 @@ Are you sure you wish to encrypt your wallet? Wallet encrypted Бумажник зашифрован - - - Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - Сейчас программа закроется для завершения процесса шифрования. Помните, что шифрование вашего бумажника не может полностью защитить ваши биткоины от кражи с помощью инфицирования вашего компьютера вредоносным ПО. - @@ -261,6 +258,11 @@ Are you sure you wish to encrypt your wallet? Wallet encryption failed due to an internal error. Your wallet was not encrypted. Шифрование бумажника не удалось из-за внутренней ошибки. Ваш бумажник не был зашифрован. + + + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. + Сейчас программа закроется для завершения процесса шифрования. Помните, что шифрование вашего бумажника не может полностью защитить ваши биткоины от кражи с помощью инфицирования вашего компьютера вредоносным ПО. + @@ -293,278 +295,298 @@ Are you sure you wish to encrypt your wallet? BitcoinGUI - + Bitcoin Wallet Bitcoin-бумажник - - + + Synchronizing with network... Синхронизация с сетью... - + Block chain synchronization in progress Идёт синхронизация цепочки блоков - + &Overview О&бзор - + Show general overview of wallet Показать общий обзор действий с бумажником - + &Transactions &Транзакции - + Browse transaction history Показать историю транзакций - + &Address Book &Адресная книга - + Edit the list of stored addresses and labels Изменить список сохранённых адресов и меток к ним - + &Receive coins &Получение монет - + Show the list of addresses for receiving payments Показать список адресов для получения платежей - + &Send coins Отп&равка монет - + Send coins to a bitcoin address Отправить монеты на указанный адрес - + Sign &message Подписать &сообщение - + Prove you control an address Доказать, что вы владеете адресом - + E&xit В&ыход - + Quit application Закрыть приложение - + &About %1 &О %1 - + Show information about Bitcoin Показать информацию о Bitcoin'е - - About &Qt - О &Qt - - - - Show information about Qt - Показать информацию о Qt - - - + &Options... Оп&ции... - + Modify configuration options for bitcoin Изменить настройки - + Open &Bitcoin &Показать бумажник - + Show the Bitcoin window Показать окно бумажника - + &Export... &Экспорт... - - Export the data in the current tab to a file - - - - + &Encrypt Wallet &Зашифровать бумажник - + Encrypt or decrypt wallet Зашифровать или расшифровать бумажник - - &Backup Wallet - - - - - Backup wallet to another location - - - - + &Change Passphrase &Изменить пароль - + Change the passphrase used for wallet encryption Изменить пароль шифрования бумажника - + + About &Qt + О &Qt + + + + Show information about Qt + Показать информацию о Qt + + + + Export the data in the current tab to a file + + + + + &Backup Wallet + &Backup бумажник + + + + Backup wallet to another location + + + + &File &Файл - + &Settings &Настройки - + &Help &Помощь - + Tabs toolbar Панель вкладок - + Actions toolbar Панель действий - + [testnet] [тестовая сеть] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - %n активное соединение с сетью%n активных соединений с сетью%n активных соединений с сетью + + %n активное соединение с сетью + %n активных соединений с сетью + %n активных соединений с сетью + - + Downloaded %1 of %2 blocks of transaction history. Загружено %1 из %2 блоков истории транзакций. - + Downloaded %1 blocks of transaction history. Загружено %1 блоков истории транзакций. - + %n second(s) ago - %n секунду назад%n секунды назад%n секунд назад + + %n секунду назад + %n секунды назад + %n секунд назад + - + %n minute(s) ago - %n минуту назад%n минуты назад%n минут назад + + %n минуту назад + %n минуты назад + %n минут назад + - + %n hour(s) ago - %n час назад%n часа назад%n часов назад + + %n час назад + %n часа назад + %n часов назад + - + %n day(s) ago - %n день назад%n дня назад%n дней назад + + %n день назад + %n дня назад + %n дней назад + - + Up to date Синхронизированно - + Catching up... Синхронизируется... - + Last received block was generated %1. Последний полученный блок был сгенерирован %1. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? Данная транзакция превышает предельно допустимый размер. Но Вы можете всё равно совершить ей, добавив комиссию в %1, которая отправится тем узлам, которые обработают Вашу транзакцию и поможет поддержать сеть. Вы хотите добавить комиссию? - + Sending... Отправка... - + Sent transaction Исходящая транзакция - + Incoming transaction Входящая транзакция - + Date: %1 Amount: %2 Type: %3 @@ -577,34 +599,39 @@ Address: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> Бумажник <b>зашифрован</b> и в настоящее время <b>разблокирован</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> Бумажник <b>зашифрован</b> и в настоящее время <b>заблокирован</b> - + Backup Wallet - + - + Wallet Data (*.dat) Данные Кошелька (*.dat) - + Backup Failed - + - + There was an error trying to save the wallet data to the new location. - + + + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + @@ -621,8 +648,13 @@ Address: %4 - Display addresses in transaction list - Показывать адреса в списке транзакций + &Display addresses in transaction list + &Показывать адреса в списке транзакций + + + + Whether to show Bitcoin addresses in the transaction list + @@ -791,12 +823,12 @@ Address: %4 You can sign messages with your addresses to prove you own them. Be careful not to sign anything vague, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - + - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - Адрес получателя платежа (например 1LA5FtQhnnWnkK6zjFfutR7Stiit4wKd63) + The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + @@ -840,8 +872,8 @@ Address: %4 - Copy the currently selected address to the system clipboard - Копировать текущий выделенный адрес в буфер обмена + Copy the current signature to the system clipboard + @@ -927,20 +959,12 @@ Address: %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Бумажник</span></p></body></html> + + Wallet + Бумажник - + <b>Recent transactions</b> <b>Последние транзакции</b> @@ -973,44 +997,49 @@ p, li { white-space: pre-wrap; } QR код - + Request Payment Запросить платёж - + Amount: Количество: - + BTC BTC - + Label: Метка: - + Message: Сообщение: - + &Save As... &Сохранить как... - + + Error encoding URI into QR Code. + + + + Save Image... Сохранить изображение... - + PNG Images (*.png) - + @@ -1037,16 +1066,16 @@ p, li { white-space: pre-wrap; } &Add recipient... &Добавить получателя... - - - Remove all transaction fields - Удалить все поля транзакции - Clear all Очистить всё + + + Remove all transaction fields + Удалить все поля транзакции + Balance: @@ -1344,54 +1373,62 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date Дата - + Type Тип - + Address Адрес - + Amount Количество - + Open for %n block(s) - Открыто для %n блокаОткрыто для %n блоковОткрыто для %n блоков + + Открыто для %n блока + Открыто для %n блоков + Открыто для %n блоков + - + Open until %1 Открыто до %1 - + Offline (%1 confirmations) Оффлайн (%1 подтверждений) - + Unconfirmed (%1 of %2 confirmations) Не подтверждено (%1 из %2 подтверждений) - + Confirmed (%1 confirmations) Подтверждено (%1 подтверждений) Mined balance will be available in %n more blocks - Добытыми монетами можно будет воспользоваться через %n блокДобытыми монетами можно будет воспользоваться через %n блокаДобытыми монетами можно будет воспользоваться через %n блоков + + Добытыми монетами можно будет воспользоваться через %n блок + Добытыми монетами можно будет воспользоваться через %n блока + Добытыми монетами можно будет воспользоваться через %n блоков + @@ -1634,347 +1671,347 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version Версия - + Usage: Использование: - + Send command to -server or bitcoind Отправить команду на -server или bitcoind - + List commands Список команд - + Get help for a command Получить помощь по команде - + Options: Опции: - + Specify configuration file (default: bitcoin.conf) Указать конфигурационный файл (по умолчанию: bitcoin.conf) - + Specify pid file (default: bitcoind.pid) Указать pid-файл (по умолчанию: bitcoin.pid) - + Generate coins Генерировать монеты - + Don't generate coins Не генерировать монеты - + Start minimized Запускать свёрнутым - + Specify data directory Укажите каталог данных - + Specify connection timeout (in milliseconds) Укажите таймаут соединения (в миллисекундах) - + Connect through socks4 proxy Подключаться через socks4 прокси - + Allow DNS lookups for addnode and connect Разрешить обращения к DNS для addnode и подключения - + Listen for connections on <port> (default: 8333 or testnet: 18333) Принимать входящие подключения на <port> (по умолчанию: 8333 или 18333 в тестовой сети) - + Maintain at most <n> connections to peers (default: 125) Поддерживать не более <n> подключений к узлам (по умолчанию: 125) - + Add a node to connect to Добавить узел для подключения - + Connect only to the specified node Подключаться только к указанному узлу - + Don't accept connections from outside Не принимать входящие подключения - + Don't bootstrap list of peers using DNS Не получать начальный список узлов через DNS - + Threshold for disconnecting misbehaving peers (default: 100) Порог для отключения неправильно ведущих себя узлов (по умолчанию: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Число секунд блокирования неправильно ведущих себя узлов (по умолчанию: 86400) - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) Максимальный размер буфера приёма на соединение, <n>*1000 байт (по умолчанию: 10000) - + Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) Максимальный размер буфера отправки на соединение, <n>*1000 байт (по умолчанию: 10000) - + Don't attempt to use UPnP to map the listening port Не пытаться использовать UPnP для назначения входящего порта - + Attempt to use UPnP to map the listening port Пытаться использовать UPnP для назначения входящего порта - + Fee per kB to add to transactions you send Комиссия на Кб, добавляемая к вашим переводам - + Accept command line and JSON-RPC commands Принимать командную строку и команды JSON-RPC - + Run in the background as a daemon and accept commands Запускаться в фоне как демон и принимать команды - + Use the test network Использовать тестовую сеть - + Output extra debugging information Выводить дополнительную отладочную информацию - + Prepend debug output with timestamp Дописывать отметки времени к отладочному выводу - + Send trace/debug info to console instead of debug.log file Выводить информацию трассировки/отладки на консоль вместо файла debug.log - + Send trace/debug info to debugger Отправлять информацию трассировки/отладки в отладчик - + Username for JSON-RPC connections Имя для подключений JSON-RPC - + Password for JSON-RPC connections Пароль для подключений JSON-RPC - + Listen for JSON-RPC connections on <port> (default: 8332) Ожидать подключения JSON-RPC на <порт> (по умолчанию: 8332) - + Allow JSON-RPC connections from specified IP address Разрешить подключения JSON-RPC с указанного IP - + Send commands to node running on <ip> (default: 127.0.0.1) Посылать команды узлу, запущенному на <ip> (по умолчанию: 127.0.0.1) - + Set key pool size to <n> (default: 100) Установить размер запаса ключей в <n> (по умолчанию: 100) - + Rescan the block chain for missing wallet transactions Перепроверить цепь блоков на предмет отсутствующих в кошельке транзакций - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) Параметры SSL: (см. Bitcoin Wiki для инструкций по настройке SSL) - + Use OpenSSL (https) for JSON-RPC connections Использовать OpenSSL (https) для подключений JSON-RPC - + Server certificate file (default: server.cert) Файл серверного сертификата (по умолчанию: server.cert) - + Server private key (default: server.pem) Приватный ключ сервера (по умолчанию: server.pem) - - Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - Разрешённые алгоритмы (по умолчанию: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - - - - This help message - Эта справка - - - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. Невозможно установить блокировку на рабочую директорию %s. Возможно, бумажник уже запущен. - + + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) + Разрешённые алгоритмы (по умолчанию: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) + + + Loading addresses... Загрузка адресов... - Error loading addr.dat - Ошибка загрузки addr.dat - - - - Error loading blkindex.dat - Ошибка чтения blkindex.dat - - - - Error loading wallet.dat: Wallet corrupted - Ошибка загрузки wallet.dat: Бумажник поврежден - - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin - Ошибка загрузки wallet.dat: бумажник требует более новую версию Bitcoin + This help message + Эта справка - Wallet needed to be rewritten: restart Bitcoin to complete - Необходимо перезаписать бумажник, перезапустите Bitcoin для завершения операции. - - - - Error loading wallet.dat - Ошибка при загрузке wallet.dat - - - Loading block index... Загрузка индекса блоков... - + Loading wallet... Загрузка бумажника... - + Rescanning... Сканирование... + + + Error loading addr.dat + Ошибка загрузки addr.dat + + + + Error loading blkindex.dat + Ошибка чтения blkindex.dat + + Error loading wallet.dat: Wallet corrupted + Ошибка загрузки wallet.dat: Бумажник поврежден + + + Done loading Загрузка завершена + Error loading wallet.dat: Wallet requires newer version of Bitcoin + Ошибка загрузки wallet.dat: бумажник требует более новую версию Bitcoin + + + Invalid -proxy address Ошибка в адресе прокси + Wallet needed to be rewritten: restart Bitcoin to complete + Необходимо перезаписать бумажник, перезапустите Bitcoin для завершения операции. + + + Invalid amount for -paytxfee=<amount> Ошибка в сумме комиссии + Error loading wallet.dat + Ошибка при загрузке wallet.dat + + + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. ВНИМАНИЕ: Установлена слишком большая комиссия (-paytxfee=). Данный параметр отвечает за комиссию, которую Вы будете добавлять к сумме при осуществлении транзакций. - + Error: CreateThread(StartNode) failed Ошибка: Созданиние потока (запуск узла) не удался - + Warning: Disk space is low ВНИМАНИЕ: На диске заканчивается свободное пространство - + Unable to bind to port %d on this computer. Bitcoin is probably already running. Невозможно забиндить порт %d на данном компьютере. Возможно, бумажник ужк запущен. - + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. ВНИМАНИЕ: Проверьте дату и время, установленные на Вашем компьютере. Если Ваши часы идут не правильно Bitcoin может наботать не корректно. - + beta бета - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_sk.ts b/src/qt/locale/bitcoin_sk.ts index c8b49a13e1b..1dc430ea3c8 100644 --- a/src/qt/locale/bitcoin_sk.ts +++ b/src/qt/locale/bitcoin_sk.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -21,7 +23,7 @@ This is experimental software. Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - + @@ -130,17 +132,17 @@ This product includes software developed by the OpenSSL Project for use in the O AddressTableModel - + Label Popis - + Address Adresa - + (no label) (bez popisu) @@ -234,7 +236,7 @@ Ste si istí, že si želáte zašifrovať peňaženku? Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - + @@ -287,278 +289,288 @@ Ste si istí, že si želáte zašifrovať peňaženku? BitcoinGUI - + Bitcoin Wallet Bitcoin peňaženka - - + + Synchronizing with network... Synchronizácia so sieťou... - + Block chain synchronization in progress Prebieha synchronizácia blockchain. - + &Overview &Prehľad - + Show general overview of wallet Zobraziť celkový prehľad o peňaženke - + &Transactions &Preklady - + Browse transaction history Prechádzať históriu transakcií - + &Address Book &Adresár - + Edit the list of stored addresses and labels Editovať zoznam uložených adries a popisov - + &Receive coins &Prijať bitcoins - + Show the list of addresses for receiving payments Zobraziť zoznam adries pre prijímanie platieb. - + &Send coins &Poslať bitcoins - + Send coins to a bitcoin address Poslať bitcoins na adresu - + Sign &message Podpísať &správu - + Prove you control an address Dokázať že kontrolujete adresu - + E&xit U&končiť - + Quit application Ukončiť program - + &About %1 &O %1 - + Show information about Bitcoin Zobraziť informácie o Bitcoin - + About &Qt O &Qt - + Show information about Qt Zobrazit informácie o Qt - + &Options... &Možnosti... - + Modify configuration options for bitcoin Upraviť možnosti nastavenia pre bitcoin - + Open &Bitcoin Otvoriť &Bitcoin - + Show the Bitcoin window Zobraziť okno Bitcoin - + &Export... &Export... - + Export the data in the current tab to a file - + - + &Encrypt Wallet &Zašifrovať Peňaženku - + Encrypt or decrypt wallet Zašifrovať alebo dešifrovať peňaženku - + &Backup Wallet - + &Backup peňaženku - + Backup wallet to another location - + - + &Change Passphrase &Zmena Hesla - + Change the passphrase used for wallet encryption Zmeniť heslo použité na šifrovanie peňaženky - + &File &Súbor - + &Settings &Nastavenia - + &Help &Pomoc - + Tabs toolbar Lišta záložiek - + Actions toolbar Lišta aktvivít - + [testnet] [testovacia sieť] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - + + + - + Downloaded %1 of %2 blocks of transaction history. - + - + Downloaded %1 blocks of transaction history. - + - + %n second(s) ago - + + + - + %n minute(s) ago - + + + - + %n hour(s) ago - + + + - + %n day(s) ago - + + + - + Up to date Aktualizovaný - + Catching up... - + - + Last received block was generated %1. Posledný prijatý blok bol generovaný %1. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? - + - + Sending... Odosielanie... - + Sent transaction Odoslané transakcie - + Incoming transaction Prijaté transakcie - + Date: %1 Amount: %2 Type: %3 @@ -570,34 +582,39 @@ Typ: %3 Adresa: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> - + - + Wallet is <b>encrypted</b> and currently <b>locked</b> - + - + Backup Wallet - + - + Wallet Data (*.dat) - + - + Backup Failed - + - + There was an error trying to save the wallet data to the new location. - + + + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + @@ -610,12 +627,17 @@ Adresa: %4 Choose the default subdivision unit to show in the interface, and when sending coins - + - Display addresses in transaction list - Zobraziť adresy zo zoznamu transakcií. + &Display addresses in transaction list + &Zobraziť adresy zo zoznamu transakcií + + + + Whether to show Bitcoin addresses in the transaction list + @@ -643,7 +665,7 @@ Adresa: %4 The address associated with this address book entry. This can only be modified for sending addresses. - + @@ -701,7 +723,7 @@ Adresa: %4 &Minimize to the tray instead of the taskbar - + @@ -784,12 +806,12 @@ Adresa: %4 You can sign messages with your addresses to prove you own them. Be careful not to sign anything vague, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - + - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - Adresa pre odoslanie platby je (napr. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + @@ -833,8 +855,8 @@ Adresa: %4 - Copy the currently selected address to the system clipboard - Kopírovať práve zvolenú adresu do systémového klipbordu + Copy the current signature to the system clipboard + @@ -920,16 +942,12 @@ Adresa: %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - + + Wallet + - + <b>Recent transactions</b> <b>Nedávne transakcie</b> @@ -962,44 +980,49 @@ p, li { white-space: pre-wrap; } QR kód - + Request Payment Vyžiadať platbu - + Amount: Suma: - + BTC BTC - + Label: Popis: - + Message: Správa: - + &Save As... &Uložiť ako... - - Save Image... - + + Error encoding URI into QR Code. + - + + Save Image... + + + + PNG Images (*.png) - + @@ -1109,7 +1132,7 @@ p, li { white-space: pre-wrap; } Error: The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. - + @@ -1181,17 +1204,17 @@ p, li { white-space: pre-wrap; } Open for %1 blocks - + Open until %1 - + %1/offline? - + @@ -1314,7 +1337,7 @@ p, li { white-space: pre-wrap; } Generated coins must wait 120 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, it will change to "not accepted" and not be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - + @@ -1333,54 +1356,58 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date Dátum - + Type Typ - + Address Adresa - + Amount Hodnota - + Open for %n block(s) - + + + - + Open until %1 - + - + Offline (%1 confirmations) - + - + Unconfirmed (%1 of %2 confirmations) Nepotvrdené (%1 z %2 potvrdení) - + Confirmed (%1 confirmations) Potvrdené (%1 potvrdení) Mined balance will be available in %n more blocks - + + + @@ -1623,345 +1650,345 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version Bitcoin verzia - + Usage: Použitie: - + Send command to -server or bitcoind Odoslať príkaz -server alebo bitcoind - + List commands Zoznam príkazov - + Get help for a command Dostať pomoc pre príkaz - + Options: Možnosti: - + Specify configuration file (default: bitcoin.conf) Určiť súbor s nastaveniami (predvolené: bitcoin.conf) - + Specify pid file (default: bitcoind.pid) Určiť súbor pid (predvolené: bitcoind.pid) - + Generate coins Počítaj bitcoins - + Don't generate coins Nepočítaj bitcoins - + Start minimized Spustiť minimalizované - + Specify data directory Určiť priečinok s dátami - + Specify connection timeout (in milliseconds) Určiť aut spojenia (v milisekundách) - + Connect through socks4 proxy Pripojenie cez socks4 proxy - + Allow DNS lookups for addnode and connect Povoliť vyhľadávanie DNS pre pridanie nódy a spojenie - + Listen for connections on <port> (default: 8333 or testnet: 18333) Načúvať spojeniam na <port> (prednastavené: 8333 alebo testovacia sieť: 18333) - + Maintain at most <n> connections to peers (default: 125) Udržiavať maximálne <n> spojení (predvolené: 125) - + Add a node to connect to Pridať nódu a pripojiť sa - + Connect only to the specified node Pripojiť sa len k určenej nóde - + Don't accept connections from outside Neprijímať spojenia z vonku - - - Don't bootstrap list of peers using DNS - - - - - Threshold for disconnecting misbehaving peers (default: 100) - - - - - Number of seconds to keep misbehaving peers from reconnecting (default: 86400) - - - Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) - + Don't bootstrap list of peers using DNS + - Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) - + Threshold for disconnecting misbehaving peers (default: 100) + + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) + + + + + Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) + + + + + Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) + + + + Don't attempt to use UPnP to map the listening port Neskúsiť použiť UPnP pre mapovanie počúvajúceho portu - + Attempt to use UPnP to map the listening port Skúsiť použiť UPnP pre mapovanie počúvajúceho portu - + Fee per kB to add to transactions you send Poplatok za kB ktorý treba pridať k odoslanej transakcii - + Accept command line and JSON-RPC commands Prijímať príkazy z príkazového riadku a JSON-RPC - + Run in the background as a daemon and accept commands Bežať na pozadí ako démon a prijímať príkazy - + Use the test network Použiť testovaciu sieť - + Output extra debugging information Produkovať extra ladiace informácie - + Prepend debug output with timestamp Pridať na začiatok ladiaceho výstupu časový údaj - + Send trace/debug info to console instead of debug.log file Odoslať trace/debug informácie na konzolu namiesto debug.info žurnálu - + Send trace/debug info to debugger Odoslať trace/debug informácie do ladiaceho programu - + Username for JSON-RPC connections Užívateľské meno pre JSON-RPC spojenia - + Password for JSON-RPC connections Heslo pre JSON-rPC spojenia - + Listen for JSON-RPC connections on <port> (default: 8332) Počúvať JSON-RPC spojeniam na <port> (predvolené: 8332) - + Allow JSON-RPC connections from specified IP address Povoliť JSON-RPC spojenia z určenej IP adresy. - + Send commands to node running on <ip> (default: 127.0.0.1) Poslať príkaz nóde bežiacej na <ip> (predvolené: 127.0.0.1) - + Set key pool size to <n> (default: 100) Nastaviť zásobu adries na <n> (predvolené: 100) - + Rescan the block chain for missing wallet transactions - + - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) SSL možnosť: (pozrite Bitcoin Wiki pre návod na nastavenie SSL) - + Use OpenSSL (https) for JSON-RPC connections Použiť OpenSSL (https) pre JSON-RPC spojenia - + Server certificate file (default: server.cert) Súbor s certifikátom servra (predvolené: server.cert) - + Server private key (default: server.pem) Súkromný kľúč servra (predvolené: server.pem) - + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) Prijateľné šifry (predvolené: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - + This help message Táto pomocná správa - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. - + - + Loading addresses... Načítavanie adries... - + Error loading addr.dat Chyba načítania addr.dat - + Error loading blkindex.dat Chyba načítania blkindex.dat - + Error loading wallet.dat: Wallet corrupted Chyba načítania wallet.dat: Peňaženka je poškodená - + Error loading wallet.dat: Wallet requires newer version of Bitcoin Chyba načítania wallet.dat: Peňaženka vyžaduje novšiu verziu Bitcoin - + Wallet needed to be rewritten: restart Bitcoin to complete Bolo potrebné prepísať peňaženku: dokončite reštartovaním Bitcoin - + Error loading wallet.dat Chyba načítania wallet.dat - + Loading block index... Načítavanie zoznamu blokov... - + Loading wallet... Načítavam peňaženku... - + Rescanning... - + - + Done loading Dokončené načítavanie - + Invalid -proxy address Neplatná adresa proxy - + Invalid amount for -paytxfee=<amount> Neplatná suma pre -paytxfee=<amount> - + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. Varovanie: -paytxfee je nastavené veľmi vysoko. Toto sú transakčné poplatky ktoré zaplatíte ak odošlete transakciu. - + Error: CreateThread(StartNode) failed Chyba: zlyhalo CreateThread(StartNode) - + Warning: Disk space is low Varovanie: Málo voľného miesta na disku - + Unable to bind to port %d on this computer. Bitcoin is probably already running. - + - + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. - + - + beta beta - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_sr.ts b/src/qt/locale/bitcoin_sr.ts index 59c0c991906..ed22deb3198 100644 --- a/src/qt/locale/bitcoin_sr.ts +++ b/src/qt/locale/bitcoin_sr.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -21,7 +23,7 @@ This is experimental software. Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - + @@ -64,17 +66,17 @@ This product includes software developed by the OpenSSL Project for use in the O Show &QR Code - + Sign a message to prove you own this address - + &Sign Message - + @@ -89,22 +91,22 @@ This product includes software developed by the OpenSSL Project for use in the O Copy address - + Copy label - + Edit - + Delete - + @@ -130,17 +132,17 @@ This product includes software developed by the OpenSSL Project for use in the O AddressTableModel - + Label Етикета - + Address Адреса - + (no label) (без етикете) @@ -234,13 +236,13 @@ Are you sure you wish to encrypt your wallet? Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - + Warning: The Caps Lock key is on. - + @@ -287,314 +289,339 @@ Are you sure you wish to encrypt your wallet? BitcoinGUI - + Bitcoin Wallet Bitcoin новчаник - - + + Synchronizing with network... Синхронизација са мрежом у току... - + Block chain synchronization in progress Синхронизовање ланца блоква је у току - + &Overview &Општи преглед - + Show general overview of wallet Погледајте општи преглед новчаника - + &Transactions &Трансакције - + Browse transaction history Претражите историјат трансакција - + &Address Book &Адресар - + Edit the list of stored addresses and labels Уредите запамћене адресе и њихове етикете - + &Receive coins П&римање новца - + Show the list of addresses for receiving payments Прегледајте листу адреса на којима прихватате уплате - + &Send coins &Слање новца - + Send coins to a bitcoin address Пошаљите новац на bitcoin адресу - + Sign &message - + - + Prove you control an address - + - + E&xit - + - + Quit application Напустите програм - + &About %1 - + - + Show information about Bitcoin Прегледајте информације о Bitcoin-у - - - About &Qt - - - - - Show information about Qt - - + About &Qt + + + + + Show information about Qt + + + + &Options... П&оставке... - + Modify configuration options for bitcoin Изаберите могућности bitcoin-а - + Open &Bitcoin Отвори &Bitcoin - + Show the Bitcoin window Приказује прозор Bitcoin-а - + &Export... &Извоз... - + Export the data in the current tab to a file - + - + &Encrypt Wallet &Шифровање новчаника - + Encrypt or decrypt wallet Шифровање и дешифровање новчаника - + &Backup Wallet - + &Backup новчаника - + Backup wallet to another location - + - + &Change Passphrase Промени &лозинку - + Change the passphrase used for wallet encryption Мењање лозинке којом се шифрује новчаник - + &File &Фајл - + &Settings &Подешавања - + &Help П&омоћ - + Tabs toolbar Трака са картицама - + Actions toolbar Трака са алаткама - + [testnet] [testnet] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - %n активна веза са Bitcoin мрежом%n активне везе са Bitcoin мрежом%n активних веза са Bitcoin мрежом + + %n активна веза са Bitcoin мрежом + %n активне везе са Bitcoin мрежом + %n активних веза са Bitcoin мрежом + - + Downloaded %1 of %2 blocks of transaction history. Преузето је %1 од укупно %2 блокова историјата трансакција. - + Downloaded %1 blocks of transaction history. Преузето је %1 блокова историјата трансакција. - + %n second(s) ago - пре %n секундпре %n секундепре %n секунди + + пре %n секунд + пре %n секунде + пре %n секунди + - + %n minute(s) ago - пре %n минутпре %n минутапре %n минута + + пре %n минут + пре %n минута + пре %n минута + - + %n hour(s) ago - пре %n сатпре %n сатапре %n сати + + пре %n сат + пре %n сата + пре %n сати + - + %n day(s) ago - пре %n данпре %n данапре %n дана + + пре %n дан + пре %n дана + пре %n дана + - + Up to date Ажурно - + Catching up... Ажурирање у току... - + Last received block was generated %1. Последњи примљени блок је направљен %1. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? Ова трансакција је превелика. И даље је можете послати уз накнаду од %1, која ће отићи чвору који прерађује трансакцију и помаже издржавању целе мреже. Да ли желите да дате напојницу? - + Sending... Слање... - + Sent transaction Послана трансакција - + Incoming transaction Придошла трансакција - + Date: %1 Amount: %2 Type: %3 Address: %4 - + - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> Новчаник јс <b>шифрован</b> и тренутно <b>откључан</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> Новчаник јс <b>шифрован</b> и тренутно <b>закључан</b> - + Backup Wallet - + - + Wallet Data (*.dat) - + - + Backup Failed - + - + There was an error trying to save the wallet data to the new location. - + + + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + @@ -607,12 +634,17 @@ Address: %4 Choose the default subdivision unit to show in the interface, and when sending coins - + - Display addresses in transaction list - + &Display addresses in transaction list + + + + + Whether to show Bitcoin addresses in the transaction list + @@ -620,57 +652,57 @@ Address: %4 Edit Address - + &Label - + The label associated with this address book entry - + &Address - + The address associated with this address book entry. This can only be modified for sending addresses. - + New receiving address - + New sending address - + Edit receiving address - + Edit sending address - + The entered address "%1" is already in the address book. - + The entered address "%1" is not a valid bitcoin address. - + @@ -680,7 +712,7 @@ Address: %4 New key generation failed. - + @@ -688,87 +720,87 @@ Address: %4 &Start Bitcoin on window system startup - + Automatically start Bitcoin after the computer is turned on - + &Minimize to the tray instead of the taskbar - + Show only a tray icon after minimizing the window - + Map port using &UPnP - + Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - + M&inimize on close - + Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Quit in the menu. - + &Connect through SOCKS4 proxy: - + Connect to the Bitcon network through a SOCKS4 proxy (e.g. when connecting through Tor) - + Proxy &IP: - + IP address of the proxy (e.g. 127.0.0.1) - + &Port: - + Port of the proxy (e.g. 1234) - + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. - + Pay transaction &fee - + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. - + @@ -776,62 +808,62 @@ Address: %4 Message - + You can sign messages with your addresses to prove you own them. Be careful not to sign anything vague, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - + - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - + The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + Choose adress from address book - + Alt+A - + Paste address from clipboard - + Alt+P - + Enter the message you want to sign here - + Click "Sign Message" to get signature - + Sign a message to prove you own this address - + &Sign Message - + - Copy the currently selected address to the system clipboard - Копира изабрану адресу на системски клипборд + Copy the current signature to the system clipboard + @@ -843,22 +875,22 @@ Address: %4 Error signing - + %1 is not a valid address. - + Private key for %1 is not available. - + Sign failed - + @@ -866,17 +898,17 @@ Address: %4 Main - + Display - + Options - + @@ -884,65 +916,57 @@ Address: %4 Form - + Balance: - + 123.456 BTC - + Number of transactions: - + 0 - + Unconfirmed: - + 0 BTC - + - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Новчаник</span></p></body></html> + + Wallet + Новчаник - + <b>Recent transactions</b> - + Your current balance - + Total of transactions that have yet to be confirmed, and do not yet count toward the current balance - + @@ -960,47 +984,52 @@ p, li { white-space: pre-wrap; } QR Code - + - + Request Payment - + - + Amount: - + - + BTC - + - + Label: - + - + Message: - + - + &Save As... - + - + + Error encoding URI into QR Code. + + + + Save Image... - + - + PNG Images (*.png) - + @@ -1015,42 +1044,42 @@ p, li { white-space: pre-wrap; } Send Coins - + Send to multiple recipients at once - + &Add recipient... - + Remove all transaction fields - + Clear all - + Balance: - + 123.456 BTC - + Confirm the send action - + @@ -1060,12 +1089,12 @@ p, li { white-space: pre-wrap; } <b>%1</b> to %2 (%3) - + Confirm send coins - + @@ -1075,42 +1104,42 @@ p, li { white-space: pre-wrap; } and - + The recepient address is not valid, please recheck. - + The amount to pay must be larger than 0. - + Amount exceeds your balance - + Total exceeds your balance when the %1 transaction fee is included - + Duplicate address found, can only send to each address once in one send operation - + Error: Transaction creation failed - + Error: The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. - + @@ -1118,63 +1147,63 @@ p, li { white-space: pre-wrap; } Form - + A&mount: - + Pay &To: - + Enter a label for this address to add it to your address book - + &Label: - + The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - + Choose address from address book - + Alt+A - + Paste address from clipboard - + Alt+P - + Remove this recipient - + Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - + @@ -1182,85 +1211,85 @@ p, li { white-space: pre-wrap; } Open for %1 blocks - + Open until %1 - + %1/offline? - + %1/unconfirmed - + %1 confirmations - + <b>Status:</b> - + , has not been successfully broadcast yet - + , broadcast through %1 node - + , broadcast through %1 nodes - + <b>Date:</b> - + <b>Source:</b> Generated<br> - + <b>From:</b> - + unknown - + <b>To:</b> - + (yours, label: - + (yours) - + @@ -1268,54 +1297,54 @@ p, li { white-space: pre-wrap; } <b>Credit:</b> - + (%1 matures in %2 more blocks) - + (not accepted) - + <b>Debit:</b> - + <b>Transaction fee:</b> - + <b>Net amount:</b> - + Message: - + Comment: - + Transaction ID: - + Generated coins must wait 120 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, it will change to "not accepted" and not be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - + @@ -1323,130 +1352,134 @@ p, li { white-space: pre-wrap; } Transaction details - + This pane shows a detailed description of the transaction - + TransactionTableModel - + Date - + - + Type - + - + Address Адреса - + Amount - + - + Open for %n block(s) - + + + - + Open until %1 - + - + Offline (%1 confirmations) - + - + Unconfirmed (%1 of %2 confirmations) - + - + Confirmed (%1 confirmations) - + Mined balance will be available in %n more blocks - + + + This block was not received by any other nodes and will probably not be accepted! - + Generated but not accepted - + Received with - + Received from - + Sent to - + Payment to yourself - + Mined - + (n/a) - + Transaction status. Hover over this field to show number of confirmations. - + Date and time that the transaction was received. - + Type of transaction. - + Destination address of transaction. - + Amount removed from or added to balance. - + @@ -1455,102 +1488,102 @@ p, li { white-space: pre-wrap; } All - + Today - + This week - + This month - + Last month - + This year - + Range... - + Received with - + Sent to - + To yourself - + Mined - + Other - + Enter address or label to search - + Min amount - + Copy address - + Copy label - + Copy amount - + Edit label - + Show details... - + Export Transaction Data - + @@ -1560,17 +1593,17 @@ p, li { white-space: pre-wrap; } Confirmed - + Date - + Type - + @@ -1585,12 +1618,12 @@ p, li { white-space: pre-wrap; } Amount - + ID - + @@ -1605,12 +1638,12 @@ p, li { white-space: pre-wrap; } Range: - + to - + @@ -1623,346 +1656,346 @@ p, li { white-space: pre-wrap; } bitcoin-core - - - Bitcoin version - - - - - Usage: - - - - - Send command to -server or bitcoind - - - - - List commands - - - - - Get help for a command - - - Options: - + Bitcoin version + - Specify configuration file (default: bitcoin.conf) - + Usage: + - Specify pid file (default: bitcoind.pid) - + Send command to -server or bitcoind + - Generate coins - + List commands + - Don't generate coins - + Get help for a command + - Start minimized - + Options: + - Specify data directory - + Specify configuration file (default: bitcoin.conf) + - Specify connection timeout (in milliseconds) - + Specify pid file (default: bitcoind.pid) + - Connect through socks4 proxy - + Generate coins + - Allow DNS lookups for addnode and connect - + Don't generate coins + - Listen for connections on <port> (default: 8333 or testnet: 18333) - + Start minimized + - Maintain at most <n> connections to peers (default: 125) - + Specify data directory + - Add a node to connect to - + Specify connection timeout (in milliseconds) + - Connect only to the specified node - + Connect through socks4 proxy + - Don't accept connections from outside - + Allow DNS lookups for addnode and connect + - Don't bootstrap list of peers using DNS - + Listen for connections on <port> (default: 8333 or testnet: 18333) + - Threshold for disconnecting misbehaving peers (default: 100) - + Maintain at most <n> connections to peers (default: 125) + - Number of seconds to keep misbehaving peers from reconnecting (default: 86400) - + Add a node to connect to + + + + + Connect only to the specified node + + + + + Don't accept connections from outside + - Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) - + Don't bootstrap list of peers using DNS + - Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) - + Threshold for disconnecting misbehaving peers (default: 100) + - Don't attempt to use UPnP to map the listening port - - - - - Attempt to use UPnP to map the listening port - - - - - Fee per kB to add to transactions you send - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) + - Accept command line and JSON-RPC commands - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) + - Run in the background as a daemon and accept commands - + Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) + - Use the test network - + Don't attempt to use UPnP to map the listening port + - Output extra debugging information - + Attempt to use UPnP to map the listening port + - Prepend debug output with timestamp - + Fee per kB to add to transactions you send + - Send trace/debug info to console instead of debug.log file - + Accept command line and JSON-RPC commands + - Send trace/debug info to debugger - + Run in the background as a daemon and accept commands + - Username for JSON-RPC connections - + Use the test network + - Password for JSON-RPC connections - + Output extra debugging information + - Listen for JSON-RPC connections on <port> (default: 8332) - + Prepend debug output with timestamp + - Allow JSON-RPC connections from specified IP address - + Send trace/debug info to console instead of debug.log file + - Send commands to node running on <ip> (default: 127.0.0.1) - + Send trace/debug info to debugger + - Set key pool size to <n> (default: 100) - + Username for JSON-RPC connections + - Rescan the block chain for missing wallet transactions - + Password for JSON-RPC connections + - -SSL options: (see the Bitcoin Wiki for SSL setup instructions) - + Listen for JSON-RPC connections on <port> (default: 8332) + + + + + Allow JSON-RPC connections from specified IP address + + + + + Send commands to node running on <ip> (default: 127.0.0.1) + - Use OpenSSL (https) for JSON-RPC connections - + Set key pool size to <n> (default: 100) + - Server certificate file (default: server.cert) - + Rescan the block chain for missing wallet transactions + - Server private key (default: server.pem) - + +SSL options: (see the Bitcoin Wiki for SSL setup instructions) + - - Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - + + Use OpenSSL (https) for JSON-RPC connections + - This help message - + Server certificate file (default: server.cert) + - Cannot obtain a lock on data directory %s. Bitcoin is probably already running. - + Server private key (default: server.pem) + - - Loading addresses... - + + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) + - Error loading addr.dat - - - - - Error loading blkindex.dat - - - - - Error loading wallet.dat: Wallet corrupted - - - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin - - - - - Wallet needed to be rewritten: restart Bitcoin to complete - - - - - Error loading wallet.dat - + This help message + - Loading block index... - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. + - + + Loading addresses... + + + + + Error loading addr.dat + + + + + Error loading blkindex.dat + + + + + Error loading wallet.dat: Wallet corrupted + + + + + Error loading wallet.dat: Wallet requires newer version of Bitcoin + + + + + Wallet needed to be rewritten: restart Bitcoin to complete + + + + + Error loading wallet.dat + + + + + Loading block index... + + + + Loading wallet... Новчаник се учитава... - + Rescanning... - + - + Done loading - - - - - Invalid -proxy address - - - - - Invalid amount for -paytxfee=<amount> - - - - - Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. - + - Error: CreateThread(StartNode) failed - + Invalid -proxy address + - Warning: Disk space is low - + Invalid amount for -paytxfee=<amount> + - Unable to bind to port %d on this computer. Bitcoin is probably already running. - + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. + - Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. - + Error: CreateThread(StartNode) failed + - + + Warning: Disk space is low + + + + + Unable to bind to port %d on this computer. Bitcoin is probably already running. + + + + + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. + + + + beta - + - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_sv.ts b/src/qt/locale/bitcoin_sv.ts index 7e5d1271792..2a0b50e5da2 100644 --- a/src/qt/locale/bitcoin_sv.ts +++ b/src/qt/locale/bitcoin_sv.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -21,7 +23,7 @@ This is experimental software. Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - + @@ -59,17 +61,17 @@ This product includes software developed by the OpenSSL Project for use in the O &Copy to Clipboard - &amp; Kopiera till Urklipp + & Kopiera till Urklipp Show &QR Code - + Sign a message to prove you own this address - + @@ -84,7 +86,7 @@ This product includes software developed by the OpenSSL Project for use in the O &Delete - &amp; Radera + & Radera @@ -130,17 +132,17 @@ This product includes software developed by the OpenSSL Project for use in the O AddressTableModel - + Label Etikett - + Address Adress - + (no label) (Ingen etikett) @@ -286,258 +288,273 @@ Are you sure you wish to encrypt your wallet? BitcoinGUI - + Bitcoin Wallet Bitcoin-plånbok - - + + Synchronizing with network... Synkroniserar med nätverk ... - + Block chain synchronization in progress Synkronisering av blockkedja pågår - + &Overview - &amp; Översikt + & Översikt - + Show general overview of wallet Visa översiktsvy av plånbok - + &Transactions &Transaktioner - + Browse transaction history Bläddra i transaktionshistorik - + &Address Book &Adressbok - + Edit the list of stored addresses and labels Redigera listan med lagrade adresser och etiketter - + &Receive coins - &amp; Ta emot bitcoins + & Ta emot bitcoins - + Show the list of addresses for receiving payments Visa listan med adresser för att ta emot betalningar - + &Send coins - &amp; Skicka bitcoins + & Skicka bitcoins - + Send coins to a bitcoin address Skicka bitcoins till en bitcoinadress - + Sign &message Signera &meddelande - + Prove you control an address - + - + E&xit &Avsluta - + Quit application Avsluta programmet - + &About %1 &Om %1 - + Show information about Bitcoin Visa information om Bitcoin - + About &Qt Om &Qt - + Show information about Qt Visa information om Qt - + &Options... - &amp; Alternativ ... + & Alternativ ... - + Modify configuration options for bitcoin Ändra konfigurationsalternativ för bitcoin - + Open &Bitcoin - Öppna &amp;Bitcoin + Öppna &Bitcoin - + Show the Bitcoin window Visa Bitcoin-fönster - - - &Export... - &amp;Exportera ... - - - - Export the data in the current tab to a file - - - - - &Encrypt Wallet - &amp;Kryptera plånbok - + &Export... + &Exportera ... + + + + Export the data in the current tab to a file + + + + + &Encrypt Wallet + &Kryptera plånbok + + + Encrypt or decrypt wallet Kryptera eller dekryptera plånbok - - - &Backup Wallet - - - - - Backup wallet to another location - - - - - &Change Passphrase - &amp;Byt lösenfras - + &Backup Wallet + &Backup plånbok + + + + Backup wallet to another location + + + + + &Change Passphrase + &Byt lösenfras + + + Change the passphrase used for wallet encryption Byt lösenfras för kryptering av plånbok - + &File &Arkiv - + &Settings &Inställningar - + &Help &Hjälp - + Tabs toolbar Verktygsfält för Tabbar - + Actions toolbar Verktygsfältet för Handlingar - + [testnet] [testnet] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - %n aktiv anslutning till Bitcoin-nätverket.%n aktiva anslutningar till Bitcoin-nätverket. + + %n aktiv anslutning till Bitcoin-nätverket. + %n aktiva anslutningar till Bitcoin-nätverket. + - + Downloaded %1 of %2 blocks of transaction history. Laddat ner %1 av %2 block från transaktionshistoriken. - + Downloaded %1 blocks of transaction history. Laddat ner %1 block från transaktionshistoriken. - + %n second(s) ago - %n sekund sedan%n sekunder sedan + + %n sekund sedan + %n sekunder sedan + - + %n minute(s) ago - %n minut sedan%n minuter sedan + + %n minut sedan + %n minuter sedan + - + %n hour(s) ago - %n timme sedan%n timmar sedan + + %n timme sedan + %n timmar sedan + - + %n day(s) ago - %n dag sedan%n dagar sedan + + %n dag sedan + %n dagar sedan + - + Up to date Uppdaterad - + Catching up... Hämtar senaste - + Last received block was generated %1. Senast mottagna blocked genererades %1. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? Transaktionen överskrider storleksgränsen. @@ -546,22 +563,22 @@ Du kan dock fortfarande skicka den mot en kostnad av %1. Denna avgift går till Vill du betala denna avgift? - + Sending... Skickar... - + Sent transaction Transaktion skickad - + Incoming transaction Inkommande transaktion - + Date: %1 Amount: %2 Type: %3 @@ -574,34 +591,39 @@ Adress:%4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> Denna plånbok är <b>krypterad</b> och för närvarande <b>olåst</b>. - + Wallet is <b>encrypted</b> and currently <b>locked</b> Denna plånbok är <b>krypterad</b> och för närvarande <b>låst</b>. - + Backup Wallet - + - + Wallet Data (*.dat) - + - + Backup Failed - + - + There was an error trying to save the wallet data to the new location. - + + + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + @@ -618,8 +640,13 @@ Adress:%4 - Display addresses in transaction list - Visa adresser i transaktionslistan + &Display addresses in transaction list + &Visa adresser i transaktionslistan + + + + Whether to show Bitcoin addresses in the transaction list + @@ -765,7 +792,7 @@ Adress:%4 Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. - + @@ -775,7 +802,7 @@ Adress:%4 Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended. - + @@ -783,17 +810,17 @@ Adress:%4 Message - + You can sign messages with your addresses to prove you own them. Be careful not to sign anything vague, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - + - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - Adressen som betalningen skall skickas till (t.ex. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + @@ -818,17 +845,17 @@ Adress:%4 Enter the message you want to sign here - + Click "Sign Message" to get signature - + Sign a message to prove you own this address - + @@ -837,35 +864,35 @@ Adress:%4 - Copy the currently selected address to the system clipboard - Kopiera den markerade adressen till systemets Urklipp + Copy the current signature to the system clipboard + &Copy to Clipboard - &amp; Kopiera till Urklipp + & Kopiera till Urklipp Error signing - + %1 is not a valid address. - + Private key for %1 is not available. - + Sign failed - + @@ -924,20 +951,12 @@ Adress:%4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> + + Wallet + - + <b>Recent transactions</b> <b>Nyligen genomförda transaktioner</b> @@ -967,47 +986,52 @@ p, li { white-space: pre-wrap; } QR Code - + - + Request Payment - + - + Amount: Belopp: - + BTC BTC - + Label: Etikett: - + Message: Meddelande: - + &Save As... &Spara som... - - Save Image... - + + Error encoding URI into QR Code. + - + + Save Image... + + + + PNG Images (*.png) - + @@ -1037,7 +1061,7 @@ p, li { white-space: pre-wrap; } Remove all transaction fields - + @@ -1280,7 +1304,7 @@ p, li { white-space: pre-wrap; } (%1 matures in %2 more blocks) - + @@ -1317,7 +1341,7 @@ p, li { white-space: pre-wrap; } Transaction ID: - + @@ -1341,54 +1365,58 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date Datum - + Type Typ - + Address Adress - + Amount Mängd - + Open for %n block(s) - + + + - + Open until %1 Öppet till %1 - + Offline (%1 confirmations) Offline (%1 bekräftelser) - + Unconfirmed (%1 of %2 confirmations) Obekräftad (%1 av %2 bekräftelser) - + Confirmed (%1 confirmations) Bekräftad (%1 bekräftelser) Mined balance will be available in %n more blocks - + + + @@ -1408,7 +1436,7 @@ p, li { white-space: pre-wrap; } Received from - + @@ -1453,7 +1481,7 @@ p, li { white-space: pre-wrap; } Amount removed from or added to balance. - + @@ -1542,7 +1570,7 @@ p, li { white-space: pre-wrap; } Copy amount - + @@ -1631,345 +1659,345 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version Bitcoin version - + Usage: Användning: - + Send command to -server or bitcoind Skicka kommando till -server eller bitcoind - + List commands Lista kommandon - + Get help for a command Få hjälp med ett kommando - + Options: Inställningar: - + Specify configuration file (default: bitcoin.conf) Ange konfigurationsfil (standard:bitcoin.conf) - + Specify pid file (default: bitcoind.pid) Ange pid fil (standard:bitcoind.pid) - + Generate coins Generera mynt - + Don't generate coins Generera ej mynt - + Start minimized Starta som minimerad - + Specify data directory Ange katalog för data - + Specify connection timeout (in milliseconds) Ange timeout för uppkoppling (i millisekunder) - + Connect through socks4 proxy Koppla upp genom socks4 proxy - + Allow DNS lookups for addnode and connect - + - + Listen for connections on <port> (default: 8333 or testnet: 18333) - + - + Maintain at most <n> connections to peers (default: 125) - + - + Add a node to connect to Lägg till en nod att koppla upp mot - + Connect only to the specified node Koppla enbart upp till den specifierade noden - + Don't accept connections from outside Acceptera ej anslutningar utifrån - - - Don't bootstrap list of peers using DNS - - - - - Threshold for disconnecting misbehaving peers (default: 100) - - - - - Number of seconds to keep misbehaving peers from reconnecting (default: 86400) - - - Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) - + Don't bootstrap list of peers using DNS + - Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) - + Threshold for disconnecting misbehaving peers (default: 100) + - Don't attempt to use UPnP to map the listening port - - - - - Attempt to use UPnP to map the listening port - - - - - Fee per kB to add to transactions you send - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) + - Accept command line and JSON-RPC commands - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) + - Run in the background as a daemon and accept commands - + Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) + + Don't attempt to use UPnP to map the listening port + + + + + Attempt to use UPnP to map the listening port + + + + + Fee per kB to add to transactions you send + + + + + Accept command line and JSON-RPC commands + + + + + Run in the background as a daemon and accept commands + + + + Use the test network Använd test nätverket - - - Output extra debugging information - - - - - Prepend debug output with timestamp - - - - - Send trace/debug info to console instead of debug.log file - - - - - Send trace/debug info to debugger - - - - - Username for JSON-RPC connections - - - Password for JSON-RPC connections - + Output extra debugging information + - Listen for JSON-RPC connections on <port> (default: 8332) - + Prepend debug output with timestamp + - Allow JSON-RPC connections from specified IP address - + Send trace/debug info to console instead of debug.log file + - Send commands to node running on <ip> (default: 127.0.0.1) - + Send trace/debug info to debugger + - Set key pool size to <n> (default: 100) - + Username for JSON-RPC connections + + Password for JSON-RPC connections + + + + + Listen for JSON-RPC connections on <port> (default: 8332) + + + + + Allow JSON-RPC connections from specified IP address + + + + + Send commands to node running on <ip> (default: 127.0.0.1) + + + + + Set key pool size to <n> (default: 100) + + + + Rescan the block chain for missing wallet transactions Sök i block-kedjan efter saknade wallet transaktioner - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) - + - + Use OpenSSL (https) for JSON-RPC connections - - - - - Server certificate file (default: server.cert) - - - - - Server private key (default: server.pem) - - - - - Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - + + Server certificate file (default: server.cert) + + + + + Server private key (default: server.pem) + + + + + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) + + + + This help message Det här hjälp medelandet - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. - + - + Loading addresses... Laddar adresser... - + Error loading addr.dat - + - + Error loading blkindex.dat - + - + Error loading wallet.dat: Wallet corrupted Fel vid inläsningen av wallet.dat: Kontofilen verkar skadad - + Error loading wallet.dat: Wallet requires newer version of Bitcoin Fel vid inläsningen av wallet.dat: Kontofilen kräver en senare version av Bitcoin - + Wallet needed to be rewritten: restart Bitcoin to complete Kontot behöver sparas om: Starta om Programmet - + Error loading wallet.dat Fel vid inläsning av kontofilen wallet.dat - + Loading block index... Laddar block index... - + Loading wallet... Laddar konto... - + Rescanning... Söker igen... - + Done loading Klar med laddning - + Invalid -proxy address Ogiltig proxyadress - + Invalid amount for -paytxfee=<amount> Ogiltigt belopp för -paytxfee=<belopp> - - - Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. - - - - - Error: CreateThread(StartNode) failed - - - - - Warning: Disk space is low - - - Unable to bind to port %d on this computer. Bitcoin is probably already running. - + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. + - Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. - + Error: CreateThread(StartNode) failed + - + + Warning: Disk space is low + + + + + Unable to bind to port %d on this computer. Bitcoin is probably already running. + + + + + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. + + + + beta beta - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_tr.ts b/src/qt/locale/bitcoin_tr.ts index 89e2102a25f..14747d5e062 100644 --- a/src/qt/locale/bitcoin_tr.ts +++ b/src/qt/locale/bitcoin_tr.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -136,17 +138,17 @@ Bu ürün OpenSSL projesi tarafından OpenSSL Toolkit (http://www.openssl.org/) AddressTableModel - + Label Etiket - + Address Adres - + (no label) (boş etiket) @@ -293,278 +295,288 @@ Cüzdanınızı şifrelemek istediğinizden emin misiniz? BitcoinGUI - + Bitcoin Wallet Bitcoin cüzdanı - - + + Synchronizing with network... Şebeke ile senkronizasyon... - + Block chain synchronization in progress Blok zinciri senkronizasyonu sürüyor - + &Overview &Genel bakış - + Show general overview of wallet Cüzdana genel bakışı gösterir - + &Transactions &Muameleler - + Browse transaction history Muamele tarihçesini tara - + &Address Book &Adres defteri - + Edit the list of stored addresses and labels Saklanan adres ve etiket listesini düzenler - + &Receive coins Para &al - + Show the list of addresses for receiving payments Ödeme alma adreslerinin listesini gösterir - + &Send coins Para &yolla - + Send coins to a bitcoin address Bir bitcoin adresine para (bitcoin) yollar - + Sign &message &Mesaj imzala - + Prove you control an address Bu adresin kontrolünüz altında olduğunu ispatlayın - + E&xit &Çık - + Quit application Uygulamadan çıkar - + &About %1 %1 &hakkında - + Show information about Bitcoin Bitcoin hakkında bilgi gösterir - + About &Qt &Qt hakkında - + Show information about Qt Qt hakkında bilgi görüntüler - + &Options... &Seçenekler... - + Modify configuration options for bitcoin Bitcoin seçeneklerinin yapılandırmasını değiştirir - + Open &Bitcoin &Bitcoin'i aç - + Show the Bitcoin window Bitcoin penceresini gösterir - + &Export... &Dışa aktar... - + Export the data in the current tab to a file Güncel sekmedeki verileri bir dosyaya aktar - + &Encrypt Wallet Cüzdanı &şifrele - + Encrypt or decrypt wallet Cüzdanı şifreler ya da şifreyi açar - + &Backup Wallet Cüzdanı &yedekle - + Backup wallet to another location Cüzdanı diğer bir konumda yedekle - + &Change Passphrase &Parolayı değiştir - + Change the passphrase used for wallet encryption Cüzdan şifrelemesi için kullanılan parolayı değiştirir - + &File &Dosya - + &Settings &Ayarlar - + &Help &Yardım - + Tabs toolbar Sekme araç çubuğu - + Actions toolbar Faaliyet araç çubuğu - + [testnet] [testnet] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - Bitcoin şebekesine %n etkin bağlantı + + Bitcoin şebekesine %n etkin bağlantı + - + Downloaded %1 of %2 blocks of transaction history. Muamele tarihçesinin %2 sayıda blokundan %1 adet blok indirildi. - + Downloaded %1 blocks of transaction history. Muamele tarihçesinin %1 adet bloku indirildi. - + %n second(s) ago - %n saniye önce + + %n saniye önce + - + %n minute(s) ago - %n dakika önce + + %n dakika önce + - + %n hour(s) ago - %n saat önce + + %n saat önce + - + %n day(s) ago - %n gün önce + + %n gün önce + - + Up to date Güncel - + Catching up... Aralık kapatılıyor... - + Last received block was generated %1. Son alınan blok şu vakit oluşturulmuştu: %1. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? Bu muamele boyut sınırlarını aşmıştır. Gene de %1 ücret ödeyerek gönderebilirsiniz, ki bu ücret muamelenizi işleyen ve şebekeye yardım eden düğümlere ödenecektir. Ücreti ödemek istiyor musunuz? - + Sending... Yollanıyor... - + Sent transaction Muamele yollandı - + Incoming transaction Gelen muamele - + Date: %1 Amount: %2 Type: %3 @@ -577,35 +589,40 @@ Adres: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> Cüzdan <b>şifrelenmiştir</b> ve şu anda <b>kilidi açılmıştır</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> Cüzdan <b>şifrelenmiştir</b> ve şu anda <b>kilitlidir</b> - + Backup Wallet Cüzdanı yedekle - + Wallet Data (*.dat) Cüzdan verileri (*.dat) - + Backup Failed Yedekleme başarısız oldu - + There was an error trying to save the wallet data to the new location. Cüzdan verilerinin başka bir konumda kaydedilmesi sırasında bir hata meydana geldi. + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + + DisplayOptionsPage @@ -621,8 +638,13 @@ Adres: %4 - Display addresses in transaction list - Muamele listesinde adresleri göster + &Display addresses in transaction list + &Muamele listesinde adresleri göster + + + + Whether to show Bitcoin addresses in the transaction list + @@ -795,8 +817,8 @@ Adres: %4 - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - Ödemenin gönderileceği adres (mesela 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + @@ -840,8 +862,8 @@ Adres: %4 - Copy the currently selected address to the system clipboard - Şu anda seçili olan adresi panoya kopyalar + Copy the current signature to the system clipboard + @@ -927,20 +949,12 @@ Adres: %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Cüzdan</span></p></body></html> + + Wallet + Cüzdan - + <b>Recent transactions</b> <b>Son muameleler</b> @@ -973,42 +987,47 @@ p, li { white-space: pre-wrap; } QR Kod - + Request Payment Ödeme isteği - + Amount: Miktar: - + BTC BTC - + Label: Etiket: - + Message: Mesaj: - + &Save As... &Farklı kaydet... - + + Error encoding URI into QR Code. + + + + Save Image... Resmi kaydet... - + PNG Images (*.png) PNG resimleri (*.png) @@ -1344,54 +1363,58 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date Tarih - + Type Tür - + Address Adres - + Amount Miktar - + Open for %n block(s) - %n blok için açık + + %n blok için açık + - + Open until %1 %1 değerine dek açık - + Offline (%1 confirmations) Çevrimdışı (%1 doğrulama) - + Unconfirmed (%1 of %2 confirmations) Doğrulanmadı (%1 (toplam %2 üzerinden) doğrulama) - + Confirmed (%1 confirmations) Doğrulandı (%1 doğrulama) Mined balance will be available in %n more blocks - Madenden çıkarılan bakiye %n ek blok sonrasında kullanılabilecektir + + Madenden çıkarılan bakiye %n ek blok sonrasında kullanılabilecektir + @@ -1634,346 +1657,346 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version Bitcoin sürümü - + Usage: Kullanım: - + Send command to -server or bitcoind -server ya da bitcoind'ye komut gönder - + List commands Komutları listele - + Get help for a command Bir komut için yardım al - + Options: Seçenekler: - + Specify configuration file (default: bitcoin.conf) Yapılandırma dosyası belirt (varsayılan: bitcoin.conf) - + Specify pid file (default: bitcoind.pid) Pid dosyası belirt (varsayılan: bitcoind.pid) - + Generate coins Madenî para (coin) oluştur - + Don't generate coins Para oluşturma - + Start minimized Küçültülmüş olarak başla - + Specify data directory Veri dizinini belirt - + Specify connection timeout (in milliseconds) Bağlantı zaman aşım süresini milisaniye olarak belirt - + Connect through socks4 proxy Socks4 vekil sunucusu vasıtasıyla bağlan - + Allow DNS lookups for addnode and connect Düğüm ekleme ve bağlantı için DNS aramalarına izin ver - + Listen for connections on <port> (default: 8333 or testnet: 18333) Bağlantılar için dinlenecek <port> (varsayılan: 8333 ya da testnet: 18333) - + Maintain at most <n> connections to peers (default: 125) Eşler ile en çok <n> adet bağlantı kur (varsayılan: 125) - + Add a node to connect to Bağlanılacak düğüm ekle - + Connect only to the specified node Sadece belirtilen düğüme bağlan - + Don't accept connections from outside Dışarıdan bağlantıları reddet - + Don't bootstrap list of peers using DNS Eş listesini DNS kullanarak başlatma - + Threshold for disconnecting misbehaving peers (default: 100) Aksaklık gösteren eşlerle bağlantıyı kesme sınırı (varsayılan: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Aksaklık gösteren eşlerle yeni bağlantıları engelleme süresi, saniye olarak (varsayılan: 86400) - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) Her bağlantı için alım tamponu, <n>*1000 bayt (varsayılan: 10000) - + Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) Her bağlantı için yollama tamponu, <n>*1000 bayt (varsayılan: 10000) - + Don't attempt to use UPnP to map the listening port Dinlenilecek portu haritalamak için UPnP kullanma - + Attempt to use UPnP to map the listening port Dinlenilecek portu haritalamak için UPnP kullan - + Fee per kB to add to transactions you send Yolladığınız muameleler için eklenecek kB başı ücret - + Accept command line and JSON-RPC commands Konut satırı ve JSON-RPC komutlarını kabul et - + Run in the background as a daemon and accept commands Arka planda daemon (servis) olarak çalış ve komutları kabul et - + Use the test network Deneme şebekesini kullan - + Output extra debugging information İlâve hata ayıklama verisi çıkar - + Prepend debug output with timestamp Hata ayıklama çıktısına tarih ön ekleri ilâve et - + Send trace/debug info to console instead of debug.log file Trace/hata ayıklama verilerini debug.log dosyası yerine konsola gönder - + Send trace/debug info to debugger Hata ayıklayıcıya -debugger- trace/hata ayıklama verileri gönder - + Username for JSON-RPC connections JSON-RPC bağlantıları için kullanıcı ismi - + Password for JSON-RPC connections JSON-RPC bağlantıları için parola - + Listen for JSON-RPC connections on <port> (default: 8332) JSON-RPC bağlantıları için dinlenecek <port> (varsayılan: 8332) - + Allow JSON-RPC connections from specified IP address Belirtilen İP adresinden JSON-RPC bağlantılarını kabul et - + Send commands to node running on <ip> (default: 127.0.0.1) Şu <ip> adresinde (varsayılan: 127.0.0.1) çalışan düğüme komut yolla - + Set key pool size to <n> (default: 100) Anahtar alan boyutunu <n> değerine ayarla (varsayılan: 100) - + Rescan the block chain for missing wallet transactions Blok zincirini eksik cüzdan muameleleri için tekrar tara - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) SSL seçenekleri: (SSL kurulum bilgisi için Bitcoin vikisine bakınız) - + Use OpenSSL (https) for JSON-RPC connections JSON-RPC bağlantıları için OpenSSL (https) kullan - + Server certificate file (default: server.cert) Sunucu sertifika dosyası (varsayılan: server.cert) - + Server private key (default: server.pem) Sunucu özel anahtarı (varsayılan: server.pem) - + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) Kabul edilebilir şifreler (varsayılan: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - + This help message Bu yardım mesajı - + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. %s veri dizininde kilit elde edilemedi. Bitcoin muhtemelen hâlihazırda çalışmaktadır. - + Loading addresses... Adresler yükleniyor... - + Error loading addr.dat addr.dat dosyasının yüklenmesinde hata oluştu - + Error loading blkindex.dat blkindex.dat dosyasının yüklenmesinde hata oluştu - + Error loading wallet.dat: Wallet corrupted wallet.dat dosyasının yüklenmesinde hata oluştu: bozuk cüzdan - + Error loading wallet.dat: Wallet requires newer version of Bitcoin wallet.dat dosyasının yüklenmesinde hata oluştu: cüzdanın daha yeni bir Bitcoin sürümüne ihtiyacı var - + Wallet needed to be rewritten: restart Bitcoin to complete Cüzdanın tekrar yazılması gerekiyordu: işlemi tamamlamak için Bitcoin'i yeniden başlatınız - + Error loading wallet.dat wallet.dat dosyasının yüklenmesinde hata oluştu - + Loading block index... Blok indeksi yükleniyor... - + Loading wallet... Cüzdan yükleniyor... - + Rescanning... Yeniden tarama... - + Done loading Yükleme tamamlandı - + Invalid -proxy address Geçersiz -proxy adresi - + Invalid amount for -paytxfee=<amount> -paytxfee=<miktar> için geçersiz miktar - + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. Uyarı: -paytxfee çok yüksek bir değere ayarlanmış. Bu, muamele gönderirseniz ödeyeceğiniz muamele ücretidir. - + Error: CreateThread(StartNode) failed Hata: CreateThread(StartNode) başarısız oldu - + Warning: Disk space is low Uyarı: Disk alanı düşük - + Unable to bind to port %d on this computer. Bitcoin is probably already running. %d sayılı porta bu bilgisayarda bağlanılamadı. Bitcoin muhtemelen hâlihazırda çalışmaktadır. - + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. Uyarı: Lütfen bilgisayarınızın tarih ve saatinin doğru olup olmadığını kontrol ediniz. Saatiniz doğru değilse Bitcoin gerektiği gibi çalışamaz. - + beta beta - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_uk.ts b/src/qt/locale/bitcoin_uk.ts index 006c2259b26..d27087c3aa5 100644 --- a/src/qt/locale/bitcoin_uk.ts +++ b/src/qt/locale/bitcoin_uk.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -67,11 +69,21 @@ This product includes software developed by the OpenSSL Project for use in the O &Copy to Clipboard &Копіювати + + + Delete the currently selected address from the list. Only sending addresses can be deleted. + Видалити виділену адресу зі списку. Лише адреси з адресної книги можуть бути видалені. + Show &QR Code Показати QR-&Код + + + &Delete + &Видалити + Sign a message to prove you own this address @@ -82,16 +94,6 @@ This product includes software developed by the OpenSSL Project for use in the O &Sign Message &Підписати повідомлення - - - Delete the currently selected address from the list. Only sending addresses can be deleted. - Видалити виділену адресу зі списку. Лише адреси з адресної книги можуть бути видалені. - - - - &Delete - &Видалити - Copy address @@ -136,17 +138,17 @@ This product includes software developed by the OpenSSL Project for use in the O AddressTableModel - + Label Назва - + Address Адреса - + (no label) (немає назви) @@ -237,11 +239,6 @@ Are you sure you wish to encrypt your wallet? Wallet encrypted Гаманець зашифровано - - - Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - Біткоін-клієнт буде закрито для завершення процесу шифрування. Пам’ятайте, що шифрування гаманця не може повністю захистити ваші біткоіни від кражі, у випадку якщо ваш комп’ютер буде інфіковано шкідливими програмами. - @@ -261,6 +258,11 @@ Are you sure you wish to encrypt your wallet? Wallet encryption failed due to an internal error. Your wallet was not encrypted. Виникла помилка під час шифрування гаманця. Ваш гаманець не було зашифровано. + + + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. + Біткоін-клієнт буде закрито для завершення процесу шифрування. Пам’ятайте, що шифрування гаманця не може повністю захистити ваші біткоіни від кражі, у випадку якщо ваш комп’ютер буде інфіковано шкідливими програмами. + @@ -293,278 +295,298 @@ Are you sure you wish to encrypt your wallet? BitcoinGUI - + Bitcoin Wallet Гаманець - - + + Synchronizing with network... Синхронізація з мережею... - + Block chain synchronization in progress Відбувається синхронізація ланцюжка блоків... - + &Overview &Огляд - + Show general overview of wallet Показати загальний огляд гаманця - + &Transactions Пе&реклади - + Browse transaction history Переглянути історію переказів - + &Address Book &Адресна книга - + Edit the list of stored addresses and labels Редагувати список збережених адрес та міток - + &Receive coins О&тримати - + Show the list of addresses for receiving payments Показати список адрес для отримання платежів - + &Send coins В&ідправити - + Send coins to a bitcoin address Відправити монети на вказану адресу - + Sign &message &Підписати повідомлення - + Prove you control an address Доведіть, що це ваша адреса - + E&xit &Вихід - + Quit application Вийти - + &About %1 П&ро %1 - + Show information about Bitcoin Показати інформацію про Bitcoin - - About &Qt - &Про Qt - - - - Show information about Qt - Показати інформацію про Qt - - - + &Options... &Параметри... - + Modify configuration options for bitcoin Редагувати параметри - + Open &Bitcoin Показати &гаманець - + Show the Bitcoin window Показати вікно гаманця - + &Export... &Експорт... - - Export the data in the current tab to a file - - - - + &Encrypt Wallet &Шифрування гаманця - + Encrypt or decrypt wallet Зашифрувати чи розшифрувати гаманець - - &Backup Wallet - - - - - Backup wallet to another location - - - - + &Change Passphrase Змінити парол&ь - + Change the passphrase used for wallet encryption Змінити пароль, який використовується для шифрування гаманця - + + About &Qt + &Про Qt + + + + Show information about Qt + Показати інформацію про Qt + + + + Export the data in the current tab to a file + + + + + &Backup Wallet + &Backup гаманця + + + + Backup wallet to another location + + + + &File &Файл - + &Settings &Налаштування - + &Help &Довідка - + Tabs toolbar Панель вкладок - + Actions toolbar Панель дій - + [testnet] [тестова мережа] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - %n активне з’єднання з мережею%n активні з’єднання з мережею%n активних з’єднань з мережею + + %n активне з’єднання з мережею + %n активні з’єднання з мережею + %n активних з’єднань з мережею + - + Downloaded %1 of %2 blocks of transaction history. Завантажено %1 з %2 блоків історії переказів. - + Downloaded %1 blocks of transaction history. Завантажено %1 блоків історії транзакцій. - + %n second(s) ago - %n секунду тому%n секунди тому%n секунд тому + + %n секунду тому + %n секунди тому + %n секунд тому + - + %n minute(s) ago - %n хвилину тому%n хвилини тому%n хвилин тому + + %n хвилину тому + %n хвилини тому + %n хвилин тому + - + %n hour(s) ago - %n годину тому%n години тому%n годин тому + + %n годину тому + %n години тому + %n годин тому + - + %n day(s) ago - %n день тому%n дня тому%n днів тому + + %n день тому + %n дня тому + %n днів тому + - + Up to date Синхронізовано - + Catching up... Синхронізується... - + Last received block was generated %1. Останній отриманий блок було згенеровано %1. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? Цей переказ перевищує максимально допустимий розмір. Проте ви можете здійснити її, додавши комісію в %1, яка відправиться тим вузлам що оброблять ваш переказ, та допоможе підтримати мережу. Ви хочете додати комісію? - + Sending... Відправлення... - + Sent transaction Надіслані перекази - + Incoming transaction Отримані перекази - + Date: %1 Amount: %2 Type: %3 @@ -577,34 +599,39 @@ Address: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> <b>Зашифрований</b> гаманець <b>розблоковано</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> <b>Зашифрований</b> гаманець <b>заблоковано</b> - + Backup Wallet - + - + Wallet Data (*.dat) - + - + Backup Failed - + - + There was an error trying to save the wallet data to the new location. - + + + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + @@ -621,8 +648,13 @@ Address: %4 - Display addresses in transaction list - Відображати адресу в списку переказів + &Display addresses in transaction list + &Відображати адресу в списку переказів + + + + Whether to show Bitcoin addresses in the transaction list + @@ -791,12 +823,12 @@ Address: %4 You can sign messages with your addresses to prove you own them. Be careful not to sign anything vague, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - + - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - Адреса для отримувача платежу (наприклад, 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + @@ -840,8 +872,8 @@ Address: %4 - Copy the currently selected address to the system clipboard - Копіювати виділену адресу в буфер обміну + Copy the current signature to the system clipboard + @@ -927,20 +959,12 @@ Address: %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Гаманець</span></p></body></html> + + Wallet + Гаманець - + <b>Recent transactions</b> <b>Недавні перекази</b> @@ -973,44 +997,49 @@ p, li { white-space: pre-wrap; } QR-Код - + Request Payment Запросити Платіж - + Amount: Кількість: - + BTC BTC - + Label: Мітка: - + Message: Повідомлення: - + &Save As... &Зберегти як... - - Save Image... - + + Error encoding URI into QR Code. + - + + Save Image... + + + + PNG Images (*.png) - + @@ -1037,16 +1066,16 @@ p, li { white-space: pre-wrap; } &Add recipient... Дод&ати одержувача... - - - Remove all transaction fields - Видалити всі поля транзакції - Clear all Очистити все + + + Remove all transaction fields + Видалити всі поля транзакції + Balance: @@ -1344,54 +1373,62 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date Дата - + Type Тип - + Address Адреса - + Amount Кількість - + Open for %n block(s) - Відкрити для %n блокуВідкрити для %n блоківВідкрити для %n блоків + + Відкрити для %n блоку + Відкрити для %n блоків + Відкрити для %n блоків + - + Open until %1 Відкрити до %1 - + Offline (%1 confirmations) Поза інтернетом (%1 підтверджень) - + Unconfirmed (%1 of %2 confirmations) Непідтверджено (%1 із %2 підтверджень) - + Confirmed (%1 confirmations) Підтверджено (%1 підтверджень) Mined balance will be available in %n more blocks - Добутими монетами можна буде скористатись через %n блокДобутими монетами можна буде скористатись через %n блокиДобутими монетами можна буде скористатись через %n блоків + + Добутими монетами можна буде скористатись через %n блок + Добутими монетами можна буде скористатись через %n блоки + Добутими монетами можна буде скористатись через %n блоків + @@ -1634,245 +1671,245 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version Версія - + Usage: Вкористання: - + Send command to -server or bitcoind Відправити команду серверу -server чи демону - + List commands Список команд - + Get help for a command Отримати довідку по команді - + Options: Параметри: - + Specify configuration file (default: bitcoin.conf) Вкажіть файл конфігурації (за промовчуванням: bitcoin.conf) - + Specify pid file (default: bitcoind.pid) Вкажіть pid-файл (за промовчуванням: bitcoind.pid) - + Generate coins Генерувати монети - + Don't generate coins Не генерувати монети - + Start minimized Запускати згорнутим - + Specify data directory Вкажіть робочий каталог - + Specify connection timeout (in milliseconds) Вкажіть таймаут з’єднання (в мілісекундах) - + Connect through socks4 proxy Підключитись через SOCKS4-проксі - + Allow DNS lookups for addnode and connect Дозволити пошук в DNS для команд «addnode» і «connect» - + Listen for connections on <port> (default: 8333 or testnet: 18333) Чекати на з'єднання на порту (по замовченню 8333 або тестова мережа 18333) - + Maintain at most <n> connections to peers (default: 125) Підтримувати не більше <n> зв'язків з колегами (за замовчуванням: 125) - + Add a node to connect to Додати вузол для підключення - + Connect only to the specified node Підключитись лише до вказаного вузла - + Don't accept connections from outside Не приймати підключення ззовні - + Don't bootstrap list of peers using DNS Не завантажувати список пірів за допомогою DNS - + Threshold for disconnecting misbehaving peers (default: 100) Поріг відключення неправильно підєднаних пірів (за замовчуванням: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Максимальній розмір вхідного буферу на одне з'єднання (за замовчуванням 86400) - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) Максимальоий буфер , <n> * 1000 байт (за умовчанням: 10000) - + Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) Максимальній розмір виіхідного буферу на одне з'єднання (за замовчуванням 10000) - + Don't attempt to use UPnP to map the listening port Не намагатись використовувати UPnP для відображення порту що прослуховується на роутері - + Attempt to use UPnP to map the listening port Намагатись використовувати UPnP для відображення порту що прослуховується на роутері - + Fee per kB to add to transactions you send Комісія за Кб - + Accept command line and JSON-RPC commands Приймати команди із командного рядка та команди JSON-RPC - + Run in the background as a daemon and accept commands Запустити в фоновому режимі (як демон) та приймати команди - + Use the test network Використовувати тестову мережу - + Output extra debugging information Виводити більше налагоджувальної інформації - + Prepend debug output with timestamp Доповнювати налагоджувальний вивід відміткою часу - + Send trace/debug info to console instead of debug.log file Відсилаті налагоджувальну інформацію на консоль, а не у файл debug.log - + Send trace/debug info to debugger Відсилаті налагоджувальну інформацію до налагоджувача - + Username for JSON-RPC connections Ім’я користувача для JSON-RPC-з’єднань - + Password for JSON-RPC connections Пароль для JSON-RPC-з’єднань - + Listen for JSON-RPC connections on <port> (default: 8332) Прослуховувати <port> для JSON-RPC-з’єднань (за промовчуванням: 8332) - + Allow JSON-RPC connections from specified IP address Дозволити JSON-RPC-з’єднання з вказаної IP-адреси - + Send commands to node running on <ip> (default: 127.0.0.1) Відправляти команди на вузол, запущений на <ip> (за промовчуванням: 127.0.0.1) - + Set key pool size to <n> (default: 100) Встановити розмір пулу ключів <n> (за промовчуванням: 100) - + Rescan the block chain for missing wallet transactions Пересканувати ланцюжок блоків, в пошуку втрачених переказів - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -1880,134 +1917,134 @@ SSL options: (see the Bitcoin Wiki for SSL setup instructions) - + Use OpenSSL (https) for JSON-RPC connections Використовувати OpenSSL (https) для JSON-RPC-з’єднань - + Server certificate file (default: server.cert) Сертифікату сервера (за промовчуванням: server.cert) - + Server private key (default: server.pem) Закритий ключ сервера (за промовчуванням: server.pem) - + + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. + Неможливо встановити блокування на робочий каталог %s. Можливо, гаманець вже запущено. + + + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) Допустимі шифри (за промовчуванням: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - - This help message - Дана довідка - - - - - Cannot obtain a lock on data directory %s. Bitcoin is probably already running. - Неможливо встановити блокування на робочий каталог %s. Можливо, гаманець вже запущено. - - - + Loading addresses... Завантаження адрес... - Error loading addr.dat - Помилка при завантаженні addr.dat - - - - Error loading blkindex.dat - Помилка при завантаженні blkindex.dat - - - - Error loading wallet.dat: Wallet corrupted - Помилка при завантаженні wallet.dat: Гаманець пошкоджено - - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin - Помилка при завантаженні wallet.dat: Гаманець потребує новішої версії Біткоін-клієнта + This help message + Дана довідка + - Wallet needed to be rewritten: restart Bitcoin to complete - Потрібно перезаписати гаманець: перезапустіть Біткоін-клієнт для завершення - - - - Error loading wallet.dat - Помилка при завантаженні wallet.dat - - - Loading block index... Завантаження індексу блоків... - + Loading wallet... Завантаження гаманця... - + Rescanning... Сканування... + + + Error loading addr.dat + Помилка при завантаженні addr.dat + + + + Error loading blkindex.dat + Помилка при завантаженні blkindex.dat + + Error loading wallet.dat: Wallet corrupted + Помилка при завантаженні wallet.dat: Гаманець пошкоджено + + + Done loading Завантаження завершене + Error loading wallet.dat: Wallet requires newer version of Bitcoin + Помилка при завантаженні wallet.dat: Гаманець потребує новішої версії Біткоін-клієнта + + + Invalid -proxy address Помилка в адресі проксі-сервера + Wallet needed to be rewritten: restart Bitcoin to complete + Потрібно перезаписати гаманець: перезапустіть Біткоін-клієнт для завершення + + + Invalid amount for -paytxfee=<amount> Помилка у величині комісії + Error loading wallet.dat + Помилка при завантаженні wallet.dat + + + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. Увага: встановлено занадто велику комісію (-paytxfee). Комісія зніматиметься кожен раз коли ви проводитимете перекази. - + Error: CreateThread(StartNode) failed Помилка: CreateThread(StartNode) дала збій - + Warning: Disk space is low Увага: На диску мало вільного місця - + Unable to bind to port %d on this computer. Bitcoin is probably already running. Неможливо прив’язати до порту %d на цьому комп’ютері. Молживо гаманець вже запущено. - + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. Увага: будь ласка, перевірте дату і час на свому комп’ютері. Якщо ваш годинник йде неправильно, Bitcoin може працювати некоректно. - + beta бета - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_zh_CN.ts b/src/qt/locale/bitcoin_zh_CN.ts index d059aa0351c..bed8c3603fc 100644 --- a/src/qt/locale/bitcoin_zh_CN.ts +++ b/src/qt/locale/bitcoin_zh_CN.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -67,11 +69,21 @@ This product includes software developed by the OpenSSL Project for use in the O &Copy to Clipboard &复制到剪贴板 + + + Delete the currently selected address from the list. Only sending addresses can be deleted. + 从列表中删除当前选中地址。只有发送地址可以被删除。 + Show &QR Code 显示二维码 + + + &Delete + &删除 + Sign a message to prove you own this address @@ -82,16 +94,6 @@ This product includes software developed by the OpenSSL Project for use in the O &Sign Message &发送签名消息 - - - Delete the currently selected address from the list. Only sending addresses can be deleted. - 从列表中删除当前选中地址。只有发送地址可以被删除。 - - - - &Delete - &删除 - Copy address @@ -136,17 +138,17 @@ This product includes software developed by the OpenSSL Project for use in the O AddressTableModel - + Label 标签 - + Address 地址 - + (no label) (没有标签) @@ -237,11 +239,6 @@ Are you sure you wish to encrypt your wallet? Wallet encrypted 钱包已加密 - - - Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - 将关闭软件以完成加密过程。 请您谨记:钱包加密并不是万能的,电脑中毒,您的比特币还是有可能丢失。 - @@ -261,6 +258,11 @@ Are you sure you wish to encrypt your wallet? Wallet encryption failed due to an internal error. Your wallet was not encrypted. 由于一个本地错误,加密钱包操作已经失败。您的钱包没有被加密。 + + + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. + 将关闭软件以完成加密过程。 请您谨记:钱包加密并不是万能的,电脑中毒,您的比特币还是有可能丢失。 + @@ -293,278 +295,288 @@ Are you sure you wish to encrypt your wallet? BitcoinGUI - + Bitcoin Wallet 比特币钱包 - - + + Synchronizing with network... 正在与网络同步... - + Block chain synchronization in progress 正在同步区域锁链 - + &Overview &概况 - + Show general overview of wallet 显示钱包概况 - + &Transactions &交易 - + Browse transaction history 查看交易历史 - + &Address Book &地址薄 - + Edit the list of stored addresses and labels 修改存储的地址和标签列表 - + &Receive coins &接收货币 - + Show the list of addresses for receiving payments 显示接收支付的地址列表 - + &Send coins &发送货币 - + Send coins to a bitcoin address 将货币发送到一个比特币地址 - + Sign &message 发送签名 &消息 - + Prove you control an address 证明您拥有某个比特币地址 - + E&xit 退出 - + Quit application 退出程序 - + &About %1 &关于 %1 - + Show information about Bitcoin 显示比特币的相关信息 - - About &Qt - 关于 &Qt - - - - Show information about Qt - 显示Qt相关信息 - - - + &Options... &选项... - + Modify configuration options for bitcoin 修改比特币配置选项 - + Open &Bitcoin 打开 &比特币 - + Show the Bitcoin window 显示比特币窗口 - + &Export... &导出... - - Export the data in the current tab to a file - 导出当前数据到文件 - - - + &Encrypt Wallet &加密钱包 - + Encrypt or decrypt wallet 加密或解密钱包 - - &Backup Wallet - &备份钱包 - - - - Backup wallet to another location - 备份钱包到其它文件夹 - - - + &Change Passphrase &修改口令 - + Change the passphrase used for wallet encryption 修改钱包加密口令 - + + About &Qt + 关于 &Qt + + + + Show information about Qt + 显示Qt相关信息 + + + + Export the data in the current tab to a file + 导出当前数据到文件 + + + + &Backup Wallet + &备份钱包 + + + + Backup wallet to another location + 备份钱包到其它文件夹 + + + &File &文件 - + &Settings &设置 - + &Help &帮助 - + Tabs toolbar 分页工具栏 - + Actions toolbar 动作工具栏 - + [testnet] [testnet] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - %n 个到比特币网络的活动连接 + + %n 个到比特币网络的活动连接 + - + Downloaded %1 of %2 blocks of transaction history. %1 / %2 个交易历史的区块已下载 - + Downloaded %1 blocks of transaction history. %1 个交易历史的区块已下载 - + %n second(s) ago - %n 秒前 + + %n 秒前 + - + %n minute(s) ago - %n 分种前 + + %n 分种前 + - + %n hour(s) ago - %n 小时前 + + %n 小时前 + - + %n day(s) ago - %n 天前 + + %n 天前 + - + Up to date 最新状态 - + Catching up... 更新中... - + Last received block was generated %1. 最新收到的区块产生于 %1。 - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? 该笔交易的数据量超限.您可以选择支付 %1 交易费, 交易费将支付给处理该笔交易的网络节点,有助于维持比特币网络的运行. 您愿意支付交易费用吗? - + Sending... 发送中 - + Sent transaction 已发送交易 - + Incoming transaction 流入交易 - + Date: %1 Amount: %2 Type: %3 @@ -577,35 +589,40 @@ Address: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> 钱包已被<b>加密</b>,当前为<b>解锁</b>状态 - + Wallet is <b>encrypted</b> and currently <b>locked</b> 钱包已被<b>加密</b>,当前为<b>锁定</b>状态 - + Backup Wallet 备份钱包 - + Wallet Data (*.dat) 钱包文件(*.dat) - + Backup Failed 备份失败 - + There was an error trying to save the wallet data to the new location. 备份钱包到其它文件夹失败. + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + + DisplayOptionsPage @@ -621,8 +638,13 @@ Address: %4 - Display addresses in transaction list - 在交易列表中显示地址 + &Display addresses in transaction list + &在交易列表中显示地址 + + + + Whether to show Bitcoin addresses in the transaction list + @@ -795,8 +817,8 @@ Address: %4 - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - 付款地址 (例如: 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + @@ -840,8 +862,8 @@ Address: %4 - Copy the currently selected address to the system clipboard - 复制当前选中地址到系统剪贴板 + Copy the current signature to the system clipboard + @@ -927,20 +949,12 @@ Address: %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">钱包</span></p></body></html> + + Wallet + 钱包 - + <b>Recent transactions</b> <b>当前交易</b> @@ -973,42 +987,47 @@ p, li { white-space: pre-wrap; } 二维码 - + Request Payment 请求付款 - + Amount: 金额: - + BTC BTC - + Label: 标签: - + Message: 消息: - + &Save As... &另存为 - + + Error encoding URI into QR Code. + + + + Save Image... 保存图像... - + PNG Images (*.png) PNG图像文件(*.png) @@ -1037,16 +1056,16 @@ p, li { white-space: pre-wrap; } &Add recipient... &添加接收者... - - - Remove all transaction fields - 移除所有交易项 - Clear all 清除全部 + + + Remove all transaction fields + 移除所有交易项 + Balance: @@ -1344,54 +1363,58 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date 日期 - + Type 类型 - + Address 地址 - + Amount 数量 - + Open for %n block(s) - 开启 %n 个数据块 + + 开启 %n 个数据块 + - + Open until %1 至 %1 个数据块时开启 - + Offline (%1 confirmations) 离线 (%1 个确认项) - + Unconfirmed (%1 of %2 confirmations) 未确认 (%1 / %2 条确认信息) - + Confirmed (%1 confirmations) 已确认 (%1 条确认信息) Mined balance will be available in %n more blocks - 挖矿所得将在 %n 个数据块之后可用 + + 挖矿所得将在 %n 个数据块之后可用 + @@ -1634,245 +1657,245 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version 比特币版本 - + Usage: 使用: - + Send command to -server or bitcoind 发送命令到服务器或者 bitcoind - + List commands 列出命令 - + Get help for a command 获得某条命令的帮助 - + Options: 选项: - + Specify configuration file (default: bitcoin.conf) 指定配置文件 (默认为 bitcoin.conf) - + Specify pid file (default: bitcoind.pid) 指定 pid 文件 (默认为 bitcoind.pid) - + Generate coins 生成货币 - + Don't generate coins 不要生成货币 - + Start minimized 启动时最小化 - + Specify data directory 指定数据目录 - + Specify connection timeout (in milliseconds) 指定连接超时时间 (微秒) - + Connect through socks4 proxy 通过 socks4 代理连接 - + Allow DNS lookups for addnode and connect 连接节点时允许DNS查找 - + Listen for connections on <port> (default: 8333 or testnet: 18333) 监听端口连接 <port> (缺省: 8333 or testnet: 18333) - + Maintain at most <n> connections to peers (default: 125) 最大连接数 <n> (缺省: 125) - + Add a node to connect to 连接到指定节点 - + Connect only to the specified node 只连接到指定节点 - + Don't accept connections from outside 禁止接收外部连接 - + Don't bootstrap list of peers using DNS 不要用DNS启动 - + Threshold for disconnecting misbehaving peers (default: 100) Threshold for disconnecting misbehaving peers (缺省: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Number of seconds to keep misbehaving peers from reconnecting (缺省: 86400) - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) Maximum per-connection receive buffer, <n>*1000 bytes (缺省: 10000) - + Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) Maximum per-connection send buffer, <n>*1000 bytes (缺省: 10000) - + Don't attempt to use UPnP to map the listening port 禁止使用 UPnP 映射监听端口 - + Attempt to use UPnP to map the listening port 尝试使用 UPnP 映射监听端口 - + Fee per kB to add to transactions you send 为付款交易支付比特币(每kb) - + Accept command line and JSON-RPC commands 接受命令行和 JSON-RPC 命令 - + Run in the background as a daemon and accept commands 在后台运行并接受命令 - + Use the test network 使用测试网络 - + Output extra debugging information 输出调试信息 - + Prepend debug output with timestamp 为调试输出信息添加时间戳 - + Send trace/debug info to console instead of debug.log file 跟踪/调试信息输出到控制台,不输出到debug.log文件 - + Send trace/debug info to debugger 跟踪/调试信息输出到 调试器debugger - + Username for JSON-RPC connections JSON-RPC连接用户名 - + Password for JSON-RPC connections JSON-RPC连接密码 - + Listen for JSON-RPC connections on <port> (default: 8332) JSON-RPC连接监听<端口> (默认为 8332) - + Allow JSON-RPC connections from specified IP address 允许从指定IP接受到的JSON-RPC连接 - + Send commands to node running on <ip> (default: 127.0.0.1) 向IP地址为 <ip> 的节点发送指令 (缺省: 127.0.0.1) - + Set key pool size to <n> (default: 100) 设置密钥池大小为 <n> (缺省: 100) - + Rescan the block chain for missing wallet transactions 重新扫描数据链以查找遗漏的交易 - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -1880,133 +1903,133 @@ SSL 选项: (SSL 安装教程具体见比特币维基百科) - + Use OpenSSL (https) for JSON-RPC connections 为 JSON-RPC 连接使用 OpenSSL (https)连接 - + Server certificate file (default: server.cert) 服务器证书 (默认为 server.cert) - + Server private key (default: server.pem) 服务器私钥 (默认为 server.pem) - + + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. + 无法给数据目录 %s 加锁。比特币进程可能已在运行。 + + + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) 可接受的加密器 (默认为 TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - - This help message - 该帮助信息 - - - - - Cannot obtain a lock on data directory %s. Bitcoin is probably already running. - 无法给数据目录 %s 加锁。比特币进程可能已在运行。 - - - + Loading addresses... 正在加载地址... - Error loading addr.dat - addr.dat文件加载错误 - - - - Error loading blkindex.dat - blkindex.dat文件加载错误 - - - - Error loading wallet.dat: Wallet corrupted - wallet.dat钱包文件加载错误:钱包损坏 - - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin - wallet.dat钱包文件加载错误:请升级到最新Bitcoin客户端 + This help message + 该帮助信息 + - Wallet needed to be rewritten: restart Bitcoin to complete - 钱包文件需要重写:请退出并重新启动Bitcoin客户端 - - - - Error loading wallet.dat - wallet.dat钱包文件加载错误 - - - Loading block index... 加载区块索引... - + Loading wallet... 正在加载钱包... - + Rescanning... 正在重新扫描... + + + Error loading addr.dat + addr.dat文件加载错误 + + + + Error loading blkindex.dat + blkindex.dat文件加载错误 + + Error loading wallet.dat: Wallet corrupted + wallet.dat钱包文件加载错误:钱包损坏 + + + Done loading 加载完成 + Error loading wallet.dat: Wallet requires newer version of Bitcoin + wallet.dat钱包文件加载错误:请升级到最新Bitcoin客户端 + + + Invalid -proxy address 代理地址不合法 + Wallet needed to be rewritten: restart Bitcoin to complete + 钱包文件需要重写:请退出并重新启动Bitcoin客户端 + + + Invalid amount for -paytxfee=<amount> 不合适的交易费 -paytxfee=<amount> + Error loading wallet.dat + wallet.dat钱包文件加载错误 + + + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. 警告: -paytxfee 交易费设置过高. 每进行一笔交易您都将支付该数量的交易费. - + Error: CreateThread(StartNode) failed 错误:线程创建(StartNode)失败 - + Warning: Disk space is low 警告:磁盘空间不足 - + Unable to bind to port %d on this computer. Bitcoin is probably already running. 无法绑定端口 %d 到这台计算机。比特币进程可能已在运行。 - + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. 警告:请确定您当前计算机的日期和时间是正确的。比特币将无法在错误的时间下正常工作。 - + beta 测试 - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_zh_TW.ts b/src/qt/locale/bitcoin_zh_TW.ts index 83c3028eb9f..84e77aa681c 100644 --- a/src/qt/locale/bitcoin_zh_TW.ts +++ b/src/qt/locale/bitcoin_zh_TW.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutDialog @@ -67,11 +69,21 @@ This product includes software developed by the OpenSSL Project for use in the O &Copy to Clipboard 複製到剪貼簿 + + + Delete the currently selected address from the list. Only sending addresses can be deleted. + 從列表中刪除目前選取的位址. 只能夠刪除付款位址. + Show &QR Code 顯示 &QR 條碼 + + + &Delete + 刪除 + Sign a message to prove you own this address @@ -82,16 +94,6 @@ This product includes software developed by the OpenSSL Project for use in the O &Sign Message 簽署訊息 - - - Delete the currently selected address from the list. Only sending addresses can be deleted. - 從列表中刪除目前選取的位址. 只能夠刪除付款位址. - - - - &Delete - 刪除 - Copy address @@ -136,17 +138,17 @@ This product includes software developed by the OpenSSL Project for use in the O AddressTableModel - + Label 標記 - + Address 位址 - + (no label) (沒有標記) @@ -237,11 +239,6 @@ Are you sure you wish to encrypt your wallet? Wallet encrypted 錢包已加密 - - - Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. - 位元幣現在要關閉以完成加密程序. 請記住, 加密錢包無法完全防止入侵電腦的惡意程式偷取你的位元幣. - @@ -261,6 +258,11 @@ Are you sure you wish to encrypt your wallet? Wallet encryption failed due to an internal error. Your wallet was not encrypted. 錢包加密因程式內部有誤而失敗. 你的錢包還是沒有加密. + + + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. + 位元幣現在要關閉以完成加密程序. 請記住, 加密錢包無法完全防止入侵電腦的惡意程式偷取你的位元幣. + @@ -293,278 +295,288 @@ Are you sure you wish to encrypt your wallet? BitcoinGUI - + Bitcoin Wallet 位元幣錢包 - - + + Synchronizing with network... 網路同步中... - + Block chain synchronization in progress 正在進行區塊鎖鏈的同步中 - + &Overview 總覽 - + Show general overview of wallet 顯示錢包一般總覽 - + &Transactions 交易 - + Browse transaction history 瀏覽交易紀錄 - + &Address Book 位址簿 - + Edit the list of stored addresses and labels 編輯儲存位址與標記的列表 - + &Receive coins 收錢 - + Show the list of addresses for receiving payments 顯示收款位址的列表 - + &Send coins 付錢 - + Send coins to a bitcoin address 付錢至某個位元幣位址 - + Sign &message 訊息簽署 - + Prove you control an address 證明你控制一個位址 - + E&xit 結束 - + Quit application 結束應用程式 - + &About %1 關於%1 - + Show information about Bitcoin 顯示位元幣相關資訊 - - About &Qt - 關於 &Qt - - - - Show information about Qt - 顯示有關於 Qt 的資訊 - - - + &Options... 選項... - + Modify configuration options for bitcoin 修改位元幣的設定選項 - + Open &Bitcoin 開啟位元幣 - + Show the Bitcoin window 顯示位元幣主視窗 - + &Export... 匯出... - - Export the data in the current tab to a file - 將目前分頁的資料匯出存成檔案 - - - + &Encrypt Wallet 錢包加密 - + Encrypt or decrypt wallet 將錢包加解密 - - &Backup Wallet - 錢包備份 - - - - Backup wallet to another location - 將錢包備份到其它地方 - - - + &Change Passphrase 變更密碼 - + Change the passphrase used for wallet encryption 變更錢包加密用的密碼 - + + About &Qt + 關於 &Qt + + + + Show information about Qt + 顯示有關於 Qt 的資訊 + + + + Export the data in the current tab to a file + 將目前分頁的資料匯出存成檔案 + + + + &Backup Wallet + 錢包備份 + + + + Backup wallet to another location + 將錢包備份到其它地方 + + + &File 檔案 - + &Settings 設定 - + &Help 求助 - + Tabs toolbar 分頁工具列 - + Actions toolbar 動作工具列 - + [testnet] [testnet] - + bitcoin-qt bitcoin-qt - + %n active connection(s) to Bitcoin network - 與位元幣網路有 %n 個連線在使用中 + + 與位元幣網路有 %n 個連線在使用中 + - + Downloaded %1 of %2 blocks of transaction history. 已下載了 %1/%2 個交易紀錄的區塊. - + Downloaded %1 blocks of transaction history. 已下載了 %1 個交易紀錄的區塊. - + %n second(s) ago - %n 秒鐘前 + + %n 秒鐘前 + - + %n minute(s) ago - %n 分鐘前 + + %n 分鐘前 + - + %n hour(s) ago - %n 小時前 + + %n 小時前 + - + %n day(s) ago - %n 天前 + + %n 天前 + - + Up to date 最新狀態 - + Catching up... 進度追趕中... - + Last received block was generated %1. 最近收到的區塊產生於 %1. - + This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee? 這筆交易的資料大小超過限制了. 你還是可以付出 %1 的費用來傳送. 這筆費用會付給處理該筆交易的節點, 並幫助維持整個網路. 你願意支付這項費用嗎? - + Sending... 付出中... - + Sent transaction 付款交易 - + Incoming transaction 收款交易 - + Date: %1 Amount: %2 Type: %3 @@ -576,35 +588,40 @@ Address: %4 位址: %4 - + Wallet is <b>encrypted</b> and currently <b>unlocked</b> 錢包<b>已加密</b>並且正<b>解鎖中</b> - + Wallet is <b>encrypted</b> and currently <b>locked</b> 錢包<b>已加密</b>並且正<b>上鎖中</b> - + Backup Wallet 錢包備份 - + Wallet Data (*.dat) 錢包資料檔 (*.dat) - + Backup Failed 備份失敗 - + There was an error trying to save the wallet data to the new location. 儲存錢包資料到新的地方時發生錯誤 + + + A fatal error occured. Bitcoin can no longer continue safely and will quit. + + DisplayOptionsPage @@ -620,8 +637,13 @@ Address: %4 - Display addresses in transaction list - 在交易列表中顯示位址 + &Display addresses in transaction list + &在交易列表中顯示位址 + + + + Whether to show Bitcoin addresses in the transaction list + @@ -794,8 +816,8 @@ Address: %4 - The address to send the payment to (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) - 付款的目標位址 (比如說 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + The address to sign the message with (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L) + @@ -839,8 +861,8 @@ Address: %4 - Copy the currently selected address to the system clipboard - 複製目前選取的位址到系統剪貼簿 + Copy the current signature to the system clipboard + @@ -926,20 +948,12 @@ Address: %4 0 BTC - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wallet</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">錢包</span></p></body></html> + + Wallet + 錢包 - + <b>Recent transactions</b> <b>最近交易</b> @@ -972,42 +986,47 @@ p, li { white-space: pre-wrap; } QR 條碼 - + Request Payment 付款單 - + Amount: 金額: - + BTC BTC - + Label: 標記: - + Message: 訊息: - + &Save As... 儲存為... - + + Error encoding URI into QR Code. + + + + Save Image... 儲存圖片... - + PNG Images (*.png) PNG 圖檔 (*.png) @@ -1036,16 +1055,16 @@ p, li { white-space: pre-wrap; } &Add recipient... 加收款人... - - - Remove all transaction fields - 移除所有交易欄位 - Clear all 全部清掉 + + + Remove all transaction fields + 移除所有交易欄位 + Balance: @@ -1343,54 +1362,58 @@ p, li { white-space: pre-wrap; } TransactionTableModel - + Date 日期 - + Type 種類 - + Address 位址 - + Amount 金額 - + Open for %n block(s) - 在 %n 個區塊內未定 + + 在 %n 個區塊內未定 + - + Open until %1 在 %1 前未定 - + Offline (%1 confirmations) 離線中 (經確認 %1 次) - + Unconfirmed (%1 of %2 confirmations) 未確認 (經確認 %1 次, 應確認 %2 次) - + Confirmed (%1 confirmations) 已確認 (經確認 %1 次) Mined balance will be available in %n more blocks - 生產金額將在 %n 個區塊產出後可用 + + 生產金額將在 %n 個區塊產出後可用 + @@ -1633,239 +1656,239 @@ p, li { white-space: pre-wrap; } bitcoin-core - + Bitcoin version 位元幣版本 - + Usage: 用法: - + Send command to -server or bitcoind 送指令至 -server 或 bitcoind - + List commands 列出指令 - + Get help for a command 取得指令說明 - + Options: 選項: - + Specify configuration file (default: bitcoin.conf) 指定設定檔 (預設: bitcoin.conf) - + Specify pid file (default: bitcoind.pid) 指定行程識別碼檔案 (預設: bitcoind.pid) - + Generate coins 生產位元幣 - + Don't generate coins 不生產位元幣 - + Start minimized 啓動時最小化 - + Specify data directory 指定資料目錄 - + Specify connection timeout (in milliseconds) 指定連線逾時時間 (毫秒) - + Connect through socks4 proxy 透過 socks4 代理伺服器連線 - + Allow DNS lookups for addnode and connect 允許 addnode 和 connect 時做域名解析 - + Listen for connections on <port> (default: 8333 or testnet: 18333) 在通訊埠 <port> 聽候連線 (預設: 8333, 或若為測試網路: 18333) - + Maintain at most <n> connections to peers (default: 125) 維持與節點連線數的上限為 <n> 個 (預設: 125) - + Add a node to connect to 新增連線節點 - + Connect only to the specified node 只連線至指定節點 - + Don't accept connections from outside 不接受外來連線 - + Don't bootstrap list of peers using DNS 初始化節點列表時不使用 DNS - + Threshold for disconnecting misbehaving peers (default: 100) 與亂搞的節點斷線的臨界值 (預設: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) 避免與亂搞的節點連線的秒數 (預設: 86400) - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000) 每個連線的接收緩衝區大小上限為 <n>*1000 位元組 (預設: 10000) - + Maximum per-connection send buffer, <n>*1000 bytes (default: 10000) 每個連線的傳送緩衝區大小上限為 <n>*1000 位元組 (預設: 10000) - + Don't attempt to use UPnP to map the listening port 不嘗試用 UPnP 來設定服務連接埠的對應 - + Attempt to use UPnP to map the listening port 嘗試用 UPnP 來設定服務連接埠的對應 - + Fee per kB to add to transactions you send 交易付款時每 kB 的交易手續費 - + Accept command line and JSON-RPC commands 接受命令列與 JSON-RPC 指令 - + Run in the background as a daemon and accept commands 以背景程式執行並接受指令 - + Use the test network 使用測試網路 - + Output extra debugging information 輸出額外的除錯資訊 - + Prepend debug output with timestamp 在除錯輸出內容前附加時間 - + Send trace/debug info to console instead of debug.log file 輸出追蹤或除錯資訊至終端機, 而非 debug.log 檔案 - + Send trace/debug info to debugger 輸出追蹤或除錯資訊給除錯器 - + Username for JSON-RPC connections JSON-RPC 連線使用者名稱 - + Password for JSON-RPC connections JSON-RPC 連線密碼 - + Listen for JSON-RPC connections on <port> (default: 8332) 在通訊埠 <port> 聽候 JSON-RPC 連線 (預設: 8332) - + Allow JSON-RPC connections from specified IP address 只允許從指定網路位址來的 JSON-RPC 連線 - + Send commands to node running on <ip> (default: 127.0.0.1) 送指令給在 <ip> 的節點 (預設: 127.0.0.1) - + Set key pool size to <n> (default: 100) 設定密鑰池大小為 <n> (預設: 100) - + Rescan the block chain for missing wallet transactions 重新掃描區塊鎖鏈, 以尋找錢包所遺漏的交易. - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -1873,134 +1896,134 @@ SSL 選項: (SSL 設定程序請見 Bitcoin Wiki) - + Use OpenSSL (https) for JSON-RPC connections 使用 OpenSSL (https) 於JSON-RPC 連線 - + Server certificate file (default: server.cert) 伺服器憑證檔 (預設: server.cert) - + Server private key (default: server.pem) 伺服器密鑰檔 (預設: server.pem) - + + Cannot obtain a lock on data directory %s. Bitcoin is probably already running. + 無法鎖定資料目錄 %s. 也許位元幣已經在執行了. + + + Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) 可以接受的加密法 (預設: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - - This help message - 此協助訊息 - - - - - Cannot obtain a lock on data directory %s. Bitcoin is probably already running. - 無法鎖定資料目錄 %s. 也許位元幣已經在執行了. - - - + Loading addresses... 載入位址中... - Error loading addr.dat - 載入 addr.dat 失敗 - - - - Error loading blkindex.dat - 載入 blkindex.dat 失敗 - - - - Error loading wallet.dat: Wallet corrupted - 載入 wallet.dat 失敗: 錢包壞掉了 - - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin - 載入 wallet.dat 失敗: 此錢包需要新版的 Bitcoin + This help message + 此協助訊息 + - Wallet needed to be rewritten: restart Bitcoin to complete - 錢包需要重寫: 請重啟位元幣來完成 - - - - Error loading wallet.dat - 載入 wallet.dat 失敗 - - - Loading block index... 載入區塊索引中... - + Loading wallet... 載入錢包中... - + Rescanning... 重新掃描中... + + + Error loading addr.dat + 載入 addr.dat 失敗 + + + + Error loading blkindex.dat + 載入 blkindex.dat 失敗 + + Error loading wallet.dat: Wallet corrupted + 載入 wallet.dat 失敗: 錢包壞掉了 + + + Done loading 載入完成 + Error loading wallet.dat: Wallet requires newer version of Bitcoin + 載入 wallet.dat 失敗: 此錢包需要新版的 Bitcoin + + + Invalid -proxy address 無效的 -proxy 位址 + Wallet needed to be rewritten: restart Bitcoin to complete + 錢包需要重寫: 請重啟位元幣來完成 + + + Invalid amount for -paytxfee=<amount> -paytxfee=<金額> 中的金額無效 + Error loading wallet.dat + 載入 wallet.dat 失敗 + + + Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction. 警告: -paytxfee 設定得很高. 這是當你交易付款時所要支付的手續費. - + Error: CreateThread(StartNode) failed 錯誤: CreateThread(StartNode) 失敗 - + Warning: Disk space is low 警告: 磁碟空間很少 - + Unable to bind to port %d on this computer. Bitcoin is probably already running. 無法與這台電腦上的通訊埠 %d 連結. 也許 Bitcoin 已經在執行了. - + Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly. 警告: 請檢查電腦時間日期是否正確. 位元幣無法在時鐘不準的情況下正常運作. - + beta 公測版 - \ No newline at end of file + From 18b4eccddb7146522b18c5a6add113544a80df99 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Tue, 8 May 2012 19:53:29 +0000 Subject: [PATCH 251/298] Bump version to 0.4.7 --- contrib/Bitcoin.app/Contents/Info.plist | 2 +- doc/README | 2 +- doc/README_windows.txt | 2 +- share/setup.nsi | 6 +++--- src/serialize.h | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/contrib/Bitcoin.app/Contents/Info.plist b/contrib/Bitcoin.app/Contents/Info.plist index 8271c15ef45..a7efd905f1f 100644 --- a/contrib/Bitcoin.app/Contents/Info.plist +++ b/contrib/Bitcoin.app/Contents/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 0.4.6 + 0.4.7 CFBundleSignature ???? CFBundleVersion diff --git a/doc/README b/doc/README index 15f92bf4aff..664a1747366 100644 --- a/doc/README +++ b/doc/README @@ -1,4 +1,4 @@ -Bitcoin 0.4.6 BETA +Bitcoin 0.4.7 BETA Copyright (c) 2009-2012 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/doc/README_windows.txt b/doc/README_windows.txt index 8dde1a9365a..f611b6acd39 100644 --- a/doc/README_windows.txt +++ b/doc/README_windows.txt @@ -1,4 +1,4 @@ -Bitcoin 0.4.6 BETA +Bitcoin 0.4.7 BETA Copyright (c) 2009-2012 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/share/setup.nsi b/share/setup.nsi index 27c87db84b7..c0440838589 100644 --- a/share/setup.nsi +++ b/share/setup.nsi @@ -5,7 +5,7 @@ SetCompressor /SOLID lzma # General Symbol Definitions !define REGKEY "SOFTWARE\$(^Name)" -!define VERSION 0.4.6 +!define VERSION 0.4.7 !define COMPANY "Bitcoin project" !define URL http://www.bitcoin.org/ @@ -45,13 +45,13 @@ Var StartMenuGroup !insertmacro MUI_LANGUAGE English # Installer attributes -OutFile bitcoin-0.4.6-win32-setup.exe +OutFile bitcoin-0.4.7-win32-setup.exe InstallDir $PROGRAMFILES\Bitcoin CRCCheck on XPStyle on BrandingText " " ShowInstDetails show -VIProductVersion 0.4.6.0 +VIProductVersion 0.4.7.0 VIAddVersionKey ProductName Bitcoin VIAddVersionKey ProductVersion "${VERSION}" VIAddVersionKey CompanyName "${COMPANY}" diff --git a/src/serialize.h b/src/serialize.h index 959a3a694ba..30cde6c38c3 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -59,7 +59,7 @@ class CDataStream; class CAutoFile; static const unsigned int MAX_SIZE = 0x02000000; -static const int VERSION = 40600; +static const int VERSION = 40700; static const char* pszSubVer = ""; static const bool VERSION_IS_BETA = true; From 35a07f8ec4abbd0f6848e53a35b9520b33085c63 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Tue, 8 May 2012 20:09:43 +0000 Subject: [PATCH 252/298] Bump version to 0.5.6 --- bitcoin-qt.pro | 2 +- doc/README | 2 +- doc/README_windows.txt | 2 +- share/setup.nsi | 6 +++--- src/serialize.h | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/bitcoin-qt.pro b/bitcoin-qt.pro index 8af8895db10..b5cee48e9f7 100644 --- a/bitcoin-qt.pro +++ b/bitcoin-qt.pro @@ -1,6 +1,6 @@ TEMPLATE = app TARGET = -VERSION = 0.5.5 +VERSION = 0.5.6 INCLUDEPATH += src src/json src/qt DEFINES += QT_GUI BOOST_THREAD_USE_LIB CONFIG += no_include_pwd diff --git a/doc/README b/doc/README index 41fecd7d477..9fe0a44a027 100644 --- a/doc/README +++ b/doc/README @@ -1,4 +1,4 @@ -Bitcoin 0.5.5 BETA +Bitcoin 0.5.6 BETA Copyright (c) 2009-2012 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/doc/README_windows.txt b/doc/README_windows.txt index 9feb2faed0f..fcb88bb4730 100644 --- a/doc/README_windows.txt +++ b/doc/README_windows.txt @@ -1,4 +1,4 @@ -Bitcoin 0.5.5 BETA +Bitcoin 0.5.6 BETA Copyright (c) 2009-2012 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/share/setup.nsi b/share/setup.nsi index b2d0dd05298..83be1e07642 100644 --- a/share/setup.nsi +++ b/share/setup.nsi @@ -5,7 +5,7 @@ SetCompressor /SOLID lzma # General Symbol Definitions !define REGKEY "SOFTWARE\$(^Name)" -!define VERSION 0.5.5 +!define VERSION 0.5.6 !define COMPANY "Bitcoin project" !define URL http://www.bitcoin.org/ @@ -45,13 +45,13 @@ Var StartMenuGroup !insertmacro MUI_LANGUAGE English # Installer attributes -OutFile bitcoin-0.5.5-win32-setup.exe +OutFile bitcoin-0.5.6-win32-setup.exe InstallDir $PROGRAMFILES\Bitcoin CRCCheck on XPStyle on BrandingText " " ShowInstDetails show -VIProductVersion 0.5.5.0 +VIProductVersion 0.5.6.0 VIAddVersionKey ProductName Bitcoin VIAddVersionKey ProductVersion "${VERSION}" VIAddVersionKey CompanyName "${COMPANY}" diff --git a/src/serialize.h b/src/serialize.h index 6bdf3782294..e414bd07aac 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -60,7 +60,7 @@ class CDataStream; class CAutoFile; static const unsigned int MAX_SIZE = 0x02000000; -static const int VERSION = 50500; +static const int VERSION = 50600; static const char* pszSubVer = ""; static const bool VERSION_IS_BETA = true; From 8fa32596646312ec4c50e41b7832e8abd2f16948 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Tue, 8 May 2012 20:11:44 +0000 Subject: [PATCH 253/298] Bump version to 0.6.0.8 --- bitcoin-qt.pro | 2 +- doc/README | 2 +- doc/README_windows.txt | 2 +- share/setup.nsi | 6 +++--- src/main.h | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/bitcoin-qt.pro b/bitcoin-qt.pro index 5f2e7c1cab5..fbd03fe08ed 100644 --- a/bitcoin-qt.pro +++ b/bitcoin-qt.pro @@ -1,6 +1,6 @@ TEMPLATE = app TARGET = -VERSION = 0.6.0.7 +VERSION = 0.6.0.8 INCLUDEPATH += src src/json src/qt DEFINES += QT_GUI BOOST_THREAD_USE_LIB CONFIG += no_include_pwd diff --git a/doc/README b/doc/README index 800c72c83cf..efec77bf225 100644 --- a/doc/README +++ b/doc/README @@ -1,4 +1,4 @@ -Bitcoin 0.6.0.7 BETA +Bitcoin 0.6.0.8 BETA Copyright (c) 2009-2012 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/doc/README_windows.txt b/doc/README_windows.txt index a04aedcd788..58b8e3840c8 100644 --- a/doc/README_windows.txt +++ b/doc/README_windows.txt @@ -1,4 +1,4 @@ -Bitcoin 0.6.0.7 BETA +Bitcoin 0.6.0.8 BETA Copyright (c) 2009-2012 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/share/setup.nsi b/share/setup.nsi index fb9a0c67f26..97863f7c169 100644 --- a/share/setup.nsi +++ b/share/setup.nsi @@ -5,7 +5,7 @@ SetCompressor /SOLID lzma # General Symbol Definitions !define REGKEY "SOFTWARE\$(^Name)" -!define VERSION 0.6.0.7 +!define VERSION 0.6.0.8 !define COMPANY "Bitcoin project" !define URL http://www.bitcoin.org/ @@ -45,13 +45,13 @@ Var StartMenuGroup !insertmacro MUI_LANGUAGE English # Installer attributes -OutFile bitcoin-0.6.0.7-win32-setup.exe +OutFile bitcoin-0.6.0.8-win32-setup.exe InstallDir $PROGRAMFILES\Bitcoin CRCCheck on XPStyle on BrandingText " " ShowInstDetails show -VIProductVersion 0.6.0.7 +VIProductVersion 0.6.0.8 VIAddVersionKey ProductName Bitcoin VIAddVersionKey ProductVersion "${VERSION}" VIAddVersionKey CompanyName "${COMPANY}" diff --git a/src/main.h b/src/main.h index e74263ad8bd..9ae4a1d3916 100644 --- a/src/main.h +++ b/src/main.h @@ -26,7 +26,7 @@ class CInv; class CRequestTracker; class CNode; -static const int CLIENT_VERSION = 60007; +static const int CLIENT_VERSION = 60008; static const bool VERSION_IS_BETA = true; extern const std::string CLIENT_NAME; From 93b5eff27427608d96c643d2f79ce490c2d705f1 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Mon, 7 May 2012 19:22:09 +0000 Subject: [PATCH 254/298] Bitcoin-Qt: Remove redundant tooltip on optional transaction fee. Fixes #1218 --- src/qt/optionsdialog.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/qt/optionsdialog.cpp b/src/qt/optionsdialog.cpp index 0025337ab82..e4b486a9015 100644 --- a/src/qt/optionsdialog.cpp +++ b/src/qt/optionsdialog.cpp @@ -223,7 +223,6 @@ MainOptionsPage::MainOptionsPage(QWidget *parent): QLabel *fee_label = new QLabel(tr("Pay transaction &fee")); fee_hbox->addWidget(fee_label); fee_edit = new BitcoinAmountField(); - fee_edit->setToolTip(tr("Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended.")); fee_label->setBuddy(fee_edit); fee_hbox->addWidget(fee_edit); From 9e52f51223a0c61edde34d0a3cd184954f8ac5ba Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Tue, 8 May 2012 23:22:36 +0200 Subject: [PATCH 255/298] remove 2 obsolete functions from init.h that moved to util.h --- src/init.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/init.h b/src/init.h index e3971c85e37..0a2f0d8932d 100644 --- a/src/init.h +++ b/src/init.h @@ -13,7 +13,4 @@ void Shutdown(void* parg); bool AppInit(int argc, char* argv[]); bool AppInit2(int argc, char* argv[]); -bool GetStartOnSystemStartup(); -bool SetStartOnSystemStartup(bool fAutoStart); - #endif From 7515f00aa36e5650aaca5db911e80536514678be Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Tue, 8 May 2012 09:31:25 +0200 Subject: [PATCH 256/298] remove 2 ugly spaces from a string used in translations --- src/qt/optionsdialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qt/optionsdialog.cpp b/src/qt/optionsdialog.cpp index e4b486a9015..bac01829a7a 100644 --- a/src/qt/optionsdialog.cpp +++ b/src/qt/optionsdialog.cpp @@ -214,7 +214,7 @@ MainOptionsPage::MainOptionsPage(QWidget *parent): proxy_hbox->addStretch(1); layout->addLayout(proxy_hbox); - QLabel *fee_help = new QLabel(tr("Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended.")); + QLabel *fee_help = new QLabel(tr("Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. Fee 0.01 recommended.")); fee_help->setWordWrap(true); layout->addWidget(fee_help); From 7700b94d33f6b7b6c554aa6e623f6e3a86d0ef0f Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Wed, 9 May 2012 01:40:33 -0400 Subject: [PATCH 257/298] Fix DEBUG_LOCKCONTENTION --- src/util.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/util.h b/src/util.h index 15ccf82f9aa..f2a70d839ab 100644 --- a/src/util.h +++ b/src/util.h @@ -217,9 +217,11 @@ public: { printf("LOCKCONTENTION: %s\n", pszName); printf("Locker: %s:%d\n", pszFile, nLine); - } #endif lock.lock(); +#ifdef DEBUG_LOCKCONTENTION + } +#endif } } From d306fd833c0165dc6cfa4cd0415efe4e3c76658a Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Wed, 9 May 2012 13:56:53 -0400 Subject: [PATCH 258/298] Fix osx build --- src/util.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/util.cpp b/src/util.cpp index 3569f22ecd3..3ad31dd6c24 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -843,7 +843,7 @@ boost::filesystem::path GetDefaultDataDir() #ifdef MAC_OSX // Mac pathRet /= "Library/Application Support"; - filesystem::create_directory(pathRet); + fs::create_directory(pathRet); return pathRet / "Bitcoin"; #else // Unix From 7532c476fe5ce004112dd501b4707578ab5f3432 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Fri, 11 May 2012 04:11:22 +0200 Subject: [PATCH 259/298] Fix version numbers of archive builds --- src/version.h | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/version.h b/src/version.h index 7cf82c395ad..b54531f2464 100644 --- a/src/version.h +++ b/src/version.h @@ -10,10 +10,11 @@ // client versioning // -static const int CLIENT_VERSION_MAJOR = 0; -static const int CLIENT_VERSION_MINOR = 6; -static const int CLIENT_VERSION_REVISION = 2; -static const int CLIENT_VERSION_BUILD = 2; +// These need to be macro's, as version.cpp's voodoo requires it +#define CLIENT_VERSION_MAJOR 0 +#define CLIENT_VERSION_MINOR 6 +#define CLIENT_VERSION_REVISION 2 +#define CLIENT_VERSION_BUILD 2 static const int CLIENT_VERSION = 1000000 * CLIENT_VERSION_MAJOR From 182738e1778ef73efc1e8801bd970b0fa10c89ee Mon Sep 17 00:00:00 2001 From: Fordy Date: Sat, 12 May 2012 11:32:03 +0800 Subject: [PATCH 260/298] Correct Date --- src/qt/bitcoingui.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index 1c4d665bee8..69a28a2c15a 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -2,7 +2,7 @@ * Qt4 bitcoin GUI. * * W.J. van der Laan 20011-2012 - * The Bitcoin Developers 20011-2012 + * The Bitcoin Developers 2011-2012 */ #include "checkpoints.h" From 0d174e130b8e89e6de9517d24498615d18d8f382 Mon Sep 17 00:00:00 2001 From: Fordy Date: Sat, 12 May 2012 11:36:37 +0800 Subject: [PATCH 261/298] Correct Date --- src/qt/bitcoingui.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index 69a28a2c15a..e5e3572d244 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -1,7 +1,7 @@ /* * Qt4 bitcoin GUI. * - * W.J. van der Laan 20011-2012 + * W.J. van der Laan 2011-2012 * The Bitcoin Developers 2011-2012 */ From dc15d56b2df25f5ea2e4d1d9b16a3f6578524035 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Fri, 11 May 2012 20:17:09 +0200 Subject: [PATCH 262/298] Properly escape " in strings when exporting CSV --- src/qt/csvmodelwriter.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/qt/csvmodelwriter.cpp b/src/qt/csvmodelwriter.cpp index 84578b33225..8a50bbab3f0 100644 --- a/src/qt/csvmodelwriter.cpp +++ b/src/qt/csvmodelwriter.cpp @@ -27,8 +27,9 @@ void CSVModelWriter::addColumn(const QString &title, int column, int role) static void writeValue(QTextStream &f, const QString &value) { - // TODO: quoting if " or \n in string - f << "\"" << value << "\""; + QString escaped = value; + escaped.replace('"', "\"\""); + f << "\"" << escaped << "\""; } static void writeSep(QTextStream &f) From 10593f3be185dda058b4e2c48a3e77e4a2e00246 Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Sun, 13 May 2012 00:16:50 +0200 Subject: [PATCH 263/298] remove string "TextLabel" from warningLabel, as this is unneeded and as such is a silly translation less to do :) --- src/qt/forms/askpassphrasedialog.ui | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/qt/forms/askpassphrasedialog.ui b/src/qt/forms/askpassphrasedialog.ui index 3f6b668e06a..ff3a77165b0 100644 --- a/src/qt/forms/askpassphrasedialog.ui +++ b/src/qt/forms/askpassphrasedialog.ui @@ -28,9 +28,6 @@ - - TextLabel - Qt::RichText From c455aec6997ad9164f1083e93bb51095a25180cd Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Mon, 7 May 2012 21:36:30 +0200 Subject: [PATCH 264/298] Hopefully final fix for the stuck blockchain issue Immediately issue a "getblocks", instead of a "getdata" (which will trigger the relevant "inv" to be sent anyway), and only do so when the previous set of invs led us into a known and attached part of the block tree. --- src/main.cpp | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index a2fc7387fba..0abba822a84 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2180,8 +2180,10 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv) // find last block in inv vector unsigned int nLastBlock = (unsigned int)(-1); for (unsigned int nInv = 0; nInv < vInv.size(); nInv++) { - if (vInv[vInv.size() - 1 - nInv].type == MSG_BLOCK) + if (vInv[vInv.size() - 1 - nInv].type == MSG_BLOCK) { nLastBlock = vInv.size() - 1 - nInv; + break; + } } CTxDB txdb("r"); for (int nInv = 0; nInv < vInv.size(); nInv++) @@ -2196,19 +2198,19 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv) if (fDebug) printf(" got inventory: %s %s\n", inv.ToString().c_str(), fAlreadyHave ? "have" : "new"); - // Always request the last block in an inv bundle (even if we already have it), as it is the - // trigger for the other side to send further invs. If we are stuck on a (very long) side chain, - // this is necessary to connect earlier received orphan blocks to the chain again. - if (fAlreadyHave && nInv == nLastBlock) { - // bypass mapAskFor, and send request directly; it must go through. - std::vector vGetData(1,inv); - pfrom->PushMessage("getdata", vGetData); - } - if (!fAlreadyHave) pfrom->AskFor(inv); - else if (inv.type == MSG_BLOCK && mapOrphanBlocks.count(inv.hash)) + else if (inv.type == MSG_BLOCK && mapOrphanBlocks.count(inv.hash)) { pfrom->PushGetBlocks(pindexBest, GetOrphanRoot(mapOrphanBlocks[inv.hash])); + } else if (nInv == nLastBlock) { + // In case we are on a very long side-chain, it is possible that we already have + // the last block in an inv bundle sent in response to getblocks. Try to detect + // this situation and push another getblocks to continue. + std::vector vGetData(1,inv); + pfrom->PushGetBlocks(mapBlockIndex[inv.hash], uint256(0)); + if (fDebug) + printf("force request: %s\n", inv.ToString().c_str()); + } // Track requests for our stuff Inventory(inv.hash); From 738592a002003246849e4b3102aebdab738e976a Mon Sep 17 00:00:00 2001 From: Jeff Garzik Date: Mon, 14 May 2012 01:11:11 -0400 Subject: [PATCH 265/298] Always check return values of TxnBegin() and TxnCommit() PARTIAL, since d68dcf7 isn't backported (yet) --- src/main.cpp | 7 +++++-- src/rpc.cpp | 6 ++++-- src/wallet.cpp | 3 ++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 0abba822a84..abacbe5e634 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1336,7 +1336,9 @@ bool CBlock::SetBestChain(CTxDB& txdb, CBlockIndex* pindexNew) { uint256 hash = GetHash(); - txdb.TxnBegin(); + if (!txdb.TxnBegin()) + return error("SetBestChain() : TxnBegin failed"); + if (pindexGenesisBlock == NULL && hash == hashGenesisBlock) { txdb.WriteHashBestChain(hash); @@ -1416,7 +1418,8 @@ bool CBlock::AddToBlockIndex(unsigned int nFile, unsigned int nBlockPos) pindexNew->bnChainWork = (pindexNew->pprev ? pindexNew->pprev->bnChainWork : 0) + pindexNew->GetBlockWork(); CTxDB txdb; - txdb.TxnBegin(); + if (!txdb.TxnBegin()) + return false; txdb.WriteBlockIndex(CDiskBlockIndex(pindexNew)); if (!txdb.TxnCommit()) return false; diff --git a/src/rpc.cpp b/src/rpc.cpp index 8a02d95c1b3..e2ae17e47b2 100644 --- a/src/rpc.cpp +++ b/src/rpc.cpp @@ -723,7 +723,8 @@ Value movecmd(const Array& params, bool fHelp) strComment = params[4].get_str(); CWalletDB walletdb(pwalletMain->strWalletFile); - walletdb.TxnBegin(); + if (!walletdb.TxnBegin()) + throw JSONRPCError(-20, "database error"); int64 nNow = GetAdjustedTime(); @@ -745,7 +746,8 @@ Value movecmd(const Array& params, bool fHelp) credit.strComment = strComment; walletdb.WriteAccountingEntry(credit); - walletdb.TxnCommit(); + if (!walletdb.TxnCommit()) + throw JSONRPCError(-20, "database error"); return true; } diff --git a/src/wallet.cpp b/src/wallet.cpp index b3eb06a3f64..6bf8e582f84 100644 --- a/src/wallet.cpp +++ b/src/wallet.cpp @@ -165,7 +165,8 @@ bool CWallet::EncryptWallet(const string& strWalletPassphrase) if (fFileBacked) { pwalletdbEncryption = new CWalletDB(strWalletFile); - pwalletdbEncryption->TxnBegin(); + if (!pwalletdbEncryption->TxnBegin()) + return false; pwalletdbEncryption->WriteMasterKey(nMasterKeyMaxID, kMasterKey); } From 3a05f1d2ce45d5d9fbbd7b1b897f3c6e32f58720 Mon Sep 17 00:00:00 2001 From: Jeff Garzik Date: Mon, 14 May 2012 01:11:11 -0400 Subject: [PATCH 266/298] Always check return values of TxnBegin() and TxnCommit() --- src/bitcoinrpc.cpp | 6 ++++-- src/main.cpp | 12 +++++++++--- src/wallet.cpp | 3 ++- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/bitcoinrpc.cpp b/src/bitcoinrpc.cpp index 4426ac502ee..93c9b4110a0 100644 --- a/src/bitcoinrpc.cpp +++ b/src/bitcoinrpc.cpp @@ -840,7 +840,8 @@ Value movecmd(const Array& params, bool fHelp) strComment = params[4].get_str(); CWalletDB walletdb(pwalletMain->strWalletFile); - walletdb.TxnBegin(); + if (!walletdb.TxnBegin()) + throw JSONRPCError(-20, "database error"); int64 nNow = GetAdjustedTime(); @@ -862,7 +863,8 @@ Value movecmd(const Array& params, bool fHelp) credit.strComment = strComment; walletdb.WriteAccountingEntry(credit); - walletdb.TxnCommit(); + if (!walletdb.TxnCommit()) + throw JSONRPCError(-20, "database error"); return true; } diff --git a/src/main.cpp b/src/main.cpp index 7e4ed1100c4..f13f6165b38 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1496,7 +1496,9 @@ bool CBlock::SetBestChain(CTxDB& txdb, CBlockIndex* pindexNew) { uint256 hash = GetHash(); - txdb.TxnBegin(); + if (!txdb.TxnBegin()) + return error("SetBestChain() : TxnBegin failed"); + if (pindexGenesisBlock == NULL && hash == hashGenesisBlock) { txdb.WriteHashBestChain(hash); @@ -1545,7 +1547,10 @@ bool CBlock::SetBestChain(CTxDB& txdb, CBlockIndex* pindexNew) printf("SetBestChain() : ReadFromDisk failed\n"); break; } - txdb.TxnBegin(); + if (!txdb.TxnBegin()) { + printf("SetBestChain() : TxnBegin 2 failed\n"); + break; + } // errors now are not fatal, we still did a reorganisation to a new chain in a valid way if (!block.SetBestChainInner(txdb, pindex)) break; @@ -1603,7 +1608,8 @@ bool CBlock::AddToBlockIndex(unsigned int nFile, unsigned int nBlockPos) pindexNew->bnChainWork = (pindexNew->pprev ? pindexNew->pprev->bnChainWork : 0) + pindexNew->GetBlockWork(); CTxDB txdb; - txdb.TxnBegin(); + if (!txdb.TxnBegin()) + return false; txdb.WriteBlockIndex(CDiskBlockIndex(pindexNew)); if (!txdb.TxnCommit()) return false; diff --git a/src/wallet.cpp b/src/wallet.cpp index bd17bd926f4..bb7f11c7547 100644 --- a/src/wallet.cpp +++ b/src/wallet.cpp @@ -234,7 +234,8 @@ bool CWallet::EncryptWallet(const SecureString& strWalletPassphrase) if (fFileBacked) { pwalletdbEncryption = new CWalletDB(strWalletFile); - pwalletdbEncryption->TxnBegin(); + if (!pwalletdbEncryption->TxnBegin()) + return false; pwalletdbEncryption->WriteMasterKey(nMasterKeyMaxID, kMasterKey); } From fba681519a5b63cdda9e61980cc6e2acb6b8f738 Mon Sep 17 00:00:00 2001 From: Christian von Roques Date: Thu, 17 May 2012 11:33:59 -0400 Subject: [PATCH 267/298] Fix typo. libarcode => libqrcode --- doc/build-unix.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/build-unix.txt b/doc/build-unix.txt index c5b4205084d..a9bc551d3c3 100644 --- a/doc/build-unix.txt +++ b/doc/build-unix.txt @@ -40,7 +40,7 @@ turned off by default. Set USE_UPNP to a different value to control this: libqrencode may be used for QRCode image generation. It can be downloaded from http://fukuchi.org/works/qrencode/index.html.en, or installed via your package manager. Set USE_QRCODE to control this: - USE_QRCODE=0 (the default) No QRCode support - libarcode not required + USE_QRCODE=0 (the default) No QRCode support - libqrcode not required USE_QRCODE=1 QRCode support enabled Licenses of statically linked libraries: From 77b0f86a43653dac51f97d57e5d450c9871372bf Mon Sep 17 00:00:00 2001 From: R E Broadley Date: Thu, 17 May 2012 16:15:28 +0100 Subject: [PATCH 268/298] Add /bin/sh to bitcoin-qt.pro - as some filesystems don't have the execute flag. --- bitcoin-qt.pro | 2 +- src/makefile.linux-mingw | 2 +- src/makefile.osx | 2 +- src/makefile.unix | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bitcoin-qt.pro b/bitcoin-qt.pro index 82bbfabc2bb..82d19faa34a 100644 --- a/bitcoin-qt.pro +++ b/bitcoin-qt.pro @@ -83,7 +83,7 @@ contains(BITCOIN_NEED_QT_PLUGINS, 1) { # regenerate src/build.h !windows || contains(USE_BUILD_INFO, 1) { genbuild.depends = FORCE - genbuild.commands = cd $$PWD; share/genbuild.sh $$OUT_PWD/build/build.h + genbuild.commands = cd $$PWD; /bin/sh share/genbuild.sh $$OUT_PWD/build/build.h genbuild.target = genbuildhook PRE_TARGETDEPS += genbuildhook QMAKE_EXTRA_TARGETS += genbuild diff --git a/src/makefile.linux-mingw b/src/makefile.linux-mingw index 81934187e2c..540dacb2d12 100644 --- a/src/makefile.linux-mingw +++ b/src/makefile.linux-mingw @@ -69,7 +69,7 @@ OBJS= \ all: bitcoind.exe obj/build.h: FORCE - ../share/genbuild.sh obj/build.h + /bin/sh ../share/genbuild.sh obj/build.h version.cpp: obj/build.h DEFS += -DHAVE_BUILD_INFO diff --git a/src/makefile.osx b/src/makefile.osx index be95aab446a..0df15199842 100644 --- a/src/makefile.osx +++ b/src/makefile.osx @@ -106,7 +106,7 @@ all: bitcoind -include obj-test/*.P obj/build.h: FORCE - ../share/genbuild.sh obj/build.h + /bin/sh ../share/genbuild.sh obj/build.h version.cpp: obj/build.h DEFS += -DHAVE_BUILD_INFO diff --git a/src/makefile.unix b/src/makefile.unix index 90be398976d..5c452582b6b 100644 --- a/src/makefile.unix +++ b/src/makefile.unix @@ -116,7 +116,7 @@ all: bitcoind -include obj-test/*.P obj/build.h: FORCE - ../share/genbuild.sh obj/build.h + /bin/sh ../share/genbuild.sh obj/build.h version.cpp: obj/build.h DEFS += -DHAVE_BUILD_INFO From c45c2c380de5a0591df94156367f057e37c41a09 Mon Sep 17 00:00:00 2001 From: R E Broadley Date: Thu, 17 May 2012 19:09:21 +0100 Subject: [PATCH 269/298] Add build directory to .gitignore, so that it's not tracked. --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 66f93867d8f..6ed527d5d47 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,4 @@ qrc_*.cpp *.pro.user #mac specific .DS_Store +build From 334668cde4e63d08165aa95737cc95a00fbd252b Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Mon, 14 May 2012 07:49:17 +0200 Subject: [PATCH 270/298] remove 2 ugly spaces from a message string (PARTIAL of 966ae00) --- src/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index abacbe5e634..510aca92b47 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1637,7 +1637,7 @@ bool CheckDiskSpace(uint64 nAdditionalBytes) if (nFreeBytesAvailable < (uint64)15000000 + nAdditionalBytes) { fShutdown = true; - string strMessage = _("Warning: Disk space is low "); + string strMessage = _("Warning: Disk space is low"); strMiscWarning = strMessage; printf("*** %s\n", strMessage.c_str()); ThreadSafeMessageBox(strMessage, "Bitcoin", wxOK | wxICON_EXCLAMATION); From e10622d1297e638109bbf58c35ad008f7acbae7c Mon Sep 17 00:00:00 2001 From: Fordy Date: Fri, 18 May 2012 22:02:28 +0800 Subject: [PATCH 271/298] Update License in File Headers I originally created a pull to replace the "COPYING" in crypter.cpp and crypter.h, but it turned out that COPYING was actually the correct file. --- src/addrman.cpp | 2 +- src/addrman.h | 2 +- src/allocators.h | 2 +- src/base58.h | 2 +- src/bignum.h | 2 +- src/bitcoinrpc.cpp | 2 +- src/bitcoinrpc.h | 2 +- src/checkpoints.cpp | 2 +- src/checkpoints.h | 2 +- src/compat.h | 2 +- src/db.cpp | 2 +- src/db.h | 2 +- src/init.cpp | 2 +- src/init.h | 2 +- src/irc.cpp | 2 +- src/irc.h | 2 +- src/key.cpp | 2 +- src/key.h | 2 +- src/keystore.cpp | 2 +- src/keystore.h | 2 +- src/main.cpp | 3 ++- src/main.h | 2 +- src/mruset.h | 2 +- src/net.cpp | 2 +- src/net.h | 2 +- src/netbase.cpp | 2 +- src/netbase.h | 2 +- src/noui.cpp | 2 +- src/protocol.cpp | 2 +- src/protocol.h | 2 +- src/rpcdump.cpp | 2 +- src/script.cpp | 2 +- src/script.h | 2 +- src/serialize.h | 2 +- src/ui_interface.h | 2 +- src/uint256.h | 2 +- src/util.cpp | 2 +- src/util.h | 2 +- src/version.cpp | 2 +- src/version.h | 2 +- src/wallet.cpp | 2 +- src/wallet.h | 2 +- src/walletdb.cpp | 2 +- src/walletdb.h | 2 +- 44 files changed, 45 insertions(+), 44 deletions(-) diff --git a/src/addrman.cpp b/src/addrman.cpp index 10d005aae91..8257a46a158 100644 --- a/src/addrman.cpp +++ b/src/addrman.cpp @@ -1,6 +1,6 @@ // Copyright (c) 2012 Pieter Wuille // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "addrman.h" diff --git a/src/addrman.h b/src/addrman.h index 3768614cfe5..aa42025c07f 100644 --- a/src/addrman.h +++ b/src/addrman.h @@ -1,6 +1,6 @@ // Copyright (c) 2012 Pieter Wuille // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef _BITCOIN_ADDRMAN #define _BITCOIN_ADDRMAN 1 diff --git a/src/allocators.h b/src/allocators.h index fa9534bc525..4b3356e874e 100644 --- a/src/allocators.h +++ b/src/allocators.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_ALLOCATORS_H #define BITCOIN_ALLOCATORS_H diff --git a/src/base58.h b/src/base58.h index 90ce34b05b5..bc681a08ca2 100644 --- a/src/base58.h +++ b/src/base58.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin Developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. // diff --git a/src/bignum.h b/src/bignum.h index f0971e8850c..307017b0ab7 100644 --- a/src/bignum.h +++ b/src/bignum.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_BIGNUM_H #define BITCOIN_BIGNUM_H diff --git a/src/bitcoinrpc.cpp b/src/bitcoinrpc.cpp index 0b851c4e701..cf6e4fb6b70 100644 --- a/src/bitcoinrpc.cpp +++ b/src/bitcoinrpc.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "main.h" #include "wallet.h" diff --git a/src/bitcoinrpc.h b/src/bitcoinrpc.h index 6b7293ed19b..f8216867b6a 100644 --- a/src/bitcoinrpc.h +++ b/src/bitcoinrpc.h @@ -1,7 +1,7 @@ // Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef _BITCOINRPC_H_ #define _BITCOINRPC_H_ 1 diff --git a/src/checkpoints.cpp b/src/checkpoints.cpp index cf56fa06953..6679bc93d47 100644 --- a/src/checkpoints.cpp +++ b/src/checkpoints.cpp @@ -1,6 +1,6 @@ // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include // for 'map_list_of()' #include diff --git a/src/checkpoints.h b/src/checkpoints.h index 5d3228f3fc2..70e936564c4 100644 --- a/src/checkpoints.h +++ b/src/checkpoints.h @@ -1,6 +1,6 @@ // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_CHECKPOINT_H #define BITCOIN_CHECKPOINT_H diff --git a/src/compat.h b/src/compat.h index 804a8141b54..79ebb9323a6 100644 --- a/src/compat.h +++ b/src/compat.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef _BITCOIN_COMPAT_H #define _BITCOIN_COMPAT_H 1 diff --git a/src/db.cpp b/src/db.cpp index 12647e568ae..4d2965fac96 100644 --- a/src/db.cpp +++ b/src/db.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "db.h" #include "util.h" diff --git a/src/db.h b/src/db.h index 3ce8f1758f2..ae0ffd277f6 100644 --- a/src/db.h +++ b/src/db.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_DB_H #define BITCOIN_DB_H diff --git a/src/init.cpp b/src/init.cpp index 3fe6d1b091c..96766f8b016 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "db.h" #include "walletdb.h" #include "bitcoinrpc.h" diff --git a/src/init.h b/src/init.h index 0a2f0d8932d..4826ab167c7 100644 --- a/src/init.h +++ b/src/init.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_INIT_H #define BITCOIN_INIT_H diff --git a/src/irc.cpp b/src/irc.cpp index 237497055de..d8129c61130 100644 --- a/src/irc.cpp +++ b/src/irc.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "irc.h" #include "net.h" diff --git a/src/irc.h b/src/irc.h index 08d62b83d2b..4a42f76512b 100644 --- a/src/irc.h +++ b/src/irc.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_IRC_H #define BITCOIN_IRC_H diff --git a/src/key.cpp b/src/key.cpp index e0844412d9b..dab1eed2eb2 100644 --- a/src/key.cpp +++ b/src/key.cpp @@ -1,6 +1,6 @@ // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include #include diff --git a/src/key.h b/src/key.h index 1579cdc40a1..f687f334cee 100644 --- a/src/key.h +++ b/src/key.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_KEY_H #define BITCOIN_KEY_H diff --git a/src/keystore.cpp b/src/keystore.cpp index 313518711be..3cb95767bb7 100644 --- a/src/keystore.cpp +++ b/src/keystore.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "keystore.h" #include "script.h" diff --git a/src/keystore.h b/src/keystore.h index 76820e204b7..3f1f0ce9dd8 100644 --- a/src/keystore.h +++ b/src/keystore.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_KEYSTORE_H #define BITCOIN_KEYSTORE_H diff --git a/src/main.cpp b/src/main.cpp index c1c57d1d2b4..ad5ab6e4bed 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,7 +1,8 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include "checkpoints.h" #include "db.h" #include "net.h" diff --git a/src/main.h b/src/main.h index 262e77e806b..2439572e190 100644 --- a/src/main.h +++ b/src/main.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_MAIN_H #define BITCOIN_MAIN_H diff --git a/src/mruset.h b/src/mruset.h index b21f18563c9..ad2e160d3a6 100644 --- a/src/mruset.h +++ b/src/mruset.h @@ -1,6 +1,6 @@ // Copyright (c) 2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_MRUSET_H #define BITCOIN_MRUSET_H diff --git a/src/net.cpp b/src/net.cpp index 88a3b436c7f..1227412fe48 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "irc.h" #include "db.h" diff --git a/src/net.h b/src/net.h index 4cc82b237e5..65118a4574f 100644 --- a/src/net.h +++ b/src/net.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_NET_H #define BITCOIN_NET_H diff --git a/src/netbase.cpp b/src/netbase.cpp index 8b30ffc140e..6cb8aa8b9ce 100644 --- a/src/netbase.cpp +++ b/src/netbase.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "netbase.h" #include "util.h" diff --git a/src/netbase.h b/src/netbase.h index 00b6850b2ac..5bf3fdd2d2a 100644 --- a/src/netbase.h +++ b/src/netbase.h @@ -1,6 +1,6 @@ // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_NETBASE_H #define BITCOIN_NETBASE_H diff --git a/src/noui.cpp b/src/noui.cpp index 08a08b439a3..6d984680b15 100644 --- a/src/noui.cpp +++ b/src/noui.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "ui_interface.h" #include diff --git a/src/protocol.cpp b/src/protocol.cpp index fda31966f2c..d6e340e366f 100644 --- a/src/protocol.cpp +++ b/src/protocol.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "protocol.h" #include "util.h" diff --git a/src/protocol.h b/src/protocol.h index f7331c19233..b516f1b897c 100644 --- a/src/protocol.h +++ b/src/protocol.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef __cplusplus # error This header can only be compiled as C++. diff --git a/src/rpcdump.cpp b/src/rpcdump.cpp index 1bc87e92179..2db4882068b 100644 --- a/src/rpcdump.cpp +++ b/src/rpcdump.cpp @@ -1,6 +1,6 @@ // Copyright (c) 2009-2012 Bitcoin Developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "init.h" // for pwalletMain #include "bitcoinrpc.h" diff --git a/src/script.cpp b/src/script.cpp index 65e9b7c9a20..9f453022cbc 100644 --- a/src/script.cpp +++ b/src/script.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include using namespace std; diff --git a/src/script.h b/src/script.h index e41e09b6b30..5397a1972fd 100644 --- a/src/script.h +++ b/src/script.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef H_BITCOIN_SCRIPT #define H_BITCOIN_SCRIPT diff --git a/src/serialize.h b/src/serialize.h index fe2aebe7f5c..349a40bfe88 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_SERIALIZE_H #define BITCOIN_SERIALIZE_H diff --git a/src/ui_interface.h b/src/ui_interface.h index 514768086d3..63d2e5c1d0a 100644 --- a/src/ui_interface.h +++ b/src/ui_interface.h @@ -1,6 +1,6 @@ // Copyright (c) 2010 Satoshi Nakamoto // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_UI_INTERFACE_H #define BITCOIN_UI_INTERFACE_H diff --git a/src/uint256.h b/src/uint256.h index 9966a14ed7d..fc5ed265920 100644 --- a/src/uint256.h +++ b/src/uint256.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_UINT256_H #define BITCOIN_UINT256_H diff --git a/src/util.cpp b/src/util.cpp index 3ad31dd6c24..ef8f755f547 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "util.h" #include "strlcpy.h" diff --git a/src/util.h b/src/util.h index f2a70d839ab..780b9db22d6 100644 --- a/src/util.h +++ b/src/util.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_UTIL_H #define BITCOIN_UTIL_H diff --git a/src/version.cpp b/src/version.cpp index 0c1e8bfa802..60b7aae2e59 100644 --- a/src/version.cpp +++ b/src/version.cpp @@ -1,6 +1,6 @@ // Copyright (c) 2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include #include "version.h" diff --git a/src/version.h b/src/version.h index b54531f2464..3b26c8f6ca8 100644 --- a/src/version.h +++ b/src/version.h @@ -1,6 +1,6 @@ // Copyright (c) 2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_VERSION_H #define BITCOIN_VERSION_H diff --git a/src/wallet.cpp b/src/wallet.cpp index 998909897fd..d0684130a63 100644 --- a/src/wallet.cpp +++ b/src/wallet.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "wallet.h" #include "walletdb.h" diff --git a/src/wallet.h b/src/wallet.h index 44c11e2ec4b..9e451f89d68 100644 --- a/src/wallet.h +++ b/src/wallet.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_WALLET_H #define BITCOIN_WALLET_H diff --git a/src/walletdb.cpp b/src/walletdb.cpp index e5d57288e8a..865911c434d 100644 --- a/src/walletdb.cpp +++ b/src/walletdb.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "walletdb.h" #include "wallet.h" diff --git a/src/walletdb.h b/src/walletdb.h index 46ba7967ca1..dee17502628 100644 --- a/src/walletdb.h +++ b/src/walletdb.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_WALLETDB_H #define BITCOIN_WALLETDB_H From d11488abd05cb39a9f481e7c4c35f780197a3d28 Mon Sep 17 00:00:00 2001 From: Fordy Date: Fri, 18 May 2012 22:02:28 +0800 Subject: [PATCH 272/298] Update License in File Headers I originally created a pull to replace the "COPYING" in crypter.cpp and crypter.h, but it turned out that COPYING was actually the correct file. --- src/addrman.cpp | 2 +- src/addrman.h | 2 +- src/base58.h | 2 +- src/bignum.h | 2 +- src/bitcoinrpc.cpp | 2 +- src/bitcoinrpc.h | 2 +- src/checkpoints.cpp | 2 +- src/checkpoints.h | 2 +- src/compat.h | 2 +- src/db.cpp | 2 +- src/db.h | 2 +- src/headers.h | 2 +- src/init.cpp | 2 +- src/init.h | 2 +- src/irc.cpp | 2 +- src/irc.h | 2 +- src/key.cpp | 2 +- src/key.h | 2 +- src/keystore.cpp | 2 +- src/keystore.h | 2 +- src/main.cpp | 3 ++- src/main.h | 2 +- src/mruset.h | 2 +- src/net.cpp | 2 +- src/net.h | 2 +- src/netbase.cpp | 2 +- src/netbase.h | 2 +- src/noui.h | 2 +- src/protocol.cpp | 2 +- src/protocol.h | 2 +- src/qtui.h | 2 +- src/rpcdump.cpp | 2 +- src/script.cpp | 2 +- src/script.h | 2 +- src/serialize.h | 2 +- src/uint256.h | 2 +- src/util.cpp | 2 +- src/util.h | 2 +- src/wallet.cpp | 2 +- src/wallet.h | 2 +- 40 files changed, 41 insertions(+), 40 deletions(-) diff --git a/src/addrman.cpp b/src/addrman.cpp index 9edbcc3a5f4..cdc59577267 100644 --- a/src/addrman.cpp +++ b/src/addrman.cpp @@ -1,6 +1,6 @@ // Copyright (c) 2012 Pieter Wuille // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "addrman.h" diff --git a/src/addrman.h b/src/addrman.h index 5f1d7b2af9c..950798784da 100644 --- a/src/addrman.h +++ b/src/addrman.h @@ -1,6 +1,6 @@ // Copyright (c) 2012 Pieter Wuille // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef _BITCOIN_ADDRMAN #define _BITCOIN_ADDRMAN 1 diff --git a/src/base58.h b/src/base58.h index 90ce34b05b5..bc681a08ca2 100644 --- a/src/base58.h +++ b/src/base58.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin Developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. // diff --git a/src/bignum.h b/src/bignum.h index e691dbe94e5..abcc052efec 100644 --- a/src/bignum.h +++ b/src/bignum.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_BIGNUM_H #define BITCOIN_BIGNUM_H diff --git a/src/bitcoinrpc.cpp b/src/bitcoinrpc.cpp index 93c9b4110a0..71725ac3350 100644 --- a/src/bitcoinrpc.cpp +++ b/src/bitcoinrpc.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" #include "db.h" diff --git a/src/bitcoinrpc.h b/src/bitcoinrpc.h index a9cf3296f72..254def86b20 100644 --- a/src/bitcoinrpc.h +++ b/src/bitcoinrpc.h @@ -1,7 +1,7 @@ // Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. void ThreadRPCServer(void* parg); int CommandLineRPC(int argc, char *argv[]); diff --git a/src/checkpoints.cpp b/src/checkpoints.cpp index f5ce053870f..ee74d259302 100644 --- a/src/checkpoints.cpp +++ b/src/checkpoints.cpp @@ -1,6 +1,6 @@ // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include // for 'map_list_of()' #include diff --git a/src/checkpoints.h b/src/checkpoints.h index 38902ac0a15..df3e373782e 100644 --- a/src/checkpoints.h +++ b/src/checkpoints.h @@ -1,6 +1,6 @@ // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_CHECKPOINT_H #define BITCOIN_CHECKPOINT_H diff --git a/src/compat.h b/src/compat.h index 882610031a9..0b4e2f8d435 100644 --- a/src/compat.h +++ b/src/compat.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef _BITCOIN_COMPAT_H #define _BITCOIN_COMPAT_H 1 diff --git a/src/db.cpp b/src/db.cpp index 6cf7e28b609..2dddcf095a0 100644 --- a/src/db.cpp +++ b/src/db.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" #include "db.h" diff --git a/src/db.h b/src/db.h index 47fa40245e9..38daad3e919 100644 --- a/src/db.h +++ b/src/db.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_DB_H #define BITCOIN_DB_H diff --git a/src/headers.h b/src/headers.h index 88f5476f8f6..fb86a6fe02b 100644 --- a/src/headers.h +++ b/src/headers.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifdef _MSC_VER #pragma warning(disable:4786) diff --git a/src/init.cpp b/src/init.cpp index 4078b7e0cb2..8d8ce8f4af8 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" #include "db.h" #include "bitcoinrpc.h" diff --git a/src/init.h b/src/init.h index 0d60e7549f5..80894827a00 100644 --- a/src/init.h +++ b/src/init.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_INIT_H #define BITCOIN_INIT_H diff --git a/src/irc.cpp b/src/irc.cpp index d535f59c4c9..836ef0bee27 100644 --- a/src/irc.cpp +++ b/src/irc.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" #include "irc.h" diff --git a/src/irc.h b/src/irc.h index 08d62b83d2b..4a42f76512b 100644 --- a/src/irc.h +++ b/src/irc.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_IRC_H #define BITCOIN_IRC_H diff --git a/src/key.cpp b/src/key.cpp index e0844412d9b..dab1eed2eb2 100644 --- a/src/key.cpp +++ b/src/key.cpp @@ -1,6 +1,6 @@ // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include #include diff --git a/src/key.h b/src/key.h index 8f220f1c753..ba68f0dd702 100644 --- a/src/key.h +++ b/src/key.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_KEY_H #define BITCOIN_KEY_H diff --git a/src/keystore.cpp b/src/keystore.cpp index 23f9e32fa2a..5b8420674df 100644 --- a/src/keystore.cpp +++ b/src/keystore.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" #include "crypter.h" diff --git a/src/keystore.h b/src/keystore.h index 52f5f21aa92..3e56919d3bb 100644 --- a/src/keystore.h +++ b/src/keystore.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_KEYSTORE_H #define BITCOIN_KEYSTORE_H diff --git a/src/main.cpp b/src/main.cpp index f13f6165b38..ad75892fb92 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,7 +1,8 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include "headers.h" #include "checkpoints.h" #include "db.h" diff --git a/src/main.h b/src/main.h index 9ae4a1d3916..be67fbf82c1 100644 --- a/src/main.h +++ b/src/main.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_MAIN_H #define BITCOIN_MAIN_H diff --git a/src/mruset.h b/src/mruset.h index b21f18563c9..ad2e160d3a6 100644 --- a/src/mruset.h +++ b/src/mruset.h @@ -1,6 +1,6 @@ // Copyright (c) 2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_MRUSET_H #define BITCOIN_MRUSET_H diff --git a/src/net.cpp b/src/net.cpp index e5cb6d4b249..6707d790e2b 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" #include "irc.h" diff --git a/src/net.h b/src/net.h index 82316917d2b..bf8ed806668 100644 --- a/src/net.h +++ b/src/net.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_NET_H #define BITCOIN_NET_H diff --git a/src/netbase.cpp b/src/netbase.cpp index 8b30ffc140e..6cb8aa8b9ce 100644 --- a/src/netbase.cpp +++ b/src/netbase.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "netbase.h" #include "util.h" diff --git a/src/netbase.h b/src/netbase.h index 26c21401552..24e94f2a2da 100644 --- a/src/netbase.h +++ b/src/netbase.h @@ -1,6 +1,6 @@ // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_NETBASE_H #define BITCOIN_NETBASE_H diff --git a/src/noui.h b/src/noui.h index 8888db69f8f..819e9de5d1c 100644 --- a/src/noui.h +++ b/src/noui.h @@ -1,7 +1,7 @@ // Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_NOUI_H #define BITCOIN_NOUI_H diff --git a/src/protocol.cpp b/src/protocol.cpp index 06306cf8e1e..213e8a4d53c 100644 --- a/src/protocol.cpp +++ b/src/protocol.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "protocol.h" #include "util.h" diff --git a/src/protocol.h b/src/protocol.h index e639127355a..69e39969564 100644 --- a/src/protocol.h +++ b/src/protocol.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef __cplusplus # error This header can only be compiled as C++. diff --git a/src/qtui.h b/src/qtui.h index 05a56678d11..c25abf5e673 100644 --- a/src/qtui.h +++ b/src/qtui.h @@ -1,6 +1,6 @@ // Copyright (c) 2010 Satoshi Nakamoto // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_EXTERNUI_H #define BITCOIN_EXTERNUI_H diff --git a/src/rpcdump.cpp b/src/rpcdump.cpp index d59536e2547..ae7f1cdd4c1 100644 --- a/src/rpcdump.cpp +++ b/src/rpcdump.cpp @@ -1,6 +1,6 @@ // Copyright (c) 2009-2012 Bitcoin Developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" #include "init.h" // for pwalletMain diff --git a/src/script.cpp b/src/script.cpp index 21f101e1c59..074d29914b6 100644 --- a/src/script.cpp +++ b/src/script.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" using namespace std; diff --git a/src/script.h b/src/script.h index 1aac324f62b..bbc6498fbbd 100644 --- a/src/script.h +++ b/src/script.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef H_BITCOIN_SCRIPT #define H_BITCOIN_SCRIPT diff --git a/src/serialize.h b/src/serialize.h index 2cb3563f8f3..8b75cf8b83d 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_SERIALIZE_H #define BITCOIN_SERIALIZE_H diff --git a/src/uint256.h b/src/uint256.h index 6215b9630e9..c07bce4ea04 100644 --- a/src/uint256.h +++ b/src/uint256.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_UINT256_H #define BITCOIN_UINT256_H diff --git a/src/util.cpp b/src/util.cpp index bfc0eb81d4e..393f927491e 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" #include "strlcpy.h" #include diff --git a/src/util.h b/src/util.h index 4fa5a08982b..e0821cce19b 100644 --- a/src/util.h +++ b/src/util.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_UTIL_H #define BITCOIN_UTIL_H diff --git a/src/wallet.cpp b/src/wallet.cpp index bb7f11c7547..04faef67b76 100644 --- a/src/wallet.cpp +++ b/src/wallet.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" #include "db.h" diff --git a/src/wallet.h b/src/wallet.h index c6853456260..1b17dea9db8 100644 --- a/src/wallet.h +++ b/src/wallet.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_WALLET_H #define BITCOIN_WALLET_H From b2de28c74040595fa3fe5353ea063a8c3874f6b1 Mon Sep 17 00:00:00 2001 From: Fordy Date: Fri, 18 May 2012 22:02:28 +0800 Subject: [PATCH 273/298] Update License in File Headers I originally created a pull to replace the "COPYING" in crypter.cpp and crypter.h, but it turned out that COPYING was actually the correct file. --- src/base58.h | 2 +- src/bignum.h | 2 +- src/bitcoinrpc.cpp | 2 +- src/bitcoinrpc.h | 2 +- src/checkpoints.cpp | 2 +- src/checkpoints.h | 2 +- src/db.cpp | 2 +- src/db.h | 2 +- src/headers.h | 2 +- src/init.cpp | 2 +- src/init.h | 2 +- src/irc.cpp | 2 +- src/irc.h | 2 +- src/key.h | 2 +- src/keystore.cpp | 2 +- src/keystore.h | 2 +- src/main.cpp | 3 ++- src/main.h | 2 +- src/net.cpp | 2 +- src/net.h | 2 +- src/noui.h | 2 +- src/protocol.cpp | 2 +- src/protocol.h | 2 +- src/qtui.h | 2 +- src/script.cpp | 2 +- src/script.h | 2 +- src/serialize.h | 2 +- src/uint256.h | 2 +- src/util.cpp | 2 +- src/util.h | 2 +- src/wallet.cpp | 2 +- src/wallet.h | 2 +- 32 files changed, 33 insertions(+), 32 deletions(-) diff --git a/src/base58.h b/src/base58.h index d7fedb1a741..d92054da042 100644 --- a/src/base58.h +++ b/src/base58.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2011 The Bitcoin Developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. // diff --git a/src/bignum.h b/src/bignum.h index fd5364e810a..bd42f77ce00 100644 --- a/src/bignum.h +++ b/src/bignum.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2011 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_BIGNUM_H #define BITCOIN_BIGNUM_H diff --git a/src/bitcoinrpc.cpp b/src/bitcoinrpc.cpp index 2f42fae1ee9..4003f525aab 100644 --- a/src/bitcoinrpc.cpp +++ b/src/bitcoinrpc.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" #include "db.h" diff --git a/src/bitcoinrpc.h b/src/bitcoinrpc.h index f2674007973..890975eb2fe 100644 --- a/src/bitcoinrpc.h +++ b/src/bitcoinrpc.h @@ -1,7 +1,7 @@ // Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2011 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. void ThreadRPCServer(void* parg); int CommandLineRPC(int argc, char *argv[]); diff --git a/src/checkpoints.cpp b/src/checkpoints.cpp index f5ce053870f..ee74d259302 100644 --- a/src/checkpoints.cpp +++ b/src/checkpoints.cpp @@ -1,6 +1,6 @@ // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include // for 'map_list_of()' #include diff --git a/src/checkpoints.h b/src/checkpoints.h index 9d52da404fb..e38b8b5f892 100644 --- a/src/checkpoints.h +++ b/src/checkpoints.h @@ -1,6 +1,6 @@ // Copyright (c) 2011 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_CHECKPOINT_H #define BITCOIN_CHECKPOINT_H diff --git a/src/db.cpp b/src/db.cpp index db206c78421..02b3327bee7 100644 --- a/src/db.cpp +++ b/src/db.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" #include "db.h" diff --git a/src/db.h b/src/db.h index 15bfb29c8e9..8f6c42d7337 100644 --- a/src/db.h +++ b/src/db.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2011 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_DB_H #define BITCOIN_DB_H diff --git a/src/headers.h b/src/headers.h index ea011c56568..cef2718c9a3 100644 --- a/src/headers.h +++ b/src/headers.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifdef _MSC_VER #pragma warning(disable:4786) diff --git a/src/init.cpp b/src/init.cpp index 168ebee67d6..5f1e4f53071 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" #include "db.h" #include "bitcoinrpc.h" diff --git a/src/init.h b/src/init.h index 4017f25707b..2086b31348e 100644 --- a/src/init.h +++ b/src/init.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2011 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_INIT_H #define BITCOIN_INIT_H diff --git a/src/irc.cpp b/src/irc.cpp index 5ac2306f164..76157bd034a 100644 --- a/src/irc.cpp +++ b/src/irc.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" #include "irc.h" diff --git a/src/irc.h b/src/irc.h index 6945b2cecb7..4fc071f086c 100644 --- a/src/irc.h +++ b/src/irc.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2011 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_IRC_H #define BITCOIN_IRC_H diff --git a/src/key.h b/src/key.h index d096b394d99..4dc4914bdc1 100644 --- a/src/key.h +++ b/src/key.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_KEY_H #define BITCOIN_KEY_H diff --git a/src/keystore.cpp b/src/keystore.cpp index 2e4de87af5e..7836ceda5d1 100644 --- a/src/keystore.cpp +++ b/src/keystore.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2011 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" #include "db.h" diff --git a/src/keystore.h b/src/keystore.h index 8aaf3e64407..87c84010d89 100644 --- a/src/keystore.h +++ b/src/keystore.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2011 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_KEYSTORE_H #define BITCOIN_KEYSTORE_H diff --git a/src/main.cpp b/src/main.cpp index a5eac010ccf..36871b5a068 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,7 +1,8 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include "headers.h" #include "checkpoints.h" #include "db.h" diff --git a/src/main.h b/src/main.h index 4b7e1948fca..f2350cfc7b5 100644 --- a/src/main.h +++ b/src/main.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_MAIN_H #define BITCOIN_MAIN_H diff --git a/src/net.cpp b/src/net.cpp index e92c659a394..e1eea0d1b3d 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" #include "irc.h" diff --git a/src/net.h b/src/net.h index 5666805d58a..96e3680d380 100644 --- a/src/net.h +++ b/src/net.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_NET_H #define BITCOIN_NET_H diff --git a/src/noui.h b/src/noui.h index 0bbf45a72ac..4ba496bf78b 100644 --- a/src/noui.h +++ b/src/noui.h @@ -1,7 +1,7 @@ // Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2011 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_NOUI_H #define BITCOIN_NOUI_H diff --git a/src/protocol.cpp b/src/protocol.cpp index 16ad7468e1e..3376c37e7bf 100644 --- a/src/protocol.cpp +++ b/src/protocol.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2011 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "protocol.h" #include "util.h" diff --git a/src/protocol.h b/src/protocol.h index c8723fa3ea8..2d90bafe613 100644 --- a/src/protocol.h +++ b/src/protocol.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2011 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef __cplusplus # error This header can only be compiled as C++. diff --git a/src/qtui.h b/src/qtui.h index 193f849249e..8f3e139ec8e 100644 --- a/src/qtui.h +++ b/src/qtui.h @@ -1,6 +1,6 @@ // Copyright (c) 2010 Satoshi Nakamoto // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_EXTERNUI_H #define BITCOIN_EXTERNUI_H diff --git a/src/script.cpp b/src/script.cpp index a7e4d3e2805..bbb32f68c7d 100644 --- a/src/script.cpp +++ b/src/script.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2011 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" using namespace std; diff --git a/src/script.h b/src/script.h index 7d15bbaebe0..502bce1e54f 100644 --- a/src/script.h +++ b/src/script.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2011 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef H_BITCOIN_SCRIPT #define H_BITCOIN_SCRIPT diff --git a/src/serialize.h b/src/serialize.h index e414bd07aac..b1fabb7a0e9 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_SERIALIZE_H #define BITCOIN_SERIALIZE_H diff --git a/src/uint256.h b/src/uint256.h index 320ee7e95a0..b7a5c3bf776 100644 --- a/src/uint256.h +++ b/src/uint256.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2011 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_UINT256_H #define BITCOIN_UINT256_H diff --git a/src/util.cpp b/src/util.cpp index 66161c7e5a6..be6267688c3 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" #include "strlcpy.h" diff --git a/src/util.h b/src/util.h index 45b14420f19..da8e7630b8a 100644 --- a/src/util.h +++ b/src/util.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_UTIL_H #define BITCOIN_UTIL_H diff --git a/src/wallet.cpp b/src/wallet.cpp index 7d1266e80d2..3cce33608f8 100644 --- a/src/wallet.cpp +++ b/src/wallet.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2011 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" #include "db.h" diff --git a/src/wallet.h b/src/wallet.h index 90ee518ae44..7fb1a19ef1a 100644 --- a/src/wallet.h +++ b/src/wallet.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_WALLET_H #define BITCOIN_WALLET_H From 58ac600b2c94f12309fc5e18933891590dc1eb4c Mon Sep 17 00:00:00 2001 From: Fordy Date: Fri, 18 May 2012 22:02:28 +0800 Subject: [PATCH 274/298] Update License in File Headers I originally created a pull to replace the "COPYING" in crypter.cpp and crypter.h, but it turned out that COPYING was actually the correct file. --- src/base58.h | 2 +- src/bignum.h | 2 +- src/checkpoints.cpp | 2 +- src/checkpoints.h | 2 +- src/db.cpp | 2 +- src/db.h | 2 +- src/headers.h | 2 +- src/init.cpp | 2 +- src/init.h | 2 +- src/irc.cpp | 2 +- src/irc.h | 2 +- src/key.h | 2 +- src/keystore.cpp | 2 +- src/keystore.h | 2 +- src/main.cpp | 3 ++- src/main.h | 2 +- src/net.cpp | 2 +- src/net.h | 2 +- src/noui.h | 2 +- src/protocol.cpp | 2 +- src/protocol.h | 2 +- src/rpc.cpp | 2 +- src/rpc.h | 2 +- src/script.cpp | 2 +- src/script.h | 2 +- src/serialize.h | 2 +- src/ui.cpp | 2 +- src/ui.h | 2 +- src/uibase.cpp | 2 +- src/uint256.h | 2 +- src/util.cpp | 2 +- src/util.h | 2 +- src/wallet.cpp | 2 +- src/wallet.h | 2 +- src/xpm/about.xpm | 2 +- 35 files changed, 36 insertions(+), 35 deletions(-) diff --git a/src/base58.h b/src/base58.h index fe1927255c4..43f3ac2881e 100644 --- a/src/base58.h +++ b/src/base58.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2011 The Bitcoin Developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. // diff --git a/src/bignum.h b/src/bignum.h index fd5364e810a..bd42f77ce00 100644 --- a/src/bignum.h +++ b/src/bignum.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2011 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_BIGNUM_H #define BITCOIN_BIGNUM_H diff --git a/src/checkpoints.cpp b/src/checkpoints.cpp index f5ce053870f..ee74d259302 100644 --- a/src/checkpoints.cpp +++ b/src/checkpoints.cpp @@ -1,6 +1,6 @@ // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include // for 'map_list_of()' #include diff --git a/src/checkpoints.h b/src/checkpoints.h index 9d52da404fb..e38b8b5f892 100644 --- a/src/checkpoints.h +++ b/src/checkpoints.h @@ -1,6 +1,6 @@ // Copyright (c) 2011 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_CHECKPOINT_H #define BITCOIN_CHECKPOINT_H diff --git a/src/db.cpp b/src/db.cpp index 4c0c557a5a8..68d317106da 100644 --- a/src/db.cpp +++ b/src/db.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" #include "db.h" diff --git a/src/db.h b/src/db.h index 15bfb29c8e9..8f6c42d7337 100644 --- a/src/db.h +++ b/src/db.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2011 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_DB_H #define BITCOIN_DB_H diff --git a/src/headers.h b/src/headers.h index 88a16d96d7b..537d405b880 100644 --- a/src/headers.h +++ b/src/headers.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifdef _MSC_VER #pragma warning(disable:4786) diff --git a/src/init.cpp b/src/init.cpp index 2dccc81bf56..393d250003a 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" #include "db.h" #include "rpc.h" diff --git a/src/init.h b/src/init.h index 4017f25707b..2086b31348e 100644 --- a/src/init.h +++ b/src/init.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2011 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_INIT_H #define BITCOIN_INIT_H diff --git a/src/irc.cpp b/src/irc.cpp index 5ac2306f164..76157bd034a 100644 --- a/src/irc.cpp +++ b/src/irc.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" #include "irc.h" diff --git a/src/irc.h b/src/irc.h index 6945b2cecb7..4fc071f086c 100644 --- a/src/irc.h +++ b/src/irc.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2011 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_IRC_H #define BITCOIN_IRC_H diff --git a/src/key.h b/src/key.h index 6bf750847ee..77b6aeaaa0f 100644 --- a/src/key.h +++ b/src/key.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_KEY_H #define BITCOIN_KEY_H diff --git a/src/keystore.cpp b/src/keystore.cpp index 2e4de87af5e..7836ceda5d1 100644 --- a/src/keystore.cpp +++ b/src/keystore.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2011 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" #include "db.h" diff --git a/src/keystore.h b/src/keystore.h index cb297c35ab5..fa70933d7cd 100644 --- a/src/keystore.h +++ b/src/keystore.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2011 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_KEYSTORE_H #define BITCOIN_KEYSTORE_H diff --git a/src/main.cpp b/src/main.cpp index 510aca92b47..1925c13185e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,7 +1,8 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include "headers.h" #include "checkpoints.h" #include "db.h" diff --git a/src/main.h b/src/main.h index e835cdd7bb6..b1c78854a11 100644 --- a/src/main.h +++ b/src/main.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_MAIN_H #define BITCOIN_MAIN_H diff --git a/src/net.cpp b/src/net.cpp index 5135a88b32d..04d278c9f17 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" #include "irc.h" diff --git a/src/net.h b/src/net.h index 24ab43a503d..069328de568 100644 --- a/src/net.h +++ b/src/net.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_NET_H #define BITCOIN_NET_H diff --git a/src/noui.h b/src/noui.h index cbe6fa4c7b1..ad05e1c7642 100644 --- a/src/noui.h +++ b/src/noui.h @@ -1,7 +1,7 @@ // Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2011 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_NOUI_H #define BITCOIN_NOUI_H diff --git a/src/protocol.cpp b/src/protocol.cpp index 7d80d5d5d0d..a22eba48915 100644 --- a/src/protocol.cpp +++ b/src/protocol.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2011 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "protocol.h" #include "util.h" diff --git a/src/protocol.h b/src/protocol.h index 6db64900f23..274b0d34964 100644 --- a/src/protocol.h +++ b/src/protocol.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2011 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef __cplusplus # error This header can only be compiled as C++. diff --git a/src/rpc.cpp b/src/rpc.cpp index e2ae17e47b2..acd7a8933ab 100644 --- a/src/rpc.cpp +++ b/src/rpc.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" #include "cryptopp/sha.h" diff --git a/src/rpc.h b/src/rpc.h index f2674007973..890975eb2fe 100644 --- a/src/rpc.h +++ b/src/rpc.h @@ -1,7 +1,7 @@ // Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2011 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. void ThreadRPCServer(void* parg); int CommandLineRPC(int argc, char *argv[]); diff --git a/src/script.cpp b/src/script.cpp index 377a7abb28a..e7664d2cfcf 100644 --- a/src/script.cpp +++ b/src/script.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2011 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" using namespace std; diff --git a/src/script.h b/src/script.h index 7d15bbaebe0..502bce1e54f 100644 --- a/src/script.h +++ b/src/script.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2011 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef H_BITCOIN_SCRIPT #define H_BITCOIN_SCRIPT diff --git a/src/serialize.h b/src/serialize.h index 30cde6c38c3..e3c3210e02b 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_SERIALIZE_H #define BITCOIN_SERIALIZE_H diff --git a/src/ui.cpp b/src/ui.cpp index bfb708b3e90..1fcfff6cc12 100644 --- a/src/ui.cpp +++ b/src/ui.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2011 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" #include "db.h" diff --git a/src/ui.h b/src/ui.h index 2a128a7bac3..9ee55b74631 100644 --- a/src/ui.h +++ b/src/ui.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2011 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_UI_H #define BITCOIN_UI_H diff --git a/src/uibase.cpp b/src/uibase.cpp index 6d219ad6678..4d9a2cbd9f3 100644 --- a/src/uibase.cpp +++ b/src/uibase.cpp @@ -532,7 +532,7 @@ CAboutDialogBase::CAboutDialogBase( wxWindow* parent, wxWindowID id, const wxStr bSizer631->Add( 0, 4, 0, wxEXPAND, 5 ); - m_staticTextMain = new wxStaticText( this, wxID_ANY, _("Copyright (c) 2009-2011 Bitcoin Developers\n\nThis is experimental software.\n\nDistributed under the MIT/X11 software license, see the accompanying file \nlicense.txt or http://www.opensource.org/licenses/mit-license.php.\n\nThis product includes software developed by the OpenSSL Project for use in the \nOpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by \nEric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard."), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextMain = new wxStaticText( this, wxID_ANY, _("Copyright (c) 2009-2011 Bitcoin Developers\n\nThis is experimental software.\n\nDistributed under the MIT/X11 software license, see the accompanying file \nCOPYING or http://www.opensource.org/licenses/mit-license.php.\n\nThis product includes software developed by the OpenSSL Project for use in the \nOpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by \nEric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard."), wxDefaultPosition, wxDefaultSize, 0 ); m_staticTextMain->Wrap( -1 ); bSizer631->Add( m_staticTextMain, 0, wxALL, 5 ); diff --git a/src/uint256.h b/src/uint256.h index 320ee7e95a0..b7a5c3bf776 100644 --- a/src/uint256.h +++ b/src/uint256.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2011 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_UINT256_H #define BITCOIN_UINT256_H diff --git a/src/util.cpp b/src/util.cpp index 766c3ab4477..6dc2f3b6da2 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" #include "strlcpy.h" diff --git a/src/util.h b/src/util.h index 4e4cbb9f602..88cc1e79ea0 100644 --- a/src/util.h +++ b/src/util.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_UTIL_H #define BITCOIN_UTIL_H diff --git a/src/wallet.cpp b/src/wallet.cpp index 6bf8e582f84..973727b2017 100644 --- a/src/wallet.cpp +++ b/src/wallet.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2011 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "headers.h" #include "db.h" diff --git a/src/wallet.h b/src/wallet.h index ea7b279268d..e23f4877268 100644 --- a/src/wallet.h +++ b/src/wallet.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_WALLET_H #define BITCOIN_WALLET_H diff --git a/src/xpm/about.xpm b/src/xpm/about.xpm index 3fa868ca763..fea1fb05e85 100644 --- a/src/xpm/about.xpm +++ b/src/xpm/about.xpm @@ -1,6 +1,6 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. /* XPM */ static const char * about_xpm[] = { /* columns rows colors chars-per-pixel */ From 087fc28f7d4e82a0b79dabbaa19358e48d3084fe Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Thu, 17 May 2012 12:10:15 +0200 Subject: [PATCH 275/298] Filter out whitespace and zero-width non-breaking spaces in validator - Fixes issues with copy/pasting from web or html emails (#1325) --- src/qt/bitcoinaddressvalidator.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/qt/bitcoinaddressvalidator.cpp b/src/qt/bitcoinaddressvalidator.cpp index 373877808f7..c804ad0d576 100644 --- a/src/qt/bitcoinaddressvalidator.cpp +++ b/src/qt/bitcoinaddressvalidator.cpp @@ -21,9 +21,12 @@ BitcoinAddressValidator::BitcoinAddressValidator(QObject *parent) : QValidator::State BitcoinAddressValidator::validate(QString &input, int &pos) const { // Correction - for(int idx=0; idx Date: Tue, 22 May 2012 12:06:08 +0100 Subject: [PATCH 276/298] Correct debug.log output to show correct function the debug is coming from. --- src/main.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 1925c13185e..ee814aa5526 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2580,7 +2580,7 @@ bool ProcessMessages(CNode* pfrom) unsigned int nMessageSize = hdr.nMessageSize; if (nMessageSize > MAX_SIZE) { - printf("ProcessMessage(%s, %u bytes) : nMessageSize > MAX_SIZE\n", strCommand.c_str(), nMessageSize); + printf("ProcessMessages(%s, %u bytes) : nMessageSize > MAX_SIZE\n", strCommand.c_str(), nMessageSize); continue; } if (nMessageSize > vRecv.size()) @@ -2598,7 +2598,7 @@ bool ProcessMessages(CNode* pfrom) memcpy(&nChecksum, &hash, sizeof(nChecksum)); if (nChecksum != hdr.nChecksum) { - printf("ProcessMessage(%s, %u bytes) : CHECKSUM ERROR nChecksum=%08x hdr.nChecksum=%08x\n", + printf("ProcessMessages(%s, %u bytes) : CHECKSUM ERROR nChecksum=%08x hdr.nChecksum=%08x\n", strCommand.c_str(), nMessageSize, nChecksum, hdr.nChecksum); continue; } @@ -2622,22 +2622,22 @@ bool ProcessMessages(CNode* pfrom) if (strstr(e.what(), "end of data")) { // Allow exceptions from underlength message on vRecv - printf("ProcessMessage(%s, %u bytes) : Exception '%s' caught, normally caused by a message being shorter than its stated length\n", strCommand.c_str(), nMessageSize, e.what()); + printf("ProcessMessages(%s, %u bytes) : Exception '%s' caught, normally caused by a message being shorter than its stated length\n", strCommand.c_str(), nMessageSize, e.what()); } else if (strstr(e.what(), "size too large")) { // Allow exceptions from overlong size - printf("ProcessMessage(%s, %u bytes) : Exception '%s' caught\n", strCommand.c_str(), nMessageSize, e.what()); + printf("ProcessMessages(%s, %u bytes) : Exception '%s' caught\n", strCommand.c_str(), nMessageSize, e.what()); } else { - PrintExceptionContinue(&e, "ProcessMessage()"); + PrintExceptionContinue(&e, "ProcessMessages()"); } } catch (std::exception& e) { - PrintExceptionContinue(&e, "ProcessMessage()"); + PrintExceptionContinue(&e, "ProcessMessages()"); } catch (...) { - PrintExceptionContinue(NULL, "ProcessMessage()"); + PrintExceptionContinue(NULL, "ProcessMessages()"); } if (!fRet) From d7534272c62583320dc8d4a1ea71a41c715ef559 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Tue, 22 May 2012 18:28:10 +0200 Subject: [PATCH 277/298] Remove duplicate behavior on MacOSX Dock icon on macosx already has show/hide functionality. This results in erratic behavior. --- src/qt/bitcoingui.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index bcf90917ed7..e776f3537b0 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -385,7 +385,6 @@ void BitcoinGUI::createTrayIcon() #else // Note: On Mac, the dock icon is used to provide the tray's functionality. MacDockIconHandler *dockIconHandler = MacDockIconHandler::instance(); - connect(dockIconHandler, SIGNAL(dockIconClicked()), toggleHideAction, SLOT(trigger())); trayIconMenu = dockIconHandler->dockMenu(); #endif From b6862f7b74d0ea7442cf3b9eec7b9556ca47ce4b Mon Sep 17 00:00:00 2001 From: Jeff Garzik Date: Tue, 22 May 2012 15:12:52 -0400 Subject: [PATCH 278/298] Prevent crashes due to missing or corrupted database records Any problems seen during deserialization will throw an uncaught exception, crashing the entire bitcoin process. Properly return an error instead, so that we may at least log the error and gracefully shutdown other portions of the app. --- src/db.cpp | 16 ++++++++++++++-- src/db.h | 9 +++++++-- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/db.cpp b/src/db.cpp index 68d317106da..d509253e4e2 100644 --- a/src/db.cpp +++ b/src/db.cpp @@ -390,9 +390,15 @@ bool CTxDB::ReadOwnerTxes(uint160 hash160, int nMinHeight, vector& string strType; uint160 hashItem; CDiskTxPos pos; - ssKey >> strType >> hashItem >> pos; int nItemHeight; - ssValue >> nItemHeight; + + try { + ssKey >> strType >> hashItem >> pos; + ssValue >> nItemHeight; + } + catch (std::exception &e) { + return error("%s() : deserialize error", __PRETTY_FUNCTION__); + } // Read transaction if (strType != "owner" || hashItem != hash160) @@ -512,6 +518,8 @@ bool CTxDB::LoadBlockIndex() return false; // Unserialize + + try { string strType; ssKey >> strType; if (strType == "blockindex") @@ -543,6 +551,10 @@ bool CTxDB::LoadBlockIndex() { break; } + } // try + catch (std::exception &e) { + return error("%s() : deserialize error", __PRETTY_FUNCTION__); + } } pcursor->close(); diff --git a/src/db.h b/src/db.h index 8f6c42d7337..551e0934432 100644 --- a/src/db.h +++ b/src/db.h @@ -72,8 +72,13 @@ protected: return false; // Unserialize value - CDataStream ssValue((char*)datValue.get_data(), (char*)datValue.get_data() + datValue.get_size(), SER_DISK); - ssValue >> value; + try { + CDataStream ssValue((char*)datValue.get_data(), (char*)datValue.get_data() + datValue.get_size(), SER_DISK); + ssValue >> value; + } + catch (std::exception &e) { + return false; + } // Clear and free memory memset(datValue.get_data(), 0, datValue.get_size()); From a2de1ea2d5776289c247bbc18c1ed13e16a4169f Mon Sep 17 00:00:00 2001 From: Jeff Garzik Date: Tue, 22 May 2012 15:23:17 -0400 Subject: [PATCH 279/298] Prevent crashes due to missing or corrupted blk????.dat records --- src/main.h | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/main.h b/src/main.h index b1c78854a11..44624f5cf70 100644 --- a/src/main.h +++ b/src/main.h @@ -601,7 +601,13 @@ public: // Read transaction if (fseek(filein, pos.nTxPos, SEEK_SET) != 0) return error("CTransaction::ReadFromDisk() : fseek failed"); - filein >> *this; + + try { + filein >> *this; + } + catch (std::exception &e) { + return error("%s() : deserialize or I/O error", __PRETTY_FUNCTION__); + } // Return file pointer if (pfileRet) @@ -993,7 +999,12 @@ public: filein.nType |= SER_BLOCKHEADERONLY; // Read block - filein >> *this; + try { + filein >> *this; + } + catch (std::exception &e) { + return error("%s() : deserialize or I/O error", __PRETTY_FUNCTION__); + } // Check the header if (!CheckProofOfWork(GetHash(), nBits)) From 17badef789bf74fb3f4c5d95ac59c080ae656201 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Sat, 12 May 2012 17:44:14 +0200 Subject: [PATCH 280/298] Do not signal outbound semaphore if uninitialized --- src/net.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/net.cpp b/src/net.cpp index 1227412fe48..37b01f75990 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1703,8 +1703,9 @@ bool StopNode() fShutdown = true; nTransactionsUpdated++; int64 nStart = GetTime(); - for (int i=0; ipost(); + if (semOutbound) + for (int i=0; ipost(); do { int nThreadsRunning = 0; From 82a227b263fa7d4caee454884661548f7415b9d7 Mon Sep 17 00:00:00 2001 From: Jeff Garzik Date: Wed, 23 May 2012 21:45:26 -0400 Subject: [PATCH 281/298] .gitignore: add test_bitcoin --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index c1d06a3dfba..7fc31bb8057 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ src/*.exe src/bitcoin src/bitcoind +src/test_bitcoin .*.swp *.*~* *.bak From 7c4de78a5c5ce2d68173a7e54db981f682665f3a Mon Sep 17 00:00:00 2001 From: Chris Moore Date: Sun, 3 Jun 2012 16:11:11 -0700 Subject: [PATCH 282/298] "USE_UPNP=-" is needed to remove UPnP support. --- doc/build-unix.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/build-unix.txt b/doc/build-unix.txt index f4178caae54..0d335dfa23a 100644 --- a/doc/build-unix.txt +++ b/doc/build-unix.txt @@ -33,7 +33,7 @@ Dependencies miniupnpc may be used for UPnP port mapping. It can be downloaded from http://miniupnp.tuxfamily.org/files/. UPnP support is compiled in and turned off by default. Set USE_UPNP to a different value to control this: - USE_UPNP= No UPnP support - miniupnp not required + USE_UPNP=- No UPnP support - miniupnp not required USE_UPNP=0 (the default) UPnP support turned off by default at runtime USE_UPNP=1 UPnP support turned on by default at runtime From fdd907c9f12d5435dcd23f45c54f803cb3854a89 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Sat, 2 Jun 2012 16:33:46 +0200 Subject: [PATCH 283/298] Correct blockchain size in contrib/debian. * Updates package description to note that blockchain now takes 2+ GB instead of 150+ MB. (PARTIAL of 8f6111bb9cd598954e9634d9fe4500fcf5ae83de) --- contrib/debian/control | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contrib/debian/control b/contrib/debian/control index c41664ca6f9..9152339c4ee 100644 --- a/contrib/debian/control +++ b/contrib/debian/control @@ -34,7 +34,7 @@ Description: peer-to-peer network based digital currency - daemon By default connects to an IRC network to discover other peers. . Full transaction history is stored locally at each client. This - requires 150+ MB of space, slowly growing. + requires 2+ GB of space, slowly growing. . This package provides bitcoind, a combined daemon and CLI tool to interact with the daemon. @@ -52,6 +52,6 @@ Description: peer-to-peer network based digital currency - QT GUI By default connects to an IRC network to discover other peers. . Full transaction history is stored locally at each client. This - requires 150+ MB of space, slowly growing. + requires 2+ GB of space, slowly growing. . This package provides bitcoin-qt, a GUI for Bitcoin based on QT. From a0ea95d3ceacea5868b8f921c36bbdddb5dc2b1b Mon Sep 17 00:00:00 2001 From: Michael Hendricks Date: Fri, 2 Mar 2012 12:24:38 -0700 Subject: [PATCH 284/298] Serialize access to debug.log stream Acquire an exclusive, advisory lock before sending output to debug.log and release it when we're done. This should avoid output from multiple threads being interspersed in the log file. We can't use CRITICAL_SECTION machinery for this because the debug log is written during startup and shutdown when that machinery is not available. (Thanks to Gavin for pointing out the CRITICAL_SECTION problems based on his earlier work in this area) --- src/util.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/util.cpp b/src/util.cpp index 6dc2f3b6da2..ccd39aa2296 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -22,6 +22,7 @@ namespace boost { #include #include #include +#include using namespace std; using namespace boost; @@ -193,6 +194,8 @@ inline int OutputDebugStringF(const char* pszFormat, ...) if (fileout) { static bool fStartedNewLine = true; + static boost::mutex mutexDebugLog; + boost::mutex::scoped_lock scoped_lock(mutexDebugLog); // Debug print useful for profiling if (fLogTimestamps && fStartedNewLine) From af413c0a0ff507da69afae6399bf3ff3fbf0774b Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Tue, 8 May 2012 23:02:48 +0200 Subject: [PATCH 285/298] fix an incorrect if-clause in net.cpp --- src/net.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/net.cpp b/src/net.cpp index 04d278c9f17..a9f6c87bc7b 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -868,7 +868,7 @@ void ThreadSocketHandler2(void* parg) if (nSelect == SOCKET_ERROR) { int nErr = WSAGetLastError(); - if (hSocketMax > -1) + if (hSocketMax != INVALID_SOCKET) { printf("socket select error %d\n", nErr); for (unsigned int i = 0; i <= hSocketMax; i++) From 722ff53718333dc290760d528b7a561d29ab41a8 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Wed, 6 Jun 2012 20:00:22 +0000 Subject: [PATCH 286/298] Bugfix: Allow tray icon to linger until Bitcoin-Qt shuts down completely. Fixes #908 Upstream commit: 7cfbe1fee465e82ddbdc8ed17dfcce791bd765f5 --- src/qt/bitcoingui.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index e5e3572d244..175fc4f4933 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -165,8 +165,6 @@ BitcoinGUI::BitcoinGUI(QWidget *parent): BitcoinGUI::~BitcoinGUI() { - if(trayIcon) // Hide tray icon, as deleting will let it linger until quit (on Ubuntu) - trayIcon->hide(); #ifdef Q_WS_MAC delete appMenuBar; #endif From 9a48f56fb02338b7f68ab9fd469abc1abe0011c3 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Tue, 12 Jun 2012 23:50:38 +0000 Subject: [PATCH 287/298] Bugfix: Move IsStandard scriptSig size check out of IsPushOnly, since BIP16 verification uses the latter too This caused clients to reject block #177618 since it has a P2SH transaction with over 200 bytes in scriptSig. (Upstream commit: e679ec969c8b22c676ebb10bea1038f6c8f13b33) --- src/main.h | 2 +- src/script.h | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main.h b/src/main.h index 44624f5cf70..930f5187d92 100644 --- a/src/main.h +++ b/src/main.h @@ -507,7 +507,7 @@ public: bool IsStandard() const { BOOST_FOREACH(const CTxIn& txin, vin) - if (!txin.scriptSig.IsPushOnly()) + if (txin.scriptSig.size() > 200 || !txin.scriptSig.IsPushOnly()) return error("nonstandard txin: %s", txin.scriptSig.ToString().c_str()); BOOST_FOREACH(const CTxOut& txout, vout) if (!::IsStandard(txout.scriptPubKey)) diff --git a/src/script.h b/src/script.h index 502bce1e54f..8dddb893f43 100644 --- a/src/script.h +++ b/src/script.h @@ -623,8 +623,6 @@ public: bool IsPushOnly() const { - if (size() > 200) - return false; const_iterator pc = begin(); while (pc < end()) { From 9849f50b6866f326040622f124601efaa8c37434 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Thu, 14 Jun 2012 15:59:18 +0000 Subject: [PATCH 288/298] Bump VERSION so we can differentiate between fixed 0.4.7rc2 and not-fixed 0.4.7rc1 --- src/serialize.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/serialize.h b/src/serialize.h index e3c3210e02b..db3c9636540 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -59,7 +59,7 @@ class CDataStream; class CAutoFile; static const unsigned int MAX_SIZE = 0x02000000; -static const int VERSION = 40700; +static const int VERSION = 40701; static const char* pszSubVer = ""; static const bool VERSION_IS_BETA = true; From 01ed45cbbcefc0448de86b4196caa5b1a0ab6ce5 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Fri, 8 Jun 2012 16:26:27 +0200 Subject: [PATCH 289/298] Update comment about secure_allocator<> --- src/allocators.h | 1 - 1 file changed, 1 deletion(-) diff --git a/src/allocators.h b/src/allocators.h index 4b3356e874e..ddeabc48c5a 100644 --- a/src/allocators.h +++ b/src/allocators.h @@ -117,7 +117,6 @@ struct zero_after_free_allocator : public std::allocator }; // This is exactly like std::string, but with a custom allocator. -// (secure_allocator<> is defined in serialize.h) typedef std::basic_string, secure_allocator > SecureString; #endif From b825e816e422becd7c86cdeafc29952e29ffc0d0 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Tue, 12 Jun 2012 10:46:24 +0200 Subject: [PATCH 290/298] Do not select first address automatically in the address book This contributed to an accidental send (#1384), and has no clear advantage, better to disable it. --- src/qt/addressbookpage.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/qt/addressbookpage.cpp b/src/qt/addressbookpage.cpp index 2c4407a81da..bd211039b36 100644 --- a/src/qt/addressbookpage.cpp +++ b/src/qt/addressbookpage.cpp @@ -90,11 +90,6 @@ void AddressBookPage::setModel(AddressTableModel *model) connect(ui->tableView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(selectionChanged())); - if(mode == ForSending) - { - // Auto-select first row when in sending mode - ui->tableView->selectRow(0); - } selectionChanged(); } From 1903033bad6099689f955698c8cc2b4a92cdc412 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Tue, 12 Jun 2012 01:52:34 +0200 Subject: [PATCH 291/298] Fix broken config files --- contrib/gitian-downloader/linux-download-config | 2 +- contrib/gitian-downloader/win32-download-config | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/contrib/gitian-downloader/linux-download-config b/contrib/gitian-downloader/linux-download-config index 88e48e2c23f..aef614d0caa 100644 --- a/contrib/gitian-downloader/linux-download-config +++ b/contrib/gitian-downloader/linux-download-config @@ -31,7 +31,7 @@ signers: weight: 40 name: "Gavin Andresen" key: gavinandresen - 71A3B16735405025D447E8F274810B012346C9A6 + 71A3B16735405025D447E8F274810B012346C9A6: weight: 40 name: "Wladimir J. van der Laan" key: laanwj diff --git a/contrib/gitian-downloader/win32-download-config b/contrib/gitian-downloader/win32-download-config index 595626f28f9..0f7032e6438 100644 --- a/contrib/gitian-downloader/win32-download-config +++ b/contrib/gitian-downloader/win32-download-config @@ -31,7 +31,7 @@ signers: weight: 40 name: "Gavin Andresen" key: gavinandresen - 71A3B16735405025D447E8F274810B012346C9A6 + 71A3B16735405025D447E8F274810B012346C9A6: weight: 40 name: "Wladimir J. van der Laan" key: laanwj From 5482b5d23b312c07fc686cf4563a6c6dc222064c Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Sun, 6 May 2012 16:57:12 +0200 Subject: [PATCH 292/298] removed ability to translate "0 BTC" and "123.456 BTC" as this is only used as preview in the Qt Designer anyway (partial of 4295311da34ed8132351855f057decedfe434b44) --- src/qt/forms/overviewpage.ui | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/qt/forms/overviewpage.ui b/src/qt/forms/overviewpage.ui index 3cf7dd0ed34..5c8db6d06da 100644 --- a/src/qt/forms/overviewpage.ui +++ b/src/qt/forms/overviewpage.ui @@ -44,7 +44,7 @@ - 123.456 BTC + 123.456 BTC @@ -72,7 +72,7 @@ - 0 BTC + 0 BTC From a973e225e7d837b098b32f728008ef17b8e1a8e1 Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Mon, 11 Jun 2012 22:40:06 +0200 Subject: [PATCH 293/298] change initial Balance on overviewpage from "123.456 BTC" to "0 BTC" to not confuse users, which could see it before we init with the real wallet balance --- src/qt/forms/overviewpage.ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qt/forms/overviewpage.ui b/src/qt/forms/overviewpage.ui index 5c8db6d06da..10e470e918b 100644 --- a/src/qt/forms/overviewpage.ui +++ b/src/qt/forms/overviewpage.ui @@ -44,7 +44,7 @@ - 123.456 BTC + 0 BTC From ca39829ecb90e392b9722292739585124ba0d7c1 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Wed, 13 Jun 2012 01:06:40 +0200 Subject: [PATCH 294/298] Update wiki changelog at doc/release-process.txt --- doc/release-process.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/release-process.txt b/doc/release-process.txt index 8bf944a29e6..8a236a7933f 100644 --- a/doc/release-process.txt +++ b/doc/release-process.txt @@ -48,4 +48,5 @@ * update wiki download links +* update wiki changelog: https://en.bitcoin.it/wiki/Changelog From 0b1fda6f6542a309d59f511ab1c417f891a7237b Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Mon, 11 Jun 2012 07:40:14 +0200 Subject: [PATCH 295/298] Don't call exit() in Shutdown() for Bitcoin-Qt (fixes a tray-icon issue) (partial of 9247134eaba9a1d0fa74f22de238af1476663005) --- src/init.cpp | 3 +++ src/qt/bitcoin.cpp | 1 + 2 files changed, 4 insertions(+) diff --git a/src/init.cpp b/src/init.cpp index 5f1e4f53071..6b6a743af9a 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -66,7 +66,10 @@ void Shutdown(void* parg) Sleep(50); printf("Bitcoin exiting\n\n"); fExit = true; +#ifndef QT_GUI + // ensure non UI client get's exited here, but let Bitcoin-Qt reach return 0; in bitcoin.cpp exit(0); +#endif } else { diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index 3157eadef85..8dde8f3b29d 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -208,6 +208,7 @@ int main(int argc, char *argv[]) window.hide(); guiref = 0; } + // Shutdown the core and it's threads, but don't exit Bitcoin-Qt here Shutdown(NULL); } else From 276cfd85304be27bb2c04c087c8f3ea25cb6f77d Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Mon, 11 Jun 2012 07:40:14 +0200 Subject: [PATCH 296/298] Bugfix: Fix various places where Bitcoin-Qt was being shutdown improperly (Partial/merge of upstream 9247134eaba9a1d0fa74f22de238af1476663005, 1a3f0da9229a8e524d1010cdc8bd3b9da71fe529, and 3e343522226e6c249f5cb05436eec347b87c6361) --- src/bitcoinrpc.cpp | 13 +++++-------- src/init.cpp | 11 +++++++++++ src/init.h | 1 + src/main.cpp | 2 +- src/net.cpp | 2 +- src/qt/bitcoin.cpp | 5 +++++ src/qt/bitcoingui.cpp | 4 ---- src/qtui.h | 1 + src/test/test_bitcoin.cpp | 2 +- 9 files changed, 26 insertions(+), 15 deletions(-) diff --git a/src/bitcoinrpc.cpp b/src/bitcoinrpc.cpp index 92f2f9ec7c4..38f102e1ae3 100644 --- a/src/bitcoinrpc.cpp +++ b/src/bitcoinrpc.cpp @@ -165,7 +165,8 @@ Value stop(const Array& params, bool fHelp) "Stop bitcoin server."); #ifndef QT_GUI // Shutdown will take long enough that the response should get back - CreateThread(Shutdown, NULL); + // NOTE: This should actually work with Bitcoin-Qt too now, but 0.5.0 didn't allow it + StartShutdown(); return "bitcoin server stopping"; #else throw runtime_error("NYI: cannot shut down GUI with RPC command"); @@ -1587,7 +1588,7 @@ Value encryptwallet(const Array& params, bool fHelp) // BDB seems to have a bad habit of writing old data into // slack space in .dat files; that is bad if the old data is // unencrypted private keys. So: - CreateThread(Shutdown, NULL); + StartShutdown(); return "wallet encrypted; bitcoin server stopping, restart to run with encrypted wallet"; } @@ -2173,10 +2174,6 @@ void ThreadRPCServer(void* parg) printf("ThreadRPCServer exiting\n"); } -#ifdef QT_GUI -extern bool HACK_SHUTDOWN; -#endif - void ThreadRPCServer2(void* parg) { printf("ThreadRPCServer started\n"); @@ -2203,7 +2200,7 @@ void ThreadRPCServer2(void* parg) EncodeBase58(&rand_pwd[0],&rand_pwd[0]+32).c_str()), _("Error"), wxOK | wxMODAL); #ifndef QT_GUI - CreateThread(Shutdown, NULL); + StartShutdown(); #endif return; } @@ -2228,9 +2225,9 @@ void ThreadRPCServer2(void* parg) } catch(boost::system::system_error &e) { - HACK_SHUTDOWN = true; ThreadSafeMessageBox(strprintf(_("An error occured while setting up the RPC port %i for listening: %s"), endpoint.port(), e.what()), _("Error"), wxOK | wxMODAL); + StartShutdown(); return; } #endif diff --git a/src/init.cpp b/src/init.cpp index 6b6a743af9a..31e05514a2d 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -41,6 +41,17 @@ void ExitTimeout(void* parg) #endif } +void StartShutdown() +{ +#ifdef QT_GUI + // ensure we leave the Qt main loop for a clean GUI exit (Shutdown() is called in bitcoin.cpp afterwards) + QueueShutdown(); +#else + // Without UI, Shutdown() can simply be started in a new thread + CreateThread(Shutdown, NULL); +#endif +} + void Shutdown(void* parg) { static CCriticalSection cs_Shutdown; diff --git a/src/init.h b/src/init.h index 2086b31348e..6bf846628ae 100644 --- a/src/init.h +++ b/src/init.h @@ -7,6 +7,7 @@ extern CWallet* pwalletMain; +void StartShutdown(); void Shutdown(void* parg); bool AppInit(int argc, char* argv[]); bool AppInit2(int argc, char* argv[]); diff --git a/src/main.cpp b/src/main.cpp index 792bbe97a42..a28d2e802a4 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1666,7 +1666,7 @@ bool CheckDiskSpace(uint64 nAdditionalBytes) strMiscWarning = strMessage; printf("*** %s\n", strMessage.c_str()); ThreadSafeMessageBox(strMessage, "Bitcoin", wxOK | wxICON_EXCLAMATION); - CreateThread(Shutdown, NULL); + StartShutdown(); return false; } return true; diff --git a/src/net.cpp b/src/net.cpp index e1eea0d1b3d..ebdc1cc1495 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1705,7 +1705,7 @@ void ThreadMessageHandler2(void* parg) vnThreadsRunning[2]--; Sleep(100); if (fRequestShutdown) - Shutdown(NULL); + StartShutdown(); vnThreadsRunning[2]++; if (fShutdown) return; diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index 8dde8f3b29d..6986d39cbf2 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -112,6 +112,11 @@ void InitMessage(const std::string &message) } } +void QueueShutdown() +{ + QMetaObject::invokeMethod(QCoreApplication::instance(), "quit", Qt::QueuedConnection); +} + /* Translate string to current locale using Qt. */ diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index 778acd1e00e..2c807a1ae41 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -519,16 +519,12 @@ void BitcoinGUI::refreshStatusBar() setNumBlocks(clientModel->getNumBlocks()); } -bool HACK_SHUTDOWN = false; - void BitcoinGUI::error(const QString &title, const QString &message, bool modal) { // Report errors from network/worker thread if (modal) { QMessageBox::critical(this, title, message, QMessageBox::Ok, QMessageBox::Ok); - if (HACK_SHUTDOWN) - QMetaObject::invokeMethod(QCoreApplication::instance(), "quit", Qt::QueuedConnection); } else { notificator->notify(Notificator::Critical, title, message); } diff --git a/src/qtui.h b/src/qtui.h index 8f3e139ec8e..52983b87e7b 100644 --- a/src/qtui.h +++ b/src/qtui.h @@ -45,6 +45,7 @@ extern bool ThreadSafeAskFee(int64 nFeeRequired, const std::string& strCaption, extern void CalledSetStatusBar(const std::string& strText, int nField); extern void UIThreadCall(boost::function0 fn); extern void MainFrameRepaint(); +extern void QueueShutdown(); extern void InitMessage(const std::string &message); extern std::string _(const char* psz); diff --git a/src/test/test_bitcoin.cpp b/src/test/test_bitcoin.cpp index 39a7c88e135..ca001b0e67e 100644 --- a/src/test/test_bitcoin.cpp +++ b/src/test/test_bitcoin.cpp @@ -17,7 +17,7 @@ CWallet* pwalletMain; -void Shutdown(void* parg) +void StartShutdown() { exit(0); } From 1bc2f0a37b68aa99e90437105a48c47046b6c0d0 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Thu, 14 Jun 2012 09:41:11 +0200 Subject: [PATCH 297/298] Fix build of testcases after commit 0f10b21719e1b0d9683a142f0a7105e65f095694 --- src/test/test_bitcoin.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/test/test_bitcoin.cpp b/src/test/test_bitcoin.cpp index ca001b0e67e..a21801b5d9b 100644 --- a/src/test/test_bitcoin.cpp +++ b/src/test/test_bitcoin.cpp @@ -17,7 +17,13 @@ CWallet* pwalletMain; +void Shutdown(void* parg) +{ + exit(0); +} + void StartShutdown() { exit(0); } + From 8f0c0c16d384510b07aec3ca2dde2391429f1b0b Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Thu, 14 Jun 2012 18:31:08 +0200 Subject: [PATCH 298/298] Use a 64-bit nonce in ping Former code sent '0' as nonce, which was serialized as 32-bit. --- src/main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index 6e5f9fb871d..d236c6d1d0a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2886,8 +2886,9 @@ bool SendMessages(CNode* pto, bool fSendTrickle) // Keep-alive ping. We send a nonce of zero because we don't use it anywhere // right now. if (pto->nLastSend && GetTime() - pto->nLastSend > 30 * 60 && pto->vSend.empty()) { + uint64 nonce = 0; if (pto->nVersion > BIP0031_VERSION) - pto->PushMessage("ping", 0); + pto->PushMessage("ping", nonce); else pto->PushMessage("ping"); }