diff --git a/.travis.yml b/.travis.yml index 1f0bb56035..2a641bb78a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,12 +21,12 @@ env: - PYTHON_DEBUG=1 - WINEDEBUG=fixme-all matrix: -# ARM - disabled for now, because Xenial has fPIC error with depends that can't be solved. Need to upgrade to Bionic, which is not available. - #- HOST=arm-linux-gnueabihf PACKAGES="g++-arm-linux-gnueabihf zlib1g-dev" GCCFLAGS="-fPIC" DEP_OPTS="NO_QT=1" CHECK_DOC=1 GOAL="install" GRIDCOIN_CONFIG="--enable-glibc-back-compat --disable-tests RUN_TESTS=false" +# ARM + - HOST=arm-linux-gnueabihf PACKAGES="g++-arm-linux-gnueabihf zlib1g-dev" GCCFLAGS="-fPIC" DEP_OPTS="NO_QT=1" CHECK_DOC=1 GOAL="install" GRIDCOIN_CONFIG="--enable-glibc-back-compat --disable-tests RUN_TESTS=false" # Win32 - HOST=i686-w64-mingw32 DPKG_ADD_ARCH="i386" DEP_OPTS="NO_QT=1" PACKAGES="python3 nsis g++-mingw-w64-i686 wine1.6" RUN_TESTS=false GOAL="" GRIDCOIN_CONFIG="--enable-reduce-exports" # Qt5 & system libs - - HOST=x86_64-unknown-linux-gnu PACKAGES="libqt5gui5 libqt5core5a qtbase5-dev libqt5dbus5 qttools5-dev qttools5-dev-tools libssl-dev libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-iostreams-dev libboost-program-options-dev libboost-test-dev libboost-thread-dev libdb5.3++-dev libminiupnpc-dev protobuf-compiler libqrencode-dev xvfb zlib1g-dev" NO_DEPENDS=1 NEED_XVFB=1 RUN_TESTS=true GOAL="install" GRIDCOIN_CONFIG=" --with-incompatible-bdb --enable-reduce-exports --with-gui=qt5" + - HOST=x86_64-unknown-linux-gnu PACKAGES="libqt5gui5 libqt5core5a qtbase5-dev libqt5dbus5 qttools5-dev qttools5-dev-tools libqt5charts5-dev libssl-dev libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-iostreams-dev libboost-program-options-dev libboost-test-dev libboost-thread-dev libdb5.3++-dev libminiupnpc-dev protobuf-compiler libqrencode-dev xvfb zlib1g-dev" NO_DEPENDS=1 NEED_XVFB=1 RUN_TESTS=true GOAL="install" GRIDCOIN_CONFIG=" --with-incompatible-bdb --enable-reduce-exports --with-gui=qt5" # 32-bit + dash - HOST=i686-pc-linux-gnu PACKAGES="g++-multilib" DEP_OPTS="NO_QT=1" RUN_TESTS=false GOAL="install" GRIDCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports LDFLAGS=-static-libstdc++" USE_SHELL="/bin/dash" # Win64 @@ -36,10 +36,10 @@ env: before_install: - export PATH=$(echo $PATH | tr ':' "\n" | sed '/\/opt\/python/d' | tr "\n" ":" | sed "s|::|:|g") - - sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y + #- sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y - sudo apt-get update -q - - sudo apt-get install gcc-7 -y - - sudo apt-get install gcc-5-arm-linux-gnueabihf -y + #- sudo apt-get install gcc-7 -y + #- sudo apt-get install gcc-5-arm-linux-gnueabihf -y install: - if [ -n "$DPKG_ADD_ARCH" ]; then sudo dpkg --add-architecture "$DPKG_ADD_ARCH" ; fi - if [ -n "$PACKAGES" ]; then travis_retry sudo apt-get update; fi diff --git a/CHANGELOG.md b/CHANGELOG.md index d6ea13c626..268af70739 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,51 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). +## [4.0.5.0] 2019-08-20, leisure +### Added + - Add freedesktop.org desktop file and icon set #1438 (@a123b) + - Add warning in help for blockchain scan for importprivkey #1469 (@jamescowens) + - Consolidateunspent rpc function #1472 (@jamescowens) + - Scraper 2.0 improvements #1481, #1488, #1509, and #1514 (@jamescowens, @cyrossignol) + - explorer mode operation + - simplified explainmagnitude output + - improved convergence reporting, including scraper information in the tooltip when fDebug3 is set + - improved statistics and SB contract core caching based on a bClean flag in the cache global + - new SB format and packing for bv11 + - new SB contract hashing (native) for bv11 + - changes to accomodate new beacon approach + - Implement in memory versioning for team file ETags + - Implement local dynamic team requirement removal and whitelist #1502 (@cyrossignol) + +### Changed + - Quiet logging for getmininginfo and scraper INFO logging level #1460 (@jamescowens) + - Spelling corrections #1461, #1462 (@caraka) + - Update crypto module #1453 (@denravonska) + - Update .travis.yml for Bionic #1475 (@jamescowens) + - Create CPID classes and clean up CPID code #1477 (@cyrossignol) + - Refactor researcher context and CPID harvesting #1480 (@cyrossignol) + - Remove boinckey export RPC method and import handler + - Notify when wallet locked in advertisebeacon RPC method #1504 (@cyrossignol) + - Notify when wallet locked in beaconstatus RPC method #1506 (@cyrossignol) + - Change spacer minimum height hint #1511 (@jamescowens) + +### Removed + - Remove safe mode #1434 (@denravonska) + - Remove bitcoin.moc in Makefile.qt.include #1444 (@RoboticMind) + - Clean up legacy Proof-of-Work functions #1497 (@cyrossignol) + +### Fixed + - Constrain walletpassphrase to 10000000 seconds #1459 (@jamescowens) + - Straighten out localization in the scraper. #1471 (@jamescowens) + - Quick fix for rainbymagnitude #1473 (@jamescowens) + - Correct negation error in scraper tooltip for vScrapersNotPublishing #1484 (@jamescowens) + - Fix staked block rejection when active researcher #1485 (@cyrossignol) + - Add back informational magnitude to generated blocks #1489 (@cyrossignol) + - Add back in the in sync check in ScraperGetNeuralContract #1492 (@jamescowens) + - Scraper correct team file processing. #1501 (@jamescowens) + - Have importwallet file path default to datadir #1508 (@jamescowens) + - Scraper add Beacon Map size check to ensure convergence #1515 (@jamescowens) + ## [4.0.4.0] 2019-05-16, leisure ### Fixed - Adds back the new user wizard inadvertently removed #1464 (@jamescowens). diff --git a/configure.ac b/configure.ac index 8ca0d4ffd8..1e6a19fd70 100755 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N) AC_PREREQ([2.60]) define(_CLIENT_VERSION_MAJOR, 4) define(_CLIENT_VERSION_MINOR, 0) -define(_CLIENT_VERSION_REVISION, 4) +define(_CLIENT_VERSION_REVISION, 5) define(_CLIENT_VERSION_BUILD, 0) define(_CLIENT_VERSION_IS_RELEASE, true) define(_COPYRIGHT_YEAR, 2019) @@ -234,12 +234,20 @@ if test "x$CXXFLAGS_overridden" = "xno"; then AX_CHECK_COMPILE_FLAG([-Wimplicit-fallthrough],[CXXFLAGS="$CXXFLAGS -Wno-implicit-fallthrough"],,[[$CXXFLAG_WERROR]]) fi - # Check for optional instruction set support. Enabling these does _not_ imply that all code will - # be compiled with them, rather that specific objects/libs may use them after checking for runtime - # compatibility. - AX_CHECK_COMPILE_FLAG([-msse4.2],[[SSE42_CXXFLAGS="-msse4.2"]],,[[$CXXFLAG_WERROR]]) +enable_hwcrc32=no +enable_sse41=no +enable_avx2=no +enable_shani=no + +if test "x$use_asm" = "xyes"; then + +# Check for optional instruction set support. Enabling these does _not_ imply that all code will +# be compiled with them, rather that specific objects/libs may use them after checking for runtime +# compatibility. +AX_CHECK_COMPILE_FLAG([-msse4.2],[[SSE42_CXXFLAGS="-msse4.2"]],,[[$CXXFLAG_WERROR]]) AX_CHECK_COMPILE_FLAG([-msse4.1],[[SSE41_CXXFLAGS="-msse4.1"]],,[[$CXXFLAG_WERROR]]) AX_CHECK_COMPILE_FLAG([-mavx -mavx2],[[AVX2_CXXFLAGS="-mavx -mavx2"]],,[[$CXXFLAG_WERROR]]) +AX_CHECK_COMPILE_FLAG([-msse4 -msha],[[SHANI_CXXFLAGS="-msse4 -msha"]],,[[$CXXFLAG_WERROR]]) TEMP_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS $SSE42_CXXFLAGS" @@ -301,6 +309,25 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ ) CXXFLAGS="$TEMP_CXXFLAGS" +TEMP_CXXFLAGS="$CXXFLAGS" +CXXFLAGS="$CXXFLAGS $SHANI_CXXFLAGS" +AC_MSG_CHECKING(for SHA-NI intrinsics) +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #include + #include + ]],[[ + __m128i i = _mm_set1_epi32(0); + __m128i j = _mm_set1_epi32(1); + __m128i k = _mm_set1_epi32(2); + return _mm_extract_epi32(_mm_sha256rnds2_epu32(i, i, k), 0); + ]])], + [ AC_MSG_RESULT(yes); enable_shani=yes; AC_DEFINE(ENABLE_SHANI, 1, [Define this symbol to build code that uses SHA-NI intrinsics]) ], + [ AC_MSG_RESULT(no)] +) +CXXFLAGS="$TEMP_CXXFLAGS" + +fi + CPPFLAGS="$CPPFLAGS -DBOOST_SPIRIT_THREADSAFE -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS" AC_ARG_WITH([utils], @@ -1115,6 +1142,7 @@ AM_CONDITIONAL([HARDEN],[test x$use_hardening = xyes]) AM_CONDITIONAL([ENABLE_HWCRC32],[test x$enable_hwcrc32 = xyes]) AM_CONDITIONAL([ENABLE_SSE41],[test x$enable_sse41 = xyes]) AM_CONDITIONAL([ENABLE_AVX2],[test x$enable_avx2 = xyes]) +AM_CONDITIONAL([ENABLE_SHANI],[test x$enable_shani = xyes]) AM_CONDITIONAL([USE_ASM],[test x$use_asm = xyes]) AC_DEFINE(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR, [Major version]) @@ -1149,6 +1177,7 @@ AC_SUBST(PIE_FLAGS) AC_SUBST(SSE42_CXXFLAGS) AC_SUBST(SSE41_CXXFLAGS) AC_SUBST(AVX2_CXXFLAGS) +AC_SUBST(SHANI_CXXFLAGS) AC_SUBST(LIBTOOL_APP_LDFLAGS) AC_SUBST(USE_UPNP) AC_SUBST(USE_QRCODE) diff --git a/src/Makefile.am b/src/Makefile.am index a710446646..afeef92359 100755 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -34,6 +34,10 @@ if ENABLE_AVX2 LIBGRIDCOIN_CRYPTO_AVX2 = crypto/libgridcoin_crypto_avx2.a LIBGRIDCOIN_CRYPTO += $(LIBGRIDCOIN_CRYPTO_AVX2) endif +if ENABLE_SHANI +LIBGRIDCOIN_CRYPTO_SHANI = crypto/libgridcoin_crypto_shani.a +LIBGRIDCOIN_CRYPTO += $(LIBGRIDCOIN_CRYPTO_SHANI) +endif # Make is not made aware of per-object dependencies to avoid limiting building parallelization # But to build the less dependent modules first, we manually select their order here: @@ -70,8 +74,6 @@ GRIDCOIN_CORE_H = \ compat/endian.h \ contract/polls.h \ contract/contract.h \ - contract/superblock.h \ - cpid.h \ crypter.h \ db.h \ fwd.h \ @@ -86,10 +88,13 @@ GRIDCOIN_CORE_H = \ main.h \ miner.h \ mruset.h \ + neuralnet/cpid.h \ neuralnet/neuralnet.h \ neuralnet/neuralnet_native.h \ neuralnet/neuralnet_stub.h \ neuralnet/project.h \ + neuralnet/researcher.h \ + neuralnet/superblock.h \ netbase.h \ net.h \ pbkdf2.h \ @@ -130,8 +135,6 @@ GRIDCOIN_CORE_CPP = addrman.cpp \ checkpoints.cpp \ contract/polls.cpp \ contract/contract.cpp \ - contract/superblock.cpp \ - cpid.cpp \ crypter.cpp \ db.cpp \ gridcoin.cpp \ @@ -144,7 +147,10 @@ GRIDCOIN_CORE_CPP = addrman.cpp \ neuralnet/neuralnet.cpp \ neuralnet/neuralnet_native.cpp \ neuralnet/neuralnet_stub.cpp \ + neuralnet/cpid.cpp \ neuralnet/project.cpp \ + neuralnet/researcher.cpp \ + neuralnet/superblock.cpp \ netbase.cpp \ net.cpp \ noui.cpp \ @@ -236,6 +242,12 @@ crypto_libgridcoin_crypto_avx2_a_CXXFLAGS += $(AVX2_CXXFLAGS) crypto_libgridcoin_crypto_avx2_a_CPPFLAGS += -DENABLE_AVX2 crypto_libgridcoin_crypto_avx2_a_SOURCES = crypto/sha256_avx2.cpp +crypto_libgridcoin_crypto_shani_a_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) +crypto_libgridcoin_crypto_shani_a_CPPFLAGS = $(AM_CPPFLAGS) +crypto_libgridcoin_crypto_shani_a_CXXFLAGS += $(SHANI_CXXFLAGS) +crypto_libgridcoin_crypto_shani_a_CPPFLAGS += -DENABLE_SHANI +crypto_libgridcoin_crypto_shani_a_SOURCES = crypto/sha256_shani.cpp + CTAES_DIST = crypto/ctaes/bench.c CTAES_DIST += crypto/ctaes/ctaes.c CTAES_DIST += crypto/ctaes/ctaes.h diff --git a/src/Makefile.qt.include b/src/Makefile.qt.include index 3433bfee6b..fc58112eb5 100644 --- a/src/Makefile.qt.include +++ b/src/Makefile.qt.include @@ -130,8 +130,7 @@ GRIDCOIN_MM = \ QT_MOC = \ qt/overviewpage.moc \ - qt/rpcconsole.moc \ - qt/bitcoin.moc + qt/rpcconsole.moc QT_QRC_CPP = qt/qrc_bitcoin.cpp QT_QRC = qt/bitcoin.qrc diff --git a/src/Makefile.test.include b/src/Makefile.test.include index 3be889975a..2915a61b7b 100755 --- a/src/Makefile.test.include +++ b/src/Makefile.test.include @@ -34,18 +34,20 @@ GRIDCOIN_TESTS =\ test/beacon_tests.cpp \ test/bignum_tests.cpp \ test/block_tests.cpp \ - test/cpid_tests.cpp \ - test/crypter_tests.cpp \ test/getarg_tests.cpp \ test/gridcoin_tests.cpp \ test/key_tests.cpp \ test/mruset_tests.cpp \ test/multisig_tests.cpp \ test/netbase_tests.cpp \ + test/neuralnet/cpid_tests.cpp \ test/neuralnet/project_tests.cpp \ + test/neuralnet/researcher_tests.cpp \ + test/neuralnet/superblock_tests.cpp \ test/rpc_tests.cpp \ test/script_P2SH_tests.cpp \ test/script_tests.cpp \ + test/serialize_tests.cpp \ test/sigopcount_tests.cpp \ test/test_gridcoin.cpp \ test/transaction_tests.cpp \ diff --git a/src/contract/contract.cpp b/src/contract/contract.cpp index 7a372370e0..4a1cb6ec9d 100644 --- a/src/contract/contract.cpp +++ b/src/contract/contract.cpp @@ -1,4 +1,3 @@ -#include "cpid.h" #include "init.h" #include "rpcclient.h" #include "rpcserver.h" diff --git a/src/contract/polls.cpp b/src/contract/polls.cpp index 7e201507e5..a065ee0d97 100644 --- a/src/contract/polls.cpp +++ b/src/contract/polls.cpp @@ -7,7 +7,6 @@ #include "rpcclient.h" #include "rpcserver.h" #include "appcache.h" -#include "cpid.h" #include "init.h" // for pwalletMain #include "block.h" @@ -20,6 +19,8 @@ bool GetEarliestStakeTime(std::string grcaddress, std::string cpid); CBlockIndex* GetHistoricalMagnitude(std::string cpid); bool WalletOutOfSync(); +namespace NN { std::string GetPrimaryCpid(); } + std::string GetShareType(double dShareType) { if (dShareType == 1) return "Magnitude"; @@ -83,10 +84,6 @@ std::pair CreateVoteContract(std::string sTitle, std:: //6-20-2015 double nBalance = GetTotalBalance(); uint256 hashRand = GetRandHash(); - std::string email = GetArgument("email", "NA"); - boost::to_lower(email); - GlobalCPUMiningCPID.email = email; - GlobalCPUMiningCPID.lastblockhash = GlobalCPUMiningCPID.cpidhash; if (!PollExists(sTitle)) return std::make_pair("Error", "Poll does not exist."); if (PollExpired(sTitle)) @@ -126,7 +123,7 @@ std::pair CreateVoteContract(std::string sTitle, std:: return std::make_pair("Error", "Sorry, When voting in a Both Share Type poll, your stake age Or your CPID age must be older than the poll duration."); else { - std::string voter = ""+GlobalCPUMiningCPID.cpidv2 + "" + std::string voter = "" + GlobalCPUMiningCPID.cpid + "" + GRCAddress + "" + hashRand.GetHex() + "" + RoundToString(nBalance,2) + "" + RoundToString(dmag,0) + ""; @@ -291,23 +288,24 @@ std::string PollAnswers(std::string pollname) } std::string GetProvableVotingWeightXML() { + std::string primary_cpid = NN::GetPrimaryCpid(); std::string sXML = ""; //Retrieve the historical magnitude - if (IsResearcher(msPrimaryCPID)) + if (IsResearcher(primary_cpid)) { - StructCPID& st1 = GetLifetimeCPID(msPrimaryCPID); - CBlockIndex* pHistorical = GetHistoricalMagnitude(msPrimaryCPID); + StructCPID& st1 = GetLifetimeCPID(primary_cpid); + CBlockIndex* pHistorical = GetHistoricalMagnitude(primary_cpid); if (pHistorical->nHeight > 1 && pHistorical->nMagnitude > 0) { std::string sBlockhash = pHistorical->GetBlockHash().GetHex(); std::string sError; std::string sSignature; - bool bResult = SignBlockWithCPID(msPrimaryCPID, pHistorical->GetBlockHash().GetHex(), sSignature, sError); + bool bResult = SignBlockWithCPID(primary_cpid, pHistorical->GetBlockHash().GetHex(), sSignature, sError); // Just because below comment it'll keep in line with that if (!bResult) sSignature = sError; // Find the Magnitude from the last staked block, within the last 6 months, and ensure researcher has a valid current beacon (if the beacon is expired, the signature contain an error message) - sXML += "" + msPrimaryCPID + "" + sXML += "" + primary_cpid + "" + RoundToString(pHistorical->nMagnitude,2) + "" + "" + ToString(pHistorical->nHeight) + "" + sBlockhash + "" + sSignature + ""; diff --git a/src/contract/superblock.cpp b/src/contract/superblock.cpp deleted file mode 100644 index c0119428b8..0000000000 --- a/src/contract/superblock.cpp +++ /dev/null @@ -1,100 +0,0 @@ -#include "superblock.h" -#include "uint256.h" -#include "util.h" -#include "main.h" -#include "compat/endian.h" - -std::string ExtractValue(std::string data, std::string delimiter, int pos); - -namespace -{ - struct BinaryResearcher - { - std::array cpid; - int16_t magnitude; - }; - - // Ensure that the compiler does not add padding between the cpid and the - // magnitude. If it does it does it to align the data, at which point the - // pointer cast in UnpackBinarySuperblock will be illegal. In such a - // case we will have to resort to a slower unpack. - static_assert(offsetof(struct BinaryResearcher, magnitude) == - sizeof(struct BinaryResearcher) - sizeof(int16_t), - "Unexpected padding in BinaryResearcher"); -} - -std::string UnpackBinarySuperblock(std::string sBlock) -{ - // 12-21-2015: R HALFORD: If the block is not binary, return the legacy format for backward compatibility - std::string sBinary = ExtractXML(sBlock,"",""); - if (sBinary.empty()) return sBlock; - - std::ostringstream stream; - stream << "" << ExtractXML(sBlock,"","") << "" - << "" << ExtractXML(sBlock,"","") << "" - << ""; - - // Binary data support structure: - // Each CPID consumes 16 bytes and 2 bytes for magnitude: (Except CPIDs with zero magnitude - the count of those is stored in XML node to save space) - // 1234567890123456MM - // MM = Magnitude stored as 2 bytes - // No delimiter between CPIDs, Step Rate = 18. - // CPID and magnitude are stored in big endian. - for (unsigned int x = 0; x < sBinary.length(); x += 18) - { - if(sBinary.length() - x < 18) - break; - - const BinaryResearcher* researcher = reinterpret_cast(sBinary.data() + x); - stream << HexStr(researcher->cpid.begin(), researcher->cpid.end()) << "," - << be16toh(researcher->magnitude) << ";"; - } - - // Append zero magnitude researchers so the beacon count matches - int num_zero_mag = atoi(ExtractXML(sBlock,"","")); - const std::string zero_entry("0,15;"); - for(int i=0; i"; - return stream.str(); -} - -std::string PackBinarySuperblock(std::string sBlock) -{ - std::string sMagnitudes = ExtractXML(sBlock,"",""); - - // For each CPID in the superblock, convert data to binary - std::stringstream stream; - int64_t num_zero_mag = 0; - for (auto& entry : split(sMagnitudes.c_str(), ";")) - { - if (entry.length() < 1) - continue; - - const std::vector& binary_cpid = ParseHex(entry); - if(binary_cpid.size() < 16) - { - ++num_zero_mag; - continue; - } - - BinaryResearcher researcher; - std::copy_n(binary_cpid.begin(), researcher.cpid.size(), researcher.cpid.begin()); - - // Ensure we do not blow out the binary space (technically we can handle 0-65535) - double magnitude_d = strtod(ExtractValue(entry, ",", 1).c_str(), NULL); - // Changed to 65535 for the new NN. This will still be able to be successfully unpacked by any node. - magnitude_d = std::max(0.0, std::min(magnitude_d, 65535.0)); - researcher.magnitude = htobe16(roundint(magnitude_d)); - - stream.write((const char*) &researcher, sizeof(BinaryResearcher)); - } - - std::stringstream block_stream; - block_stream << "" << num_zero_mag << "" - "" << stream.rdbuf() << "" - "" << ExtractXML(sBlock,"","") << "" - "" << ExtractXML(sBlock,"","") << ""; - return block_stream.str(); -} diff --git a/src/contract/superblock.h b/src/contract/superblock.h deleted file mode 100644 index 796b4faca6..0000000000 --- a/src/contract/superblock.h +++ /dev/null @@ -1,6 +0,0 @@ -#pragma once - -#include - -std::string UnpackBinarySuperblock(std::string block); -std::string PackBinarySuperblock(std::string sBlock); diff --git a/src/cpid.cpp b/src/cpid.cpp deleted file mode 100644 index 371c7bbb59..0000000000 --- a/src/cpid.cpp +++ /dev/null @@ -1,600 +0,0 @@ -#include "cpid.h" -#include "util.h" - -#include -#include -#include -#include - -#define S11 (0x9e5+1366-0xf34) -#define S12 (0x161b+3182-0x227d) -#define S13 (0x39b+3002-0xf44) -#define S14 (0xe94+6207-0x26bd) -#define S21 (0x4ef+2412-0xe56) -#define S22 (0x311+2131-0xb5b) -#define S23 (0x6cd+6218-0x1f09) -#define S24 (0x16+1307-0x51d) -#define S31 (0x13b1+3020-0x1f79) -#define S32 (0x10d4+714-0x1393) -#define S33 (0x1f32+1918-0x26a0) -#define S34 (0x514+6441-0x1e26) -#define S41 (0x2df+307-0x40c) -#define S42 (0x131b+4053-0x22e6) -#define S43 (0x817+1038-0xc16) -#define S44 (0x1021+2805-0x1b01) - - -inline CPID::uint4 CPID::F(uint4 x, uint4 y, uint4 z) -{ - return ((x & y) | (~x & z)); -} - -inline CPID::uint4 CPID::G(uint4 x, uint4 y, uint4 z) -{ - return ((x & z) | (y & ~z)); -} - -inline CPID::uint4 CPID::H(uint4 x, uint4 y, uint4 z) -{ - return (x ^ y ^ z); -} - -inline CPID::uint4 CPID::I(uint4 x, uint4 y, uint4 z) -{ - return y ^ (x | ~z); -} - -inline CPID::uint4 CPID::rotate_left(uint4 x, int n) -{ - return (x << n) | (x >> ((0x724 + 7488 - 0x2444) - n)); -} - -inline CPID::uint4 CPID::rotate_right(uint4 x, int n) -{ - return (x >> n) | (x << ((0xf51 + 544 - 0x1151) - n)); -} - -inline CPID::uint4 CPID::rotate_left8(int x, int n) -{ - return (x << n) | (x >> ((0x1673 + 891 - 0x19e6) - n)); -} - -inline CPID::uint4 CPID::rotate_right8(int x, int n) -{ - return (x >> n) | (x << ((0x12e9 + 2293 - 0x1bd6) - n)); -} - -inline void CPID::FF(uint4 & a, uint4 b, uint4 c, uint4 d, uint4 x, - uint4 s, uint4 ac) -{ - a = rotate_left(a + F(b, c, d) + x + ac, s) + b; -} - -inline void CPID::GG(uint4 & a, uint4 b, uint4 c, uint4 d, uint4 x, - uint4 s, uint4 ac) -{ - a = rotate_left(a + G(b, c, d) + x + ac, s) + b; -} - -inline void CPID::HH(uint4 & a, uint4 b, uint4 c, uint4 d, uint4 x, - uint4 s, uint4 ac) -{ - a = rotate_left(a + H(b, c, d) + x + ac, s) + b; -} - -inline void CPID::II(uint4 & a, uint4 b, uint4 c, uint4 d, uint4 x, - uint4 s, uint4 ac) -{ - a = rotate_left(a + I(b, c, d) + x + ac, s) + b; -} - -CPID::CPID() -{ - init(); -} - -CPID::CPID(std::string text) -{ - init(); - update(text.c_str(), text.length()); - finalize(); -} - -CPID::CPID(std::string text, int entropybit, uint256 hash_block) -{ - init(); - entropybit++; - update5(text, hash_block); - finalize(); -} - -template < typename T > std::string ByteToHex(T i) -{ - std::stringstream stream; - stream << std::setfill(((char) (0xbac + 70 - 0xbc2))) << std:: - setw((0x1344 + 4775 - 0x25e9)) << std::hex << i; - return stream.str(); -} - -std::string CPID::HashKey(std::string email1, std::string bpk1) -{ - boost::algorithm::to_lower(bpk1); - boost::algorithm::to_lower(email1); - boinc_hash_new = bpk1 + email1; - CPID c = CPID(boinc_hash_new); - std::string non_finalized = ""; - non_finalized = c.hexdigest(); - return non_finalized; -} - -int BitwiseCount(std:: string str, int pos) -{ - char ch; - if (pos < (int) str.length()) - { - ch = str.at(pos); - int asc = (int) ch; - if (asc > (0x87c + 6520 - 0x21c5) - && asc < (0x1597 + 4174 - 0x259e)) - asc = asc - (0x4c5 + 8720 - 0x26a6); - return asc; - } - return (0x8b0 + 1872 - 0xfff); -} - -std::string HashHex(uint256 blockhash) -{ - CPID c2 = CPID(blockhash.GetHex()); - std::string shash = c2.hexdigest(); - return shash; -} - -std::string ROR(std::string blockhash, int iPos, std::string hash) -{ - if (iPos <= (int) hash.length() - (0x1f5b + 1342 - 0x2498)) - { - int asc1 = (int) hash.at(iPos); - int rorcount = BitwiseCount(blockhash, iPos); - std::string hex = ByteToHex(asc1 + rorcount); - return hex; - } - return "\x30\x30"; -} - -std::string CPID::CPID_V2(std::string email1, std::string bpk1, - uint256 block_hash) -{ - std::string non_finalized = HashKey(email1, bpk1); - std::string digest = Update6(non_finalized, block_hash); - return digest; -} - -void CPID::init() -{ - finalized = false; - count[(0x88d + 1394 - 0xdff)] = (0x1fe5 + 1717 - 0x269a); - count[(0x373 + 6812 - 0x1e0e)] = (0x65b + 2790 - 0x1141); - state[(0xc88 + 3077 - 0x188d)] = 1732584193; - state[(0x1230 + 1876 - 0x1983)] = 4023233417; - state[(0xada + 3060 - 0x16cc)] = 2562383102; - state[(0x8d + 3707 - 0xf05)] = 271733878; -} - -void CPID::decode(uint4 output[], const uint1 input[], size_type len) -{ - for (unsigned int i = (0xbb + 8818 - 0x232d), j = - (0xcad + 2297 - 0x15a6); j < len; - i++, j += (0x150f + 1818 - 0x1c25)) - output[i] = - ((uint4) input[j]) | - (((uint4) input[j + (0x320 + 7218 - 0x1f51)]) << - (0x1c36 + 2528 - - 0x260e)) | (((uint4) input[j + - (0x20c3 + 1239 - - 0x2598)]) << (0x9d + 5272 - - 0x1525)) | - (((uint4) input[j + (0xbb7 + 2557 - 0x15b1)]) << - (0x131b + 3426 - 0x2065)); -} - -void CPID::encode(uint1 output[], const uint4 input[], size_type len) -{ - for (size_type i = (0x3e2 + 7679 - 0x21e1), j = - (0x23a4 + 674 - 0x2646); j < len; - i++, j += (0x23d3 + 36 - 0x23f3)) - { - output[j] = input[i] & (0xa45 + 3187 - 0x15b9); - output[j + (0x90a + 3950 - 0x1877)] = - (input[i] >> (0x201 + 7372 - 0x1ec5)) & (0x9bf + 6024 - - 0x2048); - output[j + (0x94 + 872 - 0x3fa)] = - (input[i] >> (0x396 + 7043 - 0x1f09)) & (0x561 + 8582 - - 0x25e8); - output[j + (0x1a86 + 2527 - 0x2462)] = - (input[i] >> (0xd14 + 4931 - 0x203f)) & (0x37b + 3944 - - 0x11e4); - } -} - -void CPID::transform(const uint1 block[blocksize]) -{ - uint4 a = state[(0x8a5 + 4443 - 0x1a00)], b = - state[(0x643 + 3050 - 0x122c)], c = - state[(0x280 + 7521 - 0x1fdf)], d = - state[(0x1de9 + 985 - 0x21bf)], x[(0x1784 + 2549 - 0x2169)]; - decode(x, block, blocksize); - FF(a, b, c, d, x[(0xd59 + 2856 - 0x1881)], S11, 3614090360); - FF(d, a, b, c, x[(0x4b9 + 4745 - 0x1741)], S12, 3905402710); - FF(c, d, a, b, x[(0x82a + 7856 - 0x26d8)], S13, 606105819); - FF(b, c, d, a, x[(0x9a1 + 574 - 0xbdc)], S14, 3250441966); - FF(a, b, c, d, x[(0xfeb + 4629 - 0x21fc)], S11, 4118548399); - FF(d, a, b, c, x[(0x1016 + 3805 - 0x1eee)], S12, 1200080426); - FF(c, d, a, b, x[(0xb8f + 2088 - 0x13b1)], S13, 2821735955); - FF(b, c, d, a, x[(0xbcc + 5992 - 0x232d)], S14, 4249261313); - FF(a, b, c, d, x[(0xd35 + 3872 - 0x1c4d)], S11, 1770035416); - FF(d, a, b, c, x[(0x1104 + 5535 - 0x269a)], S12, 2336552879); - FF(c, d, a, b, x[(0xd1b + 1447 - 0x12b8)], S13, 4294925233); - FF(b, c, d, a, x[(0xdfc + 289 - 0xf12)], S14, 2304563134); - FF(a, b, c, d, x[(0x1ed7 + 2070 - 0x26e1)], S11, 1804603682); - FF(d, a, b, c, x[(0x175d + 2428 - 0x20cc)], S12, 4254626195); - FF(c, d, a, b, x[(0xd9c + 2608 - 0x17be)], S13, 2792965006); - FF(b, c, d, a, x[(0xddd + 6185 - 0x25f7)], S14, 1236535329); - - GG(a, b, c, d, x[(0x1e0d + 484 - 0x1ff0)], S21, 4129170786); - GG(d, a, b, c, x[(0xa2 + 8809 - 0x2305)], S22, 3225465664); - GG(c, d, a, b, x[(0x1983 + 383 - 0x1af7)], S23, 643717713); - GG(b, c, d, a, x[(0xbe7 + 2585 - 0x1600)], S24, 3921069994); - GG(a, b, c, d, x[(0x1e91 + 161 - 0x1f2d)], S21, 3593408605); - GG(d, a, b, c, x[(0x45d + 7119 - 0x2022)], S22, 38016083); - GG(c, d, a, b, x[(0x60b + 5977 - 0x1d55)], S23, 3634488961); - GG(b, c, d, a, x[(0xeef + 2607 - 0x191a)], S24, 3889429448); - GG(a, b, c, d, x[(0xcb + 9332 - 0x2536)], S21, 568446438); - GG(d, a, b, c, x[(0x5cd + 1125 - 0xa24)], S22, 3275163606); - GG(c, d, a, b, x[(0x101 + 6897 - 0x1bef)], S23, 4107603335); - GG(b, c, d, a, x[(0x5e8 + 2294 - 0xed6)], S24, 1163531501); - GG(a, b, c, d, x[(0x10b8 + 3222 - 0x1d41)], S21, 2850285829); - GG(d, a, b, c, x[(0x903 + 1561 - 0xf1a)], S22, 4243563512); - GG(c, d, a, b, x[(0x880 + 2802 - 0x136b)], S23, 1735328473); - GG(b, c, d, a, x[(0xcb6 + 3479 - 0x1a41)], S24, 2368359562); - - HH(a, b, c, d, x[(0x1a5f + 1242 - 0x1f34)], S31, 4294588738); - HH(d, a, b, c, x[(0x3b9 + 11 - 0x3bc)], S32, 2272392833); - HH(c, d, a, b, x[(0x161a + 3175 - 0x2276)], S33, 1839030562); - HH(b, c, d, a, x[(0x134b + 2374 - 0x1c83)], S34, 4259657740); - HH(a, b, c, d, x[(0xe5b + 1402 - 0x13d4)], S31, 2763975236); - HH(d, a, b, c, x[(0x7aa + 6444 - 0x20d2)], S32, 1272893353); - HH(c, d, a, b, x[(0x9b0 + 2801 - 0x149a)], S33, 4139469664); - HH(b, c, d, a, x[(0x180 + 2489 - 0xb2f)], S34, 3200236656); - HH(a, b, c, d, x[(0x14d + 7675 - 0x1f3b)], S31, 681279174); - HH(d, a, b, c, x[(0xeaf + 5786 - 0x2549)], S32, 3936430074); - HH(c, d, a, b, x[(0x94d + 6302 - 0x21e8)], S33, 3572445317); - HH(b, c, d, a, x[(0x4e3 + 4075 - 0x14c8)], S34, 76029189); - HH(a, b, c, d, x[(0x183f + 1914 - 0x1fb0)], S31, 3654602809); - HH(d, a, b, c, x[(0x785 + 531 - 0x98c)], S32, 3873151461); - HH(c, d, a, b, x[(0x76 + 4452 - 0x11cb)], S33, 530742520); - HH(b, c, d, a, x[(0x60a + 7659 - 0x23f3)], S34, 3299628645); - - II(a, b, c, d, x[(0xdab + 1728 - 0x146b)], S41, 4096336452); - II(d, a, b, c, x[(0x8a7 + 5703 - 0x1ee7)], S42, 1126891415); - II(c, d, a, b, x[(0x2526 + 30 - 0x2536)], S43, 2878612391); - II(b, c, d, a, x[(0xd53 + 6032 - 0x24de)], S44, 4237533241); - II(a, b, c, d, x[(0x23 + 3964 - 0xf93)], S41, 1700485571); - II(d, a, b, c, x[(0x22f1 + 300 - 0x241a)], S42, 2399980690); - II(c, d, a, b, x[(0x7ad + 7010 - 0x2305)], S43, 4293915773); - II(b, c, d, a, x[(0x1afa + 728 - 0x1dd1)], S44, 2240044497); - II(a, b, c, d, x[(0x535 + 4538 - 0x16e7)], S41, 1873313359); - II(d, a, b, c, x[(0x1902 + 3148 - 0x253f)], S42, 4264355552); - II(c, d, a, b, x[(0x9ed + 599 - 0xc3e)], S43, 2734768916); - II(b, c, d, a, x[(0x1955 + 3023 - 0x2517)], S44, 1309151649); - II(a, b, c, d, x[(0xa53 + 2102 - 0x1285)], S41, 4149444226); - II(d, a, b, c, x[(0x993 + 4512 - 0x1b28)], S42, 3174756917); - II(c, d, a, b, x[(0x1621 + 413 - 0x17bc)], S43, 718787259); - II(b, c, d, a, x[(0xf32 + 3228 - 0x1bc5)], S44, 3951481745); - state[(0x13e0 + 4114 - 0x23f2)] += a; - state[(0x864 + 5609 - 0x1e4c)] += b; - state[(0x1bb + 1236 - 0x68d)] += c; - state[(0x92f + 6920 - 0x2434)] += d; - memset(x, (0x123d + 2605 - 0x1c6a), sizeof x); -} - -void CPID::update(const unsigned char input[], size_type length) -{ - size_type index = - count[(0xbaf + 535 - 0xdc6)] / (0x1609 + 3405 - - 0x234e) % blocksize; - if ((count[(0x12f6 + 3141 - 0x1f3b)] += - (length << (0x1894 + 3130 - 0x24cb))) < - (length << (0x902 + 5767 - 0x1f86))) - count[(0xed4 + 4990 - 0x2251)]++; - count[(0x1410 + 3546 - 0x21e9)] += - (length >> (0x1325 + 1183 - 0x17a7)); - size_type firstpart = (0xcf2 + 5399 - 0x21c9) - index; - size_type i; - if (length >= firstpart) - { - memcpy(&buffer[index], input, firstpart); - transform(buffer); - for (i = firstpart; i + blocksize <= length; i += blocksize) - transform(&input[i]); - index = (0x786 + 6933 - 0x229b); - } - else - i = (0x3c9 + 6892 - 0x1eb5); - memcpy(&buffer[index], &input[i], length - i); -} - -void CPID::update(const char input[], size_type length) -{ - update((const unsigned char *) input, length); -} - -int HexToByte(std::string hex) -{ - int x = (0x4a + 4863 - 0x1349); - std::stringstream ss; - ss << std::hex << hex; - ss >> x; - return x; -} - -int ROL(std::string blockhash, int iPos, std::string hash, int hexpos) -{ - std::string cpid3 = ""; - if (iPos <= (int) hash.length() - (0x1c97 + 497 - 0x1e87)) - { - std::string hex = hash.substr(iPos, (0xa5d + 6424 - 0x2373)); - int rorcount = BitwiseCount(blockhash, hexpos); - int b = HexToByte(hex) - rorcount; - if (b >= (0x5b2 + 1768 - 0xc9a)) - { - return b; - } - } - return HexToByte("\x30\x30"); -} - -std::string CPID::Update6(std::string non_finalized, uint256 block_hash) -{ - std::string shash = HashHex(block_hash); - for (int i = (0x1258 + 3278 - 0x1f26); - i < (int) boinc_hash_new.length(); i++) - { - non_finalized += ROR(shash, i, boinc_hash_new); - } - return non_finalized; -} - -std::string Update7(std::string longcpid, uint256 hash_block) -{ - std::string shash = HashHex(hash_block); - int hexpos = (0x632 + 1664 - 0xcb2); - std::string non_finalized = ""; - for (int i1 = (0xbd + 8943 - 0x23ac); i1 < (int) longcpid.length(); - i1 = i1 + (0x1ac0 + 2812 - 0x25ba)) - { - non_finalized += ROL(shash, i1, longcpid, hexpos); - hexpos++; - } - CPID c7 = CPID(non_finalized); - std::string hexstring = c7.hexdigest(); - return hexstring; -} - -void CPID::update5(std::string longcpid, uint256 hash_block) -{ - std::string shash = HashHex(hash_block); - int hexpos = (0x43b + 6491 - 0x1d96); - unsigned char *input = - new unsigned char[(longcpid.length() / (0x534 + 8432 - 0x2622)) + - (0xa19 + 5289 - 0x1ec1)]; - for (int i1 = (0x1348 + 1245 - 0x1825); i1 < (int) longcpid.length(); - i1 = i1 + (0x478 + 5707 - 0x1ac1)) - { - input[hexpos] = ROL(shash, i1, longcpid, hexpos); - hexpos++; - } - input[longcpid.length() / (0x7ac + 7506 - 0x24fc) + - (0xba + 3605 - 0xece)] = (0x3c3 + 5976 - 0x1b1b); - size_type length = longcpid.length() / (0x1186 + 4729 - 0x23fd); - size_type index = - count[(0xf02 + 2743 - 0x19b9)] / (0x174 + 6416 - - 0x1a7c) % blocksize; - if ((count[(0x1eb3 + 1439 - 0x2452)] += - (length << (0x89c + 7639 - 0x2670))) < - (length << (0x1f07 + 935 - 0x22ab))) - count[(0x488 + 7340 - 0x2133)]++; - count[(0xb5 + 5597 - 0x1691)] += (length >> (0x374 + 3554 - 0x1139)); - size_type firstpart = (0x195 + 7412 - 0x1e49) - index; - size_type i; - if (length >= firstpart) - { - memcpy(&buffer[index], input, firstpart); - transform(buffer); - for (i = firstpart; i + blocksize <= length; i += blocksize) - transform(&input[i]); - index = (0x144f + 4713 - 0x26b8); - } - else - i = (0x1053 + 3145 - 0x1c9c); - memcpy(&buffer[index], &input[i], length - i); -} - -CPID & CPID::finalize() -{ - static unsigned char padding[(0xbf3 + 5821 - 0x2270)] = { - (0x14b4 + 2295 - 0x1d2b), (0xd2 + 9568 - 0x2632), - (0xa60 + 6685 - 0x247d), (0x1749 + 2154 - 0x1fb3), - (0xb80 + 3428 - 0x18e4), (0x9d + 9832 - 0x2705), - (0x6d5 + 1494 - 0xcab), (0x714 + 3 - 0x717), - (0x13bf + 4470 - 0x2535), (0x1a98 + 1182 - 0x1f36), - (0x1398 + 3220 - 0x202c), - (0x50f + 1352 - 0xa57), (0x97c + 2239 - 0x123b), - (0xa12 + 2843 - 0x152d), (0x934 + 3404 - 0x1680), - (0xb50 + 4854 - 0x1e46), (0x1166 + 928 - 0x1506), - (0x1def + 2302 - 0x26ed), (0xe84 + 1817 - 0x159d), - (0x205 + 8670 - 0x23e3), (0x1311 + 2117 - 0x1b56), - (0x23fa + 91 - 0x2455), (0xec0 + 2817 - 0x19c1), - (0x12b6 + 5050 - 0x2670), (0x141c + 2938 - 0x1f96), - (0x1c2b + 389 - 0x1db0), - (0x8b6 + 3730 - 0x1748), (0x1274 + 509 - 0x1471), - (0xc82 + 2063 - 0x1491), (0x15e6 + 916 - 0x197a), - (0x9b7 + 6733 - 0x2404), (0x1463 + 4638 - 0x2681), - (0x48c + 4237 - 0x1519), (0x6d3 + 8197 - 0x26d8), - (0x1531 + 3021 - 0x20fe), (0x1723 + 1018 - 0x1b1d), - (0xccb + 5869 - 0x23b8), - (0x65c + 1335 - 0xb93), (0x22bd + 52 - 0x22f1), - (0x1592 + 1786 - 0x1c8c), (0x7ff + 7337 - 0x24a8), - (0x825 + 1675 - 0xeb0), (0x1ed + 210 - 0x2bf), - (0x7ea + 398 - 0x978), (0x337 + 1617 - 0x988), - (0x84c + 7067 - 0x23e7), (0x5a1 + 7001 - 0x20fa), - (0x22f3 + 735 - 0x25d2), (0x1819 + 914 - 0x1bab), - (0x16b + 2277 - 0xa50), (0x9e3 + 731 - 0xcbe), - (0x298 + 6656 - 0x1c98), (0xd89 + 2525 - 0x1766), - (0xe8d + 3380 - 0x1bc1), (0x2346 + 220 - 0x2422), - (0x111 + 6611 - 0x1ae4), (0x37 + 8793 - 0x2290), - (0xa62 + 5983 - 0x21c1), (0x1508 + 1558 - 0x1b1e), - (0x6ba + 6988 - 0x2206), (0x76a + 2299 - 0x1065), - (0x977 + 4133 - 0x199c), (0xca + 8498 - 0x21fc), - (0x1c0a + 802 - 0x1f2c) -}; - if (!finalized) - { - unsigned char bits[(0x1bfb + 232 - 0x1cdb)]; - encode(bits, count, (0xba5 + 5616 - 0x218d)); - size_type index = - count[(0x176d + 89 - 0x17c6)] / (0x8c1 + 7152 - - 0x24a9) % (0xa16 + 4066 - - 0x19b8); - size_type padLen = - (index < - (0x1da + 3012 - 0xd66)) ? ((0x1b22 + 1127 - 0x1f51) - - index) : ((0x1b2a + 2082 - - 0x22d4) - index); - update(padding, padLen); - update(bits, (0xdb2 + 2231 - 0x1661)); - encode(digest, state, (0x2c1 + 8014 - 0x21ff)); - memset(buffer, (0xa7d + 2489 - 0x1436), sizeof buffer); - memset(count, (0x101 + 8152 - 0x20d9), sizeof count); - finalized = true; - } - return *this; -} - -std::string CPID::hexdigest() const -{ - if (!finalized) - { - return - "\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30"; - } - char buf[(0x1605 + 2905 - 0x213d)]; - for (int i = (0xba6 + 2047 - 0x13a5); i < (0x96b + 2692 - 0x13df); i++) - sprintf(buf + i * (0x6b6 + 3760 - 0x1564), "\x25\x30\x32\x78", - digest[i]); - buf[(0x1064 + 790 - 0x135a)] = (0xaa7 + 5325 - 0x1f74); - return std::string(buf); -} - -template < typename T > std::string LongToHex(T i) -{ - std::stringstream stream; - stream << "\x30\x78" << std:: - setfill(((char) (0x225 + 6873 - 0x1cce))) << std::setw(sizeof(T) * - (0x27d + - 3962 - - 0x11f5)) << - std::hex << i; - return stream.str(); -} - -std::string CPID::boincdigest(std::string email, std::string bpk, - uint256 hash_block) -{ - if (!finalized) - return ""; - char buf[(0x151 + 8463 - 0x2250)]; - for (int i = (0x95f + 3677 - 0x17bc); i < (0x13f8 + 3123 - 0x201b); - i++) - { - sprintf(buf + i * (0x639 + 7515 - 0x2392), "\x25\x30\x32\x78", - digest[i]); - } - std::string non_finalized(buf); - std::string shash = HashHex(hash_block); - std::string debug = ""; - boost::algorithm::to_lower(bpk); - boost::algorithm::to_lower(email); - std::string cpid_non = bpk + email; - for (int i = (0x450 + 3069 - 0x104d); i < (int) cpid_non.length(); i++) - { - non_finalized += ROR(shash, i, cpid_non); - } - return non_finalized; -} - -bool CompareCPID(std::string usercpid, std::string longcpid, - uint256 blockhash) -{ - if (longcpid.length() < (0x1287 + 3377 - 0x1f96)) - return false; - std::string cpid1 = - longcpid.substr((0x14eb + 3914 - 0x2435), (0x652 + 2202 - 0xecc)); - std::string cpid2 = - longcpid.substr((0x315 + 271 - 0x404), - longcpid.length() - (0x477 + 4848 - 0x1748)); - std::string shash = HashHex(blockhash); - std::string shortcpid = Update7(cpid2, blockhash); - if (shortcpid == "") - return false; - if (fDebug10) - printf - ("\x73\x68\x6f\x72\x74\x63\x70\x69\x64\x20\x25\x73\x2c\x20\x63\x70\x69\x64\x31\x20\x25\x73\x2c\x20\x75\x73\x65\x72\x63\x70\x69\x64\x20\x25\x73\x20" - "\r\n", shortcpid.c_str(), cpid1.c_str(), usercpid.c_str()); - if (shortcpid == cpid1 && cpid1 == usercpid && shortcpid == usercpid) - return true; - if (fDebug10) - printf - ("\x73\x68\x6f\x72\x74\x63\x70\x69\x64\x20\x25\x73\x2c\x20\x63\x70\x69\x64\x31\x20\x25\x73\x2c\x20\x75\x73\x65\x72\x63\x70\x69\x64\x20\x25\x73\x20" - "\r\n", shortcpid.c_str(), cpid1.c_str(), usercpid.c_str()); - return false; -} - -std::ostream & operator<<(std::ostream & out, CPID CPID) -{ - return out << CPID.hexdigest(); -} - -bool CPID_IsCPIDValid(std::string cpid1, std::string longcpid, - uint256 blockhash) -{ - if (cpid1.empty()) - return false; - if (longcpid.empty()) - return false; - if (longcpid.length() < (0x21f0 + 603 - 0x242b)) - return false; - if (cpid1.length() < (0x14 + 9069 - 0x237c)) - return false; - if (cpid1 == "\x49\x4e\x56\x45\x53\x54\x4f\x52" - || longcpid == "\x49\x4e\x56\x45\x53\x54\x4f\x52") - return true; - if (cpid1.length() == (0x80d + 6641 - 0x21fe) - || longcpid.length() == (0x1054 + 4502 - 0x21ea)) - { - printf - ("\x4e\x55\x4c\x4c\x20\x43\x70\x69\x64\x20\x72\x65\x63\x65\x69\x76\x65\x64" - "\r\n"); - return false; - } - if (longcpid.length() < (0x39f + 6435 - 0x1cbd)) - return false; - bool compared = CompareCPID(cpid1, longcpid, blockhash); - return compared; -} - -std::string ComputeCPIDv2(const std::string & email, - const std::string & bpk, - const uint256 & blockhash) -{ - return CPID().CPID_V2(email, bpk, blockhash); -} diff --git a/src/cpid.h b/src/cpid.h deleted file mode 100644 index b7058e72ee..0000000000 --- a/src/cpid.h +++ /dev/null @@ -1,71 +0,0 @@ -#pragma once - -#include "uint256.h" - -#include -#include -#include - -class CPID -{ -public: - typedef unsigned int size_type; - CPID(); - CPID(std::string text); - CPID(std::string text, int entropybit, uint256 block_hash); - void update(const unsigned char *buf, size_type length); - void update(const char *buf, size_type length); - void update5(std::string inp, uint256 hash_block); - std::string CPID_V2(std::string email, std::string bpk, - uint256 block_hash); - CPID & finalize(); - std::string hexdigest() const; - std::string boincdigest(std::string email, std::string bpk, - uint256 hash_block); - friend std::ostream & operator<<(std::ostream &, CPID cpid); -private: - void init(); - typedef unsigned char uint1; - typedef unsigned int uint4; - enum { blocksize = (0x8f9 + 7419 - 0x25b4) }; - void transform(const uint1 block[blocksize]); - static void decode(uint4 output[], const uint1 input[], size_type len); - static void encode(uint1 output[], const uint4 input[], size_type len); - std::string HashKey(std::string email1, std::string bpk1); - std::string Update6(std::string non_finalized, uint256 block_hash); - std::string boinc_public_key; - std::string email_hash; - std::string merged_hash_old; - std::string boinc_hash_new; - uint256 blockhash_old; - bool finalized; - uint1 buffer[blocksize]; - uint4 count[(0x3ab + 2678 - 0xe1f)]; - uint4 state[(0x596 + 8421 - 0x2677)]; - uint1 digest[(0x665 + 2354 - 0xf87)]; - - static inline uint4 F(uint4 x, uint4 y, uint4 z); - static inline uint4 G(uint4 x, uint4 y, uint4 z); - static inline uint4 H(uint4 x, uint4 y, uint4 z); - static inline uint4 I(uint4 x, uint4 y, uint4 z); - static inline uint4 rotate_left(uint4 x, int n); - static inline uint4 rotate_right(uint4 x, int n); - static inline uint4 rotate_left8(int x, int n); - static inline uint4 rotate_right8(int x, int n); - static inline void - FF(uint4 & a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, uint4 ac); - static inline void - GG(uint4 & a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, uint4 ac); - static inline void - HH(uint4 & a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, uint4 ac); - static inline void - II(uint4 & a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, uint4 ac); -}; - -std::string cpid(const std::string str); -bool CPID_IsCPIDValid(std::string cpid, std::string longcpid, - uint256 blockhash); - -std::string ComputeCPIDv2(const std::string & email, - const std::string & bpk, - const uint256 & blockhash); diff --git a/src/crypter.cpp b/src/crypter.cpp index c42c77c74c..07b6a187bc 100644 --- a/src/crypter.cpp +++ b/src/crypter.cpp @@ -7,19 +7,9 @@ #include #include -#include "util.h" #include "crypter.h" #include "scrypt.h" -#ifdef WIN32 -#include -#endif - -unsigned char chKeyGridcoin[256]; -unsigned char chIVGridcoin[256]; -bool fKeySetGridcoin; -std::string RetrieveMd5(std::string s1); - 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) @@ -142,129 +132,3 @@ bool DecryptSecret(const CKeyingMaterial& vMasterKey, const std::vector vchPlaintext, std::vector &vchCiphertext) -{ - LoadGridKey("gridcoin","cqiuehEJ2Tqdov"); - int nLen = vchPlaintext.size(); - int nCLen = nLen + AES_BLOCK_SIZE, nFLen = 0; - vchCiphertext.resize(nCLen); - bool fOk = true; - EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new(); - if(!ctx) - throw std::runtime_error("Error allocating cipher context"); - - if (fOk) fOk = EVP_EncryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, chKeyGridcoin, chIVGridcoin); - if (fOk) fOk = EVP_EncryptUpdate(ctx, &vchCiphertext[0], &nCLen, &vchPlaintext[0], nLen); - if (fOk) fOk = EVP_EncryptFinal_ex(ctx, (&vchCiphertext[0])+nCLen, &nFLen); - EVP_CIPHER_CTX_free(ctx); - if (!fOk) return false; - vchCiphertext.resize(nCLen + nFLen); - return true; -} - - -bool GridDecrypt(const std::vector& vchCiphertext,std::vector& vchPlaintext) -{ - LoadGridKey("gridcoin","cqiuehEJ2Tqdov"); - int nLen = vchCiphertext.size(); - vchPlaintext.resize(nLen); //plain text will be smaller or eq than ciphertext - int nPLen = nLen, nFLen = 0; - bool fOk = true; - EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new(); - if(!ctx) - throw std::runtime_error("Error allocating cipher context"); - if (fOk) fOk = EVP_DecryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, chKeyGridcoin, chIVGridcoin); - 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_free(ctx); - if (!fOk) return false; - vchPlaintext.resize(nPLen + nFLen); - return true; -} - -char FromUnsigned( unsigned char ch ) -{ - return static_cast< char >( ch ); -} - -std::string UnsignedVectorToString(std::vector< unsigned char > v) -{ - std::string s; - s.reserve( v.size() ); - std::transform( v.begin(), v.end(), back_inserter( s ), FromUnsigned ); - return s; -} - - -std::string AdvancedCrypt(std::string boinchash) -{ - - try - { - std::vector vchSecret( boinchash.begin(), boinchash.end() ); - std::vector vchCryptedSecret; - GridEncrypt(vchSecret, vchCryptedSecret); - std::string encrypted = EncodeBase64(UnsignedVectorToString(vchCryptedSecret)); - return encrypted; - } - catch (std::exception &e) - { - LogPrintf("Error while encrypting %s",boinchash); - return ""; - } - catch(...) - { - LogPrintf("Error while encrypting 2."); - return ""; - } - -} - -std::string AdvancedDecrypt(std::string boinchash_encrypted) -{ - try{ - std::string pre_encrypted_boinchash = DecodeBase64(boinchash_encrypted); - std::vector vchCryptedSecret(pre_encrypted_boinchash.begin(),pre_encrypted_boinchash.end()); - std::vector vchPlaintext; - GridDecrypt(vchCryptedSecret,vchPlaintext); - std::string decrypted = UnsignedVectorToString(vchPlaintext); - return decrypted; - } catch (std::exception &e) - { - LogPrintf("Error while decrypting %s",boinchash_encrypted); - return ""; - } - catch(...) - { - LogPrintf("Error while decrypting 2."); - return ""; - } -} diff --git a/src/crypter.h b/src/crypter.h index 26d6db8cf3..c1eb07e376 100644 --- a/src/crypter.h +++ b/src/crypter.h @@ -122,11 +122,4 @@ class CCrypter bool EncryptSecret(CKeyingMaterial& vMasterKey, const CSecret &vchPlaintext, const uint256& nIV, std::vector &vchCiphertext); bool DecryptSecret(const CKeyingMaterial& vMasterKey, const std::vector &vchCiphertext, const uint256& nIV, CSecret &vchPlaintext); - -std::string AdvancedCrypt(std::string boinchash); -std::string AdvancedDecrypt(std::string boinchash_encrypted); - -bool GridDecrypt(const std::vector& vchCiphertext,std::vector& vchPlaintext); -bool GridEncrypt(std::vector vchPlaintext, std::vector &vchCiphertext); - #endif diff --git a/src/crypto/aes.cpp b/src/crypto/aes.cpp index bf7a252349..2dc2133434 100644 --- a/src/crypto/aes.cpp +++ b/src/crypto/aes.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2016-2017 The Bitcoin Core developers +// Copyright (c) 2016-2018 The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -12,36 +12,6 @@ extern "C" { #include } -AES128Encrypt::AES128Encrypt(const unsigned char key[16]) -{ - AES128_init(&ctx, key); -} - -AES128Encrypt::~AES128Encrypt() -{ - memset(&ctx, 0, sizeof(ctx)); -} - -void AES128Encrypt::Encrypt(unsigned char ciphertext[16], const unsigned char plaintext[16]) const -{ - AES128_encrypt(&ctx, 1, ciphertext, plaintext); -} - -AES128Decrypt::AES128Decrypt(const unsigned char key[16]) -{ - AES128_init(&ctx, key); -} - -AES128Decrypt::~AES128Decrypt() -{ - memset(&ctx, 0, sizeof(ctx)); -} - -void AES128Decrypt::Decrypt(unsigned char plaintext[16], const unsigned char ciphertext[16]) const -{ - AES128_decrypt(&ctx, 1, plaintext, ciphertext); -} - AES256Encrypt::AES256Encrypt(const unsigned char key[32]) { AES256_init(&ctx, key); @@ -182,35 +152,3 @@ AES256CBCDecrypt::~AES256CBCDecrypt() { memset(iv, 0, sizeof(iv)); } - -AES128CBCEncrypt::AES128CBCEncrypt(const unsigned char key[AES128_KEYSIZE], const unsigned char ivIn[AES_BLOCKSIZE], bool padIn) - : enc(key), pad(padIn) -{ - memcpy(iv, ivIn, AES_BLOCKSIZE); -} - -AES128CBCEncrypt::~AES128CBCEncrypt() -{ - memset(iv, 0, AES_BLOCKSIZE); -} - -int AES128CBCEncrypt::Encrypt(const unsigned char* data, int size, unsigned char* out) const -{ - return CBCEncrypt(enc, iv, data, size, pad, out); -} - -AES128CBCDecrypt::AES128CBCDecrypt(const unsigned char key[AES128_KEYSIZE], const unsigned char ivIn[AES_BLOCKSIZE], bool padIn) - : dec(key), pad(padIn) -{ - memcpy(iv, ivIn, AES_BLOCKSIZE); -} - -AES128CBCDecrypt::~AES128CBCDecrypt() -{ - memset(iv, 0, AES_BLOCKSIZE); -} - -int AES128CBCDecrypt::Decrypt(const unsigned char* data, int size, unsigned char* out) const -{ - return CBCDecrypt(dec, iv, data, size, pad, out); -} diff --git a/src/crypto/aes.h b/src/crypto/aes.h index 2dec8d9558..e06c8de272 100644 --- a/src/crypto/aes.h +++ b/src/crypto/aes.h @@ -1,4 +1,4 @@ -// Copyright (c) 2015-2017 The Bitcoin Core developers +// Copyright (c) 2015-2018 The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. // @@ -12,33 +12,8 @@ extern "C" { } static const int AES_BLOCKSIZE = 16; -static const int AES128_KEYSIZE = 16; static const int AES256_KEYSIZE = 32; -/** An encryption class for AES-128. */ -class AES128Encrypt -{ -private: - AES128_ctx ctx; - -public: - explicit AES128Encrypt(const unsigned char key[16]); - ~AES128Encrypt(); - void Encrypt(unsigned char ciphertext[16], const unsigned char plaintext[16]) const; -}; - -/** A decryption class for AES-128. */ -class AES128Decrypt -{ -private: - AES128_ctx ctx; - -public: - explicit AES128Decrypt(const unsigned char key[16]); - ~AES128Decrypt(); - void Decrypt(unsigned char plaintext[16], const unsigned char ciphertext[16]) const; -}; - /** An encryption class for AES-256. */ class AES256Encrypt { @@ -89,30 +64,4 @@ class AES256CBCDecrypt unsigned char iv[AES_BLOCKSIZE]; }; -class AES128CBCEncrypt -{ -public: - AES128CBCEncrypt(const unsigned char key[AES128_KEYSIZE], const unsigned char ivIn[AES_BLOCKSIZE], bool padIn); - ~AES128CBCEncrypt(); - int Encrypt(const unsigned char* data, int size, unsigned char* out) const; - -private: - const AES128Encrypt enc; - const bool pad; - unsigned char iv[AES_BLOCKSIZE]; -}; - -class AES128CBCDecrypt -{ -public: - AES128CBCDecrypt(const unsigned char key[AES128_KEYSIZE], const unsigned char ivIn[AES_BLOCKSIZE], bool padIn); - ~AES128CBCDecrypt(); - int Decrypt(const unsigned char* data, int size, unsigned char* out) const; - -private: - const AES128Decrypt dec; - const bool pad; - unsigned char iv[AES_BLOCKSIZE]; -}; - #endif // BITCOIN_CRYPTO_AES_H diff --git a/src/crypto/common.h b/src/crypto/common.h index baadd8db13..01cde3fd5d 100644 --- a/src/crypto/common.h +++ b/src/crypto/common.h @@ -1,4 +1,4 @@ -// Copyright (c) 2014-2017 The Bitcoin Core developers +// Copyright (c) 2014-2018 The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/crypto/hmac_sha256.cpp b/src/crypto/hmac_sha256.cpp index d4afe1439f..0ba99ae274 100644 --- a/src/crypto/hmac_sha256.cpp +++ b/src/crypto/hmac_sha256.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2014-2017 The Bitcoin Core developers +// Copyright (c) 2014-2018 The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/crypto/hmac_sha256.h b/src/crypto/hmac_sha256.h index 58491ff471..d31fda1dd1 100644 --- a/src/crypto/hmac_sha256.h +++ b/src/crypto/hmac_sha256.h @@ -1,9 +1,9 @@ -// Copyright (c) 2014-2017 The Bitcoin Core developers +// Copyright (c) 2014-2018 The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#ifndef BITCOIN_CRYPTO_AES_H -#define BITCOIN_CRYPTO_AES_H +#ifndef BITCOIN_CRYPTO_HMAC_SHA256_H +#define BITCOIN_CRYPTO_HMAC_SHA256_H #include @@ -29,4 +29,4 @@ class CHMAC_SHA256 void Finalize(unsigned char hash[OUTPUT_SIZE]); }; -#endif // BITCOIN_CRYPTO_AES_H +#endif // BITCOIN_CRYPTO_HMAC_SHA256_H diff --git a/src/crypto/hmac_sha512.cpp b/src/crypto/hmac_sha512.cpp index d9c4d04100..d70aee843b 100644 --- a/src/crypto/hmac_sha512.cpp +++ b/src/crypto/hmac_sha512.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2014-2017 The Bitcoin Core developers +// Copyright (c) 2014-2018 The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/crypto/hmac_sha512.h b/src/crypto/hmac_sha512.h index ab84ee7652..1ea9a3671e 100644 --- a/src/crypto/hmac_sha512.h +++ b/src/crypto/hmac_sha512.h @@ -1,4 +1,4 @@ -// Copyright (c) 2014-2017 The Bitcoin Core developers +// Copyright (c) 2014-2018 The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/crypto/poly1305.cpp b/src/crypto/poly1305.cpp new file mode 100644 index 0000000000..8a86c9601c --- /dev/null +++ b/src/crypto/poly1305.cpp @@ -0,0 +1,141 @@ +// Copyright (c) 2019 The Bitcoin Core developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +// Based on the public domain implementation by Andrew Moon +// poly1305-donna-unrolled.c from https://github.com/floodyberry/poly1305-donna + +#include +#include + +#include + +#define mul32x32_64(a,b) ((uint64_t)(a) * (b)) + +void poly1305_auth(unsigned char out[POLY1305_TAGLEN], const unsigned char *m, size_t inlen, const unsigned char key[POLY1305_KEYLEN]) { + uint32_t t0,t1,t2,t3; + uint32_t h0,h1,h2,h3,h4; + uint32_t r0,r1,r2,r3,r4; + uint32_t s1,s2,s3,s4; + uint32_t b, nb; + size_t j; + uint64_t t[5]; + uint64_t f0,f1,f2,f3; + uint64_t g0,g1,g2,g3,g4; + uint64_t c; + unsigned char mp[16]; + + /* clamp key */ + t0 = ReadLE32(key+0); + t1 = ReadLE32(key+4); + t2 = ReadLE32(key+8); + t3 = ReadLE32(key+12); + + /* precompute multipliers */ + r0 = t0 & 0x3ffffff; t0 >>= 26; t0 |= t1 << 6; + r1 = t0 & 0x3ffff03; t1 >>= 20; t1 |= t2 << 12; + r2 = t1 & 0x3ffc0ff; t2 >>= 14; t2 |= t3 << 18; + r3 = t2 & 0x3f03fff; t3 >>= 8; + r4 = t3 & 0x00fffff; + + s1 = r1 * 5; + s2 = r2 * 5; + s3 = r3 * 5; + s4 = r4 * 5; + + /* init state */ + h0 = 0; + h1 = 0; + h2 = 0; + h3 = 0; + h4 = 0; + + /* full blocks */ + if (inlen < 16) goto poly1305_donna_atmost15bytes; +poly1305_donna_16bytes: + m += 16; + inlen -= 16; + + t0 = ReadLE32(m-16); + t1 = ReadLE32(m-12); + t2 = ReadLE32(m-8); + t3 = ReadLE32(m-4); + + h0 += t0 & 0x3ffffff; + h1 += ((((uint64_t)t1 << 32) | t0) >> 26) & 0x3ffffff; + h2 += ((((uint64_t)t2 << 32) | t1) >> 20) & 0x3ffffff; + h3 += ((((uint64_t)t3 << 32) | t2) >> 14) & 0x3ffffff; + h4 += (t3 >> 8) | (1 << 24); + + +poly1305_donna_mul: + t[0] = mul32x32_64(h0,r0) + mul32x32_64(h1,s4) + mul32x32_64(h2,s3) + mul32x32_64(h3,s2) + mul32x32_64(h4,s1); + t[1] = mul32x32_64(h0,r1) + mul32x32_64(h1,r0) + mul32x32_64(h2,s4) + mul32x32_64(h3,s3) + mul32x32_64(h4,s2); + t[2] = mul32x32_64(h0,r2) + mul32x32_64(h1,r1) + mul32x32_64(h2,r0) + mul32x32_64(h3,s4) + mul32x32_64(h4,s3); + t[3] = mul32x32_64(h0,r3) + mul32x32_64(h1,r2) + mul32x32_64(h2,r1) + mul32x32_64(h3,r0) + mul32x32_64(h4,s4); + t[4] = mul32x32_64(h0,r4) + mul32x32_64(h1,r3) + mul32x32_64(h2,r2) + mul32x32_64(h3,r1) + mul32x32_64(h4,r0); + + h0 = (uint32_t)t[0] & 0x3ffffff; c = (t[0] >> 26); + t[1] += c; h1 = (uint32_t)t[1] & 0x3ffffff; b = (uint32_t)(t[1] >> 26); + t[2] += b; h2 = (uint32_t)t[2] & 0x3ffffff; b = (uint32_t)(t[2] >> 26); + t[3] += b; h3 = (uint32_t)t[3] & 0x3ffffff; b = (uint32_t)(t[3] >> 26); + t[4] += b; h4 = (uint32_t)t[4] & 0x3ffffff; b = (uint32_t)(t[4] >> 26); + h0 += b * 5; + + if (inlen >= 16) goto poly1305_donna_16bytes; + + /* final bytes */ +poly1305_donna_atmost15bytes: + if (!inlen) goto poly1305_donna_finish; + + for (j = 0; j < inlen; j++) mp[j] = m[j]; + mp[j++] = 1; + for (; j < 16; j++) mp[j] = 0; + inlen = 0; + + t0 = ReadLE32(mp+0); + t1 = ReadLE32(mp+4); + t2 = ReadLE32(mp+8); + t3 = ReadLE32(mp+12); + + h0 += t0 & 0x3ffffff; + h1 += ((((uint64_t)t1 << 32) | t0) >> 26) & 0x3ffffff; + h2 += ((((uint64_t)t2 << 32) | t1) >> 20) & 0x3ffffff; + h3 += ((((uint64_t)t3 << 32) | t2) >> 14) & 0x3ffffff; + h4 += (t3 >> 8); + + goto poly1305_donna_mul; + +poly1305_donna_finish: + b = h0 >> 26; h0 = h0 & 0x3ffffff; + h1 += b; b = h1 >> 26; h1 = h1 & 0x3ffffff; + h2 += b; b = h2 >> 26; h2 = h2 & 0x3ffffff; + h3 += b; b = h3 >> 26; h3 = h3 & 0x3ffffff; + h4 += b; b = h4 >> 26; h4 = h4 & 0x3ffffff; + h0 += b * 5; b = h0 >> 26; h0 = h0 & 0x3ffffff; + h1 += b; + + g0 = h0 + 5; b = g0 >> 26; g0 &= 0x3ffffff; + g1 = h1 + b; b = g1 >> 26; g1 &= 0x3ffffff; + g2 = h2 + b; b = g2 >> 26; g2 &= 0x3ffffff; + g3 = h3 + b; b = g3 >> 26; g3 &= 0x3ffffff; + g4 = h4 + b - (1 << 26); + + b = (g4 >> 31) - 1; + nb = ~b; + h0 = (h0 & nb) | (g0 & b); + h1 = (h1 & nb) | (g1 & b); + h2 = (h2 & nb) | (g2 & b); + h3 = (h3 & nb) | (g3 & b); + h4 = (h4 & nb) | (g4 & b); + + f0 = ((h0 ) | (h1 << 26)) + (uint64_t)ReadLE32(&key[16]); + f1 = ((h1 >> 6) | (h2 << 20)) + (uint64_t)ReadLE32(&key[20]); + f2 = ((h2 >> 12) | (h3 << 14)) + (uint64_t)ReadLE32(&key[24]); + f3 = ((h3 >> 18) | (h4 << 8)) + (uint64_t)ReadLE32(&key[28]); + + WriteLE32(&out[ 0], f0); f1 += (f0 >> 32); + WriteLE32(&out[ 4], f1); f2 += (f1 >> 32); + WriteLE32(&out[ 8], f2); f3 += (f2 >> 32); + WriteLE32(&out[12], f3); +} diff --git a/src/crypto/poly1305.h b/src/crypto/poly1305.h new file mode 100644 index 0000000000..1598b013b9 --- /dev/null +++ b/src/crypto/poly1305.h @@ -0,0 +1,17 @@ +// Copyright (c) 2019 The Bitcoin Core developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#ifndef BITCOIN_CRYPTO_POLY1305_H +#define BITCOIN_CRYPTO_POLY1305_H + +#include +#include + +#define POLY1305_KEYLEN 32 +#define POLY1305_TAGLEN 16 + +void poly1305_auth(unsigned char out[POLY1305_TAGLEN], const unsigned char *m, size_t inlen, + const unsigned char key[POLY1305_KEYLEN]); + +#endif // BITCOIN_CRYPTO_POLY1305_H diff --git a/src/crypto/ripemd160.cpp b/src/crypto/ripemd160.cpp index 51468ec8d0..a00331dcb7 100644 --- a/src/crypto/ripemd160.cpp +++ b/src/crypto/ripemd160.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2014-2017 The Bitcoin Core developers +// Copyright (c) 2014-2018 The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/crypto/ripemd160.h b/src/crypto/ripemd160.h index 1beb96f53b..38ea375c1f 100644 --- a/src/crypto/ripemd160.h +++ b/src/crypto/ripemd160.h @@ -2,8 +2,8 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#ifndef GRIDCOIN_CRYPTO_RIPEMD160_H -#define GRIDCOIN_CRYPTO_RIPEMD160_H +#ifndef BITCOIN_CRYPTO_RIPEMD160_H +#define BITCOIN_CRYPTO_RIPEMD160_H #include #include @@ -25,4 +25,4 @@ class CRIPEMD160 CRIPEMD160& Reset(); }; -#endif // GRIDCOIN_CRYPTO_RIPEMD160_H +#endif // BITCOIN_CRYPTO_RIPEMD160_H diff --git a/src/crypto/sha1.cpp b/src/crypto/sha1.cpp index dc96ac507a..5c601c54a6 100644 --- a/src/crypto/sha1.cpp +++ b/src/crypto/sha1.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2014-2017 The Bitcoin Core developers +// Copyright (c) 2014-2018 The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/crypto/sha256.cpp b/src/crypto/sha256.cpp index c7d183a9da..cab37e0322 100644 --- a/src/crypto/sha256.cpp +++ b/src/crypto/sha256.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2014-2017 The Bitcoin Core developers +// Copyright (c) 2014-2018 The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -29,6 +29,16 @@ namespace sha256d64_avx2 void Transform_8way(unsigned char* out, const unsigned char* in); } +namespace sha256d64_shani +{ +void Transform_2way(unsigned char* out, const unsigned char* in); +} + +namespace sha256_shani +{ +void Transform(uint32_t* s, const unsigned char* chunk, size_t blocks); +} + // Internal implementation code. namespace { @@ -448,6 +458,7 @@ void TransformD64Wrapper(unsigned char* out, const unsigned char* in) TransformType Transform = sha256::Transform; TransformD64Type TransformD64 = sha256::TransformD64; +TransformD64Type TransformD64_2way = nullptr; TransformD64Type TransformD64_4way = nullptr; TransformD64Type TransformD64_8way = nullptr; @@ -512,6 +523,13 @@ bool SelfTest() { TransformD64(out, data + 1); if (!std::equal(out, out + 32, result_d64)) return false; + // Test TransformD64_2way, if available. + if (TransformD64_2way) { + unsigned char out[64]; + TransformD64_2way(out, data + 1); + if (!std::equal(out, out + 64, result_d64)) return false; + } + // Test TransformD64_4way, if available. if (TransformD64_4way) { unsigned char out[128]; @@ -534,13 +552,13 @@ bool SelfTest() { // We can't use cpuid.h's __get_cpuid as it does not support subleafs. void inline cpuid(uint32_t leaf, uint32_t subleaf, uint32_t& a, uint32_t& b, uint32_t& c, uint32_t& d) { -// The below conditional define is needed to prevent compilation failure for some i686 builds on some GCC versions. #ifdef __GNUC__ __cpuid_count(leaf, subleaf, a, b, c, d); #else - __asm__ ("cpuid" : "=a"(a), "=b"(b), "=c"(c), "=d"(d) : "0"(leaf), "2"(subleaf)); + __asm__ ("cpuid" : "=a"(a), "=b"(b), "=c"(c), "=d"(d) : "0"(leaf), "2"(subleaf)); #endif } + /** Check whether the OS has enabled AVX registers. */ bool AVXEnabled() { @@ -556,32 +574,64 @@ std::string SHA256AutoDetect() { std::string ret = "standard"; #if defined(USE_ASM) && (defined(__x86_64__) || defined(__amd64__) || defined(__i386__)) - (void)AVXEnabled; // Silence unused warning (in case ENABLE_AVX2 is not defined) + bool have_sse4 = false; + bool have_xsave = false; + bool have_avx = false; + bool have_avx2 = false; + bool have_shani = false; + bool enabled_avx = false; + + (void)AVXEnabled; + (void)have_sse4; + (void)have_avx; + (void)have_xsave; + (void)have_avx2; + (void)have_shani; + (void)enabled_avx; + uint32_t eax, ebx, ecx, edx; cpuid(1, 0, eax, ebx, ecx, edx); - if ((ecx >> 19) & 1) { + have_sse4 = (ecx >> 19) & 1; + have_xsave = (ecx >> 27) & 1; + have_avx = (ecx >> 28) & 1; + if (have_xsave && have_avx) { + enabled_avx = AVXEnabled(); + } + if (have_sse4) { + cpuid(7, 0, eax, ebx, ecx, edx); + have_avx2 = (ebx >> 5) & 1; + have_shani = (ebx >> 29) & 1; + } + +#if defined(ENABLE_SHANI) && !defined(BUILD_BITCOIN_INTERNAL) + if (have_shani) { + Transform = sha256_shani::Transform; + TransformD64 = TransformD64Wrapper; + TransformD64_2way = sha256d64_shani::Transform_2way; + ret = "shani(1way,2way)"; + have_sse4 = false; // Disable SSE4/AVX2; + have_avx2 = false; + } +#endif + + if (have_sse4) { #if defined(__x86_64__) || defined(__amd64__) Transform = sha256_sse4::Transform; TransformD64 = TransformD64Wrapper; + ret = "sse4(1way)"; #endif #if defined(ENABLE_SSE41) && !defined(BUILD_BITCOIN_INTERNAL) TransformD64_4way = sha256d64_sse41::Transform_4way; - ret = "sse4(1way+4way)"; -#if defined(ENABLE_AVX2) && !defined(BUILD_BITCOIN_INTERNAL) - if (((ecx >> 27) & 1) && ((ecx >> 28) & 1)) { // XSAVE and AVX - cpuid(7, 0, eax, ebx, ecx, edx); - if ((ebx >> 5) & 1) { // AVX2 flag - if (AVXEnabled()) { // OS has enabled AVX registers - TransformD64_8way = sha256d64_avx2::Transform_8way; - ret += ",avx2(8way)"; - } - } - } -#endif -#else - ret = "sse4"; + ret += ",sse41(4way)"; #endif } + +#if defined(ENABLE_AVX2) && !defined(BUILD_BITCOIN_INTERNAL) + if (have_avx2 && have_avx && enabled_avx) { + TransformD64_8way = sha256d64_avx2::Transform_8way; + ret += ",avx2(8way)"; + } +#endif #endif assert(SelfTest()); @@ -663,6 +713,14 @@ void SHA256D64(unsigned char* out, const unsigned char* in, size_t blocks) blocks -= 4; } } + if (TransformD64_2way) { + while (blocks >= 2) { + TransformD64_2way(out, in); + out += 64; + in += 128; + blocks -= 2; + } + } while (blocks) { TransformD64(out, in); out += 32; diff --git a/src/crypto/sha256.h b/src/crypto/sha256.h index 31b2b3b3df..028ee14345 100644 --- a/src/crypto/sha256.h +++ b/src/crypto/sha256.h @@ -1,4 +1,4 @@ -// Copyright (c) 2014-2017 The Bitcoin Core developers +// Copyright (c) 2014-2018 The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/crypto/sha256_avx2.cpp b/src/crypto/sha256_avx2.cpp index b338b06927..068e0e5ff6 100644 --- a/src/crypto/sha256_avx2.cpp +++ b/src/crypto/sha256_avx2.cpp @@ -1,11 +1,7 @@ #ifdef ENABLE_AVX2 #include -#if defined(_MSC_VER) #include -#elif defined(__GNUC__) -#include -#endif #include #include diff --git a/src/crypto/sha256_shani.cpp b/src/crypto/sha256_shani.cpp new file mode 100644 index 0000000000..e561da42c5 --- /dev/null +++ b/src/crypto/sha256_shani.cpp @@ -0,0 +1,359 @@ +// Copyright (c) 2018 The Bitcoin Core developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. +// +// Based on https://github.com/noloader/SHA-Intrinsics/blob/master/sha256-x86.c, +// Written and placed in public domain by Jeffrey Walton. +// Based on code from Intel, and by Sean Gulley for the miTLS project. + +#ifdef ENABLE_SHANI + +#include +#include + +#include + + +namespace { + +const __m128i MASK = _mm_set_epi64x(0x0c0d0e0f08090a0bULL, 0x0405060700010203ULL); +const __m128i INIT0 = _mm_set_epi64x(0x6a09e667bb67ae85ull, 0x510e527f9b05688cull); +const __m128i INIT1 = _mm_set_epi64x(0x3c6ef372a54ff53aull, 0x1f83d9ab5be0cd19ull); + +void inline __attribute__((always_inline)) QuadRound(__m128i& state0, __m128i& state1, uint64_t k1, uint64_t k0) +{ + const __m128i msg = _mm_set_epi64x(k1, k0); + state1 = _mm_sha256rnds2_epu32(state1, state0, msg); + state0 = _mm_sha256rnds2_epu32(state0, state1, _mm_shuffle_epi32(msg, 0x0e)); +} + +void inline __attribute__((always_inline)) QuadRound(__m128i& state0, __m128i& state1, __m128i m, uint64_t k1, uint64_t k0) +{ + const __m128i msg = _mm_add_epi32(m, _mm_set_epi64x(k1, k0)); + state1 = _mm_sha256rnds2_epu32(state1, state0, msg); + state0 = _mm_sha256rnds2_epu32(state0, state1, _mm_shuffle_epi32(msg, 0x0e)); +} + +void inline __attribute__((always_inline)) ShiftMessageA(__m128i& m0, __m128i m1) +{ + m0 = _mm_sha256msg1_epu32(m0, m1); +} + +void inline __attribute__((always_inline)) ShiftMessageC(__m128i& m0, __m128i m1, __m128i& m2) +{ + m2 = _mm_sha256msg2_epu32(_mm_add_epi32(m2, _mm_alignr_epi8(m1, m0, 4)), m1); +} + +void inline __attribute__((always_inline)) ShiftMessageB(__m128i& m0, __m128i m1, __m128i& m2) +{ + ShiftMessageC(m0, m1, m2); + ShiftMessageA(m0, m1); +} + +void inline __attribute__((always_inline)) Shuffle(__m128i& s0, __m128i& s1) +{ + const __m128i t1 = _mm_shuffle_epi32(s0, 0xB1); + const __m128i t2 = _mm_shuffle_epi32(s1, 0x1B); + s0 = _mm_alignr_epi8(t1, t2, 0x08); + s1 = _mm_blend_epi16(t2, t1, 0xF0); +} + +void inline __attribute__((always_inline)) Unshuffle(__m128i& s0, __m128i& s1) +{ + const __m128i t1 = _mm_shuffle_epi32(s0, 0x1B); + const __m128i t2 = _mm_shuffle_epi32(s1, 0xB1); + s0 = _mm_blend_epi16(t1, t2, 0xF0); + s1 = _mm_alignr_epi8(t2, t1, 0x08); +} + +__m128i inline __attribute__((always_inline)) Load(const unsigned char* in) +{ + return _mm_shuffle_epi8(_mm_loadu_si128((const __m128i*)in), MASK); +} + +void inline __attribute__((always_inline)) Save(unsigned char* out, __m128i s) +{ + _mm_storeu_si128((__m128i*)out, _mm_shuffle_epi8(s, MASK)); +} +} + +namespace sha256_shani { +void Transform(uint32_t* s, const unsigned char* chunk, size_t blocks) +{ + __m128i m0, m1, m2, m3, s0, s1, so0, so1; + + /* Load state */ + s0 = _mm_loadu_si128((const __m128i*)s); + s1 = _mm_loadu_si128((const __m128i*)(s + 4)); + Shuffle(s0, s1); + + while (blocks--) { + /* Remember old state */ + so0 = s0; + so1 = s1; + + /* Load data and transform */ + m0 = Load(chunk); + QuadRound(s0, s1, m0, 0xe9b5dba5b5c0fbcfull, 0x71374491428a2f98ull); + m1 = Load(chunk + 16); + QuadRound(s0, s1, m1, 0xab1c5ed5923f82a4ull, 0x59f111f13956c25bull); + ShiftMessageA(m0, m1); + m2 = Load(chunk + 32); + QuadRound(s0, s1, m2, 0x550c7dc3243185beull, 0x12835b01d807aa98ull); + ShiftMessageA(m1, m2); + m3 = Load(chunk + 48); + QuadRound(s0, s1, m3, 0xc19bf1749bdc06a7ull, 0x80deb1fe72be5d74ull); + ShiftMessageB(m2, m3, m0); + QuadRound(s0, s1, m0, 0x240ca1cc0fc19dc6ull, 0xefbe4786E49b69c1ull); + ShiftMessageB(m3, m0, m1); + QuadRound(s0, s1, m1, 0x76f988da5cb0a9dcull, 0x4a7484aa2de92c6full); + ShiftMessageB(m0, m1, m2); + QuadRound(s0, s1, m2, 0xbf597fc7b00327c8ull, 0xa831c66d983e5152ull); + ShiftMessageB(m1, m2, m3); + QuadRound(s0, s1, m3, 0x1429296706ca6351ull, 0xd5a79147c6e00bf3ull); + ShiftMessageB(m2, m3, m0); + QuadRound(s0, s1, m0, 0x53380d134d2c6dfcull, 0x2e1b213827b70a85ull); + ShiftMessageB(m3, m0, m1); + QuadRound(s0, s1, m1, 0x92722c8581c2c92eull, 0x766a0abb650a7354ull); + ShiftMessageB(m0, m1, m2); + QuadRound(s0, s1, m2, 0xc76c51A3c24b8b70ull, 0xa81a664ba2bfe8a1ull); + ShiftMessageB(m1, m2, m3); + QuadRound(s0, s1, m3, 0x106aa070f40e3585ull, 0xd6990624d192e819ull); + ShiftMessageB(m2, m3, m0); + QuadRound(s0, s1, m0, 0x34b0bcb52748774cull, 0x1e376c0819a4c116ull); + ShiftMessageB(m3, m0, m1); + QuadRound(s0, s1, m1, 0x682e6ff35b9cca4full, 0x4ed8aa4a391c0cb3ull); + ShiftMessageC(m0, m1, m2); + QuadRound(s0, s1, m2, 0x8cc7020884c87814ull, 0x78a5636f748f82eeull); + ShiftMessageC(m1, m2, m3); + QuadRound(s0, s1, m3, 0xc67178f2bef9A3f7ull, 0xa4506ceb90befffaull); + + /* Combine with old state */ + s0 = _mm_add_epi32(s0, so0); + s1 = _mm_add_epi32(s1, so1); + + /* Advance */ + chunk += 64; + } + + Unshuffle(s0, s1); + _mm_storeu_si128((__m128i*)s, s0); + _mm_storeu_si128((__m128i*)(s + 4), s1); +} +} + +namespace sha256d64_shani { + +void Transform_2way(unsigned char* out, const unsigned char* in) +{ + __m128i am0, am1, am2, am3, as0, as1, aso0, aso1; + __m128i bm0, bm1, bm2, bm3, bs0, bs1, bso0, bso1; + + /* Transform 1 */ + bs0 = as0 = INIT0; + bs1 = as1 = INIT1; + am0 = Load(in); + bm0 = Load(in + 64); + QuadRound(as0, as1, am0, 0xe9b5dba5b5c0fbcfull, 0x71374491428a2f98ull); + QuadRound(bs0, bs1, bm0, 0xe9b5dba5b5c0fbcfull, 0x71374491428a2f98ull); + am1 = Load(in + 16); + bm1 = Load(in + 80); + QuadRound(as0, as1, am1, 0xab1c5ed5923f82a4ull, 0x59f111f13956c25bull); + QuadRound(bs0, bs1, bm1, 0xab1c5ed5923f82a4ull, 0x59f111f13956c25bull); + ShiftMessageA(am0, am1); + ShiftMessageA(bm0, bm1); + am2 = Load(in + 32); + bm2 = Load(in + 96); + QuadRound(as0, as1, am2, 0x550c7dc3243185beull, 0x12835b01d807aa98ull); + QuadRound(bs0, bs1, bm2, 0x550c7dc3243185beull, 0x12835b01d807aa98ull); + ShiftMessageA(am1, am2); + ShiftMessageA(bm1, bm2); + am3 = Load(in + 48); + bm3 = Load(in + 112); + QuadRound(as0, as1, am3, 0xc19bf1749bdc06a7ull, 0x80deb1fe72be5d74ull); + QuadRound(bs0, bs1, bm3, 0xc19bf1749bdc06a7ull, 0x80deb1fe72be5d74ull); + ShiftMessageB(am2, am3, am0); + ShiftMessageB(bm2, bm3, bm0); + QuadRound(as0, as1, am0, 0x240ca1cc0fc19dc6ull, 0xefbe4786E49b69c1ull); + QuadRound(bs0, bs1, bm0, 0x240ca1cc0fc19dc6ull, 0xefbe4786E49b69c1ull); + ShiftMessageB(am3, am0, am1); + ShiftMessageB(bm3, bm0, bm1); + QuadRound(as0, as1, am1, 0x76f988da5cb0a9dcull, 0x4a7484aa2de92c6full); + QuadRound(bs0, bs1, bm1, 0x76f988da5cb0a9dcull, 0x4a7484aa2de92c6full); + ShiftMessageB(am0, am1, am2); + ShiftMessageB(bm0, bm1, bm2); + QuadRound(as0, as1, am2, 0xbf597fc7b00327c8ull, 0xa831c66d983e5152ull); + QuadRound(bs0, bs1, bm2, 0xbf597fc7b00327c8ull, 0xa831c66d983e5152ull); + ShiftMessageB(am1, am2, am3); + ShiftMessageB(bm1, bm2, bm3); + QuadRound(as0, as1, am3, 0x1429296706ca6351ull, 0xd5a79147c6e00bf3ull); + QuadRound(bs0, bs1, bm3, 0x1429296706ca6351ull, 0xd5a79147c6e00bf3ull); + ShiftMessageB(am2, am3, am0); + ShiftMessageB(bm2, bm3, bm0); + QuadRound(as0, as1, am0, 0x53380d134d2c6dfcull, 0x2e1b213827b70a85ull); + QuadRound(bs0, bs1, bm0, 0x53380d134d2c6dfcull, 0x2e1b213827b70a85ull); + ShiftMessageB(am3, am0, am1); + ShiftMessageB(bm3, bm0, bm1); + QuadRound(as0, as1, am1, 0x92722c8581c2c92eull, 0x766a0abb650a7354ull); + QuadRound(bs0, bs1, bm1, 0x92722c8581c2c92eull, 0x766a0abb650a7354ull); + ShiftMessageB(am0, am1, am2); + ShiftMessageB(bm0, bm1, bm2); + QuadRound(as0, as1, am2, 0xc76c51A3c24b8b70ull, 0xa81a664ba2bfe8a1ull); + QuadRound(bs0, bs1, bm2, 0xc76c51A3c24b8b70ull, 0xa81a664ba2bfe8a1ull); + ShiftMessageB(am1, am2, am3); + ShiftMessageB(bm1, bm2, bm3); + QuadRound(as0, as1, am3, 0x106aa070f40e3585ull, 0xd6990624d192e819ull); + QuadRound(bs0, bs1, bm3, 0x106aa070f40e3585ull, 0xd6990624d192e819ull); + ShiftMessageB(am2, am3, am0); + ShiftMessageB(bm2, bm3, bm0); + QuadRound(as0, as1, am0, 0x34b0bcb52748774cull, 0x1e376c0819a4c116ull); + QuadRound(bs0, bs1, bm0, 0x34b0bcb52748774cull, 0x1e376c0819a4c116ull); + ShiftMessageB(am3, am0, am1); + ShiftMessageB(bm3, bm0, bm1); + QuadRound(as0, as1, am1, 0x682e6ff35b9cca4full, 0x4ed8aa4a391c0cb3ull); + QuadRound(bs0, bs1, bm1, 0x682e6ff35b9cca4full, 0x4ed8aa4a391c0cb3ull); + ShiftMessageC(am0, am1, am2); + ShiftMessageC(bm0, bm1, bm2); + QuadRound(as0, as1, am2, 0x8cc7020884c87814ull, 0x78a5636f748f82eeull); + QuadRound(bs0, bs1, bm2, 0x8cc7020884c87814ull, 0x78a5636f748f82eeull); + ShiftMessageC(am1, am2, am3); + ShiftMessageC(bm1, bm2, bm3); + QuadRound(as0, as1, am3, 0xc67178f2bef9A3f7ull, 0xa4506ceb90befffaull); + QuadRound(bs0, bs1, bm3, 0xc67178f2bef9A3f7ull, 0xa4506ceb90befffaull); + as0 = _mm_add_epi32(as0, INIT0); + bs0 = _mm_add_epi32(bs0, INIT0); + as1 = _mm_add_epi32(as1, INIT1); + bs1 = _mm_add_epi32(bs1, INIT1); + + /* Transform 2 */ + aso0 = as0; + bso0 = bs0; + aso1 = as1; + bso1 = bs1; + QuadRound(as0, as1, 0xe9b5dba5b5c0fbcfull, 0x71374491c28a2f98ull); + QuadRound(bs0, bs1, 0xe9b5dba5b5c0fbcfull, 0x71374491c28a2f98ull); + QuadRound(as0, as1, 0xab1c5ed5923f82a4ull, 0x59f111f13956c25bull); + QuadRound(bs0, bs1, 0xab1c5ed5923f82a4ull, 0x59f111f13956c25bull); + QuadRound(as0, as1, 0x550c7dc3243185beull, 0x12835b01d807aa98ull); + QuadRound(bs0, bs1, 0x550c7dc3243185beull, 0x12835b01d807aa98ull); + QuadRound(as0, as1, 0xc19bf3749bdc06a7ull, 0x80deb1fe72be5d74ull); + QuadRound(bs0, bs1, 0xc19bf3749bdc06a7ull, 0x80deb1fe72be5d74ull); + QuadRound(as0, as1, 0x240cf2540fe1edc6ull, 0xf0fe4786649b69c1ull); + QuadRound(bs0, bs1, 0x240cf2540fe1edc6ull, 0xf0fe4786649b69c1ull); + QuadRound(as0, as1, 0x16f988fa61b9411eull, 0x6cc984be4fe9346full); + QuadRound(bs0, bs1, 0x16f988fa61b9411eull, 0x6cc984be4fe9346full); + QuadRound(as0, as1, 0xb9d99ec7b019fc65ull, 0xa88e5a6df2c65152ull); + QuadRound(bs0, bs1, 0xb9d99ec7b019fc65ull, 0xa88e5a6df2c65152ull); + QuadRound(as0, as1, 0xc7353eb0fdb1232bull, 0xe70eeaa09a1231c3ull); + QuadRound(bs0, bs1, 0xc7353eb0fdb1232bull, 0xe70eeaa09a1231c3ull); + QuadRound(as0, as1, 0xdc1eeefd5a0f118full, 0xcb976d5f3069bad5ull); + QuadRound(bs0, bs1, 0xdc1eeefd5a0f118full, 0xcb976d5f3069bad5ull); + QuadRound(as0, as1, 0xe15d5b1658f4ca9dull, 0xde0b7a040a35b689ull); + QuadRound(bs0, bs1, 0xe15d5b1658f4ca9dull, 0xde0b7a040a35b689ull); + QuadRound(as0, as1, 0x6fab9537a507ea32ull, 0x37088980007f3e86ull); + QuadRound(bs0, bs1, 0x6fab9537a507ea32ull, 0x37088980007f3e86ull); + QuadRound(as0, as1, 0xc0bbbe37cdaa3b6dull, 0x0d8cd6f117406110ull); + QuadRound(bs0, bs1, 0xc0bbbe37cdaa3b6dull, 0x0d8cd6f117406110ull); + QuadRound(as0, as1, 0x6fd15ca70b02e931ull, 0xdb48a36383613bdaull); + QuadRound(bs0, bs1, 0x6fd15ca70b02e931ull, 0xdb48a36383613bdaull); + QuadRound(as0, as1, 0x6d4378906ed41a95ull, 0x31338431521afacaull); + QuadRound(bs0, bs1, 0x6d4378906ed41a95ull, 0x31338431521afacaull); + QuadRound(as0, as1, 0x532fb63cb5c9a0e6ull, 0x9eccabbdc39c91f2ull); + QuadRound(bs0, bs1, 0x532fb63cb5c9a0e6ull, 0x9eccabbdc39c91f2ull); + QuadRound(as0, as1, 0x4c191d76a4954b68ull, 0x07237ea3d2c741c6ull); + QuadRound(bs0, bs1, 0x4c191d76a4954b68ull, 0x07237ea3d2c741c6ull); + as0 = _mm_add_epi32(as0, aso0); + bs0 = _mm_add_epi32(bs0, bso0); + as1 = _mm_add_epi32(as1, aso1); + bs1 = _mm_add_epi32(bs1, bso1); + + /* Extract hash */ + Unshuffle(as0, as1); + Unshuffle(bs0, bs1); + am0 = as0; + bm0 = bs0; + am1 = as1; + bm1 = bs1; + + /* Transform 3 */ + bs0 = as0 = INIT0; + bs1 = as1 = INIT1; + QuadRound(as0, as1, am0, 0xe9b5dba5B5c0fbcfull, 0x71374491428a2f98ull); + QuadRound(bs0, bs1, bm0, 0xe9b5dba5B5c0fbcfull, 0x71374491428a2f98ull); + QuadRound(as0, as1, am1, 0xab1c5ed5923f82a4ull, 0x59f111f13956c25bull); + QuadRound(bs0, bs1, bm1, 0xab1c5ed5923f82a4ull, 0x59f111f13956c25bull); + ShiftMessageA(am0, am1); + ShiftMessageA(bm0, bm1); + bm2 = am2 = _mm_set_epi64x(0x0ull, 0x80000000ull); + QuadRound(as0, as1, 0x550c7dc3243185beull, 0x12835b015807aa98ull); + QuadRound(bs0, bs1, 0x550c7dc3243185beull, 0x12835b015807aa98ull); + ShiftMessageA(am1, am2); + ShiftMessageA(bm1, bm2); + bm3 = am3 = _mm_set_epi64x(0x10000000000ull, 0x0ull); + QuadRound(as0, as1, 0xc19bf2749bdc06a7ull, 0x80deb1fe72be5d74ull); + QuadRound(bs0, bs1, 0xc19bf2749bdc06a7ull, 0x80deb1fe72be5d74ull); + ShiftMessageB(am2, am3, am0); + ShiftMessageB(bm2, bm3, bm0); + QuadRound(as0, as1, am0, 0x240ca1cc0fc19dc6ull, 0xefbe4786e49b69c1ull); + QuadRound(bs0, bs1, bm0, 0x240ca1cc0fc19dc6ull, 0xefbe4786e49b69c1ull); + ShiftMessageB(am3, am0, am1); + ShiftMessageB(bm3, bm0, bm1); + QuadRound(as0, as1, am1, 0x76f988da5cb0a9dcull, 0x4a7484aa2de92c6full); + QuadRound(bs0, bs1, bm1, 0x76f988da5cb0a9dcull, 0x4a7484aa2de92c6full); + ShiftMessageB(am0, am1, am2); + ShiftMessageB(bm0, bm1, bm2); + QuadRound(as0, as1, am2, 0xbf597fc7b00327c8ull, 0xa831c66d983e5152ull); + QuadRound(bs0, bs1, bm2, 0xbf597fc7b00327c8ull, 0xa831c66d983e5152ull); + ShiftMessageB(am1, am2, am3); + ShiftMessageB(bm1, bm2, bm3); + QuadRound(as0, as1, am3, 0x1429296706ca6351ull, 0xd5a79147c6e00bf3ull); + QuadRound(bs0, bs1, bm3, 0x1429296706ca6351ull, 0xd5a79147c6e00bf3ull); + ShiftMessageB(am2, am3, am0); + ShiftMessageB(bm2, bm3, bm0); + QuadRound(as0, as1, am0, 0x53380d134d2c6dfcull, 0x2e1b213827b70a85ull); + QuadRound(bs0, bs1, bm0, 0x53380d134d2c6dfcull, 0x2e1b213827b70a85ull); + ShiftMessageB(am3, am0, am1); + ShiftMessageB(bm3, bm0, bm1); + QuadRound(as0, as1, am1, 0x92722c8581c2c92eull, 0x766a0abb650a7354ull); + QuadRound(bs0, bs1, bm1, 0x92722c8581c2c92eull, 0x766a0abb650a7354ull); + ShiftMessageB(am0, am1, am2); + ShiftMessageB(bm0, bm1, bm2); + QuadRound(as0, as1, am2, 0xc76c51a3c24b8b70ull, 0xa81a664ba2bfe8A1ull); + QuadRound(bs0, bs1, bm2, 0xc76c51a3c24b8b70ull, 0xa81a664ba2bfe8A1ull); + ShiftMessageB(am1, am2, am3); + ShiftMessageB(bm1, bm2, bm3); + QuadRound(as0, as1, am3, 0x106aa070f40e3585ull, 0xd6990624d192e819ull); + QuadRound(bs0, bs1, bm3, 0x106aa070f40e3585ull, 0xd6990624d192e819ull); + ShiftMessageB(am2, am3, am0); + ShiftMessageB(bm2, bm3, bm0); + QuadRound(as0, as1, am0, 0x34b0bcb52748774cull, 0x1e376c0819a4c116ull); + QuadRound(bs0, bs1, bm0, 0x34b0bcb52748774cull, 0x1e376c0819a4c116ull); + ShiftMessageB(am3, am0, am1); + ShiftMessageB(bm3, bm0, bm1); + QuadRound(as0, as1, am1, 0x682e6ff35b9cca4full, 0x4ed8aa4a391c0cb3ull); + QuadRound(bs0, bs1, bm1, 0x682e6ff35b9cca4full, 0x4ed8aa4a391c0cb3ull); + ShiftMessageC(am0, am1, am2); + ShiftMessageC(bm0, bm1, bm2); + QuadRound(as0, as1, am2, 0x8cc7020884c87814ull, 0x78a5636f748f82eeull); + QuadRound(bs0, bs1, bm2, 0x8cc7020884c87814ull, 0x78a5636f748f82eeull); + ShiftMessageC(am1, am2, am3); + ShiftMessageC(bm1, bm2, bm3); + QuadRound(as0, as1, am3, 0xc67178f2bef9a3f7ull, 0xa4506ceb90befffaull); + QuadRound(bs0, bs1, bm3, 0xc67178f2bef9a3f7ull, 0xa4506ceb90befffaull); + as0 = _mm_add_epi32(as0, INIT0); + bs0 = _mm_add_epi32(bs0, INIT0); + as1 = _mm_add_epi32(as1, INIT1); + bs1 = _mm_add_epi32(bs1, INIT1); + + /* Extract hash into out */ + Unshuffle(as0, as1); + Unshuffle(bs0, bs1); + Save(out, as0); + Save(out + 16, as1); + Save(out + 32, bs0); + Save(out + 48, bs1); +} + +} + +#endif diff --git a/src/crypto/sha256_sse4.cpp b/src/crypto/sha256_sse4.cpp index 78bb76bcce..89f529a3ab 100644 --- a/src/crypto/sha256_sse4.cpp +++ b/src/crypto/sha256_sse4.cpp @@ -953,7 +953,6 @@ void Transform(uint32_t* s, const unsigned char* chunk, size_t blocks) : "m"(K256), "m"(FLIP_MASK), "m"(SHUF_00BA), "m"(SHUF_DC00) : "cc", "memory", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6", "xmm7", "xmm8", "xmm9", "xmm10", "xmm11", "xmm12" ); - } } diff --git a/src/crypto/sha256_sse41.cpp b/src/crypto/sha256_sse41.cpp index be71dd8fb8..adca870e2d 100644 --- a/src/crypto/sha256_sse41.cpp +++ b/src/crypto/sha256_sse41.cpp @@ -1,11 +1,7 @@ #ifdef ENABLE_SSE41 #include -#if defined(_MSC_VER) #include -#elif defined(__GNUC__) -#include -#endif #include #include diff --git a/src/crypto/sha512.cpp b/src/crypto/sha512.cpp index dff4d8da1a..bc64135cae 100644 --- a/src/crypto/sha512.cpp +++ b/src/crypto/sha512.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2014-2017 The Bitcoin Core developers +// Copyright (c) 2014-2018 The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/crypto/sha512.h b/src/crypto/sha512.h index cd1023bc85..4118ac1b18 100644 --- a/src/crypto/sha512.h +++ b/src/crypto/sha512.h @@ -17,7 +17,7 @@ class CSHA512 uint64_t bytes; public: - static const size_t OUTPUT_SIZE = 64; + static constexpr size_t OUTPUT_SIZE = 64; CSHA512(); CSHA512& Write(const unsigned char* data, size_t len); diff --git a/src/crypto/siphash.cpp b/src/crypto/siphash.cpp new file mode 100644 index 0000000000..e81957111a --- /dev/null +++ b/src/crypto/siphash.cpp @@ -0,0 +1,173 @@ +// Copyright (c) 2016-2018 The Bitcoin Core developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#include + +#define ROTL(x, b) (uint64_t)(((x) << (b)) | ((x) >> (64 - (b)))) + +#define SIPROUND do { \ + v0 += v1; v1 = ROTL(v1, 13); v1 ^= v0; \ + v0 = ROTL(v0, 32); \ + v2 += v3; v3 = ROTL(v3, 16); v3 ^= v2; \ + v0 += v3; v3 = ROTL(v3, 21); v3 ^= v0; \ + v2 += v1; v1 = ROTL(v1, 17); v1 ^= v2; \ + v2 = ROTL(v2, 32); \ +} while (0) + +CSipHasher::CSipHasher(uint64_t k0, uint64_t k1) +{ + v[0] = 0x736f6d6570736575ULL ^ k0; + v[1] = 0x646f72616e646f6dULL ^ k1; + v[2] = 0x6c7967656e657261ULL ^ k0; + v[3] = 0x7465646279746573ULL ^ k1; + count = 0; + tmp = 0; +} + +CSipHasher& CSipHasher::Write(uint64_t data) +{ + uint64_t v0 = v[0], v1 = v[1], v2 = v[2], v3 = v[3]; + + assert(count % 8 == 0); + + v3 ^= data; + SIPROUND; + SIPROUND; + v0 ^= data; + + v[0] = v0; + v[1] = v1; + v[2] = v2; + v[3] = v3; + + count += 8; + return *this; +} + +CSipHasher& CSipHasher::Write(const unsigned char* data, size_t size) +{ + uint64_t v0 = v[0], v1 = v[1], v2 = v[2], v3 = v[3]; + uint64_t t = tmp; + int c = count; + + while (size--) { + t |= ((uint64_t)(*(data++))) << (8 * (c % 8)); + c++; + if ((c & 7) == 0) { + v3 ^= t; + SIPROUND; + SIPROUND; + v0 ^= t; + t = 0; + } + } + + v[0] = v0; + v[1] = v1; + v[2] = v2; + v[3] = v3; + count = c; + tmp = t; + + return *this; +} + +uint64_t CSipHasher::Finalize() const +{ + uint64_t v0 = v[0], v1 = v[1], v2 = v[2], v3 = v[3]; + + uint64_t t = tmp | (((uint64_t)count) << 56); + + v3 ^= t; + SIPROUND; + SIPROUND; + v0 ^= t; + v2 ^= 0xFF; + SIPROUND; + SIPROUND; + SIPROUND; + SIPROUND; + return v0 ^ v1 ^ v2 ^ v3; +} + +uint64_t SipHashUint256(uint64_t k0, uint64_t k1, const uint256& val) +{ + /* Specialized implementation for efficiency */ + uint64_t d = val.GetUint64(0); + + uint64_t v0 = 0x736f6d6570736575ULL ^ k0; + uint64_t v1 = 0x646f72616e646f6dULL ^ k1; + uint64_t v2 = 0x6c7967656e657261ULL ^ k0; + uint64_t v3 = 0x7465646279746573ULL ^ k1 ^ d; + + SIPROUND; + SIPROUND; + v0 ^= d; + d = val.GetUint64(1); + v3 ^= d; + SIPROUND; + SIPROUND; + v0 ^= d; + d = val.GetUint64(2); + v3 ^= d; + SIPROUND; + SIPROUND; + v0 ^= d; + d = val.GetUint64(3); + v3 ^= d; + SIPROUND; + SIPROUND; + v0 ^= d; + v3 ^= ((uint64_t)4) << 59; + SIPROUND; + SIPROUND; + v0 ^= ((uint64_t)4) << 59; + v2 ^= 0xFF; + SIPROUND; + SIPROUND; + SIPROUND; + SIPROUND; + return v0 ^ v1 ^ v2 ^ v3; +} + +uint64_t SipHashUint256Extra(uint64_t k0, uint64_t k1, const uint256& val, uint32_t extra) +{ + /* Specialized implementation for efficiency */ + uint64_t d = val.GetUint64(0); + + uint64_t v0 = 0x736f6d6570736575ULL ^ k0; + uint64_t v1 = 0x646f72616e646f6dULL ^ k1; + uint64_t v2 = 0x6c7967656e657261ULL ^ k0; + uint64_t v3 = 0x7465646279746573ULL ^ k1 ^ d; + + SIPROUND; + SIPROUND; + v0 ^= d; + d = val.GetUint64(1); + v3 ^= d; + SIPROUND; + SIPROUND; + v0 ^= d; + d = val.GetUint64(2); + v3 ^= d; + SIPROUND; + SIPROUND; + v0 ^= d; + d = val.GetUint64(3); + v3 ^= d; + SIPROUND; + SIPROUND; + v0 ^= d; + d = (((uint64_t)36) << 56) | extra; + v3 ^= d; + SIPROUND; + SIPROUND; + v0 ^= d; + v2 ^= 0xFF; + SIPROUND; + SIPROUND; + SIPROUND; + SIPROUND; + return v0 ^ v1 ^ v2 ^ v3; +} diff --git a/src/crypto/siphash.h b/src/crypto/siphash.h new file mode 100644 index 0000000000..b312f913f9 --- /dev/null +++ b/src/crypto/siphash.h @@ -0,0 +1,47 @@ +// Copyright (c) 2016-2018 The Bitcoin Core developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#ifndef BITCOIN_CRYPTO_SIPHASH_H +#define BITCOIN_CRYPTO_SIPHASH_H + +#include + +#include + +/** SipHash-2-4 */ +class CSipHasher +{ +private: + uint64_t v[4]; + uint64_t tmp; + int count; + +public: + /** Construct a SipHash calculator initialized with 128-bit key (k0, k1) */ + CSipHasher(uint64_t k0, uint64_t k1); + /** Hash a 64-bit integer worth of data + * It is treated as if this was the little-endian interpretation of 8 bytes. + * This function can only be used when a multiple of 8 bytes have been written so far. + */ + CSipHasher& Write(uint64_t data); + /** Hash arbitrary bytes. */ + CSipHasher& Write(const unsigned char* data, size_t size); + /** Compute the 64-bit SipHash-2-4 of the data written so far. The object remains untouched. */ + uint64_t Finalize() const; +}; + +/** Optimized SipHash-2-4 implementation for uint256. + * + * It is identical to: + * SipHasher(k0, k1) + * .Write(val.GetUint64(0)) + * .Write(val.GetUint64(1)) + * .Write(val.GetUint64(2)) + * .Write(val.GetUint64(3)) + * .Finalize() + */ +uint64_t SipHashUint256(uint64_t k0, uint64_t k1, const uint256& val); +uint64_t SipHashUint256Extra(uint64_t k0, uint64_t k1, const uint256& val, uint32_t extra); + +#endif // BITCOIN_CRYPTO_SIPHASH_H diff --git a/src/global_objects_noui.hpp b/src/global_objects_noui.hpp index 1725ee4a42..786678da38 100755 --- a/src/global_objects_noui.hpp +++ b/src/global_objects_noui.hpp @@ -8,7 +8,6 @@ extern int nBoincUtilization; extern std::string sRegVer; -extern int nRegVersion; extern bool bNetAveragesLoaded; extern bool bForceUpdate; extern bool fQtActive; @@ -17,29 +16,11 @@ extern bool bGridcoinGUILoaded; struct StructCPID { bool initialized; - bool Iscpidvalid; - double rac; - double utc; - double rectime; - double age; - double verifiedrac; - double verifiedutc; - double verifiedrectime; - double verifiedage; - uint32_t entries; - double AverageRAC; - double NetworkProjects; - double NetworkRAC; - double TotalRAC; - double TotalNetworkRAC; double Magnitude; - double PaymentMagnitude; double owed; double payments; double interestPayments; - double verifiedTotalRAC; - double verifiedMagnitude; double TotalMagnitude; uint32_t LowLockTime; uint32_t HighLockTime; @@ -55,49 +36,27 @@ struct StructCPID double NetworkMagnitude; double NetworkAvgMagnitude; std::string cpid; - std::string cpidhash; - std::string projectname; - std::string team; - std::string boincpublickey; - std::string errors; - std::string cpidv2; std::string BlockHash; std::set rewardBlocks; }; struct MiningCPID { - double rac; - double pobdifficulty; - unsigned int diffbytes; bool initialized; - double nonce; - double NetworkRAC; double Magnitude; double RSAWeight; double LastPaymentTime; double ResearchSubsidy; - double ResearchSubsidy2; double ResearchAge; double ResearchMagnitudeUnit; double ResearchAverageMagnitude; double InterestSubsidy; - std::string projectname; - std::string encboincpublickey; std::string cpid; - std::string cpidhash; - std::string enccpid; - std::string aesskein; - std::string encaes; std::string clientversion; - std::string cpidv2; - std::string email; - std::string boincruntimepublickey; std::string GRCAddress; std::string lastblockhash; std::string Organization; - std::string OrganizationKey; std::string NeuralHash; std::string superblock; std::string LastPORBlockHash; @@ -106,8 +65,6 @@ struct MiningCPID std::string BoincSignature; }; -//User CPIDs -extern std::map mvCPIDs; //Network Averages extern std::map mvNetwork; extern std::map mvNetworkCopy; diff --git a/src/init.cpp b/src/init.cpp index 6049905ca0..3ca7ef61f4 100755 --- a/src/init.cpp +++ b/src/init.cpp @@ -14,6 +14,7 @@ #include "tally.h" #include "beacon.h" #include "neuralnet/neuralnet.h" +#include "neuralnet/researcher.h" #include #include @@ -32,7 +33,6 @@ extern boost::thread_group threadGroup; void TallyResearchAverages(CBlockIndex* index); extern void ThreadAppInit2(void* parg); -void LoadCPIDs(); bool IsConfigFileEmpty(); #ifndef WIN32 @@ -50,6 +50,7 @@ extern unsigned int nDerivationMethodIndex; extern unsigned int nMinerSleep; extern unsigned int nScraperSleep; extern unsigned int nActiveBeforeSB; +extern bool fExplorer; extern bool fUseFastIndex; extern boost::filesystem::path pathScraper; @@ -540,11 +541,6 @@ bool AppInit2(ThreadHandlerPtr threads) if (!lock.try_lock()) return InitError(strprintf(_("Cannot obtain a lock on data directory %s. Gridcoin is probably already running."), strDataDir)); - // Set the scraper file staging directory. - pathScraper = GetDataDir() / "Scraper"; - - - #if !defined(WIN32) if (fDaemon) { @@ -939,10 +935,10 @@ bool AppInit2(ThreadHandlerPtr threads) ComputeNeuralNetworkSupermajorityHashes(); uiInterface.InitMessage(_("Finding first applicable Research Project...")); - LoadCPIDs(); + NN::Researcher::Reload(); if(!pwalletMain->IsLocked()) - ImportBeaconKeysFromConfig(GlobalCPUMiningCPID.cpid, pwalletMain); + ImportBeaconKeysFromConfig(NN::GetPrimaryCpid(), pwalletMain); if (!CheckDiskSpace()) return false; diff --git a/src/kernel.cpp b/src/kernel.cpp index 7608a94fa7..98c41abf47 100644 --- a/src/kernel.cpp +++ b/src/kernel.cpp @@ -520,7 +520,7 @@ static bool CheckStakeKernelHashV1(unsigned int nBits, const CBlock& blockFrom, //Use this area to log the submitters cpid and mint amount: if (!checking_local || fDebug) { - if (LessVerbose(75)) LogPrintf("{Vitals}: cpid %s, project %s, RSA_WEIGHT: %" PRId64, cpid, boincblock.projectname, RSA_WEIGHT); + if (LessVerbose(75)) LogPrintf("{Vitals}: cpid %s, RSA_WEIGHT: %" PRId64, cpid, RSA_WEIGHT); } return false; } diff --git a/src/main.cpp b/src/main.cpp index a6b9353721..6e7320d69b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -15,28 +15,24 @@ #include "block.h" #include "scrypt.h" #include "global_objects_noui.hpp" -#include "cpid.h" #include "rpcserver.h" #include "rpcclient.h" -#include "boinc.h" #include "beacon.h" #include "miner.h" +#include "neuralnet/cpid.h" #include "neuralnet/neuralnet.h" +#include "neuralnet/researcher.h" +#include "neuralnet/superblock.h" #include "backup.h" #include "appcache.h" #include "tally.h" #include "contract/contract.h" -#include "contract/superblock.h" #include "scraper_net.h" #include -#include #include #include // for to_lower() -#include // for startswith() and endswith() -#include #include -#include #include #include #include @@ -45,7 +41,6 @@ extern std::string NodeAddress(CNode* pfrom); extern bool WalletOutOfSync(); bool AdvertiseBeacon(std::string &sOutPrivKey, std::string &sOutPubKey, std::string &sError, std::string &sMessage); -bool ImportBeaconKeysFromConfig(); extern void CleanInboundConnections(bool bClearAll); bool RequestSupermajorityNeuralData(); extern bool AskForOutstandingBlocks(uint256 hashStart); @@ -54,17 +49,13 @@ bool TallyResearchAverages(CBlockIndex* index); bool TallyResearchAverages_retired(CBlockIndex* index); bool TallyResearchAverages_v9(CBlockIndex* index); extern void IncrementCurrentNeuralNetworkSupermajority(std::string NeuralHash, std::string GRCAddress, double distance); -extern MiningCPID GetInitializedMiningCPID(std::string name, std::map& vRef); extern double ExtractMagnitudeFromExplainMagnitude(); extern void GridcoinServices(); extern double SnapToGrid(double d); extern bool StrLessThanReferenceHash(std::string rh); extern bool IsContract(CBlockIndex* pIndex); -std::string ExtractValue(std::string data, std::string delimiter, int pos); -UniValue MagnitudeReport(std::string cpid); void RemoveCPIDBlockHash(const std::string& cpid, const CBlockIndex* pindex); void ZeroOutResearcherTotals(StructCPID& stCpid); -bool CPIDAcidTest2(std::string bpk, std::string externalcpid); extern bool BlockNeedsChecked(int64_t BlockTime); int64_t GetEarliestWalletTransaction(); extern void IncrementVersionCount(const std::string& Version); @@ -87,7 +78,6 @@ extern double GetOutstandingAmountOwed(StructCPID &mag, std::string cpid, int64_ extern double GetOwedAmount(std::string cpid); bool TallyMagnitudesInSuperblock(); -extern std::string GetNeuralNetworkReport(); std::string GetCommandNonce(std::string command); extern double GRCMagnitudeUnit(int64_t locktime); @@ -113,24 +103,16 @@ int64_t nBootup = 0; int64_t nLastGRCtallied = 0; int64_t nLastCleaned = 0; -extern bool IsCPIDValidv3(std::string cpidv2, bool allow_investor); - -double GetLastPaymentTimeByCPID(std::string cpid); extern double CoinToDouble(double surrogate); -int64_t GetRSAWeightByCPID(std::string cpid); extern MiningCPID GetMiningCPID(); extern StructCPID GetStructCPID(); -int64_t nLastBlockSolved = 0; //Future timestamp - ///////////////////////MINOR VERSION//////////////////////////////// std::string msMasterProjectPublicKey = "049ac003b3318d9fe28b2830f6a95a2624ce2a69fb0c0c7ac0b513efcc1e93a6a6e8eba84481155dd82f2f1104e0ff62c69d662b0094639b7106abc5d84f948c0a"; // The Private Key is revealed by design, for public messages only: std::string msMasterMessagePrivateKey = "308201130201010420fbd45ffb02ff05a3322c0d77e1e7aea264866c24e81e5ab6a8e150666b4dc6d8a081a53081a2020101302c06072a8648ce3d0101022100fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f300604010004010704410479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8022100fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141020101a144034200044b2938fbc38071f24bede21e838a0758a52a0085f2e034e7f971df445436a252467f692ec9c5ba7e5eaa898ab99cbd9949496f7e3cafbf56304b1cc2e5bdf06e"; std::string msMasterMessagePublicKey = "044b2938fbc38071f24bede21e838a0758a52a0085f2e034e7f971df445436a252467f692ec9c5ba7e5eaa898ab99cbd9949496f7e3cafbf56304b1cc2e5bdf06e"; -std::string YesNo(bool bin); - int64_t GetMaximumBoincSubsidy(int64_t nTime); extern double CalculatedMagnitude(int64_t locktime,bool bUseLederstrumpf); extern int64_t GetCoinYearReward(int64_t nTime); @@ -203,22 +185,14 @@ extern double LederstrumpfMagnitude2(double Magnitude, int64_t locktime); extern void GetGlobalStatus(); bool PollIsActive(const std::string& poll_contract); -double GetNetworkAvgByProject(std::string projectname); -extern bool IsCPIDValid_Retired(std::string cpid, std::string ENCboincpubkey); extern bool IsCPIDValidv2(MiningCPID& mc, int height); -extern std::string getfilecontents(std::string filename); extern bool LessVerbose(int iMax1000); -extern MiningCPID GetNextProject(bool bForce); -extern void HarvestCPIDs(bool cleardata); /////////////////////////////// // Standard Boinc Projects //// /////////////////////////////// -//Global variables to display current mined project in various places: -std::string msMiningProject; -std::string msMiningCPID; -std::string msPrimaryCPID; +//Global variables to display current mined project in various placesn: double mdPORNonce = 0; double mdMachineTimerLast = 0; // Mining status variables @@ -253,7 +227,6 @@ MiningCPID GlobalCPUMiningCPID = GetMiningCPID(); int nBoincUtilization = 0; std::string sRegVer; -std::map mvCPIDs; //Contains the project stats at the user level std::map mvNetwork; //Contains the project stats at the network level std::map mvNetworkCopy; //Contains the project stats at the network level std::map mvMagnitudes; // Contains Magnitudes by CPID & Outstanding Payments Owed per CPID @@ -623,7 +596,6 @@ void GetGlobalStatus() GlobalStatusStruct.magnitude = RoundToString(boincmagnitude,2); GlobalStatusStruct.ETTS = RoundToString(dETTS,3); GlobalStatusStruct.ERRperday = RoundToString(boincmagnitude * GRCMagnitudeUnit(GetAdjustedTime()),2); - GlobalStatusStruct.project = msMiningProject; GlobalStatusStruct.cpid = GlobalCPUMiningCPID.cpid; try { @@ -635,7 +607,7 @@ void GetGlobalStatus() LogPrintf("Error obtaining last poll: %s", e.what()); } - GlobalStatusStruct.status.clear(); + GlobalStatusStruct.status = msMiningErrors; if(MinerStatus.WeightSum) GlobalStatusStruct.coinWeight = RoundToString(MinerStatus.WeightSum / 80.0,2); @@ -667,7 +639,7 @@ void GetGlobalStatus() } catch (std::exception& e) { - msMiningErrors = _("Error obtaining status."); + GlobalStatusStruct.errors = _("Error obtaining status."); LogPrintf("Error obtaining status"); return; @@ -732,230 +704,6 @@ void UnregisterWallet(CWallet* pwalletIn) } } - -MiningCPID GetInitializedGlobalCPUMiningCPID(std::string cpid) -{ - - MiningCPID mc = GetMiningCPID(); - mc.initialized = true; - mc.cpid=cpid; - mc.projectname = cpid; - mc.cpidv2=cpid; - mc.cpidhash = ""; - mc.email = cpid; - mc.boincruntimepublickey = cpid; - mc.rac=0; - mc.encboincpublickey = ""; - mc.enccpid = ""; - mc.NetworkRAC = 0; - mc.Magnitude = 0; - mc.clientversion = ""; - mc.RSAWeight = GetRSAWeightByCPID(cpid); - mc.LastPaymentTime = nLastBlockSolved; - mc.diffbytes = 0; - mc.lastblockhash = "0"; - // Reuse for debugging - mc.Organization = GetArg("-org", ""); - return mc; -} - - -MiningCPID GetNextProject(bool bForce) -{ - - - - if (GlobalCPUMiningCPID.projectname.length() > 3 && GlobalCPUMiningCPID.projectname != "INVESTOR" && GlobalCPUMiningCPID.Magnitude >= 1) - { - if (!Timer_Main("globalcpuminingcpid",10)) - { - //Prevent Thrashing - return GlobalCPUMiningCPID; - } - } - - - std::string sBoincKey = GetArgument("boinckey",""); - if (!sBoincKey.empty()) - { - if (fDebug3 && LessVerbose(50)) LogPrintf("Using cached boinckey for project %s",GlobalCPUMiningCPID.projectname); - msMiningProject = GlobalCPUMiningCPID.projectname; - msMiningCPID = GlobalCPUMiningCPID.cpid; - if (LessVerbose(5)) LogPrintf("BoincKey - Mining project %s RAC(%f)", GlobalCPUMiningCPID.projectname, GlobalCPUMiningCPID.rac); - double ProjectRAC = GetNetworkAvgByProject(GlobalCPUMiningCPID.projectname); - GlobalCPUMiningCPID.NetworkRAC = ProjectRAC; - GlobalCPUMiningCPID.Magnitude = CalculatedMagnitude(GetAdjustedTime(),false); - if (fDebug3) LogPrintf("(boinckey) For CPID %s Verified Magnitude = %f",GlobalCPUMiningCPID.cpid,GlobalCPUMiningCPID.Magnitude); - msMiningErrors = (msMiningCPID == "INVESTOR" || msPrimaryCPID=="INVESTOR" || msMiningCPID.empty()) ? _("Staking Interest") : _("Mining"); - GlobalCPUMiningCPID.RSAWeight = GetRSAWeightByCPID(GlobalCPUMiningCPID.cpid); - GlobalCPUMiningCPID.LastPaymentTime = GetLastPaymentTimeByCPID(GlobalCPUMiningCPID.cpid); - return GlobalCPUMiningCPID; - } - - - msMiningProject = ""; - msMiningCPID = ""; - GlobalCPUMiningCPID = GetInitializedGlobalCPUMiningCPID(""); - - std::string email = GetArgument("email", "NA"); - boost::to_lower(email); - - - - if (IsInitialBlockDownload() && !bForce) - { - if (LessVerbose(100)) LogPrintf("CPUMiner: Gridcoin is downloading blocks Or CPIDs are not yet loaded..."); - MilliSleep(1); - return GlobalCPUMiningCPID; - } - - try - { - - if (mvCPIDs.size() < 1) - { - if (fDebug && LessVerbose(10)) LogPrintf("Gridcoin has no CPIDs..."); - //Let control reach the investor area - } - - int iValidProjects=0; - //Count valid projects: - for(map::iterator ii=mvCPIDs.begin(); ii!=mvCPIDs.end(); ++ii) - { - StructCPID structcpid = mvCPIDs[(*ii).first]; - if ( msPrimaryCPID == structcpid.cpid && - structcpid.initialized && structcpid.Iscpidvalid) iValidProjects++; - } - - // Find next available CPU project: - int iDistributedProject = 0; - int iRow = 0; - - if (email=="" || email=="NA") iValidProjects = 0; //Let control reach investor area - - - if (iValidProjects > 0) - { - for (int i = 0; i <= 4;i++) - { - iRow=0; - iDistributedProject = (rand() % iValidProjects)+1; - - for(map::iterator ii=mvCPIDs.begin(); ii!=mvCPIDs.end(); ++ii) - { - StructCPID structcpid = mvCPIDs[(*ii).first]; - - if (structcpid.initialized) - { - if (msPrimaryCPID == structcpid.cpid && - structcpid.Iscpidvalid && structcpid.projectname.length() > 1) - { - iRow++; - if (i==4 || iDistributedProject == iRow) - { - if (true) - { - GlobalCPUMiningCPID.enccpid = structcpid.boincpublickey; - bool checkcpid = IsCPIDValid_Retired(structcpid.cpid,GlobalCPUMiningCPID.enccpid); - if (!checkcpid) - { - LogPrintf("CPID invalid %s 1. ",structcpid.cpid); - continue; - } - - if (checkcpid) - { - - GlobalCPUMiningCPID.email = email; - - if (LessVerbose(1) || fDebug || fDebug3) LogPrintf("Ready to CPU Mine project %s with CPID %s, RAC(%f) ", - structcpid.projectname.c_str(),structcpid.cpid.c_str(), - structcpid.rac); - //Required for project to be mined in a block: - GlobalCPUMiningCPID.cpid=structcpid.cpid; - GlobalCPUMiningCPID.projectname = structcpid.projectname; - GlobalCPUMiningCPID.rac=structcpid.rac; - GlobalCPUMiningCPID.encboincpublickey = structcpid.boincpublickey; - GlobalCPUMiningCPID.encaes = structcpid.boincpublickey; - - - GlobalCPUMiningCPID.boincruntimepublickey = structcpid.cpidhash; - if(fDebug) LogPrintf("GNP: Setting bpk to %s",structcpid.cpidhash); - - uint256 pbh = 1; - GlobalCPUMiningCPID.cpidv2 = ComputeCPIDv2(GlobalCPUMiningCPID.email,GlobalCPUMiningCPID.boincruntimepublickey, pbh); - GlobalCPUMiningCPID.lastblockhash = "0"; - // Sign the block - GlobalCPUMiningCPID.BoincPublicKey = GetBeaconPublicKey(structcpid.cpid, false); - std::string sSignature; - std::string sError; - bool bResult = SignBlockWithCPID(GlobalCPUMiningCPID.cpid, GlobalCPUMiningCPID.lastblockhash, sSignature, sError, true); -# if 0 - if (!bResult) - { - LogPrintf("GetNextProject: failed to sign block with cpid -> %s", sError); - continue; - } - GlobalCPUMiningCPID.BoincSignature = sSignature; - if (!IsCPIDValidv2(GlobalCPUMiningCPID,1)) - { - LogPrintf("CPID INVALID (GetNextProject) %s, %s ",GlobalCPUMiningCPID.cpid,GlobalCPUMiningCPID.cpidv2); - continue; - } -# else - (void)bResult; -# endif - - - //Only used for global status: - msMiningProject = structcpid.projectname; - msMiningCPID = structcpid.cpid; - - double ProjectRAC = GetNetworkAvgByProject(GlobalCPUMiningCPID.projectname); - GlobalCPUMiningCPID.NetworkRAC = ProjectRAC; - GlobalCPUMiningCPID.Magnitude = CalculatedMagnitude(GetAdjustedTime(),false); - if (fDebug && LessVerbose(2)) LogPrintf("For CPID %s Verified Magnitude = %f",GlobalCPUMiningCPID.cpid, GlobalCPUMiningCPID.Magnitude); - //Reserved for GRC Speech Synthesis - msMiningErrors = (msMiningCPID == "INVESTOR" || !IsResearcher(msPrimaryCPID) || msMiningCPID.empty()) ? _("Staking Interest") : _("Boinc Mining"); - GlobalCPUMiningCPID.RSAWeight = GetRSAWeightByCPID(GlobalCPUMiningCPID.cpid); - GlobalCPUMiningCPID.LastPaymentTime = GetLastPaymentTimeByCPID(GlobalCPUMiningCPID.cpid); - return GlobalCPUMiningCPID; - } - } - } - - } - - } - } - - } - } - - msMiningErrors = (IsResearcher(msPrimaryCPID)) ? _("All BOINC projects exhausted.") : ""; - msMiningProject = "INVESTOR"; - msMiningCPID = "INVESTOR"; - GlobalCPUMiningCPID = GetInitializedGlobalCPUMiningCPID("INVESTOR"); - if (fDebug10) LogPrintf("-Investor mode-"); - - } - catch (std::exception& e) - { - msMiningErrors = _("Error obtaining next project. Error 16172014."); - - LogPrintf("Error obtaining next project"); - } - catch(...) - { - msMiningErrors = _("Error obtaining next project. Error 06172014."); - LogPrintf("Error obtaining next project 2."); - } - return GlobalCPUMiningCPID; - -} - - - // check whether the passed transaction is from us bool static IsFromMe(CTransaction& tx) { @@ -1930,41 +1678,6 @@ double CalculatedMagnitude2(std::string cpid, int64_t locktime,bool bUseLederstr return bUseLederstrumpf ? LederstrumpfMagnitude2(stDPOR.Magnitude,locktime) : stDPOR.Magnitude; } - - -// miner's coin base reward -int64_t GetProofOfWorkReward(int64_t nFees, int64_t locktime, int64_t height) -{ - //NOTE: THIS REWARD IS ONLY USED IN THE POW PHASE (Block < 8000): - int64_t nSubsidy = CalculatedMagnitude(locktime,true) * COIN; - if (fDebug && GetBoolArg("-printcreation")) - LogPrintf("GetProofOfWorkReward() : create=%s nSubsidy=%" PRId64, FormatMoney(nSubsidy), nSubsidy); - if (nSubsidy < (30*COIN)) nSubsidy=30*COIN; - //Gridcoin Foundation Block: - if (height==10) - { - nSubsidy = nGenesisSupply * COIN; - } - if (fTestNet) nSubsidy += 1000*COIN; - - return nSubsidy + nFees; -} - - -int64_t GetProofOfWorkMaxReward(int64_t nFees, int64_t locktime, int64_t height) -{ - int64_t nSubsidy = (GetMaximumBoincSubsidy(locktime)+1) * COIN; - if (height==10) - { - //R.Halford: 10-11-2014: Gridcoin Foundation Block: - //Note: Gridcoin Classic emitted these coins. So we had to add them to block 10. The coins were burned then given back to the owners that mined them in classic (as research coins). - nSubsidy = nGenesisSupply * COIN; - } - - if (fTestNet) nSubsidy += 1000*COIN; - return nSubsidy + nFees; -} - //Survey Results: Start inflation rate: 9%, end=1%, 30 day steps, 9 steps, mag multiplier start: 2, mag end .3, 9 steps int64_t GetMaximumBoincSubsidy(int64_t nTime) { @@ -2152,7 +1865,8 @@ int64_t GetProofOfStakeReward(uint64_t nCoinAge, int64_t nFees, std::string cpid } int64_t nTotalSubsidy = nSubsidy + nFees; - if (nBoinc > 1) + // This rule does not apply in v11 + if (nBoinc > 1 && pindexLast->nVersion <= 10) { std::string sTotalSubsidy = RoundToString(CoinToDouble(nTotalSubsidy)+.00000123,8); if (sTotalSubsidy.length() > 7) @@ -2172,44 +1886,6 @@ int64_t GetProofOfStakeReward(uint64_t nCoinAge, int64_t nFees, std::string cpid static const int64_t nTargetTimespan = 16 * 60; // 16 mins -// -// maximum nBits value could possible be required nTime after -// -unsigned int ComputeMaxBits(CBigNum bnTargetLimit, unsigned int nBase, int64_t nTime) -{ - CBigNum bnResult; - bnResult.SetCompact(nBase); - bnResult *= 2; - while (nTime > 0 && bnResult < bnTargetLimit) - { - // Maximum 200% adjustment per day... - bnResult *= 2; - nTime -= 24 * 60 * 60; - } - if (bnResult > bnTargetLimit) - bnResult = bnTargetLimit; - return bnResult.GetCompact(); -} - -// -// minimum amount of work that could possibly be required nTime after -// minimum proof-of-work required was nBase -// -unsigned int ComputeMinWork(unsigned int nBase, int64_t nTime) -{ - return ComputeMaxBits(bnProofOfWorkLimit, nBase, nTime); -} - -// -// minimum amount of stake that could possibly be required nTime after -// minimum proof-of-stake required was nBase -// -unsigned int ComputeMinStake(unsigned int nBase, int64_t nTime, unsigned int nBlockTime) -{ - return ComputeMaxBits(bnProofOfStakeLimit, nBase, nTime); -} - - // ppcoin: find last block index up to pindex const CBlockIndex* GetLastBlockIndex(const CBlockIndex* pindex, bool fProofOfStake) { @@ -2218,49 +1894,17 @@ const CBlockIndex* GetLastBlockIndex(const CBlockIndex* pindex, bool fProofOfSta return pindex; } - -static unsigned int GetNextTargetRequiredV1(const CBlockIndex* pindexLast, bool fProofOfStake) +unsigned int GetNextTargetRequired(const CBlockIndex* pindexLast) { - CBigNum bnTargetLimit = fProofOfStake ? bnProofOfStakeLimit : bnProofOfWorkLimit; + CBigNum bnTargetLimit = GetProofOfStakeLimit(pindexLast->nHeight); if (pindexLast == NULL) return bnTargetLimit.GetCompact(); // genesis block - const CBlockIndex* pindexPrev = GetLastBlockIndex(pindexLast, fProofOfStake); + const CBlockIndex* pindexPrev = GetLastBlockIndex(pindexLast, true); if (pindexPrev->pprev == NULL) return bnTargetLimit.GetCompact(); // first block - const CBlockIndex* pindexPrevPrev = GetLastBlockIndex(pindexPrev->pprev, fProofOfStake); - if (pindexPrevPrev->pprev == NULL) - return bnTargetLimit.GetCompact(); // second block - - int64_t nTargetSpacing = GetTargetSpacing(pindexLast->nHeight); - int64_t nActualSpacing = pindexPrev->GetBlockTime() - pindexPrevPrev->GetBlockTime(); - - // ppcoin: target change every block - // ppcoin: retarget with exponential moving toward target spacing - CBigNum bnNew; - bnNew.SetCompact(pindexPrev->nBits); - int64_t nInterval = nTargetTimespan / nTargetSpacing; - bnNew *= ((nInterval - 1) * nTargetSpacing + nActualSpacing + nActualSpacing); - bnNew /= ((nInterval + 1) * nTargetSpacing); - - if (bnNew > bnTargetLimit) - bnNew = bnTargetLimit; - - return bnNew.GetCompact(); -} - -static unsigned int GetNextTargetRequiredV2(const CBlockIndex* pindexLast, bool fProofOfStake) -{ - CBigNum bnTargetLimit = fProofOfStake ? GetProofOfStakeLimit(pindexLast->nHeight) : bnProofOfWorkLimit; - - if (pindexLast == NULL) - return bnTargetLimit.GetCompact(); // genesis block - - const CBlockIndex* pindexPrev = GetLastBlockIndex(pindexLast, fProofOfStake); - if (pindexPrev->pprev == NULL) - return bnTargetLimit.GetCompact(); // first block - const CBlockIndex* pindexPrevPrev = GetLastBlockIndex(pindexPrev->pprev, fProofOfStake); + const CBlockIndex* pindexPrevPrev = GetLastBlockIndex(pindexPrev->pprev, true); if (pindexPrevPrev->pprev == NULL) return bnTargetLimit.GetCompact(); // second block @@ -2302,15 +1946,6 @@ static unsigned int GetNextTargetRequiredV2(const CBlockIndex* pindexLast, bool return bnNew.GetCompact(); } -unsigned int GetNextTargetRequired(const CBlockIndex* pindexLast, bool fProofOfStake) -{ - //After block 89600, new diff algorithm is used - if (pindexLast->nHeight < 89600) - return GetNextTargetRequiredV1(pindexLast, fProofOfStake); - else - return GetNextTargetRequiredV2(pindexLast, fProofOfStake); -} - bool CheckProofOfWork(uint256 hash, unsigned int nBits) { CBigNum bnTarget; @@ -2443,14 +2078,6 @@ void static InvalidChainFound(CBlockIndex* pindexNew) DateTimeStrFormat("%x %H:%M:%S", pindexBest->GetBlockTime())); } - -void CBlock::UpdateTime(const CBlockIndex* pindexPrev) -{ - nTime = max(GetBlockTime(), GetAdjustedTime()); -} - - - bool CTransaction::DisconnectInputs(CTxDB& txdb) { // Relinquish previous transactions' spent pointers @@ -2618,17 +2245,6 @@ bool LessVerbose(int iMax1000) return false; } - -bool KeyEnabled(std::string key) -{ - if (mapArgs.count("-" + key)) - { - std::string sBool = GetArg("-" + key, "false"); - if (sBool == "true") return true; - } - return false; -} - unsigned int CTransaction::GetP2SHSigOpCount(const MapPrevTx& inputs) const { if (IsCoinBase()) @@ -3054,16 +2670,6 @@ bool CBlock::ConnectBlock(CTxDB& txdb, CBlockIndex* pindex, bool fJustCheck, boo mapQueuedChanges[hashTx] = CTxIndex(posThisTx, tx.vout.size()); } - if (IsProofOfWork() && pindex->nHeight > nGrandfather) - { - int64_t nReward = GetProofOfWorkMaxReward(nFees,nTime,pindex->nHeight); - // Check coinbase reward - if (vtx[0].GetValueOut() > nReward) - return DoS(50, error("ConnectBlock[] : coinbase reward exceeded (actual=%" PRId64 " vs calculated=%" PRId64 ")", - vtx[0].GetValueOut(), - nReward)); - } - MiningCPID bb = DeserializeBoincBlock(vtx[0].hashBoinc,nVersion); uint64_t nCoinAge = 0; double dStakeReward = CoinToDouble(nStakeReward); @@ -3220,8 +2826,8 @@ bool CBlock::ConnectBlock(CTxDB& txdb, CBlockIndex* pindex, bool fJustCheck, boo { if( GetBadBlocks().count(pindex->GetBlockHash())==0 ) return DoS(20, error( - "ConnectBlock[ResearchAge]: Bad CPID or Block Signature : CPID %s, cpidv2 %s, LBH %s, Bad Hashboinc [%s]", - bb.cpid.c_str(), bb.cpidv2.c_str(), + "ConnectBlock[ResearchAge]: Bad CPID or Block Signature : CPID %s, LBH %s, Bad Hashboinc [%s]", + bb.cpid.c_str(), bb.lastblockhash.c_str(), vtx[0].hashBoinc.c_str())); else LogPrintf("WARNING: ignoring invalid hashBoinc signature on block %s", pindex->GetBlockHash().ToString()); } @@ -3536,7 +3142,6 @@ bool DisconnectBlocksBatch(CTxDB& txdb, list& vResurrect, unsigned //Block was disconnected - User is Re-eligibile for staking StructCPID& sMag = GetInitializedStructCPID2(GlobalCPUMiningCPID.cpid,mvMagnitudes); - nLastBlockSolved = 0; if (sMag.initialized) { sMag.LastPaymentTime = 0; @@ -4036,45 +3641,16 @@ bool CBlock::CheckBlock(std::string sCaller, int height1, int64_t Mint, bool fCh } } - if (IsResearcher(bb.cpid) && height1 > nGrandfather && BlockNeedsChecked(nTime)) + if (!fLoadingIndex && IsResearcher(bb.cpid) && height1 > nGrandfather && BlockNeedsChecked(nTime)) { - if (bb.projectname.empty() && !IsResearchAgeEnabled(height1)) - return DoS(1,error("CheckBlock::PoR Project Name invalid")); - - if (!fLoadingIndex) + // Full "v3" signature check is performed in ConnectBlock + if (bb.lastblockhash.size() != 64 || bb.BoincSignature.size() < 16 + || bb.BoincSignature.find(' ') != std::string::npos) { - bool cpidresult = false; - int cpidV2CutOverHeight = fTestNet ? 0 : 97000; - int cpidV3CutOverHeight = fTestNet ? 196300 : 725000; - if (height1 < cpidV2CutOverHeight) - { - cpidresult = IsCPIDValid_Retired(bb.cpid,bb.enccpid); - } - else if (height1 <= cpidV3CutOverHeight) - { - cpidresult = CPID_IsCPIDValid(bb.cpid, bb.cpidv2, (uint256)bb.lastblockhash); - } - else - { - - cpidresult = (bb.lastblockhash.size()==64) - && (bb.BoincSignature.size()>=16) - && (bb.BoincSignature.find(' ')==std::string::npos); - - /* This is not used anywhere, so let it be. - cpidresult = cpidresult - && (bb.BoincPublicKey.size()==130) - && (bb.BoincPublicKey.find(' ')==std::string::npos); - */ - - /* full "v3" signature check is performed in ConnectBlock */ - } - - if(!cpidresult) - return DoS(20, error( - "Bad CPID or Block Signature : height %i, CPID %s, cpidv2 %s, LBH %s, Bad Hashboinc [%s]", - height1, bb.cpid.c_str(), bb.cpidv2.c_str(), - bb.lastblockhash.c_str(), vtx[0].hashBoinc.c_str())); + return DoS(20, error( + "Bad CPID or Block Signature : height %i, CPID %s, LBH %s, Bad Hashboinc [%s]", + height1, bb.cpid.c_str(), + bb.lastblockhash.c_str(), vtx[0].hashBoinc.c_str())); } } @@ -4207,7 +3783,7 @@ bool CBlock::AcceptBlock(bool generated_by_me) if (GetBlockTime() <= pindexPrev->GetPastTimeLimit() || FutureDrift(GetBlockTime(), nHeight) < pindexPrev->GetBlockTime()) return DoS(60, error("AcceptBlock() : block's timestamp is too early")); // Check proof-of-work or proof-of-stake - if (nBits != GetNextTargetRequired(pindexPrev, IsProofOfStake())) + if (nBits != GetNextTargetRequired(pindexPrev)) return DoS(100, error("AcceptBlock() : incorrect %s", IsProofOfWork() ? "proof-of-work" : "proof-of-stake")); } @@ -4322,23 +3898,6 @@ uint256 CBlockIndex::GetBlockTrust() const return chaintrust; } -bool CBlockIndex::IsSuperMajority(int minVersion, const CBlockIndex* pstart, unsigned int nRequired, unsigned int nToCheck) -{ - unsigned int nFound = 0; - for (unsigned int i = 0; i < nToCheck && nFound < nRequired && pstart != NULL; i++) - { - if (pstart->nVersion >= minVersion) - ++nFound; - pstart = pstart->pprev; - } - return (nFound >= nRequired); -} - -bool ServicesIncludesNN(CNode* pNode) -{ - return (Contains(pNode->strSubVer,"1999")) ? true : false; -} - bool VerifySuperblock(const std::string& superblock, const CBlockIndex* parent) { // Pre-condition checks. @@ -4513,10 +4072,12 @@ void GridcoinServices() { try { - if (msNeuralResponse.length() < 25 && IsResearcher(msPrimaryCPID)) + std::string primary_cpid = NN::GetPrimaryCpid(); + + if (msNeuralResponse.length() < 25 && IsResearcher(primary_cpid)) { - AsyncNeuralRequest("explainmag",msPrimaryCPID,5); - if (fDebug3) LogPrintf("Async explainmag sent for %s.",msPrimaryCPID); + AsyncNeuralRequest("explainmag", primary_cpid, 5); + if (fDebug3) LogPrintf("Async explainmag sent for %s.", primary_cpid); } if (fDebug3) LogPrintf("MR Complete"); } @@ -4892,8 +4453,6 @@ bool LoadBlockIndex(bool fAllowNew) { LOCK(cs_main); - CBigNum bnTrustedModulus; - if (fTestNet) { // GLOBAL TESTNET SETTINGS - R HALFORD @@ -4911,10 +4470,7 @@ bool LoadBlockIndex(bool fAllowNew) MAX_OUTBOUND_CONNECTIONS = (int)GetArg("-maxoutboundconnections", 8); } - - std::string mode = fTestNet ? "TestNet" : "Prod"; - LogPrintf("Mode=%s",mode); - + LogPrintf("Mode=%s", fTestNet ? "TestNet" : "Prod"); // // Load block index @@ -5056,54 +4612,6 @@ std::string RetrieveMd5(std::string s1) } } -int GetFilesize(FILE* file) -{ - int nSavePos = ftell(file); - int nFilesize = -1; - if (fseek(file, 0, SEEK_END) == 0) - nFilesize = ftell(file); - fseek(file, nSavePos, SEEK_SET); - return nFilesize; -} - - -std::string getfilecontents(std::string filename) -{ - if (!filesystem::exists(filename)) { - LogPrintf("getfilecontents: file does not exist %s", filename); - return "-1"; - } - - std::ifstream in(filename, std::ios::in | std::ios::binary); - - if (in.fail()) { - LogPrintf("getfilecontents: error opening file %s", filename); - return "-1"; - } - - if (fDebug10) LogPrintf("loading file to string %s", filename); - - std::ostringstream out; - - out << in.rdbuf(); - - // Immediately close instead of waiting for the destructor to decrease the - // chance of a race when calling this to read BOINC's client_state.xml: - in.close(); - - return out.str(); -} - -bool IsCPIDValidv3(std::string cpidv2, bool allow_investor) -{ - // Used for checking the local cpid - bool result=false; - if (allow_investor) if (cpidv2 == "INVESTOR" || cpidv2=="investor") return true; - if (cpidv2.length() < 34) return false; - result = CPID_IsCPIDValid(cpidv2.substr(0,32),cpidv2,0); - return result; -} - std::set GetAlternativeBeaconKeys(const std::string& cpid) { int64_t iMaxSeconds = 60 * 24 * 30 * 6 * 60; @@ -5131,103 +4639,32 @@ bool IsCPIDValidv2(MiningCPID& mc, int height) { //09-25-2016: Transition to CPID Keypairs. if (height < nGrandfather) return true; - bool result = false; - int cpidV2CutOverHeight = fTestNet ? 0 : 97000; - int cpidV3CutOverHeight = fTestNet ? 196300 : 725000; - if (height < cpidV2CutOverHeight) - { - result = IsCPIDValid_Retired(mc.cpid,mc.enccpid); - } - else if (height >= cpidV2CutOverHeight && height <= cpidV3CutOverHeight) - { - if (!IsResearcher(mc.cpid)) return true; - result = CPID_IsCPIDValid(mc.cpid, mc.cpidv2, (uint256)mc.lastblockhash); - } - else if (height >= cpidV3CutOverHeight) - { - if (mc.cpid.empty()) return error("IsCPIDValidv2(): cpid empty"); - if (!IsResearcher(mc.cpid)) return true; /* is investor? */ + if (mc.cpid.empty()) return error("IsCPIDValidv2(): cpid empty"); + if (!IsResearcher(mc.cpid)) return true; /* is investor? */ - const std::string sBPK_n = GetBeaconPublicKey(mc.cpid, false); - bool kmval = sBPK_n == mc.BoincPublicKey; - const bool scval_n = CheckMessageSignature("R","cpid", mc.cpid + mc.lastblockhash, mc.BoincSignature, sBPK_n); + const std::string sBPK_n = GetBeaconPublicKey(mc.cpid, false); + bool kmval = sBPK_n == mc.BoincPublicKey; + bool result = CheckMessageSignature("R","cpid", mc.cpid + mc.lastblockhash, mc.BoincSignature, sBPK_n); - result= scval_n; - if(!scval_n) + if (!result) + { + for (const std::string& key_alt : GetAlternativeBeaconKeys(mc.cpid)) { - for(const std::string& key_alt : GetAlternativeBeaconKeys(mc.cpid)) - { - const bool scval_alt = CheckMessageSignature("R","cpid", mc.cpid + mc.lastblockhash, mc.BoincSignature, key_alt); - kmval = key_alt == mc.BoincPublicKey; - if(scval_alt) - { - LogPrintf("WARNING: IsCPIDValidv2: good signature with alternative key"); - result= true; - } + const bool scval_alt = CheckMessageSignature("R","cpid", mc.cpid + mc.lastblockhash, mc.BoincSignature, key_alt); + kmval = key_alt == mc.BoincPublicKey; + + if (scval_alt) { + LogPrintf("WARNING: IsCPIDValidv2: good signature with alternative key"); + result = true; } } - - if( !kmval ) - LogPrintf("WARNING: IsCPIDValidv2: block key mismatch"); - } - return result; -} - - -bool IsLocalCPIDValid(StructCPID& structcpid) -{ - - bool new_result = IsCPIDValidv3(structcpid.cpidv2,true); - return new_result; - -} - - - -bool IsCPIDValid_Retired(std::string cpid, std::string ENCboincpubkey) -{ - - try - { - if(cpid=="" || cpid.length() < 5) - { - LogPrintf("CPID length empty."); - return false; - } - if (!IsResearcher(cpid)) return true; - if (ENCboincpubkey == "" || ENCboincpubkey.length() < 5) - { - if (fDebug10) LogPrintf("ENCBpk length empty."); - return false; - } - std::string bpk = AdvancedDecrypt(ENCboincpubkey); - std::string bpmd5 = RetrieveMd5(bpk); - if (bpmd5==cpid) return true; - if (fDebug10) LogPrintf("Md5<>cpid, md5 %s cpid %s root bpk %s",bpmd5, cpid, bpk); - - return false; - } - catch (std::exception &e) - { - LogPrintf("Error while resolving CPID"); - return false; + if (!kmval) { + LogPrintf("WARNING: IsCPIDValidv2: block key mismatch"); } - catch(...) - { - LogPrintf("Error while Resolving CPID[2]."); - return false; - } - return false; - -} - -double GetTotalOwedAmount(std::string cpid) -{ - StructCPID& o = GetInitializedStructCPID2(cpid,mvMagnitudes); - return o.totalowed; + return result; } double GetOwedAmount(std::string cpid) @@ -5337,10 +4774,8 @@ void AddResearchMagnitude(CBlockIndex* pIndex) if (pIndex->nTime > stMag.HighLockTime) stMag.HighLockTime = pIndex->nTime; - stMag.entries++; stMag.payments += pIndex->nResearchSubsidy; stMag.interestPayments += pIndex->nInterestSubsidy; - stMag.AverageRAC = stMag.rac / (stMag.entries+.01); double total_owed = 0; stMag.owed = GetOutstandingAmountOwed(stMag, cpid, pIndex->nTime, total_owed, pIndex->nMagnitude); @@ -5512,20 +4947,6 @@ StructCPID& GetLifetimeCPID(const std::string& cpid) return stCPID; } -MiningCPID GetInitializedMiningCPID(std::string name,std::map& vRef) -{ - MiningCPID& cpid = vRef[name]; - if (!cpid.initialized) - { - cpid = GetMiningCPID(); - cpid.initialized=true; - cpid.LastPaymentTime = 0; - } - - return cpid; -} - - StructCPID& GetInitializedStructCPID2(const std::string& name, std::map& vRef) { StructCPID& cpid = vRef[name]; @@ -5717,7 +5138,6 @@ bool TallyResearchAverages_retired(CBlockIndex* index) LogPrintf("Min block %i, Rows %i", pblockindex->nHeight, iRow); StructCPID& network = GetInitializedStructCPID2("NETWORK",mvNetworkCopy); - network.projectname="NETWORK"; network.payments = NetworkPayments; network.InterestSubsidy = NetworkInterest; mvNetworkCopy["NETWORK"] = network; @@ -5836,7 +5256,6 @@ bool TallyResearchAverages_v9(CBlockIndex* index) if (pblockindex) { StructCPID& network = GetInitializedStructCPID2("NETWORK",mvNetworkCopy); - network.projectname="NETWORK"; network.payments = NetworkPayments; network.InterestSubsidy = NetworkInterest; mvNetworkCopy["NETWORK"] = network; @@ -6006,10 +5425,6 @@ string GetWarnings(string strFor) { int nPriority = 0; string strStatusBar; - string strRPC; - - if (GetBoolArg("-testsafemode")) - strRPC = "test"; // Misc warnings like out of disk space and clock is wrong if (strMiscWarning != "") @@ -6034,8 +5449,6 @@ string GetWarnings(string strFor) if (strFor == "statusbar") return strStatusBar; - else if (strFor == "rpc") - return strRPC; assert(!"GetWarnings() : invalid parameter"); return "error"; } @@ -7174,16 +6587,8 @@ std::string SerializeBoincBlock(MiningCPID mcpid, int BlockVersion) if (!IsResearchAgeEnabled(pindexBest->nHeight)) { mcpid.Organization = GetArg("-org", "windows"); - mcpid.OrganizationKey = "12345678"; //Only reveal 8 characters - } - else - { - mcpid.projectname = ""; - mcpid.rac = 0; - mcpid.NetworkRAC = 0; } - mcpid.LastPORBlockHash = GetLastPORBlockHash(mcpid.cpid); if (mcpid.lastblockhash.empty()) mcpid.lastblockhash = "0"; @@ -7194,22 +6599,39 @@ std::string SerializeBoincBlock(MiningCPID mcpid, int BlockVersion) mcpid.BoincPublicKey = GetBeaconPublicKey(mcpid.cpid, false); } - std::string bb = mcpid.cpid + delim + mcpid.projectname + delim + mcpid.aesskein + delim + RoundToString(mcpid.rac,0) - + delim + RoundToString(mcpid.pobdifficulty,5) + delim + RoundToString((double)mcpid.diffbytes,0) - + delim + mcpid.enccpid - + delim + mcpid.encaes + delim + RoundToString(mcpid.nonce,0) + delim + RoundToString(mcpid.NetworkRAC,0) + // Note: Commented-out items recorded to document removed fields: + // + std::string bb = mcpid.cpid + + delim // + mcpid.projectname // Obsolete + + delim // + mcpid.aesskein // Obsolete + + delim // + RoundToString(mcpid.rac,0) // Obsolete + + delim // + RoundToString(mcpid.pobdifficulty,5) // Obsolete + + delim // + RoundToString((double)mcpid.diffbytes,0) // Obsolete + + delim // + mcpid.enccpid // Obsolete + + delim // + mcpid.encaes // Obsolete + + delim // + RoundToString(mcpid.nonce,0) // Obsolete + + delim // + RoundToString(mcpid.NetworkRAC,0) // Obsolete + delim + version + delim + RoundToString(mcpid.ResearchSubsidy,subsidy_places) + delim + RoundToString(mcpid.LastPaymentTime,0) + delim + RoundToString(mcpid.RSAWeight,0) - + delim + mcpid.cpidv2 + + delim // + mcpid.cpidv2 // Obsolete + delim + RoundToString(mcpid.Magnitude,0) - + delim + mcpid.GRCAddress + delim + mcpid.lastblockhash - + delim + RoundToString(mcpid.InterestSubsidy,subsidy_places) + delim + mcpid.Organization - + delim + mcpid.OrganizationKey + delim + mcpid.NeuralHash + delim + mcpid.superblock - + delim + RoundToString(mcpid.ResearchSubsidy2,2) + delim + RoundToString(mcpid.ResearchAge,6) - + delim + RoundToString(mcpid.ResearchMagnitudeUnit,6) + delim + RoundToString(mcpid.ResearchAverageMagnitude,2) - + delim + mcpid.LastPORBlockHash + delim + mcpid.CurrentNeuralHash + delim + mcpid.BoincPublicKey + delim + mcpid.BoincSignature; + + delim + mcpid.GRCAddress + + delim + mcpid.lastblockhash + + delim + RoundToString(mcpid.InterestSubsidy,subsidy_places) + + delim + mcpid.Organization + + delim // + mcpid.OrganizationKey // Obsolete + + delim + mcpid.NeuralHash + + delim + mcpid.superblock + + delim // + RoundToString(mcpid.ResearchSubsidy2,2) // Obsolete + + delim + RoundToString(mcpid.ResearchAge,6) + + delim + RoundToString(mcpid.ResearchMagnitudeUnit,6) + + delim + RoundToString(mcpid.ResearchAverageMagnitude,2) + + delim + mcpid.LastPORBlockHash + + delim + mcpid.CurrentNeuralHash + + delim + mcpid.BoincPublicKey + + delim + mcpid.BoincSignature; return bb; } @@ -7225,21 +6647,23 @@ MiningCPID DeserializeBoincBlock(std::string block, int BlockVersion) std::vector s = split(block,"<|>"); if (s.size() > 7) { + // Note: Commented-out items recorded to document removed fields: + // surrogate.cpid = s[0]; - surrogate.projectname = s[1]; - boost::to_lower(surrogate.projectname); - surrogate.aesskein = s[2]; - surrogate.rac = RoundFromString(s[3],0); - surrogate.pobdifficulty = RoundFromString(s[4],6); - surrogate.diffbytes = (unsigned int)RoundFromString(s[5],0); - surrogate.enccpid = s[6]; - surrogate.encboincpublickey = s[6]; - surrogate.encaes = s[7]; - surrogate.nonce = RoundFromString(s[8],0); - if (s.size() > 9) - { - surrogate.NetworkRAC = RoundFromString(s[9],0); - } + //surrogate.projectname = s[1]; // Obsolete + //boost::to_lower(surrogate.projectname); // Obsolete + //surrogate.aesskein = s[2]; // Obsolete + //surrogate.rac = RoundFromString(s[3],0); // Obsolete + //surrogate.pobdifficulty = RoundFromString(s[4],6); // Obsolete + //surrogate.diffbytes = (unsigned int)RoundFromString(s[5],0); // Obsolete + //surrogate.enccpid = s[6]; // Obsolete + //surrogate.encboincpublickey = s[6]; // Obsolete + //surrogate.encaes = s[7]; // Obsolete + //surrogate.nonce = RoundFromString(s[8],0); // Obsolete + //if (s.size() > 9) + //{ + // surrogate.NetworkRAC = RoundFromString(s[9],0); // Obsolete + //} if (s.size() > 10) { surrogate.clientversion = s[10]; @@ -7256,10 +6680,10 @@ MiningCPID DeserializeBoincBlock(std::string block, int BlockVersion) { surrogate.RSAWeight = RoundFromString(s[13],0); } - if (s.size() > 14) - { - surrogate.cpidv2 = s[14]; - } + //if (s.size() > 14) + //{ + // surrogate.cpidv2 = s[14]; // Obsolete + //} if (s.size() > 15) { surrogate.Magnitude = RoundFromString(s[15],0); @@ -7280,10 +6704,10 @@ MiningCPID DeserializeBoincBlock(std::string block, int BlockVersion) { surrogate.Organization = s[19]; } - if (s.size() > 20) - { - surrogate.OrganizationKey = s[20]; - } + //if (s.size() > 20) + //{ + // surrogate.OrganizationKey = s[20]; // Obsolete + //} if (s.size() > 21) { surrogate.NeuralHash = s[21]; @@ -7292,10 +6716,11 @@ MiningCPID DeserializeBoincBlock(std::string block, int BlockVersion) { surrogate.superblock = s[22]; } - if (s.size() > 23) - { - surrogate.ResearchSubsidy2 = RoundFromString(s[23],subsidy_places); - } + //if (s.size() > 23) + //{ + // // Obsolete + // surrogate.ResearchSubsidy2 = RoundFromString(s[23],subsidy_places); + //} if (s.size() > 24) { surrogate.ResearchAge = RoundFromString(s[24],6); @@ -7334,288 +6759,13 @@ MiningCPID DeserializeBoincBlock(std::string block, int BlockVersion) return surrogate; } - -void InitializeProjectStruct(StructCPID& project) -{ - std::string email = GetArgument("email", "NA"); - boost::to_lower(email); - - std::string cpid_non = project.cpidhash+email; - project.cpid = CPID(cpid_non).hexdigest(); - std::string ENCbpk = AdvancedCrypt(cpid_non); - project.boincpublickey = ENCbpk; - project.cpidv2 = ComputeCPIDv2(email, project.cpidhash, 0); - //Local CPID with struct - //Must contain cpidv2, cpid, boincpublickey - project.Iscpidvalid = IsLocalCPIDValid(project); - if (fDebug10) LogPrintf("Memorizing local project %s, CPID Valid: %s; ",project.projectname, YesNo(project.Iscpidvalid)); -} - -std::string LowerUnderscore(std::string data) -{ - boost::to_lower(data); - boost::replace_all(data, "_", " "); - return data; -} - -void HarvestCPIDs(bool cleardata) -{ - if (fDebug10) - LogPrintf("loading BOINC cpids ..."); - - //Remote Boinc Feature - R Halford - std::string sBoincKey = GetArgument("boinckey",""); - - if (!sBoincKey.empty()) - { - //Deserialize key into Global CPU Mining CPID 2-6-2015 - LogPrintf("Using key %s ",sBoincKey); - - std::string sDec=DecodeBase64(sBoincKey); - LogPrintf("Using key %s ",sDec); - - if (sDec.empty()) LogPrintf("Error while deserializing boinc key! Please use execute genboinckey to generate a boinc key from the host with boinc installed."); - //Version not needed for keys for now - GlobalCPUMiningCPID = DeserializeBoincBlock(sDec,7); - - GlobalCPUMiningCPID.initialized = true; - - if (GlobalCPUMiningCPID.cpid.empty()) - { - LogPrintf("Error while deserializing boinc key! Please use execute genboinckey to generate a boinc key from the host with boinc installed."); - } - else - { - LogPrintf("CPUMiningCPID Initialized."); - } - - GlobalCPUMiningCPID.email = GlobalCPUMiningCPID.aesskein; - LogPrintf("Using Serialized Boinc CPID %s with orig email of %s and bpk of %s with cpidhash of %s ",GlobalCPUMiningCPID.cpid, GlobalCPUMiningCPID.email, GlobalCPUMiningCPID.boincruntimepublickey, GlobalCPUMiningCPID.cpidhash); - GlobalCPUMiningCPID.cpidhash = GlobalCPUMiningCPID.boincruntimepublickey; - LogPrintf("Using Serialized Boinc CPID %s with orig email of %s and bpk of %s with cpidhash of %s ",GlobalCPUMiningCPID.cpid, GlobalCPUMiningCPID.email, GlobalCPUMiningCPID.boincruntimepublickey, GlobalCPUMiningCPID.cpidhash); - StructCPID structcpid = GetStructCPID(); - structcpid.initialized = true; - structcpid.cpidhash = GlobalCPUMiningCPID.cpidhash; - structcpid.projectname = GlobalCPUMiningCPID.projectname; - structcpid.team = "gridcoin"; - structcpid.rac = GlobalCPUMiningCPID.rac; - structcpid.cpid = GlobalCPUMiningCPID.cpid; - structcpid.boincpublickey = GlobalCPUMiningCPID.encboincpublickey; - structcpid.NetworkRAC = GlobalCPUMiningCPID.NetworkRAC; - // 2-6-2015 R Halford - Ensure CPIDv2 Is populated After deserializing GenBoincKey - LogPrintf("GenBoincKey using email %s and cpidhash %s key %s ", GlobalCPUMiningCPID.email, structcpid.cpidhash, sDec); - structcpid.cpidv2 = ComputeCPIDv2(GlobalCPUMiningCPID.email, structcpid.cpidhash, 0); - structcpid.Iscpidvalid = true; - mvCPIDs.insert(map::value_type(structcpid.projectname,structcpid)); - // CreditCheck(structcpid.cpid,false); - GetNextProject(false); - if (fDebug10) LogPrintf("GCMCPI %s",GlobalCPUMiningCPID.cpid); - if (fDebug10) LogPrintf("Finished getting first remote boinc project"); - return; - } - - try - { - std::string sourcefile = GetBoincDataDir() + "client_state.xml"; - std::string sout = getfilecontents(sourcefile); - - if (sout == "-1") - { - LogPrintf("Unable to obtain Boinc CPIDs "); - - if (mapArgs.count("-boincdatadir") && mapArgs["-boincdatadir"].length() > 0) - { - LogPrintf("Boinc data directory set in gridcoinresearch.conf has been incorrectly specified "); - } - - else LogPrintf("Boinc data directory is not in the operating system's default location \nPlease move it there or specify its current location in gridcoinresearch.conf"); - - return; - } - - if (cleardata) - { - mvCPIDs.clear(); - } - std::string email = GetArgument("email",""); - boost::to_lower(email); - - int iRow = 0; - std::vector vCPID = split(sout.c_str(),""); - std::string investor = GetArgument("investor","false"); - - if (investor=="true") - { - msPrimaryCPID="INVESTOR"; - } - else - { - if (vCPID.size() > 0) - { - for (unsigned int i = 0; i < vCPID.size(); i++) - { - std::string email_hash = ExtractXML(vCPID[i],"",""); - std::string cpidhash = ExtractXML(vCPID[i],"",""); - std::string externalcpid = ExtractXML(vCPID[i],"",""); - std::string utc=ExtractXML(vCPID[i],"",""); - std::string rac=ExtractXML(vCPID[i],"",""); - std::string proj=ExtractXML(vCPID[i],"",""); - std::string team=ExtractXML(vCPID[i],"",""); - std::string rectime = ExtractXML(vCPID[i],"",""); - - proj = LowerUnderscore(proj); - int64_t nStart = GetTimeMillis(); - if (cpidhash.length() > 5 && proj.length() > 3) - { - std::string cpid_non = cpidhash+email; - to_lower(cpid_non); - StructCPID& structcpid = GetInitializedStructCPID2(proj,mvCPIDs); - iRow++; - structcpid.cpidhash = cpidhash; - structcpid.projectname = proj; - boost::to_lower(team); - structcpid.team = team; - InitializeProjectStruct(structcpid); - int64_t elapsed = GetTimeMillis()-nStart; - if (fDebug3) - LogPrintf("Enumerating boinc local project %s cpid %s valid %s, elapsed %" PRId64, structcpid.projectname, structcpid.cpid, YesNo(structcpid.Iscpidvalid), elapsed); - - structcpid.rac = RoundFromString(rac,0); - structcpid.verifiedrac = RoundFromString(rac,0); - std::string sLocalClientEmailHash = RetrieveMd5(email); - - if (email_hash != sLocalClientEmailHash) - { - structcpid.errors = "Gridcoin Email setting does not match project Email. Check Gridcoin e-mail address setting or boinc project e-mail setting."; - structcpid.Iscpidvalid=false; - } - - if (!structcpid.Iscpidvalid) - { - structcpid.errors = "CPID calculation invalid. Check e-mail address and try resetting the boinc project."; - } - - structcpid.utc = RoundFromString(utc,0); - structcpid.rectime = RoundFromString(rectime,0); - double currenttime = GetAdjustedTime(); - double nActualTimespan = currenttime - structcpid.rectime; - structcpid.age = nActualTimespan; - std::string sKey = structcpid.cpid + ":" + proj; - mvCPIDs[proj] = structcpid; - - if (!structcpid.Iscpidvalid) - { - structcpid.errors = "CPID invalid. Check E-mail address."; - } - - if (structcpid.team != "gridcoin") - { - structcpid.Iscpidvalid = false; - structcpid.errors = "Team invalid"; - } - bool bTestExternal = true; - bool bTestInternal = true; - - if (!externalcpid.empty()) - { - LogPrintf("External CPID not empty %s", externalcpid); - - bTestExternal = CPIDAcidTest2(cpidhash,externalcpid); - bTestInternal = CPIDAcidTest2(cpidhash,structcpid.cpid); - if (bTestExternal) - { - structcpid.cpid = externalcpid; - LogPrintf(" Setting CPID to %s ",structcpid.cpid); - } - else - { - LogPrintf("External test failed."); - } - - - if (!bTestExternal && !bTestInternal) - { - structcpid.Iscpidvalid = false; - structcpid.errors = "CPID corrupted Internal: %s, External: %s" + structcpid.cpid + "," + externalcpid.c_str(); - LogPrintf("CPID corrupted Internal: %s, External: %s", structcpid.cpid, externalcpid); - } - mvCPIDs[proj] = structcpid; - } - - if (structcpid.Iscpidvalid) - { - // Verify the CPID is a valid researcher: - if (IsResearcher(structcpid.cpid)) - { - GlobalCPUMiningCPID.cpidhash = cpidhash; - GlobalCPUMiningCPID.email = email; - GlobalCPUMiningCPID.boincruntimepublickey = cpidhash; - LogPrintf("Setting bpk to %s", cpidhash); - - if (structcpid.team=="gridcoin") - { - msPrimaryCPID = structcpid.cpid; - //Try to get a neural RAC report - AsyncNeuralRequest("explainmag",msPrimaryCPID,5); - } - } - } - - mvCPIDs[proj] = structcpid; - if (fDebug10) LogPrintf("Adding Local Project %s ", structcpid.cpid); - - } - - } - - } - // If no valid boinc projects were found: - if (msPrimaryCPID.empty()) - msPrimaryCPID="INVESTOR"; - } - } - catch (std::exception &e) - { - LogPrintf("Error while harvesting CPIDs."); - } - catch(...) - { - LogPrintf("Error while harvesting CPIDs 2."); - } -} - -void LoadCPIDs() -{ - LogPrintf("Load CPID; "); - HarvestCPIDs(true); - LogPrintf(" Getting first project;"); - GetNextProject(false); - LogPrintf(" Finished getting first project"); -} - StructCPID GetStructCPID() { StructCPID c; c.initialized=false; - c.rac = 0; - c.utc=0; - c.rectime=0; - c.age = 0; - c.verifiedutc=0; - c.verifiedrectime=0; - c.verifiedage=0; - c.entries=0; - c.AverageRAC=0; - c.NetworkProjects=0; - c.Iscpidvalid=false; - c.NetworkRAC=0; - c.TotalRAC=0; c.Magnitude=0; - c.PaymentMagnitude=0; c.owed=0; c.payments=0; - c.verifiedTotalRAC=0; - c.verifiedMagnitude=0; c.TotalMagnitude=0; c.LowLockTime=0; c.HighLockTime=0; @@ -7639,19 +6789,13 @@ StructCPID GetStructCPID() MiningCPID GetMiningCPID() { MiningCPID mc; - mc.rac = 0; - mc.pobdifficulty = 0; - mc.diffbytes = 0; mc.initialized = false; - mc.nonce = 0; - mc.NetworkRAC=0; mc.lastblockhash = "0"; mc.Magnitude = 0; mc.RSAWeight = 0; mc.LastPaymentTime=0; mc.ResearchSubsidy = 0; mc.InterestSubsidy = 0; - mc.ResearchSubsidy2 = 0; mc.ResearchAge = 0; mc.ResearchMagnitudeUnit = 0; mc.ResearchAverageMagnitude = 0; @@ -7986,31 +7130,6 @@ std::string GetCurrentNeuralNetworkSupermajorityHash(double& out_popularity) return neural_hash; } -std::string GetNeuralNetworkReport() -{ - //Returns a report of the networks neural hashes in order of popularity - std::string neural_hash = ""; - std::string report = "Neural_hash, Popularity\n"; - std::string row = ""; - - // Copy to a sorted map. - std::map sorted_hashes( - mvNeuralNetworkHash.begin(), - mvNeuralNetworkHash.end()); - - for(auto& entry : sorted_hashes) - report += entry.first + "," + RoundToString(entry.second, 0) + "\n"; - - return report; -} - -std::string GetOrgSymbolFromFeedKey(std::string feedkey) -{ - std::string Symbol = ExtractValue(feedkey,"-",0); - return Symbol; - -} - bool MemorizeMessage(const CTransaction &tx, double dAmount, std::string sRecipient) { const std::string &msg = tx.hashBoinc; @@ -8103,6 +7222,19 @@ bool MemorizeMessage(const CTransaction &tx, double dAmount, std::string sRecipi fMessageLoaded = true; } + // Support dynamic team requirement or whitelist configuration: + // + // TODO: move this into the appropriate contract handler. + // + if (sMessageType == "protocol" + && (sMessageKey == "REQUIRE_TEAM_WHITELIST_MEMBERSHIP" + || sMessageKey == "TEAM_WHITELIST")) + { + // Rescan in-memory project CPIDs to resolve a primary CPID + // that fits the now active team requirement settings: + NN::Researcher::Refresh(); + } + if(fDebug) WriteCache(Section::TRXID, sMessageType + ";" + sMessageKey,tx.GetHash().GetHex(),nTime); } diff --git a/src/main.h b/src/main.h index 1c134aa411..8bfdec58c3 100644 --- a/src/main.h +++ b/src/main.h @@ -34,8 +34,6 @@ static const int BLOCK_GRANULARITY = 10; //Consensus block divisor static const int TALLY_GRANULARITY = BLOCK_GRANULARITY; static const int64_t DEFAULT_CBR = 10 * COIN; -extern int64_t nLastBlockSolved; - extern std::string msMasterProjectPublicKey; extern std::string msMasterMessagePublicKey; extern std::string msMasterMessagePrivateKey; @@ -192,10 +190,6 @@ extern bool fEnforceCanonical; static const uint64_t nMinDiskSpace = 52428800; // PoB Miner Global Vars: -extern std::string msMiningProject; -extern std::string msMiningCPID; -extern std::string msPrimaryCPID; - extern double mdPORNonce; extern double mdMachineTimerLast; @@ -227,7 +221,6 @@ struct globalStatusType std::string magnitude; std::string ETTS; std::string ERRperday; - std::string project; std::string cpid; std::string status; std::string poll; @@ -265,8 +258,7 @@ bool CheckProofOfResearch( const CBlockIndex* pindexPrev, //previous block in chain index const CBlock &block); //block to check -unsigned int GetNextTargetRequired(const CBlockIndex* pindexLast, bool fProofOfStake); -int64_t GetProofOfWorkReward(int64_t nFees, int64_t locktime, int64_t height); +unsigned int GetNextTargetRequired(const CBlockIndex* pindexLast); int64_t GetConstantBlockReward(const CBlockIndex* index); int64_t ComputeResearchAccrual(int64_t nTime, std::string cpid, std::string operation, CBlockIndex* pindexLast, bool bVerifyingBlock, int VerificationPhase, double& dAccrualAge, double& dMagnitudeUnit, double& AvgMagnitude); int64_t GetProofOfStakeReward(uint64_t nCoinAge, int64_t nFees, std::string cpid, @@ -296,8 +288,6 @@ double GetEstimatedTimetoStake(double dDiff = 0.0, double dConfidence = 0.8); void AddRARewardBlock(const CBlockIndex* pIndex); MiningCPID GetBoincBlockByIndex(CBlockIndex* pblockindex); -unsigned int ComputeMinWork(unsigned int nBase, int64_t nTime); -unsigned int ComputeMinStake(unsigned int nBase, int64_t nTime, unsigned int nBlockTime); int GetNumBlocksOfPeers(); bool IsInitialBlockDownload(); std::string GetWarnings(std::string strFor); @@ -1120,8 +1110,6 @@ class CBlock return (int64_t)nTime; } - void UpdateTime(const CBlockIndex* pindexPrev); - // entropy bit for stake modifier if chosen by modifier unsigned int GetStakeEntropyBit() const { @@ -1467,14 +1455,6 @@ class CBlockIndex return pbegin[(pend - pbegin)/2]; } - /** - * Returns true if there are nRequired or more blocks of minVersion or above - * in the last nToCheck blocks, starting at pstart and going backwards. - */ - static bool IsSuperMajority(int minVersion, const CBlockIndex* pstart, - unsigned int nRequired, unsigned int nToCheck); - - bool IsProofOfWork() const { return !(nFlags & BLOCK_PROOF_OF_STAKE); diff --git a/src/miner.cpp b/src/miner.cpp index 92ec11749f..054e06ec01 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -7,7 +7,6 @@ #include "txdb.h" #include "miner.h" #include "kernel.h" -#include "cpid.h" #include "main.h" #include "appcache.h" #include "neuralnet/neuralnet.h" @@ -26,17 +25,21 @@ using namespace std; // unsigned int nMinerSleep; -MiningCPID GetNextProject(bool bForce); void ThreadCleanWalletPassphrase(void* parg); double CoinToDouble(double surrogate); void ThreadTopUpKeyPool(void* parg); +double CalculatedMagnitude(int64_t locktime, bool bUseLederstrumpf); +double GetLastPaymentTimeByCPID(std::string cpid); +bool HasActiveBeacon(const std::string& cpid); std::string SerializeBoincBlock(MiningCPID mcpid); bool LessVerbose(int iMax1000); int64_t GetRSAWeightByBlock(MiningCPID boincblock); +namespace NN { std::string GetPrimaryCpid(); } + namespace { // Some explaining would be appreciated class COrphan @@ -71,12 +74,13 @@ class COrphan //! //! \return Always \false - suitable for returning from the call directly. //! -bool BreakForNoCoins(CMinerStatus& status, const char* message) +bool BreakForNoCoins(CMinerStatus& status, const std::string& message) { LOCK(status.lock); status.Clear(); - status.ReasonNotStaking += _(message); + status.ReasonNotStaking += message; + status.ReasonNotStaking += "; "; if (fDebug) { LogPrintf("CreateCoinStake: %s", MinerStatus.ReasonNotStaking); @@ -443,15 +447,15 @@ bool CreateCoinStake( CBlock &blocknew, CKey &key, //Request all the coins here, check reserve later if (BalanceToStake <= 0) { - return BreakForNoCoins(MinerStatus, "No coins; "); + return BreakForNoCoins(MinerStatus, _("No coins")); } else if (!wallet.SelectCoinsForStaking(BalanceToStake*2, txnew.nTime, CoinsToStake, nValueIn)) { - return BreakForNoCoins(MinerStatus, "Waiting for coins to mature; "); + return BreakForNoCoins(MinerStatus, _("Waiting for coins to mature")); } BalanceToStake -= nReserveBalance; if (BalanceToStake <= 0) { - return BreakForNoCoins(MinerStatus, "Entire balance reserved; "); + return BreakForNoCoins(MinerStatus, _("Entire balance reserved")); } if(fDebug2) LogPrintf("CreateCoinStake: Staking nTime/16= %d Bits= %u", @@ -831,9 +835,8 @@ unsigned int GetNumberOfStakeOutputs(int64_t &nValue, int64_t &nMinStakeSplitVal bool SignStakeBlock(CBlock &block, CKey &key, vector &StakeInputs, CWallet *pwallet, MiningCPID& BoincData) { - //Append beacon signature to coinbase - std::string PublicKey = GlobalCPUMiningCPID.BoincPublicKey; - if (!PublicKey.empty()) + // Append beacon signature to coinbase + if (HasActiveBeacon(GlobalCPUMiningCPID.cpid)) { std::string sBoincSignature; std::string sError; @@ -972,8 +975,9 @@ bool CreateGridcoinReward(CBlock &blocknew, MiningCPID& miningcpid, uint64_t &nC pbh=pindexPrev->GetBlockHash(); miningcpid.lastblockhash = pbh.GetHex(); + miningcpid.LastPaymentTime = GetLastPaymentTimeByCPID(miningcpid.cpid); + miningcpid.Magnitude = CalculatedMagnitude(blocknew.nTime, false); miningcpid.ResearchSubsidy = OUT_POR; - miningcpid.ResearchSubsidy2 = OUT_POR; miningcpid.ResearchAge = dAccrualAge; miningcpid.ResearchMagnitudeUnit = dAccrualMagnitudeUnit; miningcpid.ResearchAverageMagnitude = dAccrualMagnitude; @@ -984,16 +988,6 @@ bool CreateGridcoinReward(CBlock &blocknew, MiningCPID& miningcpid, uint64_t &nC miningcpid.superblock = ""; miningcpid.GRCAddress = DefaultWalletAddress(); - // Make sure this deprecated fields are empty - miningcpid.cpidv2.clear(); - miningcpid.email.clear(); - miningcpid.boincruntimepublickey.clear(); - miningcpid.aesskein.clear(); - miningcpid.enccpid.clear(); - miningcpid.encboincpublickey.clear(); - miningcpid.encaes.clear(); - - int64_t RSA_WEIGHT = GetRSAWeightByBlock(miningcpid); GlobalCPUMiningCPID.lastblockhash = miningcpid.lastblockhash; @@ -1041,7 +1035,7 @@ bool IsMiningAllowed(CWallet *pwallet) { LOCK(MinerStatus.lock); MinerStatus.ReasonNotStaking+=_("Net averages not yet loaded; "); - if (LessVerbose(100) && IsResearcher(msPrimaryCPID)) LogPrintf("ResearchMiner:Net averages not yet loaded..."); + if (LessVerbose(100) && IsResearcher(NN::GetPrimaryCpid())) LogPrintf("ResearchMiner:Net averages not yet loaded..."); status=false; } @@ -1067,7 +1061,7 @@ bool GetSideStakingStatusAndAlloc(SideStakeAlloc& vSideStakeAlloc) double dSumAllocation = 0.0; bool fEnableSideStaking = GetBoolArg("-enablesidestaking"); - LogPrintf("StakeMiner: fEnableSideStaking = %u", fEnableSideStaking); + if (fDebug2) LogPrintf("StakeMiner: fEnableSideStaking = %u", fEnableSideStaking); // If side staking is enabled, parse destinations and allocations. We don't need to worry about any that are rejected // other than a warning message, because any unallocated rewards will go back into the coinstake output(s). @@ -1126,7 +1120,7 @@ bool GetSideStakingStatusAndAlloc(SideStakeAlloc& vSideStakeAlloc) } vSideStakeAlloc.push_back(std::pair(sAddress, dAllocation)); - LogPrintf("StakeMiner: SideStakeAlloc Address %s, Allocation %f", sAddress.c_str(), dAllocation); + if (fDebug2) LogPrintf("StakeMiner: SideStakeAlloc Address %s, Allocation %f", sAddress.c_str(), dAllocation); vSubParam.clear(); } @@ -1146,7 +1140,7 @@ bool GetStakeSplitStatusAndParams(int64_t& nMinStakeSplitValue, double& dEfficie { // Parse StakeSplit and SideStaking flags. bool fEnableStakeSplit = GetBoolArg("-enablestakesplit"); - LogPrintf("StakeMiner: fEnableStakeSplit = %u", fEnableStakeSplit); + if (fDebug2) LogPrintf("StakeMiner: fEnableStakeSplit = %u", fEnableStakeSplit); // If stake output splitting is enabled, determine efficiency and minimum stake split value. if (fEnableStakeSplit) @@ -1158,13 +1152,13 @@ bool GetStakeSplitStatusAndParams(int64_t& nMinStakeSplitValue, double& dEfficie else if (dEfficiency < 0.75) dEfficiency = 0.75; - LogPrintf("StakeMiner: dEfficiency = %f", dEfficiency); + if (fDebug2) LogPrintf("StakeMiner: dEfficiency = %f", dEfficiency); // Pull Minimum Post Stake UTXO Split Value from config or command line parameter. // Default to 800 and do not allow it to be specified below 800 GRC. nMinStakeSplitValue = max(GetArg("-minstakesplitvalue", MIN_STAKE_SPLIT_VALUE_GRC), MIN_STAKE_SPLIT_VALUE_GRC) * COIN; - LogPrintf("StakeMiner: nMinStakeSplitValue = %f", CoinToDouble(nMinStakeSplitValue)); + if (fDebug2) LogPrintf("StakeMiner: nMinStakeSplitValue = %f", CoinToDouble(nMinStakeSplitValue)); // For the definition of the constant G, please see // https://docs.google.com/document/d/1OyuTwdJx1Ax2YZ42WYkGn_UieN0uY13BTlA5G5IAN00/edit?usp=sharing @@ -1231,16 +1225,12 @@ void StakeMiner(CWallet *pwallet) continue; } - // Lock main lock since GetNextProject and subsequent calls - // require the state to be static. LOCK(cs_main); - GetNextProject(true); - // * Create a bare block StakeBlock.nTime= GetAdjustedTime(); StakeBlock.nNonce= 0; - StakeBlock.nBits = GetNextTargetRequired(pindexPrev, true); + StakeBlock.nBits = GetNextTargetRequired(pindexPrev); StakeBlock.vtx.resize(2); //tx 0 is coin_base CTransaction &StakeTX= StakeBlock.vtx[1]; //tx 1 is coin_stake @@ -1290,7 +1280,6 @@ void StakeMiner(CWallet *pwallet) LogPrintf("StakeMiner: block processed"); { LOCK(MinerStatus.lock); MinerStatus.AcceptedCnt++; - nLastBlockSolved = GetAdjustedTime(); } } //end while(!fShutdown) diff --git a/src/net.cpp b/src/net.cpp index fbce259329..680b505fe9 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -34,15 +34,10 @@ #endif using namespace std; -std::string DefaultWalletAddress(); std::string NodeAddress(CNode* pfrom); - extern std::string GetCommandNonce(std::string command); -bool IsCPIDValidv3(std::string cpidv2, bool allow_investor); extern int nMaxConnections; -std::string ExtractXML(const std::string& XMLdata, const std::string& key, const std::string& key_end); - int MAX_OUTBOUND_CONNECTIONS = 8; void ThreadMessageHandler2(void* parg); @@ -2253,9 +2248,15 @@ void StartNode(void* parg) else { LogPrintf("Scraper disabled."); - LogPrintf("NN housekeeping thread enabled."); - if (!netThreads->createThread(ThreadNeuralNetwork,NULL,"NeuralNetwork")) - LogPrintf("Error: createThread(NeuralNetwork) failed"); + + // If the neural network is specified to be disabled, do not enable housekeeping thread. + if (!GetBoolArg("-disablenn", false)) + { + LogPrintf("NN housekeeping thread enabled."); + + if (!netThreads->createThread(ThreadNeuralNetwork,NULL,"NeuralNetwork")) + LogPrintf("Error: createThread(NeuralNetwork) failed"); + } } } diff --git a/src/neuralnet/cpid.cpp b/src/neuralnet/cpid.cpp new file mode 100644 index 0000000000..141cb2ae70 --- /dev/null +++ b/src/neuralnet/cpid.cpp @@ -0,0 +1,249 @@ +#include "neuralnet/cpid.h" +#include "util.h" + +#include +#include + +using namespace NN; + +namespace { +//! +//! \brief Gets the string representation of a mining ID object. +//! +struct MiningIdToStringVisitor : boost::static_visitor +{ + //! + //! \brief Call the mining ID variant type's \c ToString() method directly. + //! + //! \param variant The object to create a string for. + //! + //! \return The string representation of the mining ID. + //! + template + std::string operator()(const T& variant) const + { + return variant.ToString(); + } +}; +} // anonymous namespace + +// ----------------------------------------------------------------------------- +// Class: Cpid +// ----------------------------------------------------------------------------- + +Cpid::Cpid() : m_bytes({ }) +{ +} + +Cpid::Cpid(const std::vector& bytes) +{ + if (bytes.size() == 16) { + std::copy_n(bytes.begin(), 16, m_bytes.begin()); + } else { + m_bytes.fill(0x00); + } +} + +Cpid Cpid::Parse(const std::string& hex) +{ + if (hex.size() != 32) { + return Cpid(); + } + + return Cpid(ParseHex(hex)); +} + +Cpid Cpid::Hash(const std::string& internal, const std::string& email) +{ + if (internal.empty() || email.empty()) { + return Cpid(); + } + + Cpid cpid; + + // Even though the internal CPID is hex-encoded, BOINC creates the external + // CPID hash from the hex string, not from the encoded bytes: + // + std::vector input(internal.begin(), internal.end()); + input.insert(input.end(), email.begin(), email.end()); + + MD5(input.data(), input.size(), cpid.m_bytes.data()); + + return cpid; +} + +bool Cpid::operator==(const Cpid& other) const +{ + return m_bytes == other.m_bytes; +} + +bool Cpid::operator!=(const Cpid& other) const +{ + return m_bytes != other.m_bytes; +} + +bool Cpid::operator<(const Cpid& other) const +{ + // CONSENSUS: Changing the behavior of this comparison operator will affect + // the sort order of protocol-sensitive maps (for example, superblocks). + // + return m_bytes < other.m_bytes; +} + +bool Cpid::operator>(const Cpid& other) const +{ + // CONSENSUS: Changing the behavior of this comparison operator will affect + // the sort order of protocol-sensitive maps (for example, superblocks). + // + return m_bytes > other.m_bytes; +} + +bool Cpid::IsZero() const +{ + const auto zero = [](const unsigned char& i) { return i == 0; }; + + return std::all_of(m_bytes.begin(), m_bytes.end(), zero); +} + +bool Cpid::Matches(const std::string& internal, const std::string& email) const +{ + return m_bytes == Cpid::Hash(internal, email).m_bytes; +} + +const std::array& Cpid::Raw() const +{ + return m_bytes; +} + +std::array& Cpid::Raw() +{ + return m_bytes; +} + +std::string Cpid::ToString() const +{ + return HexStr(m_bytes.begin(), m_bytes.end()); +} + +// ----------------------------------------------------------------------------- +// Class: MiningId +// ----------------------------------------------------------------------------- + +MiningId::MiningId() : m_variant(Invalid()) +{ +} + +MiningId::MiningId(Cpid cpid) : m_variant(std::move(cpid)) +{ +} + +MiningId MiningId::ForInvestor() +{ + MiningId miningId; + miningId.m_variant = Investor(); + + return miningId; +} + +MiningId MiningId::Parse(const std::string& input) +{ + if (input.empty()) { + return MiningId(); + } + + if (input == "INVESTOR" || input == "investor") { + return MiningId::ForInvestor(); + } + + if (input.size() == 32) { + std::vector bytes = ParseHex(input); + + if (bytes.size() == 16) { + return MiningId(Cpid(bytes)); + } + } + + return MiningId(); +} + +bool MiningId::operator==(const MiningId& other) const +{ + if (m_variant.which() != other.m_variant.which()) { + return false; + } + + if (Which() == Kind::CPID) { + return *this == boost::get(other.m_variant); + } + + return true; +} + +bool MiningId::operator!=(const MiningId& other) const +{ + return !(*this == other); +} + +bool MiningId::operator==(const Cpid& other) const +{ + return Which() == Kind::CPID + && boost::get(m_variant) == other; +} + +bool MiningId::operator!=(const Cpid& other) const +{ + return !(*this == other); +} + +MiningId::Kind MiningId::Which() const +{ + return static_cast(m_variant.which()); +} + +bool MiningId::Valid() const +{ + return Which() != Kind::INVALID; +} + +CpidOption MiningId::TryCpid() const +{ + if (Which() != Kind::CPID) { + return boost::none; + } + + return boost::get(m_variant); +} + +std::string MiningId::ToString() const +{ + return boost::apply_visitor(MiningIdToStringVisitor(), m_variant); +} + +unsigned int MiningId::GetSerializeSize(int nType, int nVersion) const +{ + if (Which() == Kind::CPID) { + return 1 + 16; // Variant tag byte + CPID bytes + } + + // For variants without any associated data, we serialize the variant tag + // only as a single byte: + return 1; +} + +// ----------------------------------------------------------------------------- +// Class: MiningId::Invalid +// ----------------------------------------------------------------------------- + +std::string MiningId::Invalid::ToString() const +{ + return std::string(); +} + +// ----------------------------------------------------------------------------- +// Class: MiningId::Investor +// ----------------------------------------------------------------------------- + +std::string MiningId::Investor::ToString() const +{ + return "INVESTOR"; +} diff --git a/src/neuralnet/cpid.h b/src/neuralnet/cpid.h new file mode 100644 index 0000000000..28ddb993f8 --- /dev/null +++ b/src/neuralnet/cpid.h @@ -0,0 +1,409 @@ +#pragma once + +#include "serialize.h" + +#include +#include +#include +#include +#include +#include + +namespace NN { +//! +//! \brief Represents a BOINC researcher's external, public CPID. +//! +//! An external CPID is the MD5 digest of the concatenation of a BOINC account's +//! internal CPID and email address. +//! +class Cpid +{ +public: + //! + //! \brief Initialize a zero-value CPID object. + //! + Cpid(); + + //! + //! \brief Initialize a CPID object from the bytes in an MD5 hash. + //! + //! \param bytes CPID output bytes from an MD5 hashing function to copy. + //! + Cpid(const std::vector& bytes); + + //! + //! \brief Create a CPID object from its MD5 string representation. + //! + //! Malformed CPIDs parse to the zero value. Because a zero-value CPID is + //! technically a valid value, prefer to use MiningId::Parse() to parse a + //! string that may not contain a well-formed CPID. + //! + //! \param hex Hex-encoded bytes of the MD5 hash. + //! + //! \return A new CPID object that contains the bytes in the provided hash + //! or a zero-value CPID object if the input string does not represent a + //! valid MD5 hash. + //! + static Cpid Parse(const std::string& hex); + + //! + //! \brief Initialize a CPID object by hashing an internal, private CPID + //! and email address to produce the external, public CPID. + //! + //! \param internal Private (internal) CPID as a hex-encoded string. + //! \param email Email address of the BOINC account for the CPID. + //! + //! \return The public CPID that represents the provided internal CPID and + //! email address pair. + //! + static Cpid Hash(const std::string& internal, const std::string& email); + + //! + //! \brief Compare a supplied CPID value for equality. + //! + //! \param other A CPID value to check equality for. + //! + //! \return \c true if the supplied CPID's bytes match. + //! + bool operator==(const Cpid& other) const; + + //! + //! \brief Compare a supplied CPID value for inequality. + //! + //! \param other A CPID value to check inequality for. + //! + //! \return \c true if the supplied CPID's bytes do not match. + //! + bool operator!=(const Cpid& other) const; + + //! + //! \brief Compare a supplied CPID value for less than other. + //! + //! The comparison checks from left to right with the most significant byte + //! on the left (byte order equivalent to the hex string representation). + //! + //! CONSENSUS: Changing the behavior of this comparison operator will affect + //! the sort order of protocol-sensitive maps (for example, superblocks). + //! + //! \param other A CPID value to check whether current is less than. + //! + //! \return \c true if the supplied CPID's bytes represent a greater number. + //! + bool operator<(const Cpid& other) const; + + //! + //! \brief Compare a supplied CPID value for greater than other. + //! + //! The comparison checks from left to right with the most significant byte + //! on the left (byte order equivalent to the hex string representation). + //! + //! CONSENSUS: Changing the behavior of this comparison operator will affect + //! the sort order of protocol-sensitive maps (for example, superblocks). + //! + //! \param other A CPID value to check whether current is greater than. + //! + //! \return \c true if the supplied CPID's bytes represent a lesser number. + //! + bool operator>(const Cpid& other) const; + + //! + //! \brief Determine whether the CPID contains only zeros. + //! + //! \return \c true if every byte in the CPID equals \c 0x00. + //! + bool IsZero() const; + + //! + //! \brief Determine whether the external CPID matches the hash created from + //! the supplied internal CPID and email address. + //! + //! \param internal Private CPID as a 32-character hex-encoded string. + //! \param email Email address of the BOINC account for the CPID. + //! + //! \return \c true if the hashed concatenation of the internal CPID and + //! email address match the external CPID represented by this object. + //! + bool Matches(const std::string& internal, const std::string& email) const; + + //! + //! \brief Get the bytes that make up the CPID. + //! + //! \return An immutable reference to the underlying byte array. + //! + const std::array& Raw() const; + + //! + //! \brief Get the bytes that make up the CPID. + //! + //! \return A mutable reference to the underlying byte array. + //! + std::array& Raw(); + + //! + //! \brief Get the MD5 string representation of the CPID. + //! + //! \return Hex-encoded bytes of the MD5 hash. + //! + std::string ToString() const; + + IMPLEMENT_SERIALIZE + ( + READWRITE(FLATDATA(m_bytes)); + ) + +private: + //! + //! \brief Bytes that make up the public CPID (an MD5 hash). + //! + //! Store these as an array instead of a \c uint128 object because CPIDs + //! have little in common with that numeric type. The \c uint128 numbers + //! represent themselves as big-endian whereas CPIDs display canonically + //! as little-endian. Use of \c uint128 here would complicate validation + //! and add unnecessary overhead. + //! + std::array m_bytes; +}; // Cpid + +//! +//! \brief An optional type that either contains a reference to some external +//! CPID value or does not. +//! +typedef boost::optional CpidOption; + +//! +//! \brief A variant type that identifies an entity that may receive rewards. +//! +class MiningId +{ +public: + //! + //! \brief Describes the kind of miner represented by a \c MiningId object. + //! + enum class Kind : unsigned char + { + INVALID = 0x00, //!< An empty or invalid CPID. + INVESTOR = 0x01, //!< A CPID that represents a non-researcher. + CPID = 0x02, //!< A valid exernal CPID. + }; + + //! + //! \brief A tag type that describes an empty or invalid CPID. + //! + struct Invalid + { + //! + //! \brief Get the string representation of an invalid mining ID. + //! + //! \return An empty string. + //! + std::string ToString() const; + }; + + //! + //! \brief A tag type that describes a CPID that represents a non-researcher + //! (an investor without a BOINC CPID). + //! + struct Investor + { + //! + //! \brief Get the string representation of an investor. + //! + //! \return The string literal "INVESTOR". + //! + std::string ToString() const; + }; + + //! + //! \brief Initialize an empty, invalid mining ID object. + //! + MiningId(); + + //! + //! \brief Initialize a mining ID for the provided CPID value. + //! + //! \param cpid An external BOINC CPID. + //! + MiningId(Cpid cpid); + + //! + //! \brief Initialize a mining ID that represents a non-researcher. + //! + static MiningId ForInvestor(); + + //! + //! \brief Create a mining ID object from its string representation. + //! + //! \param input Hex-encoded bytes of a CPID, or the string "INVESTOR". + //! + //! \return A mining ID object parsed from the input. + //! + static MiningId Parse(const std::string& input); + + //! + //! \brief Compare a supplied mining ID value for equality. + //! + //! \param other A mining ID value to check equality for. + //! + //! \return \c true if the supplied mining ID's bytes match. + //! + bool operator==(const MiningId& other) const; + + //! + //! \brief Compare a supplied mining ID value for inequality. + //! + //! \param other A mining ID value to check inequality for. + //! + //! \return \c true if the supplied mining ID's bytes do not match. + //! + bool operator!=(const MiningId& other) const; + + //! + //! \brief Compare a supplied CPID value for equality. + //! + //! \param other A CPID value to check equality for. + //! + //! \return \c true if this object contains a CPID variant and the supplied + //! CPID's bytes match. + //! + bool operator==(const Cpid& other) const; + + //! + //! \brief Compare a supplied CPID value for inequality. + //! + //! \param other A CPID value to check inequality for. + //! + //! \return \c true if this object does not contain a CPID variant or the + //! supplied CPID's bytes do not match. + //! + bool operator!=(const Cpid& other) const; + + //! + //! \brief Describe the type of entity represented by the mining ID. + //! + //! \return A value enumerated on \c MiningId::Kind . + //! + Kind Which() const; + + //! + //! \brief Determine whether the mining ID is valid. + //! + //! \return \c true if the object represents a valid CPID or an investor. + //! + bool Valid() const; + + //! + //! \brief Get the CPID value if it exists. + //! + //! \return An object that contains a reference to a \c Cpid object if the + //! variant holds a CPID value. + //! + CpidOption TryCpid() const; + + //! + //! \brief Get the string representation of the mining ID. + //! + //! \return Hex-encoded bytes of the MD5 hash for a CPID, "INVESTOR" for + //! an investor, or an empty string for invalid mining IDs. + //! + std::string ToString() const; + + //! + //! \brief Get the size of the data to serialize. + //! + //! \param nType Target protocol type (network, disk, etc.). + //! \param nVersion Protocol version. + //! + //! \return Size of the data in bytes. + //! + unsigned int GetSerializeSize(int nType, int nVersion) const; + + //! + //! \brief Serialize the object to the provided stream. + //! + //! \param stream The output stream. + //! \param nType Target protocol type (network, disk, etc.). + //! \param nVersion Protocol version. + //! + template + void Serialize(Stream& stream, int nType, int nVersion) const + { + unsigned char kind = m_variant.which(); + + ::Serialize(stream, kind, nType, nVersion); + + if (static_cast(kind) == Kind::CPID) { + boost::get(m_variant).Serialize(stream, nType, nVersion); + } + } + + //! + //! \brief Deserialize the object from the provided stream. + //! + //! \param stream The input stream. + //! \param nType Target protocol type (network, disk, etc.). + //! \param nVersion Protocol version. + //! + template + void Unserialize(Stream& stream, int nType, int nVersion) + { + unsigned char kind; + + ::Unserialize(stream, kind, nType, nVersion); + + switch (static_cast(kind)) { + case Kind::INVESTOR: + m_variant = Investor(); + break; + case Kind::CPID: + { + Cpid cpid; + cpid.Unserialize(stream, nType, nVersion); + + m_variant = std::move(cpid); + } + break; + default: + m_variant = Invalid(); + break; + } + } + +private: + //! + //! \brief Stores the various states that a mining ID may exist in. + //! + boost::variant m_variant; +}; // MiningId +} // namespace NN + +namespace std { +//! +//! \brief Specializes std::hash for NN::Cpid. +//! +//! This enables the use of NN::Cpid as a key in a std::unordered_map object. +//! +//! CONSENSUS: Don't use the hash produced by this routine (or by any std::hash +//! specialization) in protocol-specific implementations. It ignores endianness +//! and outputs a value with a chance of collision probably too great for usage +//! besides the intended local look-up functionality. +//! +template<> +struct hash +{ + //! + //! \brief Create a hash of the supplied CPID object. + //! + //! \param cpid Contains the bytes to hash. + //! + //! \return A hash as the sum of the two halves of the bytes in the CPID. + //! + size_t operator()(const NN::Cpid& cpid) const + { + // Just convert the CPID into a value that we can store in a size_t + // object. CPIDs are already unique identifiers. + // + return *reinterpret_cast(cpid.Raw().data()) + + *reinterpret_cast(cpid.Raw().data() + 8); + } +}; +} diff --git a/src/neuralnet/neuralnet.cpp b/src/neuralnet/neuralnet.cpp index d500da87f1..0f2c8d7266 100755 --- a/src/neuralnet/neuralnet.cpp +++ b/src/neuralnet/neuralnet.cpp @@ -6,6 +6,7 @@ #include extern bool GetBoolArg(const std::string& strArg, bool fDefault); +extern bool fExplorer; using namespace NN; @@ -33,14 +34,15 @@ INeuralNetPtr NN::CreateNeuralNet() // Then if -scraper is specified (set to true)... if (GetBoolArg("-scraper", false)) { + // Activate explorer extended features if -explorer is set + if (GetBoolArg("-explorer", false)) fExplorer = true; + // And -usenewnn is specified (set to true)... - if (GetBoolArg("-usenewnn", false)) - fRunNN = true; + if (GetBoolArg("-usenewnn", false)) fRunNN = true; } // Else if -scraper is NOT specified (or set to true), // and -usenewnn is NOT specified (defaults to true here) or set to true - else if (GetBoolArg("-usenewnn", true)) - fRunNN = true; + else if (GetBoolArg("-usenewnn", true)) fRunNN = true; } if (fRunNN) diff --git a/src/neuralnet/neuralnet.h b/src/neuralnet/neuralnet.h index 2ea182f22e..e0f1d35ac8 100644 --- a/src/neuralnet/neuralnet.h +++ b/src/neuralnet/neuralnet.h @@ -2,6 +2,7 @@ #include "beacon.h" #include "project.h" +#include "superblock.h" #include #include @@ -52,6 +53,16 @@ namespace NN //! virtual std::string GetNeuralHash() = 0; + //! + //! \brief Get current superblock hash from scraper. + //! + //! \note This is a synchoronous operation. + //! + //! \return Current superblock hash. This might be empty if it has + //! not been calculated yet. + //! + virtual NN::QuorumHash GetSuperblockHash() = 0; + //! //! \brief Get the most recently updated neural network contract. //! @@ -62,6 +73,16 @@ namespace NN //! virtual std::string GetNeuralContract() = 0; + //! + //! \brief Get the most recently updated superblock contract. + //! + //! Synchronously queries the scraper for the current + //! superblock contract. + //! + //! \return Most recent superblock contract if available. + //! + virtual NN::Superblock GetSuperblockContract() = 0; + //! //! \brief Synchronize DPOR data. //! diff --git a/src/neuralnet/neuralnet_native.cpp b/src/neuralnet/neuralnet_native.cpp index 06322dd531..5e15ce1d0b 100644 --- a/src/neuralnet/neuralnet_native.cpp +++ b/src/neuralnet/neuralnet_native.cpp @@ -12,6 +12,9 @@ extern std::string ExplainMagnitude(std::string sCPID); using namespace NN; +extern Superblock ScraperGetSuperblockContract(bool bStoreConvergedStats = false, bool bContractDirectFromStatsUpdate = false); +extern QuorumHash ScraperGetSuperblockHash(); + bool NeuralNetNative::IsEnabled() { return GetArgument("disableneuralnetwork", "false") == "false"; @@ -29,11 +32,21 @@ std::string NeuralNetNative::GetNeuralHash() return ScraperGetNeuralHash(); } +QuorumHash NeuralNetNative::GetSuperblockHash() +{ + return ScraperGetSuperblockHash(); +} + std::string NeuralNetNative::GetNeuralContract() { return ScraperGetNeuralContract(false, false); } +Superblock NeuralNetNative::GetSuperblockContract() +{ + return ScraperGetSuperblockContract(false, false); +} + // Note that the data argument is still used here for compatibility, but I don't think it will // actually be used in the scraper. We will see. bool NeuralNetNative::SynchronizeDPOR(const BeaconConsensus& beacons) @@ -50,5 +63,6 @@ int64_t NeuralNetNative::IsNeuralNet() { // This is the NN version number. TODO: Consider different number for new NN? int64_t nNeuralNetVersion = 1999; + return nNeuralNetVersion; } diff --git a/src/neuralnet/neuralnet_native.h b/src/neuralnet/neuralnet_native.h index fe833b24e3..a5784d4e52 100644 --- a/src/neuralnet/neuralnet_native.h +++ b/src/neuralnet/neuralnet_native.h @@ -16,7 +16,9 @@ namespace NN bool IsEnabled(); std::string GetNeuralVersion(); std::string GetNeuralHash(); + NN::QuorumHash GetSuperblockHash(); std::string GetNeuralContract(); + NN::Superblock GetSuperblockContract(); bool SynchronizeDPOR(const BeaconConsensus& beacons); std::string ExplainMagnitude(const std::string& cpid); int64_t IsNeuralNet(); diff --git a/src/neuralnet/neuralnet_stub.cpp b/src/neuralnet/neuralnet_stub.cpp index ff0a0b8c22..c66c7f5f71 100644 --- a/src/neuralnet/neuralnet_stub.cpp +++ b/src/neuralnet/neuralnet_stub.cpp @@ -19,11 +19,27 @@ std::string NeuralNetStub::GetNeuralHash() return std::string(); } +NN::QuorumHash NeuralNetStub::GetSuperblockHash() +{ + NN::QuorumHash EmptyQuorumHash; + + //Initialize a purposefully empty (invalid) hash. + return EmptyQuorumHash; +} + std::string NeuralNetStub::GetNeuralContract() { return std::string(); } +NN::Superblock NeuralNetStub::GetSuperblockContract() +{ + NN::Superblock EmptySuperblock; + + return EmptySuperblock; +} + + bool NeuralNetStub::SynchronizeDPOR(const BeaconConsensus& beacons) { return false; diff --git a/src/neuralnet/neuralnet_stub.h b/src/neuralnet/neuralnet_stub.h index edc2df2601..c84555fc1d 100644 --- a/src/neuralnet/neuralnet_stub.h +++ b/src/neuralnet/neuralnet_stub.h @@ -16,7 +16,9 @@ namespace NN bool IsEnabled(); std::string GetNeuralVersion(); std::string GetNeuralHash(); + NN::QuorumHash GetSuperblockHash(); std::string GetNeuralContract(); + NN::Superblock GetSuperblockContract(); bool SynchronizeDPOR(const BeaconConsensus& beacons); std::string ExplainMagnitude(const std::string& data); int64_t IsNeuralNet(); diff --git a/src/neuralnet/researcher.cpp b/src/neuralnet/researcher.cpp new file mode 100644 index 0000000000..5aadc4f42d --- /dev/null +++ b/src/neuralnet/researcher.cpp @@ -0,0 +1,568 @@ +#include "appcache.h" +#include "boinc.h" +#include "global_objects_noui.hpp" +#include "neuralnet/researcher.h" +#include "ui_interface.h" +#include "util.h" + +#include +#include +#include +#include + +using namespace NN; + +// Parses the XML elements from the BOINC client_state.xml: +std::string ExtractXML(const std::string& XMLdata, const std::string& key, const std::string& key_end); + +// Used to build the legacy global mining context after reloading projects: +MiningCPID GetMiningCPID(); +extern std::string msMiningErrors; + +namespace { +//! +//! \brief Global BOINC researcher mining context. +//! +ResearcherPtr researcher = std::make_shared(); + +//! +//! \brief Convert a project name to lowercase change any underscores to spaces. +//! +//! NOTICE: Because the application merges the loaded BOINC project details into +//! the output of the "projects" RPC method, project whitelist contracts created +//! by the master key holder must embed the project names into the contract just +//! as output by this function or the method will omit projects with mismatching +//! names from the result. +//! +//! \return A "normalized" project name. +//! +std::string LowerUnderscore(std::string data) +{ + boost::to_lower(data); + boost::replace_all(data, "_", " "); + + return data; +} + +//! +//! \brief Determine whether the wallet must run in investor mode before trying +//! to load BOINC CPIDs. +//! +//! \return \c true if the user explicitly configured investor mode or failed +//! to input a valid email address. +//! +bool ConfiguredForInvestorMode() +{ + if (GetBoolArg("-investor", false)) { + LogPrintf("Investor mode configured. Skipping CPID import."); + return true; + } + + if (Researcher::Email().empty()) { + LogPrintf( + "WARNING: Please set 'email=' in " + "gridcoinresearch.conf. Continuing in investor mode."); + + return true; + } + + return false; +} + +//! +//! \brief Fetch the contents of BOINC's client_state.xml file from disk. +//! +//! \return The entire client_state.xml file as a string if readable. +//! +boost::optional ReadClientStateXml() +{ + const std::string path = GetBoincDataDir(); + std::string contents = GetFileContents(path + "client_state.xml"); + + if (contents != "-1") { + return boost::make_optional(std::move(contents)); + } + + LogPrintf("WARNING: Unable to obtain BOINC CPIDs."); + + if (!GetArgument("boincdatadir", "").empty()) { + LogPrintf("Could not access configured BOINC data directory %s", path); + } else { + LogPrintf( + "BOINC data directory is not installed in the default location.\n" + "Please specify its current location in gridcoinresearch.conf."); + } + + return boost::none; +} + +//! +//! \brief Load a set of project XML sections from BOINC's client_state.xml +//! file to gather CPIDs from. +//! +//! \return Items containing the XML between each \c ... +//! section present in the client_state.xml file or an empty container when +//! the file is not accessible or contains no project elements. +//! +std::vector FetchProjectsXml() +{ + const boost::optional client_state_xml = ReadClientStateXml(); + + if (!client_state_xml) { + return { }; + } + + std::vector projects = split(*client_state_xml, ""); + + if (projects.size() < 2) { + LogPrintf("BOINC is not attached to any projects. No CPIDs loaded."); + return { }; + } + + // Drop the first element which never contains a project: + // + std::swap(projects.front(), projects.back()); + projects.pop_back(); + + return projects; +} + +//! +//! \brief Determine whether BOINC projects should be checked for membership in +//! a whitelisted team before enabling the associated CPID. +//! +//! \return \c true when the protocol is configured to require team membership +//! or when no protocol directive exists. +//! +bool ShouldEnforceTeamMembership() +{ + return ReadCache(Section::PROTOCOL, "REQUIRE_TEAM_WHITELIST_MEMBERSHIP").value != "false"; +} + +//! +//! \brief Fetch the current set of whitelisted teams. +//! +//! \return The set of whitelisted teams configured in the protocol or a set +//! with only team "gridcoin" when no protocol directive exists. Supplies an +//! empty set when the team requirement is not active. +//! +std::set GetTeamWhitelist() +{ + if (!ShouldEnforceTeamMembership()) { + return { }; + } + + const AppCacheEntry entry = ReadCache(Section::PROTOCOL, "TEAM_WHITELIST"); + + if (entry.value.empty()) { + return { "gridcoin" }; + } + + std::set teams; + + for (auto&& team_name : split(entry.value, "|")) { + if (team_name.empty()) { + continue; + } + + boost::to_lower(team_name); + + teams.emplace(std::move(team_name)); + } + + if (teams.empty()) { + return { "gridcoin" }; + } + + return teams; +} + +//! +//! \brief Select the provided project's CPID if the project passes the rules +//! for eligibility. +//! +//! \param mining_id Updated with the project CPID if eligible. +//! \param project Project with the CPID to determine eligibility for. +//! +void TryProjectCpid(MiningId& mining_id, const MiningProject& project) +{ + switch (project.m_error) { + case MiningProject::Error::NONE: + break; // Suppress warning. + case MiningProject::Error::MALFORMED_CPID: + LogPrintf("Invalid external CPID for project %s.", project.m_name); + return; + case MiningProject::Error::MISMATCHED_CPID: + LogPrintf("CPID mismatch. Check email for %s.", project.m_name); + return; + case MiningProject::Error::INVALID_TEAM: + LogPrintf("Project %s's team is not whitelisted.", project.m_name); + return; + } + + mining_id = project.m_cpid; + + LogPrintf( + "Found eligible project %s with CPID %s.", + project.m_name, + project.m_cpid.ToString()); +} + +//! +//! \brief Try to detect a split CPID and log a warning message. +//! +//! In the future, we can extend this to display a warning in the UI. +//! +//! \param projects Map of local projects loaded from BOINC's client_state.xml +//! file. +//! +void DetectSplitCpid(const MiningProjectMap& projects) +{ + std::unordered_map eligible_cpids; + + for (const auto& project_pair : projects) { + if (project_pair.second.Eligible()) { + eligible_cpids.emplace( + project_pair.second.m_cpid, + project_pair.second.m_name); + } + } + + if (eligible_cpids.size() > 1) { + std::string warning = "WARNING: Detected potential CPID split."; + warning += "Eligible CPIDs: \n"; + + for (const auto& cpid_pair : eligible_cpids) { + warning += " " + cpid_pair.first.ToString(); + warning += " (" + cpid_pair.second + ") \n"; + } + + LogPrintf("%s", warning); + } +} + +//! +//! \brief Set up the legacy global mining context variables after reloading +//! researcher context. +//! +//! \param researcher Contains the context to export. +//! +void SetLegacyResearcherContext(const Researcher& researcher) +{ + MiningCPID mc = GetMiningCPID(); + + mc.initialized = true; + mc.cpid = researcher.Id().ToString(); + mc.Magnitude = 0; + mc.clientversion = ""; + mc.RSAWeight = 0; + mc.LastPaymentTime = 0; + mc.lastblockhash = "0"; + // Reuse for debugging + mc.Organization = GetArg("-org", ""); + + GlobalCPUMiningCPID = std::move(mc); + + // TODO: this belongs in presentation layer code: + switch (researcher.Status()) { + case ResearcherStatus::ACTIVE: + msMiningErrors = _("Eligible for Research Rewards"); + break; + case ResearcherStatus::NO_PROJECTS: + msMiningErrors = _("Staking Only - No Eligible Research Projects"); + break; + default: + msMiningErrors = _("Staking Only - Investor Mode"); + break; + } +} + +//! +//! \brief Set the global BOINC researcher context. +//! +//! \param context Contains the CPID and local projects loaded from BOINC. +//! +void StoreResearcher(Researcher context) +{ + SetLegacyResearcherContext(context); + + std::atomic_store( + &researcher, + std::make_shared(std::move(context))); +} +} // anonymous namespace + +// ----------------------------------------------------------------------------- +// Functions +// ----------------------------------------------------------------------------- + +std::string NN::GetPrimaryCpid() +{ + return NN::Researcher::Get()->Id().ToString(); +} + +// ----------------------------------------------------------------------------- +// Class: MiningProject +// ----------------------------------------------------------------------------- + +MiningProject::MiningProject(std::string name, Cpid cpid, std::string team) + : m_name(LowerUnderscore(std::move(name))) + , m_cpid(std::move(cpid)) + , m_team(std::move(team)) + , m_error(Error::NONE) +{ + boost::to_lower(m_team); +} + +MiningProject MiningProject::Parse(const std::string& xml) +{ + MiningProject project( + ExtractXML(xml, "", ""), + Cpid::Parse(ExtractXML(xml, "", "")), + ExtractXML(xml, "","")); + + if (project.m_cpid.IsZero()) { + const std::string external_cpid + = ExtractXML(xml, "", ""); + + // For the extremely rare case that a BOINC project assigned a user a + // CPID that contains only zeroes, double check that a CPID parsed to + // zero is actually invalid: + // + if (MiningId::Parse(external_cpid).Which() != MiningId::Kind::CPID) { + project.m_error = MiningProject::Error::MALFORMED_CPID; + return project; + } + } + + // We compare the digest of the internal CPID and email address to the + // external CPID as a smoke test to avoid running with corrupted CPIDs. + // + if (!project.m_cpid.Matches( + ExtractXML(xml, "", ""), + Researcher::Email())) + { + project.m_error = MiningProject::Error::MISMATCHED_CPID; + } + + return project; +} + +bool MiningProject::Eligible() const +{ + return m_error == Error::NONE; +} + +std::string MiningProject::ErrorMessage() const +{ + switch (m_error) { + case Error::NONE: return ""; + case Error::INVALID_TEAM: return _("Invalid team"); + case Error::MALFORMED_CPID: return _("Malformed CPID"); + case Error::MISMATCHED_CPID: return _("Project email mismatch"); + default: return _("Unknown error"); + } +} + +// ----------------------------------------------------------------------------- +// Class: MiningProjectMap +// ----------------------------------------------------------------------------- + +MiningProjectMap::MiningProjectMap() +{ +} + +MiningProjectMap MiningProjectMap::Parse(const std::vector& xml) +{ + MiningProjectMap projects; + + for (const auto& project_xml : xml) { + MiningProject project = MiningProject::Parse(project_xml); + + if (project.m_name.empty()) { + LogPrintf("Skipping invalid BOINC project with empty name."); + continue; + } + + projects.Set(std::move(project)); + } + + return projects; +} + +MiningProjectMap::const_iterator MiningProjectMap::begin() const +{ + return m_projects.begin(); +} + +MiningProjectMap::const_iterator MiningProjectMap::end() const +{ + return m_projects.end(); +} + +MiningProjectMap::size_type MiningProjectMap::size() const +{ + return m_projects.size(); +} + +bool MiningProjectMap::empty() const +{ + return m_projects.empty(); +} + +ProjectOption MiningProjectMap::Try(const std::string& name) const +{ + const auto iter = m_projects.find(name); + + if (iter == m_projects.end()) { + return boost::none; + } + + return iter->second; +} + +void MiningProjectMap::Set(MiningProject project) +{ + m_projects.emplace(project.m_name, std::move(project)); +} + +void MiningProjectMap::ApplyTeamWhitelist(const std::set& teams) +{ + for (auto& project_pair : m_projects) { + MiningProject& project = project_pair.second; + + switch (project.m_error) { + case MiningProject::Error::NONE: + if (!teams.empty() && !teams.count(project.m_team)) { + project.m_error = MiningProject::Error::INVALID_TEAM; + } + break; + case MiningProject::Error::INVALID_TEAM: + if (teams.empty() || teams.count(project.m_team)) { + project.m_error = MiningProject::Error::NONE; + } + break; + default: + continue; + } + } +} + +// ----------------------------------------------------------------------------- +// Class: Researcher +// ----------------------------------------------------------------------------- + +Researcher::Researcher() + : m_mining_id(MiningId::ForInvestor()) +{ +} + +Researcher::Researcher(MiningId mining_id, MiningProjectMap projects) + : m_mining_id(std::move(mining_id)) + , m_projects(std::move(projects)) +{ +} + +std::string Researcher::Email() +{ + std::string email = GetArgument("email", ""); + boost::to_lower(email); + + return email; +} + +ResearcherPtr Researcher::Get() +{ + return std::atomic_load(&researcher); +} + +void Researcher::Reload() +{ + if (ConfiguredForInvestorMode()) { + StoreResearcher(Researcher()); // Investor + return; + } + + LogPrintf("Loading BOINC CPIDs..."); + + if (!GetArgument("boinckey", "").empty()) { + // TODO: implement a safer way to export researcher context that does + // not risk accidental exposure of an internal CPID and email address. + LogPrintf("WARNING: boinckey is no longer supported."); + } + + Reload(MiningProjectMap::Parse(FetchProjectsXml())); +} + +void Researcher::Reload(MiningProjectMap projects) +{ + const std::set team_whitelist = GetTeamWhitelist(); + + if (team_whitelist.empty()) { + LogPrintf("BOINC team requirement inactive at last known block."); + } else { + LogPrintf( + "BOINC team requirement active at last known block. Whitelist: %s", + boost::algorithm::join(team_whitelist, ", ")); + } + + projects.ApplyTeamWhitelist(team_whitelist); + + MiningId mining_id = MiningId::ForInvestor(); + + for (const auto& project_pair : projects) { + TryProjectCpid(mining_id, project_pair.second); + } + + if (const CpidOption cpid = mining_id.TryCpid()) { + DetectSplitCpid(projects); + LogPrintf("Selected primary CPID: %s", cpid->ToString()); + } else if (!projects.empty()) { + LogPrintf("WARNING: no projects eligible for research rewards."); + } + + StoreResearcher(Researcher(std::move(mining_id), std::move(projects))); +} + +void Researcher::Refresh() +{ + Reload(Get()->m_projects); +} + +const MiningId& Researcher::Id() const +{ + return m_mining_id; +} + +const MiningProjectMap& Researcher::Projects() const +{ + return m_projects; +} + +ProjectOption Researcher::Project(const std::string& name) const +{ + return m_projects.Try(name); +} + +bool Researcher::Eligible() const +{ + return m_mining_id.Which() == MiningId::Kind::CPID; +} + +bool Researcher::IsInvestor() const +{ + return !Eligible(); +} + +ResearcherStatus Researcher::Status() const +{ + if (Eligible()) { + return ResearcherStatus::ACTIVE; + } + + if (!m_projects.empty()) { + return ResearcherStatus::NO_PROJECTS; + } + + return ResearcherStatus::INVESTOR; +} diff --git a/src/neuralnet/researcher.h b/src/neuralnet/researcher.h new file mode 100644 index 0000000000..056f6c7107 --- /dev/null +++ b/src/neuralnet/researcher.h @@ -0,0 +1,330 @@ +#pragma once + +#include "neuralnet/cpid.h" + +#include +#include +#include +#include +#include + +namespace NN { +//! +//! \brief Describes the eligibility status for earning rewards as part of the +//! Proof-of-Research protocol. +//! +enum class ResearcherStatus +{ + INVESTOR, //!< BOINC not present; ineligible for research rewards. + ACTIVE, //!< CPID eligible for research rewards. + NO_PROJECTS, //!< BOINC present, but no eligible projects (investor). +}; + +//! +//! \brief Represents a local BOINC project loaded from client_state.xml. +//! +struct MiningProject +{ + //! + //! \brief Describes why a project is ineligible for Proof-of-Research + //! rewards. + //! + //! Note: we're only showing one error at a time. Later, we could store + //! these values in a bit field to track multiple errors simultaneously. + //! + enum class Error + { + NONE, //!< Eligible project; no errors. + INVALID_TEAM, //!< Project not joined to a whitelisted team. + MALFORMED_CPID, //!< Failed to parse a valid external CPID. + MISMATCHED_CPID, //!< External CPID failed internal CPID + email test. + }; + + //! + //! \brief Initialize a mining project object with fields extracted from + //! a project element in BOINC's client_state.xml file. + //! + //! \param name Project name from the \c element. + //! \param cpid External CPID parsed from the \c element. + //! \param team Associated team parsed from the \c element. + //! + MiningProject(std::string name, Cpid cpid, std::string team); + + //! + //! \brief Initialize a MiningProject instance by parsing the project XML + //! from BOINC's client_state.xml file. + //! + //! \param xml Contains project data within a \c ... + //! element. + //! + static MiningProject Parse(const std::string& xml); + + std::string m_name; //!< Normalized project name. + Cpid m_cpid; //!< CPID of the BOINC account for the project. + std::string m_team; //!< Name of the team joined for the project. + Error m_error; //!< May describe why a project is ineligible. + + //! + //! \brief Determine whether the project is eligible for reward. + //! + //! \return \c true if the project represents a BOINC account with a valid + //! CPID joined to a whitelisted team. + //! + bool Eligible() const; + + //! + //! \brief Get a friendly, human-readable message that describes why the + //! project is ineligible. + //! + //! \return The message as a string with any available localization applied. + //! + std::string ErrorMessage() const; +}; + +//! +//! \brief An optional type that either contains a reference to some local BOINC +//! project or does not. +//! +typedef boost::optional ProjectOption; + +//! +//! \brief Contains a local set of BOINC projects loaded from client_state.xml. +//! +//! This is a map keyed by normalized project names. The container will ignore +//! insertion of a project with the same name as an existing project. +//! +class MiningProjectMap +{ + using ProjectStorage = std::map; + +public: + typedef ProjectStorage::size_type size_type; + typedef ProjectStorage::iterator iterator; + typedef ProjectStorage::const_iterator const_iterator; + + //! + //! \brief Initialize an empty BOINC project map. + //! + MiningProjectMap(); + + //! + //! \brief Parse the supplied collection of BOINC project XML sections into + //! a new project map instance. + //! + //! \param xml Each element contains a project's XML data as parsed from + //! BOINC's client_state.xml file. + //! + //! \return A new map with data for the local BOINC projects used to select + //! an eligible CPID from. Must be filtered for team eligibility. + //! + static MiningProjectMap Parse(const std::vector& xml); + + //! + //! \brief Returns an iterator to the beginning. + //! + const_iterator begin() const; + + //! + //! \brief Returns an iterator to the end. + //! + const_iterator end() const; + + //! + //! \brief Get the number of projects loaded from BOINC. + //! + size_type size() const; + + //! + //! \brief Determine whether the map contains any projects. + //! + bool empty() const; + + //! + //! \brief Try to get the loaded BOINC project with the specified name. + //! + //! \param name The lowercase name of the BOINC project as it would exist + //! in client_state.xml with underscores replaced by spaces. + //! + //! \return An object that contains a reference to the matching BOINC + //! project if it exists. + //! + ProjectOption Try(const std::string& name) const; + + //! + //! \brief Add the provided project to the map or replace an existing + //! project with the same name. + //! + //! \param project BOINC project properties loaded from client_state.xml. + //! + void Set(MiningProject project); + + //! + //! \brief Set the eligibility status of the projects in the map based + //! on their association with the provided set of teams. + //! + //! \param teams The set of whitelisted teams to validate the provided + //! project's team against or an empty container when the + //! protocol team requirement is disabled. + //! + void ApplyTeamWhitelist(const std::set& teams); + +private: + //! + //! \brief Stores the local BOINC projects loaded from client_state.xml. + //! + ProjectStorage m_projects; +}; // MiningProjectMap + +class Researcher; // forward for ResearcherPtr + +//! +//! \brief A smart pointer around the global BOINC researcher context. +//! +typedef std::shared_ptr ResearcherPtr; + +//! +//! \brief Manages the global BOINC researcher context. +//! +//! This class governs a singleton that contains the global BOINC context set +//! for the application to participate in the Proof-of-Research protocol. The +//! class creates the context by reading BOINC's client_state.xml file on the +//! local computer to extract a CPID used to associate the wallet to accounts +//! on the BOINC platform. +//! +//! Thread safety: the API currently requires a lock on \c cs_main to reload +//! the BOINC context because it sets some legacy global variables. After it +//! finishes, the API is immutable. The reload operation stores a pointer to +//! the singleton object atomically. +//! +class Researcher +{ +public: + //! + //! \brief Initialize the researcher context to an investor. + //! + Researcher(); + + //! + //! \brief Initialize a researcher context with a mining ID and a set of + //! local projects. + //! + //! \param mining_id Represents a CPID or an investor. + //! \param projects A set of local projects loaded from BOINC. + //! + Researcher(MiningId mining_id, MiningProjectMap projects); + + //! + //! \brief Get the configured BOINC account email address. + //! + //! \return Lowercase BOINC email address as set in the configuration file. + //! + static std::string Email(); + + //! + //! \brief Get the current global researcher context. + //! + //! \return A smart pointer around the current \c Researcher object. + //! + static ResearcherPtr Get(); + + //! + //! \brief Reload the wallet's researcher mining context from BOINC. + //! + //! This method attempts to read BOINC's client_state.xml file to gather + //! CPIDs used to establish the wallet's eligibility to generate rewards + //! in the Proof-of-Research protocol. If BOINC is authenticated with at + //! least one eligible project, the call will set the BOINC context used + //! to mint blocks that claim Proof-of-Research rewards. Otherwise, this + //! method resets the wallet's mining context to investor mode. + //! + static void Reload(); + + //! + //! \brief Reload the wallet's researcher mining context from the supplied + //! collection of BOINC project data. + //! + //! \param projects Data for one or more projects as loaded from BOINC's + //! client_state.xml file. + //! + static void Reload(MiningProjectMap projects); + + //! + //! \brief Rescan the set of in-memory projects for eligible CPIDs without + //! reloading the projects from disk. + //! + //! This method provides a hook for dynamic protocol configuration messages + //! that update eligibility of local CPIDs. For example, when the receiving + //! a protocol directive that enables or disables the team requirement, the + //! application calls this method to update the researcher context with any + //! newly eligible or ineligible CPIDs. + //! + static void Refresh(); + + //! + //! \brief Get the primary mining ID that identifies the owner of the wallet. + //! + //! \return Contains a CPID or represents an investor. + //! + const MiningId& Id() const; + + //! + //! \brief Get the local BOINC projects loaded from client_state.xml. + //! + //! \return A map of local BOINC projects keyed by name. + //! + const MiningProjectMap& Projects() const; + + //! + //! \brief Try to get the loaded BOINC project with the specified name. + //! + //! \param name The lowercase name of the BOINC project as it would exist + //! in client_state.xml with underscores replaced by spaces. + //! + //! \return An object that contains a reference to the matching BOINC + //! project if it exists. + //! + ProjectOption Project(const std::string& name) const; + + //! + //! \brief Determine whether the wallet loaded BOINC projects eligible for + //! Proof-of-Research rewards. + //! + //! \return \c true if the wallet loaded at least one project with a valid + //! CPID and team membership (if team requirement active). + //! + bool Eligible() const; + + //! + //! \brief Determine whether the wallet will attempt to stake for rewards + //! in investor mode only. + //! + //! \return \c true if the wallet loaded no eligible BOINC projects or it + //! is configured to start in investor mode. + //! + bool IsInvestor() const; + + //! + //! \brief Get a value that indicates how the wallet participates in the + //! Proof-of-Research protocol. + //! + //! \return The status depends on whether the wallet successfully loaded + //! eligible CPIDs from BOINC. + //! + ResearcherStatus Status() const; + +private: + MiningId m_mining_id; //!< CPID or INVESTOR variant. + MiningProjectMap m_projects; //!< Local projects loaded from BOINC. +}; // Researcher + +//! +//! \brief Get the primary CPID selected from BOINC's client_state.xml file. +//! +//! This is a temporary, transitional function for areas of code that expect +//! a CPID as a string and replaces the global msPrimaryCPID variable. +//! +//! \return String representation of the MiningId stored in the researcher +//! context ("INVESTOR" or an external CPID). +//! +std::string GetPrimaryCpid(); +} diff --git a/src/neuralnet/superblock.cpp b/src/neuralnet/superblock.cpp new file mode 100644 index 0000000000..f7ea32af2b --- /dev/null +++ b/src/neuralnet/superblock.cpp @@ -0,0 +1,789 @@ +#include "compat/endian.h" +#include "neuralnet/superblock.h" +#include "util.h" + +#include +#include + +using namespace NN; + +std::string ExtractXML(const std::string& XMLdata, const std::string& key, const std::string& key_end); +std::string ExtractValue(std::string data, std::string delimiter, int pos); + +namespace { +//! +//! \brief Parses and unpacks superblock data from legacy superblock contracts. +//! +//! Legacy superblock string contracts contain the following XML-like elements +//! with records delimited by semicolons and fields delimited by commas: +//! +//! EXTERNAL_CPID,MAGNITUDE;... +//! PROJECT_NAME,AVERAGE_RAC,RAC;... +//! CURRENCY_CODE,PRICE;... +//! +//! The application no longer supports the vestigial price quotes so these are +//! not parsed by this class. +//! +//! Newer, binary-packed legacy contracts replace ... +//! elements with these sections to conserve space: +//! +//! COUNT +//! PACKED_DATA... +//! +//! ...where PACKED_DATA are the binary representations of alternating 16-byte +//! external CPID values and 2-byte (16-bit) magnitudes. The COUNT placeholder +//! tallies the number of zero-magnitude CPIDs omitted from the contract. +//! +class LegacySuperblockParser +{ +public: + std::string m_magnitudes; //!< Mapping of CPIDs to magnitudes. + std::string m_binary_magnitudes; //!< Packed mapping of CPIDs to magnitudes. + std::string m_averages; //!< Project RACs and average RACs. + int32_t m_zero_mags; //!< Count of CPIDs with zero magnitude. + + //! + //! \brief Initialize a parser from a legacy superblock contract. + //! + //! \param packed Legacy superblock contract to extract data from. The CPID + //! magnitude records may exist as text or in a packed binary format. + //! + LegacySuperblockParser(const std::string& packed) + : m_magnitudes(ExtractXML(packed, "", "")) + , m_binary_magnitudes(ExtractXML(packed, "", "")) + , m_averages(ExtractXML(packed, "", "")) + , m_zero_mags(0) + { + try { + m_zero_mags = std::stoi(ExtractXML(packed, "", "")); + } catch (...) { + LogPrintf("LegacySuperblock: Failed to parse zero mag CPIDs"); + } + } + + //! + //! \brief Parse project recent average credit and average RAC from the + //! legacy superblock data. + //! + //! \return Superblock project statistics to set on a superblock instance. + //! + Superblock::ProjectIndex ExtractProjects() const + { + Superblock::ProjectIndex projects; + size_t start = 0; + size_t end = m_averages.find(";"); + + while (end != std::string::npos) { + std::string project_record = m_averages.substr(start, end - start); + std::vector parts = split(project_record, ","); + + start = end + 1; + end = m_averages.find(";", start); + + if (parts.size() < 2 + || parts[0].empty() + || parts[0] == "NeuralNetwork") // Ignore network stats + { + continue; + } + + try { + projects.Add(std::move(parts[0]), Superblock::ProjectStats( + std::stoi(parts[1]), // average RAC + parts.size() > 2 ? std::stoi(parts[2]) : 0)); // RAC + + } catch (...) { + LogPrintf("ExtractProjects(): Failed to parse project RAC."); + } + } + + return projects; + } + + //! + //! \brief Parse CPID magnitudes from the legacy superblock data. + //! + //! \return Superblock CPID map to set on a superblock instance. + //! + Superblock::CpidIndex ExtractMagnitudes() const + { + if (!m_binary_magnitudes.empty()) { + return ExtractBinaryMagnitudes(); + } + + return ExtractTextMagnitudes(); + } + +private: + //! + //! \brief Unpack CPID magnitudes stored in binary format. + //! + //! \return Superblock CPID map to set on a superblock instance. + //! + Superblock::CpidIndex ExtractBinaryMagnitudes() const + { + Superblock::CpidIndex magnitudes(m_zero_mags); + + const char* const byte_ptr = m_binary_magnitudes.data(); + const size_t binary_size = m_binary_magnitudes.size(); + + for (size_t x = 0; x < binary_size && binary_size - x >= 18; x += 18) { + magnitudes.Add( + *reinterpret_cast(byte_ptr + x), + be16toh(*reinterpret_cast(byte_ptr + x + 16))); + } + + return magnitudes; + } + + //! + //! \brief Parse CPID magnitudes stored as text. + //! + //! \return Superblock CPID map to set on a superblock instance. + //! + Superblock::CpidIndex ExtractTextMagnitudes() const + { + Superblock::CpidIndex magnitudes(m_zero_mags); + + size_t start = 0; + size_t end = m_magnitudes.find(";"); + + while (end != std::string::npos) { + std::string cpid_record = m_magnitudes.substr(start, end - start); + std::vector parts = split(cpid_record, ","); + + start = end + 1; + end = m_magnitudes.find(";", start); + + if (parts.size() != 2 || parts[0].empty()) { + continue; + } + + try { + magnitudes.Add(MiningId::Parse(parts[0]), std::stoi(parts[1])); + } catch(...) { + LogPrintf("ExtractTextMagnitude(): Failed to parse magnitude."); + } + } + + return magnitudes; + } +}; // LegacySuperblockParser + +//! +//! \brief Gets the string representation of a quorum hash object. +//! +struct QuorumHashToStringVisitor : boost::static_visitor +{ + //! + //! \brief Get the string representation of an invalid or empty quorum hash. + //! + //! \param invalid The object to create a string for. + //! + //! \return An empty string. + //! + std::string operator()(const QuorumHash::Invalid invalid) const + { + return std::string(); + } + + //! + //! \brief Get the string representation of a SHA256 quorum hash. + //! + //! \param hash The object to create a string for. + //! + //! \return 64-character hex-encoded representation of bytes in the hash. + //! + std::string operator()(const uint256& hash) const + { + return hash.ToString(); + } + + //! + //! \brief Get the string representation of a legacy MD5 quorum hash. + //! + //! \param legacy_hash The object to create a string for. + //! + //! \return 32-character hex-encoded representation of bytes in the hash. + //! + std::string operator()(const QuorumHash::Md5Sum& legacy_hash) const + { + return HexStr(legacy_hash.begin(), legacy_hash.end()); + } +}; + +struct BinaryResearcher +{ + std::array cpid; + int16_t magnitude; +}; + +// Ensure that the compiler does not add padding between the cpid and the +// magnitude. If it does it does it to align the data, at which point the +// pointer cast in UnpackBinarySuperblock will be illegal. In such a +// case we will have to resort to a slower unpack. +static_assert(offsetof(struct BinaryResearcher, magnitude) == + sizeof(struct BinaryResearcher) - sizeof(int16_t), + "Unexpected padding in BinaryResearcher"); +} // anonymous namespace + +// ----------------------------------------------------------------------------- +// Functions +// ----------------------------------------------------------------------------- + +std::string UnpackBinarySuperblock(std::string sBlock) +{ + // 12-21-2015: R HALFORD: If the block is not binary, return the legacy format for backward compatibility + std::string sBinary = ExtractXML(sBlock,"",""); + if (sBinary.empty()) return sBlock; + + std::ostringstream stream; + stream << "" << ExtractXML(sBlock,"","") << "" + << "" << ExtractXML(sBlock,"","") << "" + << ""; + + // Binary data support structure: + // Each CPID consumes 16 bytes and 2 bytes for magnitude: (Except CPIDs with zero magnitude - the count of those is stored in XML node to save space) + // 1234567890123456MM + // MM = Magnitude stored as 2 bytes + // No delimiter between CPIDs, Step Rate = 18. + // CPID and magnitude are stored in big endian. + for (unsigned int x = 0; x < sBinary.length(); x += 18) + { + if(sBinary.length() - x < 18) + break; + + const BinaryResearcher* researcher = reinterpret_cast(sBinary.data() + x); + stream << HexStr(researcher->cpid.begin(), researcher->cpid.end()) << "," + << be16toh(researcher->magnitude) << ";"; + } + + // Append zero magnitude researchers so the beacon count matches + int num_zero_mag = atoi(ExtractXML(sBlock,"","")); + const std::string zero_entry("0,15;"); + for(int i=0; i"; + return stream.str(); +} + +std::string PackBinarySuperblock(std::string sBlock) +{ + std::string sMagnitudes = ExtractXML(sBlock,"",""); + + // For each CPID in the superblock, convert data to binary + std::stringstream stream; + int64_t num_zero_mag = 0; + for (auto& entry : split(sMagnitudes.c_str(), ";")) + { + if (entry.length() < 1) + continue; + + const std::vector& binary_cpid = ParseHex(entry); + if(binary_cpid.size() < 16) + { + ++num_zero_mag; + continue; + } + + BinaryResearcher researcher; + std::copy_n(binary_cpid.begin(), researcher.cpid.size(), researcher.cpid.begin()); + + // Ensure we do not blow out the binary space (technically we can handle 0-65535) + double magnitude_d = strtod(ExtractValue(entry, ",", 1).c_str(), NULL); + // Changed to 65535 for the new NN. This will still be able to be successfully unpacked by any node. + magnitude_d = std::max(0.0, std::min(magnitude_d, 65535.0)); + researcher.magnitude = htobe16(roundint(magnitude_d)); + + stream.write((const char*) &researcher, sizeof(BinaryResearcher)); + } + + std::stringstream block_stream; + block_stream << "" << num_zero_mag << "" + "" << stream.rdbuf() << "" + "" << ExtractXML(sBlock,"","") << "" + "" << ExtractXML(sBlock,"","") << ""; + return block_stream.str(); +} + +// ----------------------------------------------------------------------------- +// Class: Superblock +// ----------------------------------------------------------------------------- + +Superblock::Superblock() + : m_version(Superblock::CURRENT_VERSION) + , m_height(0) + , m_timestamp(0) +{ +} + +Superblock::Superblock(uint32_t version) + : m_version(version) + , m_height(0) + , m_timestamp(0) +{ +} + +Superblock Superblock::FromStats(const ScraperStats& stats) +{ + // The loop below depends on the relative value of these enum types: + static_assert(statsobjecttype::NetworkWide < statsobjecttype::byCPID, + "Unexpected enumeration order of scraper stats map object types."); + static_assert(statsobjecttype::byCPID < statsobjecttype::byCPIDbyProject, + "Unexpected enumeration order of scraper stats map object types."); + static_assert(statsobjecttype::byProject < statsobjecttype::byCPIDbyProject, + "Unexpected enumeration order of scraper stats map object types."); + + Superblock superblock; + + for (const auto& entry : stats) { + // A CPID, project name, or project name/CPID pair that identifies the + // current statistics record: + const std::string& object_id = entry.first.objectID; + + switch (entry.first.objecttype) { + case statsobjecttype::NetworkWide: + // This map starts with a single, network-wide statistics entry. + // Skip it because superblock objects will recalculate the stats + // as needed after deserialization. + // + continue; + + case statsobjecttype::byCPID: + superblock.m_cpids.Add( + Cpid::Parse(object_id), + std::round(entry.second.statsvalue.dMag)); + + break; + + case statsobjecttype::byProject: + superblock.m_projects.Add(object_id, ProjectStats( + std::round(entry.second.statsvalue.dTC), + std::round(entry.second.statsvalue.dAvgRAC), + std::round(entry.second.statsvalue.dRAC))); + + break; + + default: + // The scraper statistics map orders the entries by "objecttype" + // starting with "byCPID" and "byProject". After importing these + // sections into the superblock, we can exit this loop. + // + return superblock; + } + } + + return superblock; +} + +Superblock Superblock::UnpackLegacy(const std::string& packed) +{ + // Legacy-packed superblocks always initialize to version 1: + Superblock superblock(1); + LegacySuperblockParser legacy(packed); + + superblock.m_cpids = legacy.ExtractMagnitudes(); + superblock.m_projects = legacy.ExtractProjects(); + + return superblock; +} + +std::string Superblock::PackLegacy() const +{ + std::stringstream out; + + out << "" << m_cpids.Zeros() << "" + << ""; + + for (const auto& cpid_pair : m_cpids) { + uint16_t mag = htobe16(cpid_pair.second); + + out.write(reinterpret_cast(cpid_pair.first.Raw().data()), 16); + out.write(reinterpret_cast(&mag), sizeof(uint16_t)); + } + + out << "" + << ""; + + for (const auto& project_pair : m_projects) { + out << project_pair.first << "," + << project_pair.second.m_average_rac << "," + << project_pair.second.m_rac << ";"; + } + + out << "" + << ""; + + return out.str(); +} + +int64_t Superblock::Age() const +{ + return GetAdjustedTime() - m_timestamp; +} + +// ----------------------------------------------------------------------------- +// Class: Superblock::CpidIndex +// ----------------------------------------------------------------------------- + +Superblock::CpidIndex::CpidIndex() + : m_zero_magnitude_count(0) + , m_total_magnitude(0) + , m_legacy(false) +{ +} + +Superblock::CpidIndex::CpidIndex(uint32_t zero_magnitude_count) + : m_zero_magnitude_count(zero_magnitude_count) + , m_total_magnitude(0) + , m_legacy(true) +{ +} + +Superblock::CpidIndex::const_iterator Superblock::CpidIndex::begin() const +{ + return m_magnitudes.begin(); +} + +Superblock::CpidIndex::const_iterator Superblock::CpidIndex::end() const +{ + return m_magnitudes.end(); +} + +Superblock::CpidIndex::size_type Superblock::CpidIndex::size() const +{ + return m_magnitudes.size(); +} + +bool Superblock::CpidIndex::empty() const +{ + return m_magnitudes.empty(); +} + +uint32_t Superblock::CpidIndex::Zeros() const +{ + return m_zero_magnitude_count; +} + +size_t Superblock::CpidIndex::TotalCount() const +{ + return m_magnitudes.size() + m_zero_magnitude_count; +} + +uint64_t Superblock::CpidIndex::TotalMagnitude() const +{ + return m_total_magnitude; +} + +double Superblock::CpidIndex::AverageMagnitude() const +{ + if (m_magnitudes.empty()) { + return 0; + } + + return static_cast(m_total_magnitude) / m_magnitudes.size(); +} + +uint16_t Superblock::CpidIndex::MagnitudeOf(const Cpid& cpid) const +{ + const auto iter = m_magnitudes.find(cpid); + + if (iter == m_magnitudes.end()) { + return 0; + } + + return iter->second; +} + +size_t Superblock::CpidIndex::OffsetOf(const Cpid& cpid) const +{ + const auto iter = m_magnitudes.find(cpid); + + if (iter == m_magnitudes.end()) { + return m_magnitudes.size(); + } + + // Not very efficient--we can optimize this if needed: + return std::distance(m_magnitudes.begin(), iter); +} + +Superblock::CpidIndex::const_iterator +Superblock::CpidIndex::At(const size_t offset) const +{ + // Not very efficient--we can optimize this if needed: + return std::next(m_magnitudes.begin(), offset); +} + +void Superblock::CpidIndex::Add(const Cpid cpid, const uint16_t magnitude) +{ + if (magnitude > 0 || m_legacy) { + // Only increment the total magnitude if the CPID does not already + // exist in the index: + if (m_magnitudes.emplace(cpid, magnitude).second == true) { + m_total_magnitude += magnitude; + } + } else { + m_zero_magnitude_count++; + } +} + +void Superblock::CpidIndex::Add(const MiningId id, const uint16_t magnitude) +{ + if (const CpidOption cpid = id.TryCpid()) { + Add(*cpid, magnitude); + } else if (!m_legacy) { + m_zero_magnitude_count++; + } +} + +// ----------------------------------------------------------------------------- +// Class: Superblock::ProjectStats +// ----------------------------------------------------------------------------- + +Superblock::ProjectStats::ProjectStats() + : m_total_credit(0) + , m_average_rac(0) + , m_rac(0) +{ +} + +Superblock::ProjectStats::ProjectStats( + uint64_t total_credit, + uint64_t average_rac, + uint64_t rac) + : m_total_credit(total_credit) + , m_average_rac(average_rac) + , m_rac(rac) +{ +} + +Superblock::ProjectStats::ProjectStats(uint64_t average_rac, uint64_t rac) + : m_total_credit(0) + , m_average_rac(average_rac) + , m_rac(rac) +{ +} + +// ----------------------------------------------------------------------------- +// Class: Superblock::ProjectIndex +// ----------------------------------------------------------------------------- + +Superblock::ProjectIndex::ProjectIndex() : m_total_rac(0) +{ +} + +Superblock::ProjectIndex::const_iterator Superblock::ProjectIndex::begin() const +{ + return m_projects.begin(); +} + +Superblock::ProjectIndex::const_iterator Superblock::ProjectIndex::end() const +{ + return m_projects.end(); +} + +Superblock::ProjectIndex::size_type Superblock::ProjectIndex::size() const +{ + return m_projects.size(); +} + +bool Superblock::ProjectIndex::empty() const +{ + return m_projects.empty(); +} + +uint64_t Superblock::ProjectIndex::TotalRac() const +{ + return m_total_rac; +} + +double Superblock::ProjectIndex::AverageRac() const +{ + if (m_projects.empty()) { + return 0; + } + + return static_cast(m_total_rac) / m_projects.size(); +} + +Superblock::ProjectStatsOption +Superblock::ProjectIndex::Try(const std::string& name) const +{ + const auto iter = m_projects.find(name); + + if (iter == m_projects.end()) { + return boost::none; + } + + return iter->second; +} + +void Superblock::ProjectIndex::Add(std::string name, const ProjectStats& stats) +{ + if (name.empty()) { + return; + } + + // Only increment the total RAC if the project does not already exist in + // the index: + if (m_projects.emplace(std::move(name), stats).second == true) { + m_total_rac += stats.m_rac; + } +} + +// ----------------------------------------------------------------------------- +// Class: QuorumHash +// ----------------------------------------------------------------------------- + +static_assert(sizeof(uint256) == 32, "Unexpected uint256 size."); +static_assert(sizeof(QuorumHash::Md5Sum) == 16, "Unexpected MD5 size."); + +QuorumHash::QuorumHash() : m_hash(Invalid()) +{ +} + +QuorumHash::QuorumHash(uint256 hash) : m_hash(hash) +{ +} + +QuorumHash::QuorumHash(Md5Sum legacy_hash) : m_hash(legacy_hash) +{ +} + +QuorumHash::QuorumHash(const std::vector& bytes) : QuorumHash() +{ + if (bytes.size() == sizeof(uint256)) { + m_hash = uint256(bytes); + } else if (bytes.size() == sizeof(Md5Sum)) { + m_hash = Md5Sum(); + std::copy(bytes.begin(), bytes.end(), boost::get(m_hash).begin()); + } +} + +QuorumHash QuorumHash::Hash(const Superblock& superblock) +{ + if (superblock.m_version > 1) { + return QuorumHash(SerializeHash(superblock)); + } + + std::string input; + input.reserve(superblock.m_cpids.size() * (32 + 1 + 5 + 5)); + + for (const auto& cpid_pair : superblock.m_cpids) { + double dMagLength = RoundToString(cpid_pair.second, 0).length(); + double dExponent = pow(dMagLength, 5); + + input += cpid_pair.first.ToString(); + input += RoundToString(cpid_pair.second / (dExponent + .01), 0); + input += RoundToString(dMagLength * dExponent, 0); + input += ""; + } + + Md5Sum output; + MD5((const unsigned char*)input.data(), input.size(), output.data()); + + return QuorumHash(output); +} + +QuorumHash QuorumHash::Parse(const std::string& hex) +{ + if (hex.size() != sizeof(uint256) * 2 && hex.size() != sizeof(Md5Sum) * 2) { + return QuorumHash(); + } + + return QuorumHash(ParseHex(hex)); +} + +bool QuorumHash::operator==(const QuorumHash& other) const +{ + if (m_hash.which() != other.m_hash.which()) { + return false; + } + + switch (Which()) { + case Kind::INVALID: + return true; + + case Kind::SHA256: + return boost::get(m_hash) + == boost::get(other.m_hash); + + case Kind::MD5: + return boost::get(m_hash) + == boost::get(other.m_hash); + } + + return false; +} + +bool QuorumHash::operator!=(const QuorumHash& other) const +{ + return !(*this == other); +} + +bool QuorumHash::operator==(const uint256& other) const +{ + return Which() == Kind::SHA256 + && boost::get(m_hash) == other; +} + +bool QuorumHash::operator!=(const uint256& other) const +{ + return !(*this == other); +} + +bool QuorumHash::operator==(const std::string& other) const +{ + switch (Which()) { + case Kind::INVALID: + return other.empty(); + + case Kind::SHA256: + return other.size() == sizeof(uint256) * 2 + && boost::get(m_hash) == uint256(other); + + case Kind::MD5: + return other.size() == sizeof(Md5Sum) * 2 + && std::equal( + boost::get(m_hash).begin(), + boost::get(m_hash).end(), + ParseHex(other).begin()); + } + + return false; +} + +bool QuorumHash::operator!=(const std::string&other) const +{ + return !(*this == other); +} + +QuorumHash::Kind QuorumHash::Which() const +{ + return static_cast(m_hash.which()); +} + +bool QuorumHash::Valid() const +{ + return Which() != Kind::INVALID; +} + +const unsigned char* QuorumHash::Raw() const +{ + switch (Which()) { + case Kind::INVALID: + return nullptr; + case Kind::SHA256: + return boost::get(m_hash).begin(); + case Kind::MD5: + return boost::get(m_hash).data(); + } + + return nullptr; +} + +std::string QuorumHash::ToString() const +{ + return boost::apply_visitor(QuorumHashToStringVisitor(), m_hash); +} diff --git a/src/neuralnet/superblock.h b/src/neuralnet/superblock.h new file mode 100644 index 0000000000..889bef31ca --- /dev/null +++ b/src/neuralnet/superblock.h @@ -0,0 +1,741 @@ +#pragma once + +#include "neuralnet/cpid.h" +#include "serialize.h" +#include "scraper/fwd.h" +#include "uint256.h" + +#include +#include +#include + +std::string UnpackBinarySuperblock(std::string block); +std::string PackBinarySuperblock(std::string sBlock); + +namespace NN { +class QuorumHash; // Forward for Superblock + +//! +//! \brief A snapshot of BOINC statistics used to calculate and verify research +//! rewards. +//! +//! About once per day, the Gridcoin network produces a superblock that contains +//! the magnitudes of active CPIDs. The superblocks embed into the block chain a +//! subset of data contained in the converged statistics emitted via the scraper +//! nodes. Regular nodes then use the statistics to calculate and verify rewards +//! claimed for BOINC computing work in generated blocks following a superblock. +//! +class Superblock +{ +public: + //! + //! \brief Version number of the current format for a serialized superblock. + //! + //! CONSENSUS: Increment this value when introducing a breaking change and + //! ensure that the serialization/deserialization routines also handle all + //! of the previous versions. + //! + static constexpr uint32_t CURRENT_VERSION = 2; + + //! + //! \brief Contains the CPID statistics aggregated for all projects. + //! + //! To conserve space in a serialized superblock, other sections refer to + //! CPIDs by numeric offsets of the items stored in this index instead of + //! storing the CPID values themselves. + //! + struct CpidIndex + { + typedef std::map::size_type size_type; + typedef std::map::iterator iterator; + typedef std::map::const_iterator const_iterator; + + //! + //! \brief Initialize an empty CPID index. + //! + CpidIndex(); + + //! + //! \brief Initialize an empty CPID index for a legacy superblock with + //! the number of zero-magnitude CPIDs. + //! + //! This initializes the object in legacy mode for superblock contract + //! strings that contain the number of zero-magnitude CPIDs. The index + //! will not imilicitly count and filter inserted zero-magnitude CPIDs + //! so that a legacy quorum hash matches that of the string contract. + //! + //! \param zero_magnitude_count Number of zero-magnitude CPIDs omitted + //! from the superblock. + //! + CpidIndex(uint32_t zero_magnitude_count); + + //! + //! \brief Returns an iterator to the beginning. + //! + const_iterator begin() const; + + //! + //! \brief Returns an iterator to the end. + //! + const_iterator end() const; + + //! + //! \brief Get the number of unique CPIDs contained in the superblock + //! that have a magnitude greater than zero. + //! + size_type size() const; + + //! + //! \brief Determine whether the index contains any active CPIDs with a + //! magnitude greater than zero. + //! + bool empty() const; + + //! + //! \brief Get the number of zero-magnitude CPIDs. + //! + //! \return Number of CPIDs with beacons not included in the superblock + //! because they exhibit zero magnitude. + //! + uint32_t Zeros() const; + + //! + //! \brief Get the number of valid CPIDs present at the time that the + //! superblock formed. + //! + //! \return The number of CPIDs, including zero-magnitude CPIDs. + //! + size_t TotalCount() const; + + //! + //! \brief Get the sum of the magnitudes of all the CPIDs in the index. + //! + //! \return Total magnitude at the time of the superblock. + //! + uint64_t TotalMagnitude() const; + + //! + //! \brief Get the average magnitude of all the CPIDs in the index. + //! + //! \return Average magnitude at the time of the superblock. + //! + double AverageMagnitude() const; + + //! + //! \brief Get the network-wide magnitude of the provided CPID. + //! + //! \param cpid The CPID to look-up the magnitude for. + //! + //! \return A magnitude in the range of 0 to 65535. Returns zero if the + //! CPID doesn't exist in the index. + //! + uint16_t MagnitudeOf(const Cpid& cpid) const; + + //! + //! \brief Get the offset of the provided CPID in the index. + //! + //! \param cpid The CPID to look-up the offset for. + //! + //! \return The CPID's zero-based offset if it exists in the index, or + //! the offset after the last element in the index (the index size) if + //! it doesn't. + //! + size_t OffsetOf(const Cpid& cpid) const; + + //! + //! \brief Get the CPID indexed at the specified offset. + //! + //! \param offset Zero-based offset of the CPID to fetch. + //! + //! \return Iterator to the specified CPID if it exists or an iterator + //! to the end of the index if it does not. The iterator points to the + //! CPID/magnitude pair. + //! + const_iterator At(const size_t offset) const; + + //! + //! \brief Add the supplied CPID to the index. + //! + //! This method ignores an attempt to add a duplicate entry if a CPID + //! already exists. + //! + //! \param cpid The CPID to add. + //! \param magnitude Total magnitude to associate with the CPID. + //! + void Add(const Cpid cpid, const uint16_t magnitude); + + //! + //! \brief Add the supplied mining ID to the index if it represents a + //! valid CPID. + //! + //! This method ignores an attempt to add a duplicate entry if a CPID + //! already exists. + //! + //! \param id May contain a CPID. + //! \param magnitude Total magnitude to associate with the CPID. + //! + void Add(const MiningId id, const uint16_t magnitude); + + //! + //! \brief Get the size of the data to serialize. + //! + //! \param nType Target protocol type (network, disk, etc.). + //! \param nVersion Protocol version. + //! + //! \return Size of the data in bytes. + //! + unsigned int GetSerializeSize(int nType, int nVersion) const + { + unsigned int size = GetSizeOfCompactSize(m_magnitudes.size()) + + m_magnitudes.size() * sizeof(Cpid) + + VARINT(m_zero_magnitude_count).GetSerializeSize(); + + for (const auto& cpid_pair : m_magnitudes) { + // Compact size encoding provides better compression for the + // magnitude values than VARINT because most CPIDs have mags + // less than 253: + // + // Note: This encoding imposes an upper limit of MAX_SIZE on + // the encoded value. Magnitudes fall well within the limit. + // + size += GetSizeOfCompactSize(cpid_pair.second); + } + + return size; + } + + //! + //! \brief Serialize the object to the provided stream. + //! + //! \param stream The output stream. + //! \param nType Target protocol type (network, disk, etc.). + //! \param nVersion Protocol version. + //! + template + void Serialize(Stream& stream, int nType, int nVersion) const + { + WriteCompactSize(stream, m_magnitudes.size()); + + for (const auto& cpid_pair : m_magnitudes) { + cpid_pair.first.Serialize(stream, nType, nVersion); + + // Write magnitude using compact-size encoding: + WriteCompactSize(stream, cpid_pair.second); + } + + VARINT(m_zero_magnitude_count).Serialize(stream); + } + + //! + //! \brief Deserialize the object from the provided stream. + //! + //! \param stream The input stream. + //! \param nType Target protocol type (network, disk, etc.). + //! \param nVersion Protocol version. + //! + template + void Unserialize(Stream& stream, int nType, int nVersion) + { + m_magnitudes.clear(); + m_total_magnitude = 0; + + unsigned int size = ReadCompactSize(stream); + + for (size_t i = 0; i < size; i++) { + Cpid cpid; + cpid.Unserialize(stream, nType, nVersion); + + // Read magnitude using compact-size encoding: + uint16_t magnitude = ReadCompactSize(stream); + + m_magnitudes.emplace(cpid, magnitude); + m_total_magnitude += magnitude; + } + + VARINT(m_zero_magnitude_count).Unserialize(stream); + } + + private: + //! + //! \brief Maps external CPIDs to their aggregated statistics. + //! + std::map m_magnitudes; + + //! + //! \brief Contains the number of CPIDs with beacons not included in + //! the superblock because they exhibit zero magnitude. + //! + //! Omitting zero-magnitude CPIDs from superblocks conserves space. + //! + uint32_t m_zero_magnitude_count; + + //! + //! \brief Tally of the sum of the magnitudes of all the CPIDs present + //! in the superblock. + //! + uint64_t m_total_magnitude; + + //! + //! \brief Flag that indicates whether to enable legacy behavior. + //! + //! This flag initializes to \c true when constructing a superblock + //! with a preset zero-magnitude CPID count. + //! + //! Some legacy superblocks contain CPIDs with zero magnitudes. The + //! quorum hash includes these CPIDs, so we load them into the CPID + //! collection instead of incrementing the zero-magnitude counter. + //! + bool m_legacy; + }; // CpidIndex + + //! + //! \brief Contains the statistics associated with a BOINC project. + //! + struct ProjectStats + { + //! + //! \brief Initialize an empty (zero) statistics object. + //! + ProjectStats(); + + //! + //! \brief Initialize an object with the provided statistics. + //! + //! \param total_credit All-time credit produced by the project. + //! \param average_rac Average recent average credit of the project. + //! \param rac Sum of the RAC of all the project CPIDs. + //! + ProjectStats(uint64_t total_credit, uint64_t average_rac, uint64_t rac); + + //! + //! \brief Initialize an object with the provided statistics available + //! in a legacy superblock. + //! + //! \param average_rac Average recent average credit of the project. + //! \param rac Sum of the RAC of all the project CPIDs. + //! + ProjectStats(uint64_t average_rac, uint64_t rac); + + uint64_t m_total_credit; //!< All-time credit produced by the project. + uint64_t m_average_rac; //!< Average project recent average credit. + uint64_t m_rac; //!< Sum of the RAC of all the project CPIDs. + + IMPLEMENT_SERIALIZE + ( + READWRITE(VARINT(m_total_credit)); + READWRITE(VARINT(m_average_rac)); + READWRITE(VARINT(m_rac)); + ) + }; + + //! + //! \brief An optional type that either contains some project statistics or + //! does not. + //! + typedef boost::optional ProjectStatsOption; + + //! + //! \brief Contains aggregated project statistics. + //! + class ProjectIndex + { + public: + typedef std::map::size_type size_type; + typedef std::map::iterator iterator; + typedef std::map::const_iterator const_iterator; + + //! + //! \brief Initialize an empty project index. + //! + ProjectIndex(); + + //! + //! \brief Returns an iterator to the beginning. + //! + const_iterator begin() const; + + //! + //! \brief Returns an iterator to the end. + //! + const_iterator end() const; + + //! + //! \brief Get the number of projects contained in the superblock. + //! + size_type size() const; + + //! + //! \brief Determine whether the index contains any projects. + //! + bool empty() const; + + //! + //! \brief Get the sum of the recent average credit of all the projects + //! on the whitelist. + //! + //! \return Total project RAC at the time of the superblock. + //! + uint64_t TotalRac() const; + + //! + //! \brief Get the average recent average credit of all the projects on + //! the whitelist. + //! + //! \return Average project RAC at the time of the superblock. + //! + double AverageRac() const; + + //! + //! \brief Try to get the project statistics for a project with the + //! specified name. + //! + //! \param name As it exists in the current whitelist. + //! + //! \return An object that contains the matching project statistics if + //! it exists. + //! + ProjectStatsOption Try(const std::string& name) const; + + //! + //! \brief Add the supplied project statistics to the index. + //! + //! This method ignores an attempt to add a duplicate entry if a project + //! already exists with the same name. + //! + //! \param name As it exists in the current whitelist. + //! \param stats Contains project RAC data. + //! + void Add(std::string name, const ProjectStats& stats); + + IMPLEMENT_SERIALIZE + ( + READWRITE(m_projects); + + // Tally up the recent average credit after deserializing. + // + if (fRead) { + REF(m_total_rac) = 0; + + for (const auto& project_pair : m_projects) { + REF(m_total_rac) += project_pair.second.m_rac; + } + } + ) + + private: + //! + //! \brief Maps project names to their aggregated statistics. + //! + //! The map is keyed by project names as they exist in administrative + //! project contracts present at the time that the superblock forms. + //! + std::map m_projects; + + //! + //! \brief Tally of the sum of the recent average credit of all the + //! projects present in the superblock. + //! + uint64_t m_total_rac; + }; // ProjectIndex + + //! + //! \brief Version number of the serialized superblock format. + //! + //! Defaults to the most recent version for a new superblock instance. + //! + //! Version 1: Legacy packed superblock contract stored as a record in the + //! transaction's hashBoinc field. Contains only top-level CPID magnitudes + //! and the credit averages for each project. + //! + //! Version 2: Superblock data serializable using the built-in serialize.h + //! facilities. Stored in the superblock field of a block rather than in a + //! transaction to provide for a greater size. It includes total credit of + //! each project to facilitate automated greylisting. + //! + uint32_t m_version = CURRENT_VERSION; + + CpidIndex m_cpids; //!< Maps superblock CPIDs to magntudes. + ProjectIndex m_projects; //!< Whitelisted projects statistics. + //std::vector m_verified_beacons; + + int64_t m_height; //!< Height of the block that contains the contract. + int64_t m_timestamp; //!< Timestamp of the block that contains the contract. + + IMPLEMENT_SERIALIZE + ( + if (!(nType & SER_GETHASH)) { + READWRITE(m_version); + } + + nVersion = m_version; + + READWRITE(m_cpids); + READWRITE(m_projects); + //READWRITE(m_verified_beacons); + ) + + //! + //! \brief Initialize an empty superblock object. + //! + Superblock(); + + //! + //! \brief Initialize an empty superblock object of the specified version. + //! + //! \param version Version number of the serialized superblock format. + //! + Superblock(uint32_t version); + + //! + //! \brief Initialize a superblock from the provided scraper statistics. + //! + //! \param stats Converged statistics containing CPID and project credit + //! data. + //! + //! \return A new superblock instance that contains the imported scraper + //! statistics. + //! + static Superblock FromStats(const ScraperStats& stats); + + //! + //! \brief Initialize a superblock from a legacy superblock contract. + //! + //! \param packed Legacy superblock contract as a string of XML-like text + //! data and binary-packed CPID/magnitude data. + //! + //! \return A new superblock instance that contains the imported contract + //! statistics. + //! + static Superblock UnpackLegacy(const std::string& packed); + + //! + //! \brief Pack the superblock data into a legacy superblock contract. + //! + //! CONSENSUS: Although this method produces a legacy contract compatible + //! with older protocols, it does not guarantee that the contract matches + //! exactly to legacy input contract versions imported by UnpackLegacy(). + //! Use this method to produce new contracts from a superblock object. Do + //! not reproduce existing superblock contracts with this routine if they + //! will be retransmitted to other nodes. + //! + //! \return Legacy superblock contract as a string of XML-like text data + //! and binary-packed CPID/magnitude data. + //! + std::string PackLegacy() const; + + //! + //! \brief Get the current age of the superblock. + //! + //! \return Superblock age in seconds. + //! + int64_t Age() const; +}; // Superblock + +//! +//! \brief Hashes and stores the digest of a superblock. +//! +class QuorumHash +{ +public: + //! + //! \brief Internal representation of the result of a legacy MD5-based + //! superblock hash. + //! + typedef std::array Md5Sum; + + //! + //! \brief Describes the kind of hash contained in a \c QuorumHash object. + //! + enum class Kind + { + INVALID, //!< An empty or invalid quorum hash. + SHA256, //!< Hash created for superblocks version 2 and greater. + MD5, //!< Legacy hash created for superblocks before version 2. + }; + + //! + //! \brief A tag type that describes an empty or invalid quorum hash. + //! + struct Invalid { }; + + //! + //! \brief Initialize an invalid quorum hash object. + //! + QuorumHash(); + + //! + //! \brief Initialize a SHA256 quorum hash object variant. + //! + //! \param hash Contains the bytes of the superblock digest produced by + //! applying a SHA256 hashing algorithm to the significant data. + //! + QuorumHash(uint256 hash); + + //! + //! \brief Initialize an MD5 quorum hash object variant. + //! + //! \param hash Contains the bytes of the superblock digest produced by the + //! legacy MD5-based superblock hashing algorithm ("neural hash"). + //! + QuorumHash(Md5Sum legacy_hash); + + //! + //! \brief Initialize the appropriate quorum hash variant from the supplied + //! bytes. + //! + //! Initializes to an invalid hash variant when the bytes do not represent + //! a valid quorum hash. + //! + //! \param bytes 32 bytes for a SHA256 hash or 16 bytes for a legacy MD5 + //! hash. + //! + QuorumHash(const std::vector& bytes); + + //! + //! \brief Hash the provided superblock. + //! + //! \param superblock Superblock object containing the data to hash. + //! + //! \return The appropriate quorum hash variant digest depending on the + //! version number of the superblock. + //! + static QuorumHash Hash(const Superblock& superblock); + + //! + //! \brief Initialize a quorum hash object by parsing the supplied string + //! representation of a hash. + //! + //! \param hex A 64-character hex-encoded string for a SHA256 hash, or a + //! 32-character hex-encoded string for a legacy MD5 hash. + //! + //! \return A quorum hash object that contains the bytes of the hash value + //! represented by the string or an invalid quorum hash if the string does + //! not contain a well-formed MD5 or SHA256 hash. + //! + static QuorumHash Parse(const std::string& hex); + + bool operator==(const QuorumHash& other) const; + bool operator!=(const QuorumHash& other) const; + bool operator==(const uint256& other) const; + bool operator!=(const uint256& other) const; + bool operator==(const std::string& other) const; + bool operator!=(const std::string& other) const; + + //! + //! \brief Describe the type of hash contained. + //! + //! \return A value enumerated on \c QuorumHash::Kind . + //! + Kind Which() const; + + //! + //! \brief Determine whether the object contains a valid superblock hash. + //! + //! \return \c true if the object contains a SHA256 or legacy MD5 hash. + //! + bool Valid() const; + + //! + //! \brief Get a pointer to the bytes in the hash. + //! + //! \return A pointer to the beginning of the bytes in the hash, or a + //! \c nullptr value if the object contains an invalid hash. + //! + const unsigned char* Raw() const; + + //! + //! \brief Get the string representation of the hash. + //! + //! \return A 64-character hex-encoded string for a SHA256 hash, or a + //! 32-character hex-encoded string for a legacy MD5 hash. Returns an + //! empty string for an invalid hash. + //! + std::string ToString() const; + +private: + //! + //! \brief Contains the bytes of a SHA256 or MD5 digest. + //! + boost::variant m_hash; +}; // QuorumHash +} // namespace NN + +namespace std { +//! +//! \brief Specializes std::hash for NN::QuorumHash. +//! +//! This enables the use of NN::QuorumHash as a key in a std::unordered_map +//! object. +//! +//! CONSENSUS: Don't use the hash produced by this routine (or by any std::hash +//! specialization) in protocol-specific implementations. It ignores endianness +//! and outputs a value with a chance of collision probably too great for usage +//! besides the intended local look-up functionality. +//! +template<> +struct hash +{ + //! + //! \brief Create a hash of the supplied quorum hash object. + //! + //! \param quorum_hash Contains the bytes to hash. + //! + //! \return A hash as the sum of the two halves of the bytes in a legacy + //! MD5 hash, or the sum of the quarters of a SHA256 hash. Returns 0 for + //! an invalid hash. + //! + size_t operator()(const NN::QuorumHash& quorum_hash) const + { + // Just convert the quorum hash into a value that we can store in a + // size_t object. The hashes are already unique identifiers. + // + size_t out = 0; + const unsigned char* const bytes = quorum_hash.Raw(); + + switch (quorum_hash.Which()) { + case NN::QuorumHash::Kind::INVALID: + break; // 0 represents invalid + case NN::QuorumHash::Kind::SHA256: + out = *reinterpret_cast(bytes + 16) + + *reinterpret_cast(bytes + 24); + // Pass-through case. + case NN::QuorumHash::Kind::MD5: + out += *reinterpret_cast(bytes) + + *reinterpret_cast(bytes + 8); + break; + } + + return out; + } +}; +} // namespace std + +// This is part of the scraper but is put here, because it needs the complete NN:Superblock class. +struct ConvergedScraperStats +{ + // Flag to indicate cache is clean or dirty (i.e. state change of underlying statistics has occurred. + // This flag is marked true in ScraperGetNeuralContract and false on receipt or deletion of statistics objects. + bool bClean = false; + + int64_t nTime; + ScraperStats mScraperConvergedStats; + ConvergedManifest Convergence; + + // Legacy superblock contract and hash. + std::string sContractHash; + std::string sContract; + + // New superblock object and hash. + NN::Superblock NewFormatSuperblock; + NN::QuorumHash nNewFormatSuperblockHash; + + uint32_t GetVersion() + { + uint32_t nVersion = 0; + + if (sContractHash.empty() && sContract.empty()) nVersion = NewFormatSuperblock.m_version; + + return nVersion; + } + +}; diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index 9f6ba8814e..aa1cf28776 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -82,9 +82,11 @@ #include "rpcprotocol.h" #include "contract/polls.h" #include "contract/contract.h" +#include "neuralnet/researcher.h" #include #include // for to_lower() +#include #include "boinc.h" #include "util.h" @@ -94,12 +96,9 @@ extern std::string getMacAddress(); extern std::string FromQString(QString qs); extern std::string qtExecuteDotNetStringFunction(std::string function, std::string data); -std::string getfilecontents(std::string filename); - void GetGlobalStatus(); bool IsConfigFileEmpty(); -void HarvestCPIDs(bool cleardata); BitcoinGUI::BitcoinGUI(QWidget *parent): QMainWindow(parent), @@ -454,8 +453,6 @@ void BitcoinGUI::createToolBars() toolbar->addAction(addressBookAction); toolbar->addAction(votingAction); - // Prevent Lock from falling off the page - QWidget* spacer = new QWidget(); spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); toolbar->addWidget(spacer); @@ -463,13 +460,6 @@ void BitcoinGUI::createToolBars() // Unlock Wallet toolbar->addAction(unlockWalletAction); toolbar->addAction(lockWalletAction); - QWidget* webSpacer = new QWidget(); - - webSpacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - webSpacer->setMaximumHeight(10); - toolbar->addWidget(webSpacer); - webSpacer->setObjectName("WebSpacer"); - // Status bar notification icons QFrame *frameBlocks = new QFrame(); @@ -895,7 +885,7 @@ void BitcoinGUI::NewUserWizard() std::string sourcefile = GetBoincDataDir() + "client_state.xml"; std::string sout = ""; - sout = getfilecontents(sourcefile); + sout = GetFileContents(sourcefile); //bool BoincInstalled = true; std::string sBoincNarr = ""; if (sout == "-1") @@ -908,7 +898,7 @@ void BitcoinGUI::NewUserWizard() bool ok; boincemail = QInputDialog::getText(this, tr("New User Wizard"), - tr("Please enter your boinc E-mail address, or click to skip for now:"), + tr("Please enter your BOINC E-mail address, or click to skip for now:"), QLineEdit::Normal, "", &ok); @@ -921,14 +911,15 @@ void BitcoinGUI::NewUserWizard() CreateNewConfigFile(new_email); QString strMessage = tr("Created new Configuration File Successfully. "); QMessageBox::warning(this, tr("New Account Created - Welcome Aboard!"), strMessage); - //Load CPIDs: - HarvestCPIDs(true); + + // Reload BOINC CPIDs now that we know the user's email address: + NN::Researcher::Reload(); } else { //Create Config File CreateNewConfigFile("investor"); - QString strMessage = tr("To get started with BOINC, run the BOINC client, choose projects, then populate the gridcoinresearch.conf file in %appdata%\\GridcoinResearch with your boinc e-mail address. To run this wizard again, please delete the gridcoinresearch.conf file. "); + QString strMessage = tr("To get started with BOINC, run the BOINC client, choose projects, then populate the gridcoinresearch.conf file in %appdata%\\GridcoinResearch with your BOINC e-mail address. To run this wizard again, please delete the gridcoinresearch.conf file. "); QMessageBox::warning(this, tr("New User Wizard - Skipped"), strMessage); } // Read in the mapargs, and set the seed nodes 10-13-2015 @@ -945,7 +936,7 @@ void BitcoinGUI::NewUserWizard() if (sBoincNarr != "") { QString qsMessage = tr(sBoincNarr.c_str()); - QMessageBox::warning(this, tr("Attention! - Boinc Path Error!"), qsMessage); + QMessageBox::warning(this, tr("Attention! - BOINC Path Error!"), qsMessage); } } } @@ -1452,21 +1443,48 @@ void BitcoinGUI::updateScraperIcon(int scraperEventtype, int status) int64_t nConvergenceTime = ConvergedScraperStatsCache.nTime; - std::string sExcludedProjects = {}; + QString qsExcludedProjects; + QString qsIncludedScrapers; + QString qsExcludedScrapers; + QString qsScrapersNotPublishing; - bool bExcludedProjects = false; + bool bDisplayScrapers = false; + // Note that the translation macro tr is applied in the setToolTip call below. // If the convergence cache has excluded projects... - if (ConvergedScraperStatsCache.vExcludedProjects.size()) + if (!ConvergedScraperStatsCache.Convergence.vExcludedProjects.empty()) { - bExcludedProjects = true; + qsExcludedProjects = QString(((std::string)boost::algorithm::join(ConvergedScraperStatsCache.Convergence.vExcludedProjects, ", ")).c_str()); + } + else + { + qsExcludedProjects = tr("none"); + } + + // If fDebug3 then show scrapers in tooltip... + if (fDebug3) + { + bDisplayScrapers = true; + + // No need to include "none" for included scrapers, because if no scrapers there will not be a convergence. + qsIncludedScrapers = QString(((std::string)boost::algorithm::join(ConvergedScraperStatsCache.Convergence.vIncludedScrapers, ", ")).c_str()); - for (const auto& iter : ConvergedScraperStatsCache.vExcludedProjects) + if (!ConvergedScraperStatsCache.Convergence.vExcludedScrapers.empty()) { - if (sExcludedProjects.empty()) - sExcludedProjects += iter.first; - else - sExcludedProjects += ", " + iter.first; + qsExcludedScrapers = QString(((std::string)boost::algorithm::join(ConvergedScraperStatsCache.Convergence.vExcludedScrapers, ", ")).c_str()); + } + else + { + qsExcludedScrapers = tr("none"); + } + + if (!ConvergedScraperStatsCache.Convergence.vScrapersNotPublishing.empty()) + { + qsScrapersNotPublishing = QString(((std::string)boost::algorithm::join(ConvergedScraperStatsCache.Convergence.vScrapersNotPublishing, ", ")).c_str()); + } + else + { + qsScrapersNotPublishing = tr("none"); } } @@ -1490,12 +1508,26 @@ void BitcoinGUI::updateScraperIcon(int scraperEventtype, int status) { labelScraperIcon->setPixmap(QIcon(":/icons/staking_on").pixmap(STATUSBAR_ICONSIZE, STATUSBAR_ICONSIZE)); - if (!bExcludedProjects) - labelScraperIcon->setToolTip(tr("Scraper: Convergence achieved, date/time %1." - " All projects on whitelist included.").arg(QString(DateTimeStrFormat("%x %H:%M:%S", nConvergenceTime).c_str()))); + if (bDisplayScrapers) + { + labelScraperIcon->setToolTip(tr("Scraper: Convergence achieved, date/time %1 UTC. \n" + "Project(s) excluded: %2. \n" + "Scrapers included: %3. \n" + "Scraper(s) excluded: %4. \n" + "Scraper(s) not publishing: %5.") + .arg(QString(DateTimeStrFormat("%x %H:%M:%S", nConvergenceTime).c_str())) + .arg(qsExcludedProjects) + .arg(qsIncludedScrapers) + .arg(qsExcludedScrapers) + .arg(qsScrapersNotPublishing)); + } else - labelScraperIcon->setToolTip(tr("Scraper: Convergence achieved, date/time %1 UTC." - " Project(s) excluded: %2.").arg(QString(DateTimeStrFormat("%x %H:%M:%S", nConvergenceTime).c_str())).arg(QString(sExcludedProjects.c_str()))); + { + labelScraperIcon->setToolTip(tr("Scraper: Convergence achieved, date/time %1 UTC. \n" + " Project(s) excluded: %2.") + .arg(QString(DateTimeStrFormat("%x %H:%M:%S", nConvergenceTime).c_str())) + .arg(qsExcludedProjects)); + } } else if ((scraperEventtype == (int)scrapereventtypes::Convergence || scraperEventtype == (int)scrapereventtypes::SBContract) && status == CT_DELETED) diff --git a/src/qt/bitcoinstrings.cpp b/src/qt/bitcoinstrings.cpp index 7e2397690d..224781ec41 100644 --- a/src/qt/bitcoinstrings.cpp +++ b/src/qt/bitcoinstrings.cpp @@ -123,6 +123,8 @@ QT_TRANSLATE_NOOP("bitcoin-core", "Block Version"), QT_TRANSLATE_NOOP("bitcoin-core", "Block creation options:"), QT_TRANSLATE_NOOP("bitcoin-core", "Block not in index"), QT_TRANSLATE_NOOP("bitcoin-core", "Block read failed"), +QT_TRANSLATE_NOOP("bitcoin-core", "Blocks Loaded"), +QT_TRANSLATE_NOOP("bitcoin-core", "Blocks Verified"), QT_TRANSLATE_NOOP("bitcoin-core", "Boinc Mining"), QT_TRANSLATE_NOOP("bitcoin-core", "Boinc Public Key"), QT_TRANSLATE_NOOP("bitcoin-core", "Boinc Reward"), @@ -146,6 +148,7 @@ QT_TRANSLATE_NOOP("bitcoin-core", "Discover own IP address (default: 1 when list QT_TRANSLATE_NOOP("bitcoin-core", "Done loading"), QT_TRANSLATE_NOOP("bitcoin-core", "Duration"), QT_TRANSLATE_NOOP("bitcoin-core", "ERROR"), +QT_TRANSLATE_NOOP("bitcoin-core", "Entire balance reserved"), QT_TRANSLATE_NOOP("bitcoin-core", "Error loading blkindex.dat"), QT_TRANSLATE_NOOP("bitcoin-core", "Error loading wallet.dat"), QT_TRANSLATE_NOOP("bitcoin-core", "Error loading wallet.dat: Wallet corrupted"), @@ -200,7 +203,6 @@ QT_TRANSLATE_NOOP("bitcoin-core", "Message Data"), QT_TRANSLATE_NOOP("bitcoin-core", "Message Length"), QT_TRANSLATE_NOOP("bitcoin-core", "Message Type"), QT_TRANSLATE_NOOP("bitcoin-core", "Message"), -QT_TRANSLATE_NOOP("bitcoin-core", "Messate Type"), QT_TRANSLATE_NOOP("bitcoin-core", "Miner: "), QT_TRANSLATE_NOOP("bitcoin-core", "Mining"), QT_TRANSLATE_NOOP("bitcoin-core", "Name"), @@ -209,14 +211,16 @@ QT_TRANSLATE_NOOP("bitcoin-core", "Network Date"), QT_TRANSLATE_NOOP("bitcoin-core", "Neural Contract Binary Size"), QT_TRANSLATE_NOOP("bitcoin-core", "Neural Hash"), QT_TRANSLATE_NOOP("bitcoin-core", "No Attached Messages"), -QT_TRANSLATE_NOOP("bitcoin-core", "No coins; "), +QT_TRANSLATE_NOOP("bitcoin-core", "No coins"), +QT_TRANSLATE_NOOP("bitcoin-core", "No current polls"), QT_TRANSLATE_NOOP("bitcoin-core", "Offline; "), QT_TRANSLATE_NOOP("bitcoin-core", "Only connect to nodes in network (IPv4, IPv6 or Tor)"), QT_TRANSLATE_NOOP("bitcoin-core", "Options:"), QT_TRANSLATE_NOOP("bitcoin-core", "Organization"), -QT_TRANSLATE_NOOP("bitcoin-core", "Out of rance exception while parsing Transaction Message -> "), +QT_TRANSLATE_NOOP("bitcoin-core", "Out of range exception while parsing Transaction Message -> "), QT_TRANSLATE_NOOP("bitcoin-core", "Output extra debugging information. Implies all other -debug* options"), QT_TRANSLATE_NOOP("bitcoin-core", "Output extra network debugging information"), +QT_TRANSLATE_NOOP("bitcoin-core", "POR Blocks Verified"), QT_TRANSLATE_NOOP("bitcoin-core", "Password for JSON-RPC connections"), QT_TRANSLATE_NOOP("bitcoin-core", "Please wait for new user wizard to start..."), QT_TRANSLATE_NOOP("bitcoin-core", "Prepend debug output with timestamp"), @@ -275,6 +279,7 @@ QT_TRANSLATE_NOOP("bitcoin-core", "Use the test network"), QT_TRANSLATE_NOOP("bitcoin-core", "Username for JSON-RPC connections"), QT_TRANSLATE_NOOP("bitcoin-core", "Verifying database integrity..."), QT_TRANSLATE_NOOP("bitcoin-core", "Vote"), +QT_TRANSLATE_NOOP("bitcoin-core", "Waiting for coins to mature"), QT_TRANSLATE_NOOP("bitcoin-core", "Wallet %s resides outside data directory %s."), QT_TRANSLATE_NOOP("bitcoin-core", "Wallet locked; "), QT_TRANSLATE_NOOP("bitcoin-core", "Wallet needed to be rewritten: restart Gridcoin to complete"), diff --git a/src/qt/clientmodel.h b/src/qt/clientmodel.h index ada5377e19..3951a6b76c 100644 --- a/src/qt/clientmodel.h +++ b/src/qt/clientmodel.h @@ -3,6 +3,7 @@ #include #include "scraper/fwd.h" +#include "neuralnet/superblock.h" class OptionsModel; class AddressTableModel; diff --git a/src/qt/diagnosticsdialog.cpp b/src/qt/diagnosticsdialog.cpp index 569edf1cab..318a63c73a 100644 --- a/src/qt/diagnosticsdialog.cpp +++ b/src/qt/diagnosticsdialog.cpp @@ -13,6 +13,7 @@ #include #include +namespace NN { std::string GetPrimaryCpid(); } DiagnosticsDialog::DiagnosticsDialog(QWidget *parent) : QDialog(parent), @@ -78,17 +79,19 @@ bool DiagnosticsDialog::VerifyIsCPIDValid() cpid.erase(pos, cpid.length()); } - return (msPrimaryCPID == cpid) ? true : false; + return (NN::GetPrimaryCpid() == cpid) ? true : false; } bool DiagnosticsDialog::VerifyCPIDIsInNeuralNetwork() { - if(!IsResearcher(msPrimaryCPID)) + std::string primary_cpid = NN::GetPrimaryCpid(); + + if(!IsResearcher(primary_cpid)) return false; for(const auto& entry : GetConsensusBeaconList().mBeaconMap) { - if(boost::iequals(entry.first, msPrimaryCPID)) + if(boost::iequals(entry.first, primary_cpid)) return true; } @@ -454,7 +457,7 @@ void DiagnosticsDialog::getGithubVersionFinished(QNetworkReply *reply) catch (std::exception& ex) { - ui->checkClientVersionResultLbl->setText("Failed: std exception occured -> " + QString::fromUtf8(ex.what())); + ui->checkClientVersionResultLbl->setText("Failed: std exception occurred -> " + QString::fromUtf8(ex.what())); } return; diff --git a/src/qt/forms/overviewpage.ui b/src/qt/forms/overviewpage.ui index fcf0e870bf..3244d566fd 100644 --- a/src/qt/forms/overviewpage.ui +++ b/src/qt/forms/overviewpage.ui @@ -255,7 +255,7 @@ 20 - 20 + 40 @@ -344,20 +344,13 @@ - - - Project: - - - - CPID: - + Status: @@ -385,16 +378,6 @@ - - - - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - @@ -404,7 +387,7 @@ - + @@ -430,7 +413,7 @@ 20 - 10 + 40 diff --git a/src/qt/locale/bitcoin_af_ZA.ts b/src/qt/locale/bitcoin_af_ZA.ts index da16203238..5b485221ff 100644 --- a/src/qt/locale/bitcoin_af_ZA.ts +++ b/src/qt/locale/bitcoin_af_ZA.ts @@ -23,15 +23,6 @@ Distributed under the MIT/X11 software license, see the accompanying file COPYIN This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (https://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - - -This is experimental software. - -Distributed under the MIT/X11 software license, see the accompanying file COPYING 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. - Dit is eksperimentele sagteware. Versprei onder die MIT / X11 sagteware lisensie, sien die meegaande lêer kopieer of http://www.opensource.org/licenses/mit-license.php. Hierdie produk bevat sagteware wat ontwikkel is deur die OpenSSL Projek vir gebruik in die OpenSSL Toolkit (http://www.openssl.org/) en kriptografiese sagteware geskryf deur Eric Young (eay@cryptsoft.com) en UPnP sagteware geskryf deur Thomas Bernard. - AddressBookPage @@ -308,7 +299,7 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + &Overview &Oorsig @@ -338,17 +329,17 @@ This product includes software developed by the OpenSSL Project for use in the O Sluit af - + &Options... &Opsies - + Wallet Beursie - + &Backup Wallet/Config... @@ -358,7 +349,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &File &Lêer @@ -368,12 +359,12 @@ This product includes software developed by the OpenSSL Project for use in the O &Instellings - + &Help &Hulp - + &Send @@ -459,28 +450,12 @@ This product includes software developed by the OpenSSL Project for use in the O Wys inligting oor Gridcoin - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + %n second(s) ago %n second ago @@ -512,7 +487,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Voting @@ -522,7 +497,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Diagnostics @@ -551,14 +526,6 @@ This product includes software developed by the OpenSSL Project for use in the O Encrypt or decrypt wallet Enkripteer of dekripteer Beursie - - &Backup Wallet... - &Rugsteun Beursie... - - - Backup wallet to another location - Rugsteun Beursie na 'n ander ligging - &Change Passphrase... @@ -620,24 +587,19 @@ This product includes software developed by the OpenSSL Project for use in the O Oop ontfouting en diagnostiese konsole - + &Community - - &Advanced - - - - + [testnet] [testnet] - + Gridcoin client Gridcoin kliënt @@ -654,34 +616,18 @@ This product includes software developed by the OpenSSL Project for use in the O - - %1 second(s) ago - %1 second ago - - - %1 minute(s) ago - %1 minuut gelede - - - %1 hour(s) ago - %1 uur gelede - - - %1 day(s) ago - %1 dag gelede - Up to date Up to date - + Catching up... Vang tans op... - + Last received block was generated %1. Laaste ontvang blok was Gegenereer wanneer %1. @@ -751,7 +697,7 @@ Adres: %4 ?} {4?} - + Wallet is <b>encrypted</b> and currently %1 @@ -766,7 +712,7 @@ Adres: %4 - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -776,19 +722,37 @@ Adres: %4 - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Datum: %1 -Bedrag: %2 -Tipe: %3 -Adres: %4 - + + Scraper: waiting on wallet to sync. + - + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. URI kan nie parsed word nie! Dit kan veroorsaak word deur 'n ongeldige Gridcoin adres of misvormde URI parameters. @@ -799,10 +763,6 @@ Adres: %4 URI handling URI hantering - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Beursie is <b>geënkripteerde</b> en tans <b>ontsluit</b> - Wallet is <b>encrypted</b> and currently <b>locked</b> @@ -841,7 +801,7 @@ Adres: %4 - + %n second(s) @@ -873,32 +833,12 @@ Adres: %4 - Not staking because wallet is locked - Stutting nie omdat beursie is gesluit - - - Not staking because wallet is offline - Stutting nie omdat beursie is vanlyn - - - Not staking because wallet is syncing - Stutting nie omdat Beursie sinkroniseer tans - - - Not staking because you don't have mature coins - Stutting nie want jy hoef nie volwasse muntstukke - - - Not staking - Nie stutting - - - + Gridcoin Gridcoin - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. 'N fatale fout het voorgekom. Gridcoin kan nie meer veilig voort en sal sluit. @@ -906,7 +846,7 @@ Adres: %4 ClientModel - + Network Alert Netwerk ontvanklike @@ -1000,10 +940,6 @@ Adres: %4 Tree &mode - - List mode - Lys modus - Label @@ -1371,7 +1307,7 @@ Dit beteken dat 'n fooi van ten minste %2 word benodig. NewPollDialog - + Create Poll @@ -1817,6 +1753,14 @@ Dit beteken dat 'n fooi van ten minste %2 word benodig. uit sinchro + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1878,17 +1822,17 @@ Dit beteken dat 'n fooi van ten minste %2 word benodig. RPCConsole - + &Information Informasie - + Gridcoin - Debug Console - + Boost version @@ -1905,7 +1849,7 @@ Dit beteken dat 'n fooi van ten minste %2 word benodig. - + N/A (n.v.t) @@ -2054,6 +1998,11 @@ Dit beteken dat 'n fooi van ten minste %2 word benodig. Clear console Duidelike konsole + + + &Scraper + + Yes @@ -2080,7 +2029,7 @@ Dit beteken dat 'n fooi van ten minste %2 word benodig. Tipe <b>help</b> vir 'n oorsig van beskikbare bevele. - + %1 B @@ -2377,27 +2326,27 @@ Dit beteken dat 'n fooi van ten minste %2 word benodig. SendCoinsEntry - + A&mount: &Bedrag: - + Message: Boodskap: - + Form Vorm - + &Label: &Etiket: - + Enter a label for this address to add it to your address book Tik 'n etiket vir hierdie adres om dit by jou adresboek te voeg @@ -2438,17 +2387,12 @@ Dit beteken dat 'n fooi van ten minste %2 word benodig. Verwyder hierdie ontvanger - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2650,12 +2594,37 @@ Dit beteken dat 'n fooi van ten minste %2 word benodig. - - Generated, PoS + + MINED - POS - + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From Van @@ -2756,14 +2725,6 @@ Dit beteken dat 'n fooi van ten minste %2 word benodig. Transaction Inputs - - Transaction ID - Transaksie ID - - - Transaction - Transaksie - Amount @@ -2780,7 +2741,7 @@ Dit beteken dat 'n fooi van ten minste %2 word benodig. onwaar - + Open for %n more block(s) Oop vir %n meer block @@ -2832,16 +2793,12 @@ Dit beteken dat 'n fooi van ten minste %2 word benodig. - + Source Bron - - Generated - Gegenereer - - + matures in %n more block(s) verval in %n meer block @@ -2858,14 +2815,6 @@ Dit beteken dat 'n fooi van ten minste %2 word benodig. Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - Informasie - - - Inputs - Insette - TransactionDescDialog @@ -2880,12 +2829,7 @@ Dit beteken dat 'n fooi van ten minste %2 word benodig. Hierdie paneel wys 'n gedetailleerde Beskrywing van die transaksie - - View Attachment - - - - + Execute Contract @@ -2894,21 +2838,11 @@ Dit beteken dat 'n fooi van ten minste %2 word benodig. C&lose - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Datum @@ -2918,7 +2852,7 @@ Dit beteken dat 'n fooi van ten minste %2 word benodig. Tipe - + Received with Ontvang met @@ -2938,12 +2872,42 @@ Dit beteken dat 'n fooi van ten minste %2 word benodig. Betalings Aan/na jouself - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (n.v.t) - + Date and time that the transaction was received. Datum en tyd wat die transaksie ontvang was. @@ -2953,7 +2917,7 @@ Dit beteken dat 'n fooi van ten minste %2 word benodig. Tipe transaksie. - + Address Adres @@ -3016,27 +2980,7 @@ Dit beteken dat 'n fooi van ten minste %2 word benodig. Gegenereer maar nie aanvaar - - Mined - DPOR - - - - - Minted - (Local) DPOR - - - - - Mined - PoR - - - - - Mined - Interest - - - - + Transaction status. Hover over this field to show number of confirmations. Transaksie status. Sweef oor hierdie gebied te wys nommer van confirmations. @@ -3223,7 +3167,7 @@ Dit beteken dat 'n fooi van ten minste %2 word benodig. VotingChartDialog - + Poll Results @@ -3367,7 +3311,7 @@ Dit beteken dat 'n fooi van ten minste %2 word benodig. VotingVoteDialog - + PlaceVote @@ -3400,7 +3344,7 @@ Dit beteken dat 'n fooi van ten minste %2 word benodig. WalletModel - + Sending... Stuur... @@ -3408,7 +3352,7 @@ Dit beteken dat 'n fooi van ten minste %2 word benodig. bitcoin-core - + Options: Opsies: @@ -3418,7 +3362,7 @@ Dit beteken dat 'n fooi van ten minste %2 word benodig. Laai adresse... - + Acceptable ciphers (default: TLSv1.2+HIGH:TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!3DES:@STRENGTH) @@ -3433,7 +3377,7 @@ Dit beteken dat 'n fooi van ten minste %2 word benodig. - + Boinc Mining @@ -3443,7 +3387,7 @@ Dit beteken dat 'n fooi van ten minste %2 word benodig. - + Error obtaining next project. Error 06172014. @@ -3488,22 +3432,22 @@ Dit beteken dat 'n fooi van ten minste %2 word benodig. Laai beursie... - + Done loading Klaar gelaai - + Error Fout - + To use the %s option Die %s-opsie gebruik - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -3627,6 +3571,16 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3687,6 +3641,11 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< ERROR + + + Entire balance reserved + + Expires @@ -3752,11 +3711,6 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< Message Boodskap - - - Messate Type - - Miner: @@ -3798,12 +3752,7 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< - - No coins; - - - - + Offline; @@ -3813,12 +3762,7 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< - - Out of rance exception while parsing Transaction Message -> - - - - + Please wait for new user wizard to start... @@ -3908,7 +3852,7 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< - + List commands Lys bevele @@ -3923,7 +3867,7 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< Gridcoin - + This help message Hierdie help boodskap @@ -3958,12 +3902,12 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< Spesifiseer verbinding afsnytyd in millisekondes (verstek: 5000) - + Connect through socks proxy Koppel deur sokkies volmag - + Select the version of socks proxy to use (4-5, default: 5) Kies die weergawe van sokkies volmag om te gebruik (4-5, verstek: 5) @@ -3973,12 +3917,12 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< Gebruik volmag te bereik sionele verborge dienste (verstek: dieselfde as - volmag) - + Allow DNS lookups for -addnode, -seednode and -connect Laat DNS lookups vir -addnode, -seednode and -connect - + Listen for connections on <port> (default: 32749 or testnet: 32748) Luister vir verbindings op <port> (verstek: 15714 of testnet: 25714) {32749 ?} {32748)?} @@ -3988,12 +3932,12 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< Onderhou op die meeste <n> konneksies na eweknieë (standaard: 125) - + Add a node to connect to and attempt to keep the connection open Voeg 'n nodus om aan te koppel en probeer die verbinding om oop te hou - + Connect only to the specified node(s) Koppel net om die gespesifiseerde nodes Koppel net om die gespesifiseerde node @@ -4004,26 +3948,22 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< Koppel aan 'n nodus herwin eweknie adresse, en ontkoppel - + Specify your own public address Spesifiseer jou eie openbare adres - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) Slegs verbind nodusse in netwerk <net>(IPv4, IPv6 of belegger) - + Discover own IP address (default: 1 when listening and no -externalip) Ontdek eie IP-adres (verstek: 1 wanneer luister en geen - externalip) - Find peers using internet relay chat (default: 0) - Vind eweknieë gebruik internet relay chat (verstek: 0) - - - + Accept connections from outside (default: 1 if no -proxy or -connect) Verbindings van buite aanvaar (verstek: 1 as geen - volmag of - verbind) @@ -4033,31 +3973,27 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< Bind om gegewe adres. Gebruik [host]: poort notasie vir IPv6 - + Find peers using DNS lookup (default: 1) Vind eweknieë met behulp van DNS opsoek (verstek: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) Sinchro tyd met ander nodusse. Deaktiveer as tyd op jou stelsel is presiese bv. sinkroniseer met NTP (verstek: 1) - Sync checkpoints policy (default: strict) - Sinchro kontrolepunte beleid (verstek: streng) - - - + Threshold for disconnecting misbehaving peers (default: 100) Drempel vir ontkoppel peers eweknieë (verstek: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Aantal sekondes te hou hom wangedra eweknieë uit herkoppel (verstek: 86400) - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 5000) Maksimum per-verbinding ontvang buffer, <n>* 1000 grepe (verstek: 5000) @@ -4067,7 +4003,7 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< Maksimum per-verbinding stuur buffer, <n>* 1000 grepe (verstek: 1000) - + Use UPnP to map the listening port (default: 1 when listening) Gebruik UPnP te karteer die luistervaardigheid poort (verstek: 1 wanneer luister) @@ -4077,12 +4013,12 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< Gebruik UPnP te karteer die luistervaardigheid poort (verstek: 0) - + Fee per KB to add to transactions you send Fooi per kg te voeg tot transaksies jy stuur - + When creating transactions, ignore inputs with value less than this (default: 0.01) Wanneer die skep van transaksies, ignoreer insette met waarde minder as dit (verstek: 0.01) @@ -4092,7 +4028,7 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< Aanvaar bevelreël en JSON-RPC bevele - + Run in the background as a daemon and accept commands Loop in die agtergrond as 'n daemon en aanvaar bevele @@ -4102,7 +4038,7 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< Gebruik die toets netwerk - + Output extra debugging information. Implies all other -debug* options Uitset ekstra ontfouting-inligting. Impliseer alle ander - vir foutopspoor * opsies @@ -4112,7 +4048,7 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< Uitset ekstra netwerk ontfoutingsinligting - + Prepend debug output with timestamp Prepend vir foutopspoor uitsette met timestamp @@ -4142,7 +4078,7 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< Wagwoord vir JSON-RPC verbindings - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) Luister vir JSON-RPC verbindings op <port> (verstek: 15715 of testnet: 25715) @@ -4152,12 +4088,12 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< Laat INTO-RPC verbindings van gespesifiseerde IP adres - + Send commands to node running on <ip> (default: 127.0.0.1) Bevele aan nodus wat op <ip>loop stuur (verstek: 127.0.0.1) - + Execute command when the best block changes (%s in cmd is replaced by block hash) Uitvoer opdrag wanneer die beste blokkeer veranderinge (%s in cmd is vervang deur blok huts) @@ -4167,12 +4103,12 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< Uitvoer opdrag wanneer 'n Beursie transaksie veranderinge (%s in cmd is vervang deur TxID) - + Require a confirmations for change (default: 0) Vereis 'n confirmations vir verandering (verstek: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) Transaksie skripte gebruik kanonieke STOOT operateurs dwing (verstek: 1) @@ -4182,7 +4118,7 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< Uitvoer opdrag wanneer 'n relevante ontvanklike ontvang word nie (%s in cmd is vervang deur boodskap) - + Upgrade wallet to latest format Gradeer Beursie te nuutste formaat @@ -4197,12 +4133,12 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< Rescan die blok ketting vir vermiste Beursie transaksies - + Attempt to recover private keys from a corrupt wallet.dat Poging om private keys van 'n korrupte wallet.dat verhaal - + How many blocks to check at startup (default: 2500, 0 = all) Hoeveel blokke te kontroleer by selflaai (verstek: 2500, 0 = al) @@ -4217,12 +4153,12 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< Voer blokke van eksterne blk000?. gerapporteer lêer - + Block creation options: Blok skepping opsies: - + Set minimum block size in bytes (default: 0) Stel minimum blok grootte in grepe (verstek: 0) @@ -4232,12 +4168,12 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< Stel maksimum blok grootte in grepe (verstek: 250000) - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) Stel maksimum grootte van hoë-prioriteit/lae-fooi transaksies in grepe (verstek: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) SSL opsies: (sien die Bitcoin Wiki vir SSL omstellingsinstruksies) @@ -4257,21 +4193,17 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< Bediener private sleutel (verstek: server.pem) - Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - Aanvaarbare ciphers (verstek: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - - - + Invalid amount for -paytxfee=<amount>: '%s' Ongeldige bedrag vir - paytxfee = <amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. Waarskuwing: - paytxfee is baie hoog gestel! Dit is die transaksiefooi sal jy betaal as jy stuur 'n transaksie. - + Invalid amount for -mininput=<amount>: '%s' Ongeldige bedrag vir - mininput = <amount>: '%s' @@ -4281,22 +4213,22 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< - + Wallet %s resides outside data directory %s. Beursie %s gesetel buite data gids %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. Kan verkry 'n slot op data gids %s. Gridcoin is waarskynlik reeds te laat loop. - + Verifying database integrity... Verifieer tans databasis integriteit... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. Fout met die inisialisering van databasis omgewing %s! Om te herwin, RUGSTEUN dat gids, dan verwyder alles uit dit behalwe vir wallet.dat. @@ -4306,10 +4238,35 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< Waarskuwing: wallet.dat korrup, data herwin! Oorspronklike wallet.dat gestoor as Beursie. {timestamp} .bak in %s; As jou balans of transaksies is verkeerd jy moet 'n rugsteun teruggelaai. - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4326,7 +4283,7 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< Wallet.dat korrup, red, het misluk - + Unknown -socks proxy version requested: %i Onbekende - socks gevolmagtigde weergawe versoek: %i @@ -4336,7 +4293,7 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< Onbekende netwerk gespesifiseer in - onlynet: '%s' - + Invalid -proxy address: '%s' Ongeldige - proxy adres: '%s' @@ -4346,30 +4303,25 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< Ongeldige - TOR adres: '%s' - + Cannot resolve -bind address: '%s' Adres kan oplos nie-penarie bevind: '%s' - + Failed to listen on any port. Use -listen=0 if you want this. Het misluk om te luister op enige hawe. Gebruik - luister = 0 as jy dit wil hê. - + Cannot resolve -externalip address: '%s' -ExternalIP adres kan oplos nie: '%s' - + Invalid amount for -reservebalance=<amount> Ongeldige bedrag vir -reservebalance=<amount> - - Unable to sign checkpoint, wrong checkpointkey? - - Kan nie aanteken kontrolepunt, verkeerde checkpointkey? - Error loading blkindex.dat @@ -4381,27 +4333,27 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< Kon nie wallet.dat: Beursie korrup - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. Waarskuwing: fout lees wallet.dat! Alle sleutels lees korrek, maar transaksie data of adres boek inskrywings dalk ontbreek of is foutief. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin Kon nie wallet.dat: Beursie vereis nuwer weergawe van Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete Beursie moes word week oorgeskryf: herlaai Gridcoin voltooi - + Error loading wallet.dat Fout laai wallet.dat - + Cannot downgrade wallet Beursie kan downgrade @@ -4411,12 +4363,12 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< Verstek adres kan skryf - + Rescanning... Rescanning... - + Importing blockchain data file. Blockchain data lêer invoer. @@ -4431,17 +4383,17 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< Fout: kon nie begin nie - + Unable to bind to %s on this computer. Gridcoin is probably already running. Kon nie bind aan %s op hierdie rekenaar nie. Gridcoin is waarskynlik reeds te laat loop. - + Unable to bind to %s on this computer (bind returned error %d, %s) Kon nie %s op hierdie rekenaar bind (penarie bevind teruggekeer fout %d, %s) - + Error: Wallet locked, unable to create transaction Fout: Beursie gesluit, nie skep transaksie @@ -4451,51 +4403,39 @@ As die lêer bestaan nie, dit skep met eienaar-leesbare-net lêer toestemmings.< Fout: Beursie ontsluit vir stutting enigste, nie skep transaksie. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds Fout: Hierdie transaksie vereis 'n transaksiefooi van ten minste %s as gevolg van sy bedrag, kompleksiteit, of gebruik van onlangs ontvang fondse - + Error: Transaction creation failed Fout: Transaksie skepping het misluk - + Sending... Stuur... - + 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. - + Invalid amount Ongeldige bedrag - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. Waarskuwing: Maak asseblief seker dat jou rekenaar se datum en tyd is korrek! As jou horlosie is verkeerd sal Gridcoin nie behoorlik werk nie. - Warning: This version is obsolete, upgrade required! - Waarskuwing: Hierdie weergawe is verouderde, opgradering nodig! - - - WARNING: synchronized checkpoint violation detected, but skipped! - Waarskuwing: synchronized kontrolepunt skending opgespoor, maar oorgeslaan! - - - + Warning: Disk space is low! Waarskuwing: Skyfspasie laag is! - - WARNING: Invalid checkpoint found! Displayed transactions may not be correct! You may need to upgrade, or notify developers. - Waarskuwing: Ongeldige kontrolepunt gevind! Gewys word transaksies kan nie korrek wees! Jy moet dalk opgradeer, of stel ontwikkelaars. - diff --git a/src/qt/locale/bitcoin_ar.ts b/src/qt/locale/bitcoin_ar.ts index 6c00d254e0..bebf3f307f 100644 --- a/src/qt/locale/bitcoin_ar.ts +++ b/src/qt/locale/bitcoin_ar.ts @@ -299,12 +299,12 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + Sign &message... التوقيع و الرسائل - + &Overview &نظرة عامة @@ -400,7 +400,7 @@ This product includes software developed by the OpenSSL Project for use in the O الخروج من التطبيق - + &Options... &خيارات ... @@ -414,19 +414,11 @@ This product includes software developed by the OpenSSL Project for use in the O Encrypt or decrypt wallet - - &Backup Wallet... - &نسخ احتياط للمحفظة - &Change Passphrase... &تغيير كلمة المرور - - Backup wallet to another location - احفظ نسخة احتياطية للمحفظة في مكان آخر - Change the passphrase used for wallet encryption @@ -478,7 +470,7 @@ This product includes software developed by the OpenSSL Project for use in the O &التحقق من الرسالة... - + Wallet محفظة @@ -488,7 +480,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Send &ارسل @@ -508,28 +500,12 @@ This product includes software developed by the OpenSSL Project for use in the O - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -539,7 +515,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Diagnostics @@ -569,14 +545,14 @@ This product includes software developed by the OpenSSL Project for use in the O - + [testnet] [testnet] - + Gridcoin client @@ -598,7 +574,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Last received block was generated %1. @@ -651,7 +627,7 @@ Address: %4 - + Wallet is <b>encrypted</b> and currently %1 @@ -698,7 +674,7 @@ Address: %4 - + %n second(s) @@ -756,7 +732,37 @@ Address: %4 - + + Scraper: waiting on wallet to sync. + + + + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + &File &ملف @@ -771,17 +777,12 @@ Address: %4 - - &Advanced - - - - + &Help &مساعدة - + %n second(s) ago @@ -834,12 +835,12 @@ Address: %4 محدث - + Catching up... اللحاق بالركب ... - + Sent transaction المعاملات المرسلة @@ -849,7 +850,7 @@ Address: %4 المعاملات الواردة - + URI handling @@ -860,17 +861,13 @@ Address: %4 URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. - - 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 occurred. Gridcoin can no longer continue safely and will quit. @@ -878,7 +875,7 @@ Address: %4 ClientModel - + Network Alert @@ -960,10 +957,6 @@ Address: %4 (un)select all عدم اختيار الجميع - - List mode - صيغة القائمة - Amount @@ -1329,7 +1322,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1572,10 +1565,6 @@ This label turns red, if the priority is smaller than "medium". &Network &الشبكة - - Proxy &IP: - بروكسي &اي بي: - &Port: @@ -1779,6 +1768,14 @@ This label turns red, if the priority is smaller than "medium". + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1840,7 +1837,7 @@ This label turns red, if the priority is smaller than "medium". RPCConsole - + @@ -1852,7 +1849,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A غير معروف @@ -1877,12 +1874,12 @@ This label turns red, if the priority is smaller than "medium". عدد الاتصالات - + Gridcoin - Debug Console - + Boost version @@ -2016,6 +2013,11 @@ This label turns red, if the priority is smaller than "medium". Clear console + + + &Scraper + + Yes @@ -2037,7 +2039,7 @@ This label turns red, if the priority is smaller than "medium". - + %1 B %1 بايت @@ -2072,7 +2074,7 @@ This label turns red, if the priority is smaller than "medium". - + Welcome to the Gridcoin RPC console! @@ -2339,22 +2341,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: &القيمة - + Pay &To: ادفع &الى : - + &Label: &وصف : - + Alt+A Alt+A @@ -2380,12 +2382,12 @@ This label turns red, if the priority is smaller than "medium". إدخال تسمية لهذا العنوان لإضافته إلى دفتر العناوين الخاص بك - + Form نمودج - + The address to send the payment to (e.g. Sjz75uKHzUQJnSdzvpiigEGxseKkDhQToX) @@ -2400,17 +2402,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2649,12 +2646,37 @@ This label turns red, if the priority is smaller than "medium". - - Generated, PoS + + MINED - POS - + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + @@ -2721,11 +2743,7 @@ This label turns red, if the priority is smaller than "medium". - Information - معلومات - - - + , has not been successfully broadcast yet , لم يتم حتى الآن البث بنجاح @@ -2748,16 +2766,12 @@ This label turns red, if the priority is smaller than "medium". - + Source المصدر - Generated - تم اصداره. - - - + From من @@ -2813,14 +2827,6 @@ This label turns red, if the priority is smaller than "medium". Comment تعليق - - Transaction ID - رقم المعاملة - - - Transaction - معاملة - Amount @@ -2850,12 +2856,7 @@ This label turns red, if the priority is smaller than "medium". يبين هذا الجزء وصفا مفصلا لهده المعاملة - - View Attachment - - - - + Execute Contract @@ -2864,21 +2865,11 @@ This label turns red, if the priority is smaller than "medium". C&lose ا&غلاق - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date تاريخ @@ -2935,32 +2926,12 @@ This label turns red, if the priority is smaller than "medium". - - Mined - DPOR - - - - - Minted - (Local) DPOR - - - - - Mined - PoR - - - - - Mined - Interest - - - - + Destination address of transaction. - + Open until %1 مفتوح حتى %1 @@ -2980,7 +2951,7 @@ This label turns red, if the priority is smaller than "medium". ولدت ولكن لم تقبل - + Received with استقبل مع @@ -3000,12 +2971,42 @@ This label turns red, if the priority is smaller than "medium". دفع لنفسك - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) غير متوفر - + Transaction status. Hover over this field to show number of confirmations. حالة المعاملة. تحوم حول هذا الحقل لعرض عدد التأكيدات. @@ -3194,17 +3195,10 @@ This label turns red, if the priority is smaller than "medium". الى - - UpgradeDialog - - Hide - إخفاء - - VotingChartDialog - + Poll Results @@ -3348,7 +3342,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3381,7 +3375,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3389,17 +3383,17 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: خيارات: - + Specify data directory حدد مجلد المعلومات - + Failed to listen on any port. Use -listen=0 if you want this. فشل في الاستماع على أي منفذ. استخدام الاستماع = 0 إذا كنت تريد هذا. @@ -3414,7 +3408,7 @@ This label turns red, if the priority is smaller than "medium". عنوان البروكسي غير صحيح : '%s' - + None @@ -3504,6 +3498,16 @@ This label turns red, if the priority is smaller than "medium". Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3564,6 +3568,11 @@ This label turns red, if the priority is smaller than "medium". ERROR + + + Entire balance reserved + + Expires @@ -3629,11 +3638,6 @@ This label turns red, if the priority is smaller than "medium". Message رسالة - - - Messate Type - - Miner: @@ -3670,12 +3674,7 @@ This label turns red, if the priority is smaller than "medium". - - No coins; - - - - + Offline; @@ -3685,12 +3684,7 @@ This label turns red, if the priority is smaller than "medium". - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3740,7 +3734,7 @@ This label turns red, if the priority is smaller than "medium". - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -3755,12 +3749,12 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo - + Loading wallet... تحميل المحفظه - + Cannot downgrade wallet لا يمكن تخفيض قيمة المحفظة @@ -3770,22 +3764,22 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo لايمكن كتابة العنوان الافتراضي - + Rescanning... إعادة مسح - + Done loading انتهاء التحميل - + Error خطأ - + An error occurred while setting up the RPC port %u for listening on IPv6, falling back to IPv4: %s @@ -3817,7 +3811,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Boinc Mining @@ -3827,7 +3821,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error obtaining next project. Error 06172014. @@ -3867,12 +3861,32 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -3917,7 +3931,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + List commands @@ -3932,7 +3946,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + This help message @@ -3962,12 +3976,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3977,12 +3991,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Allow DNS lookups for -addnode, -seednode and -connect - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3992,12 +4006,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Add a node to connect to and attempt to keep the connection open - + Connect only to the specified node(s) @@ -4007,22 +4021,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Specify your own public address - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -4032,27 +4046,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + 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: 5000) @@ -4062,7 +4076,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Use UPnP to map the listening port (default: 1 when listening) @@ -4072,12 +4086,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) @@ -4087,7 +4101,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Run in the background as a daemon and accept commands @@ -4097,7 +4111,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Output extra debugging information. Implies all other -debug* options @@ -4107,7 +4121,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Prepend debug output with timestamp @@ -4137,7 +4151,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -4147,12 +4161,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Send commands to node running on <ip> (default: 127.0.0.1) - + Execute command when the best block changes (%s in cmd is replaced by block hash) @@ -4162,12 +4176,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Require a confirmations for change (default: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -4177,7 +4191,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Upgrade wallet to latest format @@ -4192,12 +4206,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Attempt to recover private keys from a corrupt wallet.dat - + How many blocks to check at startup (default: 2500, 0 = all) @@ -4212,12 +4226,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Block creation options: - + Set minimum block size in bytes (default: 0) @@ -4227,12 +4241,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -4252,17 +4266,17 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid amount for -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - + Invalid amount for -mininput=<amount>: '%s' @@ -4272,22 +4286,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4297,10 +4311,15 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4317,7 +4336,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Unknown -socks proxy version requested: %i @@ -4327,12 +4346,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid -tor address: '%s' - + Cannot resolve -bind address: '%s' @@ -4342,7 +4361,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid amount for -reservebalance=<amount> @@ -4357,22 +4376,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete - + Error loading wallet.dat @@ -4392,17 +4411,17 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4412,37 +4431,37 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - + Warning: Disk space is low! diff --git a/src/qt/locale/bitcoin_be_BY.ts b/src/qt/locale/bitcoin_be_BY.ts index ea7edf668c..2ad56315cd 100644 --- a/src/qt/locale/bitcoin_be_BY.ts +++ b/src/qt/locale/bitcoin_be_BY.ts @@ -299,12 +299,12 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + Sign &message... Падпісаць паведамленне... - + &Overview Агляд @@ -334,7 +334,7 @@ This product includes software developed by the OpenSSL Project for use in the O Выйсці з праграмы - + &Options... Опцыі... @@ -343,19 +343,11 @@ This product includes software developed by the OpenSSL Project for use in the O &Encrypt Wallet... Зашыфраваць Гаманец... - - &Backup Wallet... - Стварыць копію гаманца... - &Change Passphrase... &Change Passphrase... - - Backup wallet to another location - Зрабіце копію гаманца ў іншае месца - Change the passphrase used for wallet encryption @@ -377,12 +369,12 @@ This product includes software developed by the OpenSSL Project for use in the O Праверыць паведамленне... - + Wallet Гаманец - + &Send Даслаць @@ -392,12 +384,12 @@ This product includes software developed by the OpenSSL Project for use in the O Атрымаць - + &Show / Hide &Паказаць / Схаваць - + &File Ф&айл @@ -407,12 +399,12 @@ This product includes software developed by the OpenSSL Project for use in the O Наладкі - + &Help Дапамога - + %n second(s) ago @@ -453,12 +445,12 @@ This product includes software developed by the OpenSSL Project for use in the O Сінхранізавана - + Catching up... Наганяем... - + Sent transaction Дасланыя транзакцыі @@ -468,16 +460,12 @@ This product includes software developed by the OpenSSL Project for use in the O Прынятыя транзакцыі - 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> - + Send coins to a Gridcoin address @@ -543,7 +531,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Encrypt or decrypt wallet @@ -578,12 +566,12 @@ This product includes software developed by the OpenSSL Project for use in the O Экспартаваць гэтыя звесткі у файл - + Gridcoin - + &About Gridcoin @@ -593,28 +581,12 @@ This product includes software developed by the OpenSSL Project for use in the O - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -624,7 +596,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Diagnostics @@ -649,14 +621,14 @@ This product includes software developed by the OpenSSL Project for use in the O - + [testnet] [testnet] - + Gridcoin client @@ -675,7 +647,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Last received block was generated %1. @@ -728,7 +700,7 @@ Address: %4 - + Wallet is <b>encrypted</b> and currently %1 @@ -775,7 +747,7 @@ Address: %4 - + %n second(s) @@ -821,17 +793,42 @@ Address: %4 - - &Community + + Scraper: waiting on wallet to sync. - - &Advanced + + Scraper: superblock not needed - inactive. - + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + + &Community + + + + URI handling @@ -843,7 +840,7 @@ Address: %4 - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. @@ -851,7 +848,7 @@ Address: %4 ClientModel - + Network Alert @@ -888,10 +885,6 @@ Address: %4 (un)select all (не)выбраць ўсё - - List mode - Рэжым спіса - Amount @@ -1302,7 +1295,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1748,6 +1741,14 @@ This label turns red, if the priority is smaller than "medium". + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1809,17 +1810,17 @@ This label turns red, if the priority is smaller than "medium". RPCConsole - + &Information Інфармацыя - + Gridcoin - Debug Console - + Boost version @@ -1836,7 +1837,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A @@ -1985,6 +1986,11 @@ This label turns red, if the priority is smaller than "medium". Clear console + + + &Scraper + + Yes @@ -2011,7 +2017,7 @@ This label turns red, if the priority is smaller than "medium". - + %1 B @@ -2308,22 +2314,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: Колькасць: - + Pay &To: Заплаціць да: - + &Label: Метка: - + Alt+A Alt+A @@ -2349,12 +2355,12 @@ This label turns red, if the priority is smaller than "medium". Увядзіце пазнаку гэтаму адрасу, каб дадаць яго ў адрасную кнігу - + Form Форма - + The address to send the payment to (e.g. Sjz75uKHzUQJnSdzvpiigEGxseKkDhQToX) @@ -2369,17 +2375,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2606,12 +2607,7 @@ This label turns red, if the priority is smaller than "medium". - - Generated, PoS - - - - + unknown невядома @@ -2661,17 +2657,13 @@ This label turns red, if the priority is smaller than "medium". Transaction Inputs - - Transaction ID - ID - Amount Колькасць - + , broadcast through %n node(s) @@ -2681,12 +2673,42 @@ This label turns red, if the priority is smaller than "medium". - + Source - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From @@ -2755,10 +2777,6 @@ This label turns red, if the priority is smaller than "medium". Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - Інфармацыя - true @@ -2770,7 +2788,7 @@ This label turns red, if the priority is smaller than "medium". - + Open for %n more block(s) @@ -2802,12 +2820,7 @@ This label turns red, if the priority is smaller than "medium". - - View Attachment - - - - + Execute Contract @@ -2816,21 +2829,11 @@ This label turns red, if the priority is smaller than "medium". C&lose Зачыніць - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Дата @@ -2850,7 +2853,7 @@ This label turns red, if the priority is smaller than "medium". Згенеравана, але не прынята - + Received with Прынята з @@ -2870,12 +2873,42 @@ This label turns red, if the priority is smaller than "medium". Плацёж самому сабе - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (n/a) - + Transaction status. Hover over this field to show number of confirmations. Статус транзакцыі. Навядзіце курсар на гэтае поле, каб паказаць колькасць пацверджанняў. @@ -2895,7 +2928,7 @@ This label turns red, if the priority is smaller than "medium". Колькасць аднятая ці даданая да балансу. - + Address Адрас @@ -2949,27 +2982,7 @@ This label turns red, if the priority is smaller than "medium". - - Mined - DPOR - - - - - Minted - (Local) DPOR - - - - - Mined - PoR - - - - - Mined - Interest - - - - + Destination address of transaction. @@ -3146,7 +3159,7 @@ This label turns red, if the priority is smaller than "medium". VotingChartDialog - + Poll Results @@ -3290,7 +3303,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3323,7 +3336,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3331,17 +3344,17 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: Опцыі: - + Specify data directory Вызначыць каталог даных - + Accept command line and JSON-RPC commands Прымаць камандны радок і JSON-RPC каманды @@ -3361,7 +3374,7 @@ This label turns red, if the priority is smaller than "medium". - + Boinc Mining @@ -3371,7 +3384,7 @@ This label turns red, if the priority is smaller than "medium". - + Error obtaining next project. Error 06172014. @@ -3406,12 +3419,32 @@ This label turns red, if the priority is smaller than "medium". - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -3451,12 +3484,12 @@ This label turns red, if the priority is smaller than "medium". Пароль для JSON-RPC злучэнняў - + Execute command when the best block changes (%s in cmd is replaced by block hash) Выканаць каманду калі лепшы блок зменіцца (%s замяняецца на хэш блока) - + Loading addresses... Загружаем адрасы... @@ -3476,37 +3509,37 @@ This label turns red, if the priority is smaller than "medium". Загружаем гаманец... - + Cannot downgrade wallet Немагчыма рэгрэсаваць гаманец - + Rescanning... Перасканаванне... - + Done loading Загрузка выканана - + Error Памылка - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -3516,37 +3549,37 @@ This label turns red, if the priority is smaller than "medium". - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount - + To use the %s option - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -3668,6 +3701,16 @@ If the file does not exist, create it with owner-readable-only file permissions. Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3728,6 +3771,11 @@ If the file does not exist, create it with owner-readable-only file permissions. ERROR + + + Entire balance reserved + + Expires @@ -3788,11 +3836,6 @@ If the file does not exist, create it with owner-readable-only file permissions. Message Паведамленне - - - Messate Type - - Miner: @@ -3829,12 +3872,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - No coins; - - - - + Offline; @@ -3844,12 +3882,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3919,7 +3952,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + List commands @@ -3934,7 +3967,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + This help message @@ -3964,12 +3997,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3979,12 +4012,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Allow DNS lookups for -addnode, -seednode and -connect - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3994,12 +4027,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Add a node to connect to and attempt to keep the connection open - + Connect only to the specified node(s) @@ -4009,22 +4042,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Specify your own public address - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -4034,27 +4067,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + 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: 5000) @@ -4064,7 +4097,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Use UPnP to map the listening port (default: 1 when listening) @@ -4074,22 +4107,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) - + Use the test network - + Output extra debugging information. Implies all other -debug* options @@ -4099,7 +4132,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Prepend debug output with timestamp @@ -4114,7 +4147,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -4124,22 +4157,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Send commands to node running on <ip> (default: 127.0.0.1) - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - + Require a confirmations for change (default: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -4149,7 +4182,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Upgrade wallet to latest format @@ -4164,12 +4197,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Attempt to recover private keys from a corrupt wallet.dat - + How many blocks to check at startup (default: 2500, 0 = all) @@ -4184,12 +4217,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Block creation options: - + Set minimum block size in bytes (default: 0) @@ -4199,12 +4232,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -4224,17 +4257,17 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid amount for -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - + Invalid amount for -mininput=<amount>: '%s' @@ -4244,22 +4277,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4269,10 +4302,15 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4289,7 +4327,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Unknown -socks proxy version requested: %i @@ -4299,7 +4337,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid -proxy address: '%s' @@ -4309,22 +4347,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Cannot resolve -bind address: '%s' - + Failed to listen on any port. Use -listen=0 if you want this. - + Cannot resolve -externalip address: '%s' - + Invalid amount for -reservebalance=<amount> @@ -4339,32 +4377,32 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete - + Error loading wallet.dat - + Cannot write default address - + Importing blockchain data file. @@ -4379,12 +4417,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - + Warning: Disk space is low! diff --git a/src/qt/locale/bitcoin_bg.ts b/src/qt/locale/bitcoin_bg.ts index f401979575..261febb10e 100644 --- a/src/qt/locale/bitcoin_bg.ts +++ b/src/qt/locale/bitcoin_bg.ts @@ -299,12 +299,12 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + Sign &message... Подписване на &съобщение... - + &Overview &Баланс @@ -334,7 +334,7 @@ This product includes software developed by the OpenSSL Project for use in the O Изход от приложението - + &Options... &Опции... @@ -343,19 +343,11 @@ This product includes software developed by the OpenSSL Project for use in the O &Encrypt Wallet... &Шифриране на портфейла... - - &Backup Wallet... - &Запазване на портфейла... - &Change Passphrase... &Смяна на паролата... - - Backup wallet to another location - Запазване на портфейла на друго място - Change the passphrase used for wallet encryption @@ -377,12 +369,12 @@ This product includes software developed by the OpenSSL Project for use in the O &Проверка на съобщение... - + Wallet Портфейл - + &Send &Изпращане @@ -392,12 +384,12 @@ This product includes software developed by the OpenSSL Project for use in the O &Получаване - + &Show / Hide &Показване / Скриване - + &File &Файл @@ -407,12 +399,12 @@ This product includes software developed by the OpenSSL Project for use in the O &Настройки - + &Help &Помощ - + %n second(s) ago @@ -449,12 +441,12 @@ This product includes software developed by the OpenSSL Project for use in the O Синхронизиран - + Catching up... Зарежда блокове... - + Sent transaction Изходяща транзакция @@ -464,16 +456,12 @@ This product includes software developed by the OpenSSL Project for use in the O Входяща транзакция - 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> - + Send coins to a Gridcoin address @@ -539,7 +527,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Encrypt or decrypt wallet @@ -574,12 +562,12 @@ This product includes software developed by the OpenSSL Project for use in the O Запишете данните от текущия раздел във файл - + Gridcoin - + &About Gridcoin @@ -589,28 +577,12 @@ This product includes software developed by the OpenSSL Project for use in the O - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -620,7 +592,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Diagnostics @@ -645,14 +617,14 @@ This product includes software developed by the OpenSSL Project for use in the O - + [testnet] [testnet] - + Gridcoin client @@ -670,7 +642,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Last received block was generated %1. @@ -723,7 +695,7 @@ Address: %4 - + Wallet is <b>encrypted</b> and currently %1 @@ -770,7 +742,7 @@ Address: %4 - + %n second(s) @@ -812,17 +784,42 @@ Address: %4 - - &Community + + Scraper: waiting on wallet to sync. - - &Advanced + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + + &Community - + URI handling Справяне с URI @@ -834,7 +831,7 @@ Address: %4 - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. @@ -842,7 +839,7 @@ Address: %4 ClientModel - + Network Alert @@ -884,10 +881,6 @@ Address: %4 (un)select all (Пре)махни всички - - List mode - Списъчен режим - Amount @@ -1293,7 +1286,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1391,10 +1384,6 @@ This label turns red, if the priority is smaller than "medium". Map port using &UPnP Отваряне на входящия порт чрез &UPnP - - Proxy &IP: - Прокси & АйПи: - &Port: @@ -1743,6 +1732,14 @@ This label turns red, if the priority is smaller than "medium". + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1804,7 +1801,7 @@ This label turns red, if the priority is smaller than "medium". RPCConsole - + @@ -1816,7 +1813,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A Несъществуващ @@ -1866,7 +1863,12 @@ This label turns red, if the priority is smaller than "medium". &Конзола - + + &Scraper + + + + &Network Traffic &Мрежов Трафик @@ -1921,7 +1923,7 @@ This label turns red, if the priority is smaller than "medium". Въведeте </b>помощ</b> за да видите наличните команди. - + %1 B %1 Байт @@ -1941,12 +1943,12 @@ This label turns red, if the priority is smaller than "medium". %1 Гигабайт - + Gridcoin - Debug Console - + Boost version @@ -2036,7 +2038,7 @@ This label turns red, if the priority is smaller than "medium". - + Welcome to the Gridcoin RPC console! @@ -2303,22 +2305,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: С&ума: - + Pay &To: Плати &На: - + &Label: &Име: - + Alt+A Alt+A @@ -2344,12 +2346,12 @@ This label turns red, if the priority is smaller than "medium". Въведете име за този адрес, за да го добавите в списъка с адреси - + Form Формуляр - + The address to send the payment to (e.g. Sjz75uKHzUQJnSdzvpiigEGxseKkDhQToX) @@ -2364,17 +2366,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2602,16 +2599,42 @@ This label turns red, if the priority is smaller than "medium". - + Source Източник - Generated - Издадени + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + - + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From От @@ -2717,14 +2740,6 @@ This label turns red, if the priority is smaller than "medium". Transaction Inputs - - Transaction ID - ID - - - Transaction - Транзакция - Amount @@ -2741,7 +2756,7 @@ This label turns red, if the priority is smaller than "medium". false - + conflicted @@ -2758,13 +2773,8 @@ This label turns red, if the priority is smaller than "medium". Generated in CoinBase - - - Generated, PoS - - - + matures in %n more block(s) @@ -2776,12 +2786,8 @@ This label turns red, if the priority is smaller than "medium". Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - Информация - - + Open for %n more block(s) @@ -2802,12 +2808,7 @@ This label turns red, if the priority is smaller than "medium". - - View Attachment - - - - + Execute Contract @@ -2816,21 +2817,11 @@ This label turns red, if the priority is smaller than "medium". C&lose Затвори - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Дата @@ -2870,7 +2861,7 @@ This label turns red, if the priority is smaller than "medium". Генерирана, но отхвърлена от мрежата - + Received with Получени @@ -2890,12 +2881,42 @@ This label turns red, if the priority is smaller than "medium". Плащане към себе си - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (n/a) - + Transaction status. Hover over this field to show number of confirmations. Състояние на транзакцията. Задръжте върху това поле за брой потвърждения. @@ -2915,7 +2936,7 @@ This label turns red, if the priority is smaller than "medium". Сума извадена или добавена към баланса. - + Address Адрес @@ -2948,27 +2969,7 @@ This label turns red, if the priority is smaller than "medium". - - Mined - DPOR - - - - - Minted - (Local) DPOR - - - - - Mined - PoR - - - - - Mined - Interest - - - - + Destination address of transaction. @@ -3142,17 +3143,10 @@ This label turns red, if the priority is smaller than "medium". - - UpgradeDialog - - Hide - Скрий - - VotingChartDialog - + Poll Results @@ -3296,7 +3290,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3329,7 +3323,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3337,32 +3331,32 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: Опции: - + Specify data directory Определете директория за данните - + Connect to a node to retrieve peer addresses, and disconnect Свържете се към сървър за да можете да извлечете адресите на пиърите след което се разкачете. - + Specify your own public address Въведете Ваш публичен адрес - + Failed to listen on any port. Use -listen=0 if you want this. Провалено "слушане" на всеки порт. Използвайте -listen=0 ако искате това. - + Send trace/debug info to console instead of debug.log file Изпрати локализиращата или дебъг информацията към конзолата, вместо файлът debug.log @@ -3377,7 +3371,7 @@ This label turns red, if the priority is smaller than "medium". Парола за JSON-RPC връзките - + Loading addresses... Зареждане на адреси... @@ -3387,7 +3381,7 @@ This label turns red, if the priority is smaller than "medium". Невалиден -proxy address: '%s' - + Acceptable ciphers (default: TLSv1.2+HIGH:TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!3DES:@STRENGTH) @@ -3402,7 +3396,7 @@ This label turns red, if the priority is smaller than "medium". - + Boinc Mining @@ -3412,7 +3406,7 @@ This label turns red, if the priority is smaller than "medium". - + Error obtaining next project. Error 06172014. @@ -3462,12 +3456,32 @@ This label turns red, if the priority is smaller than "medium". - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -3477,22 +3491,22 @@ This label turns red, if the priority is smaller than "medium". Преразглеждане на последовтелността от блокове... - + Done loading Зареждането е завършено - + Error Грешка - + To use the %s option - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -3524,12 +3538,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Gridcoin version - + Unable to extract Share Type. Vote likely > 6 months old @@ -3549,7 +3563,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + List commands @@ -3564,7 +3578,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + This help message @@ -3594,12 +3608,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3609,12 +3623,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Allow DNS lookups for -addnode, -seednode and -connect - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3624,27 +3638,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Add a node to connect to and attempt to keep the connection open - + Connect only to the specified node(s) - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -3654,27 +3668,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + 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: 5000) @@ -3684,7 +3698,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Use UPnP to map the listening port (default: 1 when listening) @@ -3694,12 +3708,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) @@ -3709,7 +3723,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Run in the background as a daemon and accept commands @@ -3719,7 +3733,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Output extra debugging information. Implies all other -debug* options @@ -3729,7 +3743,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Prepend debug output with timestamp @@ -3744,7 +3758,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -3754,12 +3768,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Send commands to node running on <ip> (default: 127.0.0.1) - + Execute command when the best block changes (%s in cmd is replaced by block hash) @@ -3769,12 +3783,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Require a confirmations for change (default: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -3784,7 +3798,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Upgrade wallet to latest format @@ -3799,12 +3813,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Attempt to recover private keys from a corrupt wallet.dat - + How many blocks to check at startup (default: 2500, 0 = all) @@ -3819,12 +3833,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Block creation options: - + Set minimum block size in bytes (default: 0) @@ -3834,12 +3848,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -3859,17 +3873,17 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid amount for -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - + Invalid amount for -mininput=<amount>: '%s' @@ -3879,22 +3893,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -3904,10 +3918,15 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -3924,7 +3943,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Unknown -socks proxy version requested: %i @@ -3934,12 +3953,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid -tor address: '%s' - + None @@ -4029,6 +4048,16 @@ If the file does not exist, create it with owner-readable-only file permissions. Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -4099,6 +4128,11 @@ If the file does not exist, create it with owner-readable-only file permissions. ERROR + + + Entire balance reserved + + Expires @@ -4159,11 +4193,6 @@ If the file does not exist, create it with owner-readable-only file permissions. Message Съобщение - - - Messate Type - - Miner: @@ -4200,12 +4229,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - No coins; - - - - + Offline; @@ -4215,12 +4239,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -4285,7 +4304,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error loading blkindex.dat @@ -4295,27 +4314,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete - + Error loading wallet.dat - + Cannot downgrade wallet @@ -4325,7 +4344,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Importing blockchain data file. @@ -4340,17 +4359,17 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4360,37 +4379,37 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - + Warning: Disk space is low! diff --git a/src/qt/locale/bitcoin_bs.ts b/src/qt/locale/bitcoin_bs.ts index 6b6fd9dd12..32106fdd05 100644 --- a/src/qt/locale/bitcoin_bs.ts +++ b/src/qt/locale/bitcoin_bs.ts @@ -299,12 +299,12 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + Sign &message... - + &Overview @@ -354,7 +354,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Options... @@ -374,12 +374,12 @@ This product includes software developed by the OpenSSL Project for use in the O - + Send coins to a Gridcoin address - + Modify configuration options for Gridcoin @@ -414,7 +414,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Gridcoin @@ -424,12 +424,12 @@ This product includes software developed by the OpenSSL Project for use in the O - + &About Gridcoin - + &Show / Hide @@ -459,7 +459,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &File @@ -469,19 +469,19 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Help - + [testnet] - + Gridcoin client @@ -536,7 +536,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Date: %1 Amount: %2 Type: %3 @@ -544,7 +544,7 @@ Address: %4 - + Wallet is <b>encrypted</b> and currently %1 @@ -569,7 +569,7 @@ Address: %4 - + %n second(s) @@ -615,7 +615,37 @@ Address: %4 - + + Scraper: waiting on wallet to sync. + + + + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + &Send @@ -671,28 +701,12 @@ Address: %4 - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -702,7 +716,7 @@ Address: %4 - + &Diagnostics @@ -717,27 +731,22 @@ Address: %4 - + &Community - - &Advanced - - - - + Up to date - + Catching up... - + Last received block was generated %1. @@ -792,7 +801,7 @@ Address: %4 - + URI handling @@ -831,7 +840,7 @@ Address: %4 - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. @@ -839,7 +848,7 @@ Address: %4 ClientModel - + Network Alert @@ -1286,7 +1295,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1732,6 +1741,14 @@ This label turns red, if the priority is smaller than "medium". + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1793,7 +1810,7 @@ This label turns red, if the priority is smaller than "medium". RPCConsole - + Client name @@ -1810,7 +1827,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A @@ -1845,12 +1862,12 @@ This label turns red, if the priority is smaller than "medium". - + Gridcoin - Debug Console - + Boost version @@ -1969,6 +1986,11 @@ This label turns red, if the priority is smaller than "medium". Clear console + + + &Scraper + + Yes @@ -1995,7 +2017,7 @@ This label turns red, if the priority is smaller than "medium". - + %1 B @@ -2297,7 +2319,7 @@ This label turns red, if the priority is smaller than "medium". - + The address to send the payment to (e.g. Sjz75uKHzUQJnSdzvpiigEGxseKkDhQToX) @@ -2307,33 +2329,28 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - + A&mount: - - Add Attachment - - - - + Enter a label for this address to add it to your address book - + &Label: - + Pay &To: @@ -2600,12 +2617,42 @@ This label turns red, if the priority is smaller than "medium". - + Source - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From @@ -2736,7 +2783,7 @@ This label turns red, if the priority is smaller than "medium". - + , has not been successfully broadcast yet @@ -2755,12 +2802,7 @@ This label turns red, if the priority is smaller than "medium". - - Generated, PoS - - - - + unknown @@ -2778,7 +2820,7 @@ This label turns red, if the priority is smaller than "medium". - + Execute Contract @@ -2787,26 +2829,11 @@ This label turns red, if the priority is smaller than "medium". C&lose - - - View Attachment - - - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date @@ -2850,28 +2877,8 @@ This label turns red, if the priority is smaller than "medium". This block was not received by any other nodes<br> and will probably not be accepted! - - - Mined - DPOR - - - - - Minted - (Local) DPOR - - - - - Mined - PoR - - - - - Mined - Interest - - - + Open for %n more block(s) @@ -2900,7 +2907,7 @@ This label turns red, if the priority is smaller than "medium". - + Received with @@ -2920,12 +2927,42 @@ This label turns red, if the priority is smaller than "medium". - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) - + Transaction status. Hover over this field to show number of confirmations. @@ -3122,7 +3159,7 @@ This label turns red, if the priority is smaller than "medium". VotingChartDialog - + Poll Results @@ -3266,7 +3303,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3299,7 +3336,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3307,17 +3344,17 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Gridcoin version - + Usage: - + List commands @@ -3332,7 +3369,7 @@ This label turns red, if the priority is smaller than "medium". - + Specify wallet file (within data directory) @@ -3352,32 +3389,32 @@ This label turns red, if the priority is smaller than "medium". - + Maintain at most <n> connections to peers (default: 125) - + Connect to a node to retrieve peer addresses, and disconnect - + Specify your own public address - + Bind to given address. Use [host]:port notation for IPv6 - + Threshold for disconnecting misbehaving peers (default: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) @@ -3407,7 +3444,7 @@ This label turns red, if the priority is smaller than "medium". - + Error: Transaction creation failed @@ -3427,7 +3464,12 @@ This label turns red, if the priority is smaller than "medium". - + + Out of range exception while parsing Transaction Message -> + + + + Run in the background as a daemon and accept commands @@ -3447,7 +3489,7 @@ This label turns red, if the priority is smaller than "medium". - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -3587,6 +3629,16 @@ This label turns red, if the priority is smaller than "medium". Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3657,6 +3709,11 @@ This label turns red, if the priority is smaller than "medium". ERROR + + + Entire balance reserved + + Expires @@ -3693,12 +3750,22 @@ This label turns red, if the priority is smaller than "medium". - + + No coins + + + + + No current polls + + + + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -3713,7 +3780,7 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo - + Send command to -server or gridcoind @@ -3723,12 +3790,12 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo - + Listen for connections on <port> (default: 32749 or testnet: 32748) - + Acceptable ciphers (default: TLSv1.2+HIGH:TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!3DES:@STRENGTH) @@ -3743,7 +3810,7 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo - + Boinc Mining @@ -3753,7 +3820,7 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo - + Error obtaining next project. Error 06172014. @@ -3837,11 +3904,6 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo Message - - - Messate Type - - Miner: @@ -3883,12 +3945,7 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo - - No coins; - - - - + Offline; @@ -3898,18 +3955,18 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo - - Out of rance exception while parsing Transaction Message -> + + Output extra debugging information. Implies all other -debug* options - Output extra debugging information. Implies all other -debug* options + Output extra network debugging information - Output extra network debugging information + POR Blocks Verified @@ -4028,12 +4085,17 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo - + + Waiting for coins to mature + + + + Weight - + Use UPnP to map the listening port (default: 0) @@ -4058,7 +4120,7 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo - + Warning: Disk space is low! @@ -4068,12 +4130,12 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo - + Password for JSON-RPC connections - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) @@ -4088,12 +4150,12 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo - + Send commands to node running on <ip> (default: 127.0.0.1) - + Execute command when the best block changes (%s in cmd is replaced by block hash) @@ -4103,12 +4165,12 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo - + Require a confirmations for change (default: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -4118,7 +4180,7 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo - + Upgrade wallet to latest format @@ -4133,7 +4195,7 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo - + How many blocks to check at startup (default: 2500, 0 = all) @@ -4148,7 +4210,7 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo - + Use OpenSSL (https) for JSON-RPC connections @@ -4163,7 +4225,7 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo - + Initialization sanity check failed. Gridcoin is shutting down. @@ -4173,42 +4235,42 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo - + This help message - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Gridcoin - + Unable to bind to %s on this computer (bind returned error %d, %s) - + Connect through socks proxy - + Allow DNS lookups for -addnode, -seednode and -connect - + Loading addresses... @@ -4228,12 +4290,12 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo - + Vote - + Wallet locked; @@ -4243,7 +4305,7 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo - + Error loading wallet.dat @@ -4253,7 +4315,7 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo - + Unknown network specified in -onlynet: '%s' @@ -4263,7 +4325,7 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo - + Cannot resolve -bind address: '%s' @@ -4273,7 +4335,7 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo - + Invalid amount for -paytxfee=<amount>: '%s' @@ -4283,12 +4345,12 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo - + Sending... - + Invalid amount @@ -4303,7 +4365,7 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo - + Add a node to connect to and attempt to keep the connection open @@ -4313,7 +4375,7 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo - + Fee per KB to add to transactions you send @@ -4328,7 +4390,7 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo - + Cannot downgrade wallet @@ -4338,27 +4400,27 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo - + Rescanning... - + Done loading - + To use the %s option - + Error - + You must set rpcpassword=<password> in the configuration file: %s If the file does not exist, create it with owner-readable-only file permissions. diff --git a/src/qt/locale/bitcoin_ca.ts b/src/qt/locale/bitcoin_ca.ts index e6c58ea596..6d3dc539f4 100644 --- a/src/qt/locale/bitcoin_ca.ts +++ b/src/qt/locale/bitcoin_ca.ts @@ -299,12 +299,12 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + Sign &message... Signa el &missatge... - + &Overview &Panorama general @@ -334,7 +334,7 @@ This product includes software developed by the OpenSSL Project for use in the O Surt de l'aplicació - + &Options... &Opcions... @@ -343,19 +343,11 @@ This product includes software developed by the OpenSSL Project for use in the O &Encrypt Wallet... &Encripta el moneder... - - &Backup Wallet... - &Realitza una còpia de seguretat del moneder... - &Change Passphrase... &Canvia la contrasenya... - - Backup wallet to another location - Realitza una còpia de seguretat del moneder a una altra ubicació - Change the passphrase used for wallet encryption @@ -377,12 +369,12 @@ This product includes software developed by the OpenSSL Project for use in the O &Verifica el missatge... - + Wallet Moneder - + &Send &Envia @@ -392,12 +384,12 @@ This product includes software developed by the OpenSSL Project for use in the O &Rep - + &Show / Hide &Mostra / Amaga - + &File &Fitxer @@ -407,12 +399,12 @@ This product includes software developed by the OpenSSL Project for use in the O &Configuració - + &Help &Ajuda - + Processed %n block(s) of transaction history. S'ha processat %n bloc de l'historial de transacció. @@ -425,12 +417,12 @@ This product includes software developed by the OpenSSL Project for use in the O Al dia - + Catching up... S'està posant al dia ... - + Sent transaction Transacció enviada @@ -440,16 +432,12 @@ This product includes software developed by the OpenSSL Project for use in the O Transacció entrant - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - El moneder està <b>encriptat</b> i actualment <b>desbloquejat</b> - - - + Wallet is <b>encrypted</b> and currently <b>locked</b> El moneder està <b>encriptat</b> i actualment <b>bloquejat</b> - + Send coins to a Gridcoin address @@ -515,7 +503,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Encrypt or decrypt wallet @@ -560,7 +548,7 @@ This product includes software developed by the OpenSSL Project for use in the O Exporta les dades de la pestanya actual a un fitxer - + %n second(s) ago @@ -592,7 +580,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Date: %1 Amount: %2 Type: %3 @@ -600,7 +588,7 @@ Address: %4 - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -610,12 +598,12 @@ Address: %4 - + Gridcoin - + &About Gridcoin @@ -625,28 +613,12 @@ Address: %4 - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -656,7 +628,7 @@ Address: %4 - + &Diagnostics @@ -671,14 +643,14 @@ Address: %4 - + [testnet] [testnet] - + Gridcoin client @@ -688,7 +660,7 @@ Address: %4 - + Last received block was generated %1. @@ -733,7 +705,7 @@ Address: %4 - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. @@ -792,7 +764,7 @@ Address: %4 - + %n second(s) @@ -824,17 +796,42 @@ Address: %4 - - &Community + + Scraper: waiting on wallet to sync. - - &Advanced + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. - + + &Community + + + + A fatal error occurred. Gridcoin can no longer continue safely and will quit. @@ -842,7 +839,7 @@ Address: %4 ClientModel - + Network Alert @@ -884,10 +881,6 @@ Address: %4 (un)select all (des)selecciona-ho tot - - List mode - Mode llista - Amount @@ -1293,7 +1286,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1391,10 +1384,6 @@ This label turns red, if the priority is smaller than "medium". Map port using &UPnP Port obert amb &UPnP - - Proxy &IP: - &IP del proxy: - &Port: @@ -1743,6 +1732,14 @@ This label turns red, if the priority is smaller than "medium". + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1804,7 +1801,7 @@ This label turns red, if the priority is smaller than "medium". RPCConsole - + @@ -1816,7 +1813,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A N/A @@ -1896,7 +1893,12 @@ This label turns red, if the priority is smaller than "medium". Fora: - + + &Scraper + + + + Debug log file Fitxer de registre de depuració @@ -1926,7 +1928,7 @@ This label turns red, if the priority is smaller than "medium". Escriviu <b>help<\b> per a obtenir un llistat de les ordres disponibles. - + %1 B %1 B @@ -1961,12 +1963,12 @@ This label turns red, if the priority is smaller than "medium". - + Gridcoin - Debug Console - + Boost version @@ -2036,7 +2038,7 @@ This label turns red, if the priority is smaller than "medium". - + Welcome to the Gridcoin RPC console! @@ -2303,22 +2305,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: Q&uantitat: - + Pay &To: Paga &a: - + &Label: &Etiqueta: - + Alt+A Alta+A @@ -2344,12 +2346,12 @@ This label turns red, if the priority is smaller than "medium". Introduïu una etiqueta per a aquesta adreça per afegir-la a la llibreta d'adreces - + Form Formulari - + The address to send the payment to (e.g. Sjz75uKHzUQJnSdzvpiigEGxseKkDhQToX) @@ -2364,17 +2366,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2602,16 +2599,42 @@ This label turns red, if the priority is smaller than "medium". - + Source Font - Generated - Generada + + MINED - POS + - + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From De @@ -2717,18 +2740,6 @@ This label turns red, if the priority is smaller than "medium". Transaction Inputs - - Transaction ID - ID de la transacció - - - Transaction - Transacció - - - Inputs - Entrades - Amount @@ -2745,7 +2756,7 @@ This label turns red, if the priority is smaller than "medium". fals - + conflicted @@ -2762,13 +2773,8 @@ This label turns red, if the priority is smaller than "medium". Generated in CoinBase - - - Generated, PoS - - - + matures in %n more block(s) @@ -2780,12 +2786,8 @@ This label turns red, if the priority is smaller than "medium". Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - Informació - - + Open for %n more block(s) @@ -2806,12 +2808,7 @@ This label turns red, if the priority is smaller than "medium". - - View Attachment - - - - + Execute Contract @@ -2820,21 +2817,11 @@ This label turns red, if the priority is smaller than "medium". C&lose &Tanca - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Data @@ -2874,7 +2861,7 @@ This label turns red, if the priority is smaller than "medium". Generat però no acceptat - + Received with Rebuda amb @@ -2894,12 +2881,42 @@ This label turns red, if the priority is smaller than "medium". Pagament a un mateix - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (n/a) - + Transaction status. Hover over this field to show number of confirmations. Estat de la transacció. Desplaceu-vos sobre aquest camp per mostrar el nombre de confirmacions. @@ -2919,7 +2936,7 @@ This label turns red, if the priority is smaller than "medium". Import extret o afegit del balanç. - + Address Adreça @@ -2952,27 +2969,7 @@ This label turns red, if the priority is smaller than "medium". - - Mined - DPOR - - - - - Minted - (Local) DPOR - - - - - Mined - PoR - - - - - Mined - Interest - - - - + Destination address of transaction. @@ -3146,17 +3143,10 @@ This label turns red, if the priority is smaller than "medium". - - UpgradeDialog - - Hide - Amaga - - VotingChartDialog - + Poll Results @@ -3300,7 +3290,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3333,7 +3323,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3341,37 +3331,37 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: Opcions: - + Specify data directory Especifica el directori de dades - + Connect to a node to retrieve peer addresses, and disconnect Connecta al node per obtenir les adreces de les connexions, i desconnecta - + Specify your own public address Especifiqueu la vostra adreça pública - + Accept command line and JSON-RPC commands Accepta la línia d'ordres i ordres JSON-RPC - + Run in the background as a daemon and accept commands Executa en segon pla com a programa dimoni i accepta ordres - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) Executa una ordre quan una transacció del moneder canviï (%s en cmd es canvia per TxID) @@ -3381,12 +3371,12 @@ This label turns red, if the priority is smaller than "medium". Opcions de la creació de blocs: - + Failed to listen on any port. Use -listen=0 if you want this. Ha fallat escoltar a qualsevol port. Feu servir -listen=0 si voleu fer això. - + Specify configuration file (default: gridcoinresearch.conf) @@ -3416,7 +3406,7 @@ This label turns red, if the priority is smaller than "medium". Contrasenya per a connexions JSON-RPC - + Execute command when the best block changes (%s in cmd is replaced by block hash) Executa l'ordre quan el millor bloc canviï (%s en cmd es reemplaça per un resum de bloc) @@ -3426,7 +3416,7 @@ This label turns red, if the priority is smaller than "medium". Permet consultes DNS per a -addnode, -seednode i -connect - + Loading addresses... S'estan carregant les adreces... @@ -3436,12 +3426,12 @@ This label turns red, if the priority is smaller than "medium". Adreça -proxy invalida: '%s' - + Unknown network specified in -onlynet: '%s' Xarxa desconeguda especificada a -onlynet: '%s' - + Insufficient funds Balanç insuficient @@ -3451,17 +3441,17 @@ This label turns red, if the priority is smaller than "medium". S'està carregant l'índex de blocs... - + Add a node to connect to and attempt to keep the connection open Afegeix un node per a connectar-s'hi i intenta mantenir-hi la connexió oberta - + Loading wallet... S'està carregant el moneder... - + Cannot downgrade wallet No es pot reduir la versió del moneder @@ -3471,22 +3461,22 @@ This label turns red, if the priority is smaller than "medium". No es pot escriure l'adreça per defecte - + Rescanning... S'està reescanejant... - + Done loading Ha acabat la càrrega - + Error Error - + This help message @@ -3511,12 +3501,12 @@ This label turns red, if the priority is smaller than "medium". - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3526,7 +3516,7 @@ This label turns red, if the priority is smaller than "medium". - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3536,22 +3526,22 @@ This label turns red, if the priority is smaller than "medium". - + Connect only to the specified node(s) - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -3561,22 +3551,22 @@ This label turns red, if the priority is smaller than "medium". - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + Threshold for disconnecting misbehaving peers (default: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) @@ -3671,6 +3661,16 @@ This label turns red, if the priority is smaller than "medium". Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3731,6 +3731,11 @@ This label turns red, if the priority is smaller than "medium". ERROR + + + Entire balance reserved + + Expires @@ -3796,11 +3801,6 @@ This label turns red, if the priority is smaller than "medium". Message Missatge - - - Messate Type - - Miner: @@ -3837,12 +3837,7 @@ This label turns red, if the priority is smaller than "medium". - - No coins; - - - - + Offline; @@ -3852,12 +3847,7 @@ This label turns red, if the priority is smaller than "medium". - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3937,22 +3927,22 @@ This label turns red, if the priority is smaller than "medium". - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) - + Use the test network - + Output extra debugging information. Implies all other -debug* options @@ -3962,7 +3952,7 @@ This label turns red, if the priority is smaller than "medium". - + Prepend debug output with timestamp @@ -3972,7 +3962,7 @@ This label turns red, if the priority is smaller than "medium". - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -3982,7 +3972,7 @@ This label turns red, if the priority is smaller than "medium". - + Send commands to node running on <ip> (default: 127.0.0.1) @@ -3992,7 +3982,7 @@ This label turns red, if the priority is smaller than "medium". - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -4002,7 +3992,7 @@ This label turns red, if the priority is smaller than "medium". - + Upgrade wallet to latest format @@ -4017,7 +4007,7 @@ This label turns red, if the priority is smaller than "medium". - + Attempt to recover private keys from a corrupt wallet.dat @@ -4037,7 +4027,7 @@ This label turns red, if the priority is smaller than "medium". - + Boinc Mining @@ -4047,7 +4037,7 @@ This label turns red, if the priority is smaller than "medium". - + Error obtaining next project. Error 06172014. @@ -4097,12 +4087,32 @@ This label turns red, if the priority is smaller than "medium". - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -4117,12 +4127,12 @@ This label turns red, if the priority is smaller than "medium". - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -4142,17 +4152,17 @@ This label turns red, if the priority is smaller than "medium". - + Invalid amount for -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - + Invalid amount for -mininput=<amount>: '%s' @@ -4162,22 +4172,22 @@ This label turns red, if the priority is smaller than "medium". - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4187,10 +4197,15 @@ This label turns red, if the priority is smaller than "medium". - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4207,17 +4222,17 @@ This label turns red, if the priority is smaller than "medium". - + Unknown -socks proxy version requested: %i - + Invalid -tor address: '%s' - + Cannot resolve -bind address: '%s' @@ -4227,7 +4242,7 @@ This label turns red, if the priority is smaller than "medium". - + Invalid amount for -reservebalance=<amount> @@ -4242,22 +4257,22 @@ This label turns red, if the priority is smaller than "medium". - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete - + Error loading wallet.dat @@ -4277,17 +4292,17 @@ This label turns red, if the priority is smaller than "medium". - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4297,47 +4312,47 @@ This label turns red, if the priority is smaller than "medium". - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - + Warning: Disk space is low! - + To use the %s option - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -4369,12 +4384,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Gridcoin version - + Usage: Ús: @@ -4384,7 +4399,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + List commands diff --git a/src/qt/locale/bitcoin_ca@valencia.ts b/src/qt/locale/bitcoin_ca@valencia.ts index 2cfe023150..6028b30289 100644 --- a/src/qt/locale/bitcoin_ca@valencia.ts +++ b/src/qt/locale/bitcoin_ca@valencia.ts @@ -299,12 +299,12 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + Sign &message... Signa el &missatge... - + &Overview &Panorama general @@ -334,7 +334,7 @@ This product includes software developed by the OpenSSL Project for use in the O Ix de l'aplicació - + &Options... &Opcions... @@ -343,19 +343,11 @@ This product includes software developed by the OpenSSL Project for use in the O &Encrypt Wallet... &Encripta el moneder... - - &Backup Wallet... - &Realitza una còpia de seguretat del moneder... - &Change Passphrase... &Canvia la contrasenya... - - Backup wallet to another location - Realitza una còpia de seguretat del moneder a una altra ubicació - Change the passphrase used for wallet encryption @@ -377,12 +369,12 @@ This product includes software developed by the OpenSSL Project for use in the O &Verifica el missatge... - + Wallet Moneder - + &Send &Envia @@ -392,12 +384,12 @@ This product includes software developed by the OpenSSL Project for use in the O &Rep - + &Show / Hide &Mostra / Amaga - + &File &Fitxer @@ -407,12 +399,12 @@ This product includes software developed by the OpenSSL Project for use in the O &Configuració - + &Help &Ajuda - + %n second(s) ago @@ -449,12 +441,12 @@ This product includes software developed by the OpenSSL Project for use in the O Al dia - + Catching up... S'està posant al dia ... - + Sent transaction Transacció enviada @@ -464,16 +456,12 @@ This product includes software developed by the OpenSSL Project for use in the O Transacció entrant - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - El moneder està <b>encriptat</b> i actualment <b>desbloquejat</b> - - - + Wallet is <b>encrypted</b> and currently <b>locked</b> El moneder està <b>encriptat</b> i actualment <b>bloquejat</b> - + Send coins to a Gridcoin address @@ -539,7 +527,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Encrypt or decrypt wallet @@ -574,12 +562,12 @@ This product includes software developed by the OpenSSL Project for use in the O Exporta les dades de la pestanya actual a un fitxer - + Gridcoin - + &About Gridcoin @@ -589,28 +577,12 @@ This product includes software developed by the OpenSSL Project for use in the O - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -620,7 +592,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Diagnostics @@ -645,14 +617,14 @@ This product includes software developed by the OpenSSL Project for use in the O - + [testnet] [testnet] - + Gridcoin client @@ -670,7 +642,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Last received block was generated %1. @@ -723,7 +695,7 @@ Address: %4 - + Wallet is <b>encrypted</b> and currently %1 @@ -770,7 +742,7 @@ Address: %4 - + %n second(s) @@ -812,17 +784,42 @@ Address: %4 - - &Community + + Scraper: waiting on wallet to sync. - - &Advanced + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. - + + &Community + + + + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. @@ -834,7 +831,7 @@ Address: %4 Gestió d'URI - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. @@ -842,7 +839,7 @@ Address: %4 ClientModel - + Network Alert @@ -884,10 +881,6 @@ Address: %4 (un)select all (des)selecciona-ho tot - - List mode - Mode llista - Amount @@ -1293,7 +1286,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1391,10 +1384,6 @@ This label turns red, if the priority is smaller than "medium". Map port using &UPnP Port obert amb &UPnP - - Proxy &IP: - &IP del proxy: - &Port: @@ -1743,6 +1732,14 @@ This label turns red, if the priority is smaller than "medium". + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1804,7 +1801,7 @@ This label turns red, if the priority is smaller than "medium". RPCConsole - + @@ -1816,7 +1813,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A N/A @@ -1896,7 +1893,12 @@ This label turns red, if the priority is smaller than "medium". Fora: - + + &Scraper + + + + Debug log file Fitxer de registre de depuració @@ -1926,7 +1928,7 @@ This label turns red, if the priority is smaller than "medium". Escriviu <b>help<\b> per a obtindre un llistat de les ordes disponibles. - + %1 B %1 B @@ -1961,12 +1963,12 @@ This label turns red, if the priority is smaller than "medium". - + Gridcoin - Debug Console - + Boost version @@ -2036,7 +2038,7 @@ This label turns red, if the priority is smaller than "medium". - + Welcome to the Gridcoin RPC console! @@ -2303,22 +2305,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: Q&uantitat: - + Pay &To: Paga &a: - + &Label: &Etiqueta: - + Alt+A Alt+A @@ -2344,12 +2346,12 @@ This label turns red, if the priority is smaller than "medium". Introduïu una etiqueta per a esta adreça per afegir-la a la llibreta d'adreces - + Form Formulari - + The address to send the payment to (e.g. Sjz75uKHzUQJnSdzvpiigEGxseKkDhQToX) @@ -2364,17 +2366,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2602,16 +2599,42 @@ This label turns red, if the priority is smaller than "medium". - + Source Font - Generated - Generat + + MINED - POS + - + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From Des de @@ -2717,18 +2740,6 @@ This label turns red, if the priority is smaller than "medium". Transaction Inputs - - Transaction ID - ID de transacció - - - Transaction - Transacció - - - Inputs - Entrades - Amount @@ -2745,7 +2756,7 @@ This label turns red, if the priority is smaller than "medium". fals - + conflicted @@ -2762,13 +2773,8 @@ This label turns red, if the priority is smaller than "medium". Generated in CoinBase - - - Generated, PoS - - - + matures in %n more block(s) @@ -2780,12 +2786,8 @@ This label turns red, if the priority is smaller than "medium". Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - Informació - - + Open for %n more block(s) @@ -2806,12 +2808,7 @@ This label turns red, if the priority is smaller than "medium". - - View Attachment - - - - + Execute Contract @@ -2820,21 +2817,11 @@ This label turns red, if the priority is smaller than "medium". C&lose &Tanca - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Data @@ -2874,7 +2861,7 @@ This label turns red, if the priority is smaller than "medium". Generat però no acceptat - + Received with Rebut amb @@ -2894,12 +2881,42 @@ This label turns red, if the priority is smaller than "medium". Pagament a un mateix - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (n/a) - + Transaction status. Hover over this field to show number of confirmations. Estat de la transacció. Desplaceu-vos sobre este camp per mostrar el nombre de confirmacions. @@ -2919,7 +2936,7 @@ This label turns red, if the priority is smaller than "medium". Import extret o afegit del balanç. - + Address Adreça @@ -2952,27 +2969,7 @@ This label turns red, if the priority is smaller than "medium". - - Mined - DPOR - - - - - Minted - (Local) DPOR - - - - - Mined - PoR - - - - - Mined - Interest - - - - + Destination address of transaction. @@ -3146,17 +3143,10 @@ This label turns red, if the priority is smaller than "medium". - - UpgradeDialog - - Hide - Amaga - - VotingChartDialog - + Poll Results @@ -3300,7 +3290,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3333,7 +3323,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3341,37 +3331,37 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: Opcions: - + Specify data directory Especifica el directori de dades - + Connect to a node to retrieve peer addresses, and disconnect Connecta al node per obtindre les adreces de les connexions, i desconnecta - + Specify your own public address Especifiqueu la vostra adreça pública - + Accept command line and JSON-RPC commands Accepta la línia d'ordes i ordes JSON-RPC - + Run in the background as a daemon and accept commands Executa en segon pla com a programa dimoni i accepta ordes - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) Executa una orde quan una transacció del moneder canvie (%s en cmd es canvia per TxID) @@ -3381,12 +3371,12 @@ This label turns red, if the priority is smaller than "medium". Opcions de la creació de blocs: - + Failed to listen on any port. Use -listen=0 if you want this. Ha fallat escoltar a qualsevol port. Feu servir -listen=0 si voleu fer això. - + Specify configuration file (default: gridcoinresearch.conf) @@ -3416,7 +3406,7 @@ This label turns red, if the priority is smaller than "medium". Contrasenya per a connexions JSON-RPC - + Execute command when the best block changes (%s in cmd is replaced by block hash) Executa l'orde quan el millor bloc canvie (%s en cmd es reemplaça per un resum de bloc) @@ -3426,7 +3416,7 @@ This label turns red, if the priority is smaller than "medium". Permet consultes DNS per a -addnode, -seednode i -connect - + Loading addresses... S'estan carregant les adreces... @@ -3436,12 +3426,12 @@ This label turns red, if the priority is smaller than "medium". Adreça -proxy invalida: '%s' - + Unknown network specified in -onlynet: '%s' Xarxa desconeguda especificada a -onlynet: '%s' - + Insufficient funds Balanç insuficient @@ -3451,17 +3441,17 @@ This label turns red, if the priority is smaller than "medium". S'està carregant l'índex de blocs... - + Add a node to connect to and attempt to keep the connection open Afig un node per a connectar-s'hi i intenta mantindre-hi la connexió oberta - + Loading wallet... S'està carregant el moneder... - + Cannot downgrade wallet No es pot reduir la versió del moneder @@ -3471,22 +3461,22 @@ This label turns red, if the priority is smaller than "medium". No es pot escriure l'adreça per defecte - + Rescanning... S'està reescanejant... - + Done loading Ha acabat la càrrega - + Error Error - + This help message @@ -3511,12 +3501,12 @@ This label turns red, if the priority is smaller than "medium". - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3526,7 +3516,7 @@ This label turns red, if the priority is smaller than "medium". - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3536,22 +3526,22 @@ This label turns red, if the priority is smaller than "medium". - + Connect only to the specified node(s) - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -3561,22 +3551,22 @@ This label turns red, if the priority is smaller than "medium". - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + Threshold for disconnecting misbehaving peers (default: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) @@ -3671,6 +3661,16 @@ This label turns red, if the priority is smaller than "medium". Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3731,6 +3731,11 @@ This label turns red, if the priority is smaller than "medium". ERROR + + + Entire balance reserved + + Expires @@ -3796,11 +3801,6 @@ This label turns red, if the priority is smaller than "medium". Message Missatge - - - Messate Type - - Miner: @@ -3837,12 +3837,7 @@ This label turns red, if the priority is smaller than "medium". - - No coins; - - - - + Offline; @@ -3852,12 +3847,7 @@ This label turns red, if the priority is smaller than "medium". - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3937,22 +3927,22 @@ This label turns red, if the priority is smaller than "medium". - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) - + Use the test network - + Output extra debugging information. Implies all other -debug* options @@ -3962,7 +3952,7 @@ This label turns red, if the priority is smaller than "medium". - + Prepend debug output with timestamp @@ -3972,7 +3962,7 @@ This label turns red, if the priority is smaller than "medium". - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -3982,7 +3972,7 @@ This label turns red, if the priority is smaller than "medium". - + Send commands to node running on <ip> (default: 127.0.0.1) @@ -3992,7 +3982,7 @@ This label turns red, if the priority is smaller than "medium". - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -4002,7 +3992,7 @@ This label turns red, if the priority is smaller than "medium". - + Upgrade wallet to latest format @@ -4017,7 +4007,7 @@ This label turns red, if the priority is smaller than "medium". - + Attempt to recover private keys from a corrupt wallet.dat @@ -4037,7 +4027,7 @@ This label turns red, if the priority is smaller than "medium". - + Boinc Mining @@ -4047,7 +4037,7 @@ This label turns red, if the priority is smaller than "medium". - + Error obtaining next project. Error 06172014. @@ -4097,12 +4087,32 @@ This label turns red, if the priority is smaller than "medium". - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -4117,12 +4127,12 @@ This label turns red, if the priority is smaller than "medium". - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -4142,17 +4152,17 @@ This label turns red, if the priority is smaller than "medium". - + Invalid amount for -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - + Invalid amount for -mininput=<amount>: '%s' @@ -4162,22 +4172,22 @@ This label turns red, if the priority is smaller than "medium". - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4187,10 +4197,15 @@ This label turns red, if the priority is smaller than "medium". - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4207,17 +4222,17 @@ This label turns red, if the priority is smaller than "medium". - + Unknown -socks proxy version requested: %i - + Invalid -tor address: '%s' - + Cannot resolve -bind address: '%s' @@ -4227,7 +4242,7 @@ This label turns red, if the priority is smaller than "medium". - + Invalid amount for -reservebalance=<amount> @@ -4242,22 +4257,22 @@ This label turns red, if the priority is smaller than "medium". - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete - + Error loading wallet.dat @@ -4277,17 +4292,17 @@ This label turns red, if the priority is smaller than "medium". - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4297,47 +4312,47 @@ This label turns red, if the priority is smaller than "medium". - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - + Warning: Disk space is low! - + To use the %s option - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -4369,12 +4384,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Gridcoin version - + Usage: Ús: @@ -4384,7 +4399,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + List commands diff --git a/src/qt/locale/bitcoin_ca_ES.ts b/src/qt/locale/bitcoin_ca_ES.ts index bfa9a29aee..cdfe66e61c 100644 --- a/src/qt/locale/bitcoin_ca_ES.ts +++ b/src/qt/locale/bitcoin_ca_ES.ts @@ -23,15 +23,6 @@ Distributed under the MIT/X11 software license, see the accompanying file COPYIN This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (https://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - - -This is experimental software. - -Distributed under the MIT/X11 software license, see the accompanying file COPYING 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. - \n Aquest és software experimental.\n\n Distribuït sota llicència de software MIT/11, veure l'arxiu COPYING o http://www.opensource.org/licenses/mit-license.php.\n\nAquest producte inclou software desarrollat pel projecte OpenSSL per a l'ús de OppenSSL Toolkit (http://www.openssl.org/) i de software criptogràfic escrit per l'Eric Young (eay@cryptsoft.com) i software UPnP escrit per en Thomas Bernard. - AddressBookPage @@ -308,12 +299,12 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + Sign &message... Signa el &missatge... - + &Overview &Panorama general @@ -343,7 +334,7 @@ This product includes software developed by the OpenSSL Project for use in the O Surt de l'aplicació - + &Options... &Opcions... @@ -352,19 +343,11 @@ This product includes software developed by the OpenSSL Project for use in the O &Encrypt Wallet... &Encripta el moneder... - - &Backup Wallet... - &Realitza una còpia de seguretat del moneder... - &Change Passphrase... &Canvia la contrasenya... - - Backup wallet to another location - Realitza una còpia de seguretat del moneder a una altra ubicació - Change the passphrase used for wallet encryption @@ -386,12 +369,12 @@ This product includes software developed by the OpenSSL Project for use in the O &Verifica el missatge... - + Wallet Moneder - + &Send &Envia @@ -401,12 +384,12 @@ This product includes software developed by the OpenSSL Project for use in the O &Rep - + &Show / Hide &Mostra / Amaga - + &File &Fitxer @@ -416,12 +399,12 @@ This product includes software developed by the OpenSSL Project for use in the O &Configuració - + &Help &Ajuda - + Processed %n block(s) of transaction history. S'ha processat %n bloc de l'historial de transacció. @@ -434,12 +417,12 @@ This product includes software developed by the OpenSSL Project for use in the O Al dia - + Catching up... S'està posant al dia ... - + Sent transaction Transacció enviada @@ -449,16 +432,12 @@ This product includes software developed by the OpenSSL Project for use in the O Transacció entrant - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - El moneder està <b>encriptat</b> i actualment <b>desbloquejat</b> - - - + Wallet is <b>encrypted</b> and currently <b>locked</b> El moneder està <b>encriptat</b> i actualment <b>bloquejat</b> - + Send coins to a Gridcoin address Enviar monedes a una adreça Gridcoin @@ -524,7 +503,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Encrypt or decrypt wallet Xifrar o desxifrar moneder @@ -569,7 +548,7 @@ This product includes software developed by the OpenSSL Project for use in the O Exportar les dades de la pestanya actual a un arxiu - + %n second(s) ago fa %n segon @@ -601,7 +580,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Date: %1 Amount: %2 Type: %3 @@ -612,7 +591,7 @@ Address: %4 ?} {4?} - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -622,43 +601,57 @@ Address: %4 - - Gridcoin - Gridcoin + + Scraper: waiting on wallet to sync. + - - &About Gridcoin - &Sobre Gridcoin + + Scraper: superblock not needed - inactive. + - - Show information about Gridcoin - Mostra informació sobre Gridcoin + + Scraper: downloading and processing stats. + - - &Neural Network + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. - - Neural Network + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. - - &New User Wizard + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + Gridcoin + Gridcoin + + + + &About Gridcoin + &Sobre Gridcoin + - + Show information about Gridcoin + Mostra informació sobre Gridcoin + + + New User Wizard - + &Voting @@ -668,7 +661,7 @@ Address: %4 - + &Diagnostics @@ -683,14 +676,14 @@ Address: %4 Modificar les opcions de configuració per a Gridcoin - + [testnet] [testnet] - + Gridcoin client Client Gridcoin @@ -700,23 +693,7 @@ Address: %4 %1 conexió activa a la xarxa Gridcoin - %1 second(s) ago - fa %1 segon - - - %1 minute(s) ago - fa %1 minut - - - %1 hour(s) ago - fa %1 hora - - - %1 day(s) ago - fa %1 dia - - - + Last received block was generated %1. El darrer bloc rebut s'ha generat %1. @@ -761,15 +738,7 @@ Address: %4 - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Data: %1\nQuantitat %2\n Tipus: %3\n Adreça: %4\n - - - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. l'URI no es pot analitzar! Això pot ser causat per una adreça Gridcoin no vàlida o paràmetres URI malformats. @@ -828,7 +797,7 @@ Address: %4 - + %n second(s) @@ -860,37 +829,12 @@ Address: %4 - Not staking because wallet is locked - No s'està fent "stake" perquè el moneder esa bloquejat - - - Not staking because wallet is offline - No s'està fent "stake" perquè el moneder està fora de línia - - - Not staking because wallet is syncing - No s'està fent "stake" perquè el moneder està sincronitzant - - - Not staking because you don't have mature coins - No s'està fent "stake" perquè no tens monedes madures - - - Not staking - No s'està fent "stake" - - - + &Community - - &Advanced - - - - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. S'ha produït un error fatal. Gridcoin ja no pot continuar de forma segura i es tancarà. @@ -898,7 +842,7 @@ Address: %4 ClientModel - + Network Alert Alerta de xarxa @@ -940,10 +884,6 @@ Address: %4 (un)select all (des)selecciona-ho tot - - List mode - Mode llista - Amount @@ -1363,7 +1303,7 @@ En aquest cas es requereix una comisió d'almenys 2%. NewPollDialog - + Create Poll @@ -1461,10 +1401,6 @@ En aquest cas es requereix una comisió d'almenys 2%. Map port using &UPnP Port obert amb &UPnP - - Proxy &IP: - &IP del proxy: - &Port: @@ -1813,6 +1749,14 @@ En aquest cas es requereix una comisió d'almenys 2%. Fora de sincronia + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1874,7 +1818,7 @@ En aquest cas es requereix una comisió d'almenys 2%. RPCConsole - + @@ -1886,7 +1830,7 @@ En aquest cas es requereix una comisió d'almenys 2%. - + N/A N/A @@ -1966,7 +1910,12 @@ En aquest cas es requereix una comisió d'almenys 2%. Fora: - + + &Scraper + + + + Debug log file Fitxer de registre de depuració @@ -1996,7 +1945,7 @@ En aquest cas es requereix una comisió d'almenys 2%. Escriviu <b>help<\b> per a obtenir un llistat de les ordres disponibles. - + %1 B %1 B @@ -2031,12 +1980,12 @@ En aquest cas es requereix una comisió d'almenys 2%. - + Gridcoin - Debug Console - + Boost version @@ -2106,7 +2055,7 @@ En aquest cas es requereix una comisió d'almenys 2%. Nom del client - + Welcome to the Gridcoin RPC console! @@ -2373,22 +2322,22 @@ En aquest cas es requereix una comisió d'almenys 2%. SendCoinsEntry - + A&mount: Q&uantitat: - + Pay &To: Paga &a: - + &Label: &Etiqueta: - + Alt+A Alta+A @@ -2414,12 +2363,12 @@ En aquest cas es requereix una comisió d'almenys 2%. Introduïu una etiqueta per a aquesta adreça per afegir-la a la llibreta d'adreces - + Form Formulari - + The address to send the payment to (e.g. Sjz75uKHzUQJnSdzvpiigEGxseKkDhQToX) @@ -2434,17 +2383,12 @@ En aquest cas es requereix una comisió d'almenys 2%. Eliminar aquest destinatari - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2672,16 +2616,42 @@ En aquest cas es requereix una comisió d'almenys 2%. - + Source Font - Generated - Generada + + MINED - POS + + + + + MINED - POR + - + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From De @@ -2787,18 +2757,6 @@ En aquest cas es requereix una comisió d'almenys 2%. Transaction Inputs - - Transaction ID - ID de la transacció - - - Transaction - Transacció - - - Inputs - Entrades - Amount @@ -2815,7 +2773,7 @@ En aquest cas es requereix una comisió d'almenys 2%. fals - + conflicted conflicte @@ -2832,13 +2790,8 @@ En aquest cas es requereix una comisió d'almenys 2%. Generated in CoinBase - - - Generated, PoS - - - + matures in %n more block(s) madura en %n bloc més @@ -2850,12 +2803,8 @@ En aquest cas es requereix una comisió d'almenys 2%. Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - &Informació - - + Open for %n more block(s) Obert per a %n bloc més @@ -2876,12 +2825,7 @@ En aquest cas es requereix una comisió d'almenys 2%. Detall de la transacció - - View Attachment - - - - + Execute Contract @@ -2890,21 +2834,11 @@ En aquest cas es requereix una comisió d'almenys 2%. C&lose &Tanca - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Data @@ -2944,7 +2878,7 @@ En aquest cas es requereix una comisió d'almenys 2%. Generat però no acceptat - + Received with Rebuda amb @@ -2964,12 +2898,42 @@ En aquest cas es requereix una comisió d'almenys 2%. Pagament a un mateix - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (n/a) - + Transaction status. Hover over this field to show number of confirmations. Estat de la transacció. Desplaceu-vos sobre aquest camp per mostrar el nombre de confirmacions. @@ -2989,7 +2953,7 @@ En aquest cas es requereix una comisió d'almenys 2%. Import extret o afegit del balanç. - + Address Direcció @@ -3022,27 +2986,7 @@ En aquest cas es requereix una comisió d'almenys 2%. - - Mined - DPOR - - - - - Minted - (Local) DPOR - - - - - Mined - PoR - - - - - Mined - Interest - - - - + Destination address of transaction. Adreça del destinatari de la transacció. @@ -3216,17 +3160,10 @@ En aquest cas es requereix una comisió d'almenys 2%. No s'ha pogut escriure al fitxer %1. - - UpgradeDialog - - Hide - Amaga - - VotingChartDialog - + Poll Results @@ -3370,7 +3307,7 @@ En aquest cas es requereix una comisió d'almenys 2%. VotingVoteDialog - + PlaceVote @@ -3403,7 +3340,7 @@ En aquest cas es requereix una comisió d'almenys 2%. WalletModel - + Sending... Enviant... @@ -3411,37 +3348,37 @@ En aquest cas es requereix una comisió d'almenys 2%. bitcoin-core - + Options: Opcions: - + Specify data directory Especifica el directori de dades - + Connect to a node to retrieve peer addresses, and disconnect Connecta al node per obtenir les adreces de les connexions, i desconnecta - + Specify your own public address Especifiqueu la vostra adreça pública - + Accept command line and JSON-RPC commands Accepta la línia d'ordres i ordres JSON-RPC - + Run in the background as a daemon and accept commands Executa en segon pla com a programa dimoni i accepta ordres - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) Executa una ordre quan una transacció del moneder canviï (%s en cmd es canvia per TxID) @@ -3451,12 +3388,12 @@ En aquest cas es requereix una comisió d'almenys 2%. Opcions de la creació de blocs: - + Failed to listen on any port. Use -listen=0 if you want this. Ha fallat escoltar a qualsevol port. Feu servir -listen=0 si voleu fer això. - + Specify configuration file (default: gridcoinresearch.conf) @@ -3486,7 +3423,7 @@ En aquest cas es requereix una comisió d'almenys 2%. Contrasenya per a connexions JSON-RPC - + Execute command when the best block changes (%s in cmd is replaced by block hash) Executa l'ordre quan el millor bloc canviï (%s en cmd es reemplaça per un resum de bloc) @@ -3496,7 +3433,7 @@ En aquest cas es requereix una comisió d'almenys 2%. Permet consultes DNS per a -addnode, -seednode i -connect - + Loading addresses... S'estan carregant les adreces... @@ -3506,12 +3443,12 @@ En aquest cas es requereix una comisió d'almenys 2%. Adreça -proxy invalida: '%s' - + Unknown network specified in -onlynet: '%s' Xarxa desconeguda especificada a -onlynet: '%s' - + Insufficient funds Balanç insuficient @@ -3521,17 +3458,17 @@ En aquest cas es requereix una comisió d'almenys 2%. S'està carregant l'índex de blocs... - + Add a node to connect to and attempt to keep the connection open Afegeix un node per a connectar-s'hi i intenta mantenir-hi la connexió oberta - + Loading wallet... S'està carregant el moneder... - + Cannot downgrade wallet No es pot reduir la versió del moneder @@ -3541,22 +3478,22 @@ En aquest cas es requereix una comisió d'almenys 2%. No es pot escriure l'adreça per defecte - + Rescanning... S'està reescanejant... - + Done loading Ha acabat la càrrega - + Error Error - + This help message Aquest misatge d'ajuda @@ -3581,12 +3518,12 @@ En aquest cas es requereix una comisió d'almenys 2%. Especificar el temps limit per a un intent de connexió en milisegons (per defecte: 5000) - + Connect through socks proxy Conectar a través d'un proxy SOCKS - + Select the version of socks proxy to use (4-5, default: 5) Seleccioneu la versió de proxy socks per utilitzar (4-5, per defecte: 5) @@ -3596,7 +3533,7 @@ En aquest cas es requereix una comisió d'almenys 2%. Utilitza proxy per arribar als serveis ocults de Tor (per defecte: la mateixa que -proxy) - + Listen for connections on <port> (default: 32749 or testnet: 32748) Escoltar connexions en <port> (per defecte: 15714 o testnet: 25714) {32749 ?} {32748)?} @@ -3606,26 +3543,22 @@ En aquest cas es requereix una comisió d'almenys 2%. Mantenir com a molt <n> connexions a peers (per defecte: 125) - + Connect only to the specified node(s) Connectar només al(s) node(s) especificats - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) Només connectar als nodes de la xarxa <net> (IPv4, IPv6 o Tor) - + Discover own IP address (default: 1 when listening and no -externalip) Descobrir la pròpia adreça IP (per defecte: 1 quan escoltant i no -externalip) - Find peers using internet relay chat (default: 0) - Trobar companys utilitzant l'IRC (per defecte: 1) {0)?} - - - + Accept connections from outside (default: 1 if no -proxy or -connect) Aceptar connexions d'afora (per defecte: 1 si no -proxy o -connect) @@ -3635,26 +3568,22 @@ En aquest cas es requereix una comisió d'almenys 2%. Enllaçar a l'adreça donada. Utilitzeu la notació [host]:port per a IPv6 - + Find peers using DNS lookup (default: 1) Trobar companys utilitzant la recerca de DNS (per defecte: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) Sincronitzar el temps amb altres nodes. Desactivar si el temps al seu sistema és precís, per exemple, si fa ús de sincronització amb NTP (per defecte: 1) - Sync checkpoints policy (default: strict) - Política dels punts de control de sincronització (per defecte: estricta) - - - + Threshold for disconnecting misbehaving peers (default: 100) Límit per a desconectar connexions errònies (per defecte: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Nombre de segons abans de reconectar amb connexions errònies (per defecte: 86400) @@ -3749,6 +3678,16 @@ En aquest cas es requereix una comisió d'almenys 2%. Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3809,6 +3748,11 @@ En aquest cas es requereix una comisió d'almenys 2%. ERROR + + + Entire balance reserved + + Expires @@ -3874,11 +3818,6 @@ En aquest cas es requereix una comisió d'almenys 2%. Message Missatge - - - Messate Type - - Miner: @@ -3915,12 +3854,7 @@ En aquest cas es requereix una comisió d'almenys 2%. - - No coins; - - - - + Offline; @@ -3930,12 +3864,7 @@ En aquest cas es requereix una comisió d'almenys 2%. - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -4015,22 +3944,22 @@ En aquest cas es requereix una comisió d'almenys 2%. Utilitza UPnP per a mapejar els ports d'escolta (per defecte: 0) - + Fee per KB to add to transactions you send Comisió per KB per a afegir a les transaccions que enviï - + When creating transactions, ignore inputs with value less than this (default: 0.01) En crear transaccions, ignorar les entrades amb valor inferior a aquesta (per defecte: 0.01) - + Use the test network Usar la xarxa de prova - + Output extra debugging information. Implies all other -debug* options Sortida d'informació de depuració extra. Implica totes les opcions de depuracó -debug* @@ -4040,7 +3969,7 @@ En aquest cas es requereix una comisió d'almenys 2%. Sortida d'informació de depuració de xarxa addicional - + Prepend debug output with timestamp Anteposar marca de temps a la sortida de depuració @@ -4050,7 +3979,7 @@ En aquest cas es requereix una comisió d'almenys 2%. Enviar informació de traça/depuració al depurador - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) Escoltar connexions JSON-RPC al port <port> (per defecte: 15715 o testnet: 25715) @@ -4060,7 +3989,7 @@ En aquest cas es requereix una comisió d'almenys 2%. Permetre connexions JSON-RPC d'adreces IP específiques - + Send commands to node running on <ip> (default: 127.0.0.1) Enviar ordre al node en execució a <ip> (per defecte: 127.0.0.1) @@ -4070,7 +3999,7 @@ En aquest cas es requereix una comisió d'almenys 2%. Requerir les confirmacions de canvi (per defecte: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) Fer complir als scripts de transaccions d'utilitzar operadors PUSH canòniques (per defecte: 1) @@ -4081,7 +4010,7 @@ En aquest cas es requereix una comisió d'almenys 2%. Executar una ordre quan es rep un avís rellevant (%s en cmd es substitueix per missatge) - + Upgrade wallet to latest format Actualitzar moneder a l'últim format @@ -4096,7 +4025,7 @@ Executar una ordre quan es rep un avís rellevant (%s en cmd es substitueix per Re-escanejar cadena de blocs en cerca de transaccions de moneder perdudes - + Attempt to recover private keys from a corrupt wallet.dat Intentar recuperar les claus privades d'un arxiu wallet.dat corrupte @@ -4116,7 +4045,7 @@ Executar una ordre quan es rep un avís rellevant (%s en cmd es substitueix per - + Boinc Mining @@ -4126,7 +4055,7 @@ Executar una ordre quan es rep un avís rellevant (%s en cmd es substitueix per - + Error obtaining next project. Error 06172014. @@ -4176,12 +4105,32 @@ Executar una ordre quan es rep un avís rellevant (%s en cmd es substitueix per - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -4196,12 +4145,12 @@ Executar una ordre quan es rep un avís rellevant (%s en cmd es substitueix per Establir una mida máxima de bloc en bytes (per defecte: 250000) - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) Establir la grandària màxima de les transaccions alta-prioritat/baixa-comisió en bytes (per defecte: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) Opcions SSL: (veure la Wiki de Bitcoin per a instruccions de configuració SSL) @@ -4221,21 +4170,17 @@ Executar una ordre quan es rep un avís rellevant (%s en cmd es substitueix per Clau privada del servidor (per defecte: server.pem) - Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - Xifres acceptables (per defecte: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - - - + Invalid amount for -paytxfee=<amount>: '%s' Quantitat invalida per a -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. Advertència: el -paytxfee és molt elevat! Aquesta és la comissió de transacció que pagaràs quan enviis una transacció. - + Invalid amount for -mininput=<amount>: '%s' Quantitat invalida per a -mininput=<amount>: '%s' @@ -4245,22 +4190,22 @@ Executar una ordre quan es rep un avís rellevant (%s en cmd es substitueix per - + Wallet %s resides outside data directory %s. El moneder %s resideix fora del directori de dades %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. No es pot obtenir un bloqueig en el directori de dades %s. Gridcoin probablement ja estigui en funcionament. - + Verifying database integrity... Comprovant la integritat de la base de dades ... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. Error en inicialitzar l'entorn de base de dades %s! Per recuperar, FACI UNA COPIA DE SEGURETAT D'AQUEST DIRECTORI, a continuació, retiri tot d'ella excepte l'arxiu wallet.dat. @@ -4270,10 +4215,15 @@ Executar una ordre quan es rep un avís rellevant (%s en cmd es substitueix per Advertència: L'arxiu wallet.dat és corrupte, dades rescatades! L'arxiu wallet.dat original ha estat desat com wallet.{estampa_temporal}.bak al directori %s; si el teu balanç o transaccions son incorrectes hauries de restaurar-lo de un backup. - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4290,17 +4240,17 @@ Executar una ordre quan es rep un avís rellevant (%s en cmd es substitueix per L'arxiu wallet.data és corrupte, el rescat de les dades ha fallat - + Unknown -socks proxy version requested: %i S'ha demanat una versió desconeguda de -socks proxy: %i - + Invalid -tor address: '%s' Adreça -tor invalida: '%s' - + Cannot resolve -bind address: '%s' No es pot resoldre l'adreça -bind: '%s' @@ -4310,16 +4260,10 @@ Executar una ordre quan es rep un avís rellevant (%s en cmd es substitueix per No es pot resoldre l'adreça -externalip: '%s' - + Invalid amount for -reservebalance=<amount> Quantitat invalida per a -reservebalance=<amount> - - Unable to sign checkpoint, wrong checkpointkey? - - No es pot signar el punt de control, la clau del punt de control esta malament? - - Error loading blkindex.dat @@ -4331,22 +4275,22 @@ Executar una ordre quan es rep un avís rellevant (%s en cmd es substitueix per Error carregant wallet.dat: Moneder corrupte - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. Advertència: Error llegint l'arxiu wallet.dat!! Totes les claus es llegeixen correctament, però hi ha dades de transaccions o entrades del llibre d'adreces absents o bé son incorrectes. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin Error en carregar wallet.dat: El moneder requereix la versió més recent de Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete El moneder necessita ser reescrita: reiniciar Gridcoin per completar - + Error loading wallet.dat Error carregant wallet.dat @@ -4366,17 +4310,17 @@ Executar una ordre quan es rep un avís rellevant (%s en cmd es substitueix per Error: no s'ha pogut iniciar el node - + Unable to bind to %s on this computer. Gridcoin is probably already running. No es pot enllaçar a %s en aquest equip. Gridcoin probablement ja estigui en funcionament. - + Unable to bind to %s on this computer (bind returned error %d, %s) Impossible d'unir %s a aquest ordinador (s'ha retornat l'error %d, %s) - + Error: Wallet locked, unable to create transaction Error: Moneder bloquejat, no es pot de crear la transacció @@ -4386,59 +4330,47 @@ Executar una ordre quan es rep un avís rellevant (%s en cmd es substitueix per Error: Cartera bloquejada nomès per a fer "stake", no es pot de crear la transacció - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds Error: Aquesta transacció requereix una comisió d'almenys %s degut a la seva quantitat, complexitat, o l'ús dels fons rebuts recentment - + Error: Transaction creation failed Error: La creació de transacció ha fallat. - + Sending... Enviant... - + 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ó ha sigut rebutjada. Això pot passar si algunes de les monedes al moneder ja s'han gastat, per exemple, si vostè utilitza una còpia del wallet.dat i les monedes han estat gastades a la cópia pero no s'han marcat com a gastades aqui. - + Invalid amount Quanitat invalida - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. Avís: Comproveu que la data i hora de l'equip siguin correctes! Si el seu rellotge és erroni Gridcoin no funcionarà correctament. - Warning: This version is obsolete, upgrade required! - Advertència: Aquetsa versió està obsoleta, és necessari actualitzar! - - - WARNING: synchronized checkpoint violation detected, but skipped! - ADVERTÈNCIA: violació de punt de control sincronitzat detectada, es saltarà! - - - + Warning: Disk space is low! Avís: L'espai en disc és baix! - WARNING: Invalid checkpoint found! Displayed transactions may not be correct! You may need to upgrade, or notify developers. - ADVERTÈNCIA: Punt de control invàlid! Les transaccions mostrades podríen no ser correctes! Podria ser necessari actualitzar o notificar-ho als desenvolupadors. - - - + To use the %s option Utilitza la opció %s - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -4470,12 +4402,12 @@ If the file does not exist, create it with owner-readable-only file permissions. Has de configurar el rpcpassword=<password> a l'arxiu de configuració:\n %s\n Si l'arxiu no existeix, crea'l amb els permís owner-readable-only. - + Gridcoin version versió Gridcoin - + Usage: Ús: @@ -4485,7 +4417,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + List commands Llista d'ordres diff --git a/src/qt/locale/bitcoin_cs.ts b/src/qt/locale/bitcoin_cs.ts index 5b83cfaa75..9da4473f21 100644 --- a/src/qt/locale/bitcoin_cs.ts +++ b/src/qt/locale/bitcoin_cs.ts @@ -23,20 +23,6 @@ Distributed under the MIT/X11 software license, see the accompanying file COPYIN This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (https://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - - -This is experimental software. - -Distributed under the MIT/X11 software license, see the accompanying file COPYING 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. - -Tohle je experimentální program. - -Ší?en pod licencí MIT/X11, viz p?iložený soubor COPYING nebo http://www.opensource.org/licenses/mit-license.php. - -Tento produkt zahrnuje programy vyvinuté OpenSSL Projektem pro použití v OpenSSL Toolkitu (http://www.openssl.org/) a kryptografický program od Erika Younga (eay@cryptsoft.com) a program UPnP od Thomase Bernarda. - AddressBookPage @@ -313,12 +299,12 @@ Tento produkt zahrnuje programy vyvinuté OpenSSL Projektem pro použití v Open BitcoinGUI - + Sign &message... Po&depiš zprávu... - + &Overview &Přehled @@ -348,7 +334,7 @@ Tento produkt zahrnuje programy vyvinuté OpenSSL Projektem pro použití v Open Ukonči aplikaci - + &Options... &Možnosti... @@ -357,19 +343,11 @@ Tento produkt zahrnuje programy vyvinuté OpenSSL Projektem pro použití v Open &Encrypt Wallet... Zaši&fruj peněženku... - - &Backup Wallet... - &Zazálohuj peněženku... - &Change Passphrase... Změň &heslo... - - Backup wallet to another location - Zazálohuj peněženku na jiné místo - Change the passphrase used for wallet encryption @@ -391,12 +369,12 @@ Tento produkt zahrnuje programy vyvinuté OpenSSL Projektem pro použití v Open &Ověř zprávu... - + Wallet Peněženka - + &Send P&ošli @@ -406,12 +384,12 @@ Tento produkt zahrnuje programy vyvinuté OpenSSL Projektem pro použití v Open Při&jmi - + &Show / Hide &Zobraz/Skryj - + &File &Soubor @@ -421,12 +399,12 @@ Tento produkt zahrnuje programy vyvinuté OpenSSL Projektem pro použití v Open &Nastavení - + &Help Nápověd&a - + Processed %n block(s) of transaction history. Zpracován %n blok transakční historie. @@ -440,12 +418,12 @@ Tento produkt zahrnuje programy vyvinuté OpenSSL Projektem pro použití v Open Aktuální - + Catching up... Stahuji... - + Sent transaction Odeslané transakce @@ -455,16 +433,12 @@ Tento produkt zahrnuje programy vyvinuté OpenSSL Projektem pro použití v Open Příchozí transakce - 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> - + Send coins to a Gridcoin address @@ -530,7 +504,7 @@ Tento produkt zahrnuje programy vyvinuté OpenSSL Projektem pro použití v Open - + Encrypt or decrypt wallet @@ -575,7 +549,7 @@ Tento produkt zahrnuje programy vyvinuté OpenSSL Projektem pro použití v Open Exportuj data z tohoto panelu do souboru - + %n second(s) ago @@ -611,7 +585,7 @@ Tento produkt zahrnuje programy vyvinuté OpenSSL Projektem pro použití v Open - + Date: %1 Amount: %2 Type: %3 @@ -626,7 +600,7 @@ Adresa: %4 ?} {4?} - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -636,43 +610,57 @@ Adresa: %4 - - Gridcoin + + Scraper: waiting on wallet to sync. - - &About Gridcoin + + Scraper: superblock not needed - inactive. - - Show information about Gridcoin + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. - &Neural Network + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. - - Neural Network + + Scraper: No convergence able to be achieved. Will retry in a few minutes. - - &New User Wizard + + Gridcoin + + + + + &About Gridcoin - + Show information about Gridcoin + + + + New User Wizard - + &Voting @@ -682,7 +670,7 @@ Adresa: %4 - + &Diagnostics @@ -697,14 +685,14 @@ Adresa: %4 - + [testnet] [testnet] - + Gridcoin client @@ -714,7 +702,7 @@ Adresa: %4 - + Last received block was generated %1. @@ -759,19 +747,7 @@ Adresa: %4 - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Datum: %1 -?ástka: %2 -Typ: %3 -Adresa: %4 - - - - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. @@ -830,7 +806,7 @@ Adresa: %4 - + %n second(s) %n vteřinu @@ -866,17 +842,12 @@ Adresa: %4 - + &Community - - &Advanced - - - - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. @@ -884,7 +855,7 @@ Adresa: %4 ClientModel - + Network Alert Upozorn?ní sít? @@ -926,10 +897,6 @@ Adresa: %4 (un)select all (od)označit všechny - - List mode - Vypsat jako seznam - Amount @@ -1335,7 +1302,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1433,10 +1400,6 @@ This label turns red, if the priority is smaller than "medium". Map port using &UPnP Namapovat port přes &UPnP - - Proxy &IP: - &IP adresa proxy: - &Port: @@ -1785,6 +1748,14 @@ This label turns red, if the priority is smaller than "medium". nesynchronizováno + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1846,7 +1817,7 @@ This label turns red, if the priority is smaller than "medium". RPCConsole - + @@ -1858,7 +1829,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A nedostupná informace @@ -1938,7 +1909,12 @@ This label turns red, if the priority is smaller than "medium". Ven: - + + &Scraper + + + + Debug log file Soubor s ladicími záznamy @@ -1958,7 +1934,7 @@ This label turns red, if the priority is smaller than "medium". Napsáním <b>help</b> si vypíšeš přehled dostupných příkazů. - + %1 B %1 B @@ -1978,7 +1954,7 @@ This label turns red, if the priority is smaller than "medium". %1 GB - + Welcome to the Gridcoin RPC console! @@ -1993,7 +1969,7 @@ This label turns red, if the priority is smaller than "medium". - + %1 m %1 m @@ -2008,12 +1984,12 @@ This label turns red, if the priority is smaller than "medium". - + Gridcoin - Debug Console - + Boost version @@ -2345,22 +2321,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: Čás&tka: - + Pay &To: &Komu: - + &Label: O&značení: - + Alt+A Alt+A @@ -2386,12 +2362,12 @@ This label turns red, if the priority is smaller than "medium". Zadej označení této adresy; obojí se ti pak uloží do adresáře - + Form Formulá? - + The address to send the payment to (e.g. Sjz75uKHzUQJnSdzvpiigEGxseKkDhQToX) @@ -2406,17 +2382,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2662,26 +2633,17 @@ This label turns red, if the priority is smaller than "medium". - + Source Zdroj - Generated - Vygenerováno - - - + Generated in CoinBase - - Generated, PoS - - - - + From Od @@ -2796,18 +2758,6 @@ This label turns red, if the priority is smaller than "medium". Transaction Inputs - - Transaction ID - ID transakce - - - Transaction - Transakce - - - Inputs - Vstupy - Amount @@ -2824,18 +2774,44 @@ This label turns red, if the priority is smaller than "medium". false - + conflicted - - Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. + + MINED - POS - Information - Informace + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + + Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. + @@ -2851,12 +2827,7 @@ This label turns red, if the priority is smaller than "medium". Detaily transakce - - View Attachment - - - - + Execute Contract @@ -2865,21 +2836,11 @@ This label turns red, if the priority is smaller than "medium". C&lose &Zavřít - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Datum @@ -2928,7 +2889,7 @@ This label turns red, if the priority is smaller than "medium". Vygenerováno, ale neakceptováno - + Received with Přijato do @@ -2948,12 +2909,42 @@ This label turns red, if the priority is smaller than "medium". Platba sama sobě - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (n/a) - + Transaction status. Hover over this field to show number of confirmations. Stav transakce. Najetím myši na toto políčko si zobrazíš počet potvrzení. @@ -2973,7 +2964,7 @@ This label turns red, if the priority is smaller than "medium". Částka odečtená z nebo přičtená k účtu. - + Address Adresa @@ -2998,27 +2989,7 @@ This label turns red, if the priority is smaller than "medium". - - Mined - DPOR - - - - - Minted - (Local) DPOR - - - - - Mined - PoR - - - - - Mined - Interest - - - - + Destination address of transaction. Cílová adresa transakce. @@ -3192,17 +3163,10 @@ This label turns red, if the priority is smaller than "medium". - - UpgradeDialog - - Hide - Skryj - - VotingChartDialog - + Poll Results @@ -3346,7 +3310,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3379,7 +3343,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3387,37 +3351,37 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: Možnosti: - + Specify data directory Adresář pro data - + Connect to a node to retrieve peer addresses, and disconnect Připojit se k uzlu, získat adresy jeho protějšků a odpojit se - + Specify your own public address Udej svou veřejnou adresu - + 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 přijímat příkazy - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) Spustit příkaz, když se objeví transakce týkající se peněženky (%s se v příkazu nahradí za TxID) @@ -3427,12 +3391,12 @@ This label turns red, if the priority is smaller than "medium". Možnosti vytváření bloku: - + Failed to listen on any port. Use -listen=0 if you want this. Nepodařilo se naslouchat na žádném portu. Použij -listen=0, pokud to byl tvůj záměr. - + Specify configuration file (default: gridcoinresearch.conf) @@ -3462,7 +3426,7 @@ This label turns red, if the priority is smaller than "medium". Heslo pro JSON-RPC spojení - + Execute command when the best block changes (%s in cmd is replaced by block hash) Spustit příkaz, když se změní nejlepší blok (%s se v příkazu nahradí hashem bloku) @@ -3472,7 +3436,7 @@ This label turns red, if the priority is smaller than "medium". Povolit DNS dotazy pro -addnode (přidání uzlu), -seednode a -connect (připojení) - + Loading addresses... Načítám adresy... @@ -3482,12 +3446,12 @@ This label turns red, if the priority is smaller than "medium". Neplatná -proxy adresa: '%s' - + Unknown network specified in -onlynet: '%s' V -onlynet byla uvedena neznámá síť: '%s' - + Insufficient funds Nedostatek prostředků @@ -3497,17 +3461,17 @@ This label turns red, if the priority is smaller than "medium". Načítám index bloků... - + Add a node to connect to and attempt to keep the connection open Přidat uzel, ke kterému se připojit a snažit se spojení udržet - + Loading wallet... Načítám peněženku... - + Cannot downgrade wallet Nemohu převést peněženku do staršího formátu @@ -3517,22 +3481,22 @@ This label turns red, if the priority is smaller than "medium". Nemohu napsat výchozí adresu - + Rescanning... Přeskenovávám… - + Done loading Načítání dokončeno - + Error Chyba - + This help message Tato nápov?da @@ -3557,12 +3521,12 @@ This label turns red, if the priority is smaller than "medium". Zadej ?asový limit spojení v milisekundách (výchozí: 5000) - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3572,7 +3536,7 @@ This label turns red, if the priority is smaller than "medium". - + Listen for connections on <port> (default: 32749 or testnet: 32748) Naslouchej připojením na <port> (výchozí: 15714 nebo testovací síť: 25714) {32749 ?} {32748)?} @@ -3582,22 +3546,22 @@ This label turns red, if the priority is smaller than "medium". Povolit nejvýše <n> p?ipojení k uzl?m (výchozí: 125) - + Connect only to the specified node(s) P?ipojit se pouze k zadanému uzlu (p?íp. zadaným uzl?m) - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) P?ipojit se pouze k uzl?m v <net> síti (IPv4, IPv6 nebo Tor) - + Discover own IP address (default: 1 when listening and no -externalip) Zjistit vlastní IP adresu (výchozí: 1, pokud naslouchá a není zadáno -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) P?ijímat spojení zven?í (výchozí: 1, pokud není zadáno -proxy nebo -connect) @@ -3607,22 +3571,22 @@ This label turns red, if the priority is smaller than "medium". - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + Threshold for disconnecting misbehaving peers (default: 100) Práh pro odpojování zlobivý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 zlobivé uzly znovu p?ipojit (výchozí: 86400) @@ -3717,6 +3681,16 @@ This label turns red, if the priority is smaller than "medium". Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3777,6 +3751,11 @@ This label turns red, if the priority is smaller than "medium". ERROR + + + Entire balance reserved + + Expires @@ -3842,11 +3821,6 @@ This label turns red, if the priority is smaller than "medium". Message Zpráva - - - Messate Type - - Miner: @@ -3883,12 +3857,7 @@ This label turns red, if the priority is smaller than "medium". - - No coins; - - - - + Offline; @@ -3898,12 +3867,7 @@ This label turns red, if the priority is smaller than "medium". - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3983,22 +3947,22 @@ This label turns red, if the priority is smaller than "medium". Použít UPnP k namapování naslouchacího portu (výchozí: 0) - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) - + Use the test network Použít testovací sí? (testnet) - + Output extra debugging information. Implies all other -debug* options @@ -4008,7 +3972,7 @@ This label turns red, if the priority is smaller than "medium". - + Prepend debug output with timestamp @@ -4018,7 +3982,7 @@ This label turns red, if the priority is smaller than "medium". - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -4028,7 +3992,7 @@ This label turns red, if the priority is smaller than "medium". 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) @@ -4038,7 +4002,7 @@ This label turns red, if the priority is smaller than "medium". - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -4048,7 +4012,7 @@ This label turns red, if the priority is smaller than "medium". - + Upgrade wallet to latest format P?evést pen?ženku na nejnov?jší formát @@ -4063,7 +4027,7 @@ This label turns red, if the priority is smaller than "medium". P?eskenovat ?et?zec blok? na chyb?jící transakce tvé p?n?ženky - + Attempt to recover private keys from a corrupt wallet.dat Pokusit se zachránit soukromé klí?e z poškozeného souboru wallet.dat @@ -4083,7 +4047,7 @@ This label turns red, if the priority is smaller than "medium". - + Boinc Mining @@ -4093,7 +4057,7 @@ This label turns red, if the priority is smaller than "medium". - + Error obtaining next project. Error 06172014. @@ -4143,12 +4107,32 @@ This label turns red, if the priority is smaller than "medium". - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -4163,12 +4147,12 @@ This label turns red, if the priority is smaller than "medium". - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) Možnosti SSL: (viz instrukce nastavení SSL v Bitcoin Wiki) @@ -4188,17 +4172,17 @@ This label turns red, if the priority is smaller than "medium". Soubor se serverovým soukromým klí?em (výchozí: server.pem) - + Invalid amount for -paytxfee=<amount>: '%s' Neplatná ?ástka pro -paytxfee=<?ástka>: '%s' - + 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. - + Invalid amount for -mininput=<amount>: '%s' @@ -4208,22 +4192,22 @@ This label turns red, if the priority is smaller than "medium". - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4233,10 +4217,15 @@ This label turns red, if the priority is smaller than "medium". Upozorn?ní: soubor wallet.dat je poškozený, data jsou však zachrán?na! P?vodní soubor wallet.dat je uložený jako wallet.{timestamp}.bak v %s. Pokud je stav tvého ú?tu nebo transakce nesprávné, z?ejm? bys m?l obnovit zálohu. - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4253,17 +4242,17 @@ This label turns red, if the priority is smaller than "medium". Soubor wallet.dat je poškozen, jeho záchrana se nezda?ila - + Unknown -socks proxy version requested: %i V -socks byla požadována neznámá verze proxy: %i - + Invalid -tor address: '%s' - + Cannot resolve -bind address: '%s' Nemohu p?eložit -bind adresu: '%s' @@ -4273,7 +4262,7 @@ This label turns red, if the priority is smaller than "medium". Nemohu p?eložit -externalip adresu: '%s' - + Invalid amount for -reservebalance=<amount> @@ -4288,22 +4277,22 @@ This label turns red, if the priority is smaller than "medium". Chyba p?i na?ítání wallet.dat: pen?ženka je poškozená - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. Upozorn?ní: nastala chyba p?i ?tení souboru wallet.dat! Všechny klí?e se p?e?etly správn?, ale data o transakcích nebo záznamy v adresá?i mohou chyb?t ?i být nesprávné. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete - + Error loading wallet.dat Chyba p?i na?ítání wallet.dat @@ -4323,17 +4312,17 @@ This label turns red, if the priority is smaller than "medium". - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) Neda?í se mi p?ipojit na %s na tomhle po?íta?i (operace bind vrátila chybu %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4343,51 +4332,47 @@ This label turns red, if the priority is smaller than "medium". - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount Neplatná ?ástka - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - Warning: This version is obsolete, upgrade required! - Upozorn?ní: tahle verze je zastaralá, m?l bys ji aktualizovat! - - - + Warning: Disk space is low! - + To use the %s option K použití volby %s - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -4421,12 +4406,12 @@ If the file does not exist, create it with owner-readable-only file permissions. Pokud konfigura?ní soubor ješt? neexistuje, vytvo? ho tak, aby ho mohl ?íst pouze vlastník. - + Gridcoin version - + Usage: Užití: @@ -4436,7 +4421,7 @@ Pokud konfigura?ní soubor ješt? neexistuje, vytvo? ho tak, aby ho mohl ?íst p - + List commands Výpis p?íkaz? diff --git a/src/qt/locale/bitcoin_cy.ts b/src/qt/locale/bitcoin_cy.ts index 0d3d662ea4..650df7c904 100644 --- a/src/qt/locale/bitcoin_cy.ts +++ b/src/qt/locale/bitcoin_cy.ts @@ -299,7 +299,7 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + &Overview &Trosolwg @@ -329,7 +329,7 @@ This product includes software developed by the OpenSSL Project for use in the O Gadael rhaglen - + &Options... &Opsiynau @@ -349,12 +349,12 @@ This product includes software developed by the OpenSSL Project for use in the O Newid y cyfrinymadrodd a ddefnyddiwyd ar gyfer amgryptio'r waled - + Wallet Waled - + &Send &Anfon @@ -364,7 +364,7 @@ This product includes software developed by the OpenSSL Project for use in the O &Derbyn - + &Show / Hide &Dangos / Cuddio @@ -379,7 +379,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &File &Ffeil @@ -389,22 +389,22 @@ This product includes software developed by the OpenSSL Project for use in the O &Gosodiadau - + &Help &Cymorth - + Up to date Cyfamserol - + Catching up... Dal i fyny - + Sent transaction Trafodiad a anfonwyd @@ -414,16 +414,12 @@ This product includes software developed by the OpenSSL Project for use in the O Trafodiad sy'n cyrraedd - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Mae'r waled <b>wedi'i amgryptio</b> ac <b>heb ei gloi</b> ar hyn o bryd - - - + Wallet is <b>encrypted</b> and currently <b>locked</b> Mae'r waled <b>wedi'i amgryptio</b> ac <b>ar glo</b> ar hyn o bryd - + Send coins to a Gridcoin address @@ -499,28 +495,12 @@ This product includes software developed by the OpenSSL Project for use in the O - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -530,7 +510,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Diagnostics @@ -600,24 +580,19 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Community - - &Advanced - - - - + [testnet] [testnet] - + Gridcoin client @@ -638,7 +613,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Last received block was generated %1. @@ -691,7 +666,7 @@ Address: %4 - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -701,13 +676,13 @@ Address: %4 - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. - + %n second(s) ago @@ -751,7 +726,7 @@ Address: %4 - + URI handling @@ -804,7 +779,7 @@ Address: %4 - + %n second(s) @@ -848,12 +823,42 @@ Address: %4 - + + Scraper: waiting on wallet to sync. + + + + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + Gridcoin - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. @@ -861,7 +866,7 @@ Address: %4 ClientModel - + Network Alert @@ -1308,7 +1313,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1754,6 +1759,14 @@ This label turns red, if the priority is smaller than "medium". + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1815,7 +1828,7 @@ This label turns red, if the priority is smaller than "medium". RPCConsole - + &Information Gwybodaeth @@ -1825,12 +1838,12 @@ This label turns red, if the priority is smaller than "medium". &Agor - + Gridcoin - Debug Console - + Boost version @@ -1847,7 +1860,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A @@ -1991,6 +2004,11 @@ This label turns red, if the priority is smaller than "medium". Clear console + + + &Scraper + + Yes @@ -2017,7 +2035,7 @@ This label turns red, if the priority is smaller than "medium". - + %1 B @@ -2314,17 +2332,17 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: &Maint - + &Label: &Label: - + Alt+A Alt+A @@ -2344,12 +2362,12 @@ This label turns red, if the priority is smaller than "medium". Neges: - + Form Ffurflen - + Enter a label for this address to add it to your address book @@ -2375,17 +2393,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2640,22 +2653,47 @@ This label turns red, if the priority is smaller than "medium". - + Source - + Generated in CoinBase - - Generated, PoS + + MINED - POS - + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From @@ -2777,10 +2815,6 @@ This label turns red, if the priority is smaller than "medium". Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - Gwybodaeth - Amount @@ -2810,12 +2844,7 @@ This label turns red, if the priority is smaller than "medium". - - View Attachment - - - - + Execute Contract @@ -2824,21 +2853,11 @@ This label turns red, if the priority is smaller than "medium". C&lose C&au - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Dyddiad @@ -2914,7 +2933,7 @@ This label turns red, if the priority is smaller than "medium". - + Received with @@ -2934,32 +2953,42 @@ This label turns red, if the priority is smaller than "medium". - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) - + Transaction status. Hover over this field to show number of confirmations. @@ -3156,7 +3185,7 @@ This label turns red, if the priority is smaller than "medium". VotingChartDialog - + Poll Results @@ -3300,7 +3329,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3333,7 +3362,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3341,7 +3370,7 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: Opsiynau: @@ -3351,12 +3380,12 @@ This label turns red, if the priority is smaller than "medium". Gwall - + To use the %s option - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -3403,7 +3432,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Boinc Mining @@ -3413,7 +3442,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error obtaining next project. Error 06172014. @@ -3453,12 +3482,32 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -3518,7 +3567,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + List commands @@ -3533,7 +3582,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + This help message @@ -3568,12 +3617,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3583,12 +3632,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Allow DNS lookups for -addnode, -seednode and -connect - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3598,7 +3647,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Add a node to connect to and attempt to keep the connection open @@ -3693,6 +3742,16 @@ If the file does not exist, create it with owner-readable-only file permissions. Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3763,6 +3822,11 @@ If the file does not exist, create it with owner-readable-only file permissions. ERROR + + + Entire balance reserved + + Expires @@ -3818,11 +3882,6 @@ If the file does not exist, create it with owner-readable-only file permissions. Message Neges - - - Messate Type - - Miner: @@ -3859,12 +3918,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - No coins; - - - - + Offline; @@ -3874,12 +3928,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3914,17 +3963,17 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -3934,27 +3983,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + 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: 5000) @@ -3964,7 +4013,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Use UPnP to map the listening port (default: 1 when listening) @@ -3974,12 +4023,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) @@ -3989,7 +4038,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Run in the background as a daemon and accept commands @@ -3999,7 +4048,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Output extra debugging information. Implies all other -debug* options @@ -4009,7 +4058,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Prepend debug output with timestamp @@ -4039,7 +4088,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -4049,12 +4098,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Send commands to node running on <ip> (default: 127.0.0.1) - + Execute command when the best block changes (%s in cmd is replaced by block hash) @@ -4064,12 +4113,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Require a confirmations for change (default: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -4079,7 +4128,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Upgrade wallet to latest format @@ -4094,12 +4143,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Attempt to recover private keys from a corrupt wallet.dat - + How many blocks to check at startup (default: 2500, 0 = all) @@ -4114,12 +4163,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Block creation options: - + Set minimum block size in bytes (default: 0) @@ -4129,12 +4178,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -4154,17 +4203,17 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid amount for -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - + Invalid amount for -mininput=<amount>: '%s' @@ -4174,22 +4223,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4199,7 +4248,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Weight @@ -4209,7 +4258,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Unknown -socks proxy version requested: %i @@ -4219,7 +4268,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid -proxy address: '%s' @@ -4229,22 +4278,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Cannot resolve -bind address: '%s' - + Failed to listen on any port. Use -listen=0 if you want this. - + Cannot resolve -externalip address: '%s' - + Invalid amount for -reservebalance=<amount> @@ -4269,20 +4318,25 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4294,12 +4348,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error loading wallet.dat - + Cannot downgrade wallet @@ -4309,12 +4363,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Rescanning... - + Importing blockchain data file. @@ -4334,22 +4388,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Done loading - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4359,27 +4413,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount @@ -4389,12 +4443,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - + Warning: Disk space is low! diff --git a/src/qt/locale/bitcoin_da.ts b/src/qt/locale/bitcoin_da.ts index 1f23f5d548..32b56b7e74 100644 --- a/src/qt/locale/bitcoin_da.ts +++ b/src/qt/locale/bitcoin_da.ts @@ -23,20 +23,6 @@ Distributed under the MIT/X11 software license, see the accompanying file COPYIN This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (https://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - - -This is experimental software. - -Distributed under the MIT/X11 software license, see the accompanying file COPYING 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. - -Dette program er eksperimentelt. - -Det er gjort tilgængeligt under MIT/X11-softwarelicensen. Se den medfølgende fil "COPYING" eller http://www.opensource.org/licenses/mit-license.php. - -Produktet indeholder software, som er udviklet af OpenSSL Project til brug i OpenSSL Toolkit (http://www.openssl.org/). Kryptografisk software er skrevet af Eric Young (eay@cryptsoft.com), og UPnP-software er skrevet af Thomas Bernard. - AddressBookPage @@ -313,12 +299,12 @@ Produktet indeholder software, som er udviklet af OpenSSL Project til brug i Ope BitcoinGUI - + Sign &message... Signér &besked… - + &Overview &Oversigt @@ -348,7 +334,7 @@ Produktet indeholder software, som er udviklet af OpenSSL Project til brug i Ope Afslut program - + &Options... &Indstillinger… @@ -357,19 +343,11 @@ Produktet indeholder software, som er udviklet af OpenSSL Project til brug i Ope &Encrypt Wallet... &Kryptér tegnebog… - - &Backup Wallet... - &Sikkerhedskopiér tegnebog… - &Change Passphrase... &Skift adgangskode… - - Backup wallet to another location - Lav sikkerhedskopi af tegnebogen til et andet sted - Change the passphrase used for wallet encryption @@ -391,12 +369,12 @@ Produktet indeholder software, som er udviklet af OpenSSL Project til brug i Ope &Verificér besked… - + Wallet Tegnebog - + &Send &Send @@ -406,12 +384,12 @@ Produktet indeholder software, som er udviklet af OpenSSL Project til brug i Ope &Modtag - + &Show / Hide &Vis / skjul - + &File &Fil @@ -421,12 +399,12 @@ Produktet indeholder software, som er udviklet af OpenSSL Project til brug i Ope &Opsætning - + &Help &Hjælp - + Processed %n block(s) of transaction history. Bearbejdede %n blok med transaktionshistorik. @@ -439,12 +417,12 @@ Produktet indeholder software, som er udviklet af OpenSSL Project til brug i Ope Opdateret - + Catching up... Indhenter… - + Sent transaction Afsendt transaktion @@ -454,16 +432,12 @@ Produktet indeholder software, som er udviklet af OpenSSL Project til brug i Ope Indgående transaktion - 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> - + Send coins to a Gridcoin address Send mønter til en Gridcoin adresse @@ -529,7 +503,7 @@ Produktet indeholder software, som er udviklet af OpenSSL Project til brug i Ope - + Encrypt or decrypt wallet Kryptere eller dekryptere tegnebog @@ -574,7 +548,7 @@ Produktet indeholder software, som er udviklet af OpenSSL Project til brug i Ope Eksportere data i den aktuelle fane til en fil - + %n second(s) ago %n sekund siden @@ -606,7 +580,7 @@ Produktet indeholder software, som er udviklet af OpenSSL Project til brug i Ope - + Date: %1 Amount: %2 Type: %3 @@ -621,7 +595,7 @@ Adresse: %4 ?} {4?} - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -631,43 +605,57 @@ Adresse: %4 - - Gridcoin - Gridcoin + + Scraper: waiting on wallet to sync. + - - &About Gridcoin - &Om Gridcoin + + Scraper: superblock not needed - inactive. + - - Show information about Gridcoin - Vis oplysninger om Gridcoin + + Scraper: downloading and processing stats. + - - &Neural Network + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. - - Neural Network + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. - - &New User Wizard + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + Gridcoin + Gridcoin + + + + &About Gridcoin + &Om Gridcoin + - + Show information about Gridcoin + Vis oplysninger om Gridcoin + + + New User Wizard - + &Voting @@ -677,7 +665,7 @@ Adresse: %4 - + &Diagnostics @@ -692,14 +680,14 @@ Adresse: %4 Ændre indstillingsmuligheder for Gridcoin - + [testnet] [testnetværk] - + Gridcoin client Gridcoin klient @@ -709,23 +697,7 @@ Adresse: %4 %1 aktiv forbindelse til Gridcoin netværk - %1 second(s) ago - %1 sekund siden - - - %1 minute(s) ago - %1 minut siden - - - %1 hour(s) ago - %1 time siden - - - %1 day(s) ago - %1 dag siden - - - + Last received block was generated %1. Sidst modtagne blok blev genereret %1. @@ -770,19 +742,7 @@ Adresse: %4 - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Dato: %1 -Beløb: %2 -Type: %3 -Adresse: %4 - - - - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. URI kan ikke tolkes! Dette kan skyldes en ugyldig Gridcoin adresse eller misdannede URI parametre. @@ -841,7 +801,7 @@ Adresse: %4 - + %n second(s) %n sekund @@ -873,37 +833,12 @@ Adresse: %4 - Not staking because wallet is locked - Ingen rente fordi tegnebog er låst - - - Not staking because wallet is offline - Ingen rente fordi tegnebog er offline - - - Not staking because wallet is syncing - Ingen rente fordi tegnebog er ved at synkronisere - - - Not staking because you don't have mature coins - Ingen rente fordi der ingen modne mønter eksistere - - - Not staking - Ingen rente - - - + &Community - - &Advanced - - - - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. Der opstod en fejl under forsøg på at gemme dataene i tegnebogen til den nye placering. @@ -911,7 +846,7 @@ Adresse: %4 ClientModel - + Network Alert Netværksadvarsel @@ -953,10 +888,6 @@ Adresse: %4 (un)select all (af)vælg alle - - List mode - Listetilstand - Amount @@ -1376,7 +1307,7 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. NewPollDialog - + Create Poll @@ -1474,10 +1405,6 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Map port using &UPnP Konfigurér port vha. &UPnP - - Proxy &IP: - Proxy-&IP: - &Port: @@ -1826,6 +1753,14 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. ikke synkroniseret + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1887,7 +1822,7 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. RPCConsole - + @@ -1899,7 +1834,7 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. - + N/A N/A @@ -1979,7 +1914,12 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Udgående: - + + &Scraper + + + + Debug log file Fejlsøgningslogfil @@ -1999,7 +1939,7 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Tast <b>help</b> for en oversigt over de tilgængelige kommandoer. - + %1 B %1 B @@ -2019,7 +1959,7 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. %1 GB - + Welcome to the Gridcoin RPC console! @@ -2034,7 +1974,7 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. - + %1 m %1 m @@ -2049,12 +1989,12 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. - + Gridcoin - Debug Console - + Boost version @@ -2386,22 +2326,22 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. SendCoinsEntry - + A&mount: &Beløb: - + Pay &To: Betal &til: - + &Label: &Mærkat: - + Alt+A Alt+A @@ -2427,12 +2367,12 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Indtast en mærkat for denne adresse for at føje den til din adressebog - + Form Form - + The address to send the payment to (e.g. Sjz75uKHzUQJnSdzvpiigEGxseKkDhQToX) @@ -2447,17 +2387,12 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Fjern denne modtager - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2701,26 +2636,17 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. - + Source Kilde - Generated - Genereret - - - + Generated in CoinBase - - Generated, PoS - - - - + From Fra @@ -2834,18 +2760,6 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Transaction Inputs - - Transaction ID - Transaktions-ID - - - Transaction - Transaktion - - - Inputs - Input - Amount @@ -2862,18 +2776,44 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. falsk - + conflicted konflikt - - Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE - Information - Information + + MINED - UNKNOWN + + + + + Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. + @@ -2889,12 +2829,7 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Transaktionsdetaljer - - View Attachment - - - - + Execute Contract @@ -2903,21 +2838,11 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. C&lose &Luk - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Dato @@ -2965,7 +2890,7 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Genereret, men ikke accepteret - + Received with Modtaget med @@ -2985,12 +2910,42 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Betaling til dig selv - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (n/a) - + Transaction status. Hover over this field to show number of confirmations. Transaktionsstatus. Hold musen over dette felt for at vise antallet af bekræftelser. @@ -3010,7 +2965,7 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Beløb trukket fra eller tilføjet balance. - + Address Adresse @@ -3035,27 +2990,7 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. - - Mined - DPOR - - - - - Minted - (Local) DPOR - - - - - Mined - PoR - - - - - Mined - Interest - - - - + Destination address of transaction. Destinationsadresse for transaktion. @@ -3229,17 +3164,10 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Kunne ikke skrive til filen% 1. - - UpgradeDialog - - Hide - Skjul - - VotingChartDialog - + Poll Results @@ -3383,7 +3311,7 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. VotingVoteDialog - + PlaceVote @@ -3416,7 +3344,7 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. WalletModel - + Sending... Sender... @@ -3424,37 +3352,37 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. bitcoin-core - + Options: Indstillinger: - + Specify data directory Angiv datamappe - + Connect to a node to retrieve peer addresses, and disconnect Forbind til en knude for at modtage adresser på andre knuder, og afbryd derefter - + Specify your own public address Angiv din egen offentlige adresse - + Accept command line and JSON-RPC commands Acceptér 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 - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) Udfør kommando, når en transaktion i tegnebogen ændres (%s i kommandoen erstattes med TxID) @@ -3464,12 +3392,12 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Blokoprettelsestilvalg: - + Failed to listen on any port. Use -listen=0 if you want this. Lytning på enhver port mislykkedes. Brug -listen=0, hvis du ønsker dette. - + Specify configuration file (default: gridcoinresearch.conf) @@ -3499,7 +3427,7 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Adgangskode til JSON-RPC-forbindelser - + Execute command when the best block changes (%s in cmd is replaced by block hash) Udfør kommando, når den bedste blok ændres (%s i kommandoen erstattes med blokhash) @@ -3509,7 +3437,7 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Tillad DNS-opslag for -addnode, -seednode og -connect - + Loading addresses... Indlæser adresser… @@ -3519,12 +3447,12 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Ugyldig -proxy adresse: “%s” - + Unknown network specified in -onlynet: '%s' Ukendt netværk anført i -onlynet: “%s” - + Insufficient funds Manglende dækning @@ -3534,17 +3462,17 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Indlæser blokindeks… - + Add a node to connect to and attempt to keep the connection open Tilføj en knude til at forbinde til og forsøg at holde forbindelsen åben - + Loading wallet... Indlæser tegnebog… - + Cannot downgrade wallet Kan ikke nedgradere tegnebog @@ -3554,22 +3482,22 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Kan ikke skrive standardadresse - + Rescanning... Genindlæser… - + Done loading Indlæsning gennemført - + Error Fejl - + This help message Denne hjælpebesked @@ -3594,12 +3522,12 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Angiv tilslutningstimeout i millisekunder (standard: 5000) - + Connect through socks proxy Tilslut gennem socks proxy - + Select the version of socks proxy to use (4-5, default: 5) Vælg den version af socks proxy du vil bruge (4-5, standard: 5) @@ -3609,7 +3537,7 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Brug proxy til at nå tor skjulte services (Standard: samme som-proxy) - + Listen for connections on <port> (default: 32749 or testnet: 32748) Lyt efter forbindelser på <port> (default: 15714 eller Testnet: 25714) {32749 ?} {32748)?} @@ -3619,26 +3547,22 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Oprethold højest <n> forbindelser til andre i netværket (standard: 125) - + Connect only to the specified node(s) Tilslut kun til de(n) angivne knude(r) - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) Tilslut kun til knuder i netværk <net> (IPv4, IPv6 eller Tor) - + Discover own IP address (default: 1 when listening and no -externalip) Find egen IP-adresse (standard: 1 når lytter og ingen -externalip) - Find peers using internet relay chat (default: 0) - Find peers der bruger internet relay chat (default: 1) {? 0)} - - - + Accept connections from outside (default: 1 if no -proxy or -connect) Accepter forbindelser udefra (standard: 1 hvis hverken -proxy eller -connect) @@ -3648,26 +3572,22 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Binder til en given adresse. Brug [host]: port notation for IPv6 - + Find peers using DNS lookup (default: 1) Find peer bruges DNS-opslag (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) Synkroniser tid med andre noder. Deaktiver, hvis tiden på dit system er præcis eksempelvis synkroniseret med NTP (default: 1) - Sync checkpoints policy (default: strict) - Synkroniser checkpoints politik (default: streng) - - - + Threshold for disconnecting misbehaving peers (default: 100) Grænse for afbrydelse til dårlige forbindelser (standard: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Antal sekunder dårlige forbindelser skal vente før reetablering (standard: 86400) @@ -3762,6 +3682,16 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3822,6 +3752,11 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. ERROR + + + Entire balance reserved + + Expires @@ -3887,11 +3822,6 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Message Besked - - - Messate Type - - Miner: @@ -3928,12 +3858,7 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. - - No coins; - - - - + Offline; @@ -3943,12 +3868,7 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -4028,22 +3948,22 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Forsøg at bruge UPnP til at konfigurere den lyttende port (standard: 0) - + Fee per KB to add to transactions you send Gebyr pr KB som tilføjes til transaktioner, du sender - + When creating transactions, ignore inputs with value less than this (default: 0.01) Når du opretter transaktioner ignoreres input med værdi mindre end dette (standard: 0,01) - + Use the test network Brug testnetværket - + Output extra debugging information. Implies all other -debug* options Output ekstra debugging information. Indebærer alle andre-debug * muligheder @@ -4053,7 +3973,7 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Output ekstra netværk debugging information - + Prepend debug output with timestamp Prepend debug output med tidsstempel @@ -4063,7 +3983,7 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Send trace / debug info til debugger - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) Spor efter JSON-RPC-forbindelser på <port> (default: 15715 eller Testnet: 25715) @@ -4073,7 +3993,7 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Tillad JSON-RPC-forbindelser fra bestemt IP-adresse - + Send commands to node running on <ip> (default: 127.0.0.1) Send kommandoer til knude, der kører på <ip> (standard: 127.0.0.1) @@ -4083,7 +4003,7 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Kræver en bekræftelser for forandring (default: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) Gennemtving transaktions omkostninger scripts til at bruge canoniske PUSH operatører (default: 1) @@ -4093,7 +4013,7 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Udfør kommando, når en relevant advarsel er modtaget (% s i cmd erstattes af meddelelse) - + Upgrade wallet to latest format Opgrader tegnebog til seneste format @@ -4108,7 +4028,7 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Gennemsøg blokkæden for manglende tegnebogstransaktioner - + Attempt to recover private keys from a corrupt wallet.dat Forsøg at genskabe private nøgler fra ødelagt wallet.dat @@ -4128,7 +4048,7 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. - + Boinc Mining @@ -4138,7 +4058,7 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. - + Error obtaining next project. Error 06172014. @@ -4188,12 +4108,32 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -4208,12 +4148,12 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Indstil maks. blok størrelse i bytes (standard: 250000) - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) Angiv maksimal størrelse på high-priority/low-fee transaktioner i bytes (standard: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) SSL-indstillinger: (se Bitcoin Wiki for SSL-opsætningsinstruktioner) @@ -4233,21 +4173,17 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Serverens private nøgle (standard: server.pem) - Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - Acceptable ciphers (default: TLSv1 + HØJ:! SSLv2: aNULL: eNULL: AH: 3DES: @ styrke) - - - + Invalid amount for -paytxfee=<amount>: '%s' Ugyldigt beløb for -paytxfee=<amount>: '%s' - + 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. - + Invalid amount for -mininput=<amount>: '%s' Ugyldigt beløb for-mininput = <beløb>: '% s' @@ -4257,22 +4193,22 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. - + Wallet %s resides outside data directory %s. Wallet% s placeret udenfor data mappe% s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. Kan ikke få en lås på data mappe% s. Gridcoin kører sikkert allerede. - + Verifying database integrity... Bekræfter database integritet ... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. Fejl initialisering database miljø% s! For at gendanne, BACKUP denne mappe, og derefter fjern alt bortset fra wallet.dat. @@ -4282,10 +4218,15 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Advarsel: wallet.dat ødelagt, data reddet! Oprindelig wallet.net gemt som wallet.{timestamp}.bak i %s; hvis din saldo eller dine transaktioner er forkert, bør du genskabe fra en sikkerhedskopi. - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4302,17 +4243,17 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. wallet.dat ødelagt, redning af data mislykkedes - + Unknown -socks proxy version requested: %i Ukendt -socks proxy-version: %i - + Invalid -tor address: '%s' Ugyldig-tor-adresse: '% s' - + Cannot resolve -bind address: '%s' Kan ikke finde -bind adressen: '%s' @@ -4322,16 +4263,10 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Kan ikke finde -externalip adressen: '%s' - + Invalid amount for -reservebalance=<amount> Ugyldigt beløb for-reservebalance = <beløb> - - Unable to sign checkpoint, wrong checkpointkey? - - Kan ikke logge checkpoint, forkert checkpointkey? - - Error loading blkindex.dat @@ -4343,22 +4278,22 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Fejl ved indlæsning af wallet.dat: Tegnebog ødelagt - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. Advarsel: fejl under læsning af wallet.dat! Alle nøgler blev læst korrekt, men transaktionsdata eller adressebogsposter kan mangle eller være forkerte. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin Fejl ved indlæsning af wallet.dat: Wallet kræver en nyere version af Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete Det er nødvendig for wallet at blive omskrevet: Genstart Gridcoin for fuldføre - + Error loading wallet.dat Fejl ved indlæsning af wallet.dat @@ -4378,17 +4313,17 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Fejl: kunne ikke starte node - + Unable to bind to %s on this computer. Gridcoin is probably already running. Kunne ikke binde sig til% s på denne computer. Gridcoin kører sikkert allerede. - + Unable to bind to %s on this computer (bind returned error %d, %s) Kunne ikke tildele %s på denne computer (bind returnerede fejl %d, %s) - + Error: Wallet locked, unable to create transaction Fejl: Wallet låst, ude af stand til at skabe transaktion @@ -4398,59 +4333,47 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. Fejl: Pung låst for at udregne rente, ude af stand til at skabe transaktion. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds Fejl: Denne transaktion kræver et transaktionsgebyr på mindst% s på grund af dens størrelse, kompleksitet, eller anvendelse af nylig modtaget midler - + Error: Transaction creation failed Fejl: Transaktion oprettelse mislykkedes - + Sending... Sender... - + 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 mønterne i din pung allerede er blevet brugt, som hvis du brugte en kopi af wallet.dat og mønterne blev brugt i kopien, men ikke markeret her. - + Invalid amount Ugyldigt beløb - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. Advarsel: Kontroller venligst, at computerens dato og klokkeslæt er korrekt! Hvis dit ur er forkert vil Gridcoin ikke fungere korrekt. - Warning: This version is obsolete, upgrade required! - Advarsel: Denne version er forældet, opgradering påkrævet! - - - WARNING: synchronized checkpoint violation detected, but skipped! - ADVARSEL: synkroniseret checkpoint overtrædelse opdaget, men skibbet! - - - + Warning: Disk space is low! Advarsel: Diskplads lav! - WARNING: Invalid checkpoint found! Displayed transactions may not be correct! You may need to upgrade, or notify developers. - ADVARSEL: Ugyldig checkpoint fundet! Viste transaktioner er måske ikke korrekte! Du kan være nødt til at opgradere, eller underrette udviklerne. - - - + To use the %s option For at bruge %s mulighed - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -4484,12 +4407,12 @@ If the file does not exist, create it with owner-readable-only file permissions. Hvis filen ikke eksisterer, opret den og giv ingen andre end ejeren læserettighed. - + Gridcoin version Gridcoin version - + Usage: Anvendelse: @@ -4499,7 +4422,7 @@ Hvis filen ikke eksisterer, opret den og giv ingen andre end ejeren læserettigh - + List commands Liste over kommandoer diff --git a/src/qt/locale/bitcoin_de.ts b/src/qt/locale/bitcoin_de.ts index 25aa419edc..11d9814245 100644 --- a/src/qt/locale/bitcoin_de.ts +++ b/src/qt/locale/bitcoin_de.ts @@ -23,20 +23,6 @@ Distributed under the MIT/X11 software license, see the accompanying file COPYIN This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (https://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - - -This is experimental software. - -Distributed under the MIT/X11 software license, see the accompanying file COPYING 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. - -Dies ist experimentelle Software. - -Veröffentlicht unter der MIT/X11-Softwarelizenz, siehe beiligende Datei COPYING oder http://www.opensource.org/licenses/mit-license.php. - -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. - AddressBookPage @@ -315,12 +301,12 @@ Dieses Produkt enthält Software, die vom OpenSSL-Projekt zur Verwendung im Open BitcoinGUI - + Sign &message... Nachricht s&ignieren... - + &Overview &Übersicht @@ -350,7 +336,7 @@ Dieses Produkt enthält Software, die vom OpenSSL-Projekt zur Verwendung im Open Anwendung beenden - + &Options... &Konfiguration... @@ -359,19 +345,11 @@ Dieses Produkt enthält Software, die vom OpenSSL-Projekt zur Verwendung im Open &Encrypt Wallet... Wallet &verschlüsseln... - - &Backup Wallet... - Wallet &sichern... - &Change Passphrase... Passphrase &ändern... - - Backup wallet to another location - Eine Wallet-Sicherungskopie erstellen und abspeichern - Change the passphrase used for wallet encryption @@ -393,12 +371,12 @@ Dieses Produkt enthält Software, die vom OpenSSL-Projekt zur Verwendung im Open Nachricht &verifizieren... - + Wallet Wallet - + &Send &Überweisen @@ -408,12 +386,12 @@ Dieses Produkt enthält Software, die vom OpenSSL-Projekt zur Verwendung im Open &Empfangen - + &Show / Hide &Anzeigen / Verstecken - + &File &Datei @@ -423,12 +401,12 @@ Dieses Produkt enthält Software, die vom OpenSSL-Projekt zur Verwendung im Open &Einstellungen - + &Help &Hilfe - + Processed %n block(s) of transaction history. %n Block des Transaktionsverlaufs verarbeitet. @@ -473,12 +451,12 @@ Dieses Produkt enthält Software, die vom OpenSSL-Projekt zur Verwendung im Open Auf aktuellem Stand - + Catching up... Hole auf... - + Sent transaction Gesendete Transaktion @@ -488,16 +466,12 @@ Dieses Produkt enthält Software, die vom OpenSSL-Projekt zur Verwendung im Open Eingehende Transaktion - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Wallet ist <b>verschlüsselt</b> und aktuell <b>entsperrt</b> - - - + Wallet is <b>encrypted</b> and currently <b>locked</b> Wallet ist <b>verschlüsselt</b> und aktuell <b>gesperrt</b> - + Send coins to a Gridcoin address Sende Coins zu einer Gridcoin Addresse @@ -563,7 +537,7 @@ Dieses Produkt enthält Software, die vom OpenSSL-Projekt zur Verwendung im Open - + Encrypt or decrypt wallet Verschlüssele oder entschlüsele das Wallet @@ -608,11 +582,37 @@ Dieses Produkt enthält Software, die vom OpenSSL-Projekt zur Verwendung im Open Exportiere die Daten des momentanen Reiters in eine Datei - %1 second(s) ago - %1 Sekunde(n) + + Scraper: waiting on wallet to sync. + + + + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + - + Date: %1 Amount: %2 Type: %3 @@ -626,7 +626,7 @@ Adresse: %4 {1 ?} {4?} - + Wallet is <b>encrypted</b> and currently %1 @@ -651,7 +651,7 @@ Adresse: %4 {1 - + %n second(s) %n Sekunde @@ -693,24 +693,12 @@ Adresse: %4 {1 - + Gridcoin Gridcoin - %1 minute(s) ago - %1 Minute(n) - - - %1 hour(s) ago - %1 Stunde(n) - - - %1 day(s) ago - %1 Tag(en) - - - + Last received block was generated %1. Letzter erhaltener Block wurde vor %1 generiert. @@ -755,18 +743,7 @@ Adresse: %4 {1 - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Datum: %1 -Betrag: %2 -Typ: %3 -Adresse: %4 - - - + &About Gridcoin &Über Gridcoin @@ -776,28 +753,12 @@ Adresse: %4 Zeige Information über Gridcoin - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -807,7 +768,7 @@ Adresse: %4 - + &Diagnostics @@ -822,7 +783,7 @@ Adresse: %4 Verändere Konfigurationen von Gridcoin - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. URI kann nicht geparsed werden! Dies kann durch eine nicht gültige Gridcoin Addresse, oder schlechten URI Parametern verursacht worden sein. @@ -856,14 +817,14 @@ Adresse: %4 Es gab einen Fehler beim speichern ihrer Wallet Datei in dem neuen Ort. - + [testnet] [Testnetz] - + Gridcoin client Gridcoin @@ -873,41 +834,12 @@ Adresse: %4 %1 aktive Verbindung(en) zum Gridcoin Netzwerk - Not staking because wallet is locked - Nicht am Verzinsen, da das Wallet verschlossen ist - - - Not staking because wallet is offline - Nicht am Verzinsen, da das Wallet offline ist - - - Not staking because wallet is syncing - Nicht am Verzinsen, weil das Wallet synchronisiert - - - Not staking because you don't have mature coins and stake weight is too low. - Nicht am Verzinsen, da keine reifen Coins vorhanden sind und das stake weight zu niedrig ist - - - Not staking because you don't have mature coins - Nicht am Verzinsen, da keine keine reifen Coins vorhanden sind - - - Not staking - Nicht am Verzinsen - - - + &Community - - &Advanced - - - - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. Ein fataler Fehler passierte. Gridcoin kann nicht mehr länger sicher ausgführt werden und wird runterfahren. @@ -915,7 +847,7 @@ Adresse: %4 ClientModel - + Network Alert Netzwerkalarm @@ -957,10 +889,6 @@ Adresse: %4 (un)select all Alles (de)selektieren - - List mode - Listenansicht - Amount @@ -1380,7 +1308,7 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. NewPollDialog - + Create Poll @@ -1478,10 +1406,6 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Map port using &UPnP Portweiterleitung via &UPnP - - Proxy &IP: - Proxy-&IP: - &Port: @@ -1830,6 +1754,14 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. nicht synchron + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1891,7 +1823,7 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. RPCConsole - + @@ -1903,7 +1835,7 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. - + N/A k.A. @@ -1983,7 +1915,12 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. ausgehend: - + + &Scraper + + + + Debug log file Debugprotokolldatei @@ -2003,7 +1940,7 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Bitte <b>help</b> eingeben, um eine Übersicht verfügbarer Befehle zu erhalten. - + %1 B %1 B @@ -2023,7 +1960,7 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. %1 GB - + Welcome to the Gridcoin RPC console! @@ -2038,7 +1975,7 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. - + %1 m %1 m @@ -2053,12 +1990,12 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. - + Gridcoin - Debug Console - + Boost version @@ -2390,22 +2327,22 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. SendCoinsEntry - + A&mount: Betra&g: - + Pay &To: E&mpfänger: - + &Label: &Bezeichnung: - + Alt+A Alt+A @@ -2431,12 +2368,12 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Geben Sie eine Bezeichnung für diese Adresse ein, um sie zu Ihrem Adressbuch hinzuzufügen - + Form Form - + The address to send the payment to (e.g. Sjz75uKHzUQJnSdzvpiigEGxseKkDhQToX) @@ -2451,17 +2388,12 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Entferne den Empfänger - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2705,26 +2637,17 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. - + Source Quelle - Generated - Erzeugt - - - + Generated in CoinBase - - Generated, PoS - - - - + From Von @@ -2838,18 +2761,6 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Transaction Inputs - - Transaction ID - Transaktionskennung - - - Transaction - Transaktion - - - Inputs - Eingaben - Amount @@ -2866,18 +2777,44 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. falsch - + conflicted kollidiert - - Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. + + MINED - POS - Information - Hinweis + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + + Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. + @@ -2893,12 +2830,7 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Transaktionsdetails - - View Attachment - - - - + Execute Contract @@ -2907,21 +2839,11 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. C&lose &Schließen - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Datum @@ -2969,7 +2891,7 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Generiert, aber nicht akzeptiert - + Received with Empfangen über @@ -2989,12 +2911,42 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Eigenüberweisung - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (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. @@ -3014,7 +2966,7 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Der Betrag, der dem Kontostand abgezogen oder hinzugefügt wurde. - + Address Adresse @@ -3039,27 +2991,7 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. - - Mined - DPOR - - - - - Minted - (Local) DPOR - - - - - Mined - PoR - - - - - Mined - Interest - - - - + Destination address of transaction. Zieladresse der Transaktion. @@ -3233,17 +3165,10 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Kann Datei nicht schreiben %1. - - UpgradeDialog - - Hide - Ausblenden - - VotingChartDialog - + Poll Results @@ -3387,7 +3312,7 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. VotingVoteDialog - + PlaceVote @@ -3420,7 +3345,7 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. WalletModel - + Sending... Wird gesendet... @@ -3428,37 +3353,37 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. bitcoin-core - + Options: Optionen: - + Specify data directory Datenverzeichnis festlegen - + Connect to a node to retrieve peer addresses, and disconnect Mit dem angegebenen Knoten verbinden, um Adressen von Gegenstellen abzufragen, danach trennen - + Specify your own public address Die eigene öffentliche Adresse angeben - + Accept command line and JSON-RPC commands Kommandozeilen- und JSON-RPC-Befehle annehmen - + Run in the background as a daemon and accept commands Als Hintergrunddienst ausführen und Befehle annehmen - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) Befehl ausführen wenn sich eine Wallet-Transaktion verändert (%s im Befehl wird durch die Transaktions-ID ersetzt) @@ -3468,12 +3393,12 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Blockerzeugungsoptionen: - + Failed to listen on any port. Use -listen=0 if you want this. Fehler, es konnte kein Port abgehört werden. Wenn dies so gewünscht wird -listen=0 verwenden. - + Specify configuration file (default: gridcoinresearch.conf) @@ -3503,7 +3428,7 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Passwort für JSON-RPC-Verbindungen - + Execute command when the best block changes (%s in cmd is replaced by block hash) Befehl ausführen wenn der beste Block wechselt (%s im Befehl wird durch den Hash des Blocks ersetzt) @@ -3513,7 +3438,7 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Erlaube DNS-Abfragen für -addnode, -seednode und -connect - + Loading addresses... Lade Adressen... @@ -3523,12 +3448,12 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Ungültige Adresse in -proxy: '%s' - + Unknown network specified in -onlynet: '%s' Unbekannter Netztyp in -onlynet angegeben: '%s' - + Insufficient funds Unzureichender Kontostand @@ -3538,17 +3463,17 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Lade Blockindex... - + Add a node to connect to and attempt to keep the connection open Mit dem angegebenen Knoten verbinden und versuchen die Verbindung aufrecht zu erhalten - + Loading wallet... Lade Wallet... - + Cannot downgrade wallet Wallet kann nicht auf eine ältere Version herabgestuft werden @@ -3558,22 +3483,22 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Standardadresse kann nicht geschrieben werden - + Rescanning... Durchsuche erneut... - + Done loading Laden abgeschlossen - + Error Fehler - + This help message Dieser Hilfetext @@ -3598,12 +3523,12 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Verbindungstimeout in Millisekunden festlegen (Standard: 5000) - + Connect through socks proxy Verbinde über socks proxy - + Select the version of socks proxy to use (4-5, default: 5) Wähle die Socks Proxy Version (4-5,default:5) @@ -3613,7 +3538,7 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Proxy benutzen um versteckte Services zu erreichen (Standard: selbe Einstellung wie Proxy) - + Listen for connections on <port> (default: 32749 or testnet: 32748) Höre auf Verbindungen auf <port> (default: 15714 oder Testnetz: 25714) {32749 ?} {32748)?} @@ -3623,26 +3548,22 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Maximal <n> Verbindungen zu Gegenstellen aufrechterhalten (Standard: 125) - + Connect only to the specified node(s) Nur mit dem/den angegebenen Knoten verbinden - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) Verbinde nur zu Knoten des Netztyps <net> (IPv4, IPv6 oder Tor) - + Discover own IP address (default: 1 when listening and no -externalip) Eigene IP-Adresse erkennen (Standard: 1, wenn abgehört wird und nicht -externalip) - Find peers using internet relay chat (default: 0) - Knoten die IRC Chat nutzen auffinden (Standard: 1) (0)?) - - - + Accept connections from outside (default: 1 if no -proxy or -connect) Eingehende Verbindungen annehmen (Standard: 1, wenn nicht -proxy oder -connect) @@ -3652,26 +3573,22 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Binde an gegebene Addresse. Benutze [host]:port Notation für IPv6 - + Find peers using DNS lookup (default: 1) Finde Peers mit DNS lookup (default:1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) Synchronisiere Zeit mit anderen Knoten. Deaktivieren wenn die Zeit auf ihrem System präzise ist, zum Beispiel über NTP (default:1) - Sync checkpoints policy (default: strict) - Synchronisiere Checkpoints Police (default:strikt) - - - + Threshold for disconnecting misbehaving peers (default: 100) Schwellenwert, um Verbindungen zu sich nicht konform verhaltenden Gegenstellen zu beenden (Standard: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Anzahl Sekunden, während denen sich nicht konform verhaltenden Gegenstellen die Wiederverbindung verweigert wird (Standard: 86400) @@ -3766,6 +3683,16 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3826,6 +3753,11 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. ERROR + + + Entire balance reserved + + Expires @@ -3891,11 +3823,6 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Message Nachricht - - - Messate Type - - Miner: @@ -3932,12 +3859,7 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. - - No coins; - - - - + Offline; @@ -3947,12 +3869,7 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -4032,22 +3949,22 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. UPnP verwenden, um die Portweiterleitung einzurichten (Standard: 0) - + Fee per KB to add to transactions you send Gebühr pro KB, zusätzlich zur ausgehenden Transaktion - + When creating transactions, ignore inputs with value less than this (default: 0.01) Beim erstellen einer Transaktion werden eingaben kleiner als dieser Wert ignoriert (Standard 0,01) - + Use the test network Das Testnetz verwenden - + Output extra debugging information. Implies all other -debug* options Ausgabe weiterer Debug Informationen. Impliziert alle anderen -debug* Optionen @@ -4057,7 +3974,7 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Ausgabe weiterer Netzwerk Debugging Informationen - + Prepend debug output with timestamp Füge Zeitstempel zu Debug Ausgabe hinzu @@ -4067,7 +3984,7 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Sende Trace/Debug Information an Debugger - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) Höre auf JSON-RPC Verbindungen auf <port> (default: 15715 oder Testnetz: 25715) @@ -4077,7 +3994,7 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. 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) @@ -4087,7 +4004,7 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Benötigt eine Bestätigung zur Änderung (Standard: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) Zwinge Transaktionsskripte den kanonischen PUSH Operator zu verwenden (default: 1) @@ -4097,7 +4014,7 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Kommando ausführen wenn eine relevante Meldung eingeht (%s in cmd wird von der Meldung ausgetauscht) - + Upgrade wallet to latest format Wallet auf das neueste Format aktualisieren @@ -4112,7 +4029,7 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Blockkette erneut nach fehlenden Wallet-Transaktionen durchsuchen - + Attempt to recover private keys from a corrupt wallet.dat Versucht private Schlüssel aus einer beschädigten wallet.dat wiederherzustellen @@ -4132,7 +4049,7 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. - + Boinc Mining @@ -4142,7 +4059,7 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. - + Error obtaining next project. Error 06172014. @@ -4192,12 +4109,32 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -4212,12 +4149,12 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Setze Maximal Block Grösse in Bytes (default 250000) - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) Setze Maximalgrösse von hoch bzw tief priorisierten Transaktionen mit niedrigen Gebühren in Bytes (default:27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) SSL-Optionen: (siehe Bitcoin-Wiki für SSL-Installationsanweisungen) @@ -4237,21 +4174,17 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Privater Serverschlüssel (Standard: server.pem) - Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - Annehmbare Chiffren (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - - - + Invalid amount for -paytxfee=<amount>: '%s' Ungültiger Betrag für -paytxfee=<amount>: '%s' - + 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 festgelegt! Dies ist die Gebühr die beim Senden einer Transaktion fällig wird. - + Invalid amount for -mininput=<amount>: '%s' Ungültiger Betrag für -mininput=<amount>:'%s' @@ -4261,22 +4194,22 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. - + Wallet %s resides outside data directory %s. Wallet %s liegt außerhalb des Daten Verzeichnisses %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. Kann das Verzeichniss nicht einbinden %s. Gridcoin läuft wahrscheinlich bereits. - + Verifying database integrity... Überprüfe Datenbank Integrität... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. Fehler beim initialisieren der Datenbank Umgebung %s! Um wiederherzustellen, fertige ein Backup des Verzeichnisses an, dann entferne alles davon ausser die wallet.dat Datei. @@ -4286,10 +4219,15 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Warnung: wallet.dat beschädigt, Rettung erfolgreich! Original wallet.dat wurde als wallet.{Zeitstempel}.dat in %s gespeichert. Falls ihr Kontostand oder Transaktionen nicht korrekt sind, sollten Sie von einer Datensicherung wiederherstellen. - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4306,17 +4244,17 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. wallet.dat beschädigt, Rettung fehlgeschlagen - + Unknown -socks proxy version requested: %i Unbekannte Proxyversion in -socks angefordert: %i - + Invalid -tor address: '%s' Ungültige Tor Addresse: '%s' - + Cannot resolve -bind address: '%s' Kann Adresse in -bind nicht auflösen: '%s' @@ -4326,15 +4264,10 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Kann Adresse in -externalip nicht auflösen: '%s' - + Invalid amount for -reservebalance=<amount> Ungültige Anzahl für 'reservebalance=<amount> - - Unable to sign checkpoint, wrong checkpointkey? - - Nicht möglich den Checkpoint zu unterschreiben - falscher Checkpointschlüssel? - Error loading blkindex.dat @@ -4346,22 +4279,22 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Fehler beim Laden von wallet.dat: Wallet beschädigt - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. Warnung: Lesen von wallet.dat fehlgeschlagen! Alle Schlüssel wurden korrekt gelesen, Transaktionsdaten bzw. Adressbucheinträge fehlen aber möglicherweise oder sind inkorrekt. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin Fehler beim Laden von wallet.dat. Wallet benötigt neuere Version von Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete Wallet muss neu geschrieben werden. Starte Gridcoin neu um auszuführen - + Error loading wallet.dat Fehler beim Laden von wallet.dat @@ -4381,17 +4314,17 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Fehler: Node konnte nicht gestartet werden - + Unable to bind to %s on this computer. Gridcoin is probably already running. Fehler beim anbinden %s auf diesem Computer. Gridcoin läuft wahrscheinlich bereits. - + Unable to bind to %s on this computer (bind returned error %d, %s) Kann auf diesem Computer nicht an %s binden (von bind zurückgegebener Fehler %d, %s) - + Error: Wallet locked, unable to create transaction Fehler: Wallet verschlüsselt, unmöglich Transaktion zu erstellen @@ -4401,59 +4334,47 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. Fehler: Das Wallet ist nur zum Verzinsen geöffnet. Nicht möglich die Transaktion zu erstellen. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds Fehler: Diese Transaktion benötigt eine Transaktionsgebühr von mindestens %s wegen der Anzahl, Komplexität oder Benutzung von neuerlich erhaltenen Beträgen - + Error: Transaction creation failed Fehler: Erstellung der Transaktion fehlgeschlagen - + Sending... Wird gesendet... - + 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: Transaktion wurde abgelehnt. Das kann geschehen wenn einige Coins in dem Wallet bereits ausgegeben wurden. Wenn von einer Kopie der wallet.dat Coins ausgegeben wurden, werden sie hier nicht sofort als Ausgabe aufgeführt. - + Invalid amount Ungültiger Betrag - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. Wanung : Bitte prüfen Sie ob Datum und Uhrzeit richtig eingestellt sind. Wenn das Datum falsch ist Gridcoin nicht richtig funktionieren. - Warning: This version is obsolete, upgrade required! - Warnung: Diese Version is veraltet, Aktualisierung erforderlich! - - - WARNING: synchronized checkpoint violation detected, but skipped! - WARNUNG: Synchronisierter CheckpointVerstoss entdeckt, aber übersprungen! - - - + Warning: Disk space is low! Warnung: Festplatte hat wenig freien Speicher! - WARNING: Invalid checkpoint found! Displayed transactions may not be correct! You may need to upgrade, or notify developers. - WARNUNG : Ungültiger Checkpunkt gefunden! Angezeigte Transaktionen können falsch sein! Du musst vielleicht updaten oder die Entwickler benachrichtigen. - - - + To use the %s option Zur Nutzung der %s Option - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -4487,12 +4408,12 @@ If the file does not exist, create it with owner-readable-only file permissions. Falls die Konfigurationsdatei nicht existiert, erzeugen Sie diese mit Leserechten nur für den Dateibesitzer. - + Gridcoin version Gridcoin Version - + Usage: Benutzung: @@ -4502,7 +4423,7 @@ Falls die Konfigurationsdatei nicht existiert, erzeugen Sie diese mit Leserechte - + List commands Befehle auflisten diff --git a/src/qt/locale/bitcoin_el_GR.ts b/src/qt/locale/bitcoin_el_GR.ts index 9d78801b3e..fb81a32d4f 100644 --- a/src/qt/locale/bitcoin_el_GR.ts +++ b/src/qt/locale/bitcoin_el_GR.ts @@ -299,12 +299,12 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + Sign &message... Υπογραφή &Μηνύματος... - + &Overview &Επισκόπηση @@ -334,7 +334,7 @@ This product includes software developed by the OpenSSL Project for use in the O Εξοδος από την εφαρμογή - + &Options... &Επιλογές... @@ -343,19 +343,11 @@ This product includes software developed by the OpenSSL Project for use in the O &Encrypt Wallet... &Κρυπτογράφησε το πορτοφόλι - - &Backup Wallet... - &Αντίγραφο ασφαλείας του πορτοφολιού - &Change Passphrase... &Άλλαξε κωδικο πρόσβασης - - Backup wallet to another location - Δημιουργία αντιγράφου ασφαλείας πορτοφολιού σε άλλη τοποθεσία - Change the passphrase used for wallet encryption @@ -377,12 +369,12 @@ This product includes software developed by the OpenSSL Project for use in the O &Επιβεβαίωση μηνύματος - + Wallet Πορτοφόλι - + &Send &Αποστολή @@ -392,12 +384,12 @@ This product includes software developed by the OpenSSL Project for use in the O &Παραλαβή - + &Show / Hide &Εμφάνισε/Κρύψε - + &File &Αρχείο @@ -407,12 +399,12 @@ This product includes software developed by the OpenSSL Project for use in the O &Ρυθμίσεις - + &Help &Βοήθεια - + %n second(s) ago @@ -449,12 +441,12 @@ This product includes software developed by the OpenSSL Project for use in the O Ενημερωμένο - + Catching up... Ενημέρωση... - + Sent transaction Η συναλλαγή απεστάλη @@ -464,16 +456,12 @@ This product includes software developed by the OpenSSL Project for use in the O Εισερχόμενη συναλλαγή - 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> - + Send coins to a Gridcoin address @@ -539,7 +527,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Encrypt or decrypt wallet @@ -574,12 +562,12 @@ This product includes software developed by the OpenSSL Project for use in the O Εξαγωγή δεδομένων καρτέλας σε αρχείο - + Gridcoin - + &About Gridcoin @@ -589,28 +577,12 @@ This product includes software developed by the OpenSSL Project for use in the O - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -620,7 +592,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Diagnostics @@ -645,14 +617,14 @@ This product includes software developed by the OpenSSL Project for use in the O - + [testnet] [testnet] - + Gridcoin client @@ -670,7 +642,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Last received block was generated %1. @@ -723,7 +695,7 @@ Address: %4 - + Wallet is <b>encrypted</b> and currently %1 @@ -770,7 +742,7 @@ Address: %4 - + %n second(s) @@ -812,17 +784,42 @@ Address: %4 - - &Community + + Scraper: waiting on wallet to sync. - - &Advanced + + Scraper: superblock not needed - inactive. - + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + + &Community + + + + URI handling @@ -834,7 +831,7 @@ Address: %4 - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. @@ -842,7 +839,7 @@ Address: %4 ClientModel - + Network Alert @@ -884,10 +881,6 @@ Address: %4 (un)select all (από)επιλογή όλων - - List mode - Λίστα εντολών - Amount @@ -1293,7 +1286,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1391,10 +1384,6 @@ This label turns red, if the priority is smaller than "medium". Map port using &UPnP Απόδοση θυρών με χρήστη &UPnP - - Proxy &IP: - &IP διαμεσολαβητή: - &Port: @@ -1744,6 +1733,14 @@ This label turns red, if the priority is smaller than "medium". + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1805,7 +1802,7 @@ This label turns red, if the priority is smaller than "medium". RPCConsole - + @@ -1817,7 +1814,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A Μη διαθέσιμο @@ -1897,7 +1894,12 @@ This label turns red, if the priority is smaller than "medium". Εξερχόμενα: - + + &Scraper + + + + Debug log file Αρχείο καταγραφής εντοπισμού σφαλμάτων @@ -1927,7 +1929,7 @@ This label turns red, if the priority is smaller than "medium". Γράψτε <b>help</b> για μια επισκόπηση των διαθέσιμων εντολών - + %1 B %1 B @@ -1947,12 +1949,12 @@ This label turns red, if the priority is smaller than "medium". %1 GB - + Gridcoin - Debug Console - + Boost version @@ -2037,7 +2039,7 @@ This label turns red, if the priority is smaller than "medium". - + Welcome to the Gridcoin RPC console! @@ -2304,22 +2306,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: &Ποσό: - + Pay &To: Πληρωμή &σε: - + &Label: &Επιγραφή - + Alt+A Alt+A @@ -2339,12 +2341,12 @@ This label turns red, if the priority is smaller than "medium". Μήνυμα: - + Form Φόρμα - + Enter a label for this address to add it to your address book @@ -2365,17 +2367,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2583,12 +2580,42 @@ This label turns red, if the priority is smaller than "medium". - + Source - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From @@ -2636,7 +2663,7 @@ This label turns red, if the priority is smaller than "medium". - + conflicted @@ -2673,13 +2700,8 @@ This label turns red, if the priority is smaller than "medium". Generated in CoinBase - - - Generated, PoS - - - + matures in %n more block(s) @@ -2750,10 +2772,6 @@ This label turns red, if the priority is smaller than "medium". Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - Πληροφορία - Amount @@ -2770,7 +2788,7 @@ This label turns red, if the priority is smaller than "medium". - + Open for %n more block(s) @@ -2791,12 +2809,7 @@ This label turns red, if the priority is smaller than "medium". - - View Attachment - - - - + Execute Contract @@ -2805,21 +2818,11 @@ This label turns red, if the priority is smaller than "medium". C&lose Κ&λείσιμο - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Ημερομηνία @@ -2892,7 +2895,7 @@ This label turns red, if the priority is smaller than "medium". - + Received with @@ -2912,32 +2915,42 @@ This label turns red, if the priority is smaller than "medium". - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) - + Transaction status. Hover over this field to show number of confirmations. @@ -3131,17 +3144,10 @@ This label turns red, if the priority is smaller than "medium". - - UpgradeDialog - - Hide - Απόκρυψη - - VotingChartDialog - + Poll Results @@ -3285,7 +3291,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3318,7 +3324,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3326,37 +3332,37 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: Επιλογές: - + Specify data directory Ορισμός φακέλου δεδομένων - + Connect to a node to retrieve peer addresses, and disconnect Σύνδεση σε έναν κόμβο για την ανάκτηση διευθύνσεων από ομοτίμους, και αποσυνδέσh - + Specify your own public address Διευκρινίστε τη δικιά σας δημόσια διεύθυνση. - + Accept command line and JSON-RPC commands Αποδοχή εντολών κονσόλας και JSON-RPC - + Run in the background as a daemon and accept commands Εκτέλεση στο παρασκήνιο κι αποδοχή εντολών - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) Εκτέλεσε την εντολή όταν το καλύτερο μπλοκ αλλάξει(%s στην εντολή αντικαθίσταται από το hash του μπλοκ) @@ -3366,12 +3372,12 @@ This label turns red, if the priority is smaller than "medium". Αποκλεισμός επιλογων δημιουργίας: - + Failed to listen on any port. Use -listen=0 if you want this. ταλαιπωρηθειτε για να ακούσετε σε οποιαδήποτε θύρα. Χρήση - ακούστε = 0 , αν θέλετε αυτό. - + Specify configuration file (default: gridcoinresearch.conf) @@ -3401,7 +3407,7 @@ This label turns red, if the priority is smaller than "medium". Κωδικός για τις συνδέσεις JSON-RPC - + Execute command when the best block changes (%s in cmd is replaced by block hash) Εκτέλεσε την εντολή όταν το καλύτερο μπλοκ αλλάξει(%s στην εντολή αντικαθίσταται από το hash του μπλοκ) @@ -3411,7 +3417,7 @@ This label turns red, if the priority is smaller than "medium". Να επιτρέπονται οι έλεγχοι DNS για προσθήκη και σύνδεση κόμβων - + Loading addresses... Φόρτωση διευθύνσεων... @@ -3421,12 +3427,12 @@ This label turns red, if the priority is smaller than "medium". Δεν είναι έγκυρη η διεύθυνση διαμεσολαβητή: '%s' - + Unknown network specified in -onlynet: '%s' Άγνωστo δίκτυο ορίζεται σε onlynet: '%s' - + Insufficient funds Ανεπαρκές κεφάλαιο @@ -3436,17 +3442,17 @@ This label turns red, if the priority is smaller than "medium". Φόρτωση ευρετηρίου μπλοκ... - + Add a node to connect to and attempt to keep the connection open Προσέθεσε ένα κόμβο για σύνδεση και προσπάθησε να κρατήσεις την σύνδεση ανοιχτή - + Loading wallet... Φόρτωση πορτοφολιού... - + Cannot downgrade wallet Δεν μπορώ να υποβαθμίσω το πορτοφόλι @@ -3456,22 +3462,22 @@ This label turns red, if the priority is smaller than "medium". Δεν μπορώ να γράψω την προεπιλεγμένη διεύθυνση - + Rescanning... Ανίχνευση... - + Done loading Η φόρτωση ολοκληρώθηκε - + Error Σφάλμα - + This help message @@ -3496,12 +3502,12 @@ This label turns red, if the priority is smaller than "medium". - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3511,7 +3517,7 @@ This label turns red, if the priority is smaller than "medium". - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3521,22 +3527,22 @@ This label turns red, if the priority is smaller than "medium". - + Connect only to the specified node(s) - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -3546,22 +3552,22 @@ This label turns red, if the priority is smaller than "medium". - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + Threshold for disconnecting misbehaving peers (default: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) @@ -3656,6 +3662,16 @@ This label turns red, if the priority is smaller than "medium". Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3716,6 +3732,11 @@ This label turns red, if the priority is smaller than "medium". ERROR + + + Entire balance reserved + + Expires @@ -3781,11 +3802,6 @@ This label turns red, if the priority is smaller than "medium". Message - - - Messate Type - - Miner: @@ -3822,12 +3838,7 @@ This label turns red, if the priority is smaller than "medium". - - No coins; - - - - + Offline; @@ -3837,12 +3848,7 @@ This label turns red, if the priority is smaller than "medium". - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3922,22 +3928,22 @@ This label turns red, if the priority is smaller than "medium". - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) - + Use the test network - + Output extra debugging information. Implies all other -debug* options @@ -3947,7 +3953,7 @@ This label turns red, if the priority is smaller than "medium". - + Prepend debug output with timestamp @@ -3957,7 +3963,7 @@ This label turns red, if the priority is smaller than "medium". - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -3967,7 +3973,7 @@ This label turns red, if the priority is smaller than "medium". - + Send commands to node running on <ip> (default: 127.0.0.1) @@ -3977,7 +3983,7 @@ This label turns red, if the priority is smaller than "medium". - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -3987,7 +3993,7 @@ This label turns red, if the priority is smaller than "medium". - + Upgrade wallet to latest format @@ -4002,7 +4008,7 @@ This label turns red, if the priority is smaller than "medium". - + Attempt to recover private keys from a corrupt wallet.dat @@ -4022,7 +4028,7 @@ This label turns red, if the priority is smaller than "medium". - + Boinc Mining @@ -4032,7 +4038,7 @@ This label turns red, if the priority is smaller than "medium". - + Error obtaining next project. Error 06172014. @@ -4082,12 +4088,32 @@ This label turns red, if the priority is smaller than "medium". - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -4102,12 +4128,12 @@ This label turns red, if the priority is smaller than "medium". - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -4127,17 +4153,17 @@ This label turns red, if the priority is smaller than "medium". - + Invalid amount for -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - + Invalid amount for -mininput=<amount>: '%s' @@ -4147,22 +4173,22 @@ This label turns red, if the priority is smaller than "medium". - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4172,10 +4198,15 @@ This label turns red, if the priority is smaller than "medium". - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4192,17 +4223,17 @@ This label turns red, if the priority is smaller than "medium". - + Unknown -socks proxy version requested: %i - + Invalid -tor address: '%s' - + Cannot resolve -bind address: '%s' @@ -4212,7 +4243,7 @@ This label turns red, if the priority is smaller than "medium". - + Invalid amount for -reservebalance=<amount> @@ -4227,22 +4258,22 @@ This label turns red, if the priority is smaller than "medium". - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete - + Error loading wallet.dat @@ -4262,17 +4293,17 @@ This label turns red, if the priority is smaller than "medium". - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4282,47 +4313,47 @@ This label turns red, if the priority is smaller than "medium". - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - + Warning: Disk space is low! - + To use the %s option - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -4354,12 +4385,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Gridcoin version - + Usage: Χρήση: @@ -4369,7 +4400,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + List commands diff --git a/src/qt/locale/bitcoin_en.ts b/src/qt/locale/bitcoin_en.ts index 9c4b87b7c3..102f123a36 100644 --- a/src/qt/locale/bitcoin_en.ts +++ b/src/qt/locale/bitcoin_en.ts @@ -299,12 +299,12 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + Sign &message... Sign &message... - + &Overview &Overview @@ -334,7 +334,7 @@ This product includes software developed by the OpenSSL Project for use in the O Quit application - + &Options... &Options... @@ -343,19 +343,11 @@ This product includes software developed by the OpenSSL Project for use in the O &Encrypt Wallet... &Encrypt Wallet... - - &Backup Wallet... - &Backup Wallet... - &Change Passphrase... &Change Passphrase... - - Backup wallet to another location - Backup wallet to another location - Change the passphrase used for wallet encryption @@ -377,12 +369,12 @@ This product includes software developed by the OpenSSL Project for use in the O &Verify message... - + Wallet Wallet - + &Send &Send @@ -392,12 +384,12 @@ This product includes software developed by the OpenSSL Project for use in the O &Receive - + &Show / Hide &Show / Hide - + &File &File @@ -407,12 +399,12 @@ This product includes software developed by the OpenSSL Project for use in the O &Settings - + &Help &Help - + Processed %n block(s) of transaction history. Processed %n block of transaction history. @@ -430,12 +422,12 @@ This product includes software developed by the OpenSSL Project for use in the O Up to date - + Gridcoin Gridcoin - + Send coins to a Gridcoin address Send coins to a Gridcoin address @@ -511,28 +503,42 @@ This product includes software developed by the OpenSSL Project for use in the O Show information about Gridcoin - - &Neural Network + + Scraper: waiting on wallet to sync. - - Neural Network + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. - &New User Wizard + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. - - + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + New User Wizard - + %n second(s) ago %n second ago @@ -564,7 +570,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Date: %1 Amount: %2 Type: %3 @@ -579,7 +585,7 @@ Address: %4 ?} {4?} - + Wallet is <b>encrypted</b> and currently %1 @@ -604,7 +610,7 @@ Address: %4 - + %n second(s) %n second @@ -636,7 +642,7 @@ Address: %4 - + &Voting @@ -646,7 +652,7 @@ Address: %4 - + &Diagnostics @@ -706,34 +712,29 @@ Address: %4 Export the data in the current tab to a file - + &Community - - &Advanced - - - - + [testnet] [testnet] - + Gridcoin client Gridcoin client - + Catching up... Catching up... - + Last received block was generated %1. Last received block was generated %1. @@ -778,7 +779,7 @@ Address: %4 - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -788,19 +789,7 @@ Address: %4 - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - - - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. @@ -834,7 +823,7 @@ Address: %4 There was an error trying to save the wallet data to the new location. - + Sent transaction Sent transaction @@ -844,32 +833,12 @@ Address: %4 Incoming transaction - 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> - %1 second(s) ago - %1 second ago - - - %1 minute(s) ago - %1 minute ago - - - %1 hour(s) ago - %1 hour ago - - - %1 day(s) ago - %1 day ago - - - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. A fatal error occurred. Gridcoin can no longer continue safely and will quit. @@ -877,7 +846,7 @@ Address: %4 ClientModel - + Network Alert Network Alert @@ -1324,7 +1293,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1432,10 +1401,6 @@ This label turns red, if the priority is smaller than "medium". Map port using &UPnP Map port using &UPnP - - Proxy &IP: - Proxy &IP: - Pa&y transaction fee @@ -1774,6 +1739,14 @@ This label turns red, if the priority is smaller than "medium". out of sync + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1835,7 +1808,7 @@ This label turns red, if the priority is smaller than "medium". RPCConsole - + @@ -1847,7 +1820,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A N/A @@ -1907,7 +1880,12 @@ This label turns red, if the priority is smaller than "medium". &Console - + + &Scraper + + + + &Network Traffic @@ -1962,7 +1940,7 @@ This label turns red, if the priority is smaller than "medium". Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - + %1 B @@ -1997,12 +1975,12 @@ This label turns red, if the priority is smaller than "medium". - + Gridcoin - Debug Console - + Boost version @@ -2334,27 +2312,27 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: A&mount: - + Pay &To: Pay &To: - + &Label: &Label: - + Form Form - + The address to send the payment to (e.g. Sjz75uKHzUQJnSdzvpiigEGxseKkDhQToX) @@ -2384,22 +2362,17 @@ This label turns red, if the priority is smaller than "medium". Remove this recipient - + Send Custom Message to a Gridcoin Recipient - + Message: Message: - - Add Attachment - - - - + Enter a label for this address to add it to your address book @@ -2654,22 +2627,47 @@ This label turns red, if the priority is smaller than "medium". - + Source - + Generated in CoinBase - - Generated, PoS + + MINED - POS - + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From @@ -2788,10 +2786,6 @@ This label turns red, if the priority is smaller than "medium". Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - Information - Amount @@ -2821,12 +2815,7 @@ This label turns red, if the priority is smaller than "medium". This pane shows a detailed description of the transaction - - View Attachment - - - - + Execute Contract @@ -2835,21 +2824,11 @@ This label turns red, if the priority is smaller than "medium". C&lose - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Date @@ -2897,7 +2876,37 @@ This label turns red, if the priority is smaller than "medium". - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + Confirming (%1 of %2 recommended confirmations)<br> @@ -2922,7 +2931,7 @@ This label turns red, if the priority is smaller than "medium". - + Received with @@ -2942,32 +2951,12 @@ This label turns red, if the priority is smaller than "medium". - - Mined - DPOR - - - - - Minted - (Local) DPOR - - - - - Mined - PoR - - - - - Mined - Interest - - - - + (n/a) - + Transaction status. Hover over this field to show number of confirmations. @@ -3164,7 +3153,7 @@ This label turns red, if the priority is smaller than "medium". VotingChartDialog - + Poll Results @@ -3308,7 +3297,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3341,7 +3330,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... Sending... @@ -3349,37 +3338,37 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: Options: - + Specify data directory Specify data directory - + Connect to a node to retrieve peer addresses, and disconnect Connect to a node to retrieve peer addresses, and disconnect - + Specify your own public address Specify your own public address - + 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 - + An error occurred while setting up the RPC port %u for listening on IPv6, falling back to IPv4: %s @@ -3389,12 +3378,12 @@ This label turns red, if the priority is smaller than "medium". - + Usage: Usage: - + List commands List commands @@ -3404,7 +3393,7 @@ This label turns red, if the priority is smaller than "medium". Get help for a command - + Set database cache size in megabytes (default: 25) Set database cache size in megabytes (default: 25) @@ -3414,12 +3403,12 @@ This label turns red, if the priority is smaller than "medium". Set database disk log size in megabytes (default: 100) - + Maintain at most <n> connections to peers (default: 125) Maintain at most <n> connections to peers (default: 125) - + Acceptable ciphers (default: TLSv1.2+HIGH:TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!3DES:@STRENGTH) @@ -3518,6 +3507,16 @@ This label turns red, if the priority is smaller than "medium". Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Mining @@ -3588,6 +3587,11 @@ This label turns red, if the priority is smaller than "medium". ERROR + + + Entire balance reserved + + Error obtaining next project. Error 06172014. @@ -3678,11 +3682,6 @@ This label turns red, if the priority is smaller than "medium". Message - - - Messate Type - - Miner: @@ -3724,12 +3723,7 @@ This label turns red, if the priority is smaller than "medium". - - No coins; - - - - + Offline; @@ -3739,12 +3733,7 @@ This label turns red, if the priority is smaller than "medium". - - Out of rance exception while parsing Transaction Message -> - - - - + Please wait for new user wizard to start... @@ -3804,17 +3793,17 @@ This label turns red, if the priority is smaller than "medium". Threshold for disconnecting misbehaving peers (default: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Number of seconds to keep misbehaving peers from reconnecting (default: 86400) - + Use the test network Use the test network - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -3839,12 +3828,12 @@ This label turns red, if the priority is smaller than "medium". Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + 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. @@ -3854,12 +3843,12 @@ This label turns red, if the priority is smaller than "medium". Block creation options: - + Failed to listen on any port. Use -listen=0 if you want this. Failed to listen on any port. Use -listen=0 if you want this. - + Specify wallet file (within data directory) Specify wallet file (within data directory) @@ -3884,7 +3873,7 @@ This label turns red, if the priority is smaller than "medium". Password for JSON-RPC connections - + Execute command when the best block changes (%s in cmd is replaced by block hash) Execute command when the best block changes (%s in cmd is replaced by block hash) @@ -3894,7 +3883,7 @@ This label turns red, if the priority is smaller than "medium". Allow DNS lookups for -addnode, -seednode and -connect - + Title @@ -3904,7 +3893,7 @@ This label turns red, if the priority is smaller than "medium". To use the %s option - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -3928,22 +3917,22 @@ If the file does not exist, create it with owner-readable-only file permissions. If the file does not exist, create it with owner-readable-only file permissions. - + Gridcoin version Gridcoin version - + Send command to -server or gridcoind - + Gridcoin Gridcoin - + This help message This help message @@ -3958,12 +3947,12 @@ If the file does not exist, create it with owner-readable-only file permissions. Specify connection timeout in milliseconds (default: 5000) - + Connect through socks proxy Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) Select the version of socks proxy to use (4-5, default: 5) @@ -3993,45 +3982,37 @@ If the file does not exist, create it with owner-readable-only file permissions. Use proxy to reach tor hidden services (default: same as -proxy) - + Listen for connections on <port> (default: 32749 or testnet: 32748) Listen for connections on <port> (default: 15714 or testnet: 25714) {32749 ?} {32748)?} - + Connect only to the specified node(s) Connect only to the specified node(s) - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) Discover own IP address (default: 1 when listening and no -externalip) - Find peers using internet relay chat (default: 0) - Find peers using internet relay chat (default: 1) {0)?} - - - + Find peers using DNS lookup (default: 1) Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - Sync checkpoints policy (default: strict) - Sync checkpoints policy (default: strict) - - - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 5000) Maximum per-connection receive buffer, <n>*1000 bytes (default: 5000) @@ -4041,7 +4022,7 @@ If the file does not exist, create it with owner-readable-only file permissions. Maximum per-connection send buffer, <n>*1000 bytes (default: 1000) - + Use UPnP to map the listening port (default: 1 when listening) Use UPnP to map the listening port (default: 1 when listening) @@ -4051,12 +4032,12 @@ If the file does not exist, create it with owner-readable-only file permissions. Use UPnP to map the listening port (default: 0) - + Fee per KB to add to transactions you send Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) @@ -4082,7 +4063,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + Output extra debugging information. Implies all other -debug* options Output extra debugging information. Implies all other -debug* options @@ -4091,6 +4087,11 @@ If the file does not exist, create it with owner-readable-only file permissions. Output extra network debugging information Output extra network debugging information + + + POR Blocks Verified + + Prepend debug output with timestamp @@ -4102,12 +4103,12 @@ If the file does not exist, create it with owner-readable-only file permissions. Send trace/debug info to debugger - + 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) @@ -4117,7 +4118,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -4127,7 +4128,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Upgrade wallet to latest format Upgrade wallet to latest format @@ -4142,7 +4143,7 @@ If the file does not exist, create it with owner-readable-only file permissions. Rescan the block chain for missing wallet transactions - + How many blocks to check at startup (default: 2500, 0 = all) How many blocks to check at startup (default: 2500, 0 = all) @@ -4157,7 +4158,7 @@ If the file does not exist, create it with owner-readable-only file permissions. Imports blocks from external blk000?.dat file - + Set minimum block size in bytes (default: 0) Set minimum block size in bytes (default: 0) @@ -4167,12 +4168,12 @@ If the file does not exist, create it with owner-readable-only file permissions. Set maximum block size in bytes (default: 250000) - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -4192,11 +4193,7 @@ If the file does not exist, create it with owner-readable-only file permissions. 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) - - - + Invalid amount for -paytxfee=<amount>: '%s' Invalid amount for -paytxfee=<amount>: '%s' @@ -4211,27 +4208,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Wallet %s resides outside data directory %s. Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. - + Weight @@ -4241,12 +4238,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Unknown -socks proxy version requested: %i Unknown -socks proxy version requested: %i - + Invalid -proxy address: '%s' Invalid -proxy address: '%s' @@ -4256,7 +4253,7 @@ If the file does not exist, create it with owner-readable-only file permissions. Invalid -tor address: '%s' - + Cannot resolve -bind address: '%s' Cannot resolve -bind address: '%s' @@ -4266,7 +4263,7 @@ If the file does not exist, create it with owner-readable-only file permissions. Cannot resolve -externalip address: '%s' - + Invalid amount for -reservebalance=<amount> @@ -4286,10 +4283,15 @@ If the file does not exist, create it with owner-readable-only file permissions. Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4301,7 +4303,7 @@ If the file does not exist, create it with owner-readable-only file permissions. Wallet needed to be rewritten: restart Gridcoin to complete - + Error loading wallet.dat Error loading wallet.dat @@ -4326,17 +4328,17 @@ If the file does not exist, create it with owner-readable-only file permissions. Error: could not start node - + Unable to bind to %s on this computer. Gridcoin is probably already running. Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) Unable to bind to %s on this computer (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4346,41 +4348,37 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Sending... Sending... - + Invalid amount Invalid amount - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - Warning: This version is obsolete, upgrade required! - Warning: This version is obsolete, upgrade required! - - - + Warning: Disk space is low! Warning: Disk space is low! - + Unknown network specified in -onlynet: '%s' Unknown network specified in -onlynet: '%s' - + Insufficient funds Insufficient funds @@ -4390,17 +4388,17 @@ If the file does not exist, create it with owner-readable-only file permissions. Loading block index... - + Add a node to connect to and attempt to keep the connection open Add a node to connect to and attempt to keep the connection open - + Loading wallet... Loading wallet... - + Cannot downgrade wallet Cannot downgrade wallet @@ -4410,17 +4408,17 @@ If the file does not exist, create it with owner-readable-only file permissions. Cannot write default address - + Rescanning... Rescanning... - + Done loading Done loading - + Error Error diff --git a/src/qt/locale/bitcoin_eo.ts b/src/qt/locale/bitcoin_eo.ts index 01e6d201fc..dcbf579687 100644 --- a/src/qt/locale/bitcoin_eo.ts +++ b/src/qt/locale/bitcoin_eo.ts @@ -23,20 +23,6 @@ Distributed under the MIT/X11 software license, see the accompanying file COPYIN This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (https://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - - -This is experimental software. - -Distributed under the MIT/X11 software license, see the accompanying file COPYING 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. - -Tio ?i estas eksperimenta programo. - -Eldonita la? la permesilo MIT/X11. Vidu la kunan dosieron COPYING a? http://www.opensource.org/licenses/mit-license.php. - -Tiu ?i produkto enhavas erojn kreitajn de la "OpenSSL Project" por uzo en la "OpenSSL Toolkit" (http://www.openssl.org/) kaj ?ifrajn erojn kreitajn de Eric Young (eay@cryptsoft.com) kaj UPnP-erojn kreitajn de Thomas Bernard. - AddressBookPage @@ -313,12 +299,12 @@ Tiu ?i produkto enhavas erojn kreitajn de la "OpenSSL Project" por uzo BitcoinGUI - + Sign &message... Subskribi &mesaĝon... - + &Overview &Superrigardo @@ -414,7 +400,7 @@ Tiu ?i produkto enhavas erojn kreitajn de la "OpenSSL Project" por uzo Eliri la aplikaĵon - + &Options... &Agordoj... @@ -428,19 +414,11 @@ Tiu ?i produkto enhavas erojn kreitajn de la "OpenSSL Project" por uzo Encrypt or decrypt wallet - - &Backup Wallet... - &Krei sekurkopion de la monujo... - &Change Passphrase... Ŝanĝi &Pasfrazon... - - Backup wallet to another location - Krei alilokan sekurkopion de monujo - Change the passphrase used for wallet encryption @@ -492,7 +470,7 @@ Tiu ?i produkto enhavas erojn kreitajn de la "OpenSSL Project" por uzo &Kontroli mesaĝon... - + Wallet Monujo @@ -502,7 +480,7 @@ Tiu ?i produkto enhavas erojn kreitajn de la "OpenSSL Project" por uzo - + &Send &Sendi @@ -522,28 +500,12 @@ Tiu ?i produkto enhavas erojn kreitajn de la "OpenSSL Project" por uzo - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -553,7 +515,7 @@ Tiu ?i produkto enhavas erojn kreitajn de la "OpenSSL Project" por uzo - + &Diagnostics @@ -583,14 +545,14 @@ Tiu ?i produkto enhavas erojn kreitajn de la "OpenSSL Project" por uzo - + [testnet] [testnet] - + Gridcoin client @@ -608,7 +570,7 @@ Tiu ?i produkto enhavas erojn kreitajn de la "OpenSSL Project" por uzo - + Last received block was generated %1. @@ -668,7 +630,7 @@ Adreso: %4 ?} {4?} - + Wallet is <b>encrypted</b> and currently %1 @@ -715,7 +677,7 @@ Adreso: %4 - + %n second(s) @@ -757,7 +719,37 @@ Adreso: %4 - + + Scraper: waiting on wallet to sync. + + + + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + &File &Dosiero @@ -772,17 +764,12 @@ Adreso: %4 - - &Advanced - - - - + &Help &Helpo - + %n second(s) ago @@ -819,12 +806,12 @@ Adreso: %4 Ĝisdata - + Catching up... Ĝisdatigante... - + Sent transaction Sendita transakcio @@ -834,19 +821,7 @@ Adreso: %4 Envenanta transakcio - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Dato: %1 -Sumo: %2 -Tipo: %3 -Adreso: %4 - - - - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. @@ -857,17 +832,13 @@ Adreso: %4 URI handling - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Monujo estas <b>ĉifrita</b> kaj aktuale <b>malŝlosita</b> - Wallet is <b>encrypted</b> and currently <b>locked</b> Monujo estas <b>ĉifrita</b> kaj aktuale <b>ŝlosita</b> - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. @@ -875,7 +846,7 @@ Adreso: %4 ClientModel - + Network Alert Reta Averto @@ -957,10 +928,6 @@ Adreso: %4 (un)select all (mal)elekti ĉion - - List mode - Listreĝimo - Amount @@ -1326,7 +1293,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1539,10 +1506,6 @@ This label turns red, if the priority is smaller than "medium". Map port using &UPnP Mapigi pordon per &UPnP - - Proxy &IP: - Prokurila &IP: - &Port: @@ -1776,6 +1739,14 @@ This label turns red, if the priority is smaller than "medium". nesinkronigita + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1837,7 +1808,7 @@ This label turns red, if the priority is smaller than "medium". RPCConsole - + @@ -1849,7 +1820,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A neaplikebla @@ -1929,7 +1900,12 @@ This label turns red, if the priority is smaller than "medium". El: - + + &Scraper + + + + Debug log file Sencimiga protokoldosiero @@ -1959,7 +1935,7 @@ This label turns red, if the priority is smaller than "medium". Tajpu <b>help</b> por superrigardo de la disponeblaj komandoj. - + %1 B %1 B @@ -1994,12 +1970,12 @@ This label turns red, if the priority is smaller than "medium". - + Gridcoin - Debug Console - + Boost version @@ -2069,7 +2045,7 @@ This label turns red, if the priority is smaller than "medium". Nomo de kliento - + Welcome to the Gridcoin RPC console! @@ -2336,22 +2312,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: &Sumo: - + Pay &To: &Ricevonto: - + &Label: &Etikedo: - + Alt+A Alt+A @@ -2371,12 +2347,12 @@ This label turns red, if the priority is smaller than "medium". Mesaĝo: - + Form Formularo - + Enter a label for this address to add it to your address book Tajpu etikedon por tiu ?i adreso kaj aldonu ?in al via adresaro @@ -2397,17 +2373,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2656,26 +2627,47 @@ This label turns red, if the priority is smaller than "medium". - + Source Fonto - Generated - Kreita + + Generated in CoinBase + - - Generated in CoinBase + + MINED - POS - - Generated, PoS + + MINED - POR - + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From De @@ -2789,27 +2781,11 @@ This label turns red, if the priority is smaller than "medium". Transaction Inputs - - Transaction ID - Transakcia ID - Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - Informoj - - - Transaction - Transakcio - - - Inputs - Enigoj - Amount @@ -2839,12 +2815,7 @@ This label turns red, if the priority is smaller than "medium". Tiu ĉi panelo montras detalan priskribon de la transakcio - - View Attachment - - - - + Execute Contract @@ -2853,21 +2824,11 @@ This label turns red, if the priority is smaller than "medium". C&lose &Fermi - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Dato @@ -2940,7 +2901,7 @@ This label turns red, if the priority is smaller than "medium". Kreita sed ne akceptita - + Received with Ricevita kun @@ -2960,32 +2921,42 @@ This label turns red, if the priority is smaller than "medium". Pago al vi mem - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) neaplikebla - + Transaction status. Hover over this field to show number of confirmations. Transakcia stato. ?vebi super tiu ?i kampo por montri la nombron de konfirmoj. @@ -3182,7 +3153,7 @@ This label turns red, if the priority is smaller than "medium". VotingChartDialog - + Poll Results @@ -3326,7 +3297,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3359,7 +3330,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3367,37 +3338,37 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: Agordoj: - + Specify data directory Specifi dosieron por datumoj - + Connect to a node to retrieve peer addresses, and disconnect Konekti al nodo por ricevi adresojn de samtavolanoj, kaj malkonekti - + Specify your own public address Specifi vian propran publikan adreson - + Accept command line and JSON-RPC commands Akcepti komandojn JSON-RPC kaj el komandlinio - + Run in the background as a daemon and accept commands Ruli fone kiel demono kaj akcepti komandojn - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) Plenumi komandon kiam monuja transakcio ŝanĝiĝas (%s en cmd anstataŭiĝas per TxID) @@ -3407,12 +3378,12 @@ This label turns red, if the priority is smaller than "medium". Blok-kreaj agordaĵoj: - + Failed to listen on any port. Use -listen=0 if you want this. Ne sukcesis aŭskulti ajnan pordon. Uzu -listen=0 se tion vi volas. - + Specify configuration file (default: gridcoinresearch.conf) @@ -3442,7 +3413,7 @@ This label turns red, if the priority is smaller than "medium". Pasvorto por konektoj JSON-RPC - + Execute command when the best block changes (%s in cmd is replaced by block hash) Plenumi komandon kiam plej bona bloko ŝanĝiĝas (%s en cmd anstataŭiĝas per bloka haketaĵo) @@ -3452,7 +3423,7 @@ This label turns red, if the priority is smaller than "medium". Permesi DNS-elserĉojn por -addnote, -seednote kaj -connect - + Loading addresses... Ŝarĝante adresojn... @@ -3462,12 +3433,12 @@ This label turns red, if the priority is smaller than "medium". Nevalid adreso -proxy: '%s' - + Unknown network specified in -onlynet: '%s' Nekonata reto specifita en -onlynet: '%s' - + Insufficient funds Nesufiĉa mono @@ -3477,17 +3448,17 @@ This label turns red, if the priority is smaller than "medium". Ŝarĝante blok-indekson... - + Add a node to connect to and attempt to keep the connection open Aldoni nodon por alkonekti kaj provi daŭrigi la malferman konekton - + Loading wallet... Ŝargado de monujo... - + Cannot downgrade wallet Ne eblas malpromocii monujon @@ -3497,27 +3468,27 @@ This label turns red, if the priority is smaller than "medium". Ne eblas skribi defaŭltan adreson - + Rescanning... Reskanado... - + Done loading Ŝargado finiĝis - + Error Eraro - + To use the %s option Por uzi la agordon %s - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -3641,6 +3612,16 @@ Se la dosiero ne ekzistas, kreu ?in kun permeso "nur posedanto rajtas legi& Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3701,6 +3682,11 @@ Se la dosiero ne ekzistas, kreu ?in kun permeso "nur posedanto rajtas legi& ERROR + + + Entire balance reserved + + Expires @@ -3761,11 +3747,6 @@ Se la dosiero ne ekzistas, kreu ?in kun permeso "nur posedanto rajtas legi& Message Mesa?o - - - Messate Type - - Miner: @@ -3802,12 +3783,7 @@ Se la dosiero ne ekzistas, kreu ?in kun permeso "nur posedanto rajtas legi& - - No coins; - - - - + Offline; @@ -3817,12 +3793,7 @@ Se la dosiero ne ekzistas, kreu ?in kun permeso "nur posedanto rajtas legi& - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3902,7 +3873,7 @@ Se la dosiero ne ekzistas, kreu ?in kun permeso "nur posedanto rajtas legi& - + List commands Listigi komandojn @@ -3917,7 +3888,7 @@ Se la dosiero ne ekzistas, kreu ?in kun permeso "nur posedanto rajtas legi& - + This help message Tiu ?i helpmesa?o @@ -3942,12 +3913,12 @@ Se la dosiero ne ekzistas, kreu ?in kun permeso "nur posedanto rajtas legi& Specifi konektan tempolimon je milisekundoj (defa?lte: 5000) - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3957,7 +3928,7 @@ Se la dosiero ne ekzistas, kreu ?in kun permeso "nur posedanto rajtas legi& - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3967,22 +3938,22 @@ Se la dosiero ne ekzistas, kreu ?in kun permeso "nur posedanto rajtas legi& Subteni maksimume <n> konektojn al samtavolanoj (defa?lte: 125) - + Connect only to the specified node(s) Konekti nur al specifita(j) nodo(j) - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) Konekti nur la nodoj en la reto <net> (IPv4, IPv6 a? Tor) - + Discover own IP address (default: 1 when listening and no -externalip) Malkovri la propran IP-adreson (defa?lte: 1 dum a?skultado sen -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) Akcepti konektojn el ekstere (defa?lte: 1 se ne estas -proxy nek -connect) @@ -3992,27 +3963,27 @@ Se la dosiero ne ekzistas, kreu ?in kun permeso "nur posedanto rajtas legi& - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + Threshold for disconnecting misbehaving peers (default: 100) Sojlo por malkonekti misagantajn samtavolanojn (defa?lte: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Nombro da sekundoj por rifuzi rekonekton de misagantaj samtavolanoj (defa?lte: 86400) - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 5000) Maksimuma po riceva bufro por konektoj, <n>*1000 bajtoj (defa?lte: 5000) @@ -4022,7 +3993,7 @@ Se la dosiero ne ekzistas, kreu ?in kun permeso "nur posedanto rajtas legi& Maksimuma po senda bufro por konektoj, <n>*1000 bajtoj (defa?lte: 1000) - + Use UPnP to map the listening port (default: 1 when listening) Uzi UPnP por mapi la a?skultan pordon (defa?lte: 1 dum a?skultado) @@ -4032,22 +4003,22 @@ Se la dosiero ne ekzistas, kreu ?in kun permeso "nur posedanto rajtas legi& Uzi UPnP por mapi la a?skultan pordon (defa?lte: 0) - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) - + Use the test network Uzi la test-reton - + Output extra debugging information. Implies all other -debug* options @@ -4057,7 +4028,7 @@ Se la dosiero ne ekzistas, kreu ?in kun permeso "nur posedanto rajtas legi& - + Prepend debug output with timestamp @@ -4067,7 +4038,7 @@ Se la dosiero ne ekzistas, kreu ?in kun permeso "nur posedanto rajtas legi& - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -4077,7 +4048,7 @@ Se la dosiero ne ekzistas, kreu ?in kun permeso "nur posedanto rajtas legi& Permesi konektojn JSON-RPC de specifa IP-adreso - + Send commands to node running on <ip> (default: 127.0.0.1) Sendi komandon al nodo ?e <ip> (defa?lte: 127.0.0.1) @@ -4087,7 +4058,7 @@ Se la dosiero ne ekzistas, kreu ?in kun permeso "nur posedanto rajtas legi& - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -4097,7 +4068,7 @@ Se la dosiero ne ekzistas, kreu ?in kun permeso "nur posedanto rajtas legi& - + Upgrade wallet to latest format ?isdatigi monujon al plej lasta formato @@ -4112,7 +4083,7 @@ Se la dosiero ne ekzistas, kreu ?in kun permeso "nur posedanto rajtas legi& Reskani la blok?enon por mankantaj monujaj transakcioj - + Attempt to recover private keys from a corrupt wallet.dat Provo ripari privatajn ?losilojn el difektita wallet.dat @@ -4132,7 +4103,7 @@ Se la dosiero ne ekzistas, kreu ?in kun permeso "nur posedanto rajtas legi& - + Boinc Mining @@ -4142,7 +4113,7 @@ Se la dosiero ne ekzistas, kreu ?in kun permeso "nur posedanto rajtas legi& - + Error obtaining next project. Error 06172014. @@ -4192,12 +4163,32 @@ Se la dosiero ne ekzistas, kreu ?in kun permeso "nur posedanto rajtas legi& - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -4212,12 +4203,12 @@ Se la dosiero ne ekzistas, kreu ?in kun permeso "nur posedanto rajtas legi& - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) SSL-agorda?oj: (vidu la vikio de Bitmono por instrukcioj pri agordado de SSL) @@ -4237,17 +4228,17 @@ Se la dosiero ne ekzistas, kreu ?in kun permeso "nur posedanto rajtas legi& Dosiero de servila privata ?losilo (defa?lte: server.pem) - + Invalid amount for -paytxfee=<amount>: '%s' Nevalida sumo por -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. Averto: -paytxfee estas agordita per tre alta valoro! Tio estas la krompago, kion vi pagos se vi sendas la transakcion. - + Invalid amount for -mininput=<amount>: '%s' @@ -4257,22 +4248,22 @@ Se la dosiero ne ekzistas, kreu ?in kun permeso "nur posedanto rajtas legi& - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4282,10 +4273,15 @@ Se la dosiero ne ekzistas, kreu ?in kun permeso "nur posedanto rajtas legi& Averto: via wallet.dat estas difektita, sed la datumoj sukcese savi?is! La originala wallet.dat estas nun konservita kiel wallet.{timestamp}.bak en %s; se via saldo a? transakcioj estas mal?ustaj vi devus resta?ri per alia sekurkopio. - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4302,17 +4298,17 @@ Se la dosiero ne ekzistas, kreu ?in kun permeso "nur posedanto rajtas legi& wallet.dat estas difektita, riparo malsukcesis - + Unknown -socks proxy version requested: %i Nekonata versio de -socks petita: %i - + Invalid -tor address: '%s' - + Cannot resolve -bind address: '%s' Ne eblas trovi la adreson -bind: '%s' @@ -4322,7 +4318,7 @@ Se la dosiero ne ekzistas, kreu ?in kun permeso "nur posedanto rajtas legi& Ne eblas trovi la adreson -externalip: '%s' - + Invalid amount for -reservebalance=<amount> @@ -4337,22 +4333,22 @@ Se la dosiero ne ekzistas, kreu ?in kun permeso "nur posedanto rajtas legi& Eraro dum ?argado de wallet.dat: monujo difektita - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. Averto: okazis eraro dum lego de wallet.dat! ?iuj ?losiloj sukcese legi?is, sed la transakciaj datumoj a? la adresaro eble mankas a? mal?ustas. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete - + Error loading wallet.dat Eraro dum ?argado de wallet.dat @@ -4372,17 +4368,17 @@ Se la dosiero ne ekzistas, kreu ?in kun permeso "nur posedanto rajtas legi& - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) Ne eblis bindi al %s en tiu ?i komputilo (bind resendis eraron %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4392,41 +4388,37 @@ Se la dosiero ne ekzistas, kreu ?in kun permeso "nur posedanto rajtas legi& - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount Nevalida sumo - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - Warning: This version is obsolete, upgrade required! - Averto: tiu ?i versio estas eksdata. Vi bezonas ?isdatigon! - - - + Warning: Disk space is low! diff --git a/src/qt/locale/bitcoin_es.ts b/src/qt/locale/bitcoin_es.ts index 73768ba89a..3381ad82c2 100644 --- a/src/qt/locale/bitcoin_es.ts +++ b/src/qt/locale/bitcoin_es.ts @@ -23,23 +23,6 @@ Distributed under the MIT/X11 software license, see the accompanying file COPYIN This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (https://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - - -This is experimental software. - -Distributed under the MIT/X11 software license, see the accompanying file COPYING 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. - -Este es un software experimental. - -Distribuido bajo la licencia MIT/X11, vea el archivo adjunto -COPYING o http://www.opensource.org/licenses/mit-license.php. - -Este producto incluye software desarrollado por OpenSSL Project para su uso en -el OpenSSL Toolkit (http://www.openssl.org/) y software criptográfico escrito por -Eric Young (eay@cryptsoft.com) y el software UPnP escrito por Thomas Bernard. - AddressBookPage @@ -316,12 +299,12 @@ Eric Young (eay@cryptsoft.com) y el software UPnP escrito por Thomas Bernard. BitcoinGUI - + Sign &message... Firmar &mensaje... - + &Overview &Vista general @@ -418,7 +401,7 @@ Eric Young (eay@cryptsoft.com) y el software UPnP escrito por Thomas Bernard.Salir de la aplicación - + &Options... &Opciones... @@ -433,7 +416,7 @@ Eric Young (eay@cryptsoft.com) y el software UPnP escrito por Thomas Bernard.Cifrar o descifrar el monedero - + %n second(s) ago hace %n segundo @@ -465,7 +448,7 @@ Eric Young (eay@cryptsoft.com) y el software UPnP escrito por Thomas Bernard. - + Date: %1 Amount: %2 Type: %3 @@ -480,7 +463,7 @@ Dirección: %4 ?} {4?} - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -490,17 +473,39 @@ Dirección: %4 - &Backup Wallet... - &Guardar copia del monedero... + + Scraper: waiting on wallet to sync. + - - &Change Passphrase... - &Cambiar la contraseña… + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + - Backup wallet to another location - Copia de seguridad del monedero en otra ubicación + + &Change Passphrase... + &Cambiar la contraseña… @@ -553,7 +558,7 @@ Dirección: %4 &Verificar mensaje... - + Wallet Monedero @@ -563,7 +568,7 @@ Dirección: %4 Gridcoin - + &Send &Enviar @@ -572,30 +577,6 @@ Dirección: %4 &Receive &Recibir - - &Rebuild Block Chain - &Reconstruir la cadena de bloques - - - Rebuild Block Chain - Reconstruir la cadena de bloques - - - &Download Blocks - &Descargar Bloques - - - Download Blocks - Descargar Bloques - - - &Upgrade Client - &Actualizar cliente - - - Upgrade Client - Actualizar cliente - &About Gridcoin @@ -607,36 +588,12 @@ Dirección: %4 Mostrar información sobre Gridcoin - - &Neural Network - &Red Neural - - - - Neural Network - Neural Network - - - &Advanced Configuration - &Configuracion Avanzada - - - Advanced Configuration - Configuracion avanzada - - - - &New User Wizard - &Nuevo Asistente de Usuario - - - - + New User Wizard Nuevo Asistente de Usuario - + &Voting &Votación @@ -646,15 +603,7 @@ Dirección: %4 Votación - &Foundation - &Fundación - - - Foundation - Fundación - - - + &Diagnostics &Diagnóstico @@ -663,14 +612,6 @@ Dirección: %4 Diagnostics Diagnóstico - - FA&Q - &PREGUNTAS MÁS FRECUENTES - - - Interactive FAQ - Preguntas frecuentes interactivas - Modify configuration options for Gridcoin @@ -692,14 +633,14 @@ Dirección: %4 - + [testnet] [testnet] - + Gridcoin client Cliente Gridcoin @@ -709,23 +650,7 @@ Dirección: %4 %1 conexión activa a la red Gridcoin - %1 second(s) ago - hace %1 segundo - - - %1 minute(s) ago - hace %1 minuto - - - %1 hour(s) ago - hace %1 hora - - - %1 day(s) ago - hace %1 dia - - - + Last received block was generated %1. Último bloque recibido se generó en %1. @@ -772,19 +697,7 @@ Dirección: %4 ¡Atención! - Error de ruta de Boinc! - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Fecha: %1 -Cantidad: %2 -Tipo: %3 -Dirección: %4 - - - - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. URI no se puede analizar! Esto puede ser causado por una dirección de Gridcoin no válida o parámetros de URI malformados. @@ -843,7 +756,7 @@ Dirección: %4 - + %n second(s) %n segundo @@ -875,39 +788,7 @@ Dirección: %4 - Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. %4 - Staking.<br>Su peso es %1<br>El peso de la red es %2<br><b>Estimado</b> tiempo para ganar recompensa es %3. %4 - - - Not staking because wallet is locked - No esta "Staking" porque monedera está bloqueada - - - Not staking because wallet is offline - No esta "Staking" porque monedera está desconectada - - - Not staking because wallet is syncing - No esta "Staking" porque monedera está sincronizando - - - Not staking because you don't have mature coins and stake weight is too low. - No apostar porque no tienes monedas maduras y el peso de estaca es demasiado bajo. - - - Not staking because you don't have mature coins - No esta "Staking" ya que no tiene monedas maduras - - - Searching for mature coins... Please wait - Buscando monedas maduras ... Por favor, espere - - - Not staking - No estás "Staking" - - - + &File &Archivo @@ -922,17 +803,12 @@ Dirección: %4 - - &Advanced - &Avanzado - - - + &Help &Ayuda - + Processed %n block(s) of transaction history. %n bloque procesado del historial de transacciones. @@ -945,12 +821,12 @@ Dirección: %4 Actualizado - + Catching up... Actualizando... - + Sent transaction Transacción enviada @@ -960,16 +836,12 @@ Dirección: %4 Transacción entrante - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - El monedero está <b>cifrado</b> y actualmente <b>desbloqueado</b> - - - + Wallet is <b>encrypted</b> and currently <b>locked</b> El monedero está <b>cifrado</b> y actualmente <b>bloqueado</b> - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. Se ha producido un error fatal. Gridcoin ya no puede continuar de forma segura y cerrará. @@ -977,7 +849,7 @@ Dirección: %4 ClientModel - + Network Alert Alerta de red @@ -1059,10 +931,6 @@ Dirección: %4 (un)select all (des)marcar todos - - List mode - Modo lista - Amount @@ -1442,7 +1310,7 @@ Esto significa que se requiere una cuota de al menos %2. NewPollDialog - + Create Poll Crear encuesta @@ -1655,10 +1523,6 @@ Esto significa que se requiere una cuota de al menos %2. Map port using &UPnP Mapear el puerto mediante &UPnP - - Proxy &IP: - Dirección &IP del proxy: - &Port: @@ -1892,6 +1756,14 @@ Esto significa que se requiere una cuota de al menos %2. desincronizado + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1953,7 +1825,7 @@ Esto significa que se requiere una cuota de al menos %2. RPCConsole - + @@ -1965,7 +1837,7 @@ Esto significa que se requiere una cuota de al menos %2. - + N/A N/D @@ -2045,7 +1917,12 @@ Esto significa que se requiere una cuota de al menos %2. Saliente: - + + &Scraper + + + + Debug log file Archivo de registro de depuración @@ -2080,7 +1957,7 @@ Esto significa que se requiere una cuota de al menos %2. Escriba <b>help</b> para ver un resumen de los comandos disponibles. - + %1 B %1 B @@ -2115,12 +1992,12 @@ Esto significa que se requiere una cuota de al menos %2. %1 h %2 m - + Gridcoin - Debug Console Gridcoin - Consola de depuración - + Boost version Versión de Boost @@ -2452,22 +2329,22 @@ Esto significa que se requiere una cuota de al menos %2. SendCoinsEntry - + A&mount: Ca&ntidad: - + Pay &To: &Pagar a: - + &Label: &Etiqueta: - + Alt+A Alt+A @@ -2493,12 +2370,12 @@ Esto significa que se requiere una cuota de al menos %2. Introduzca una etiqueta para esta dirección para añadirla a su lista de direcciones. - + Form Formulario - + The address to send the payment to (e.g. Sjz75uKHzUQJnSdzvpiigEGxseKkDhQToX) La dirección a la que se quiere enviar el pago (e.g. Sjz75uKHzUQJnSdzvpiigEGxseKkDhQToX) @@ -2513,22 +2390,12 @@ Esto significa que se requiere una cuota de al menos %2. Elimina este beneficiario - + Send Custom Message to a Gridcoin Recipient Enviar mensaje personalizado a un destinatario de Gridcoin - Track Coins - Rastrear monedas - - - - - Add Attachment - Añadir archivo adjunto - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) Introduzca una dirección de Gridcoin (p. ej. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2738,25 +2605,13 @@ Esto significa que se requiere una cuota de al menos %2. en conflicto - Block Type - Tipo de bloque - - - Block Number - Número de bloque - - - + Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. Gridcoin generada monedas deben madurar 110 bloques antes de que se pueden gastar. Cuando se genera este bloque, se transmitió a la red para ser añadido a la cadena de bloque. Si no consigue entrar en la cadena, su estado cambia a "no aceptado" y no es gastar. Ocasionalmente esto puede ocurrir si otro nodo genera un bloque en unos segundos del tuyo. - Information - Información - - - + %1/offline %1/sin conexión @@ -2795,26 +2650,47 @@ Esto significa que se requiere una cuota de al menos %2. - + Source Fuente - Generated - Generado + + Generated in CoinBase + + + + + MINED - POS + - - Generated in CoinBase + + MINED - POR - - Generated, PoS + + MINED - ORPHANED - + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From Desde @@ -2928,18 +2804,6 @@ Esto significa que se requiere una cuota de al menos %2. Transaction Inputs - - Transaction ID - Identificador de transacción (ID) - - - Transaction - Transacción - - - Inputs - entradas - Amount @@ -2969,12 +2833,7 @@ Esto significa que se requiere una cuota de al menos %2. Esta ventana muestra información detallada sobre la transacción - - View Attachment - Ver adjunto - - - + Execute Contract Ejecutar contrato @@ -2983,21 +2842,11 @@ Esto significa que se requiere una cuota de al menos %2. C&lose C&errar - - - Gridcoin Documents - Gridcoin Documentos - - - - Document cannot be found on P2P server. - No se puede encontrar el documento en el servidor P2P. - TransactionTableModel - + Date Fecha @@ -3032,32 +2881,12 @@ Esto significa que se requiere una cuota de al menos %2. Este bloque no fue recibido por otros nodos<br>y probablemente no será aceptada! - - Mined - DPOR - Minado - DPOR - - - - Minted - (Local) DPOR - Picado - (Local) DPOR - - - - Mined - PoR - Minado - PoR - - - - Mined - Interest - Mined - Interés - - - + Destination address of transaction. Dirección de destino de la transacción. - + Open for %n more block(s) Abrir para %n bloque más @@ -3095,7 +2924,7 @@ Esto significa que se requiere una cuota de al menos %2. Generado pero no aceptado - + Received with Recibido con @@ -3115,12 +2944,42 @@ Esto significa que se requiere una cuota de al menos %2. Pago proprio - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (nd) - + Transaction status. Hover over this field to show number of confirmations. Estado de transacción. Pasa el ratón sobre este campo para ver el número de confirmaciones. @@ -3309,29 +3168,10 @@ Esto significa que se requiere una cuota de al menos %2. para - - UpgradeDialog - - Gridcoin Upgrading Facility - Instalación de mejora de Gridcoin - - - Retry Download - Retry Descargar - - - Upgrade - Mejorar - - - Hide - Esconder - - VotingChartDialog - + Poll Results Resultados de la Encuesta @@ -3422,15 +3262,6 @@ Esto significa que se requiere una cuota de al menos %2. Share Type Tipo de la parte - - Question - Crear encuesta - Create Poll - - - Answers - Respuestas - # Voters @@ -3441,10 +3272,6 @@ Esto significa que se requiere una cuota de al menos %2. Total Shares Total acciones - - URL - URL - Best Answer @@ -3470,10 +3297,6 @@ Esto significa que se requiere una cuota de al menos %2. Share Type. Tipo de participación. - - Question. - Pregunta. - Total Participants. @@ -3484,10 +3307,6 @@ Esto significa que se requiere una cuota de al menos %2. Total Shares. Total acciones. - - URL. - URL. - Best Answer. @@ -3497,7 +3316,7 @@ Esto significa que se requiere una cuota de al menos %2. VotingVoteDialog - + PlaceVote PlaceVote @@ -3530,7 +3349,7 @@ Esto significa que se requiere una cuota de al menos %2. WalletModel - + Sending... Enviando... @@ -3538,21 +3357,17 @@ Esto significa que se requiere una cuota de al menos %2. bitcoin-core - + Options: Opciones: - + This help message Este mensaje de ayuda - - Specify configuration file (default: gridcoin.conf) - Especifica un archivo de configuración (por defecto: Gridcoin.conf) - Specify pid file (default: gridcoind.pid) @@ -3584,12 +3399,12 @@ Esto significa que se requiere una cuota de al menos %2. Especificar el tiempo máximo de conexión en milisegundos (predeterminado: 5000) - + Connect through socks proxy Conecte a través del socks proxy - + Select the version of socks proxy to use (4-5, default: 5) Selecciona la versión de socks proxy a usar (4-5, por defecto: 5) @@ -3599,7 +3414,7 @@ Esto significa que se requiere una cuota de al menos %2. Usar proxy para alcanzar a ver los servicios ocultos (por defecto: los mismos que -proxy) - + Listen for connections on <port> (default: 32749 or testnet: 32748) Escuche las conexiones en <puerto> (por defecto: 32749 o testnet: 32748) @@ -3610,7 +3425,7 @@ Esto significa que se requiere una cuota de al menos %2. Mantener como máximo <n> conexiones a pares (predeterminado: 125) - + Connect only to the specified node(s) Conectar sólo a los nodos (o nodo) especificados @@ -3620,26 +3435,22 @@ Esto significa que se requiere una cuota de al menos %2. Conectar a un nodo para obtener direcciones de pares y desconectar - + Specify your own public address Especifique su propia dirección pública - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) Conectarse solo a nodos de la red <net> (IPv4, IPv6 o Tor) - + Discover own IP address (default: 1 when listening and no -externalip) Descubrir dirección IP propia (predeterminado: 1 al escuchar sin -externalip) - Find peers using internet relay chat (default: 0) - Encontrar pares usando IRC (por defecto:1) {0)?} - - - + Accept connections from outside (default: 1 if no -proxy or -connect) Aceptar conexiones desde el exterior (predeterminado: 1 si no -proxy o -connect) @@ -3649,26 +3460,22 @@ Esto significa que se requiere una cuota de al menos %2. Enlazar a la dirección dada. Utilice la notación [host]:puerto para IPv6 - + Find peers using DNS lookup (default: 1) Encontrar pares usando la búsqueda de DNS (por defecto: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) Sincronizar el tiempo con otros nodos. Desactivar si el tiempo en su sistema es preciso, por ejemplo si usa sincronización con NTP (por defecto: 1) - Sync checkpoints policy (default: strict) - Política de puntos de control de sincronización (por defecto: estricta) - - - + Threshold for disconnecting misbehaving peers (default: 100) Umbral para la desconexión de pares con mal comportamiento (predeterminado: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Número de segundos en que se evita la reconexión de pares con mal comportamiento (predeterminado: 86400) @@ -3763,6 +3570,16 @@ Esto significa que se requiere una cuota de al menos %2. Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3823,6 +3640,11 @@ Esto significa que se requiere una cuota de al menos %2. ERROR + + + Entire balance reserved + + Expires @@ -3888,11 +3710,6 @@ Esto significa que se requiere una cuota de al menos %2. Message Mensaje - - - Messate Type - - Miner: @@ -3929,12 +3746,7 @@ Esto significa que se requiere una cuota de al menos %2. - - No coins; - - - - + Offline; @@ -3944,12 +3756,7 @@ Esto significa que se requiere una cuota de al menos %2. - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -4029,12 +3836,12 @@ Esto significa que se requiere una cuota de al menos %2. Usar UPnP para asignar el puerto de escucha (predeterminado: 0) - + Fee per KB to add to transactions you send Comisión por KB a añadir a las transacciones que envía - + When creating transactions, ignore inputs with value less than this (default: 0.01) Al crear transacciones, ignorar las entradas con valor inferior a esta (por defecto: 0.01) @@ -4045,13 +3852,13 @@ Esto significa que se requiere una cuota de al menos %2. - + Use the test network Usar la red de pruebas - + Output extra debugging information. Implies all other -debug* options Salida de información de depuración extra. Implica todas las opciones -debug* de depuración @@ -4061,7 +3868,7 @@ Esto significa que se requiere una cuota de al menos %2. Salida extra de información de depuración de red - + Prepend debug output with timestamp Prefijar salida de depuración con marca de tiempo @@ -4071,7 +3878,7 @@ Esto significa que se requiere una cuota de al menos %2. Enviar información de rastreo / depurado al depurador - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) Escuchar conexiones JSON-RPC en <port> (predeterminado: 15715 o testnet: 25715) @@ -4082,7 +3889,7 @@ Esto significa que se requiere una cuota de al menos %2. - + Send commands to node running on <ip> (default: 127.0.0.1) Enviar comando al nodo situado en <ip> (predeterminado: 127.0.0.1) @@ -4093,7 +3900,7 @@ Esto significa que se requiere una cuota de al menos %2. Requerir confirmaciones para cambio (por defecto: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) Exigir a los scripts de transacción que usen los operadores PUSH canónicos (por defecto: 1) @@ -4103,7 +3910,7 @@ Esto significa que se requiere una cuota de al menos %2. Ejecutar comando cuando una alerta relevante sea recibida (%s en la linea de comandos es reemplazado por un mensaje) - + Upgrade wallet to latest format Actualizar el monedero al último formato @@ -4119,7 +3926,7 @@ Esto significa que se requiere una cuota de al menos %2. Volver a examinar la cadena de bloques en busca de transacciones del monedero perdidas - + Attempt to recover private keys from a corrupt wallet.dat Intento de recuperar claves privadas de un wallet.dat corrupto @@ -4139,7 +3946,7 @@ Esto significa que se requiere una cuota de al menos %2. - + Boinc Mining @@ -4149,7 +3956,7 @@ Esto significa que se requiere una cuota de al menos %2. - + Error obtaining next project. Error 06172014. @@ -4199,12 +4006,32 @@ Esto significa que se requiere una cuota de al menos %2. - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -4219,12 +4046,12 @@ Esto significa que se requiere una cuota de al menos %2. Establecer el tamaño máximo de bloque en bytes (por defecto: 250000) - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) Establecer el tamaño máximo de las transacciones alta-prioridad/baja-comisión en bytes (por defecto: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) Opciones SSL: (ver la Bitcoin Wiki para instrucciones de configuración SSL) @@ -4247,21 +4074,17 @@ Esto significa que se requiere una cuota de al menos %2. - Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - Cifras aceptables: (por defecto: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - - - + Invalid amount for -paytxfee=<amount>: '%s' Cantidad inválida para -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. Aviso: ¡-paytxfee tiene un valor muy alto! Esta es la comisión que pagará si envía una transacción. - + Invalid amount for -mininput=<amount>: '%s' Cantidad no válida para -mininput=<amount>: '%s' @@ -4271,22 +4094,22 @@ Esto significa que se requiere una cuota de al menos %2. Error al comprobar la sanidad de inicialización. Gridcoin se está cerrando. - + Wallet %s resides outside data directory %s. El monedero %s reside fuera del directorio de datos %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. No se puede obtener un bloqueo en el directorio de datos %s. Gridcoin probablemente ya esté en funcionamiento. - + Verifying database integrity... Verificando la integridad de la base de datos... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. Error al inicializar el entorno de base de datos %s! Para recuperar, HAGA UNA COPIA DE SEGURIDAD DEL DIRECTORIO, a continuación, elimine todo de ella excepto el archivo wallet.dat. @@ -4296,10 +4119,15 @@ Esto significa que se requiere una cuota de al menos %2. Aviso: ¡Recuperados datos de wallet.dat corrupto! El wallet.dat original se ha guardado como wallet.{timestamp}.bak en %s; si hubiera errores en su saldo o transacciones, deberá restaurar una copia de seguridad. - + Vote Votar + + + Waiting for coins to mature + + Wallet locked; @@ -4316,17 +4144,17 @@ Esto significa que se requiere una cuota de al menos %2. wallet.dat corrupto, ha fallado la recuperación - + Unknown -socks proxy version requested: %i Solicitada versión de proxy -socks desconocida: %i - + Invalid -tor address: '%s' Dirección -tor inválida: '%s' - + Cannot resolve -bind address: '%s' No se puede resolver la dirección de -bind: '%s' @@ -4336,15 +4164,10 @@ Esto significa que se requiere una cuota de al menos %2. No se puede resolver la dirección de -externalip: '%s' - + Invalid amount for -reservebalance=<amount> Cantidad no válida para -reservebalance=<amount> - - Unable to sign checkpoint, wrong checkpointkey? - - ¿No se puede firmar el punto de control? - Error loading blkindex.dat @@ -4356,22 +4179,22 @@ Esto significa que se requiere una cuota de al menos %2. Error al cargar wallet.dat: el monedero está dañado - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. Aviso: ¡Error al leer wallet.dat! Todas las claves se han leído correctamente, pero podrían faltar o ser incorrectos los datos de transacciones o las entradas de la libreta de direcciones. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin Error cargando wallet.dat: El monedero requiere una nueva versión de Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete El monedero necesita ser reescrito: reinicie Gridcoin para completar - + Error loading wallet.dat Error al cargar wallet.dat @@ -4391,17 +4214,17 @@ Esto significa que se requiere una cuota de al menos %2. Error: no se pudo iniciar el nodo - + Unable to bind to %s on this computer. Gridcoin is probably already running. No se puede enlazar a %s en este equipo. Gridcoin probablemente ya esté en funcionamiento. - + Unable to bind to %s on this computer (bind returned error %d, %s) No es posible conectar con %s en este sistema (bind ha dado el error %d, %s) - + Error: Wallet locked, unable to create transaction Error: Monedero bloqueado, no es posible crear una transacción @@ -4411,60 +4234,48 @@ Esto significa que se requiere una cuota de al menos %2. Error: Monedero desbloqueado sólo para hacer "stake", no es posible crear una transacción. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds Error: Esta transacción requiere una tarifa de transacción de al menos% s debido a su cantidad, complejidad o uso de los fondos recibidos recientemente - + Error: Transaction creation failed Error: Error en la creación de la transacción - + Sending... Enviando... - + 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 ha sido rechazada. Esto puede ocurrir si algunas de sus monedas en el monedero ya se gastaron, por ejemplo, si se usa una copia del wallet.dat y se gastaron las monedas de la copia pero no se han marcado como gastadas aquí. - + Invalid amount Cuantía no válida - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. Advertencia: Verifique que la fecha y hora del equipo sean correctas! Si su reloj es erróneo Gridcoin no funcionará correctamente. - Warning: This version is obsolete, upgrade required! - Aviso: Esta versión es obsoleta, actualización necesaria! - - - WARNING: synchronized checkpoint violation detected, but skipped! - ADVERTENCIA: violación de un punto de control sincronizado detectada, se saltara! - - - + Warning: Disk space is low! Advertencia: Espacio en disco bajo! - WARNING: Invalid checkpoint found! Displayed transactions may not be correct! You may need to upgrade, or notify developers. - ADVERTENCIA: Punto de control no válido encontrado! Las transacciones que se muestran pueden no ser correctas! Puede que tenga que actualizar o notificar a los desarrolladores. - - - + Run in the background as a daemon and accept commands Ejecutar en segundo plano como daemon y aceptar comandos - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) Ejecutar comando cuando una transacción del monedero cambia (%s en cmd se remplazará por TxID) @@ -4474,12 +4285,12 @@ Esto significa que se requiere una cuota de al menos %2. Opciones de creación de bloques: - + Failed to listen on any port. Use -listen=0 if you want this. Ha fallado la escucha en todos los puertos. Use -listen=0 si desea esto. - + Specify wallet file (within data directory) Especificar archivo de monedero (dentro del directorio de datos) @@ -4506,7 +4317,7 @@ Esto significa que se requiere una cuota de al menos %2. - + Execute command when the best block changes (%s in cmd is replaced by block hash) Ejecutar un comando cuando cambia el mejor bloque (%s en cmd se sustituye por el hash de bloque) @@ -4516,12 +4327,12 @@ Esto significa que se requiere una cuota de al menos %2. Permitir búsquedas DNS para -addnode, -seednode y -connect - + To use the %s option Para utilizar la opción %s - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -4564,12 +4375,12 @@ If the file does not exist, create it with owner-readable-only file permissions. Si el archivo no existe, créelo con permiso de lectura solamente del propietario. - + Gridcoin version versión Gridcoin - + Usage: Uso: @@ -4579,7 +4390,7 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari Enviar comando a -server or gridcoind - + List commands Muestra comandos @@ -4606,12 +4417,12 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari Dirección -proxy inválida: '%s' - + Unknown network specified in -onlynet: '%s' La red especificada en -onlynet '%s' es desconocida - + Insufficient funds Fondos insuficientes @@ -4621,17 +4432,17 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari Cargando el índice de bloques... - + Add a node to connect to and attempt to keep the connection open Añadir un nodo al que conectarse y tratar de mantener la conexión abierta - + Loading wallet... Cargando monedero... - + Cannot downgrade wallet No se puede cambiar a una versión mas antigua el monedero @@ -4641,17 +4452,17 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari No se puede escribir la dirección predeterminada - + Rescanning... Reexplorando... - + Done loading Se terminó de cargar - + Error Error diff --git a/src/qt/locale/bitcoin_es_CL.ts b/src/qt/locale/bitcoin_es_CL.ts index a8fe25bb31..d2ba050cb0 100644 --- a/src/qt/locale/bitcoin_es_CL.ts +++ b/src/qt/locale/bitcoin_es_CL.ts @@ -23,23 +23,6 @@ Distributed under the MIT/X11 software license, see the accompanying file COPYIN This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (https://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - - -This is experimental software. - -Distributed under the MIT/X11 software license, see the accompanying file COPYING 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. - -Este es un software experimental. - -Distribuido bajo la licencia MIT/X11, vea el archivo adjunto -COPYING o http://www.opensource.org/licenses/mit-license.php. - -Este producto incluye software desarrollado por OpenSSL Project para su uso en -el OpenSSL Toolkit (http://www.openssl.org/), software criptográfico escrito por -Eric Young (eay@cryptsoft.com) y UPnP software escrito por Thomas Bernard. - AddressBookPage @@ -316,12 +299,12 @@ Eric Young (eay@cryptsoft.com) y UPnP software escrito por Thomas Bernard. BitcoinGUI - + Gridcoin - + Send coins to a Gridcoin address @@ -397,28 +380,42 @@ Eric Young (eay@cryptsoft.com) y UPnP software escrito por Thomas Bernard. - - &Neural Network + + Scraper: waiting on wallet to sync. - - Neural Network + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. - &New User Wizard + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. - - + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + New User Wizard - + &Voting @@ -428,7 +425,7 @@ Eric Young (eay@cryptsoft.com) y UPnP software escrito por Thomas Bernard. - + &Diagnostics @@ -493,24 +490,19 @@ Eric Young (eay@cryptsoft.com) y UPnP software escrito por Thomas Bernard.Exportar los datos de la pestaña actual a un archivo - + &Community - - &Advanced - - - - + [testnet] [red-de-pruebas] - + Gridcoin client @@ -528,7 +520,7 @@ Eric Young (eay@cryptsoft.com) y UPnP software escrito por Thomas Bernard. - + Last received block was generated %1. @@ -587,7 +579,7 @@ Dirección: %4 {1 ?} {4?} - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -597,18 +589,7 @@ Dirección: %4 {1 - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Fecha: %1 -Cantidad: %2 -Tipo: %3 -Dirección: %4 - - - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. @@ -667,7 +648,7 @@ Dirección: %4 - + %n second(s) @@ -699,7 +680,7 @@ Dirección: %4 - + &Overview &Vista general @@ -729,7 +710,7 @@ Dirección: %4 Salir del programa - + &Options... &Opciones @@ -738,19 +719,11 @@ Dirección: %4 &Encrypt Wallet... &Codificar la billetera... - - &Backup Wallet... - &Respaldar billetera... - &Change Passphrase... &Cambiar la contraseña... - - Backup wallet to another location - Respaldar billetera en otra ubicación - Change the passphrase used for wallet encryption @@ -772,12 +745,12 @@ Dirección: %4 Verificar mensaje.... - + Wallet Cartera - + &Send &Envía @@ -787,12 +760,12 @@ Dirección: %4 y recibir - + &Show / Hide &Mostrar/Ocultar - + &File &Archivo @@ -802,12 +775,12 @@ Dirección: %4 &Configuración - + &Help &Ayuda - + %n second(s) ago @@ -844,12 +817,12 @@ Dirección: %4 Actualizado - + Catching up... Recuperando... - + Sent transaction Transacción enviada @@ -859,16 +832,12 @@ Dirección: %4 Transacción entrante - 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 occurred. Gridcoin can no longer continue safely and will quit. @@ -876,7 +845,7 @@ Dirección: %4 ClientModel - + Network Alert Alerta de Red @@ -1324,7 +1293,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1547,10 +1516,6 @@ This label turns red, if the priority is smaller than "medium". Map port using &UPnP Direcciona el puerto usando &UPnP - - Proxy &IP: - &IP Proxy: - &Port: @@ -1775,6 +1740,14 @@ This label turns red, if the priority is smaller than "medium". desincronizado + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1841,7 +1814,7 @@ This label turns red, if the priority is smaller than "medium". - + Boost version @@ -1858,7 +1831,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A N/A @@ -2003,7 +1976,12 @@ This label turns red, if the priority is smaller than "medium". &Consola - + + &Scraper + + + + Totals Total: @@ -2038,7 +2016,7 @@ This label turns red, if the priority is smaller than "medium". - + %1 B @@ -2336,22 +2314,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: Cantidad: - + Pay &To: &Pagar a: - + &Label: &Etiqueta: - + Alt+A Alt+A @@ -2371,12 +2349,12 @@ This label turns red, if the priority is smaller than "medium". Mensaje: - + Form Formulario - + Enter a label for this address to add it to your address book Introduce una etiqueta a esta dirección para añadirla a tu guia @@ -2397,17 +2375,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2656,26 +2629,47 @@ This label turns red, if the priority is smaller than "medium". - + Source - Generated - Generado + + Generated in CoinBase + - - Generated in CoinBase + + MINED - POS - - Generated, PoS + + MINED - POR - + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From De @@ -2789,23 +2783,11 @@ This label turns red, if the priority is smaller than "medium". Transaction Inputs - - Transaction ID - ID de Transacción - Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - Información - - - Transaction - Transacción - Amount @@ -2835,12 +2817,7 @@ This label turns red, if the priority is smaller than "medium". Esta ventana muestra información detallada sobre la transacción - - View Attachment - - - - + Execute Contract @@ -2849,21 +2826,11 @@ This label turns red, if the priority is smaller than "medium". C&lose C y perder - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Fecha @@ -2936,7 +2903,7 @@ This label turns red, if the priority is smaller than "medium". Generado pero no acceptado - + Received with Recibido con @@ -2956,32 +2923,42 @@ This label turns red, if the priority is smaller than "medium". Pagar a usted mismo - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (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. @@ -3178,7 +3155,7 @@ This label turns red, if the priority is smaller than "medium". VotingChartDialog - + Poll Results @@ -3322,7 +3299,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3355,7 +3332,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3363,13 +3340,13 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: Opciones: - + This help message Este mensaje de ayuda @@ -3406,12 +3383,12 @@ This label turns red, if the priority is smaller than "medium". Especifica tiempo de espera para conexion en milisegundos (predeterminado: 5000) - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3421,7 +3398,7 @@ This label turns red, if the priority is smaller than "medium". - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3431,7 +3408,7 @@ This label turns red, if the priority is smaller than "medium". Mantener al menos <n> conecciones por cliente (por defecto: 125) - + Connect only to the specified node(s) Conecta solo al nodo especificado @@ -3442,22 +3419,22 @@ This label turns red, if the priority is smaller than "medium". - + Specify your own public address - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -3467,22 +3444,22 @@ This label turns red, if the priority is smaller than "medium". - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + 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) @@ -3502,7 +3479,7 @@ This label turns red, if the priority is smaller than "medium". - + Boinc Mining @@ -3512,7 +3489,7 @@ This label turns red, if the priority is smaller than "medium". - + Error obtaining next project. Error 06172014. @@ -3557,12 +3534,32 @@ This label turns red, if the priority is smaller than "medium". - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -3592,12 +3589,12 @@ This label turns red, if the priority is smaller than "medium". Intenta usar UPnP para mapear el puerto de escucha (default: 0) - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) @@ -3698,6 +3695,16 @@ This label turns red, if the priority is smaller than "medium". Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3758,6 +3765,11 @@ This label turns red, if the priority is smaller than "medium". ERROR + + + Entire balance reserved + + Expires @@ -3813,11 +3825,6 @@ This label turns red, if the priority is smaller than "medium". Message Mensaje - - - Messate Type - - Miner: @@ -3854,12 +3861,7 @@ This label turns red, if the priority is smaller than "medium". - - No coins; - - - - + Offline; @@ -3869,12 +3871,7 @@ This label turns red, if the priority is smaller than "medium". - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3946,7 +3943,7 @@ This label turns red, if the priority is smaller than "medium". - + Output extra debugging information. Implies all other -debug* options @@ -3956,7 +3953,7 @@ This label turns red, if the priority is smaller than "medium". - + Prepend debug output with timestamp @@ -3971,7 +3968,7 @@ This label turns red, if the priority is smaller than "medium". - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -3982,13 +3979,13 @@ This label turns red, if the priority is smaller than "medium". - + Send commands to node running on <ip> (default: 127.0.0.1) Envia comando al nodo situado en <ip> (predeterminado: 127.0.0.1) - + Execute command when the best block changes (%s in cmd is replaced by block hash) @@ -3998,12 +3995,12 @@ This label turns red, if the priority is smaller than "medium". - + Require a confirmations for change (default: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -4013,7 +4010,7 @@ This label turns red, if the priority is smaller than "medium". - + Upgrade wallet to latest format Actualizar billetera al formato actual @@ -4030,12 +4027,12 @@ This label turns red, if the priority is smaller than "medium". - + Attempt to recover private keys from a corrupt wallet.dat - + How many blocks to check at startup (default: 2500, 0 = all) @@ -4050,12 +4047,12 @@ This label turns red, if the priority is smaller than "medium". - + Block creation options: - + Set minimum block size in bytes (default: 0) Establezca el tamaño mínimo del bloque en bytes (por defecto: 0) @@ -4065,12 +4062,12 @@ This label turns red, if the priority is smaller than "medium". - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) Opciones SSL: (ver la Bitcoin Wiki para instrucciones de configuración SSL) @@ -4093,17 +4090,17 @@ This label turns red, if the priority is smaller than "medium". - + Invalid amount for -paytxfee=<amount>: '%s' Cantidad inválida para -paytxfee=<amount>: '%s' - + 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. - + Invalid amount for -mininput=<amount>: '%s' @@ -4113,22 +4110,22 @@ This label turns red, if the priority is smaller than "medium". - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4138,10 +4135,15 @@ This label turns red, if the priority is smaller than "medium". - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4158,7 +4160,7 @@ This label turns red, if the priority is smaller than "medium". wallet.dat corrompió, guardado fallido - + Unknown -socks proxy version requested: %i @@ -4168,27 +4170,27 @@ This label turns red, if the priority is smaller than "medium". - + Invalid -tor address: '%s' - + Cannot resolve -bind address: '%s' - + Failed to listen on any port. Use -listen=0 if you want this. - + Cannot resolve -externalip address: '%s' - + Invalid amount for -reservebalance=<amount> @@ -4203,22 +4205,22 @@ This label turns red, if the priority is smaller than "medium". Error cargando wallet.dat: Billetera corrupta - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete - + Error loading wallet.dat Error cargando wallet.dat @@ -4238,17 +4240,17 @@ This label turns red, if the priority is smaller than "medium". - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) No es posible escuchar en el %s en este ordenador (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4258,46 +4260,42 @@ This label turns red, if the priority is smaller than "medium". - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount Cantidad inválida - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - Warning: This version is obsolete, upgrade required! - Advertencia: Esta versión está obsoleta, se necesita actualizar! - - - + Warning: Disk space is low! - + Send trace/debug info to console instead of debug.log file Enviar informacion de seguimiento a la consola en vez del archivo debug.log @@ -4314,18 +4312,18 @@ This label turns red, if the priority is smaller than "medium". - + Allow DNS lookups for -addnode, -seednode and -connect Permite búsqueda DNS para addnode y connect - + To use the %s option Para utilizar la opción %s - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -4357,12 +4355,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Gridcoin version - + Usage: Uso: @@ -4372,7 +4370,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + List commands Muestra comandos @@ -4409,17 +4407,17 @@ If the file does not exist, create it with owner-readable-only file permissions. Cargando el index de bloques... - + Add a node to connect to and attempt to keep the connection open Agrega un nodo para conectarse and attempt to keep the connection open - + Loading wallet... Cargando cartera... - + Cannot downgrade wallet No es posible desactualizar la billetera @@ -4429,17 +4427,17 @@ If the file does not exist, create it with owner-readable-only file permissions. No se pudo escribir la dirección por defecto - + Rescanning... Rescaneando... - + Done loading Carga completa - + Error Error diff --git a/src/qt/locale/bitcoin_es_DO.ts b/src/qt/locale/bitcoin_es_DO.ts index c4d5d76409..d8fe6a179e 100644 --- a/src/qt/locale/bitcoin_es_DO.ts +++ b/src/qt/locale/bitcoin_es_DO.ts @@ -23,23 +23,6 @@ Distributed under the MIT/X11 software license, see the accompanying file COPYIN This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (https://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - - -This is experimental software. - -Distributed under the MIT/X11 software license, see the accompanying file COPYING 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. - -Este es un software experimental. - -Distribuido bajo la licencia MIT/X11, vea el archivo adjunto -COPYING o http://www.opensource.org/licenses/mit-license.php. - -Este producto incluye software desarrollado por OpenSSL Project para su uso en -el OpenSSL Toolkit (http://www.openssl.org/) y software criptográfico escrito por -Eric Young (eay@cryptsoft.com) y el software UPnP escrito por Thomas Bernard. - AddressBookPage @@ -316,12 +299,12 @@ Eric Young (eay@cryptsoft.com) y el software UPnP escrito por Thomas Bernard. BitcoinGUI - + Sign &message... Firmar &mensaje... - + &Overview &Vista general @@ -417,7 +400,7 @@ Eric Young (eay@cryptsoft.com) y el software UPnP escrito por Thomas Bernard.Salir de la aplicación - + &Options... &Opciones... @@ -431,19 +414,11 @@ Eric Young (eay@cryptsoft.com) y el software UPnP escrito por Thomas Bernard.Encrypt or decrypt wallet - - &Backup Wallet... - Copia de &respaldo del monedero... - &Change Passphrase... &Cambiar la contraseña… - - Backup wallet to another location - Copia de seguridad del monedero en otra ubicación - Change the passphrase used for wallet encryption @@ -495,7 +470,7 @@ Eric Young (eay@cryptsoft.com) y el software UPnP escrito por Thomas Bernard.&Verificar mensaje... - + Wallet Monedero @@ -505,7 +480,7 @@ Eric Young (eay@cryptsoft.com) y el software UPnP escrito por Thomas Bernard. - + &Send &Enviar @@ -525,28 +500,12 @@ Eric Young (eay@cryptsoft.com) y el software UPnP escrito por Thomas Bernard. - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -556,7 +515,7 @@ Eric Young (eay@cryptsoft.com) y el software UPnP escrito por Thomas Bernard. - + &Diagnostics @@ -586,14 +545,14 @@ Eric Young (eay@cryptsoft.com) y el software UPnP escrito por Thomas Bernard. - + [testnet] [testnet] - + Gridcoin client @@ -611,7 +570,7 @@ Eric Young (eay@cryptsoft.com) y el software UPnP escrito por Thomas Bernard. - + Date: %1 Amount: %2 Type: %3 @@ -626,7 +585,7 @@ Dirección: %4 ?} {4?} - + Wallet is <b>encrypted</b> and currently %1 @@ -673,7 +632,7 @@ Dirección: %4 - + %n second(s) @@ -715,7 +674,37 @@ Dirección: %4 - + + Scraper: waiting on wallet to sync. + + + + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + &File &Archivo @@ -730,17 +719,12 @@ Dirección: %4 - - &Advanced - - - - + &Help A&yuda - + %n second(s) ago @@ -777,12 +761,12 @@ Dirección: %4 Actualizado - + Catching up... Actualizando... - + Last received block was generated %1. @@ -837,19 +821,7 @@ Dirección: %4 Transacción entrante - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Fecha: %1 -Cantidad: %2 -Tipo: %3 -Dirección: %4 - - - - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. @@ -860,17 +832,13 @@ Dirección: %4 URI handling - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - El monedero está <b>cifrado</b> y actualmente <b>desbloqueado</b> - Wallet is <b>encrypted</b> and currently <b>locked</b> El monedero está <b>cifrado</b> y actualmente <b>bloqueado</b> - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. @@ -878,7 +846,7 @@ Dirección: %4 ClientModel - + Network Alert Alerta de red @@ -960,10 +928,6 @@ Dirección: %4 Priority Prioridad - - List mode - Modo lista - Amount @@ -1329,7 +1293,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1542,10 +1506,6 @@ This label turns red, if the priority is smaller than "medium". Map port using &UPnP Mapear el puerto usando &UPnP - - Proxy &IP: - Dirección &IP del proxy: - &Port: @@ -1779,6 +1739,14 @@ This label turns red, if the priority is smaller than "medium". desincronizado + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1840,7 +1808,7 @@ This label turns red, if the priority is smaller than "medium". RPCConsole - + @@ -1852,7 +1820,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A N/D @@ -1872,12 +1840,12 @@ This label turns red, if the priority is smaller than "medium". Hora de inicio - + Gridcoin - Debug Console - + Boost version @@ -1982,7 +1950,12 @@ This label turns red, if the priority is smaller than "medium". &Consola - + + &Scraper + + + + &Network Traffic &Tráfico de Red @@ -2037,7 +2010,7 @@ This label turns red, if the priority is smaller than "medium". Escriba <b>help</b> para ver un resumen de los comandos disponibles. - + %1 B %1 B @@ -2072,7 +2045,7 @@ This label turns red, if the priority is smaller than "medium". - + Welcome to the Gridcoin RPC console! @@ -2339,22 +2312,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: Ca&ntidad: - + Pay &To: &Pagar a: - + &Label: &Etiqueta: - + Alt+A Alt+A @@ -2374,12 +2347,12 @@ This label turns red, if the priority is smaller than "medium". Mensaje: - + Form Desde - + Enter a label for this address to add it to your address book Etiquete esta dirección para añadirla a la libreta @@ -2400,17 +2373,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2659,26 +2627,47 @@ This label turns red, if the priority is smaller than "medium". - + Source Fuente - Generated - Generado + + Generated in CoinBase + + + + + MINED - POS + - - Generated in CoinBase + + MINED - POR - - Generated, PoS + + MINED - ORPHANED - + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From De @@ -2792,27 +2781,11 @@ This label turns red, if the priority is smaller than "medium". Transaction Inputs - - Transaction ID - Identificador de transacción - Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - Información - - - Transaction - Transacción - - - Inputs - entradas - Amount @@ -2842,12 +2815,7 @@ This label turns red, if the priority is smaller than "medium". Esta ventana muestra información detallada sobre la transacción - - View Attachment - - - - + Execute Contract @@ -2856,21 +2824,11 @@ This label turns red, if the priority is smaller than "medium". C&lose &Cerrar - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Fecha @@ -2943,7 +2901,7 @@ This label turns red, if the priority is smaller than "medium". Generado pero no aceptado - + Received with Recibido con @@ -2963,32 +2921,42 @@ This label turns red, if the priority is smaller than "medium". Pago propio - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (nd) - + Transaction status. Hover over this field to show number of confirmations. Estado de transacción. Pasa el ratón sobre este campo para ver el número de confirmaciones. @@ -3185,7 +3153,7 @@ This label turns red, if the priority is smaller than "medium". VotingChartDialog - + Poll Results @@ -3329,7 +3297,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3362,7 +3330,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3370,40 +3338,40 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: Opciones: - + Specify data directory Especificar directorio para los datos - + Connect to a node to retrieve peer addresses, and disconnect Conectar a un nodo para obtener direcciones de pares y desconectar - + Specify your own public address Especifique su propia dirección pública - + Accept command line and JSON-RPC commands Aceptar comandos consola y JSON-RPC - + Run in the background as a daemon and accept commands Ejecutar en segundo plano como daemon y aceptar comandos - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) Ejecutar comando cuando una transacción del monedero cambia (%s en cmd se remplazará por TxID) @@ -3413,12 +3381,12 @@ This label turns red, if the priority is smaller than "medium". Opciones de creación de bloques: - + Failed to listen on any port. Use -listen=0 if you want this. Ha fallado la escucha en todos los puertos. Use -listen=0 si desea esto. - + Specify configuration file (default: gridcoinresearch.conf) @@ -3450,7 +3418,7 @@ This label turns red, if the priority is smaller than "medium". - + Execute command when the best block changes (%s in cmd is replaced by block hash) Ejecutar un comando cuando cambia el mejor bloque (%s en cmd se sustituye por el hash de bloque) @@ -3460,7 +3428,7 @@ This label turns red, if the priority is smaller than "medium". Permitir búsquedas DNS para -addnode, -seednode y -connect - + Loading addresses... Cargando direcciones... @@ -3470,12 +3438,12 @@ This label turns red, if the priority is smaller than "medium". Dirección -proxy inválida: '%s' - + Unknown network specified in -onlynet: '%s' La red especificada en -onlynet '%s' es desconocida - + Insufficient funds Fondos insuficientes @@ -3485,17 +3453,17 @@ This label turns red, if the priority is smaller than "medium". Cargando el índice de bloques... - + Add a node to connect to and attempt to keep the connection open Añadir un nodo al que conectarse y tratar de mantener la conexión abierta - + Loading wallet... Cargando monedero... - + Cannot downgrade wallet No se puede rebajar el monedero @@ -3505,27 +3473,27 @@ This label turns red, if the priority is smaller than "medium". No se puede escribir la dirección predeterminada - + Rescanning... Reexplorando... - + Done loading Generado pero no aceptado - + Error Error - + To use the %s option Para utilizar la opción %s - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -3649,6 +3617,16 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3709,6 +3687,11 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari ERROR + + + Entire balance reserved + + Expires @@ -3769,11 +3752,6 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari Message Mensaje - - - Messate Type - - Miner: @@ -3810,12 +3788,7 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari - - No coins; - - - - + Offline; @@ -3825,12 +3798,7 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3910,7 +3878,7 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari - + List commands Muestra comandos @@ -3927,7 +3895,7 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari - + This help message Este mensaje de ayuda @@ -3953,12 +3921,12 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari Especificar el tiempo máximo de conexión en milisegundos (predeterminado: 5000) - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3968,7 +3936,7 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3978,22 +3946,22 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari Mantener como máximo <n> conexiones a pares (predeterminado: 125) - + Connect only to the specified node(s) Conectar sólo a los nodos (o nodo) especificados - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) Conectarse solo a nodos de la red <net> (IPv4, IPv6 o Tor) - + Discover own IP address (default: 1 when listening and no -externalip) Descubrir dirección IP propia (predeterminado: 1 al escuchar sin -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) Aceptar conexiones desde el exterior (predeterminado: 1 si no -proxy o -connect) @@ -4003,27 +3971,27 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + Threshold for disconnecting misbehaving peers (default: 100) Umbral para la desconexión de pares con mal comportamiento (predeterminado: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Número de segundos en que se evita la reconexión de pares con mal comportamiento (predeterminado: 86400) - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 5000) Búfer de recepción máximo por conexión, <n>*1000 bytes (predeterminado: 5000) @@ -4033,7 +4001,7 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari Búfer de recepción máximo por conexión, , <n>*1000 bytes (predeterminado: 1000) - + Use UPnP to map the listening port (default: 1 when listening) Usar UPnP para asignar el puerto de escucha (predeterminado: 1 al escuchar) @@ -4043,23 +4011,23 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari Usar UPnP para asignar el puerto de escucha (predeterminado: 0) - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) - + Use the test network Usar la red de pruebas - + Output extra debugging information. Implies all other -debug* options @@ -4069,7 +4037,7 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari - + Prepend debug output with timestamp @@ -4079,7 +4047,7 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -4090,7 +4058,7 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari - + Send commands to node running on <ip> (default: 127.0.0.1) Enviar comando al nodo situado en <ip> (predeterminado: 127.0.0.1) @@ -4101,7 +4069,7 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -4111,7 +4079,7 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari - + Upgrade wallet to latest format Actualizar el monedero al último formato @@ -4127,7 +4095,7 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari Volver a examinar la cadena de bloques en busca de transacciones del monedero perdidas - + Attempt to recover private keys from a corrupt wallet.dat Intento de recuperar claves privadas de un wallet.dat corrupto @@ -4147,7 +4115,7 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari - + Boinc Mining @@ -4157,7 +4125,7 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari - + Error obtaining next project. Error 06172014. @@ -4207,12 +4175,32 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -4227,12 +4215,12 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) Opciones SSL: (ver la Bitcoin Wiki para instrucciones de configuración SSL) @@ -4255,17 +4243,17 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari - + Invalid amount for -paytxfee=<amount>: '%s' Cantidad inválida para -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. Aviso: ¡-paytxfee tiene un valor muy alto! Esta es la comisión que pagará si envía una transacción. - + Invalid amount for -mininput=<amount>: '%s' @@ -4275,22 +4263,22 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4300,10 +4288,15 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari Aviso: ¡Recuperados datos de wallet.dat corrupto! El wallet.dat original se ha guardado como wallet.{timestamp}.bak en %s; si hubiera errores en su saldo o transacciones, deberá restaurar una copia de seguridad. - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4320,17 +4313,17 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari wallet.dat corrupto. Ha fallado la recuperación. - + Unknown -socks proxy version requested: %i Solicitada versión de proxy -socks desconocida: %i - + Invalid -tor address: '%s' - + Cannot resolve -bind address: '%s' No se puede resolver la dirección de -bind: '%s' @@ -4340,7 +4333,7 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari No se puede resolver la dirección de -externalip: '%s' - + Invalid amount for -reservebalance=<amount> @@ -4355,22 +4348,22 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari Error al cargar wallet.dat: el monedero está dañado - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. Aviso: ¡Error al leer wallet.dat! Todas las claves se han leído correctamente, pero podrían faltar o ser incorrectos los datos de transacciones o las entradas de la libreta de direcciones. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete - + Error loading wallet.dat Error al cargar wallet.dat @@ -4390,17 +4383,17 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) No es posible conectar con %s en este sistema (bind ha dado el error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4410,41 +4403,37 @@ Si el archivo no existe, créelo con permiso de lectura solamente del propietari - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount Cuantía no válida - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - Warning: This version is obsolete, upgrade required! - Aviso: Esta versión es obsoleta, actualización necesaria! - - - + Warning: Disk space is low! diff --git a/src/qt/locale/bitcoin_es_MX.ts b/src/qt/locale/bitcoin_es_MX.ts index 38e074a98a..b511612357 100644 --- a/src/qt/locale/bitcoin_es_MX.ts +++ b/src/qt/locale/bitcoin_es_MX.ts @@ -299,12 +299,12 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + Gridcoin - + Send coins to a Gridcoin address @@ -380,28 +380,12 @@ This product includes software developed by the OpenSSL Project for use in the O - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -411,7 +395,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Diagnostics @@ -476,24 +460,19 @@ This product includes software developed by the OpenSSL Project for use in the O Exportar la información en la tabla actual a un archivo - + &Community - - &Advanced - - - - + [testnet] - + Gridcoin client @@ -511,7 +490,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Last received block was generated %1. @@ -564,7 +543,7 @@ Address: %4 - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -574,13 +553,13 @@ Address: %4 - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. - + %n second(s) ago @@ -612,7 +591,7 @@ Address: %4 - + URI handling @@ -665,7 +644,7 @@ Address: %4 - + %n second(s) @@ -697,7 +676,37 @@ Address: %4 - + + Scraper: waiting on wallet to sync. + + + + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + &Overview &Vista previa @@ -727,7 +736,7 @@ Address: %4 Salir de la aplicación - + &Options... &Opciones @@ -736,19 +745,11 @@ Address: %4 &Encrypt Wallet... &Encriptar cartera - - &Backup Wallet... - &Respaldar cartera - &Change Passphrase... &Cambiar contraseña... - - Backup wallet to another location - Respaldar cartera en otra ubicación - Change the passphrase used for wallet encryption @@ -770,12 +771,12 @@ Address: %4 &Verificar mensaje... - + Wallet Cartera - + &Send &Enviar @@ -785,12 +786,12 @@ Address: %4 &Recibir - + &Show / Hide &Mostrar / Ocultar - + &File &Archivo @@ -800,22 +801,22 @@ Address: %4 &Configuraciones - + &Help &Ayuda - + Up to date Actualizado al dia - + Catching up... Recibiendo... - + Sent transaction Enviar Transacción @@ -825,16 +826,12 @@ Address: %4 Transacción entrante - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - La cartera esta <b>encriptada</b> y <b>desbloqueada</b> actualmente - - - + Wallet is <b>encrypted</b> and currently <b>locked</b> La cartera esta <b>encriptada</b> y <b>bloqueada</b> actualmente - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. @@ -842,7 +839,7 @@ Address: %4 ClientModel - + Network Alert @@ -1289,7 +1286,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1735,6 +1732,14 @@ This label turns red, if the priority is smaller than "medium". + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1801,7 +1806,7 @@ This label turns red, if the priority is smaller than "medium". - + &Information @@ -1823,7 +1828,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A @@ -1972,6 +1977,11 @@ This label turns red, if the priority is smaller than "medium". Clear console + + + &Scraper + + Yes @@ -1998,7 +2008,7 @@ This label turns red, if the priority is smaller than "medium". - + %1 B @@ -2295,22 +2305,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: M&onto - + Pay &To: Pagar &a: - + &Label: &Etiqueta - + Alt+A Alt+A @@ -2330,12 +2340,12 @@ This label turns red, if the priority is smaller than "medium". Mensaje: - + Form Formulario - + Enter a label for this address to add it to your address book Ingrese una etiqueta para esta dirección para agregarlo en su libreta de direcciones. @@ -2356,17 +2366,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2615,22 +2620,47 @@ This label turns red, if the priority is smaller than "medium". - + Source - + Generated in CoinBase - - Generated, PoS + + MINED - POS - + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From @@ -2749,10 +2779,6 @@ This label turns red, if the priority is smaller than "medium". Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - Información - Amount @@ -2782,12 +2808,7 @@ This label turns red, if the priority is smaller than "medium". Este panel muestras una descripción detallada de la transacción - - View Attachment - - - - + Execute Contract @@ -2796,21 +2817,11 @@ This label turns red, if the priority is smaller than "medium". C&lose Cerrar - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Fecha @@ -2883,7 +2894,7 @@ This label turns red, if the priority is smaller than "medium". Generado pero no aprovado - + Received with Recivido con @@ -2903,32 +2914,42 @@ This label turns red, if the priority is smaller than "medium". Pagar a si mismo - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (n/a) - + Transaction status. Hover over this field to show number of confirmations. @@ -3125,7 +3146,7 @@ This label turns red, if the priority is smaller than "medium". VotingChartDialog - + Poll Results @@ -3269,7 +3290,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3302,7 +3323,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3310,7 +3331,7 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: Opciones: @@ -3325,27 +3346,27 @@ This label turns red, if the priority is smaller than "medium". Cargando indice de bloques... - + To use the %s option - + Loading wallet... Cargando billetera... - + Done loading Carga completa - + Error Error - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -3392,7 +3413,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Boinc Mining @@ -3402,7 +3423,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error obtaining next project. Error 06172014. @@ -3442,12 +3463,32 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -3507,7 +3548,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + List commands Lista de comandos @@ -3522,7 +3563,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + This help message @@ -3557,12 +3598,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3572,12 +3613,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Allow DNS lookups for -addnode, -seednode and -connect - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3587,7 +3628,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Add a node to connect to and attempt to keep the connection open @@ -3682,6 +3723,16 @@ If the file does not exist, create it with owner-readable-only file permissions. Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3752,6 +3803,11 @@ If the file does not exist, create it with owner-readable-only file permissions. ERROR + + + Entire balance reserved + + Expires @@ -3807,11 +3863,6 @@ If the file does not exist, create it with owner-readable-only file permissions. Message - - - Messate Type - - Miner: @@ -3848,12 +3899,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - No coins; - - - - + Offline; @@ -3863,12 +3909,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3903,17 +3944,17 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -3923,27 +3964,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + 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: 5000) @@ -3953,7 +3994,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Use UPnP to map the listening port (default: 1 when listening) @@ -3963,12 +4004,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) @@ -3978,7 +4019,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Run in the background as a daemon and accept commands @@ -3988,7 +4029,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Output extra debugging information. Implies all other -debug* options @@ -3998,7 +4039,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Prepend debug output with timestamp @@ -4028,7 +4069,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -4038,12 +4079,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Send commands to node running on <ip> (default: 127.0.0.1) - + Execute command when the best block changes (%s in cmd is replaced by block hash) @@ -4053,12 +4094,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Require a confirmations for change (default: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -4068,7 +4109,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Upgrade wallet to latest format @@ -4083,12 +4124,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Attempt to recover private keys from a corrupt wallet.dat - + How many blocks to check at startup (default: 2500, 0 = all) @@ -4103,12 +4144,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Block creation options: - + Set minimum block size in bytes (default: 0) @@ -4118,12 +4159,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -4143,17 +4184,17 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid amount for -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - + Invalid amount for -mininput=<amount>: '%s' @@ -4163,22 +4204,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4188,10 +4229,15 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4208,7 +4254,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Unknown -socks proxy version requested: %i @@ -4218,7 +4264,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid -proxy address: '%s' @@ -4228,22 +4274,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Cannot resolve -bind address: '%s' - + Failed to listen on any port. Use -listen=0 if you want this. - + Cannot resolve -externalip address: '%s' - + Invalid amount for -reservebalance=<amount> @@ -4258,27 +4304,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete - + Error loading wallet.dat - + Cannot downgrade wallet @@ -4288,12 +4334,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Rescanning... - + Importing blockchain data file. @@ -4308,17 +4354,17 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4328,27 +4374,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount @@ -4358,12 +4404,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - + Warning: Disk space is low! diff --git a/src/qt/locale/bitcoin_es_UY.ts b/src/qt/locale/bitcoin_es_UY.ts index 3ebff6d1a7..5ca3c48f80 100644 --- a/src/qt/locale/bitcoin_es_UY.ts +++ b/src/qt/locale/bitcoin_es_UY.ts @@ -299,7 +299,7 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + &Overview &Vista previa @@ -415,28 +415,42 @@ This product includes software developed by the OpenSSL Project for use in the O - - &Neural Network + + Scraper: waiting on wallet to sync. - - Neural Network + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. - &New User Wizard + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. - - + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + New User Wizard - + &Voting @@ -446,7 +460,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Diagnostics @@ -521,24 +535,19 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Community - - &Advanced - - - - + [testnet] [prueba_de_red] - + Gridcoin client @@ -556,7 +565,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Last received block was generated %1. @@ -609,7 +618,7 @@ Address: %4 - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -619,13 +628,13 @@ Address: %4 - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. - + %n second(s) ago @@ -657,7 +666,7 @@ Address: %4 - + URI handling @@ -710,7 +719,7 @@ Address: %4 - + %n second(s) @@ -742,14 +751,10 @@ Address: %4 - + &Options... &Opciones... - - &Backup Wallet... - Respaldar Billetera - &Change Passphrase... @@ -761,7 +766,7 @@ Address: %4 Cambie la clave utilizada para el cifrado del monedero - + Wallet Billetera @@ -771,7 +776,7 @@ Address: %4 - + &Show / Hide Mostrar / Ocultar @@ -786,7 +791,7 @@ Address: %4 - + &File &Archivo @@ -796,22 +801,22 @@ Address: %4 &Configuracion - + &Help &Ayuda - + Up to date A la fecha - + Catching up... Ponerse al dia... - + Sent transaction Transaccion enviada @@ -821,16 +826,12 @@ Address: %4 Transacción entrante - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - El Monedero esta <b>cifrado</b> y actualmente <b>desbloqueado</b> - - - + Wallet is <b>encrypted</b> and currently <b>locked</b> El Monedero esta <b>cifrado</b> y actualmente <b>bloqueado</b> - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. @@ -838,7 +839,7 @@ Address: %4 ClientModel - + Network Alert @@ -1285,7 +1286,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1731,6 +1732,14 @@ This label turns red, if the priority is smaller than "medium". + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1797,7 +1806,7 @@ This label turns red, if the priority is smaller than "medium". - + &Information Información @@ -1819,7 +1828,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A @@ -1968,6 +1977,11 @@ This label turns red, if the priority is smaller than "medium". Clear console + + + &Scraper + + Yes @@ -1994,7 +2008,7 @@ This label turns red, if the priority is smaller than "medium". - + %1 B @@ -2291,22 +2305,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: A&Monto: - + Pay &To: Pagar &A: - + &Label: &Etiqueta: - + Alt+A Alt+A @@ -2321,12 +2335,12 @@ This label turns red, if the priority is smaller than "medium". Alt+P - + Form Formulario - + Enter a label for this address to add it to your address book Introduzca una etiqueta para esta dirección para añadirla a su libreta de direcciones @@ -2352,17 +2366,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2611,22 +2620,47 @@ This label turns red, if the priority is smaller than "medium". - + Source - + Generated in CoinBase - - Generated, PoS + + MINED - POS - + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From @@ -2745,10 +2779,6 @@ This label turns red, if the priority is smaller than "medium". Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - Información - Amount @@ -2778,12 +2808,7 @@ This label turns red, if the priority is smaller than "medium". - - View Attachment - - - - + Execute Contract @@ -2792,21 +2817,11 @@ This label turns red, if the priority is smaller than "medium". C&lose Cerrar - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Fecha @@ -2879,7 +2894,7 @@ This label turns red, if the priority is smaller than "medium". - + Received with @@ -2899,32 +2914,42 @@ This label turns red, if the priority is smaller than "medium". - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) - + Transaction status. Hover over this field to show number of confirmations. @@ -3121,7 +3146,7 @@ This label turns red, if the priority is smaller than "medium". VotingChartDialog - + Poll Results @@ -3265,7 +3290,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3298,7 +3323,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3306,12 +3331,12 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + To use the %s option - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -3358,7 +3383,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Boinc Mining @@ -3368,7 +3393,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error obtaining next project. Error 06172014. @@ -3408,12 +3433,32 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -3463,7 +3508,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + List commands @@ -3473,7 +3518,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + None @@ -3563,6 +3608,16 @@ If the file does not exist, create it with owner-readable-only file permissions. Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3623,6 +3678,11 @@ If the file does not exist, create it with owner-readable-only file permissions. ERROR + + + Entire balance reserved + + Expires @@ -3683,11 +3743,6 @@ If the file does not exist, create it with owner-readable-only file permissions. Message - - - Messate Type - - Miner: @@ -3724,12 +3779,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - No coins; - - - - + Offline; @@ -3744,12 +3794,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3824,12 +3869,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3839,12 +3884,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Allow DNS lookups for -addnode, -seednode and -connect - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3854,12 +3899,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Add a node to connect to and attempt to keep the connection open - + Connect only to the specified node(s) @@ -3869,22 +3914,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Specify your own public address - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -3894,27 +3939,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + 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: 5000) @@ -3924,7 +3969,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Use UPnP to map the listening port (default: 1 when listening) @@ -3934,12 +3979,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) @@ -3949,7 +3994,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Run in the background as a daemon and accept commands @@ -3959,7 +4004,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Output extra debugging information. Implies all other -debug* options @@ -3969,7 +4014,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Prepend debug output with timestamp @@ -3999,7 +4044,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -4009,12 +4054,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Send commands to node running on <ip> (default: 127.0.0.1) - + Execute command when the best block changes (%s in cmd is replaced by block hash) @@ -4024,12 +4069,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Require a confirmations for change (default: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -4039,7 +4084,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Upgrade wallet to latest format @@ -4054,12 +4099,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Attempt to recover private keys from a corrupt wallet.dat - + How many blocks to check at startup (default: 2500, 0 = all) @@ -4074,12 +4119,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Block creation options: - + Set minimum block size in bytes (default: 0) @@ -4089,12 +4134,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -4114,17 +4159,17 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid amount for -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - + Invalid amount for -mininput=<amount>: '%s' @@ -4134,22 +4179,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4159,7 +4204,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Weight @@ -4169,7 +4214,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Unknown -socks proxy version requested: %i @@ -4179,7 +4224,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid -proxy address: '%s' @@ -4189,22 +4234,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Cannot resolve -bind address: '%s' - + Failed to listen on any port. Use -listen=0 if you want this. - + Cannot resolve -externalip address: '%s' - + Invalid amount for -reservebalance=<amount> @@ -4229,20 +4274,25 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4254,12 +4304,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error loading wallet.dat - + Cannot downgrade wallet @@ -4269,12 +4319,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Rescanning... - + Importing blockchain data file. @@ -4294,22 +4344,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Done loading - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4319,27 +4369,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount @@ -4349,17 +4399,17 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - + Warning: Disk space is low! - + Error Error diff --git a/src/qt/locale/bitcoin_et.ts b/src/qt/locale/bitcoin_et.ts index 4a28011d42..a6f8da77f3 100644 --- a/src/qt/locale/bitcoin_et.ts +++ b/src/qt/locale/bitcoin_et.ts @@ -23,20 +23,6 @@ Distributed under the MIT/X11 software license, see the accompanying file COPYIN This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (https://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - - -This is experimental software. - -Distributed under the MIT/X11 software license, see the accompanying file COPYING 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. - ? -See on eksperimentaalne tarkvara.? -? -Levitatud MIT/X11 tarkvara litsentsi all, vaata kaasasolevat faili COPYING või http://www.opensource.org/licenses/mit-license.php? -? -Toode sisaldab OpenSSL Projekti all toodetud tarkvara, mis on kasutamiseks OpenSSL Toolkitis (http://www.openssl.org/) ja Eric Young'i poolt loodud krüptograafilist tarkvara (eay@cryptsoft.com) ning Thomas Bernard'i loodud UPnP tarkvara. - AddressBookPage @@ -313,12 +299,12 @@ Toode sisaldab OpenSSL Projekti all toodetud tarkvara, mis on kasutamiseks OpenS BitcoinGUI - + Gridcoin Gridcoin - + Send coins to a Gridcoin address @@ -394,28 +380,12 @@ Toode sisaldab OpenSSL Projekti all toodetud tarkvara, mis on kasutamiseks OpenS - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -425,7 +395,7 @@ Toode sisaldab OpenSSL Projekti all toodetud tarkvara, mis on kasutamiseks OpenS - + &Diagnostics @@ -490,24 +460,19 @@ Toode sisaldab OpenSSL Projekti all toodetud tarkvara, mis on kasutamiseks OpenS Ekspordi kuvatava vahelehe sisu faili - + &Community - - &Advanced - - - - + [testnet] [testnet] - + Gridcoin client @@ -517,7 +482,7 @@ Toode sisaldab OpenSSL Projekti all toodetud tarkvara, mis on kasutamiseks OpenS - + Last received block was generated %1. @@ -576,7 +541,7 @@ Aadress: %4? {1 ?} {4?} - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -586,18 +551,7 @@ Aadress: %4? {1 - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Kuupäev: %1? -Summa: %2? -Tüüp: %3? -Aadress: %4? - - - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. @@ -656,7 +610,7 @@ Aadress: %4? - + %n second(s) @@ -688,7 +642,7 @@ Aadress: %4? - + &Overview &Ülevaade @@ -718,7 +672,7 @@ Aadress: %4? Väljumine - + &Options... &Valikud... @@ -727,19 +681,11 @@ Aadress: %4? &Encrypt Wallet... &Krüpteeri Rahakott - - &Backup Wallet... - &Varunda Rahakott - &Change Passphrase... &Salafraasi muutmine - - Backup wallet to another location - Varunda rahakott teise asukohta - Change the passphrase used for wallet encryption @@ -761,12 +707,12 @@ Aadress: %4? &Kontrolli sõnumit... - + Wallet Rahakott - + &Send &Saada @@ -776,12 +722,12 @@ Aadress: %4? &Võta vastu - + &Show / Hide &Näita / Peida - + &File &Fail @@ -791,12 +737,12 @@ Aadress: %4? &Seaded - + &Help &Abi - + Processed %n block(s) of transaction history. Töödeldud %n plokk transaktsioonide ajaloost. @@ -841,12 +787,12 @@ Aadress: %4? Ajakohane - + Catching up... Jõuan järgi... - + Sent transaction Saadetud tehing @@ -856,16 +802,42 @@ Aadress: %4? Sisenev tehing - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Rahakott on <b>krüpteeritud</b> ning hetkel <b>avatud</b> + + Scraper: waiting on wallet to sync. + - + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + Wallet is <b>encrypted</b> and currently <b>locked</b> Rahakott on <b>krüpteeritud</b> ning hetkel <b>suletud</b> - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. @@ -873,7 +845,7 @@ Aadress: %4? ClientModel - + Network Alert Võrgu Häire @@ -955,10 +927,6 @@ Aadress: %4? Change: Vahetusraha: - - List mode - Loetelu režiim - Amount @@ -1324,7 +1292,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1542,10 +1510,6 @@ This label turns red, if the priority is smaller than "medium". Map port using &UPnP Suuna port &UPnP kaudu - - Proxy &IP: - Proxi &IP: - &Port: @@ -1774,6 +1738,14 @@ This label turns red, if the priority is smaller than "medium". sünkimata + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1835,7 +1807,7 @@ This label turns red, if the priority is smaller than "medium". RPCConsole - + @@ -1847,7 +1819,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A N/A @@ -1927,7 +1899,7 @@ This label turns red, if the priority is smaller than "medium". Ülevaateks võimalikest käsklustest trüki <b>help</b>. - + %1 B %1 B @@ -1962,12 +1934,12 @@ This label turns red, if the priority is smaller than "medium". - + Gridcoin - Debug Console - + Boost version @@ -2067,7 +2039,12 @@ This label turns red, if the priority is smaller than "medium". - + + &Scraper + + + + Welcome to the Gridcoin RPC console! @@ -2334,22 +2311,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: S&umma: - + Pay &To: Maksa &: - + &Label: &Märgis - + Alt+A Alt+A @@ -2369,12 +2346,12 @@ This label turns red, if the priority is smaller than "medium". Sõnum: - + Form Vorm - + Enter a label for this address to add it to your address book Aadressiraamatusse sisestamiseks märgista aadress @@ -2395,17 +2372,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2646,26 +2618,47 @@ This label turns red, if the priority is smaller than "medium". - + Source Allikas - Generated - Genereeritud + + Generated in CoinBase + - - Generated in CoinBase + + MINED - POS - - Generated, PoS + + MINED - POR - + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From Saatja @@ -2779,27 +2772,11 @@ This label turns red, if the priority is smaller than "medium". Transaction Inputs - - Transaction ID - Tehingu ID - Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - Informatsioon - - - Transaction - Tehing - - - Inputs - Sisendid - Amount @@ -2816,7 +2793,7 @@ This label turns red, if the priority is smaller than "medium". väär - + Open for %n more block(s) Avaneb %n bloki pärast @@ -2837,12 +2814,7 @@ This label turns red, if the priority is smaller than "medium". Paan kuvab tehingu detailid - - View Attachment - - - - + Execute Contract @@ -2851,21 +2823,11 @@ This label turns red, if the priority is smaller than "medium". C&lose S&ulge - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Kuupäev @@ -2933,7 +2895,7 @@ This label turns red, if the priority is smaller than "medium". Loodud, kuid aktsepteerimata - + Received with Saadud koos @@ -2953,32 +2915,42 @@ This label turns red, if the priority is smaller than "medium". Makse iseendale - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (n/a) - + Transaction status. Hover over this field to show number of confirmations. Tehingu staatus. Kinnituste arvu kuvamiseks liigu hiire noolega selle peale. @@ -3003,7 +2975,7 @@ This label turns red, if the priority is smaller than "medium". Jäägile lisatud või eemaldatud summa. - + Unconfirmed Kinnitamata @@ -3177,17 +3149,10 @@ This label turns red, if the priority is smaller than "medium". saaja - - UpgradeDialog - - Hide - Peida - - VotingChartDialog - + Poll Results @@ -3331,7 +3296,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3364,7 +3329,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... Saatmine... @@ -3372,12 +3337,12 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: Valikud: - + This help message Käesolev abitekst @@ -3412,12 +3377,12 @@ This label turns red, if the priority is smaller than "medium". Sea ühenduse timeout millisekundites (vaikeväärtus: 5000) - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3427,7 +3392,7 @@ This label turns red, if the priority is smaller than "medium". - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3437,7 +3402,7 @@ This label turns red, if the priority is smaller than "medium". Säilita vähemalt <n> ühendust peeridega (vaikeväärtus: 125) - + Connect only to the specified node(s) Ühendu ainult määratud node'i(de)ga @@ -3447,22 +3412,22 @@ This label turns red, if the priority is smaller than "medium". Peeri aadressi saamiseks ühendu korraks node'iga - + Specify your own public address Täpsusta enda avalik aadress - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) Ühenda ainult node'idega <net> võrgus (IPv4, IPv6 või Tor) - + Discover own IP address (default: 1 when listening and no -externalip) Leia oma IP aadress (vaikeväärtus: 1, kui kuulatakse ning puudub -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) Luba välisühendusi (vaikeväärtus: 1 kui puudub -proxy või -connect) @@ -3472,27 +3437,27 @@ This label turns red, if the priority is smaller than "medium". - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + Threshold for disconnecting misbehaving peers (default: 100) Ulakate peeride valulävi (vaikeväärtus: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Mitme sekundi pärast ulakad peerid tagasi võivad tulla (vaikeväärtus: 86400) - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 5000) Maksimaalne saamise puhver -connection kohta , <n>*1000 baiti (vaikeväärtus: 5000) @@ -3502,7 +3467,7 @@ This label turns red, if the priority is smaller than "medium". Maksimaalne saatmise puhver -connection kohta , <n>*1000 baiti (vaikeväärtus: 1000) - + Use UPnP to map the listening port (default: 1 when listening) Kasuta kuulatava pordi määramiseks UPnP ühendust (vaikeväärtus: 1, kui kuulatakse) @@ -3512,12 +3477,12 @@ This label turns red, if the priority is smaller than "medium". Kasuta kuulatava pordi määramiseks UPnP ühendust (vaikeväärtus: 0) - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) @@ -3527,7 +3492,7 @@ This label turns red, if the priority is smaller than "medium". Luba käsurea ning JSON-RPC käsklusi - + Run in the background as a daemon and accept commands Tööta taustal ning aktsepteeri käsklusi @@ -3537,7 +3502,7 @@ This label turns red, if the priority is smaller than "medium". Testvõrgu kasutamine - + Output extra debugging information. Implies all other -debug* options @@ -3547,7 +3512,7 @@ This label turns red, if the priority is smaller than "medium". - + Prepend debug output with timestamp @@ -3557,7 +3522,7 @@ This label turns red, if the priority is smaller than "medium". - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -3567,7 +3532,7 @@ This label turns red, if the priority is smaller than "medium". JSON-RPC ühenduste lubamine kindla IP pealt - + Send commands to node running on <ip> (default: 127.0.0.1) Saada käsklusi node'ile IP'ga <ip> (vaikeväärtus: 127.0.0.1) @@ -3577,7 +3542,7 @@ This label turns red, if the priority is smaller than "medium". - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -3587,7 +3552,7 @@ This label turns red, if the priority is smaller than "medium". - + Upgrade wallet to latest format Uuenda rahakott uusimasse vormingusse @@ -3602,7 +3567,7 @@ This label turns red, if the priority is smaller than "medium". Otsi ploki jadast rahakoti kadunud tehinguid - + Attempt to recover private keys from a corrupt wallet.dat Püüa vigasest wallet.dat failist taastada turvavõtmed @@ -3697,6 +3662,16 @@ This label turns red, if the priority is smaller than "medium". Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3757,6 +3732,11 @@ This label turns red, if the priority is smaller than "medium". ERROR + + + Entire balance reserved + + Expires @@ -3827,11 +3807,6 @@ This label turns red, if the priority is smaller than "medium". Message Sõnum - - - Messate Type - - Miner: @@ -3868,12 +3843,7 @@ This label turns red, if the priority is smaller than "medium". - - No coins; - - - - + Offline; @@ -3883,12 +3853,7 @@ This label turns red, if the priority is smaller than "medium". - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3913,12 +3878,12 @@ This label turns red, if the priority is smaller than "medium". - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) SSL valikud: (vaata Bitcoini Wikist või SSL sätete juhendist) @@ -3938,17 +3903,17 @@ This label turns red, if the priority is smaller than "medium". Serveri privaatvõti (vaikeväärtus: server.pem) - + Invalid amount for -paytxfee=<amount>: '%s' -paytxfee=<amount> jaoks vigane kogus: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. Hoiatus: -paytxfee on seatud väga kõrgeks! See on sinu poolt makstav tehingu lisatasu. - + Invalid amount for -mininput=<amount>: '%s' @@ -3958,22 +3923,22 @@ This label turns red, if the priority is smaller than "medium". - + Wallet %s resides outside data directory %s. Rahakott %s paikenb väljaspool kataloogi %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -3983,10 +3948,15 @@ This label turns red, if the priority is smaller than "medium". Hoiatus: toimus wallet.dat faili andmete päästmine! Originaal wallet.dat nimetati kaustas %s ümber wallet.{ajatempel}.bak'iks, jäägi või tehingute ebakõlade puhul tuleks teha backup'ist taastamine. - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4003,17 +3973,17 @@ This label turns red, if the priority is smaller than "medium". wallet.dat fail on katki, päästmine ebaõnnestus - + Unknown -socks proxy version requested: %i Küsitud tundmatu -socks proxi versioon: %i - + Invalid -tor address: '%s' - + Cannot resolve -bind address: '%s' Tundmatu -bind aadress: '%s' @@ -4023,7 +3993,7 @@ This label turns red, if the priority is smaller than "medium". Tundmatu -externalip aadress: '%s' - + Invalid amount for -reservebalance=<amount> @@ -4038,22 +4008,22 @@ This label turns red, if the priority is smaller than "medium". Viga wallet.dat käivitamisel. Vigane rahakkott - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. Hoiatus: ilmnes tõrge wallet.dat faili lugemisel! Võtmed on terved, kuid tehingu andmed või aadressiraamatu kirjed võivad olla kadunud või vigased. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin Viga faili wallet.dat laadimisel: rahakott vajab Gridcoin'i uuemat versiooni. - + Wallet needed to be rewritten: restart Gridcoin to complete Rahakott on vaja üle kirjutada: käivita Gridcoin uuesti toimingu lõpetamiseks - + Error loading wallet.dat Viga wallet.dat käivitamisel @@ -4073,17 +4043,17 @@ This label turns red, if the priority is smaller than "medium". - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) Selle arvutiga ei ole võimalik siduda %s külge (katse nurjus %d, %s tõttu) - + Error: Wallet locked, unable to create transaction @@ -4093,46 +4063,42 @@ This label turns red, if the priority is smaller than "medium". - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... Saatmine... - + 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. - + Invalid amount Kehtetu summa - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - Warning: This version is obsolete, upgrade required! - Hoiatus: versioon on aegunud, uuendus on nõutav! - - - + Warning: Disk space is low! - + Acceptable ciphers (default: TLSv1.2+HIGH:TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!3DES:@STRENGTH) @@ -4157,7 +4123,7 @@ This label turns red, if the priority is smaller than "medium". Blokeeri loomise valikud: - + Boinc Mining @@ -4167,7 +4133,7 @@ This label turns red, if the priority is smaller than "medium". - + Error obtaining next project. Error 06172014. @@ -4207,12 +4173,32 @@ This label turns red, if the priority is smaller than "medium". - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -4297,7 +4283,7 @@ This label turns red, if the priority is smaller than "medium". JSON-RPC ühenduste salasõna - + Execute command when the best block changes (%s in cmd is replaced by block hash) Käivita käsklus, kui parim plokk muutub (käskluse %s asendatakse ploki hash'iga) @@ -4307,12 +4293,12 @@ This label turns red, if the priority is smaller than "medium". -addnode, -seednode ja -connect tohivad kasutada DNS lookup'i - + To use the %s option %s valiku kasutamine - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -4346,12 +4332,12 @@ If the file does not exist, create it with owner-readable-only file permissions. Kui seda faili ei ole, loo see ainult-omanikule-lugemiseks faili õigustes. - + Gridcoin version - + Usage: Kasutus: @@ -4361,7 +4347,7 @@ Kui seda faili ei ole, loo see ainult-omanikule-lugemiseks faili õigustes. - + List commands Käskluste loetelu @@ -4386,12 +4372,12 @@ Kui seda faili ei ole, loo see ainult-omanikule-lugemiseks faili õigustes.Vigane -proxi aadress: '%s' - + Unknown network specified in -onlynet: '%s' Kirjeldatud tundmatu võrgustik -onlynet'is: '%s' - + Insufficient funds Liiga suur summa @@ -4401,17 +4387,17 @@ Kui seda faili ei ole, loo see ainult-omanikule-lugemiseks faili õigustes.Klotside indeksi laadimine... - + Add a node to connect to and attempt to keep the connection open Lisa node ning hoia ühendus avatud - + Loading wallet... Rahakoti laadimine... - + Cannot downgrade wallet Rahakoti vanandamine ebaõnnestus @@ -4421,17 +4407,17 @@ Kui seda faili ei ole, loo see ainult-omanikule-lugemiseks faili õigustes.Tõrge vaikimisi aadressi kirjutamisel - + Rescanning... Üleskaneerimine... - + Done loading Laetud - + Error Tõrge diff --git a/src/qt/locale/bitcoin_eu_ES.ts b/src/qt/locale/bitcoin_eu_ES.ts index 6355b9c507..6b66401b7b 100644 --- a/src/qt/locale/bitcoin_eu_ES.ts +++ b/src/qt/locale/bitcoin_eu_ES.ts @@ -299,7 +299,7 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + Wallet @@ -309,7 +309,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Overview &Gainbegiratu @@ -425,28 +425,42 @@ This product includes software developed by the OpenSSL Project for use in the O - - &Neural Network + + Scraper: waiting on wallet to sync. - - Neural Network + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. - &New User Wizard + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. - - + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + New User Wizard - + &Voting @@ -456,7 +470,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Diagnostics @@ -541,24 +555,19 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Community - - &Advanced - - - - + [testnet] [testnet] - + Gridcoin client @@ -576,7 +585,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Last received block was generated %1. @@ -629,7 +638,7 @@ Address: %4 - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -639,13 +648,13 @@ Address: %4 - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. - + %n second(s) ago @@ -677,7 +686,7 @@ Address: %4 - + URI handling @@ -730,7 +739,7 @@ Address: %4 - + %n second(s) @@ -762,7 +771,7 @@ Address: %4 - + &Options... &Aukerak... @@ -782,7 +791,7 @@ Address: %4 Aldatu zorroa enkriptatzeko erabilitako pasahitza - + &File &Artxiboa @@ -792,22 +801,22 @@ Address: %4 &Ezarpenak - + &Help &Laguntza - + Up to date Egunean - + Catching up... Eguneratzen... - + Sent transaction Bidalitako transakzioa @@ -817,16 +826,12 @@ Address: %4 Sarrerako transakzioa - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Zorroa <b>enkriptatuta</b> eta <b>desblokeatuta</b> dago une honetan - - - + Wallet is <b>encrypted</b> and currently <b>locked</b> Zorroa <b>enkriptatuta</b> eta <b>blokeatuta</b> dago une honetan - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. @@ -834,7 +839,7 @@ Address: %4 ClientModel - + Network Alert @@ -1281,7 +1286,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1727,6 +1732,14 @@ This label turns red, if the priority is smaller than "medium". + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1793,7 +1806,7 @@ This label turns red, if the priority is smaller than "medium". - + &Information @@ -1815,7 +1828,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A @@ -1964,6 +1977,11 @@ This label turns red, if the priority is smaller than "medium". Clear console + + + &Scraper + + Yes @@ -1990,7 +2008,7 @@ This label turns red, if the priority is smaller than "medium". - + %1 B @@ -2287,22 +2305,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: K&opurua: - + Pay &To: Ordaindu &honi: - + &Label: &Etiketa: - + Alt+A Alt+A @@ -2328,12 +2346,12 @@ This label turns red, if the priority is smaller than "medium". Sartu etiketa bat helbide honetarako, eta gehitu zure helbide-liburuan - + Form Inprimakia - + The address to send the payment to (e.g. Sjz75uKHzUQJnSdzvpiigEGxseKkDhQToX) @@ -2348,17 +2366,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2589,12 +2602,42 @@ This label turns red, if the priority is smaller than "medium". - + Source - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From @@ -2714,7 +2757,7 @@ This label turns red, if the priority is smaller than "medium". - + , has not been successfully broadcast yet , ez da arrakastaz emititu oraindik @@ -2737,12 +2780,7 @@ This label turns red, if the priority is smaller than "medium". - - Generated, PoS - - - - + unknown ezezaguna @@ -2751,10 +2789,6 @@ This label turns red, if the priority is smaller than "medium". Message Mezua - - Transaction - Transakzioaren - Amount @@ -2774,12 +2808,7 @@ This label turns red, if the priority is smaller than "medium". Panel honek transakzioaren deskribapen xehea erakusten du - - View Attachment - - - - + Execute Contract @@ -2788,21 +2817,11 @@ This label turns red, if the priority is smaller than "medium". C&lose &Itxi - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Data @@ -2860,37 +2879,17 @@ This label turns red, if the priority is smaller than "medium". - + Received from - - Mined - DPOR - - - - - Minted - (Local) DPOR - - - - - Mined - PoR - - - - - Mined - Interest - - - - + Destination address of transaction. Transakzioaren xede-helbidea. - + Open until %1 Zabalik %1 arte @@ -2905,7 +2904,7 @@ This label turns red, if the priority is smaller than "medium". Sortua, baina ez onartua - + Received with Jasota honekin: @@ -2920,12 +2919,42 @@ This label turns red, if the priority is smaller than "medium". Ordainketa zeure buruari - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (n/a) - + Transaction status. Hover over this field to show number of confirmations. Transakzioaren egoera. Pasatu sagua gainetik konfirmazio kopurua ikusteko. @@ -3117,7 +3146,7 @@ This label turns red, if the priority is smaller than "medium". VotingChartDialog - + Poll Results @@ -3261,7 +3290,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3294,7 +3323,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3302,12 +3331,12 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + To use the %s option - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -3322,12 +3351,12 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo - + Error - + An error occurred while setting up the RPC port %u for listening on IPv6, falling back to IPv4: %s @@ -3359,7 +3388,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Boinc Mining @@ -3369,7 +3398,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error obtaining next project. Error 06172014. @@ -3409,12 +3438,32 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -3464,7 +3513,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + List commands Komandoen lista @@ -3474,7 +3523,7 @@ If the file does not exist, create it with owner-readable-only file permissions. Laguntza komando batean - + None @@ -3564,6 +3613,16 @@ If the file does not exist, create it with owner-readable-only file permissions. Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3624,6 +3683,11 @@ If the file does not exist, create it with owner-readable-only file permissions. ERROR + + + Entire balance reserved + + Expires @@ -3684,11 +3748,6 @@ If the file does not exist, create it with owner-readable-only file permissions. Message Mezua - - - Messate Type - - Miner: @@ -3725,12 +3784,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - No coins; - - - - + Offline; @@ -3745,12 +3799,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3825,12 +3874,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3840,12 +3889,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Allow DNS lookups for -addnode, -seednode and -connect - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3855,12 +3904,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Add a node to connect to and attempt to keep the connection open - + Connect only to the specified node(s) @@ -3870,22 +3919,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Specify your own public address - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -3895,27 +3944,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + 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: 5000) @@ -3925,7 +3974,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Use UPnP to map the listening port (default: 1 when listening) @@ -3935,12 +3984,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) @@ -3950,7 +3999,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Run in the background as a daemon and accept commands @@ -3960,7 +4009,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Output extra debugging information. Implies all other -debug* options @@ -3970,7 +4019,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Prepend debug output with timestamp @@ -4000,7 +4049,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -4010,12 +4059,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Send commands to node running on <ip> (default: 127.0.0.1) - + Execute command when the best block changes (%s in cmd is replaced by block hash) @@ -4025,12 +4074,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Require a confirmations for change (default: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -4040,7 +4089,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Upgrade wallet to latest format @@ -4055,12 +4104,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Attempt to recover private keys from a corrupt wallet.dat - + How many blocks to check at startup (default: 2500, 0 = all) @@ -4075,12 +4124,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Block creation options: - + Set minimum block size in bytes (default: 0) @@ -4090,12 +4139,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -4115,17 +4164,17 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid amount for -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - + Invalid amount for -mininput=<amount>: '%s' @@ -4135,22 +4184,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4160,7 +4209,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Weight @@ -4170,7 +4219,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Unknown -socks proxy version requested: %i @@ -4180,7 +4229,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid -proxy address: '%s' @@ -4190,22 +4239,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Cannot resolve -bind address: '%s' - + Failed to listen on any port. Use -listen=0 if you want this. - + Cannot resolve -externalip address: '%s' - + Invalid amount for -reservebalance=<amount> @@ -4230,20 +4279,25 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4255,12 +4309,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error loading wallet.dat - + Cannot downgrade wallet @@ -4270,12 +4324,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Rescanning... Birbilatzen... - + Importing blockchain data file. @@ -4295,22 +4349,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Done loading Zamaketa amaitua - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4320,27 +4374,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount @@ -4350,12 +4404,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - + Warning: Disk space is low! diff --git a/src/qt/locale/bitcoin_fa.ts b/src/qt/locale/bitcoin_fa.ts index 5653c1c8ca..f43b609c65 100644 --- a/src/qt/locale/bitcoin_fa.ts +++ b/src/qt/locale/bitcoin_fa.ts @@ -299,12 +299,12 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + Sign &message... &امضای پیام... - + &Overview &بررسی اجمالی @@ -400,7 +400,7 @@ This product includes software developed by the OpenSSL Project for use in the O خروج از برنامه - + &Options... &تنظیمات... @@ -414,19 +414,11 @@ This product includes software developed by the OpenSSL Project for use in the O Encrypt or decrypt wallet - - &Backup Wallet... - &پیشتیبان‌گیری از کیف پول... - &Change Passphrase... &تغییر گذرواژه... - - Backup wallet to another location - تهیهٔ پشتیبان از کیف پول در یک مکان دیگر - Change the passphrase used for wallet encryption @@ -478,7 +470,7 @@ This product includes software developed by the OpenSSL Project for use in the O با&زبینی پیام... - + Wallet کیف پول @@ -488,7 +480,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Send &ارسال @@ -508,28 +500,12 @@ This product includes software developed by the OpenSSL Project for use in the O - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -539,7 +515,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Diagnostics @@ -569,14 +545,14 @@ This product includes software developed by the OpenSSL Project for use in the O - + [testnet] آزمایش شبکه - + Gridcoin client @@ -586,7 +562,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Last received block was generated %1. @@ -639,7 +615,7 @@ Address: %4 - + Wallet is <b>encrypted</b> and currently %1 @@ -686,7 +662,7 @@ Address: %4 - + %n second(s) @@ -724,7 +700,37 @@ Address: %4 - + + Scraper: waiting on wallet to sync. + + + + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + &File &فایل @@ -739,17 +745,12 @@ Address: %4 - - &Advanced - - - - + &Help &کمک‌رسانی - + Processed %n block(s) of transaction history. پردازش %n بلاک از تاریخچه ی تراکنش ها @@ -789,12 +790,12 @@ Address: %4 وضعیت به‌روز - + Catching up... به‌روز رسانی... - + Sent transaction تراکنش ارسال شد @@ -804,7 +805,7 @@ Address: %4 تراکنش دریافت شد - + URI handling @@ -815,17 +816,13 @@ Address: %4 URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. - - 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 occurred. Gridcoin can no longer continue safely and will quit. @@ -833,7 +830,7 @@ Address: %4 ClientModel - + Network Alert @@ -915,10 +912,6 @@ Address: %4 Priority - - List mode - مدل لیست - Amount @@ -1284,7 +1277,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1502,10 +1495,6 @@ This label turns red, if the priority is smaller than "medium". Map port using &UPnP نگاشت درگاه شبکه با استفاده از پروتکل &UPnP - - Proxy &IP: - آ&ی‌پی پراکسی: - &Port: @@ -1734,6 +1723,14 @@ This label turns red, if the priority is smaller than "medium". + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1800,7 +1797,7 @@ This label turns red, if the priority is smaller than "medium". - + Boost version @@ -1817,7 +1814,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A ناموجود @@ -1907,7 +1904,12 @@ This label turns red, if the priority is smaller than "medium". - + + &Scraper + + + + &Information &اطلاعات @@ -1992,7 +1994,7 @@ This label turns red, if the priority is smaller than "medium". برای نمایش یک مرور کلی از دستورات ممکن، عبارت <b>help</b> را بنویسید. - + %1 B %1 بایت @@ -2027,7 +2029,7 @@ This label turns red, if the priority is smaller than "medium". - + Welcome to the Gridcoin RPC console! @@ -2294,22 +2296,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: A&مبلغ : - + Pay &To: پرداخ&ت به: - + &Label: &برچسب: - + Alt+A Alt+A @@ -2329,12 +2331,12 @@ This label turns red, if the priority is smaller than "medium". پیام: - + Form فرم - + Enter a label for this address to add it to your address book @@ -2355,17 +2357,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2612,22 +2609,47 @@ This label turns red, if the priority is smaller than "medium". - + Source - + Generated in CoinBase - - Generated, PoS + + MINED - POS - + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From @@ -2745,10 +2767,6 @@ This label turns red, if the priority is smaller than "medium". Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - اطلاعات - Amount @@ -2778,12 +2796,7 @@ This label turns red, if the priority is smaller than "medium". این پانل شامل توصیف کاملی از جزئیات تراکنش است - - View Attachment - - - - + Execute Contract @@ -2792,21 +2805,11 @@ This label turns red, if the priority is smaller than "medium". C&lose &بستن - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date تاریخ @@ -2878,7 +2881,7 @@ This label turns red, if the priority is smaller than "medium". - + Received with @@ -2898,32 +2901,42 @@ This label turns red, if the priority is smaller than "medium". - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) - + Transaction status. Hover over this field to show number of confirmations. @@ -3117,17 +3130,10 @@ This label turns red, if the priority is smaller than "medium". - - UpgradeDialog - - Hide - پنهان کردن - - VotingChartDialog - + Poll Results @@ -3271,7 +3277,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3304,7 +3310,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3312,12 +3318,12 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: گزینه‌ها: - + This help message @@ -3352,12 +3358,12 @@ This label turns red, if the priority is smaller than "medium". - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3367,7 +3373,7 @@ This label turns red, if the priority is smaller than "medium". - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3377,7 +3383,7 @@ This label turns red, if the priority is smaller than "medium". - + Connect only to the specified node(s) @@ -3387,22 +3393,22 @@ This label turns red, if the priority is smaller than "medium". اتصال به یک گره برای دریافت آدرس‌های همتا و قطع اتصال پس از اتمام عملیات - + Specify your own public address آدرس عمومی خود را مشخص کنید - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -3412,27 +3418,27 @@ This label turns red, if the priority is smaller than "medium". - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + 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: 5000) @@ -3442,7 +3448,7 @@ This label turns red, if the priority is smaller than "medium". - + Use UPnP to map the listening port (default: 1 when listening) @@ -3452,12 +3458,12 @@ This label turns red, if the priority is smaller than "medium". - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) @@ -3467,7 +3473,7 @@ This label turns red, if the priority is smaller than "medium". پذیرش دستورات خط فرمان و دستورات JSON-RPC - + Run in the background as a daemon and accept commands اجرا در پشت زمینه به‌صورت یک سرویس و پذیرش دستورات @@ -3477,7 +3483,7 @@ This label turns red, if the priority is smaller than "medium". - + Output extra debugging information. Implies all other -debug* options @@ -3487,7 +3493,7 @@ This label turns red, if the priority is smaller than "medium". - + Prepend debug output with timestamp @@ -3497,7 +3503,7 @@ This label turns red, if the priority is smaller than "medium". - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -3507,7 +3513,7 @@ This label turns red, if the priority is smaller than "medium". - + Send commands to node running on <ip> (default: 127.0.0.1) @@ -3517,7 +3523,7 @@ This label turns red, if the priority is smaller than "medium". - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -3527,7 +3533,7 @@ This label turns red, if the priority is smaller than "medium". - + Upgrade wallet to latest format @@ -3542,7 +3548,7 @@ This label turns red, if the priority is smaller than "medium". - + Attempt to recover private keys from a corrupt wallet.dat @@ -3637,6 +3643,16 @@ This label turns red, if the priority is smaller than "medium". Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3697,6 +3713,11 @@ This label turns red, if the priority is smaller than "medium". ERROR + + + Entire balance reserved + + Expires @@ -3767,11 +3788,6 @@ This label turns red, if the priority is smaller than "medium". Message - - - Messate Type - - Miner: @@ -3808,12 +3824,7 @@ This label turns red, if the priority is smaller than "medium". - - No coins; - - - - + Offline; @@ -3823,12 +3834,7 @@ This label turns red, if the priority is smaller than "medium". - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3853,12 +3859,12 @@ This label turns red, if the priority is smaller than "medium". - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -3878,17 +3884,17 @@ This label turns red, if the priority is smaller than "medium". - + Invalid amount for -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - + Invalid amount for -mininput=<amount>: '%s' @@ -3898,22 +3904,22 @@ This label turns red, if the priority is smaller than "medium". - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -3923,10 +3929,15 @@ This label turns red, if the priority is smaller than "medium". - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -3943,17 +3954,17 @@ This label turns red, if the priority is smaller than "medium". - + Unknown -socks proxy version requested: %i - + Invalid -tor address: '%s' - + Cannot resolve -bind address: '%s' @@ -3963,7 +3974,7 @@ This label turns red, if the priority is smaller than "medium". - + Invalid amount for -reservebalance=<amount> @@ -3978,22 +3989,22 @@ This label turns red, if the priority is smaller than "medium". - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete - + Error loading wallet.dat @@ -4013,17 +4024,17 @@ This label turns red, if the priority is smaller than "medium". - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4033,42 +4044,42 @@ This label turns red, if the priority is smaller than "medium". - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - + Warning: Disk space is low! - + Acceptable ciphers (default: TLSv1.2+HIGH:TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!3DES:@STRENGTH) @@ -4093,7 +4104,7 @@ This label turns red, if the priority is smaller than "medium". بستن گزینه ایجاد - + Boinc Mining @@ -4103,7 +4114,7 @@ This label turns red, if the priority is smaller than "medium". - + Error obtaining next project. Error 06172014. @@ -4143,12 +4154,32 @@ This label turns red, if the priority is smaller than "medium". - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -4233,7 +4264,7 @@ This label turns red, if the priority is smaller than "medium". JSON-RPC عبارت عبور برای ارتباطات - + Execute command when the best block changes (%s in cmd is replaced by block hash) زمانی که بهترین بلاک تغییر کرد، دستور را اجرا کن (%s در cmd با block hash جایگزین شده است) @@ -4243,12 +4274,12 @@ This label turns red, if the priority is smaller than "medium". به DNS اجازه بده تا برای addnode ، seednode و اتصال جستجو کند - + To use the %s option - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -4280,12 +4311,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Gridcoin version - + Usage: استفاده: @@ -4295,7 +4326,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + List commands @@ -4320,12 +4351,12 @@ If the file does not exist, create it with owner-readable-only file permissions. آدرس پراکسی اشتباه %s - + Unknown network specified in -onlynet: '%s' شبکه مشخص شده غیرقابل شناسایی در onlynet: '%s' - + Insufficient funds بود جه نا کافی @@ -4335,17 +4366,17 @@ If the file does not exist, create it with owner-readable-only file permissions. بار گیری شاخص بلوک - + Add a node to connect to and attempt to keep the connection open به اتصال یک گره اضافه کنید و اتصال را باز نگاه دارید - + Loading wallet... بار گیری والت - + Cannot downgrade wallet امکان تنزل نسخه در wallet وجود ندارد @@ -4355,17 +4386,17 @@ If the file does not exist, create it with owner-readable-only file permissions. آدرس پیش فرض قابل ذخیره نیست - + Rescanning... اسکان مجدد - + Done loading بار گیری انجام شده است - + Error خطا diff --git a/src/qt/locale/bitcoin_fa_IR.ts b/src/qt/locale/bitcoin_fa_IR.ts index bdcf58dea6..96adf001f9 100644 --- a/src/qt/locale/bitcoin_fa_IR.ts +++ b/src/qt/locale/bitcoin_fa_IR.ts @@ -299,17 +299,17 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + Sign &message... امضا و پیام - + Gridcoin - + &Overview و بازبینی @@ -420,28 +420,42 @@ This product includes software developed by the OpenSSL Project for use in the O - - &Neural Network + + Scraper: waiting on wallet to sync. - - Neural Network + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. - &New User Wizard + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. - - + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + New User Wizard - + &Voting @@ -451,7 +465,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Diagnostics @@ -496,24 +510,19 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Community - - &Advanced - - - - + [testnet] [testnet] - + Gridcoin client @@ -530,7 +539,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Last received block was generated %1. @@ -583,7 +592,7 @@ Address: %4 - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -593,13 +602,13 @@ Address: %4 - + URI handling - + %n second(s) ago @@ -627,7 +636,7 @@ Address: %4 - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. @@ -680,7 +689,7 @@ Address: %4 - + %n second(s) @@ -708,7 +717,7 @@ Address: %4 - + &Options... و انتخابها @@ -727,19 +736,11 @@ Address: %4 Encrypt or decrypt wallet - - &Backup Wallet... - و گرفتن نسخه پیشتیبان از wallet - &Change Passphrase... تغییر رمز/پَس فرِیز - - Backup wallet to another location - گرفتن نسخه پیشتیبان در آدرسی دیگر - Change the passphrase used for wallet encryption @@ -756,17 +757,17 @@ Address: %4 - + Wallet کیف پول - + &Send و ارسال - + &Show / Hide &نمایش/ عدم نمایش و @@ -781,7 +782,7 @@ Address: %4 - + &File و فایل @@ -791,22 +792,22 @@ Address: %4 و تنظیمات - + &Help و راهنما - + Up to date روزآمد - + Catching up... در حال روزآمد سازی.. - + Sent transaction ارسال تراکنش @@ -816,16 +817,12 @@ Address: %4 تراکنش دریافتی - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - wallet رمزگذاری شد و در حال حاضر از حالت قفل در آمده است - - - + Wallet is <b>encrypted</b> and currently <b>locked</b> wallet رمزگذاری شد و در حال حاضر قفل است - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. @@ -833,7 +830,7 @@ Address: %4 ClientModel - + Network Alert @@ -1280,7 +1277,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1726,6 +1723,14 @@ This label turns red, if the priority is smaller than "medium". + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1787,7 +1792,7 @@ This label turns red, if the priority is smaller than "medium". RPCConsole - + Client version ویرایش کنسول RPC @@ -1807,12 +1812,12 @@ This label turns red, if the priority is smaller than "medium". تعداد زنجیره های حاضر - + Gridcoin - Debug Console - + &Information @@ -1834,7 +1839,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A @@ -1963,6 +1968,11 @@ This label turns red, if the priority is smaller than "medium". Clear console + + + &Scraper + + Yes @@ -1989,7 +1999,7 @@ This label turns red, if the priority is smaller than "medium". - + %1 B @@ -2286,22 +2296,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: و میزان وجه - + Pay &To: پرداخت و به چه کسی - + &Label: و برچسب - + Paste address from clipboard آدرس را بر کلیپ بورد کپی کنید @@ -2311,12 +2321,12 @@ This label turns red, if the priority is smaller than "medium". پیام: - + Form فرم - + Enter a label for this address to add it to your address book @@ -2347,17 +2357,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2555,12 +2560,42 @@ This label turns red, if the priority is smaller than "medium". - + Source - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From @@ -2573,7 +2608,7 @@ This label turns red, if the priority is smaller than "medium". - + Open for %n more block(s) @@ -2627,12 +2662,7 @@ This label turns red, if the priority is smaller than "medium". - - Generated, PoS - - - - + unknown @@ -2766,12 +2796,7 @@ This label turns red, if the priority is smaller than "medium". این بخش جزئیات تراکنش را نشان می دهد - - View Attachment - - - - + Execute Contract @@ -2780,26 +2805,16 @@ This label turns red, if the priority is smaller than "medium". C&lose بستن - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Unconfirmed - + Received from @@ -2809,7 +2824,7 @@ This label turns red, if the priority is smaller than "medium". - + Date تاریخ @@ -2876,7 +2891,7 @@ This label turns red, if the priority is smaller than "medium". - + Received with @@ -2886,32 +2901,42 @@ This label turns red, if the priority is smaller than "medium". - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) - + Transaction status. Hover over this field to show number of confirmations. @@ -3105,17 +3130,10 @@ This label turns red, if the priority is smaller than "medium". - - UpgradeDialog - - Hide - پنهان کردن - - VotingChartDialog - + Poll Results @@ -3259,7 +3277,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3292,7 +3310,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3300,17 +3318,17 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: انتخابها: - + Specify data directory دایرکتوری داده را مشخص کن - + Accept command line and JSON-RPC commands command line و JSON-RPC commands را قبول کنید @@ -3405,6 +3423,16 @@ This label turns red, if the priority is smaller than "medium". Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3465,6 +3493,11 @@ This label turns red, if the priority is smaller than "medium". ERROR + + + Entire balance reserved + + Expires @@ -3520,11 +3553,6 @@ This label turns red, if the priority is smaller than "medium". Message - - - Messate Type - - Miner: @@ -3561,12 +3589,7 @@ This label turns red, if the priority is smaller than "medium". - - No coins; - - - - + Offline; @@ -3576,12 +3599,7 @@ This label turns red, if the priority is smaller than "medium". - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3661,12 +3679,12 @@ This label turns red, if the priority is smaller than "medium". رمز برای ارتباطاتِ JSON-RPC - + Execute command when the best block changes (%s in cmd is replaced by block hash) دستور را وقتی بهترین بلاک تغییر کرد اجرا کن (%s در دستور توسط block hash جایگزین شده است) - + Loading addresses... لود شدن آدرسها.. @@ -3681,12 +3699,12 @@ This label turns red, if the priority is smaller than "medium". لود شدن نمایه بلاکها.. - + To use the %s option - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -3706,12 +3724,12 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo یک گره برای اتصال اضافه کنید و تلاش کنید تا اتصال را باز نگاه دارید - + Loading wallet... wallet در حال لود شدن است... - + Cannot downgrade wallet قابلیت برگشت به نسخه قبلی برای wallet امکان پذیر نیست @@ -3721,22 +3739,22 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo آدرس پیش فرض قابل ذخیره نیست - + Rescanning... اسکنِ دوباره... - + Done loading اتمام لود شدن - + Error خطا - + An error occurred while setting up the RPC port %u for listening on IPv6, falling back to IPv4: %s @@ -3768,7 +3786,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Boinc Mining @@ -3778,7 +3796,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error obtaining next project. Error 06172014. @@ -3818,12 +3836,32 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -3853,7 +3891,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + List commands @@ -3868,7 +3906,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + This help message @@ -3898,12 +3936,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3913,12 +3951,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Allow DNS lookups for -addnode, -seednode and -connect - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3928,7 +3966,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Connect only to the specified node(s) @@ -3938,22 +3976,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Specify your own public address - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -3963,27 +4001,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + 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: 5000) @@ -3993,7 +4031,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Use UPnP to map the listening port (default: 1 when listening) @@ -4003,22 +4041,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) - + Use the test network - + Output extra debugging information. Implies all other -debug* options @@ -4028,7 +4066,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Prepend debug output with timestamp @@ -4043,7 +4081,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -4053,22 +4091,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Send commands to node running on <ip> (default: 127.0.0.1) - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - + Require a confirmations for change (default: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -4078,7 +4116,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Upgrade wallet to latest format @@ -4093,12 +4131,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Attempt to recover private keys from a corrupt wallet.dat - + How many blocks to check at startup (default: 2500, 0 = all) @@ -4113,12 +4151,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Block creation options: - + Set minimum block size in bytes (default: 0) @@ -4128,12 +4166,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -4153,17 +4191,17 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid amount for -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - + Invalid amount for -mininput=<amount>: '%s' @@ -4173,22 +4211,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4198,10 +4236,15 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4218,7 +4261,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Unknown -socks proxy version requested: %i @@ -4228,7 +4271,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid -proxy address: '%s' @@ -4238,22 +4281,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Cannot resolve -bind address: '%s' - + Failed to listen on any port. Use -listen=0 if you want this. - + Cannot resolve -externalip address: '%s' - + Invalid amount for -reservebalance=<amount> @@ -4268,22 +4311,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete - + Error loading wallet.dat @@ -4303,17 +4346,17 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4323,37 +4366,37 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - + Warning: Disk space is low! diff --git a/src/qt/locale/bitcoin_fi.ts b/src/qt/locale/bitcoin_fi.ts index af653c3757..bc9d15d721 100644 --- a/src/qt/locale/bitcoin_fi.ts +++ b/src/qt/locale/bitcoin_fi.ts @@ -23,21 +23,6 @@ Distributed under the MIT/X11 software license, see the accompanying file COPYIN This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (https://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - - -This is experimental software. - -Distributed under the MIT/X11 software license, see the accompanying file COPYING 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. - -Tämä on kokeellista ohjelmistoa. - -Levitetään MIT/X11 ohjelmistolisenssin alaisuudessa. Tarkemmat tiedot löytyvät tiedostosta COPYING tai osoitteesta http://www.opensource.org/licenses/mit-license.php. - -Tämä tuote sisältää OpenSSL-projektin kehittämää ohjelmistoa OpenSSL-työkalupakettia varten (http://www.openssl.org/), Eric Youngin (eay@cryptsoft.com) kehittämän salausohjelmiston sekä Thomas Bernardin UPnP-ohjelmiston. - - AddressBookPage @@ -314,12 +299,12 @@ Tämä tuote sisältää OpenSSL-projektin kehittämää ohjelmistoa OpenSSL-ty BitcoinGUI - + Sign &message... &Allekirjoita viesti... - + &Overview &Yleisnäkymä @@ -415,7 +400,7 @@ Tämä tuote sisältää OpenSSL-projektin kehittämää ohjelmistoa OpenSSL-ty Sulje ohjelma - + &Options... &Asetukset... @@ -429,19 +414,11 @@ Tämä tuote sisältää OpenSSL-projektin kehittämää ohjelmistoa OpenSSL-ty Encrypt or decrypt wallet Salaa tai pura salaus lompakosta - - &Backup Wallet... - &Varmuuskopioi Lompakko... - &Change Passphrase... &Vaihda Tunnuslause... - - Backup wallet to another location - Varmuuskopioi lompakko toiseen sijaintiin - Change the passphrase used for wallet encryption @@ -493,7 +470,7 @@ Tämä tuote sisältää OpenSSL-projektin kehittämää ohjelmistoa OpenSSL-ty Varmista &viesti... - + Wallet Lompakko @@ -503,7 +480,7 @@ Tämä tuote sisältää OpenSSL-projektin kehittämää ohjelmistoa OpenSSL-ty Gridcoin - + &Send &Lähetä @@ -523,28 +500,12 @@ Tämä tuote sisältää OpenSSL-projektin kehittämää ohjelmistoa OpenSSL-ty Näytä tietoja Gridcoinista - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -554,7 +515,7 @@ Tämä tuote sisältää OpenSSL-projektin kehittämää ohjelmistoa OpenSSL-ty - + &Diagnostics @@ -584,14 +545,14 @@ Tämä tuote sisältää OpenSSL-projektin kehittämää ohjelmistoa OpenSSL-ty - + [testnet] [testnet] - + Gridcoin client Gridcoin-asiakas @@ -601,23 +562,7 @@ Tämä tuote sisältää OpenSSL-projektin kehittämää ohjelmistoa OpenSSL-ty %1 aktiivinen yhteys Gridcoin-verkkoon - %1 second(s) ago - %1 sekunti sitten - - - %1 minute(s) ago - %1 minuutti sitten - - - %1 hour(s) ago - %1 tunti sitten - - - %1 day(s) ago - %1 päivä sitten - - - + Last received block was generated %1. Viimeinen vastaanotettu lohko generoitu %1. @@ -676,7 +621,7 @@ Osoite: %4 {1 ?} {4?} - + Wallet is <b>encrypted</b> and currently %1 @@ -723,7 +668,7 @@ Osoite: %4 {1 - + %n second(s) @@ -765,27 +710,37 @@ Osoite: %4 {1 - Not staking because wallet is locked - Ei osakkaana koska lompakko on lukittu + + Scraper: waiting on wallet to sync. + - Not staking because wallet is offline - Ei osakkaana koska lompakko on offline-tilassa + + Scraper: superblock not needed - inactive. + - Not staking because wallet is syncing - Ei osakkaana koska lompakko synkronoituu + + Scraper: downloading and processing stats. + - Not staking because you don't have mature coins - Ei osakkaana koska sinulle ei ole erääntynyt kolikoita + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + - Not staking - Ei osakkaana + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + - + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + &File &Tiedosto @@ -800,17 +755,12 @@ Osoite: %4 {1 - - &Advanced - - - - + &Help &Apua - + Processed %n block(s) of transaction history. Prosessoitu %n lohko rahansiirtohistoriasta. @@ -855,12 +805,12 @@ Osoite: %4 {1 Rahansiirtohistoria on ajan tasalla - + Catching up... Saavutetaan verkkoa... - + Sent transaction Lähetetyt rahansiirrot @@ -870,18 +820,7 @@ Osoite: %4 {1 Saapuva rahansiirto - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Päivä: %1 -Määrä: %2 -Tyyppi: %3 -Osoite: %4 - - - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. URI-merkkijonoa ei voida jäsentää! Tämä voi johtua väärästä Gridcoin-osoitteesta tai väärässä muodossa olevista URI-parametreistä. @@ -892,17 +831,13 @@ Osoite: %4 URI handling URI-merkkijonojen käsittely - - 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> - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. Vakava virhe kohdattu. Gridcoin-ohjelma ei voi enää jatkaa turvallisesti ja sulkee itsensä. @@ -910,7 +845,7 @@ Osoite: %4 ClientModel - + Network Alert Verkkohälytys @@ -992,10 +927,6 @@ Osoite: %4 (un)select all (epä)valitse kaikki - - List mode - Listarakenne - Amount @@ -1375,7 +1306,7 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. NewPollDialog - + Create Poll @@ -1588,10 +1519,6 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Map port using &UPnP Portin uudelleenohjaus &UPnP:llä - - Proxy &IP: - Proxyn &IP: - &Port: @@ -1825,6 +1752,14 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Ei ajan tasalla + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1886,7 +1821,7 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. RPCConsole - + @@ -1898,7 +1833,7 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. - + N/A Ei saatavilla @@ -1978,7 +1913,12 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Ulos: - + + &Scraper + + + + Debug log file Debug lokitiedosto @@ -2008,7 +1948,7 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Kirjoita <b>help</b> nähdäksesi yleiskatsauksen käytettävissä olevista komennoista. - + %1 B %1 B @@ -2043,12 +1983,12 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. - + Gridcoin - Debug Console - + Boost version @@ -2118,7 +2058,7 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Pääteohjelman nimi - + Welcome to the Gridcoin RPC console! @@ -2385,22 +2325,22 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. SendCoinsEntry - + A&mount: M&äärä: - + Pay &To: Maksun saaja: - + &Label: &Nimi: - + Alt+A Alt+A @@ -2420,12 +2360,12 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Viesti: - + Form Kaavake - + Enter a label for this address to add it to your address book Anna nimi tälle osoitteelle, jos haluat lisätä sen osoitekirjaan @@ -2446,17 +2386,12 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Poista tämä vastaanottaja - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2705,26 +2640,47 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. - + Source Lähde - Generated - Generoitu + + Generated in CoinBase + - - Generated in CoinBase + + MINED - POS - - Generated, PoS + + MINED - POR - + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From Lähettäjä @@ -2838,27 +2794,11 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Transaction Inputs - - Transaction ID - Siirtotunnus - Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - Tietoa - - - Transaction - Rahansiirto - - - Inputs - Sisääntulot - Amount @@ -2888,12 +2828,7 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Tämä ruutu näyttää yksityiskohtaisen tiedon rahansiirrosta - - View Attachment - - - - + Execute Contract @@ -2902,21 +2837,11 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. C&lose S&ulje - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Aika @@ -2989,7 +2914,7 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Generoitu mutta ei hyväksytty - + Received with Vastaanotettu osoitteella @@ -3009,32 +2934,42 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Maksu itsellesi - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (ei saatavilla) - + Transaction status. Hover over this field to show number of confirmations. Rahansiirron tila. Siirrä osoitin kentän päälle nähdäksesi vahvistusten lukumäärä. @@ -3228,17 +3163,10 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. kenelle - - UpgradeDialog - - Hide - Piilota - - VotingChartDialog - + Poll Results @@ -3382,7 +3310,7 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. VotingVoteDialog - + PlaceVote @@ -3415,7 +3343,7 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. WalletModel - + Sending... Lähetetään... @@ -3423,12 +3351,12 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. bitcoin-core - + Options: Asetukset: - + This help message Tämä ohjeviesti @@ -3463,12 +3391,12 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Määritä yhteyden aikakataisu millisekunneissa (vakioasetus: 5000) - + Connect through socks proxy Yhdistä SOCKS-välityspalvelimen lävitse - + Select the version of socks proxy to use (4-5, default: 5) Valitse SOCKS-välityspalvelimen versio (4-5, oletus 5) @@ -3478,7 +3406,7 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Käytä välityspalvelinta saavuttaaksesi tor:n piilotetut palvelut (oletus: sama kuin -proxy) - + Listen for connections on <port> (default: 32749 or testnet: 32748) Kuuntele yhteyksiä portissa <port> (oletus: 15714 tai testiverkko: 25714) {32749 ?} {32748)?} @@ -3488,7 +3416,7 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Pidä enintään <n> yhteyttä verkkoihin (oletus: 125) - + Connect only to the specified node(s) Yhidstä ainoastaan määrättyihin noodeihin @@ -3498,26 +3426,22 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Yhdistä noodiin hakeaksesi naapurien osoitteet ja katkaise yhteys - + Specify your own public address Määritä julkinen osoitteesi - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) Yhdistä vain noodeihin verkossa <net> (IPv4, IPv6 tai Tor) - + Discover own IP address (default: 1 when listening and no -externalip) Hae oma IP osoite (vakioasetus: 1 kun kuuntelemassa ja ei -externalip) - Find peers using internet relay chat (default: 0) - Etsi vertaisiasi käyttäen Internet Relay Chatia (oletus: 1) {0)?} - - - + Accept connections from outside (default: 1 if no -proxy or -connect) Hyväksy yhteyksiä ulkopuolelta (vakioasetus: 1 jos -proxy tai -connect ei määritelty) @@ -3527,26 +3451,22 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Liitä annettuun osoitteeseen. Käytä [host]:port merkintää IPv6:lle - + Find peers using DNS lookup (default: 1) Etsi vertaisiasi käyttäen DNS-nimihakua (oletus: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) Synkronoi kello muiden noodien kanssa. Poista käytöstä, jos järjestelmäsi aika on tarkka esim. päivittää itsensä NTP-palvelimelta. (oletus: 1) - Sync checkpoints policy (default: strict) - Synkronoi tallennuspisteiden käytännöt (oletus: strict) - - - + 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) @@ -3641,6 +3561,16 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3701,6 +3631,11 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. ERROR + + + Entire balance reserved + + Expires @@ -3766,11 +3701,6 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Message Viesti - - - Messate Type - - Miner: @@ -3807,12 +3737,7 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. - - No coins; - - - - + Offline; @@ -3822,12 +3747,7 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3907,12 +3827,12 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Käytä UPnP:tä kuunneltavan portin avaamiseen (vakioasetus: 0) - + Fee per KB to add to transactions you send Rahansiirtopalkkio kilotavua kohden lähetettäviin rahansiirtoihisi - + When creating transactions, ignore inputs with value less than this (default: 0.01) Rahansiirtoja luodessa jätä huomioimatta syötteet joiden arvo on vähemmän kuin tämä (oletus: 0.01) @@ -3922,12 +3842,12 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Hyväksy merkkipohjaiset- ja JSON-RPC-käskyt - + Use the test network Käytä test -verkkoa - + Output extra debugging information. Implies all other -debug* options Tulosta lisäksi debug-tietoa, seuraa kaikkia muita -debug*-asetuksia @@ -3937,7 +3857,7 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Tulosta lisäksi verkon debug-tietoa - + Prepend debug output with timestamp Lisää debug-tulosteiden alkuun aikaleimat @@ -3947,7 +3867,7 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Lähetä debug-tuloste kehittäjille - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) Kuuntele JSON-RPC-yhteyksiä portissa <port> (oletus: 15715 tai testiverkko: 25715) @@ -3957,7 +3877,7 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. 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) @@ -3967,7 +3887,7 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Vaadi vaihtorahalle vahvistus (oletus: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) Vahvista, että rahansiirtoskriptit käyttävät sääntöjen mukaisia PUSH-toimijoita (oletus: 1) @@ -3977,7 +3897,7 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Suorita komento kun olennainen varoitus on saatu (%s komennossa korvattu viestillä) - + Upgrade wallet to latest format Päivitä lompakko uusimpaan formaattiin @@ -3992,7 +3912,7 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Skannaa uudelleen lohkoketju lompakon puuttuvien rahasiirtojen vuoksi - + Attempt to recover private keys from a corrupt wallet.dat Yritetään palauttaa yksityisiä salausavaimia korruptoituneesta wallet.dat-tiedostosta @@ -4012,7 +3932,7 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. - + Boinc Mining @@ -4022,7 +3942,7 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. - + Error obtaining next project. Error 06172014. @@ -4072,12 +3992,32 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -4092,12 +4032,12 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Aseta lohkon maksimikoko tavuissa (oletus: 250000) - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) Aseta maksimikoko korkean prioriteetin/pienen siirtokulun maksutapahtumille tavuina (oletus: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) SSL asetukset (katso Bitcoin Wikistä tarkemmat SSL ohjeet) @@ -4117,21 +4057,17 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Palvelimen yksityisavain (oletus: server.pem) - Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - Hyväksytyt salaustyypit (oletus: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - - - + Invalid amount for -paytxfee=<amount>: '%s' -paytxfee=<amount>: '%s' on virheellinen - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. Varoitus: -paytxfee on asetettu erittäin korkeaksi! Tämä on maksukulu jonka tulet maksamaan kun lähetät siirron. - + Invalid amount for -mininput=<amount>: '%s' Epäkelpo määrä parametrille -mininput=<amount>: '%s' @@ -4141,22 +4077,22 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. - + Wallet %s resides outside data directory %s. Lompakko %s on datahakemiston %s ulkopuolella. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. Ei voida saavuttaa lukkoa datatiedostossa %s. Gridcoin-asiakasohjelma on ehkä jo käynnissä. - + Verifying database integrity... Tarkistetaan tietokannan eheyttä... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. Virhe alustettaessa tietokantaympäristöä %s! Palauttaaksesi sen, TEE VARMUUSKOPIO HAKEMISTOSTA ja poista tämän jälkeen kaikki hakemiston tiedostot paitsi wallet.dat-tiedosto. @@ -4166,10 +4102,15 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Varoitus: wallet.dat-tiedosto on korruptoitunut, data pelastettu! Alkuperäinen wallet.dat on tallennettu nimellä wallet.{aikaleima}.bak kohteeseen %s; Jos saldosi tai rahansiirrot ovat väärät, sinun tulee palauttaa lompakko varmuuskopiosta. - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4186,17 +4127,17 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. wallet.dat on korruptoitunut, pelastusyritys epäonnistui - + Unknown -socks proxy version requested: %i Tuntematon -socks proxy versio pyydetty: %i - + Invalid -tor address: '%s' Epäkelpo -tor-osoite: '%s' - + Cannot resolve -bind address: '%s' -bind osoitteen '%s' selvittäminen epäonnistui @@ -4206,16 +4147,10 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. -externalip osoitteen '%s' selvittäminen epäonnistui - + Invalid amount for -reservebalance=<amount> Epäkelpo määrä -reservebalance=<amount> - - Unable to sign checkpoint, wrong checkpointkey? - - Ei voitu kirjata tallennuspistettä, väärä checkpointkey? - - Error loading blkindex.dat @@ -4227,22 +4162,22 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Virhe ladattaessa wallet.dat-tiedostoa: Lompakko vioittunut - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. Varoitus: Virhe luettaessa wallet.dat-tiedostoa! Kaikki avaimet luettiin oikein, mutta rahansiirtodata tai osoitekirjan kentät voivat olla puuttuvat tai väärät. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin Virhe ladattaessa wallet.dat-tiedostoa: Lompakko tarvitsee uudemman version Gridcoin-asiakasohjelmasta - + Wallet needed to be rewritten: restart Gridcoin to complete Lompakko on kirjoitettava uudelleen: käynnistä Gridcoin-asiakasohjelma uudelleen päättääksesi toiminnon - + Error loading wallet.dat Virhe ladattaessa wallet.dat-tiedostoa @@ -4262,17 +4197,17 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Virhe: Ei voitu käynnistää noodia - + Unable to bind to %s on this computer. Gridcoin is probably already running. Ei voitu liittää %s tällä tietokoneella. Gridcoin-asiakasohjelma on jo ehkä päällä. - + Unable to bind to %s on this computer (bind returned error %d, %s) Kytkeytyminen %s tällä tietokonella ei onnistu (kytkeytyminen palautti virheen %d, %s) - + Error: Wallet locked, unable to create transaction Virhe: Lompakko lukittu, rahansiirtoa ei voida luoda @@ -4282,59 +4217,47 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Virhe: Lompakko avattu vain osakkuutta varten, rahansiirtoja ei voida luoda. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds Virhe: Tämä rahansiirto tarvitsee rahansiirtopalkkion, kooltaan %s, kokonsa, monimutkaisuutensa tai aikaisemmin saatujen varojen käytön takia. - + Error: Transaction creation failed Virhe: Rahansiirron luonti epäonnistui - + Sending... Lähetetään... - + 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. Virhe: Rahansiirto on evätty. Tämä voi tapahtua jos joitakin kolikoistasi lompakossasi on jo käytetty, tai jos olet käyttänyt wallet.dat-tiedoston kopiota ja rahat olivat käytetyt kopiossa, mutta ei merkitty käytetyksi tässä. - + Invalid amount Virheellinen määrä - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. Varoitus: Tarkista, että tietokoneesi aika ja päivämäärä ovat oikeassa! Jos kellosi on väärässä, Gridcoin ei toimi oikein. - Warning: This version is obsolete, upgrade required! - Varoitus: Tämä versio on vanhentunut, päivitys tarpeen! - - - WARNING: synchronized checkpoint violation detected, but skipped! - VAROITUS: synkronoidun tallennuspisteen rikkomista havaittu, mutta ohitettu! - - - + Warning: Disk space is low! Varoitus: Kiintolevytila on vähissä! - WARNING: Invalid checkpoint found! Displayed transactions may not be correct! You may need to upgrade, or notify developers. - VAROITUS: Epäkelpo tarkistuspiste löydetty! Ilmoitetut rahansiirrot eivät välttämättä pidä paikkaansa! Sinun täytyy päivittää asiakasohjelma, tai ilmoittaa kehittäjille ongelmasta. - - - + Run in the background as a daemon and accept commands Aja taustalla daemonina ja hyväksy komennot - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) Suorita käsky kun lompakossa rahansiirto muuttuu (%s cmd on vaihdettu TxID kanssa) @@ -4344,12 +4267,12 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Lohkon luonnin asetukset: - + Failed to listen on any port. Use -listen=0 if you want this. Ei onnistuttu kuuntelemaan missään portissa. Käytä -listen=0 jos haluat tätä. - + Specify wallet file (within data directory) Aseta lompakkotiedosto (data-hakemiston sisällä) @@ -4374,7 +4297,7 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Salasana JSON-RPC-yhteyksille - + Execute command when the best block changes (%s in cmd is replaced by block hash) Suorita käsky kun paras lohko muuttuu (%s cmd on vaihdettu block hashin kanssa) @@ -4384,12 +4307,12 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. Salli DNS kyselyt -addnode, -seednode ja -connect yhteydessä - + To use the %s option Käytä %s optiota - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -4423,12 +4346,12 @@ If the file does not exist, create it with owner-readable-only file permissions. Jos tiedostoa ei ole, niin luo se ainoastaan omistajan kirjoitusoikeuksin. - + Gridcoin version Gridcoinin versio - + Usage: Käyttö: @@ -4438,7 +4361,7 @@ Jos tiedostoa ei ole, niin luo se ainoastaan omistajan kirjoitusoikeuksin. - + List commands Lista komennoista @@ -4463,12 +4386,12 @@ Jos tiedostoa ei ole, niin luo se ainoastaan omistajan kirjoitusoikeuksin.Virheellinen proxy-osoite '%s' - + Unknown network specified in -onlynet: '%s' Tuntematon verkko -onlynet parametrina: '%s' - + Insufficient funds Lompakon saldo ei riitä @@ -4478,17 +4401,17 @@ Jos tiedostoa ei ole, niin luo se ainoastaan omistajan kirjoitusoikeuksin.Ladataan lohkoindeksiä... - + Add a node to connect to and attempt to keep the connection open Linää solmu mihin liittyä pitääksesi yhteyden auki - + Loading wallet... Ladataan lompakkoa... - + Cannot downgrade wallet Et voi päivittää lompakkoasi vanhempaan versioon @@ -4498,17 +4421,17 @@ Jos tiedostoa ei ole, niin luo se ainoastaan omistajan kirjoitusoikeuksin.Oletusosoitetta ei voi kirjoittaa - + Rescanning... Skannataan uudelleen... - + Done loading Lataus on valmis - + Error Virhe diff --git a/src/qt/locale/bitcoin_fr.ts b/src/qt/locale/bitcoin_fr.ts index 54890b972d..cbca4d988a 100644 --- a/src/qt/locale/bitcoin_fr.ts +++ b/src/qt/locale/bitcoin_fr.ts @@ -23,20 +23,6 @@ Distributed under the MIT/X11 software license, see the accompanying file COPYIN This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (https://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - - -This is experimental software. - -Distributed under the MIT/X11 software license, see the accompanying file COPYING 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. - -Ce logiciel est expérimental. - -Distribué sous licence logicielle MIT/X11, voir le fichier COPYING joint ou http://www.opensource.org/licenses/mit-license.php. - -Ce produit comprend des logiciels développés par le projet OpenSSL afin d'être utilisés dans la boîte à outils OpenSSL (http://www.openssl.org/), un logiciel de chiffrement écrit par Eric Young (eay@cryptsoft.com), et un logiciel UPnP développé par Thomas Bernard. - AddressBookPage @@ -313,12 +299,12 @@ Ce produit comprend des logiciels développés par le projet OpenSSL afin d&apos BitcoinGUI - + Sign &message... Signer un &message... - + &Overview &Vue d'ensemble @@ -414,7 +400,7 @@ Ce produit comprend des logiciels développés par le projet OpenSSL afin d&apos Quitter l’application - + &Options... &Options… @@ -429,7 +415,7 @@ Ce produit comprend des logiciels développés par le projet OpenSSL afin d&apos Chiffrer ou déchiffrer le portefeuille - + %n second(s) ago il y a %n seconde @@ -461,7 +447,7 @@ Ce produit comprend des logiciels développés par le projet OpenSSL afin d&apos - + Date: %1 Amount: %2 Type: %3 @@ -476,7 +462,7 @@ Adresse : %4 ?} {4?} - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -486,17 +472,39 @@ Adresse : %4 - &Backup Wallet... - Sauvegarder le &porte-monnaie... + + Scraper: waiting on wallet to sync. + - - &Change Passphrase... - &Changer la phrase de passe... + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + - Backup wallet to another location - Sauvegarder le porte-monnaie vers un autre emplacement + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + + &Change Passphrase... + &Changer la phrase de passe... @@ -549,7 +557,7 @@ Adresse : %4 &Vérifier un message... - + Wallet Porte-monnaie @@ -559,7 +567,7 @@ Adresse : %4 Gridcoin - + &Send &Envoyer @@ -568,30 +576,6 @@ Adresse : %4 &Receive &Recevoir - - &Rebuild Block Chain - &Reconstruire la Block Chain - - - Rebuild Block Chain - Reconstruire la Block Chain - - - &Download Blocks - &Télécharger les Blocks - - - Download Blocks - Télécharger les Blocks - - - &Upgrade Client - &Mise à jour - - - Upgrade Client - Mise à jour - &About Gridcoin @@ -603,36 +587,12 @@ Adresse : %4 Afficher des informations au sujet de Gridcoin - - &Neural Network - &Réseau neural - - - - Neural Network - Réseau neural - - - &Advanced Configuration - &Configuration avancée - - - Advanced Configuration - Configuration avancée - - - - &New User Wizard - &Assistant nouvel utilisateur - - - - + New User Wizard Assistant nouvel utilisateur - + &Voting &Votes @@ -642,15 +602,7 @@ Adresse : %4 Votes - &Foundation - &Fondation - - - Foundation - Fondation - - - + &Diagnostics &Diagnostics @@ -659,14 +611,6 @@ Adresse : %4 Diagnostics Diagnostics - - FA&Q - FA&Q - - - Interactive FAQ - FAQ interactive - Modify configuration options for Gridcoin @@ -688,14 +632,14 @@ Adresse : %4 - + [testnet] [testnet] - + Gridcoin client Client Gridcoin @@ -705,23 +649,7 @@ Adresse : %4 %1 connexions actives au réseau Gridcoin - %1 second(s) ago - il y a %1 secondes - - - %1 minute(s) ago - il y a %1 minutes - - - %1 hour(s) ago - il y a %1 heures - - - %1 day(s) ago - il y a %1 jours - - - + Last received block was generated %1. Le dernier block reçu à été généré %1. @@ -766,19 +694,7 @@ Adresse : %4 Attention! - Chemin vers BOINC erroné! - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Date : %1 -Montant : %2 -Type : %3 -Adresse : %4 - - - - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. L'adresse du portefeuille Gridcoin n'as pas pu être correctement identifiée, car invalide ou malformée. @@ -837,7 +753,7 @@ Adresse : %4 - + %n second(s) %n seconde @@ -869,39 +785,7 @@ Adresse : %4 - Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. %4 - Staking.<br>Vous avez %1 coins matures<br>Le poids du réseau est de %2<br>Temps <b>estimé</b> avant intérêts: %3. %4 - - - Not staking because wallet is locked - Pas de staking car votre portefeuille est verouillé - - - Not staking because wallet is offline - Pas de staking car votre portefeuille est hors ligne - - - Not staking because wallet is syncing - Pas de staking car votre portefeuille est en cours de synchronisation - - - Not staking because you don't have mature coins and stake weight is too low. - Pas de staking car vous n'avez pas de Gridcoin mature et votre nombre de Gridcoins est trop faible. - - - Not staking because you don't have mature coins - Pas de staking car vos monnaies ne sont pas encore matures - - - Searching for mature coins... Please wait - Recherche de coins matures... Merci de patienter - - - Not staking - Pas de staking - - - + &File &Fichier @@ -916,17 +800,12 @@ Adresse : %4 &Communauté - - &Advanced - &Avancé - - - + &Help &Aide - + Processed %n block(s) of transaction history. %n bloc d'historique transactionnel a été traité. @@ -939,12 +818,12 @@ Adresse : %4 À jour - + Catching up... Rattrapage… - + Sent transaction Transaction envoyée @@ -954,16 +833,12 @@ Adresse : %4 Transaction entrante - 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 actuellement <b>verrouillé</b> - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. Une erreur fatale a été rencontrée. L'application Gridcoin ne peut plus être s'exécuter de façon correcte et va se terminer. @@ -971,7 +846,7 @@ Adresse : %4 ClientModel - + Network Alert Alerte réseau @@ -1053,10 +928,6 @@ Adresse : %4 (un)select all Tout (des)sélectionner - - List mode - Mode liste - Amount @@ -1436,7 +1307,7 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires. NewPollDialog - + Create Poll Nouveau Sondage @@ -1649,10 +1520,6 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Map port using &UPnP Mapper le port avec l'&UPnP - - Proxy &IP: - &IP du mandataire : - &Port: @@ -1819,10 +1686,6 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Error Messages: - - DPOR Weight: - Poid du noeud DPOR: - Magnitude: @@ -1848,10 +1711,6 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Current Poll: Sondage: - - Client Messages: - Messages système: - Available: @@ -1894,6 +1753,14 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.désynchronisé + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1955,7 +1822,7 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires. RPCConsole - + @@ -1967,7 +1834,7 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires. - + N/A N.D @@ -2047,7 +1914,12 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Sortant : - + + &Scraper + + + + Debug log file Fichier journal de débogage @@ -2082,7 +1954,7 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Taper <b>help</b> pour afficher une vue générale des commandes proposées. - + %1 B %1 o @@ -2117,12 +1989,12 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.%1 h %2 min - + Gridcoin - Debug Console Gridcoin - Console de débogage - + Boost version Version Boost @@ -2454,22 +2326,22 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires. SendCoinsEntry - + A&mount: &Montant : - + Pay &To: &Payer à : - + &Label: É&tiquette : - + Alt+A Alt+A @@ -2495,12 +2367,12 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Saisir une étiquette pour cette adresse afin de l’ajouter à votre carnet d’adresses - + Form Formulaire - + The address to send the payment to (e.g. Sjz75uKHzUQJnSdzvpiigEGxseKkDhQToX) L'adresse Gridcoin de votre destinataire (ex. SGAHhtnzzekoGiKWgugFMSsCWnhCE4nUjw) @@ -2515,21 +2387,12 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Supprimer ce destinataire - + Send Custom Message to a Gridcoin Recipient Envoyer un message à votre destinataire - Track Coins - Suivre le transfert - - - - Add Attachment - Ajouter pièce-jointe - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) Entrez une adresse Gridcoin (ex. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2778,49 +2641,58 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires. - + Source Source - Generated - Générée - - - + From De - Block Type - Type de Block + + Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. + Les Gridcoins générés doivent passer 110 blocks pour être matures et pouvoir être dépensés. Quand vous avez généré ce block il a été diffusé sur le réseau pour être ajouté à la block chain. S'il ne rentre pas dans la chaîne, son état va passer à "refusé" et les Gridcoin ne seront pas utilisables. Celà peut arriver si un autre nœud génère un block à quelques secondes d'intervalle du votre. - Block Number - Numéro de Block + + Generated in CoinBase + - - Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Les Gridcoins générés doivent passer 110 blocks pour être matures et pouvoir être dépensés. Quand vous avez généré ce block il a été diffusé sur le réseau pour être ajouté à la block chain. S'il ne rentre pas dans la chaîne, son état va passer à "refusé" et les Gridcoin ne seront pas utilisables. Celà peut arriver si un autre nœud génère un block à quelques secondes d'intervalle du votre. + + MINED - POS + - Information - Information + + MINED - POR + - - Generated in CoinBase + + MINED - ORPHANED - - Generated, PoS + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + unknown inconnue @@ -2928,18 +2800,6 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Transaction Inputs - - Transaction ID - ID de la transaction - - - Transaction - Transaction - - - Inputs - Entrées - Amount @@ -2969,12 +2829,7 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Ce panneau affiche une description détaillée de la transaction - - View Attachment - Voir pièce-jointe - - - + Execute Contract Executer le contrat @@ -2983,21 +2838,11 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.C&lose F&ermer - - - Gridcoin Documents - Documents Gridcoin - - - - Document cannot be found on P2P server. - Le document ne peut être trouvé sur le serveur P2P. - TransactionTableModel - + Date Date @@ -3032,32 +2877,12 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Ce block n'a été reçu par aucun autre nœud<br> et ne sera probablement pas accepté! - - Mined - DPOR - Miné - DPOR - - - - Minted - (Local) DPOR - Créé - (Local) DPOR - - - - Mined - PoR - Miné - PoR - - - - Mined - Interest - Miné - Interêts - - - + Destination address of transaction. L’adresse de destination de la transaction. - + Open for %n more block(s) Ouvert pendant encore %n bloc @@ -3095,7 +2920,7 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Générée mais refusée - + Received with Reçue avec @@ -3115,12 +2940,42 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Paiement à vous-même - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (n.d) - + Transaction status. Hover over this field to show number of confirmations. État de la transaction. Survoler ce champ avec la souris pour afficher le nombre de confirmations. @@ -3309,29 +3164,10 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.à - - UpgradeDialog - - Gridcoin Upgrading Facility - Facilité de mise à jour Gridcoin - - - Retry Download - Recommencer le téléchargement - - - Upgrade - Mettre à jour - - - Hide - Cacher - - VotingChartDialog - + Poll Results Résultats du sondage @@ -3421,14 +3257,6 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Share Type Type de voix - - Question - Question - - - Answers - Réponses - # Voters @@ -3439,10 +3267,6 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Total Shares Nombre de voix - - URL - URL - Best Answer @@ -3468,10 +3292,6 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Share Type. Type de voix. - - Question. - Question. - Total Participants. @@ -3482,10 +3302,6 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Total Shares. Nombre de voix. - - URL. - URL. - Best Answer. @@ -3495,7 +3311,7 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires. VotingVoteDialog - + PlaceVote Sondage @@ -3528,7 +3344,7 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires. WalletModel - + Sending... Envoi... @@ -3536,19 +3352,15 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires. bitcoin-core - + Options: Options : - + This help message Ce message d'aide - - Specify configuration file (default: gridcoin.conf) - Définir le fichier de configuration (défaut: gridcoin.conf) - Specify pid file (default: gridcoind.pid) @@ -3580,12 +3392,12 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Spécifier le délai d'expiration de la connexion en millisecondes (par défaut: 5000) - + Connect through socks proxy Se connecter à travers un proxy socks - + Select the version of socks proxy to use (4-5, default: 5) Sélectionner la version du proxy socks à utiliser (4-5, par défaut: 5) @@ -3595,7 +3407,7 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Utiliser un proxy pour atteindre les services cachés (par défaut: équivalent à -proxy) - + Listen for connections on <port> (default: 32749 or testnet: 32748) Écouter les connexions sur le <port> (par défault: 32749 ou testnet: 32748) @@ -3605,7 +3417,7 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Garder au plus <n> connexions avec les pairs (par défaut : 125) - + Connect only to the specified node(s) Ne se connecter qu'au(x) nœud(s) spécifié(s) @@ -3615,26 +3427,22 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Se connecter à un nœud pour obtenir des adresses de pairs puis se déconnecter - + Specify your own public address Spécifier votre propre adresse publique - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) Se connecter uniquement aux nœuds du réseau <net> (IPv4, IPv6 ou Tor) - + Discover own IP address (default: 1 when listening and no -externalip) Découvrir sa propre adresse IP (par défaut: 1 lors de l'écoute et si aucun -externalip) - Find peers using internet relay chat (default: 0) - Trouvez des pairs utilisant DNS lookup (par défault: 1) {0)?} - - - + Accept connections from outside (default: 1 if no -proxy or -connect) Accepter les connexions entrantes (par défaut : 1 si aucun -proxy ou -connect ) @@ -3644,26 +3452,22 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Connexion à l'adresse fournie. Utiliser la notation [machine]:port pour les adresses IPv6 - + Find peers using DNS lookup (default: 1) Trouvez des peers utilisant DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) Synchronisation de l'horloge avec d'autres noeuds. Désactiver si votre serveur est déjà synchronisé avec le protocole NTP (défaut: 1) - Sync checkpoints policy (default: strict) - Politique de synchronisation des checkpoints (default: strict) - - - + 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) @@ -3758,6 +3562,16 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3818,6 +3632,11 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.ERROR + + + Entire balance reserved + + Expires @@ -3883,11 +3702,6 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Message Message - - - Messate Type - - Miner: @@ -3924,12 +3738,7 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires. - - No coins; - - - - + Offline; @@ -3939,12 +3748,7 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires. - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -4024,12 +3828,12 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Utiliser l'UPnP pour rediriger le port d'écoute (par défaut: 0) - + Fee per KB to add to transactions you send Frais par KB à ajouter à vos transactions sortantes - + When creating transactions, ignore inputs with value less than this (default: 0.01) Lors de la création de transactions, ignorer les entrées dont la valeur sont inférieures (défaut: 0.01) @@ -4039,12 +3843,12 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Accepter les commandes JSON-RPC et en ligne de commande - + Use the test network Utiliser le réseau de test - + Output extra debugging information. Implies all other -debug* options Voir les autres informations de débogage. Implique toutes les autres options -debug* @@ -4054,7 +3858,7 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Voir les autres informations de débogage du réseau - + Prepend debug output with timestamp Horodater les messages de debug @@ -4064,7 +3868,7 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Envoyer les informations de débogage/trace à la console au lieu du fichier debug.log - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) Écouter les connexions JSON-RPC sur le <port> (default: 15715 or testnet: 25715) @@ -4074,7 +3878,7 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.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 sur <ip> (par défaut : 127.0.0.1) @@ -4084,7 +3888,7 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Nécessite a confirmations pour modification (par défaut: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) Force les scripts de transaction à utiliser des opérateurs PUSH canoniques (défaut: 1) @@ -4094,7 +3898,7 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Exécute une commande lorsqu'une alerte correspondante est reçue (%s dans la commande est remplacé par message) - + Upgrade wallet to latest format Mettre à niveau le portefeuille vers le format le plus récent @@ -4109,7 +3913,7 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Réanalyser la chaîne de blocs pour les transactions de portefeuille manquantes - + Attempt to recover private keys from a corrupt wallet.dat Tenter de récupérer les clefs privées d'un wallet.dat corrompu @@ -4129,7 +3933,7 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires. - + Boinc Mining @@ -4139,7 +3943,7 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires. - + Error obtaining next project. Error 06172014. @@ -4189,12 +3993,32 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires. - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -4209,12 +4033,12 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Fixer la taille maximale d'un block en bytes (default: 250000) - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) Fixer la taille maximale d'un bloc en octets (par défault: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) Options SSL : (voir le Wiki de Bitcoin pour les instructions de configuration du SSL) @@ -4234,21 +4058,17 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Clef privée du serveur (par défaut : server.pem) - Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - Algorithmes de chiffrements acceptés (par défaut: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - - - + Invalid amount for -paytxfee=<amount>: '%s' Montant invalide pour -paytxfee=<montant> : « %s » - + 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. - + Invalid amount for -mininput=<amount>: '%s' Montant invalide pour -mininput=<amount>: '%s' @@ -4258,22 +4078,22 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Initialisation du "sanity-check" échoué. Arrêt de Gridcoin. - + Wallet %s resides outside data directory %s. Le portefeuille %s est situé en dehors du répertoire de données %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. Echec lors de la tentative de verrou des données du répertoire %s. L'application Gridcoin est probablement déjà en cours d'exécution. - + Verifying database integrity... Vérification d'intégrité de la base de données... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. Erreur lors de l'initialisation de l'environnement de base de données %s! Afin de procéder à la récupération, une SAUVEGARDE DE CE REPERTOIRE est nécessaire, puis, supprimez le contenu entier de ce répertoire, à l'exception du fichier wallet.dat. @@ -4283,10 +4103,15 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Avertissement : wallet.dat corrompu, données récupérées ! Le fichier wallet.dat original a été enregistré en tant que wallet.{timestamp}.bak dans %s ; si votre solde ou transactions sont incorrects vous devriez effectuer une restauration depuis une sauvegarde. - + Vote Voter + + + Waiting for coins to mature + + Wallet locked; @@ -4303,17 +4128,17 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.wallet.dat corrompu, la récupération a échoué - + Unknown -socks proxy version requested: %i Version inconnue de serveur mandataire -socks demandée : %i - + Invalid -tor address: '%s' Adresse -tor invalide: '%s' - + Cannot resolve -bind address: '%s' Impossible de résoudre l'adresse -bind : « %s » @@ -4323,16 +4148,10 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Impossible de résoudre l'adresse -externalip : « %s » - + Invalid amount for -reservebalance=<amount> Montant incorrect pour -reservebalance=<montant> - - Unable to sign checkpoint, wrong checkpointkey? - - Impossible de signer le checkpoint, mauvaise clef de checkpoint? - - Error loading blkindex.dat @@ -4344,22 +4163,22 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Erreur lors du chargement de wallet.dat: portefeuille corrompu - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. Avertissement : une erreur est survenue lors de la lecture de wallet.dat ! Toutes les clefs ont été lues correctement mais les données de transaction ou les entrées du carnet d'adresses sont peut-être incorrectes ou manquantes. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin Erreur de chargement du fichier wallet.dat: le portefeuille nécessite une version plus récente de l'application Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete Le portefeuille nécessite d'être réédité : Merci de relancer l'application Gridcoin - + Error loading wallet.dat Erreur lors du chargement du fichier wallet.dat @@ -4379,17 +4198,17 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Erreur: Impossible de démarrer le noeud - + Unable to bind to %s on this computer. Gridcoin is probably already running. Connexion au port %s impossible. L'application Gridcoin est probablement déjà en cours d'exécution. - + Unable to bind to %s on this computer (bind returned error %d, %s) Impossible de se lier à %s sur cet ordinateur (bind a retourné l'erreur %d, %s) - + Error: Wallet locked, unable to create transaction Erreur: Portefeuille verrouillé, impossible d'effectuer cette transaction @@ -4399,59 +4218,47 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Erreur: Portefeuille déverrouillé uniquement pour "staking" , impossible d'effectuer cette transaction. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds Erreur: Cette transaction requière des frais minimum de %s a cause de son montant, de sa complexité ou de l'utilisation de fonds récemment reçus - + Error: Transaction creation failed Erreur: La création de cette transaction a échoué - + Sending... Envoi... - + 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. Erreur: La transaction a été rejetée. Cela peut se produire si une quantité d'argent de votre portefeuille a déjà été dépensée, comme dans le cas où une copie du fichier wallet.dat aurait été utilisée afin d'effectuer des dépenses, à la place du fichier courant. - + Invalid amount Montant invalide - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. Avertissement: Veuillez vérifier la date et l'heure de votre ordinateur. Gridcoin ne pourra pas fonctionner correctement si l'horloge est réglée de façon incorrecte. - Warning: This version is obsolete, upgrade required! - Avertissement : cette version est obsolète, une mise à niveau est nécessaire ! - - - WARNING: synchronized checkpoint violation detected, but skipped! - ATTENTION : violation du checkpoint de synchronisation, mais ignorée! - - - + Warning: Disk space is low! Avertissement: Espace disque faible! - WARNING: Invalid checkpoint found! Displayed transactions may not be correct! You may need to upgrade, or notify developers. - AVERTISSEMENT: point de contrôle invalide! Les transactions affichées peuvent être incorrectes! Il est peut-être nécessaire d'effectuer une mise à jour, ou d'avertir les développeurs du projet. - - - + Run in the background as a daemon and accept commands Fonctionner en arrière-plan en tant que démon et accepter les commandes - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) Exécuter la commande lorsqu'une transaction de porte-monnaie change (%s dans la commande est remplacée par TxID) @@ -4461,12 +4268,12 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Options de création de blocs : - + Failed to listen on any port. Use -listen=0 if you want this. Échec d'écoute sur un port quelconque. Utiliser -listen=0 si vous le voulez. - + Specify wallet file (within data directory) Spécifiez le fichier de porte-monnaie (dans le répertoire de données) @@ -4491,7 +4298,7 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Mot de passe pour les connexions JSON-RPC - + Execute command when the best block changes (%s in cmd is replaced by block hash) Exécuter la commande lorsque le meilleur bloc change (%s dans cmd est remplacé par le hachage du bloc) @@ -4501,12 +4308,12 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires.Autoriser les recherches DNS pour -addnode, -seednode et -connect - + To use the %s option Pour utiliser l'option %s - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -4550,12 +4357,12 @@ If the file does not exist, create it with owner-readable-only file permissions. Si le fichier n'existe pas, créez-le avec les droits de lecture seule accordés au propriétaire. - + Gridcoin version Version Gridcoin - + Usage: Utilisation: @@ -4565,7 +4372,7 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco Envoyer une commande à -server ou gridcoind - + List commands Lister les commandes @@ -4590,12 +4397,12 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco Adresse -proxy invalide : « %s » - + Unknown network specified in -onlynet: '%s' Réseau inconnu spécifié dans -onlynet : « %s » - + Insufficient funds Fonds insuffisants @@ -4605,17 +4412,17 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco Chargement de l’index des blocs… - + Add a node to connect to and attempt to keep the connection open Ajouter un nœud auquel se connecter et tenter de garder la connexion ouverte - + Loading wallet... Chargement du porte-monnaie… - + Cannot downgrade wallet Impossible de revenir à une version inférieure du porte-monnaie @@ -4625,17 +4432,17 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco Impossible d'écrire l'adresse par défaut - + Rescanning... Nouvelle analyse… - + Done loading Chargement terminé - + Error Erreur diff --git a/src/qt/locale/bitcoin_fr_CA.ts b/src/qt/locale/bitcoin_fr_CA.ts index fee9d4a5e8..30870d07f9 100644 --- a/src/qt/locale/bitcoin_fr_CA.ts +++ b/src/qt/locale/bitcoin_fr_CA.ts @@ -23,20 +23,6 @@ Distributed under the MIT/X11 software license, see the accompanying file COPYIN This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (https://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - - -This is experimental software. - -Distributed under the MIT/X11 software license, see the accompanying file COPYING 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. - - Ce logiciel est expérimental. - - Distribué sous licence logicielle MIT/X11, voir le fichier COPYING joint ou http://www.opensource.org/licenses/mit-license.php. - - Ce produit comprend des logiciels développés par le projet OpenSSL afin d'être utilisés dans la boîte à outils OpenSSL (http://www.openssl.org/), un logiciel de chiffrement écrit par Eric Young (eay@cryptsoft.com), et un logiciel UPnP développé par Thomas Bernard. - AddressBookPage @@ -313,7 +299,7 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + Wallet Portefeuille @@ -323,7 +309,7 @@ This product includes software developed by the OpenSSL Project for use in the O Gridcoin - + &Overview &Vue d'ensemble @@ -439,28 +425,42 @@ This product includes software developed by the OpenSSL Project for use in the O Afficher des informations au sujet du Gridcoin - - &Neural Network + + Scraper: waiting on wallet to sync. - - Neural Network + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. - &New User Wizard + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. - - + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + New User Wizard - + %n second(s) ago il y a %n seconde @@ -492,7 +492,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Voting @@ -502,7 +502,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Diagnostics @@ -536,14 +536,6 @@ This product includes software developed by the OpenSSL Project for use in the O Encrypt or decrypt wallet Crypter ou décrypter le portefeuille - - &Backup Wallet... - Sauvegarder le &portefeuille... - - - Backup wallet to another location - Sauvegarder le portefeuille vers un autre emplacement - &Backup Wallet/Config... @@ -615,7 +607,7 @@ This product includes software developed by the OpenSSL Project for use in the O Ouvrir une console de débogage et de diagnostic - + &File &Fichier @@ -630,24 +622,19 @@ This product includes software developed by the OpenSSL Project for use in the O - - &Advanced - - - - + &Help &Aide - + [testnet] [testnet] - + Gridcoin client Client Gridcoin @@ -664,34 +651,18 @@ This product includes software developed by the OpenSSL Project for use in the O - - %1 second(s) ago - il y a %1 seconde - - - %1 minute(s) ago - il y a %1 minute - - - %1 hour(s) ago - il y a %1 heure - - - %1 day(s) ago - il y a %1 jour - Up to date À jour - + Catching up... Rattrapage en cours… - + Last received block was generated %1. Le dernier block reçu à été généré %1. @@ -751,17 +722,17 @@ This product includes software developed by the OpenSSL Project for use in the O Amount: %2 Type: %3 Address: %4 - Date : %1 -Montant : %2 -Type : %3 -Adresse : %4 + Date : %1 +Montant : %2 +Type : %3 +Adresse : %4 {1 ?} {2 ?} {3 ?} {4?} - + Wallet is <b>encrypted</b> and currently %1 @@ -776,7 +747,7 @@ Adresse : %4 - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -786,19 +757,7 @@ Adresse : %4 - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Date : %1 -Montant : %2 -Type : %3 -Adresse : %4 - - - - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. L'adresse du portefeuille Gridcoin n'as pas pu être correctement identifiée, car invalide ou malformée. @@ -809,10 +768,6 @@ Adresse : %4 URI handling Prise en charge de l'URL - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Le portefeuille est <b>crypté</b> et est actuellement <b>déverrouillé</b> - Wallet is <b>encrypted</b> and currently <b>locked</b> @@ -851,7 +806,7 @@ Adresse : %4 - + %n second(s) @@ -883,27 +838,7 @@ Adresse : %4 - Not staking because wallet is locked - Ne stack pas, votre portefeuilles est verouillé - - - Not staking because wallet is offline - Ne stack pas, votre portefeuilles est hors ligne - - - Not staking because wallet is syncing - Ne stack pas, votre portefeuille est en cours de synchronisation - - - Not staking because you don't have mature coins - Ne stack pas, vos monnaies ne sont pas encore matures - - - Not staking - Pas de stacking - - - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. Une erreur fatale a été rencontrée. L'application Gridcoin ne peut plus être s'exécuter de façon correcte et doit se terminer. @@ -911,7 +846,7 @@ Adresse : %4 ClientModel - + Network Alert Alerte réseau @@ -936,7 +871,7 @@ Adresse : %4 Amount: - Montant : + Montant : @@ -978,10 +913,6 @@ Adresse : %4 &List mode - - List mode - Mode liste - Amount @@ -1317,7 +1248,7 @@ Les montants inférieurs à 0.546 fois les frais minimum de relais apparaissent The entered address "%1" is already in the address book. - L’adresse fournie « %1 » est déjà présente dans le carnet d'adresses. + L’adresse fournie « %1 » est déjà présente dans le carnet d'adresses. @@ -1355,7 +1286,7 @@ Les montants inférieurs à 0.546 fois les frais minimum de relais apparaissent Set language, for example "de_DE" (default: system locale) - Définir la langue, par exemple « fr_FR » (par défaut : la langue du système) + Définir la langue, par exemple « fr_FR » (par défaut : la langue du système) @@ -1376,7 +1307,7 @@ Les montants inférieurs à 0.546 fois les frais minimum de relais apparaissent NewPollDialog - + Create Poll @@ -1529,10 +1460,6 @@ Les montants inférieurs à 0.546 fois les frais minimum de relais apparaissent &Connect through SOCKS proxy: &Connexion à travers du proxy SOCKS: - - Proxy &IP: - &IP du serveur mandataire : - Pro&xy IP: @@ -1546,7 +1473,7 @@ Les montants inférieurs à 0.546 fois les frais minimum de relais apparaissent &Port: - &Port : + &Port : @@ -1556,7 +1483,7 @@ Les montants inférieurs à 0.546 fois les frais minimum de relais apparaissent SOCKS &Version: - &Version SOCKS : + &Version SOCKS : @@ -1596,7 +1523,7 @@ Les montants inférieurs à 0.546 fois les frais minimum de relais apparaissent User Interface &language: - &Langue de l'interface utilisateur : + &Langue de l'interface utilisateur : @@ -1606,7 +1533,7 @@ Les montants inférieurs à 0.546 fois les frais minimum de relais apparaissent &Unit to show amounts in: - &Unité d'affichage des montants : + &Unité d'affichage des montants : @@ -1826,6 +1753,14 @@ Les montants inférieurs à 0.546 fois les frais minimum de relais apparaissent désynchronisé + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1851,7 +1786,7 @@ Les montants inférieurs à 0.546 fois les frais minimum de relais apparaissent Amount: - Montant : + Montant : @@ -1892,7 +1827,7 @@ Les montants inférieurs à 0.546 fois les frais minimum de relais apparaissent - + &Information &Informations @@ -1914,7 +1849,7 @@ Les montants inférieurs à 0.546 fois les frais minimum de relais apparaissent - + N/A N.D. @@ -2063,6 +1998,11 @@ Les montants inférieurs à 0.546 fois les frais minimum de relais apparaissent Clear console Nettoyer la console + + + &Scraper + + Yes @@ -2089,7 +2029,7 @@ Les montants inférieurs à 0.546 fois les frais minimum de relais apparaissent Taper <b>help</b> pour afficher une vue générale des commandes disponibles. - + %1 B @@ -2177,7 +2117,7 @@ Les montants inférieurs à 0.546 fois les frais minimum de relais apparaissent Amount: - Montant : + Montant : @@ -2250,7 +2190,7 @@ Les montants inférieurs à 0.546 fois les frais minimum de relais apparaissent Balance: - Solde : + Solde : @@ -2391,12 +2331,12 @@ Les montants inférieurs à 0.546 fois les frais minimum de relais apparaissent Formulaire - + &Label: - &Étiquette : + &Étiquette : - + Enter a label for this address to add it to your address book Saisir une étiquette pour cette adresse afin de l’ajouter à votre carnet d’adresses @@ -2404,7 +2344,7 @@ Les montants inférieurs à 0.546 fois les frais minimum de relais apparaissent Pay &To: - &Payer à : + &Payer à : @@ -2442,22 +2382,17 @@ Les montants inférieurs à 0.546 fois les frais minimum de relais apparaissent Message: - + Send Custom Message to a Gridcoin Recipient - + A&mount: - &Montant : + &Montant : - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2572,7 +2507,7 @@ Les montants inférieurs à 0.546 fois les frais minimum de relais apparaissent Click "Sign Message" to generate signature - Cliquez sur « Signer le message » pour générer la signature + Cliquez sur « Signer le message » pour générer la signature @@ -2706,26 +2641,47 @@ Les montants inférieurs à 0.546 fois les frais minimum de relais apparaissent - + Source Source - Generated - Généré + + Generated in CoinBase + - - Generated in CoinBase + + MINED - POS - - Generated, PoS + + MINED - POR - + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From De @@ -2839,23 +2795,11 @@ Les montants inférieurs à 0.546 fois les frais minimum de relais apparaissent Transaction Inputs - - Transaction ID - ID de la transaction - Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Transaction - Transaction - - - Inputs - Entrants - Amount @@ -2885,12 +2829,7 @@ Les montants inférieurs à 0.546 fois les frais minimum de relais apparaissent Ce panneau affiche une description détaillée de la transaction - - View Attachment - - - - + Execute Contract @@ -2899,21 +2838,11 @@ Les montants inférieurs à 0.546 fois les frais minimum de relais apparaissent C&lose - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Date @@ -2986,7 +2915,7 @@ Les montants inférieurs à 0.546 fois les frais minimum de relais apparaissent Généré mais pas accepté - + Received with Reçue avec @@ -3006,32 +2935,42 @@ Les montants inférieurs à 0.546 fois les frais minimum de relais apparaissent Paiement à vous-même - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (n.d) - + Transaction status. Hover over this field to show number of confirmations. État de la transaction. Laissez le pointeur de la souris sur ce champ pour voir le nombre de confirmations. @@ -3217,7 +3156,7 @@ Les montants inférieurs à 0.546 fois les frais minimum de relais apparaissent Range: - Intervalle : + Intervalle : @@ -3228,7 +3167,7 @@ Les montants inférieurs à 0.546 fois les frais minimum de relais apparaissent VotingChartDialog - + Poll Results @@ -3372,7 +3311,7 @@ Les montants inférieurs à 0.546 fois les frais minimum de relais apparaissent VotingVoteDialog - + PlaceVote @@ -3405,7 +3344,7 @@ Les montants inférieurs à 0.546 fois les frais minimum de relais apparaissent WalletModel - + Sending... Envoi... @@ -3413,12 +3352,12 @@ Les montants inférieurs à 0.546 fois les frais minimum de relais apparaissent bitcoin-core - + To use the %s option Pour utiliser l'option %s - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -3433,12 +3372,12 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo - + Error Erreur - + An error occurred while setting up the RPC port %u for listening on IPv6, falling back to IPv4: %s Une erreur est survenue lors du réglage du port RPC %u pour écouter sur IPv6, retour à IPv4 : %s @@ -3457,7 +3396,7 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo You must set rpcpassword=<password> in the configuration file: %s If the file does not exist, create it with owner-readable-only file permissions. - Vous devez ajouter la ligne rpcpassword=<mot-de-passe> au fichier de configuration : + Vous devez ajouter la ligne rpcpassword=<mot-de-passe> au fichier de configuration : %s Si le fichier n'existe pas, créez-le avec les droits de lecture seule accordés au propriétaire. @@ -3472,7 +3411,7 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco - + Boinc Mining @@ -3482,7 +3421,7 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco - + Error obtaining next project. Error 06172014. @@ -3522,12 +3461,32 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -3569,7 +3528,7 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco Usage: - Utilisation : + Utilisation : @@ -3577,7 +3536,7 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco - + List commands Lister les commandes @@ -3587,7 +3546,7 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco Obtenir de l’aide pour une commande - + None @@ -3677,6 +3636,16 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3737,6 +3706,11 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco ERROR + + + Entire balance reserved + + Expires @@ -3797,11 +3771,6 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco Message Message - - - Messate Type - - Miner: @@ -3838,19 +3807,14 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco - - No coins; - - - - + Offline; Options: - Options : + Options : @@ -3858,12 +3822,7 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3925,25 +3884,25 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco Set database cache size in megabytes (default: 25) - Définir la taille du tampon en mégaoctets (par défaut : 25) + Définir la taille du tampon en mégaoctets (par défaut : 25) Set database disk log size in megabytes (default: 100) - Définir la taille du tampon en mégaoctets (par défaut : 100) + Définir la taille du tampon en mégaoctets (par défaut : 100) Specify connection timeout in milliseconds (default: 5000) - Spécifier le délai d'expiration de la connexion en millisecondes (par défaut : 5 000) + Spécifier le délai d'expiration de la connexion en millisecondes (par défaut : 5 000) - + Connect through socks proxy Se connecter à travers un proxy socks - + Select the version of socks proxy to use (4-5, default: 5) Sélectionner la version du proxy socks à utiliser (4-5, par défaut: 5) @@ -3953,27 +3912,27 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco Utiliser un proxy pour atteindre les services cachés (défaut: équivalent à -proxy) - + Allow DNS lookups for -addnode, -seednode and -connect Autoriser les recherches DNS pour -addnode, -seednode et -connect - + Listen for connections on <port> (default: 32749 or testnet: 32748) Écouter les connexions sur le <port> (default: 15714 or testnet: 25714) {32749 ?} {32748)?} Maintain at most <n> connections to peers (default: 125) - Garder au plus <n> connexions avec les pairs (par défaut : 125) + Garder au plus <n> connexions avec les pairs (par défaut : 125) - + Add a node to connect to and attempt to keep the connection open Ajouter un nœud auquel se connecter et tenter de garder la connexion ouverte - + Connect only to the specified node(s) Ne se connecter qu'au(x) nœud(s) spécifié(s) @@ -3983,28 +3942,24 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco Se connecter à un nœud pour obtenir des adresses de pairs puis se déconnecter - + Specify your own public address Spécifier votre propre adresse publique - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) Se connecter uniquement aux nœuds du réseau <net> (IPv4, IPv6 ou Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - Découvrir sa propre adresse IP (par défaut : 1 lors de l'écoute et si aucun -externalip) - - - Find peers using internet relay chat (default: 0) - Find peers using internet relay chat (default: 1) {0)?} + Découvrir sa propre adresse IP (par défaut : 1 lors de l'écoute et si aucun -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) - Accepter les connexions entrantes (par défaut : 1 si aucun -proxy ou -connect ) + Accepter les connexions entrantes (par défaut : 1 si aucun -proxy ou -connect ) @@ -4012,31 +3967,27 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco Connexion à l'adresse fournie. Utiliser la notation [machine]:port pour les adresses IPv6 - + Find peers using DNS lookup (default: 1) Trouvez des peers utilisant DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) Synchronisation de l'horloge avec d'autres noeuds. Désactiver si votre serveur est déjà synchronisé avec le protocole NTP (défaut: 1) - Sync checkpoints policy (default: strict) - Politique de synchronisation des checkpoints (default: strict) - - - + Threshold for disconnecting misbehaving peers (default: 100) - Seuil de déconnexion des pairs de mauvaise qualité (par défaut : 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) + 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: 5000) Tampon maximal de réception par « -connection » <n>*1 000 octets (par défaut : 5 000) @@ -4046,22 +3997,22 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco Tampon maximal d'envoi par « -connection », <n>*1 000 octets (par défaut : 1 000) - + Use UPnP to map the listening port (default: 1 when listening) - Utiliser l'UPnP pour rediriger le port d'écoute (par défaut : 1 lors de l'écoute) + Utiliser l'UPnP pour rediriger le port d'écoute (par défaut : 1 lors de l'écoute) Use UPnP to map the listening port (default: 0) - Utiliser l'UPnP pour rediriger le port d'écoute (par défaut : 0) + Utiliser l'UPnP pour rediriger le port d'écoute (par défaut : 0) - + Fee per KB to add to transactions you send Frais par KB à ajouter à vos transactions sortantes - + When creating transactions, ignore inputs with value less than this (default: 0.01) Lors de la création de transactions, ignore les entrées dont la valeur sont inférieures (défaut: 0.01) @@ -4071,7 +4022,7 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco 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 @@ -4081,7 +4032,7 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco Utiliser le réseau de test - + Output extra debugging information. Implies all other -debug* options Voir les autres informations de débogage. Implique toutes les autres options -debug* @@ -4091,7 +4042,7 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco Voir les autres informations de débogage du réseau - + Prepend debug output with timestamp Horodater les messages de debug @@ -4121,7 +4072,7 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco Mot de passe pour les connexions JSON-RPC - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) Écouter les connexions JSON-RPC sur le <port> (default: 15715 or testnet: 25715) @@ -4131,12 +4082,12 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco 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 sur <ip> (par défaut : 127.0.0.1) + Envoyer des commandes au nœud fonctionnant sur <ip> (par défaut : 127.0.0.1) - + Execute command when the best block changes (%s in cmd is replaced by block hash) Exécuter la commande lorsque le meilleur bloc change (%s dans cmd est remplacé par le hachage du bloc) @@ -4146,12 +4097,12 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco Exécuter la commande lorsqu'une transaction de portefeuille change (%s dans la commande est remplacée par TxID) - + Require a confirmations for change (default: 0) Nécessite a confirmations pour modification (défaut: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) Force les scripts de transaction à utiliser des opérateurs PUSH canoniques (défaut: 1) @@ -4161,14 +4112,14 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco Exécute une commande lorsqu'une alerte correspondante est reçue (%s dans la commande est remplacé par message) - + Upgrade wallet to latest format Mettre à niveau le portefeuille vers le format le plus récent Set key pool size to <n> (default: 100) - Régler la taille de la réserve de clefs sur <n> (par défaut : 100) + Régler la taille de la réserve de clefs sur <n> (par défaut : 100) @@ -4176,12 +4127,12 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco Réanalyser la chaîne de blocs pour les transactions de portefeuille manquantes - + Attempt to recover private keys from a corrupt wallet.dat Tenter de récupérer les clefs privées d'un wallet.dat corrompu - + How many blocks to check at startup (default: 2500, 0 = all) Nombre de blocs à vérifier loes du démarrage (défaut: 2500, 0 = tous) @@ -4196,12 +4147,12 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco Importe les blocs d'un fichier externe blk000?.dat - + Block creation options: Options de création de bloc : - + Set minimum block size in bytes (default: 0) Définir la taille minimale de bloc en octets (par défaut : 0) @@ -4211,12 +4162,12 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco Fixer la taille maximale d'un block en bytes (default: 250000) - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) Fixer la taille maximale d'un block en bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) Options SSL : (voir le Wiki de Bitcoin pour les instructions de configuration du SSL) @@ -4228,29 +4179,25 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco Server certificate file (default: server.cert) - Fichier de certificat serveur (par défaut : 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) - Algorithmes de chiffrements acceptés (défaut: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) + Clef privée du serveur (par défaut : server.pem) - + Invalid amount for -paytxfee=<amount>: '%s' - Montant invalide pour -paytxfee=<montant> : « %s » + Montant invalide pour -paytxfee=<montant> : « %s » - + 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. - + Invalid amount for -mininput=<amount>: '%s' Montant invalide pour -mininput=<amount>: '%s' @@ -4260,22 +4207,22 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco - + Wallet %s resides outside data directory %s. Le portefeuille %s réside en dehors répertoire de données %s - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. Echec lors de la tentative de verrouillage des données du répertoire %s. L'application Gridcoin est probablement déjà en cours d'exécution - + Verifying database integrity... Vérification d'intégrité de la base de données... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. Erreur lors de l'initialisation de l'environnement de base de données %s! Afin de procéder à la récupération, une SAUVEGARDE DE CE REPERTOIRE est nécessaire, puis, supprimez le contenu entier de ce répertoire, à l'exception du fichier wallet.dat @@ -4285,7 +4232,7 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco Avertissement : wallet.dat corrompu, données récupérées ! Le fichier wallet.dat original a été enregistré en tant que wallet.{timestamp}.bak dans %s ; si votre solde ou transactions sont incorrects vous devriez effectuer une restauration depuis une sauvegarde. - + Weight @@ -4295,19 +4242,19 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco wallet.dat corrompu, la récupération a échoué - + Unknown -socks proxy version requested: %i - Version inconnue de serveur mandataire -socks demandée : %i + Version inconnue de serveur mandataire -socks demandée : %i Unknown network specified in -onlynet: '%s' - Réseau inconnu spécifié sur -onlynet : « %s » + Réseau inconnu spécifié sur -onlynet : « %s » - + Invalid -proxy address: '%s' - Adresse -proxy invalide : « %s » + Adresse -proxy invalide : « %s » @@ -4315,31 +4262,25 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco Adresse -tor invalide: '%s' - + Cannot resolve -bind address: '%s' - Impossible de résoudre l'adresse -bind : « %s » + Impossible de résoudre l'adresse -bind : « %s » - + Failed to listen on any port. Use -listen=0 if you want this. Échec de l'écoute sur un port quelconque. Utilisez -listen=0 si vous voulez ceci. - + Cannot resolve -externalip address: '%s' - Impossible de résoudre l'adresse -externalip : « %s » + Impossible de résoudre l'adresse -externalip : « %s » - + Invalid amount for -reservebalance=<amount> Montant incorrect pour -reservebalance=<montant> - - Unable to sign checkpoint, wrong checkpointkey? - - Impossible de "signer" le checkpoint, mauvaise clef de checkpoint? - - Loading block index... @@ -4358,23 +4299,28 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco Error loading wallet.dat: Wallet corrupted - Erreur lors du chargement de wallet.dat : portefeuille corrompu + Erreur lors du chargement de wallet.dat : portefeuille corrompu - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. Avertissement : une erreur est survenue lors de la lecture de wallet.dat ! Toutes les clefs ont été lues correctement mais les données de transaction ou les entrées du carnet d'adresses sont peut-être incorrectes ou manquantes. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin Erreur de chargement du fichier wallet.dat: le portefeuille nécessite une version plus récente de l'application Gridcoin - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4386,12 +4332,12 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco le portefeuille nécessite d'être réédité : Merci de relancer l'application Gridcoin - + Error loading wallet.dat Erreur lors du chargement de wallet.dat - + Cannot downgrade wallet Impossible de revenir à une version inférieure du portefeuille @@ -4401,12 +4347,12 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco Impossible d'écrire l'adresse par défaut - + Rescanning... Nouvelle analyse… - + Importing blockchain data file. Importation du fichier blockchain @@ -4426,22 +4372,22 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco Erreur: Impossible de démarrer le noeud - + Done loading Chargement terminé - + Unable to bind to %s on this computer. Gridcoin is probably already running. Connexion au port %s impossible. L'application Gridcoin est probablement déjà en cours d'exécution - + Unable to bind to %s on this computer (bind returned error %d, %s) Impossible de se lier à %s sur cet ordinateur (bind a retourné l'erreur %d, %s) - + Error: Wallet locked, unable to create transaction Erreur: Portefeuille verrouillé, impossible d'effectuer cette transaction @@ -4451,27 +4397,27 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco Erreur: Portefeuille déverrouillé uniquement pour "stacking" , impossible d'effectuer cette transaction - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds Erreur: Cette transaction requière des frais minimum de %s a cause de son montant, de sa complexité ou de l'utilisation de fonds récemment reçus. - + Error: Transaction creation failed Erreur: La création de cette transaction à échouée - + Sending... Envoi... - + 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. Erreur: La transaction a été rejetée. Cela peut se produire si une quantité d'argent de votre portefeuille a déjà été dépensée, comme dans le cas où une copie du fichier wallet.dat aurait été utilisée afin d'effectuer des dépenses, à la place du fichier courant. - + Invalid amount Montant invalide @@ -4481,26 +4427,14 @@ Si le fichier n'existe pas, créez-le avec les droits de lecture seule acco Fonds insuffisants - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. Avertissement: Veuillez vérifier la date et l'heure de votre ordinateur. Gridcoin ne pourra pas fonctionner correctement si l'horloge est réglée de façon incorrecte - Warning: This version is obsolete, upgrade required! - Avertissement : cette version est obsolète, une mise à niveau est nécessaire ! - - - WARNING: synchronized checkpoint violation detected, but skipped! - ATTENTION : violation du checkpoint de synchronisation, mais ignorée! - - - + Warning: Disk space is low! Avertissement: Espace disque faible! - - WARNING: Invalid checkpoint found! Displayed transactions may not be correct! You may need to upgrade, or notify developers. - AVERTISSEMENT: point de contrôle invalide! Les transactions affichées peuvent être incorrectes! Il est peut-être nécessaire d'effectuer une mise à jour, ou d'avertir les développeurs du projet. - diff --git a/src/qt/locale/bitcoin_gl.ts b/src/qt/locale/bitcoin_gl.ts index 3350758d90..42864c5867 100644 --- a/src/qt/locale/bitcoin_gl.ts +++ b/src/qt/locale/bitcoin_gl.ts @@ -23,20 +23,6 @@ Distributed under the MIT/X11 software license, see the accompanying file COPYIN This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (https://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - - -This is experimental software. - -Distributed under the MIT/X11 software license, see the accompanying file COPYING 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. - -Isto é software experimental. - -Distribuído baixo a licencia de software MIT/X11, véxase o arquivo que acompaña COPYING ou http://www.opensource.org/licenses/mit-license.php. - -Este produto inclúe software desenvolvido polo OpenSSL Project para o uso no OpenSSL Toolkit (http://www.openssl.org/) e software criptográfico escrito por Eric Young (eay@cryptsoft.com) e software UPnP escrito por Thomas Bernard. - AddressBookPage @@ -313,12 +299,12 @@ Este produto inclúe software desenvolvido polo OpenSSL Project para o uso no Op BitcoinGUI - + Gridcoin Gridcoin - + Send coins to a Gridcoin address Enviar moedas a unha dirección Gridcoin @@ -394,28 +380,42 @@ Este produto inclúe software desenvolvido polo OpenSSL Project para o uso no Op Amosa información sobre Gridcoin - - &Neural Network + + Scraper: waiting on wallet to sync. - - Neural Network + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. - &New User Wizard + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. - - + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + New User Wizard - + &Voting @@ -425,7 +425,7 @@ Este produto inclúe software desenvolvido polo OpenSSL Project para o uso no Op - + &Diagnostics @@ -490,24 +490,19 @@ Este produto inclúe software desenvolvido polo OpenSSL Project para o uso no Op Exportar datos da pestana actual a un arquivo - + &Community - - &Advanced - - - - + [testnet] [testnet] - + Gridcoin client Cliente Gridcoin @@ -525,23 +520,7 @@ Este produto inclúe software desenvolvido polo OpenSSL Project para o uso no Op - %1 second(s) ago - Fai %1 segundo - - - %1 minute(s) ago - Fai %1 minuto - - - %1 hour(s) ago - Fai %1 hora - - - %1 day(s) ago - Fai %1 día - - - + Last received block was generated %1. Último bloque recibido foi generado %1. @@ -601,7 +580,7 @@ Dirección: %4 ?} {4?} - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -611,19 +590,7 @@ Dirección: %4 - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Data: %1 -Cantidade: %2 -Tipo: %3 -Dirección: %4 - - - - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. @@ -682,7 +649,7 @@ Dirección: %4 - + %n second(s) @@ -714,27 +681,7 @@ Dirección: %4 - Not staking because wallet is locked - Non "staking" porque a carteira está bloqueada - - - Not staking because wallet is offline - Non "staking" porque a carteira está sen conexión - - - Not staking because wallet is syncing - Non "staking" porque a carteira está a sincronizar. - - - Not staking because you don't have mature coins - Non "staking" porque non tes moedas maduras - - - Not staking - Non "staking" - - - + &Overview &Vista xeral @@ -764,7 +711,7 @@ Dirección: %4 Saír da aplicación - + &Options... &Opcións... @@ -773,19 +720,11 @@ Dirección: %4 &Encrypt Wallet... &Encriptar Moedeiro... - - &Backup Wallet... - Copia de &Seguridade do Moedeiro... - &Change Passphrase... &Cambiar contrasinal... - - Backup wallet to another location - Facer copia de seguridade do moedeiro noutra localización - Change the passphrase used for wallet encryption @@ -807,12 +746,12 @@ Dirección: %4 &Verificar mensaxe... - + Wallet Moedeiro - + &Send &Enviar @@ -822,12 +761,12 @@ Dirección: %4 &Recibir - + &Show / Hide &Amosar/Agachar - + &File &Arquivo @@ -837,12 +776,12 @@ Dirección: %4 Axus&tes - + &Help A&xuda - + %n second(s) ago Fai %n segundo @@ -879,12 +818,12 @@ Dirección: %4 Actualizado - + Catching up... Poñendo ao día... - + Sent transaction Transacción enviada @@ -894,16 +833,12 @@ Dirección: %4 Transacción entrante - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - O moedeiro está <b>encriptado</b> e actualmente <b>desbloqueado</b> - - - + Wallet is <b>encrypted</b> and currently <b>locked</b> O moedeiro está <b>encriptado</b> e actualmente <b>bloqueado</b> - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. @@ -911,7 +846,7 @@ Dirección: %4 ClientModel - + Network Alert Alerta de Rede @@ -993,10 +928,6 @@ Dirección: %4 Priority Prioridade - - List mode - Modo lista - Amount @@ -1362,7 +1293,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1580,10 +1511,6 @@ This label turns red, if the priority is smaller than "medium". Map port using &UPnP Mapear porto empregando &UPnP - - Proxy &IP: - &IP do Proxy: - &Port: @@ -1812,6 +1739,14 @@ This label turns red, if the priority is smaller than "medium". non sincronizado + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1873,7 +1808,7 @@ This label turns red, if the priority is smaller than "medium". RPCConsole - + @@ -1885,7 +1820,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A N/A @@ -1905,12 +1840,12 @@ This label turns red, if the priority is smaller than "medium". Tempo de arranque - + Gridcoin - Debug Console - + Boost version @@ -2015,7 +1950,12 @@ This label turns red, if the priority is smaller than "medium". &Consola - + + &Scraper + + + + &Network Traffic &Tráfico de Rede @@ -2070,7 +2010,7 @@ This label turns red, if the priority is smaller than "medium". Escribe <b>axuda</b> para unha vista xeral dos comandos dispoñibles. - + %1 B %1 B @@ -2105,7 +2045,7 @@ This label turns red, if the priority is smaller than "medium". - + Welcome to the Gridcoin RPC console! @@ -2372,22 +2312,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: &Cantidade: - + Pay &To: Pagar &A: - + &Label: &Etiqueta: - + Alt+A Alt+A @@ -2407,12 +2347,12 @@ This label turns red, if the priority is smaller than "medium". Mensaxe: - + Form Formulario - + Enter a label for this address to add it to your address book Introduce unha etiqueta para esta dirección para engadila ao teu libro de direccións @@ -2433,17 +2373,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2692,26 +2627,47 @@ This label turns red, if the priority is smaller than "medium". - + Source Orixe - Generated - Xerado + + Generated in CoinBase + - - Generated in CoinBase + + MINED - POS - - Generated, PoS + + MINED - POR - + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From Dende @@ -2825,27 +2781,11 @@ This label turns red, if the priority is smaller than "medium". Transaction Inputs - - Transaction ID - ID de Transacción - Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - Información - - - Transaction - Transacción - - - Inputs - Entradas - Amount @@ -2875,12 +2815,7 @@ This label turns red, if the priority is smaller than "medium". Este panel amosa unha descripción detallada da transacción - - View Attachment - - - - + Execute Contract @@ -2889,21 +2824,11 @@ This label turns red, if the priority is smaller than "medium". C&lose &Pechar - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Data @@ -2976,7 +2901,7 @@ This label turns red, if the priority is smaller than "medium". Xerado pero non aceptado - + Received with Recibido con @@ -2996,32 +2921,42 @@ This label turns red, if the priority is smaller than "medium". Pago a ti mesmo - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (n/a) - + Transaction status. Hover over this field to show number of confirmations. Estado da transacción. Pasa por riba deste campo para amosar o número de confirmacións. @@ -3218,7 +3153,7 @@ This label turns red, if the priority is smaller than "medium". VotingChartDialog - + Poll Results @@ -3362,7 +3297,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3395,7 +3330,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3403,37 +3338,37 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: Opcións: - + Specify data directory Especificar directorio de datos - + Connect to a node to retrieve peer addresses, and disconnect Conectar a nodo para recuperar direccións de pares, e desconectar - + Specify your own public address Especificar a túa propia dirección pública - + Accept command line and JSON-RPC commands Aceptar liña de comandos e comandos JSON-RPC - + Run in the background as a daemon and accept commands Executar no fondo como un demo e aceptar comandos - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) Executar comando cando unha transacción do moedeiro cambia (%s no comando é substituído por TxID) @@ -3443,12 +3378,12 @@ This label turns red, if the priority is smaller than "medium". Opcións de creación de bloque: - + Failed to listen on any port. Use -listen=0 if you want this. Fallou escoitar en calquera porto. Emprega -listen=0 se queres esto. - + Specify configuration file (default: gridcoinresearch.conf) @@ -3478,7 +3413,7 @@ This label turns red, if the priority is smaller than "medium". Contrasinal para conexións JSON-RPC - + Execute command when the best block changes (%s in cmd is replaced by block hash) Executar comando cando o mellor bloque cambie (%s no comando é sustituído polo hash do bloque) @@ -3488,7 +3423,7 @@ This label turns red, if the priority is smaller than "medium". Permitir lookup de DNS para -addnote, -seednote e -connect - + Loading addresses... Cargando direccións... @@ -3498,12 +3433,12 @@ This label turns red, if the priority is smaller than "medium". Dirección -proxy inválida: '%s' - + Unknown network specified in -onlynet: '%s' Rede descoñecida especificada en -onlynet: '%s' - + Insufficient funds Fondos insuficientes @@ -3513,17 +3448,17 @@ This label turns red, if the priority is smaller than "medium". Cargando índice de bloques... - + Add a node to connect to and attempt to keep the connection open Engadir un nodo ao que conectarse e tentar manter a conexión aberta - + Loading wallet... Cargando moedeiro... - + Cannot downgrade wallet Non se pode desactualizar o moedeiro @@ -3533,27 +3468,27 @@ This label turns red, if the priority is smaller than "medium". Non se pode escribir a dirección por defecto - + Rescanning... Rescaneando... - + Done loading Carga completa - + Error Erro - + To use the %s option Empregar a opción %s - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -3677,6 +3612,16 @@ Se o arquivo non existe, debes crealo con permisos de so lectura para o propieta Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3737,6 +3682,11 @@ Se o arquivo non existe, debes crealo con permisos de so lectura para o propieta ERROR + + + Entire balance reserved + + Expires @@ -3797,11 +3747,6 @@ Se o arquivo non existe, debes crealo con permisos de so lectura para o propieta Message Mensaxe - - - Messate Type - - Miner: @@ -3838,12 +3783,7 @@ Se o arquivo non existe, debes crealo con permisos de so lectura para o propieta - - No coins; - - - - + Offline; @@ -3853,12 +3793,7 @@ Se o arquivo non existe, debes crealo con permisos de so lectura para o propieta - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3938,7 +3873,7 @@ Se o arquivo non existe, debes crealo con permisos de so lectura para o propieta - + List commands Listar comandos @@ -3953,7 +3888,7 @@ Se o arquivo non existe, debes crealo con permisos de so lectura para o propieta Gridcoin - + This help message Esta mensaxe de axuda @@ -3978,12 +3913,12 @@ Se o arquivo non existe, debes crealo con permisos de so lectura para o propieta Especificar tempo límite da conexión en milisegundos (por defecto: 5000) - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3993,7 +3928,7 @@ Se o arquivo non existe, debes crealo con permisos de so lectura para o propieta - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -4003,22 +3938,22 @@ Se o arquivo non existe, debes crealo con permisos de so lectura para o propieta Manter como moito <n> conexións con pares (por defecto: 125) - + Connect only to the specified node(s) Conectar so ao(s) nodo(s) especificado(s) - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) Conectar so a nodos na rede <net> (IPv4, IPv6 ou Tor) - + Discover own IP address (default: 1 when listening and no -externalip) Descobrir dirección IP propia (por defecto: 1 se á escoita e non -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) Aceptar conexións de fóra (por defecto: 1 se non -proxy ou -connect) @@ -4028,27 +3963,27 @@ Se o arquivo non existe, debes crealo con permisos de so lectura para o propieta - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + Threshold for disconnecting misbehaving peers (default: 100) Umbral para desconectar pares con mal comportamento (por defecto: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Número de segundos para manter sen reconectar aos pares con mal comportamento (por defecto: 86400) - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 5000) Máximo buffer por-conexión para recibir, <n>*1000 bytes (por defecto: 5000) @@ -4058,7 +3993,7 @@ Se o arquivo non existe, debes crealo con permisos de so lectura para o propieta Máximo buffer por-conexión para enviar, <n>*1000 bytes (por defecto: 1000) - + Use UPnP to map the listening port (default: 1 when listening) Usar UPnP para mapear o porto de escoita (por defecto: 1 se á escoita) @@ -4068,22 +4003,22 @@ Se o arquivo non existe, debes crealo con permisos de so lectura para o propieta Usar UPnP para mapear o porto de escoita (por defecto: 0) - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) - + Use the test network Empregar a rede de proba - + Output extra debugging information. Implies all other -debug* options @@ -4093,7 +4028,7 @@ Se o arquivo non existe, debes crealo con permisos de so lectura para o propieta - + Prepend debug output with timestamp @@ -4103,7 +4038,7 @@ Se o arquivo non existe, debes crealo con permisos de so lectura para o propieta - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -4113,7 +4048,7 @@ Se o arquivo non existe, debes crealo con permisos de so lectura para o propieta Permitir conexións JSON-RPC dende direccións IP especificadas - + Send commands to node running on <ip> (default: 127.0.0.1) Enviar comandos a nodo executando na <ip> (por defecto: 127.0.0.1) @@ -4123,7 +4058,7 @@ Se o arquivo non existe, debes crealo con permisos de so lectura para o propieta - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -4133,7 +4068,7 @@ Se o arquivo non existe, debes crealo con permisos de so lectura para o propieta - + Upgrade wallet to latest format Actualizar moedeiro ao formato máis recente @@ -4148,7 +4083,7 @@ Se o arquivo non existe, debes crealo con permisos de so lectura para o propieta Rescanear transaccións ausentes na cadea de bloques - + Attempt to recover private keys from a corrupt wallet.dat Tentar recuperar claves privadas dende un wallet.dat corrupto @@ -4168,7 +4103,7 @@ Se o arquivo non existe, debes crealo con permisos de so lectura para o propieta - + Boinc Mining @@ -4178,7 +4113,7 @@ Se o arquivo non existe, debes crealo con permisos de so lectura para o propieta - + Error obtaining next project. Error 06172014. @@ -4228,12 +4163,32 @@ Se o arquivo non existe, debes crealo con permisos de so lectura para o propieta - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -4248,12 +4203,12 @@ Se o arquivo non existe, debes crealo con permisos de so lectura para o propieta - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) Opcións SSL: (ver ?a Wiki Bitcoin as instrucción de configuración de SSL) @@ -4273,17 +4228,17 @@ Se o arquivo non existe, debes crealo con permisos de so lectura para o propieta Clave privada do servidor (por defecto: server.perm) - + Invalid amount for -paytxfee=<amount>: '%s' Cantidade inválida para -paytxfee=<cantidade>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. Precaución: -paytxfee está posto moi algo! Esta é a tarifa de transacción que ti pagarás se envías unha transacción. - + Invalid amount for -mininput=<amount>: '%s' @@ -4293,22 +4248,22 @@ Se o arquivo non existe, debes crealo con permisos de so lectura para o propieta - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4318,10 +4273,15 @@ Se o arquivo non existe, debes crealo con permisos de so lectura para o propieta Precaución: wallet.dat corrupto, datos salvagardados! O wallet.dat orixinal foi gardado como wallet.{timestamp}.bak en %s; se o teu balance ou transaccións son incorrectas deberías restauralas dende unha copia de seguridade. - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4338,17 +4298,17 @@ Se o arquivo non existe, debes crealo con permisos de so lectura para o propieta wallet.dat corrupto, fallou o gardado - + Unknown -socks proxy version requested: %i Versión solicitada de proxy -socks descoñecida: %i - + Invalid -tor address: '%s' - + Cannot resolve -bind address: '%s' Non se pode resolver a dirección -bind: '%s' @@ -4358,7 +4318,7 @@ Se o arquivo non existe, debes crealo con permisos de so lectura para o propieta Non se pode resolver dirección -externalip: '%s' - + Invalid amount for -reservebalance=<amount> @@ -4373,22 +4333,22 @@ Se o arquivo non existe, debes crealo con permisos de so lectura para o propieta Erro cargando wallet.dat: Moedeiro corrupto - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. Precaución: erro lendo wallet.dat! Tódalas claves lidas correctamente, pero os datos de transacción ou as entradas do libro de direccións podrían estar ausentes ou incorrectos. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete - + Error loading wallet.dat Erro cargando wallet.dat @@ -4408,17 +4368,17 @@ Se o arquivo non existe, debes crealo con permisos de so lectura para o propieta - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) Imposible enlazar con %s neste ordenador (enlace devolveu erro %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4428,41 +4388,37 @@ Se o arquivo non existe, debes crealo con permisos de so lectura para o propieta - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount Cantidade inválida - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - Warning: This version is obsolete, upgrade required! - Precaución: Esta versión é obsoleta, precísase unha actualización! - - - + Warning: Disk space is low! diff --git a/src/qt/locale/bitcoin_he.ts b/src/qt/locale/bitcoin_he.ts index adae3afa02..8f99920579 100644 --- a/src/qt/locale/bitcoin_he.ts +++ b/src/qt/locale/bitcoin_he.ts @@ -299,12 +299,12 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + Sign &message... &חתימה על הודעה… - + &Overview &סקירה @@ -400,7 +400,7 @@ This product includes software developed by the OpenSSL Project for use in the O יציאה מהתכנית - + &Options... &אפשרויות… @@ -414,19 +414,11 @@ This product includes software developed by the OpenSSL Project for use in the O Encrypt or decrypt wallet - - &Backup Wallet... - &גיבוי הארנק… - &Change Passphrase... ה&חלפת מילת הצופן… - - Backup wallet to another location - גיבוי הארנק למיקום אחר - Change the passphrase used for wallet encryption @@ -478,7 +470,7 @@ This product includes software developed by the OpenSSL Project for use in the O &אימות הודעה… - + Wallet ארנק @@ -488,7 +480,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Send &שליחה @@ -508,28 +500,12 @@ This product includes software developed by the OpenSSL Project for use in the O - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -539,7 +515,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Diagnostics @@ -569,14 +545,14 @@ This product includes software developed by the OpenSSL Project for use in the O - + [testnet] [רשת-בדיקה] - + Gridcoin client @@ -594,7 +570,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Last received block was generated %1. @@ -647,7 +623,7 @@ Address: %4 - + Wallet is <b>encrypted</b> and currently %1 @@ -694,7 +670,7 @@ Address: %4 - + %n second(s) שנייה אחת @@ -736,7 +712,37 @@ Address: %4 - + + Scraper: waiting on wallet to sync. + + + + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + &File &קובץ @@ -751,17 +757,12 @@ Address: %4 - - &Advanced - - - - + &Help ע&זרה - + %n second(s) ago @@ -798,12 +799,12 @@ Address: %4 עדכני - + Catching up... מתבצע עדכון… - + Sent transaction העברת שליחה @@ -813,7 +814,7 @@ Address: %4 העברת קבלה - + URI handling טיפול בכתובות @@ -824,17 +825,13 @@ Address: %4 URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. - - 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 occurred. Gridcoin can no longer continue safely and will quit. @@ -842,7 +839,7 @@ Address: %4 ClientModel - + Network Alert @@ -924,10 +921,6 @@ Address: %4 (un)select all ביטול/אישור הבחירה - - List mode - מצב רשימה - Amount @@ -1293,7 +1286,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1506,10 +1499,6 @@ This label turns red, if the priority is smaller than "medium". Map port using &UPnP מיפוי פתחה באמצעות UPnP - - Proxy &IP: - כתובת ה־IP של המ&תווך: - &Port: @@ -1743,6 +1732,14 @@ This label turns red, if the priority is smaller than "medium". + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1804,7 +1801,7 @@ This label turns red, if the priority is smaller than "medium". RPCConsole - + @@ -1816,7 +1813,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A לא זמין @@ -1836,12 +1833,12 @@ This label turns red, if the priority is smaller than "medium". זמן עלייה - + Gridcoin - Debug Console - + Boost version @@ -1916,7 +1913,12 @@ This label turns red, if the priority is smaller than "medium". &פתיחה - + + &Scraper + + + + Command-line options אפשרויות שורת פקודה @@ -2001,7 +2003,7 @@ This label turns red, if the priority is smaller than "medium". ניתן להקליד <b>help</b> לקבלת סקירה של הפקודות הזמינות. - + %1 B %1 ב׳ @@ -2036,7 +2038,7 @@ This label turns red, if the priority is smaller than "medium". - + Welcome to the Gridcoin RPC console! @@ -2303,22 +2305,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: &כמות: - + Pay &To: לשלם ל&טובת: - + &Label: ת&ווית: - + Alt+A Alt+A @@ -2359,22 +2361,17 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Form טופס - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2577,22 +2574,17 @@ This label turns red, if the priority is smaller than "medium". - + Source - + Generated in CoinBase - - Generated, PoS - - - - + From @@ -2709,7 +2701,7 @@ This label turns red, if the priority is smaller than "medium". - + Open for %n more block(s) @@ -2754,8 +2746,38 @@ This label turns red, if the priority is smaller than "medium". + + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + - + matures in %n more block(s) @@ -2772,10 +2794,6 @@ This label turns red, if the priority is smaller than "medium". Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - מידע - TransactionDescDialog @@ -2790,12 +2808,7 @@ This label turns red, if the priority is smaller than "medium". חלונית זו מציגה תיאור מפורט של ההעברה - - View Attachment - - - - + Execute Contract @@ -2804,21 +2817,11 @@ This label turns red, if the priority is smaller than "medium". C&lose סגירה - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date תאריך @@ -2891,27 +2894,7 @@ This label turns red, if the priority is smaller than "medium". - - Mined - DPOR - - - - - Minted - (Local) DPOR - - - - - Mined - PoR - - - - - Mined - Interest - - - - + Transaction status. Hover over this field to show number of confirmations. @@ -2931,7 +2914,7 @@ This label turns red, if the priority is smaller than "medium". - + Received with @@ -2951,12 +2934,42 @@ This label turns red, if the priority is smaller than "medium". - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) - + Type of transaction. @@ -3130,17 +3143,10 @@ This label turns red, if the priority is smaller than "medium". - - UpgradeDialog - - Hide - הסתר - - VotingChartDialog - + Poll Results @@ -3284,7 +3290,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3317,7 +3323,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3325,12 +3331,12 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: אפשרויות: - + This help message @@ -3365,12 +3371,12 @@ This label turns red, if the priority is smaller than "medium". - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3380,7 +3386,7 @@ This label turns red, if the priority is smaller than "medium". - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3390,7 +3396,7 @@ This label turns red, if the priority is smaller than "medium". - + Connect only to the specified node(s) @@ -3400,22 +3406,22 @@ This label turns red, if the priority is smaller than "medium". יש להתחבר למפרק כדי לדלות כתובות עמיתים ואז להתנתק - + Specify your own public address נא לציין את הכתובת הפומבית שלך - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -3425,22 +3431,22 @@ This label turns red, if the priority is smaller than "medium". - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + Threshold for disconnecting misbehaving peers (default: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) @@ -3535,6 +3541,16 @@ This label turns red, if the priority is smaller than "medium". Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3595,6 +3611,11 @@ This label turns red, if the priority is smaller than "medium". ERROR + + + Entire balance reserved + + Expires @@ -3660,11 +3681,6 @@ This label turns red, if the priority is smaller than "medium". Message הודעה - - - Messate Type - - Miner: @@ -3701,12 +3717,7 @@ This label turns red, if the priority is smaller than "medium". - - No coins; - - - - + Offline; @@ -3716,12 +3727,7 @@ This label turns red, if the priority is smaller than "medium". - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3801,12 +3807,12 @@ This label turns red, if the priority is smaller than "medium". - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) @@ -3816,12 +3822,12 @@ This label turns red, if the priority is smaller than "medium". קבלת פקודות משורת הפקודה ומ־JSON-RPC - + Use the test network - + Output extra debugging information. Implies all other -debug* options @@ -3831,7 +3837,7 @@ This label turns red, if the priority is smaller than "medium". - + Prepend debug output with timestamp @@ -3841,7 +3847,7 @@ This label turns red, if the priority is smaller than "medium". - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -3851,7 +3857,7 @@ This label turns red, if the priority is smaller than "medium". - + Send commands to node running on <ip> (default: 127.0.0.1) @@ -3861,7 +3867,7 @@ This label turns red, if the priority is smaller than "medium". - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -3871,7 +3877,7 @@ This label turns red, if the priority is smaller than "medium". - + Upgrade wallet to latest format @@ -3886,7 +3892,7 @@ This label turns red, if the priority is smaller than "medium". - + Attempt to recover private keys from a corrupt wallet.dat @@ -3906,7 +3912,7 @@ This label turns red, if the priority is smaller than "medium". - + Boinc Mining @@ -3916,7 +3922,7 @@ This label turns red, if the priority is smaller than "medium". - + Error obtaining next project. Error 06172014. @@ -3966,12 +3972,32 @@ This label turns red, if the priority is smaller than "medium". - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -3986,12 +4012,12 @@ This label turns red, if the priority is smaller than "medium". - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -4011,17 +4037,17 @@ This label turns red, if the priority is smaller than "medium". - + Invalid amount for -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - + Invalid amount for -mininput=<amount>: '%s' @@ -4031,22 +4057,22 @@ This label turns red, if the priority is smaller than "medium". - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4056,10 +4082,15 @@ This label turns red, if the priority is smaller than "medium". - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4076,17 +4107,17 @@ This label turns red, if the priority is smaller than "medium". - + Unknown -socks proxy version requested: %i - + Invalid -tor address: '%s' - + Cannot resolve -bind address: '%s' @@ -4096,7 +4127,7 @@ This label turns red, if the priority is smaller than "medium". - + Invalid amount for -reservebalance=<amount> @@ -4111,22 +4142,22 @@ This label turns red, if the priority is smaller than "medium". - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete - + Error loading wallet.dat @@ -4146,17 +4177,17 @@ This label turns red, if the priority is smaller than "medium". - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4166,47 +4197,47 @@ This label turns red, if the priority is smaller than "medium". - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - + Warning: Disk space is low! - + Run in the background as a daemon and accept commands ריצה כסוכן ברקע וקבלת פקודות - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) ביצוע פקודה כאשר העברה בארנק משתנה (%s ב־cmd יוחלף ב־TxID) @@ -4216,12 +4247,12 @@ This label turns red, if the priority is smaller than "medium". אפשרויות יצירת מקטע: - + Failed to listen on any port. Use -listen=0 if you want this. האזנה נכשלה בכל פורט. השתמש ב- -listen=0 אם ברצונך בכך. - + Specify wallet file (within data directory) ציון קובץ ארנק (בתוך תיקיית הנתונים) @@ -4246,7 +4277,7 @@ This label turns red, if the priority is smaller than "medium". ססמה לחיבורי JSON-RPC - + Execute command when the best block changes (%s in cmd is replaced by block hash) יש לבצע פקודה זו כשהמקטע הטוב ביותר משתנה (%s בפקודה יוחלף בגיבוב המקטע) @@ -4256,12 +4287,12 @@ This label turns red, if the priority is smaller than "medium". הפעלת בדיקת DNS עבור ‎-addnode,‏ ‎-seednode ו־‎-connect - + To use the %s option - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -4293,12 +4324,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Gridcoin version - + Usage: שימוש: @@ -4308,7 +4339,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + List commands @@ -4333,12 +4364,12 @@ If the file does not exist, create it with owner-readable-only file permissions. כתובת ‎-proxy לא תקינה: '%s' - + Unknown network specified in -onlynet: '%s' רשת לא ידועה צוינה דרך ‎-onlynet:‏ '%s' - + Insufficient funds אין מספיק כספים @@ -4348,17 +4379,17 @@ If the file does not exist, create it with owner-readable-only file permissions. מפתח המקטעים נטען… - + Add a node to connect to and attempt to keep the connection open הוספת מפרק להתחברות ולנסות לשמור על החיבור פתוח - + Loading wallet... הארנק בטעינה… - + Cannot downgrade wallet לא ניתן להחזיר את גרסת הארנק @@ -4368,17 +4399,17 @@ If the file does not exist, create it with owner-readable-only file permissions. לא ניתן לכתוב את כתובת בררת המחדל - + Rescanning... סריקה מחדש… - + Done loading טעינה הושלמה - + Error שגיאה diff --git a/src/qt/locale/bitcoin_hi_IN.ts b/src/qt/locale/bitcoin_hi_IN.ts index a8823cf490..8e59c95253 100644 --- a/src/qt/locale/bitcoin_hi_IN.ts +++ b/src/qt/locale/bitcoin_hi_IN.ts @@ -299,7 +299,7 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + &Overview &विवरण @@ -416,28 +416,42 @@ This product includes software developed by the OpenSSL Project for use in the O - - &Neural Network + + Scraper: waiting on wallet to sync. - - Neural Network + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. - &New User Wizard + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. - - + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + New User Wizard - + &Voting @@ -447,7 +461,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Diagnostics @@ -481,10 +495,6 @@ This product includes software developed by the OpenSSL Project for use in the O Encrypt or decrypt wallet - - &Backup Wallet... - &बैकप वॉलेट - &Change Passphrase... @@ -541,24 +551,19 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Community - - &Advanced - - - - + [testnet] [टेस्टनेट] - + Gridcoin client @@ -576,12 +581,12 @@ This product includes software developed by the OpenSSL Project for use in the O - + Catching up... - + Last received block was generated %1. @@ -634,7 +639,7 @@ Address: %4 - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -644,13 +649,13 @@ Address: %4 - + URI handling - + %n second(s) ago @@ -682,7 +687,7 @@ Address: %4 - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. @@ -735,7 +740,7 @@ Address: %4 - + %n second(s) @@ -767,12 +772,12 @@ Address: %4 - + Change the passphrase used for wallet encryption पहचान शब्द/अक्षर जो वॉलेट एनक्रिपशन के लिए इस्तेमाल किया है उसे बदलिए! - + Wallet वॉलेट @@ -782,7 +787,7 @@ Address: %4 - + &Backup Wallet/Config... @@ -792,7 +797,7 @@ Address: %4 - + &File &फाइल @@ -802,17 +807,17 @@ Address: %4 &सेट्टिंग्स - + &Help &मदद - + Up to date नवीनतम - + Sent transaction भेजी ट्रांजक्शन @@ -822,16 +827,12 @@ 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 occurred. Gridcoin can no longer continue safely and will quit. @@ -839,7 +840,7 @@ Address: %4 ClientModel - + Network Alert @@ -1286,7 +1287,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1732,6 +1733,14 @@ This label turns red, if the priority is smaller than "medium". + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1793,7 +1802,7 @@ This label turns red, if the priority is smaller than "medium". RPCConsole - + @@ -1805,7 +1814,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A लागू नही @@ -1816,12 +1825,12 @@ This label turns red, if the priority is smaller than "medium". जानकारी - + Gridcoin - Debug Console - + Boost version @@ -1970,6 +1979,11 @@ This label turns red, if the priority is smaller than "medium". Clear console + + + &Scraper + + Yes @@ -1996,7 +2010,7 @@ This label turns red, if the priority is smaller than "medium". - + %1 B @@ -2293,22 +2307,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: अमाउंट: - + Pay &To: प्राप्तकर्ता: - + &Label: लेबल: - + Alt+A Alt-A @@ -2323,12 +2337,12 @@ This label turns red, if the priority is smaller than "medium". Alt-P - + Form फार्म - + Enter a label for this address to add it to your address book @@ -2354,17 +2368,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2613,22 +2622,47 @@ This label turns red, if the priority is smaller than "medium". - + Source - + Generated in CoinBase - - Generated, PoS + + MINED - POS - + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From @@ -2747,10 +2781,6 @@ This label turns red, if the priority is smaller than "medium". Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - जानकारी - Amount @@ -2780,12 +2810,7 @@ This label turns red, if the priority is smaller than "medium". ये खिड़की आपको लेन-देन का विस्तृत विवरण देगी ! - - View Attachment - - - - + Execute Contract @@ -2794,21 +2819,11 @@ This label turns red, if the priority is smaller than "medium". C&lose - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date taareek @@ -2881,7 +2896,7 @@ This label turns red, if the priority is smaller than "medium". - + Received with @@ -2901,32 +2916,42 @@ This label turns red, if the priority is smaller than "medium". - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) - + Transaction status. Hover over this field to show number of confirmations. @@ -3123,7 +3148,7 @@ This label turns red, if the priority is smaller than "medium". VotingChartDialog - + Poll Results @@ -3267,7 +3292,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3300,7 +3325,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3308,12 +3333,12 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: विकल्प: - + Specify data directory डेटा डायरेक्टरी बताएं @@ -3323,7 +3348,7 @@ This label turns red, if the priority is smaller than "medium". बैकग्राउंड में डेमॉन बन कर रन करे तथा कमांड्स स्वीकार करें - + Acceptable ciphers (default: TLSv1.2+HIGH:TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!3DES:@STRENGTH) @@ -3338,7 +3363,7 @@ This label turns red, if the priority is smaller than "medium". - + Boinc Mining @@ -3348,7 +3373,7 @@ This label turns red, if the priority is smaller than "medium". - + Error obtaining next project. Error 06172014. @@ -3393,12 +3418,32 @@ This label turns red, if the priority is smaller than "medium". - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -3418,7 +3463,7 @@ This label turns red, if the priority is smaller than "medium". - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -3540,6 +3585,16 @@ If the file does not exist, create it with owner-readable-only file permissions. Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3600,6 +3655,11 @@ If the file does not exist, create it with owner-readable-only file permissions. ERROR + + + Entire balance reserved + + Expires @@ -3660,11 +3720,6 @@ If the file does not exist, create it with owner-readable-only file permissions. Message - - - Messate Type - - Miner: @@ -3701,12 +3756,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - No coins; - - - - + Offline; @@ -3716,12 +3766,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3796,7 +3841,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + List commands @@ -3811,7 +3856,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + This help message @@ -3841,12 +3886,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3856,12 +3901,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Allow DNS lookups for -addnode, -seednode and -connect - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3871,12 +3916,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Add a node to connect to and attempt to keep the connection open - + Connect only to the specified node(s) @@ -3886,22 +3931,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Specify your own public address - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -3911,27 +3956,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + 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: 5000) @@ -3941,7 +3986,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Use UPnP to map the listening port (default: 1 when listening) @@ -3951,12 +3996,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) @@ -3966,12 +4011,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Use the test network - + Output extra debugging information. Implies all other -debug* options @@ -3981,7 +4026,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Prepend debug output with timestamp @@ -4011,7 +4056,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -4021,12 +4066,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Send commands to node running on <ip> (default: 127.0.0.1) - + Execute command when the best block changes (%s in cmd is replaced by block hash) @@ -4036,12 +4081,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Require a confirmations for change (default: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -4051,7 +4096,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Upgrade wallet to latest format @@ -4066,12 +4111,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Attempt to recover private keys from a corrupt wallet.dat - + How many blocks to check at startup (default: 2500, 0 = all) @@ -4086,12 +4131,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Block creation options: - + Set minimum block size in bytes (default: 0) @@ -4101,12 +4146,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -4126,17 +4171,17 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid amount for -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - + Invalid amount for -mininput=<amount>: '%s' @@ -4146,22 +4191,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4171,7 +4216,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Weight @@ -4181,7 +4226,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Unknown -socks proxy version requested: %i @@ -4191,7 +4236,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid -proxy address: '%s' @@ -4201,22 +4246,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Cannot resolve -bind address: '%s' - + Failed to listen on any port. Use -listen=0 if you want this. - + Cannot resolve -externalip address: '%s' - + Invalid amount for -reservebalance=<amount> @@ -4236,20 +4281,25 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4261,12 +4311,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error loading wallet.dat - + Cannot downgrade wallet @@ -4276,12 +4326,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Rescanning... रि-स्केनी-इंग... - + Importing blockchain data file. @@ -4296,22 +4346,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Done loading लोड हो गया| - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4321,27 +4371,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount @@ -4351,17 +4401,17 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - + Warning: Disk space is low! - + Error भूल diff --git a/src/qt/locale/bitcoin_hr.ts b/src/qt/locale/bitcoin_hr.ts index dbfc1b991c..8607e90482 100644 --- a/src/qt/locale/bitcoin_hr.ts +++ b/src/qt/locale/bitcoin_hr.ts @@ -299,12 +299,12 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + Sign &message... P&otpišite poruku... - + &Overview &Pregled @@ -400,7 +400,7 @@ This product includes software developed by the OpenSSL Project for use in the O Izlazak iz programa - + &Options... Pos&tavke... @@ -414,19 +414,11 @@ This product includes software developed by the OpenSSL Project for use in the O Encrypt or decrypt wallet - - &Backup Wallet... - Spremi &kopiju novčanika... - &Change Passphrase... Promjena &lozinke... - - Backup wallet to another location - Napravite sigurnosnu kopiju novčanika na drugoj lokaciji - Change the passphrase used for wallet encryption @@ -478,7 +470,7 @@ This product includes software developed by the OpenSSL Project for use in the O &Potvrdite poruku... - + Wallet Novčanik @@ -488,7 +480,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Send &Pošalji @@ -508,28 +500,12 @@ This product includes software developed by the OpenSSL Project for use in the O - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -539,7 +515,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Diagnostics @@ -569,14 +545,14 @@ This product includes software developed by the OpenSSL Project for use in the O - + [testnet] [testnet] - + Gridcoin client @@ -586,7 +562,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Last received block was generated %1. @@ -646,7 +622,7 @@ Adresa:%4 ?} {4?} - + Wallet is <b>encrypted</b> and currently %1 @@ -693,7 +669,7 @@ Adresa:%4 - + %n second(s) @@ -739,7 +715,37 @@ Adresa:%4 - + + Scraper: waiting on wallet to sync. + + + + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + &File &Datoteka @@ -754,17 +760,12 @@ Adresa:%4 - - &Advanced - - - - + &Help &Pomoć - + Processed %n block(s) of transaction history. Obrađen %n blok povijesti transakcije. @@ -814,12 +815,12 @@ Adresa:%4 Ažurno - + Catching up... Ažuriranje... - + Sent transaction Poslana transakcija @@ -829,19 +830,7 @@ Adresa:%4 Dolazna transakcija - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Datum:%1 -Iznos:%2 -Tip:%3 -Adresa:%4 - - - - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. @@ -852,17 +841,13 @@ Adresa:%4 URI handling - - 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> - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. @@ -870,7 +855,7 @@ Adresa:%4 ClientModel - + Network Alert @@ -1317,7 +1302,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1535,10 +1520,6 @@ This label turns red, if the priority is smaller than "medium". Map port using &UPnP Mapiraj port koristeći &UPnP - - Proxy &IP: - Proxy &IP: - &Port: @@ -1767,6 +1748,14 @@ This label turns red, if the priority is smaller than "medium". + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1828,7 +1817,7 @@ This label turns red, if the priority is smaller than "medium". RPCConsole - + @@ -1840,7 +1829,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A N/A @@ -1920,7 +1909,7 @@ This label turns red, if the priority is smaller than "medium". - + %1 B @@ -1955,12 +1944,12 @@ This label turns red, if the priority is smaller than "medium". - + Gridcoin - Debug Console - + Boost version @@ -2060,7 +2049,12 @@ This label turns red, if the priority is smaller than "medium". - + + &Scraper + + + + Welcome to the Gridcoin RPC console! @@ -2327,22 +2321,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: &Iznos: - + Pay &To: &Primatelj plaćanja: - + &Label: &Oznaka: - + Alt+A Alt+A @@ -2362,12 +2356,12 @@ This label turns red, if the priority is smaller than "medium". Poruka: - + Form Oblik - + Enter a label for this address to add it to your address book Unesite oznaku za ovu adresu kako bi ju dodali u vaš adresar @@ -2388,17 +2382,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2649,26 +2638,47 @@ This label turns red, if the priority is smaller than "medium". - + Source Izvor - Generated - Generiran + + Generated in CoinBase + - - Generated in CoinBase + + MINED - POS - - Generated, PoS + + MINED - POR - + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From Od @@ -2783,27 +2793,11 @@ This label turns red, if the priority is smaller than "medium". Transaction Inputs - - Transaction ID - ID transakcije - Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - Informacija - - - Transaction - Transakcija - - - Inputs - Unosi - Amount @@ -2833,12 +2827,7 @@ This label turns red, if the priority is smaller than "medium". Ovaj prozor prikazuje detaljni opis transakcije - - View Attachment - - - - + Execute Contract @@ -2847,21 +2836,11 @@ This label turns red, if the priority is smaller than "medium". C&lose &Zatvori - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Datum @@ -2935,7 +2914,7 @@ This label turns red, if the priority is smaller than "medium". Generirano, ali nije prihva?eno - + Received with Primljeno s @@ -2955,32 +2934,42 @@ This label turns red, if the priority is smaller than "medium". Pla?anje samom sebi - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (n/d) - + Transaction status. Hover over this field to show number of confirmations. Status transakcije @@ -3177,7 +3166,7 @@ This label turns red, if the priority is smaller than "medium". VotingChartDialog - + Poll Results @@ -3321,7 +3310,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3354,7 +3343,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3362,12 +3351,12 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: Postavke: - + This help message Ova poruka za pomo? @@ -3402,12 +3391,12 @@ This label turns red, if the priority is smaller than "medium". Odredi vremenski prozor za spajanje na mrežu u milisekundama (ugra?eni izbor: 5000) - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3417,7 +3406,7 @@ This label turns red, if the priority is smaller than "medium". - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3427,7 +3416,7 @@ This label turns red, if the priority is smaller than "medium". Održavaj najviše <n> veza sa ?lanovima (default: 125) - + Connect only to the specified node(s) Poveži se samo sa odre?enim nodom @@ -3437,22 +3426,22 @@ This label turns red, if the priority is smaller than "medium". - + Specify your own public address Odaberi vlastitu javnu adresu - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -3462,22 +3451,22 @@ This label turns red, if the priority is smaller than "medium". - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + Threshold for disconnecting misbehaving peers (default: 100) Prag za odspajanje ?lanova koji se ?udno ponašaju (default: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Broj sekundi koliko se ?lanovima koji se ?udno ponašaju ne?e dopustiti da se opet spoje (default: 86400) @@ -3572,6 +3561,16 @@ This label turns red, if the priority is smaller than "medium". Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3632,6 +3631,11 @@ This label turns red, if the priority is smaller than "medium". ERROR + + + Entire balance reserved + + Expires @@ -3697,11 +3701,6 @@ This label turns red, if the priority is smaller than "medium". Message Poruka - - - Messate Type - - Miner: @@ -3738,12 +3737,7 @@ This label turns red, if the priority is smaller than "medium". - - No coins; - - - - + Offline; @@ -3753,12 +3747,7 @@ This label turns red, if the priority is smaller than "medium". - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3843,12 +3832,12 @@ This label turns red, if the priority is smaller than "medium". Pokušaj koristiti UPnP da otvoriš port za uslugu (default: 0) - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) @@ -3858,7 +3847,7 @@ This label turns red, if the priority is smaller than "medium". 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 @@ -3868,7 +3857,7 @@ This label turns red, if the priority is smaller than "medium". Koristi test mrežu - + Output extra debugging information. Implies all other -debug* options @@ -3878,7 +3867,7 @@ This label turns red, if the priority is smaller than "medium". - + Prepend debug output with timestamp @@ -3893,7 +3882,7 @@ This label turns red, if the priority is smaller than "medium". - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -3903,22 +3892,22 @@ This label turns red, if the priority is smaller than "medium". 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) - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - + Require a confirmations for change (default: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -3928,7 +3917,7 @@ This label turns red, if the priority is smaller than "medium". - + Upgrade wallet to latest format Nadogradite nov?anik u posljednji format. @@ -3943,7 +3932,7 @@ This label turns red, if the priority is smaller than "medium". Ponovno pretraži lanac blokova za transakcije koje nedostaju - + Attempt to recover private keys from a corrupt wallet.dat @@ -3963,7 +3952,7 @@ This label turns red, if the priority is smaller than "medium". - + Boinc Mining @@ -3973,7 +3962,7 @@ This label turns red, if the priority is smaller than "medium". - + Error obtaining next project. Error 06172014. @@ -4023,12 +4012,32 @@ This label turns red, if the priority is smaller than "medium". - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -4043,12 +4052,12 @@ This label turns red, if the priority is smaller than "medium". - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) SSL postavke: (za detalje o podešavanju SSL opcija vidi Bitcoin Wiki) @@ -4068,17 +4077,17 @@ This label turns red, if the priority is smaller than "medium". Uslužnikov privatni klju? (ugra?eni izbor: server.pem) - + Invalid amount for -paytxfee=<amount>: '%s' Nevaljali iznos za opciju -paytxfee=<amount>: '%s' - + 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. - + Invalid amount for -mininput=<amount>: '%s' @@ -4088,22 +4097,22 @@ This label turns red, if the priority is smaller than "medium". - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4113,10 +4122,15 @@ This label turns red, if the priority is smaller than "medium". - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4133,7 +4147,7 @@ This label turns red, if the priority is smaller than "medium". - + Unknown -socks proxy version requested: %i @@ -4143,27 +4157,27 @@ This label turns red, if the priority is smaller than "medium". - + Invalid -tor address: '%s' - + Cannot resolve -bind address: '%s' - + Failed to listen on any port. Use -listen=0 if you want this. - + Cannot resolve -externalip address: '%s' - + Invalid amount for -reservebalance=<amount> @@ -4178,22 +4192,22 @@ This label turns red, if the priority is smaller than "medium". Greška kod u?itavanja wallet.dat: Nov?anik pokvaren - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete - + Error loading wallet.dat Greška kod u?itavanja wallet.dat @@ -4213,17 +4227,17 @@ This label turns red, if the priority is smaller than "medium". - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) Program ne može koristiti %s na ovom ra?unalu (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4233,47 +4247,47 @@ This label turns red, if the priority is smaller than "medium". - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount Nevaljali iznos za opciju - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - + Warning: Disk space is low! - + Block creation options: Opcije za kreiranje bloka: - + Send trace/debug info to console instead of debug.log file Šalji trace/debug informacije na konzolu umjesto u debug.log datoteku @@ -4288,7 +4302,7 @@ This label turns red, if the priority is smaller than "medium". Lozinka za JSON-RPC veze - + Execute command when the best block changes (%s in cmd is replaced by block hash) Izvršite naredbu kada se najbolji blok promjeni (%s u cmd je zamjenjen sa block hash) @@ -4298,12 +4312,12 @@ This label turns red, if the priority is smaller than "medium". Dozvoli DNS upite za -addnode, -seednode i -connect - + To use the %s option - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -4335,12 +4349,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Gridcoin version - + Usage: Upotreba: @@ -4350,7 +4364,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + List commands Prikaži komande @@ -4385,17 +4399,17 @@ If the file does not exist, create it with owner-readable-only file permissions. Učitavanje indeksa blokova... - + Add a node to connect to and attempt to keep the connection open Doda čvor s kojim se želite povezati i nastoji održati vezu otvorenu - + Loading wallet... Učitavanje novčanika... - + Cannot downgrade wallet Nije moguće novčanik vratiti na prijašnju verziju. @@ -4405,17 +4419,17 @@ If the file does not exist, create it with owner-readable-only file permissions. Nije moguće upisati zadanu adresu. - + Rescanning... Ponovno pretraživanje... - + Done loading Učitavanje gotovo - + Error Greška diff --git a/src/qt/locale/bitcoin_hu.ts b/src/qt/locale/bitcoin_hu.ts index ebd707e5f3..54b535de65 100644 --- a/src/qt/locale/bitcoin_hu.ts +++ b/src/qt/locale/bitcoin_hu.ts @@ -23,19 +23,6 @@ Distributed under the MIT/X11 software license, see the accompanying file COPYIN This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (https://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - - -This is experimental software. - -Distributed under the MIT/X11 software license, see the accompanying file COPYING 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. - -Ez egy kísérleti program. -MIT/X11 szoftverlicenc alatt kiadva, lásd a mellékelt COPYING fájlt vagy a http://www.opensource.org/licenses/mit-license.php weboldalt. - -Ez a termék tartalmaz az OpenSSL Project által az OpenSSL Toolkit-hez (http://www.openssl.org/) fejlesztett szoftvert; kriptográfiai szoftvert, melyet Eric Young (eay@cryptsoft.com) írt; és Thomas Bernard által írt UPnP szoftvert. - AddressBookPage @@ -312,12 +299,12 @@ Ez a termék tartalmaz az OpenSSL Project által az OpenSSL Toolkit-hez (http:// BitcoinGUI - + Sign &message... Üzenet aláírása... - + &Overview &Áttekintés @@ -413,7 +400,7 @@ Ez a termék tartalmaz az OpenSSL Project által az OpenSSL Toolkit-hez (http:// Kilépés az alkalmazásból - + &Options... &Opciók... @@ -427,19 +414,11 @@ Ez a termék tartalmaz az OpenSSL Project által az OpenSSL Toolkit-hez (http:// Encrypt or decrypt wallet - - &Backup Wallet... - &Bisztonsági másolat készítése a Tárcáról - &Change Passphrase... Jelszó &megváltoztatása... - - Backup wallet to another location - Biztonsági másolat készítése a tárcáról egy másik helyre - Change the passphrase used for wallet encryption @@ -491,7 +470,7 @@ Ez a termék tartalmaz az OpenSSL Project által az OpenSSL Toolkit-hez (http:// Üzenet &valódiságának ellenőrzése - + Wallet Tárca @@ -501,7 +480,7 @@ Ez a termék tartalmaz az OpenSSL Project által az OpenSSL Toolkit-hez (http:// - + &Send &Küldés @@ -521,28 +500,12 @@ Ez a termék tartalmaz az OpenSSL Project által az OpenSSL Toolkit-hez (http:// - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -552,7 +515,7 @@ Ez a termék tartalmaz az OpenSSL Project által az OpenSSL Toolkit-hez (http:// - + &Diagnostics @@ -582,14 +545,14 @@ Ez a termék tartalmaz az OpenSSL Project által az OpenSSL Toolkit-hez (http:// - + [testnet] [teszthálózat] - + Gridcoin client @@ -599,7 +562,7 @@ Ez a termék tartalmaz az OpenSSL Project által az OpenSSL Toolkit-hez (http:// - + Last received block was generated %1. @@ -659,7 +622,7 @@ Cím: %4 ?} {4?} - + Wallet is <b>encrypted</b> and currently %1 @@ -706,7 +669,7 @@ Cím: %4 - + %n second(s) @@ -744,7 +707,37 @@ Cím: %4 - + + Scraper: waiting on wallet to sync. + + + + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + &File &Fájl @@ -759,17 +752,12 @@ Cím: %4 - - &Advanced - - - - + &Help &Súgó - + Processed %n block(s) of transaction history. %n blokk feldolgozva a tranzakció előzményből. @@ -809,12 +797,12 @@ Cím: %4 Naprakész - + Catching up... Frissítés... - + Sent transaction Tranzakció elküldve. @@ -824,19 +812,7 @@ Cím: %4 Beérkező tranzakció - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Dátum: %1 -Összeg: %2 -Típus: %3 -Cím: %4 - - - - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. @@ -847,17 +823,13 @@ Cím: %4 URI handling - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - A tárca <b>titkosítva</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 occurred. Gridcoin can no longer continue safely and will quit. @@ -865,7 +837,7 @@ Cím: %4 ClientModel - + Network Alert Hálózati figyelmeztetés @@ -947,10 +919,6 @@ Cím: %4 (un)select all mindent kiválaszt/elvet - - List mode - Lista nézet - Amount @@ -1316,7 +1284,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1534,10 +1502,6 @@ This label turns red, if the priority is smaller than "medium". Map port using &UPnP &UPnP port-feltérképezés - - Proxy &IP: - Proxy &IP: - &Port: @@ -1766,6 +1730,14 @@ This label turns red, if the priority is smaller than "medium". Nincs szinkronban. + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1827,7 +1799,7 @@ This label turns red, if the priority is smaller than "medium". RPCConsole - + @@ -1839,7 +1811,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A Nem elérhető @@ -1919,7 +1891,12 @@ This label turns red, if the priority is smaller than "medium". Ki: - + + &Scraper + + + + Debug log file Debug naplófájl @@ -1949,7 +1926,7 @@ This label turns red, if the priority is smaller than "medium". Írd be azt, hogy <b>help</b> az elérhető parancsok áttekintéséhez. - + %1 B %1 B @@ -1984,12 +1961,12 @@ This label turns red, if the priority is smaller than "medium". - + Gridcoin - Debug Console - + Boost version @@ -2059,7 +2036,7 @@ This label turns red, if the priority is smaller than "medium". Kliens néve - + Welcome to the Gridcoin RPC console! @@ -2326,22 +2303,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: Összeg: - + Pay &To: Címzett: - + &Label: Címke: - + Alt+A Alt+A @@ -2361,12 +2338,12 @@ This label turns red, if the priority is smaller than "medium". Üzenet: - + Form Űrlap - + Enter a label for this address to add it to your address book Milyen címkével kerüljön be ez a cím a címtáradba? @@ -2388,17 +2365,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2645,26 +2617,47 @@ This label turns red, if the priority is smaller than "medium". - + Source - Generated - Legenerálva + + Generated in CoinBase + - - Generated in CoinBase + + MINED - POS - - Generated, PoS + + MINED - POR - + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From Űrlap @@ -2777,27 +2770,11 @@ This label turns red, if the priority is smaller than "medium". Transaction Inputs - - Transaction ID - Tranzakcióazonosító - Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - Információ - - - Transaction - Tranzakció - - - Inputs - Bemenetek - Amount @@ -2827,12 +2804,7 @@ This label turns red, if the priority is smaller than "medium". Ez a mező a tranzakció részleteit mutatja - - View Attachment - - - - + Execute Contract @@ -2841,21 +2813,11 @@ This label turns red, if the priority is smaller than "medium". C&lose &Bezárás - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Dátum @@ -2927,7 +2889,7 @@ This label turns red, if the priority is smaller than "medium". Legenerálva, de még el nem fogadva. - + Received with Erre a címre @@ -2947,32 +2909,42 @@ This label turns red, if the priority is smaller than "medium". Magadnak kifizetve - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (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. @@ -3166,17 +3138,10 @@ This label turns red, if the priority is smaller than "medium". meddig - - UpgradeDialog - - Hide - Elrejtés - - VotingChartDialog - + Poll Results @@ -3320,7 +3285,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3353,7 +3318,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3361,13 +3326,13 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: Opciók - + This help message Ez a súgó-üzenet @@ -3404,12 +3369,12 @@ This label turns red, if the priority is smaller than "medium". Csatlakozás időkerete milliszekundumban (alapértelmezett: 5000) - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3419,7 +3384,7 @@ This label turns red, if the priority is smaller than "medium". - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3429,7 +3394,7 @@ This label turns red, if the priority is smaller than "medium". Maximálisan <n> számú kapcsolat fenntartása a peerekkel (alapértelmezés: 125) - + Connect only to the specified node(s) Csatlakozás csak a megadott csomóponthoz @@ -3439,22 +3404,22 @@ This label turns red, if the priority is smaller than "medium". Kapcsolódás egy csomóponthoz a peerek címeinek megszerzése miatt, majd szétkapcsolás - + Specify your own public address Adja meg az Ön saját nyilvános címét - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -3464,22 +3429,22 @@ This label turns red, if the priority is smaller than "medium". - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + Threshold for disconnecting misbehaving peers (default: 100) Helytelenül viselkedő peerek leválasztási határértéke (alapértelmezés: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Helytelenül viselkedő peerek kizárási ideje másodpercben (alapértelmezés: 86400) @@ -3574,6 +3539,16 @@ This label turns red, if the priority is smaller than "medium". Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3634,6 +3609,11 @@ This label turns red, if the priority is smaller than "medium". ERROR + + + Entire balance reserved + + Expires @@ -3699,11 +3679,6 @@ This label turns red, if the priority is smaller than "medium". Message Üzenet - - - Messate Type - - Miner: @@ -3740,12 +3715,7 @@ This label turns red, if the priority is smaller than "medium". - - No coins; - - - - + Offline; @@ -3755,12 +3725,7 @@ This label turns red, if the priority is smaller than "medium". - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3830,12 +3795,12 @@ This label turns red, if the priority is smaller than "medium". UPnP-használat engedélyezése a figyelő port feltérképezésénél (default: 0) - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) @@ -3846,7 +3811,7 @@ This label turns red, if the priority is smaller than "medium". - + Run in the background as a daemon and accept commands Háttérben futtatás daemonként és parancsok elfogadása @@ -3858,7 +3823,7 @@ This label turns red, if the priority is smaller than "medium". - + Output extra debugging information. Implies all other -debug* options @@ -3868,7 +3833,7 @@ This label turns red, if the priority is smaller than "medium". - + Prepend debug output with timestamp @@ -3883,7 +3848,7 @@ This label turns red, if the priority is smaller than "medium". - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -3894,7 +3859,7 @@ This label turns red, if the priority is smaller than "medium". - + 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) @@ -3905,7 +3870,7 @@ This label turns red, if the priority is smaller than "medium". - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -3915,7 +3880,7 @@ This label turns red, if the priority is smaller than "medium". - + Upgrade wallet to latest format A Tárca frissítése a legfrissebb formátumra @@ -3932,12 +3897,12 @@ This label turns red, if the priority is smaller than "medium". - + Attempt to recover private keys from a corrupt wallet.dat - + How many blocks to check at startup (default: 2500, 0 = all) @@ -3952,12 +3917,12 @@ This label turns red, if the priority is smaller than "medium". - + Block creation options: - + Set minimum block size in bytes (default: 0) @@ -3967,12 +3932,12 @@ This label turns red, if the priority is smaller than "medium". - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) SSL-opciók: (lásd a Bitcoin Wiki SSL-beállítási instrukcióit) @@ -3995,17 +3960,17 @@ This label turns red, if the priority is smaller than "medium". - + Invalid amount for -paytxfee=<amount>: '%s' Étvénytelen -paytxfee=<összeg> összeg: '%s' - + 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. - + Invalid amount for -mininput=<amount>: '%s' @@ -4015,22 +3980,22 @@ This label turns red, if the priority is smaller than "medium". - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4040,10 +4005,15 @@ This label turns red, if the priority is smaller than "medium". - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4060,17 +4030,17 @@ This label turns red, if the priority is smaller than "medium". - + Unknown -socks proxy version requested: %i Ismeretlen -socks proxy kérése: %i - + Invalid -tor address: '%s' - + Cannot resolve -bind address: '%s' Csatlakozási cím (-bind address) feloldása nem sikerült: '%s' @@ -4080,7 +4050,7 @@ This label turns red, if the priority is smaller than "medium". Külső cím (-externalip address) feloldása nem sikerült: '%s' - + Invalid amount for -reservebalance=<amount> @@ -4095,22 +4065,22 @@ This label turns red, if the priority is smaller than "medium". Hiba a wallet.dat betöltése közben: meghibásodott tárca - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete - + Error loading wallet.dat Hiba az wallet.dat betöltése közben @@ -4130,17 +4100,17 @@ This label turns red, if the priority is smaller than "medium". - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) A %s nem elérhető ezen a gépen (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4150,42 +4120,42 @@ This label turns red, if the priority is smaller than "medium". - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount Étvénytelen összeg - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - + Warning: Disk space is low! - + Acceptable ciphers (default: TLSv1.2+HIGH:TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!3DES:@STRENGTH) @@ -4205,7 +4175,7 @@ This label turns red, if the priority is smaller than "medium". - + Boinc Mining @@ -4215,7 +4185,7 @@ This label turns red, if the priority is smaller than "medium". - + Error obtaining next project. Error 06172014. @@ -4255,12 +4225,32 @@ This label turns red, if the priority is smaller than "medium". - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -4297,7 +4287,7 @@ This label turns red, if the priority is smaller than "medium". - + Execute command when the best block changes (%s in cmd is replaced by block hash) Parancs, amit akkor hajt végre, amikor a legjobb blokk megváltozik (%s a cmd-ban lecserélődik a blokk hash-re) @@ -4307,12 +4297,12 @@ This label turns red, if the priority is smaller than "medium". DNS-kikeresés engedélyezése az addnode-nál és a connect-nél - + To use the %s option Használd a %s opciót - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -4346,12 +4336,12 @@ If the file does not exist, create it with owner-readable-only file permissions. Ha a fájl nem létezik, hozd létre 'csak a felhasználó által olvasható' fájl engedéllyel - + Gridcoin version - + Usage: Használat: @@ -4361,7 +4351,7 @@ Ha a fájl nem létezik, hozd létre 'csak a felhasználó által olvashat - + List commands Parancsok kilistázása @@ -4388,12 +4378,12 @@ Ha a fájl nem létezik, hozd létre 'csak a felhasználó által olvashat Érvénytelen -proxy cím: '%s' - + Unknown network specified in -onlynet: '%s' Ismeretlen hálózat lett megadva -onlynet: '%s' - + Insufficient funds Nincs elég bitcoinod. @@ -4403,17 +4393,17 @@ Ha a fájl nem létezik, hozd létre 'csak a felhasználó által olvashat Blokkindex betöltése... - + Add a node to connect to and attempt to keep the connection open Elérendő csomópont megadása and attempt to keep the connection open - + Loading wallet... Tárca betöltése... - + Cannot downgrade wallet Nem sikerült a Tárca visszaállítása a korábbi verzióra @@ -4423,17 +4413,17 @@ Ha a fájl nem létezik, hozd létre 'csak a felhasználó által olvashat Nem sikerült az alapértelmezett címet írni. - + Rescanning... Újraszkennelés... - + Done loading Betöltés befejezve. - + Error Hiba diff --git a/src/qt/locale/bitcoin_id_ID.ts b/src/qt/locale/bitcoin_id_ID.ts index 4edf282467..19ef735945 100644 --- a/src/qt/locale/bitcoin_id_ID.ts +++ b/src/qt/locale/bitcoin_id_ID.ts @@ -299,12 +299,12 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + Sign &message... Pesan &penanda... - + &Overview &Kilasan @@ -400,7 +400,7 @@ This product includes software developed by the OpenSSL Project for use in the O Keluar dari aplikasi - + &Options... &Pilihan... @@ -415,7 +415,7 @@ This product includes software developed by the OpenSSL Project for use in the O Mengenkripsi atau mendekripsi dompet - + %n second(s) ago @@ -443,7 +443,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Date: %1 Amount: %2 Type: %3 @@ -458,7 +458,7 @@ Alamat: %4 ?} {4?} - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -468,17 +468,39 @@ Alamat: %4 - &Backup Wallet... - &Cadangkan Dompet... + + Scraper: waiting on wallet to sync. + - - &Change Passphrase... - &Ubah Kata Kunci... + + Scraper: superblock not needed - inactive. + - Backup wallet to another location - Cadangkan dompet ke lokasi lain + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + + &Change Passphrase... + &Ubah Kata Kunci... @@ -531,7 +553,7 @@ Alamat: %4 &Verifikasi pesan... - + Wallet Dompet @@ -541,7 +563,7 @@ Alamat: %4 Gridcoin (CoinHitam) - + &Send &Kirim @@ -561,28 +583,12 @@ Alamat: %4 Tunjukkan informasi tentang Gridcoin - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -592,7 +598,7 @@ Alamat: %4 - + &Diagnostics @@ -622,14 +628,14 @@ Alamat: %4 - + [testnet] [testnet] - + Gridcoin client Klien Gridcoin @@ -639,19 +645,7 @@ Alamat: %4 - %1 minute(s) ago - %1 menit yang lalu - - - %1 hour(s) ago - %1 jam yang lalu - - - %1 day(s) ago - %1 hari yang lalu - - - + Last received block was generated %1. @@ -696,19 +690,7 @@ Alamat: %4 - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Tanggal: %1 -Jumlah: %2 -Jenis: %3 -Alamat: %4 - - - - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. @@ -767,7 +749,7 @@ Alamat: %4 - + %n second(s) @@ -795,11 +777,7 @@ Alamat: %4 - Not staking - Lagi tidak staking - - - + &File &Berkas @@ -814,17 +792,12 @@ Alamat: %4 - - &Advanced - - - - + &Help &Bantuan - + Processed %n block(s) of transaction history. %n blok dari riwayat transaksi diproses. @@ -836,12 +809,12 @@ Alamat: %4 Terbaru - + Catching up... Menyusul... - + Sent transaction Transaksi terkirim @@ -851,16 +824,12 @@ Alamat: %4 Transaksi diterima - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Dompet saat ini <b>terenkripsi</b> dan <b>terbuka</b> - - - + Wallet is <b>encrypted</b> and currently <b>locked</b> Dompet saat ini <b>terenkripsi</b> dan <b>terkunci</b> - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. @@ -868,7 +837,7 @@ Alamat: %4 ClientModel - + Network Alert Notifikasi Jaringan @@ -950,10 +919,6 @@ Alamat: %4 (un)select all (Tidak)memilih semua - - List mode - Mode daftar - Amount @@ -1319,7 +1284,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1532,10 +1497,6 @@ This label turns red, if the priority is smaller than "medium". Map port using &UPnP Petakan port dengan &UPnP - - Proxy &IP: - IP Proxy: - &Port: @@ -1769,6 +1730,14 @@ This label turns red, if the priority is smaller than "medium". tidak tersinkron + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1830,7 +1799,7 @@ This label turns red, if the priority is smaller than "medium". RPCConsole - + @@ -1842,7 +1811,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A T/S @@ -1922,7 +1891,12 @@ This label turns red, if the priority is smaller than "medium". Keluar: - + + &Scraper + + + + Debug log file Berkas catatan debug @@ -1952,7 +1926,7 @@ This label turns red, if the priority is smaller than "medium". Ketik <b>help</b> untuk menampilkan perintah tersedia. - + %1 B %1 B @@ -1987,12 +1961,12 @@ This label turns red, if the priority is smaller than "medium". - + Gridcoin - Debug Console - + Boost version @@ -2062,7 +2036,7 @@ This label turns red, if the priority is smaller than "medium". Nama Klien - + Welcome to the Gridcoin RPC console! @@ -2329,22 +2303,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: J&umlah: - + Pay &To: Kirim &Ke: - + &Label: &Label: - + Alt+A Alt+J @@ -2364,12 +2338,12 @@ This label turns red, if the priority is smaller than "medium". Pesan: - + Form Formulir - + Enter a label for this address to add it to your address book Masukkan label bagi alamat ini untuk menambahkannya ke buku alamat Anda @@ -2390,17 +2364,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2647,22 +2616,47 @@ This label turns red, if the priority is smaller than "medium". - + Source - + Generated in CoinBase - - Generated, PoS + + MINED - POS - + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From Dari @@ -2780,14 +2774,6 @@ This label turns red, if the priority is smaller than "medium". Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - Informasi - - - Transaction - Transaksi - Amount @@ -2817,12 +2803,7 @@ This label turns red, if the priority is smaller than "medium". Jendela ini menampilkan deskripsi rinci dari transaksi tersebut - - View Attachment - - - - + Execute Contract @@ -2831,21 +2812,11 @@ This label turns red, if the priority is smaller than "medium". C&lose T&utup - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Tanggal @@ -2917,7 +2888,7 @@ This label turns red, if the priority is smaller than "medium". Terbuat tetapi tidak diterima - + Received with Diterima dengan @@ -2937,32 +2908,42 @@ This label turns red, if the priority is smaller than "medium". Pembayaran ke Anda sendiri - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (t/s) - + Transaction status. Hover over this field to show number of confirmations. Status transaksi. Arahkan ke bagian ini untuk menampilkan jumlah konfrimasi. @@ -3159,7 +3140,7 @@ This label turns red, if the priority is smaller than "medium". VotingChartDialog - + Poll Results @@ -3303,7 +3284,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3336,7 +3317,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... Mengirim... @@ -3344,37 +3325,37 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: Pilihan: - + Specify data directory Tentukan direktori data - + Connect to a node to retrieve peer addresses, and disconnect Hubungkan ke node untuk menerima alamat peer, dan putuskan - + Specify your own public address Tentukan alamat publik Anda sendiri - + Accept command line and JSON-RPC commands Menerima perintah baris perintah dan JSON-RPC - + Run in the background as a daemon and accept commands Berjalan dibelakang sebagai daemin dan menerima perintah - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) Jalankan perintah ketika perubahan transaksi dompet (%s di cmd digantikan oleh TxID) @@ -3384,7 +3365,7 @@ This label turns red, if the priority is smaller than "medium". Pilihan pembuatan blok: - + Specify wallet file (within data directory) Tentukan arsip dompet (dalam direktori data) @@ -3409,7 +3390,7 @@ This label turns red, if the priority is smaller than "medium". Kata sandi untuk hubungan JSON-RPC - + Execute command when the best block changes (%s in cmd is replaced by block hash) Menjalankan perintah ketika perubahan blok terbaik (%s dalam cmd digantikan oleh hash blok) @@ -3419,7 +3400,7 @@ This label turns red, if the priority is smaller than "medium". Izinkan peninjauan DNS untuk -addnote, -seednode dan -connect - + Loading addresses... Memuat alamat... @@ -3429,12 +3410,12 @@ This label turns red, if the priority is smaller than "medium". Alamat -proxy salah: '%s' - + Unknown network specified in -onlynet: '%s' Jaringan tidak diketahui yang ditentukan dalam -onlynet: '%s' - + Insufficient funds Saldo tidak mencukupi @@ -3444,17 +3425,17 @@ This label turns red, if the priority is smaller than "medium". Memuat indeks blok... - + Add a node to connect to and attempt to keep the connection open Tambahkan node untuk dihubungkan dan upaya untuk menjaga hubungan tetap terbuka - + Loading wallet... Memuat dompet... - + Cannot downgrade wallet Tidak dapat menurunkan versi dompet @@ -3464,27 +3445,27 @@ This label turns red, if the priority is smaller than "medium". Tidak dapat menyimpan alamat standar - + Rescanning... Memindai ulang... - + Done loading Memuat selesai - + Error Gagal - + To use the %s option Gunakan pilihan %s - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -3608,6 +3589,16 @@ Jika berkas tidak ada, buatlah dengan permisi berkas hanya-dapat-dibaca-oleh-pem Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3668,6 +3659,11 @@ Jika berkas tidak ada, buatlah dengan permisi berkas hanya-dapat-dibaca-oleh-pem ERROR + + + Entire balance reserved + + Expires @@ -3728,11 +3724,6 @@ Jika berkas tidak ada, buatlah dengan permisi berkas hanya-dapat-dibaca-oleh-pem Message Pesan: - - - Messate Type - - Miner: @@ -3769,12 +3760,7 @@ Jika berkas tidak ada, buatlah dengan permisi berkas hanya-dapat-dibaca-oleh-pem - - No coins; - - - - + Offline; @@ -3784,12 +3770,7 @@ Jika berkas tidak ada, buatlah dengan permisi berkas hanya-dapat-dibaca-oleh-pem - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3874,7 +3855,7 @@ Jika berkas tidak ada, buatlah dengan permisi berkas hanya-dapat-dibaca-oleh-pem - + List commands Daftar perintah @@ -3889,7 +3870,7 @@ Jika berkas tidak ada, buatlah dengan permisi berkas hanya-dapat-dibaca-oleh-pem Gridcoin - + This help message Pesan bantuan ini @@ -3914,12 +3895,12 @@ Jika berkas tidak ada, buatlah dengan permisi berkas hanya-dapat-dibaca-oleh-pem - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3929,7 +3910,7 @@ Jika berkas tidak ada, buatlah dengan permisi berkas hanya-dapat-dibaca-oleh-pem - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3939,22 +3920,22 @@ Jika berkas tidak ada, buatlah dengan permisi berkas hanya-dapat-dibaca-oleh-pem Mengatur hubungan paling banyak <n> ke peer (standar: 125) - + Connect only to the specified node(s) - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -3964,27 +3945,27 @@ Jika berkas tidak ada, buatlah dengan permisi berkas hanya-dapat-dibaca-oleh-pem - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + Threshold for disconnecting misbehaving peers (default: 100) Batas untuk memutuskan peer buruk (standar: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Jumlah kedua untuk menjaga peer buruk dari hubung-ulang (standar: 86400) - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 5000) @@ -3994,7 +3975,7 @@ Jika berkas tidak ada, buatlah dengan permisi berkas hanya-dapat-dibaca-oleh-pem - + Use UPnP to map the listening port (default: 1 when listening) @@ -4004,22 +3985,22 @@ Jika berkas tidak ada, buatlah dengan permisi berkas hanya-dapat-dibaca-oleh-pem - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) - + Use the test network Gunakan jaringan uji - + Output extra debugging information. Implies all other -debug* options @@ -4029,7 +4010,7 @@ Jika berkas tidak ada, buatlah dengan permisi berkas hanya-dapat-dibaca-oleh-pem - + Prepend debug output with timestamp @@ -4039,7 +4020,7 @@ Jika berkas tidak ada, buatlah dengan permisi berkas hanya-dapat-dibaca-oleh-pem - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -4049,7 +4030,7 @@ Jika berkas tidak ada, buatlah dengan permisi berkas hanya-dapat-dibaca-oleh-pem Izinkan hubungan JSON-RPC dari alamat IP yang ditentukan - + Send commands to node running on <ip> (default: 127.0.0.1) Kirim perintah ke node berjalan pada <ip> (standar: 127.0.0.1) @@ -4059,7 +4040,7 @@ Jika berkas tidak ada, buatlah dengan permisi berkas hanya-dapat-dibaca-oleh-pem - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -4069,7 +4050,7 @@ Jika berkas tidak ada, buatlah dengan permisi berkas hanya-dapat-dibaca-oleh-pem - + Upgrade wallet to latest format Perbarui dompet ke format terbaru @@ -4084,7 +4065,7 @@ Jika berkas tidak ada, buatlah dengan permisi berkas hanya-dapat-dibaca-oleh-pem Pindai ulang rantai-blok untuk transaksi dompet yang hilang - + Attempt to recover private keys from a corrupt wallet.dat @@ -4104,7 +4085,7 @@ Jika berkas tidak ada, buatlah dengan permisi berkas hanya-dapat-dibaca-oleh-pem - + Boinc Mining @@ -4114,7 +4095,7 @@ Jika berkas tidak ada, buatlah dengan permisi berkas hanya-dapat-dibaca-oleh-pem - + Error obtaining next project. Error 06172014. @@ -4164,12 +4145,32 @@ Jika berkas tidak ada, buatlah dengan permisi berkas hanya-dapat-dibaca-oleh-pem - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -4184,12 +4185,12 @@ Jika berkas tidak ada, buatlah dengan permisi berkas hanya-dapat-dibaca-oleh-pem - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -4209,17 +4210,17 @@ Jika berkas tidak ada, buatlah dengan permisi berkas hanya-dapat-dibaca-oleh-pem Kunci pribadi server (standar: server.pem) - + Invalid amount for -paytxfee=<amount>: '%s' Jumlah salah untuk -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - + Invalid amount for -mininput=<amount>: '%s' @@ -4229,22 +4230,22 @@ Jika berkas tidak ada, buatlah dengan permisi berkas hanya-dapat-dibaca-oleh-pem - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4254,10 +4255,15 @@ Jika berkas tidak ada, buatlah dengan permisi berkas hanya-dapat-dibaca-oleh-pem - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4274,32 +4280,32 @@ Jika berkas tidak ada, buatlah dengan permisi berkas hanya-dapat-dibaca-oleh-pem - + Unknown -socks proxy version requested: %i Diminta versi proxy -socks tidak diketahui: %i - + Invalid -tor address: '%s' - + Cannot resolve -bind address: '%s' Tidak dapat menyelesaikan alamat -bind: '%s' - + Failed to listen on any port. Use -listen=0 if you want this. - + Cannot resolve -externalip address: '%s' Tidak dapat menyelesaikan alamat -externalip: '%s' - + Invalid amount for -reservebalance=<amount> @@ -4314,22 +4320,22 @@ Jika berkas tidak ada, buatlah dengan permisi berkas hanya-dapat-dibaca-oleh-pem Gagal memuat wallet.dat: Dompet rusak - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete - + Error loading wallet.dat Gagal memuat wallet.dat @@ -4349,17 +4355,17 @@ Jika berkas tidak ada, buatlah dengan permisi berkas hanya-dapat-dibaca-oleh-pem - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) Tidak dapat mengikat ke %s dengan komputer ini (ikatan gagal %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4369,37 +4375,37 @@ Jika berkas tidak ada, buatlah dengan permisi berkas hanya-dapat-dibaca-oleh-pem Eror: Dompet hanya di-buka hanya untuk staking, transaksi gagal dilaksanakan - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... Mengirim... - + 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. - + Invalid amount Jumlah salah - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - + Warning: Disk space is low! diff --git a/src/qt/locale/bitcoin_it.ts b/src/qt/locale/bitcoin_it.ts index 71dfb90076..6d04a280ef 100644 --- a/src/qt/locale/bitcoin_it.ts +++ b/src/qt/locale/bitcoin_it.ts @@ -23,20 +23,6 @@ Distributed under the MIT/X11 software license, see the accompanying file COPYIN This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (https://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - - -This is experimental software. - -Distributed under the MIT/X11 software license, see the accompanying file COPYING 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. - -Questo è un software sperimentale. - -Distribuito sotto la licenza software MIT/X11, vedi il file COPYING incluso oppure su http://www.opensource.org/licenses/mit-license.php. - -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. - AddressBookPage @@ -313,12 +299,12 @@ Questo prodotto include software sviluppato dal progetto OpenSSL per l'uso BitcoinGUI - + Sign &message... Firma &messaggio... - + &Overview &Sintesi @@ -414,7 +400,7 @@ Questo prodotto include software sviluppato dal progetto OpenSSL per l'uso Chiudi applicazione - + &Options... &Opzioni... @@ -429,7 +415,7 @@ Questo prodotto include software sviluppato dal progetto OpenSSL per l'uso Cifra o decifra il portamonete - + %n second(s) ago %n secondo fa @@ -461,7 +447,7 @@ Questo prodotto include software sviluppato dal progetto OpenSSL per l'uso - + Date: %1 Amount: %2 Type: %3 @@ -476,7 +462,7 @@ Indirizzo: %4 ?} {4?} - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -486,17 +472,39 @@ Indirizzo: %4 - &Backup Wallet... - &Backup portamonete... + + Scraper: waiting on wallet to sync. + - - &Change Passphrase... - &Cambia passphrase... + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + - Backup wallet to another location - Effettua il backup del portamonete + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + + &Change Passphrase... + &Cambia passphrase... @@ -549,7 +557,7 @@ Indirizzo: %4 &Verifica messaggio... - + Wallet Portamonete @@ -559,7 +567,7 @@ Indirizzo: %4 Gridcoin - + &Send &Invia @@ -568,30 +576,6 @@ Indirizzo: %4 &Receive &Ricevi - - &Rebuild Block Chain - &Ricostruisci la Block Chain - - - Rebuild Block Chain - Ricoustruisci la Block Chain - - - &Download Blocks - &Scarica i blocchi - - - Download Blocks - Scarica i blocchi - - - &Upgrade Client - &Aggiorna il client - - - Upgrade Client - Aggiorna il client - &About Gridcoin @@ -603,36 +587,12 @@ Indirizzo: %4 Mostra informazioni su Gridcoin - - &Neural Network - &Rete neurale - - - - Neural Network - Rete neurale - - - &Advanced Configuration - &Impostazioni avanzate - - - Advanced Configuration - Impostazioni avanzate - - - - &New User Wizard - &Procedura guidata nuovo utente - - - - + New User Wizard Procedura guidata nuovo utente - + &Voting &Voto @@ -642,15 +602,7 @@ Indirizzo: %4 Voto - &Foundation - &Fondazione - - - Foundation - Fondazione - - - + &Diagnostics &Diagnostica @@ -659,14 +611,6 @@ Indirizzo: %4 Diagnostics Diagnostica - - FA&Q - &FAQ - - - Interactive FAQ - FAQ interattiva - Modify configuration options for Gridcoin @@ -688,14 +632,14 @@ Indirizzo: %4 - + [testnet] [testnet] - + Gridcoin client Client Gridcoin @@ -705,23 +649,7 @@ Indirizzo: %4 %1 connessione(i) attiva(e) verso la rete Gridcoin - %1 second(s) ago - %1 secondo(i) fa - - - %1 minute(s) ago - %1 minuto(i) fa - - - %1 hour(s) ago - %1 ora(e) fa - - - %1 day(s) ago - %1 giorno(i) fa - - - + Last received block was generated %1. L'ultimo blocco ricevuto è stato generato %1. @@ -766,19 +694,7 @@ Indirizzo: %4 Attenzione! - Errore percorso BOINC! - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Data: %1 -Quantità: %2 -Tipo: %3 -Indirizzo: %4 - - - - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. L'URI non può essere analizzato! Ciò può essere causato da un indirizzo Gridcoin non valido o da parametri URI non validi. @@ -837,7 +753,7 @@ Indirizzo: %4 - + %n second(s) %n secondo @@ -869,39 +785,7 @@ Indirizzo: %4 - Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. %4 - In Staking.<br>Il tuo peso è %1<br>Il peso della rete è %2<br>Il tempo <b>stimato</b> per ricevere una ricompensa è di %3. %4 - - - Not staking because wallet is locked - Non in staking perché il portamonete è bloccato - - - Not staking because wallet is offline - Non in staking perché il portamonete è offline - - - Not staking because wallet is syncing - Non in staking perché il portamonete è in sincronizzazione - - - Not staking because you don't have mature coins and stake weight is too low. - Non in staking perché non possiedi monete mature e lo stake weight è troppo basso. - - - Not staking because you don't have mature coins - Non in staking perché non possiedi monete mature - - - Searching for mature coins... Please wait - Cerco monete mature... Attendi - - - Not staking - Non in staking - - - + &File &File @@ -916,17 +800,12 @@ Indirizzo: %4 &Community - - &Advanced - &Avanzate - - - + &Help &Aiuto - + Processed %n block(s) of transaction history. Elaborato %n blocco dello storico transazioni. @@ -939,12 +818,12 @@ Indirizzo: %4 Aggiornato - + Catching up... In aggiornamento... - + Sent transaction Transazione inviata @@ -954,16 +833,12 @@ Indirizzo: %4 Transazione ricevuta - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Il portamonete è <b>cifrato</b> ed attualmente <b>sbloccato</b> - - - + Wallet is <b>encrypted</b> and currently <b>locked</b> Il portamonete è <b>cifrato</b> ed attualmente <b>bloccato</b> - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. Si è verificato un errore irreversibile. Gridcoin non può più continuare in sicurezza e verrà chiuso. @@ -971,7 +846,7 @@ Indirizzo: %4 ClientModel - + Network Alert Avviso di rete @@ -1053,10 +928,6 @@ Indirizzo: %4 (un)select all (de)seleziona tutto - - List mode - Modalità lista - Amount @@ -1436,7 +1307,7 @@ Questa etichetta diventa rossa se la priorità è minore di "media". NewPollDialog - + Create Poll Crea Sondaggio @@ -1649,10 +1520,6 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Map port using &UPnP Mappa le porte tramite &UPnP - - Proxy &IP: - &IP del proxy: - &Port: @@ -1819,10 +1686,6 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Error Messages: - - DPOR Weight: - Peso DPOR: - Magnitude: @@ -1848,10 +1711,6 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Current Poll: Sondaggio corrente: - - Client Messages: - Messaggi del client: - Available: @@ -1894,6 +1753,14 @@ Questa etichetta diventa rossa se la priorità è minore di "media". fuori sincrono + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1955,7 +1822,7 @@ Questa etichetta diventa rossa se la priorità è minore di "media". RPCConsole - + @@ -1967,7 +1834,7 @@ Questa etichetta diventa rossa se la priorità è minore di "media". - + N/A N/D @@ -2047,7 +1914,12 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Uscita: - + + &Scraper + + + + Debug log file File log del debug @@ -2077,7 +1949,7 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Scrivi <b>help</b> per un riassunto dei comandi disponibili. - + %1 B %1 B @@ -2112,12 +1984,12 @@ Questa etichetta diventa rossa se la priorità è minore di "media". %1 h %2 m - + Gridcoin - Debug Console Gridcoin - Console di Debug - + Boost version Versione Boost @@ -2187,7 +2059,7 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Nome del client - + Welcome to the Gridcoin RPC console! Benvenuto nella console RPC di Gridcoin! @@ -2454,22 +2326,22 @@ Questa etichetta diventa rossa se la priorità è minore di "media". SendCoinsEntry - + A&mount: &Importo: - + Pay &To: Paga &a: - + &Label: &Etichetta: - + Alt+A Alt+A @@ -2489,12 +2361,12 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Messaggio: - + Form Modulo - + Enter a label for this address to add it to your address book Inserisci un'etichetta per questo indirizzo per aggiungerlo alla rubrica @@ -2515,21 +2387,12 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Rimuovi questo beneficiario - + Send Custom Message to a Gridcoin Recipient Invia un messaggio personalizzato a un beneficiario Gridcoin - Track Coins - Traccia le monete - - - - Add Attachment - Aggiungi allegato - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) Inserisci un indirizzo Gridcoin (es. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2760,22 +2623,47 @@ Questa etichetta diventa rossa se la priorità è minore di "media". - + Source Sorgente - + Generated in CoinBase - - Generated, PoS + + MINED - POS - + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + TX ID @@ -2810,10 +2698,6 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Transaction Inputs - - Generated - Generato - @@ -2846,23 +2730,11 @@ Questa etichetta diventa rossa se la priorità è minore di "media". matura in altri %n blocchi - - Block Type - Tipo di blocco - - - Block Number - Numero blocco - Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. Le monete generate da Gridcoin devono maturare 110 blocchi prima che possano essere spese. Quando hai generato questo blocco, è stato trasmesso alla rete per essere aggiunto alla catena di blocchi. Se non riuscirà ad entrare nella catena, il suo stato cambierà in "non accettato" e non sarà spendibile. Questo può accadere occasionalmente se un altro nodo genera un blocco entro pochi secondi dal tuo. - - Information - Informazioni - label @@ -2910,18 +2782,6 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Comment Commento - - Transaction ID - ID della transazione - - - Transaction - Transazione - - - Inputs - Input - Amount @@ -2938,7 +2798,7 @@ Questa etichetta diventa rossa se la priorità è minore di "media". falso - + Open for %n more block(s) Aperto per %n altro blocco @@ -2969,12 +2829,7 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Questo pannello mostra una descrizione dettagliata della transazione - - View Attachment - Mostra allegati - - - + Execute Contract Esegui contratto @@ -2983,21 +2838,11 @@ Questa etichetta diventa rossa se la priorità è minore di "media". C&lose C&hiudi - - - Gridcoin Documents - Documenti Gridcoin - - - - Document cannot be found on P2P server. - Il documento non può essere trovato sul server P2P. - TransactionTableModel - + Date Data @@ -3050,37 +2895,17 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Questo blocco non è stato ricevuto da nessun altro nodo<br> e probabilmente non sarà accettato! - + Received from Ricevuto da - - Mined - DPOR - Estratto - DPOR - - - - Minted - (Local) DPOR - Coniato - DPOR (Locale) - - - - Mined - PoR - Estratto - PoR - - - - Mined - Interest - Estratto - Interesse - - - + Destination address of transaction. Indirizzo di destinazione della transazione. - + Offline Offline @@ -3100,7 +2925,7 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Generato, ma non accettato - + Received with Ricevuto tramite @@ -3115,12 +2940,42 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Pagamento a te stesso - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (n/d) - + 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. @@ -3309,29 +3164,10 @@ Questa etichetta diventa rossa se la priorità è minore di "media". a - - UpgradeDialog - - Gridcoin Upgrading Facility - Servizio Aggiornamento Gridcoin - - - Retry Download - Riprova il download - - - Upgrade - Aggiorna - - - Hide - Nascondi - - VotingChartDialog - + Poll Results Risultati sondaggio @@ -3421,14 +3257,6 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Share Type Tipo quota - - Question - Domanda - - - Answers - Risposte - # Voters @@ -3439,10 +3267,6 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Total Shares Totale partecipazione - - URL - URL - Best Answer @@ -3468,10 +3292,6 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Share Type. Tipo quota. - - Question. - Domanda. - Total Participants. @@ -3482,10 +3302,6 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Total Shares. Totale quote. - - URL. - URL. - Best Answer. @@ -3495,7 +3311,7 @@ Questa etichetta diventa rossa se la priorità è minore di "media". VotingVoteDialog - + PlaceVote PlaceVote @@ -3528,7 +3344,7 @@ Questa etichetta diventa rossa se la priorità è minore di "media". WalletModel - + Sending... Invio... @@ -3536,20 +3352,16 @@ Questa etichetta diventa rossa se la priorità è minore di "media". bitcoin-core - + Options: Opzioni: - + This help message Questo messaggio di aiuto - - Specify configuration file (default: gridcoin.conf) - Specifica il file di configurazione (default: gridcoin.conf) - Specify pid file (default: gridcoind.pid) @@ -3581,12 +3393,12 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Specifica il timeout di connessione in millisecondi (predefinito: 5000) - + Connect through socks proxy Collegati tramite proxy socks - + Select the version of socks proxy to use (4-5, default: 5) Seleziona la versione del proxy socks da utilizzare (4-5, default: 5) @@ -3596,7 +3408,7 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Usa il proxy per raggiungere servizzi tor nascosti (default: come -proxy) - + Listen for connections on <port> (default: 32749 or testnet: 32748) Resta in ascolto per le connessioni sulla <porta> (default: 32749 o testnet: 32748) @@ -3606,7 +3418,7 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Mantieni al massimo <n> connessioni ai peer (predefinite: 125) - + Connect only to the specified node(s) Connetti solo al nodo specificato @@ -3616,26 +3428,22 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Connessione ad un nodo e successiva disconnessione per recuperare gli indirizzi dei peer - + Specify your own public address Specifica il tuo indirizzo pubblico - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) Connetti solo a nodi nella rete <rete> (IPv4, IPv6 o Tor) - + Discover own IP address (default: 1 when listening and no -externalip) Scoprire il prorio indirizzo IP (predefinito: 1 se in ascolto e -externalip non impostato) - Find peers using internet relay chat (default: 0) - Trova peers che stanno usando la internet relay chat (default: 0) - - - + Accept connections from outside (default: 1 if no -proxy or -connect) Accetta connessioni dall'esterno (predefinito: 1 se -proxy o -connect non impostati) @@ -3645,26 +3453,22 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Collegati ad un determinato indirizzo. Usa la notazione [host]:porta per IPv6 - + Find peers using DNS lookup (default: 1) Trova i peer usando DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) Sincronizza l'ora con gli altri nodi. Disabilitare nel caso in cui l'ora sul proprio sistema sia precisa es. sincronizzazione tramite NTP (default: 1) - Sync checkpoints policy (default: strict) - Politica sincronizzazione checkpoint (default: strict) - - - + Threshold for disconnecting misbehaving peers (default: 100) Soglia di disconnessione dei peer di cattiva qualità (predefinita: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Numero di secondi che i peer di cattiva qualità devono attendere prima di riconnettersi (predefiniti: 86400) @@ -3759,6 +3563,16 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3819,6 +3633,11 @@ Questa etichetta diventa rossa se la priorità è minore di "media". ERROR + + + Entire balance reserved + + Expires @@ -3884,11 +3703,6 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Message Messaggio - - - Messate Type - - Miner: @@ -3925,12 +3739,7 @@ Questa etichetta diventa rossa se la priorità è minore di "media". - - No coins; - - - - + Offline; @@ -3940,12 +3749,7 @@ Questa etichetta diventa rossa se la priorità è minore di "media". - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -4025,12 +3829,12 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Usa UPnP per mappare la porta in ascolto (default: 0) - + Fee per KB to add to transactions you send Commissione per KB da aggiungere alle transazioni che invii - + When creating transactions, ignore inputs with value less than this (default: 0.01) Quando si creano transazioni, ignora input con valori minori di questo (default: 0.01) @@ -4040,13 +3844,13 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Accetta comandi da riga di comando e JSON-RPC - + Use the test network Utilizza la rete di prova - + Output extra debugging information. Implies all other -debug* options Visualizza informazioni extra di debug. Implica tutte le altre opzioni -debug* @@ -4056,7 +3860,7 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Visualizza informazioni extra di debug della rete - + Prepend debug output with timestamp Anteponi timestamp agli output del debug @@ -4066,7 +3870,7 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Invia informazioni di trace/debug al debugger - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) Resta in ascolto per le connessioni JSON-RPC sulla <porta> (default: 15715 o testnet: 25715) @@ -4077,7 +3881,7 @@ Questa etichetta diventa rossa se la priorità è minore di "media". - + 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) @@ -4087,7 +3891,7 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Richiedi una conferma per il resto (default: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) Forza gli script delle transazioni ad utilizzare gli operatori PUSH canonici (default: 1) @@ -4097,7 +3901,7 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Esegui comando quando viene ricevuto un avviso pertinente (%s in cmd è sostituito dal messaggio) - + Upgrade wallet to latest format Aggiorna il wallet all'ultimo formato @@ -4113,7 +3917,7 @@ Questa etichetta diventa rossa se la priorità è minore di "media". - + Attempt to recover private keys from a corrupt wallet.dat Tenta di recuperare le chiavi private da un wallet.dat corrotto @@ -4133,7 +3937,7 @@ Questa etichetta diventa rossa se la priorità è minore di "media". - + Boinc Mining @@ -4143,7 +3947,7 @@ Questa etichetta diventa rossa se la priorità è minore di "media". - + Error obtaining next project. Error 06172014. @@ -4193,12 +3997,32 @@ Questa etichetta diventa rossa se la priorità è minore di "media". - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -4213,12 +4037,12 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Imposta la dimensione massima di un blocco in byte (default: 250000) - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) Imposta la dimensione massima delle transazioni high-priority/low-fee in byte (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) Opzioni SSL: (vedi il wiki di Bitcoin per le istruzioni di configurazione SSL) @@ -4239,21 +4063,17 @@ Questa etichetta diventa rossa se la priorità è minore di "media". 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) - - - + Invalid amount for -paytxfee=<amount>: '%s' Importo non valido per -paytxfee=<importo>: '%s' - + 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. - + Invalid amount for -mininput=<amount>: '%s' Importo non valido per -mininput=<importo>: '%s' @@ -4263,22 +4083,22 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Verifica d'integrita di inizializzazione fallita. Gridcoin verrà chiuso. - + Wallet %s resides outside data directory %s. Il portamonete %s è fuori dalla cartella dati %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. Impossibile ottenere un lock sulla cartella dati %s. Gridcoin è probabilmente già in esecuzione. - + Verifying database integrity... Verifica dell'integrità del database... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. Errore durante l'inizializzazione dell'ambiente del database %s! Per ripristinare, FARE IL BACKUP DI QUELLA CARTELLA, poi rimuoverne tutto il contenuto tranne wallet.dat. @@ -4288,10 +4108,15 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Attenzione: wallet.dat corrotto, dati salvati! Il wallet.dat originale salvato come wallet.{timestamp}.bak in %s; se il tuo bilancio o le transazioni non sono corrette dovresti ripristinare da un backup. - + Vote Vota + + + Waiting for coins to mature + + Wallet locked; @@ -4308,17 +4133,17 @@ Questa etichetta diventa rossa se la priorità è minore di "media". wallet.dat corrotto, salvataggio fallito - + Unknown -socks proxy version requested: %i Richiesta versione -socks proxy sconosciuta: %i - + Invalid -tor address: '%s' Indirizzo -tor non valido: '%s' - + Cannot resolve -bind address: '%s' Impossibile risolvere indirizzo -bind: '%s' @@ -4328,16 +4153,10 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Impossibile risolvere indirizzo -externalip: '%s' - + Invalid amount for -reservebalance=<amount> Importo non valido per -reservebalance=<importo> - - Unable to sign checkpoint, wrong checkpointkey? - - Impossibile firmare checkpoint, chiave checkpoint errata? - - Error loading blkindex.dat @@ -4349,22 +4168,22 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Errore caricamento wallet.dat: portamonete corrotto - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. Attenzione: errore di lettura di wallet.dat! Tutte le chiavi lette correttamente, ma i dati delle transazioni o le voci in rubrica potrebbero mancare o non essere corretti. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin Errore durante il caricamento di wallet.dat: il portamonete richiede una versione più recente di Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete Il portamonete doveva essere riscritto: riavviare Gridcoin per completare - + Error loading wallet.dat Errore caricamento wallet.dat @@ -4384,17 +4203,17 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Errore: impossibile avviare il nodo - + Unable to bind to %s on this computer. Gridcoin is probably already running. Impossibile collegarsi alla %s su questo computer. Gridcoin è probabilmente già in esecuzione. - + Unable to bind to %s on this computer (bind returned error %d, %s) Impossibile collegarsi alla %s su questo computer (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction Errore: portamonete bloccato, impossibile creare la transazione @@ -4404,59 +4223,47 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Errore: portamonete sbloccato solo per lo staking, impossibile creare la transazione. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds Errore: questa transazione richiede una commissione di transazione di almeno %s a causa del suo importo, della sua complessità o dell'utilizzo di fondi ricevuti di recente - + Error: Transaction creation failed Errore: creazione della transazione fallita - + Sending... Invio... - + 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. Questo può accadere se alcune monete nel tuo portafoglio sono già state spese, ad esempio se hai usato una copia di wallet.dat e le monete sono state spese nella copia ma non sono state contrassegnate come spese qui. - + Invalid amount Importo non valido - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. Attenzione: verificare che la data e l'ora del computer siano corrette! Se il tuo orologio è sbagliato, Gridcoin non funzionerà correttamente. - Warning: This version is obsolete, upgrade required! - Attenzione: questa versione è obsoleta, aggiornamento necessario! - - - WARNING: synchronized checkpoint violation detected, but skipped! - ATTENZIONE: rilevata violazione del checkpoint sincronizzato, ma ignorata! - - - + Warning: Disk space is low! Attenzione: lo spazio su disco è ridotto! - WARNING: Invalid checkpoint found! Displayed transactions may not be correct! You may need to upgrade, or notify developers. - ATTENZIONE: trovato checkpoint non valido! Le transazioni visualizzate potrebbero non essere corrette! Potrebbe essere necessario aggiornare o informare gli sviluppatori. - - - + Run in the background as a daemon and accept commands Esegui in background come demone ed accetta i comandi - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) Esegue un comando quando lo stato di una transazione del portamonete cambia (%s in cmd è sostituito da TxID) @@ -4466,12 +4273,12 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Opzioni creazione blocco: - + Failed to listen on any port. Use -listen=0 if you want this. Nessuna porta disponibile per l'ascolto. Usa -listen=0 se vuoi procedere comunque. - + Specify wallet file (within data directory) Specifica il file del portamonete (all'interno della cartella dati) @@ -4496,7 +4303,7 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Password per connessioni JSON-RPC - + Execute command when the best block changes (%s in cmd is replaced by block hash) Esegue un comando quando il miglior blocco cambia (%s nel cmd è sostituito dall'hash del blocco) @@ -4506,12 +4313,12 @@ Questa etichetta diventa rossa se la priorità è minore di "media". Consente interrogazioni DNS per -addnode, -seednode e -connect - + To use the %s option Per usare l'opzione %s - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -4553,12 +4360,12 @@ If the file does not exist, create it with owner-readable-only file permissions. Devi settare rpcpassword=<password> nel file di configurazione: %s Se il file non esiste, crealo con i permessi di amministratore. - + Gridcoin version Versione Gridcoin - + Usage: Utilizzo: @@ -4568,7 +4375,7 @@ If the file does not exist, create it with owner-readable-only file permissions. Invia comando a -server o gridcoind - + List commands Lista comandi @@ -4595,12 +4402,12 @@ If the file does not exist, create it with owner-readable-only file permissions. Indirizzo -proxy non valido: '%s' - + Unknown network specified in -onlynet: '%s' Rete sconosciuta specificata in -onlynet: '%s' - + Insufficient funds Fondi insufficienti @@ -4610,17 +4417,17 @@ If the file does not exist, create it with owner-readable-only file permissions. Caricamento dell'indice dei blocchi... - + Add a node to connect to and attempt to keep the connection open Aggiunge un nodo a cui connettersi e tenta di mantenere aperta la connessione - + Loading wallet... Caricamento portamonete... - + Cannot downgrade wallet Non è possibile effettuare il downgrade del portamonete @@ -4630,17 +4437,17 @@ If the file does not exist, create it with owner-readable-only file permissions. Non è possibile scrivere l'indirizzo predefinito - + Rescanning... Ripetizione scansione... - + Done loading Caricamento completato - + Error Errore diff --git a/src/qt/locale/bitcoin_ja.ts b/src/qt/locale/bitcoin_ja.ts index d8afbf0f3f..0d02563078 100644 --- a/src/qt/locale/bitcoin_ja.ts +++ b/src/qt/locale/bitcoin_ja.ts @@ -299,12 +299,12 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + Sign &message... メッセージの署名... (&m) - + &Overview 概要(&O) @@ -400,7 +400,7 @@ This product includes software developed by the OpenSSL Project for use in the O アプリケーションを終了 - + &Options... オプション... (&O) @@ -415,7 +415,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + %n second(s) ago @@ -443,7 +443,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Date: %1 Amount: %2 Type: %3 @@ -451,7 +451,7 @@ Address: %4 - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -461,18 +461,10 @@ Address: %4 - &Backup Wallet... - ウォレットのバックアップ... (&B) - - - + &Change Passphrase... パスフレーズの変更... (&C) - - Backup wallet to another location - ウォレットを他の場所にバックアップ - Change the passphrase used for wallet encryption @@ -524,7 +516,7 @@ Address: %4 メッセージの検証... (&V) - + Wallet ウォレット @@ -534,7 +526,7 @@ Address: %4 - + &Send 送金 (&S) @@ -554,28 +546,12 @@ Address: %4 - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -585,7 +561,7 @@ Address: %4 - + &Diagnostics @@ -615,14 +591,14 @@ Address: %4 - + [testnet] [testnet] - + Gridcoin client @@ -632,7 +608,7 @@ Address: %4 - + Last received block was generated %1. @@ -677,7 +653,7 @@ Address: %4 - + URI handling URI の操作 @@ -736,7 +712,7 @@ Address: %4 - + %n second(s) %n 秒 @@ -764,7 +740,37 @@ Address: %4 - + + Scraper: waiting on wallet to sync. + + + + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + &File ファイル(&F) @@ -779,17 +785,12 @@ Address: %4 - - &Advanced - - - - + &Help ヘルプ(&H) - + Processed %n block(s) of transaction history. トランザクション履歴の %n ブロックを処理しました。 @@ -801,12 +802,12 @@ Address: %4 バージョンは最新です - + Catching up... 追跡中... - + Sent transaction 送金取引 @@ -816,16 +817,12 @@ Address: %4 着金取引 - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - ウォレットは<b>暗号化されて、アンロックされています</b> - - - + Wallet is <b>encrypted</b> and currently <b>locked</b> ウォレットは<b>暗号化されて、ロックされています</b> - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. @@ -833,7 +830,7 @@ Address: %4 ClientModel - + Network Alert @@ -915,10 +912,6 @@ Address: %4 (un)select all すべて選択/選択解除 - - List mode - リストモード - Amount @@ -1284,7 +1277,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1497,10 +1490,6 @@ This label turns red, if the priority is smaller than "medium". Map port using &UPnP UPnP を使ってポートを割り当てる (&U) - - Proxy &IP: - プロキシの IP (&I) : - &Port: @@ -1734,6 +1723,14 @@ This label turns red, if the priority is smaller than "medium". + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1795,7 +1792,7 @@ This label turns red, if the priority is smaller than "medium". RPCConsole - + @@ -1807,7 +1804,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A N/A @@ -1827,12 +1824,12 @@ This label turns red, if the priority is smaller than "medium". 起動した日時 - + Gridcoin - Debug Console - + Boost version @@ -1907,7 +1904,12 @@ This label turns red, if the priority is smaller than "medium". 開く (&O) - + + &Scraper + + + + Command-line options コマンドライン オプション @@ -1997,7 +1999,7 @@ This label turns red, if the priority is smaller than "medium". - + %1 B %1 B @@ -2294,22 +2296,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: 金額(&A): - + Pay &To: 送り先(&T): - + &Label: ラベル(&L): - + Alt+A Alt+A @@ -2335,12 +2337,12 @@ This label turns red, if the priority is smaller than "medium". アドレス帳に追加するには、このアドレスのラベルを入力します - + Form フォーム - + The address to send the payment to (e.g. Sjz75uKHzUQJnSdzvpiigEGxseKkDhQToX) @@ -2355,17 +2357,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2612,22 +2609,47 @@ This label turns red, if the priority is smaller than "medium". - + Source ソース - + Generated in CoinBase - - Generated, PoS + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE - + + MINED - UNKNOWN + + + + TX ID @@ -2662,10 +2684,6 @@ This label turns red, if the priority is smaller than "medium". Transaction Inputs - - Generated - 生成された - @@ -2695,10 +2713,6 @@ This label turns red, if the priority is smaller than "medium". Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - 情報 - label @@ -2753,18 +2767,6 @@ This label turns red, if the priority is smaller than "medium". Comment コメント - - Transaction ID - 取引 ID - - - Transaction - 取引 - - - Inputs - 入力 - Amount @@ -2794,12 +2796,7 @@ This label turns red, if the priority is smaller than "medium". ここでは取引の詳細を表示しています - - View Attachment - - - - + Execute Contract @@ -2808,21 +2805,11 @@ This label turns red, if the priority is smaller than "medium". C&lose 閉じる(&C) - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date 日付 @@ -2857,32 +2844,12 @@ This label turns red, if the priority is smaller than "medium". - - Mined - DPOR - - - - - Minted - (Local) DPOR - - - - - Mined - PoR - - - - - Mined - Interest - - - - + Destination address of transaction. - + Open for %n more block(s) %n 以上のブロックを開く @@ -2919,7 +2886,7 @@ This label turns red, if the priority is smaller than "medium". 生成されましたが承認されませんでした - + Received with 送り主 @@ -2939,12 +2906,42 @@ This label turns red, if the priority is smaller than "medium". 自分自身への支払い - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (n/a) - + Transaction status. Hover over this field to show number of confirmations. 取引の状況。このフィールドの上にカーソルを置くと検証の数を表示します。 @@ -3133,17 +3130,10 @@ This label turns red, if the priority is smaller than "medium". から - - UpgradeDialog - - Hide - 隠す - - VotingChartDialog - + Poll Results @@ -3287,7 +3277,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3320,7 +3310,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3328,12 +3318,12 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: オプション: - + This help message @@ -3368,12 +3358,12 @@ This label turns red, if the priority is smaller than "medium". - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3383,7 +3373,7 @@ This label turns red, if the priority is smaller than "medium". - + Listen for connections on <port> (default: 32749 or testnet: 32748) <port> で 接続をリスン (デフォルト: 15714かtestnet は 25714) {32749 ?} {32748)?} @@ -3393,7 +3383,7 @@ This label turns red, if the priority is smaller than "medium". - + Connect only to the specified node(s) @@ -3403,22 +3393,22 @@ This label turns red, if the priority is smaller than "medium". ピア アドレスを取得するためにノードに接続し、そして切断します - + Specify your own public address あなた自身のパブリックなアドレスを指定 - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -3428,22 +3418,22 @@ This label turns red, if the priority is smaller than "medium". - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + Threshold for disconnecting misbehaving peers (default: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) @@ -3538,6 +3528,16 @@ This label turns red, if the priority is smaller than "medium". Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3598,6 +3598,11 @@ This label turns red, if the priority is smaller than "medium". ERROR + + + Entire balance reserved + + Expires @@ -3663,11 +3668,6 @@ This label turns red, if the priority is smaller than "medium". Message メッセージ - - - Messate Type - - Miner: @@ -3704,12 +3704,7 @@ This label turns red, if the priority is smaller than "medium". - - No coins; - - - - + Offline; @@ -3719,12 +3714,7 @@ This label turns red, if the priority is smaller than "medium". - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3804,12 +3794,12 @@ This label turns red, if the priority is smaller than "medium". - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) @@ -3819,12 +3809,12 @@ This label turns red, if the priority is smaller than "medium". コマンドラインと JSON-RPC コマンドを許可 - + Use the test network - + Output extra debugging information. Implies all other -debug* options @@ -3834,7 +3824,7 @@ This label turns red, if the priority is smaller than "medium". - + Prepend debug output with timestamp @@ -3844,7 +3834,7 @@ This label turns red, if the priority is smaller than "medium". - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -3854,7 +3844,7 @@ This label turns red, if the priority is smaller than "medium". - + Send commands to node running on <ip> (default: 127.0.0.1) @@ -3864,7 +3854,7 @@ This label turns red, if the priority is smaller than "medium". - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -3874,7 +3864,7 @@ This label turns red, if the priority is smaller than "medium". - + Upgrade wallet to latest format @@ -3889,7 +3879,7 @@ This label turns red, if the priority is smaller than "medium". - + Attempt to recover private keys from a corrupt wallet.dat @@ -3909,7 +3899,7 @@ This label turns red, if the priority is smaller than "medium". - + Boinc Mining @@ -3919,7 +3909,7 @@ This label turns red, if the priority is smaller than "medium". - + Error obtaining next project. Error 06172014. @@ -3969,12 +3959,32 @@ This label turns red, if the priority is smaller than "medium". - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -3989,12 +3999,12 @@ This label turns red, if the priority is smaller than "medium". - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -4014,17 +4024,17 @@ This label turns red, if the priority is smaller than "medium". - + Invalid amount for -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - + Invalid amount for -mininput=<amount>: '%s' @@ -4034,22 +4044,22 @@ This label turns red, if the priority is smaller than "medium". - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4059,10 +4069,15 @@ This label turns red, if the priority is smaller than "medium". - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4079,17 +4094,17 @@ This label turns red, if the priority is smaller than "medium". - + Unknown -socks proxy version requested: %i - + Invalid -tor address: '%s' - + Cannot resolve -bind address: '%s' @@ -4099,7 +4114,7 @@ This label turns red, if the priority is smaller than "medium". - + Invalid amount for -reservebalance=<amount> @@ -4114,22 +4129,22 @@ This label turns red, if the priority is smaller than "medium". - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete - + Error loading wallet.dat @@ -4149,17 +4164,17 @@ This label turns red, if the priority is smaller than "medium". - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4169,47 +4184,47 @@ This label turns red, if the priority is smaller than "medium". - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - + Warning: Disk space is low! - + Run in the background as a daemon and accept commands デーモンとしてバックグランドで実行しコマンドを許可 - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) ウォレットの取引を変更する際にコマンドを実行 (cmd の %s は TxID に置換される) @@ -4219,14 +4234,14 @@ This label turns red, if the priority is smaller than "medium". ブロック作成オプション: - + Failed to listen on any port. Use -listen=0 if you want this. ポートのリスンに失敗しました。必要であれば -listen=0 を使用してください。 - + Specify wallet file (within data directory) - ウォレットのファイルを指定 (データ・ディレクトリの中に) + ウォレットのファイルを指定 (データ・ディレクトリの中に) @@ -4249,7 +4264,7 @@ This label turns red, if the priority is smaller than "medium". JSON-RPC 接続のパスワード - + Execute command when the best block changes (%s in cmd is replaced by block hash) 最良のブロックに変更する際にコマンドを実行 (cmd の %s はブロック ハッシュに置換される) @@ -4259,12 +4274,12 @@ This label turns red, if the priority is smaller than "medium". -addnode, -seednode と -connect で DNS ルックアップを許可する - + To use the %s option - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -4296,12 +4311,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Gridcoin version - + Usage: 使用法: @@ -4311,7 +4326,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + List commands @@ -4336,12 +4351,12 @@ If the file does not exist, create it with owner-readable-only file permissions. 無効な -proxy アドレス: '%s' - + Unknown network specified in -onlynet: '%s' -onlynet で指定された '%s' は未知のネットワークです - + Insufficient funds 残高不足 @@ -4351,17 +4366,17 @@ If the file does not exist, create it with owner-readable-only file permissions. ブロック インデックスを読み込んでいます... - + Add a node to connect to and attempt to keep the connection open 接続するノードを追加し接続を保持します - + Loading wallet... ウォレットを読み込んでいます... - + Cannot downgrade wallet ウォレットのダウングレードはできません @@ -4371,17 +4386,17 @@ If the file does not exist, create it with owner-readable-only file permissions. 初期値のアドレスを書き込むことができません - + Rescanning... 再スキャン中... - + Done loading 読み込み完了 - + Error エラー diff --git a/src/qt/locale/bitcoin_ka.ts b/src/qt/locale/bitcoin_ka.ts index 3243365d2a..7a101d9af5 100644 --- a/src/qt/locale/bitcoin_ka.ts +++ b/src/qt/locale/bitcoin_ka.ts @@ -299,12 +299,12 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + Sign &message... ხელ&მოწერა - + &Overview მიმ&ოხილვა @@ -400,7 +400,7 @@ This product includes software developed by the OpenSSL Project for use in the O გასვლა - + &Options... &ოპციები @@ -414,19 +414,11 @@ This product includes software developed by the OpenSSL Project for use in the O Encrypt or decrypt wallet - - &Backup Wallet... - საფულის &არქივირება - &Change Passphrase... ფრაზა-პაროლის შე&ცვლა - - Backup wallet to another location - საფულის არქივირება სხვა ადგილზე - Change the passphrase used for wallet encryption @@ -478,7 +470,7 @@ This product includes software developed by the OpenSSL Project for use in the O &ვერიფიკაცია - + Wallet საფულე @@ -488,7 +480,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Send &გაგზავნა @@ -508,28 +500,12 @@ This product includes software developed by the OpenSSL Project for use in the O - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -539,7 +515,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Diagnostics @@ -569,14 +545,14 @@ This product includes software developed by the OpenSSL Project for use in the O - + [testnet] [testnet] - + Gridcoin client @@ -594,7 +570,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Date: %1 Amount: %2 Type: %3 @@ -602,7 +578,7 @@ Address: %4 - + Wallet is <b>encrypted</b> and currently %1 @@ -649,7 +625,7 @@ Address: %4 - + %n second(s) @@ -691,7 +667,37 @@ Address: %4 - + + Scraper: waiting on wallet to sync. + + + + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + &File &ფაილი @@ -706,17 +712,12 @@ Address: %4 - - &Advanced - - - - + &Help &დახმარება - + %n second(s) ago @@ -753,12 +754,12 @@ Address: %4 განახლებულია - + Catching up... ჩართვა... - + Last received block was generated %1. @@ -813,7 +814,7 @@ Address: %4 მიღებული ტრანსაქციები - + URI handling @@ -824,17 +825,13 @@ Address: %4 URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. - - 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 occurred. Gridcoin can no longer continue safely and will quit. @@ -842,7 +839,7 @@ Address: %4 ClientModel - + Network Alert @@ -924,10 +921,6 @@ Address: %4 Priority - - List mode - სია - Amount @@ -1293,7 +1286,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1506,10 +1499,6 @@ This label turns red, if the priority is smaller than "medium". Map port using &UPnP პორტის გადამისამართება &UPnP-ით - - Proxy &IP: - პროქსის &IP: - &Port: @@ -1743,6 +1732,14 @@ This label turns red, if the priority is smaller than "medium". + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1804,7 +1801,7 @@ This label turns red, if the priority is smaller than "medium". RPCConsole - + @@ -1816,7 +1813,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A მიუწვდ. @@ -1871,12 +1868,12 @@ This label turns red, if the priority is smaller than "medium". &ქსელის ტრაფიკი - + Gridcoin - Debug Console - + Boost version @@ -1971,7 +1968,12 @@ This label turns red, if the priority is smaller than "medium". გამავალი: - + + &Scraper + + + + Debug log file დახვეწის ლოგ-ფაილი @@ -2001,7 +2003,7 @@ This label turns red, if the priority is smaller than "medium". აკრიფეთ <b>help</b> ფაშვებული ბრძანებების სანახავად. - + %1 B %1 B @@ -2036,7 +2038,7 @@ This label turns red, if the priority is smaller than "medium". - + Welcome to the Gridcoin RPC console! @@ -2303,22 +2305,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: &რაოდენობა - + Pay &To: ადრესა&ტი: - + &Label: ნიშნუ&ლი: - + Alt+A Alt+A @@ -2338,12 +2340,12 @@ This label turns red, if the priority is smaller than "medium". მესიჯი: - + Form ფორმა - + Enter a label for this address to add it to your address book @@ -2364,17 +2366,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2623,22 +2620,47 @@ This label turns red, if the priority is smaller than "medium". - + Source - + Generated in CoinBase - - Generated, PoS + + MINED - POS - + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From @@ -2757,10 +2779,6 @@ This label turns red, if the priority is smaller than "medium". Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - ინფორმაცია - Amount @@ -2790,12 +2808,7 @@ This label turns red, if the priority is smaller than "medium". ტრანსაქციის დაწვრილებითი აღწერილობა - - View Attachment - - - - + Execute Contract @@ -2804,21 +2817,11 @@ This label turns red, if the priority is smaller than "medium". C&lose &დახურვა - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date თარიღი @@ -2891,7 +2894,7 @@ This label turns red, if the priority is smaller than "medium". - + Received with @@ -2911,32 +2914,42 @@ This label turns red, if the priority is smaller than "medium". - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) - + Transaction status. Hover over this field to show number of confirmations. @@ -3133,7 +3146,7 @@ This label turns red, if the priority is smaller than "medium". VotingChartDialog - + Poll Results @@ -3277,7 +3290,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3310,7 +3323,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3318,37 +3331,37 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: ოპციები: - + Specify data directory მიუთითეთ მონაცემთა კატალოგი - + Connect to a node to retrieve peer addresses, and disconnect მიერთება კვანძთან, პირების მისამართების მიღება და გათიშვა - + Specify your own public address მიუთითეთ თქვენი საჯარო მისამართი - + Accept command line and JSON-RPC commands საკომანდო სტრიქონისა და JSON-RPC-კომამდების ნებართვა - + Run in the background as a daemon and accept commands რეზიდენტულად გაშვება და კომანდების მიღება - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) კომანდის შესრულება საფულის ტრანსაქციის ცვლილებისას (%s კომანდაში ჩანაცვლდება TxID-ით) @@ -3358,12 +3371,12 @@ This label turns red, if the priority is smaller than "medium". ბლოკის შექმნის ოპციები: - + Failed to listen on any port. Use -listen=0 if you want this. ვერ ხერხდება პორტების მიყურადება. თუ გსურთ, გამოიყენეთ -listen=0. - + Specify configuration file (default: gridcoinresearch.conf) @@ -3393,7 +3406,7 @@ This label turns red, if the priority is smaller than "medium". პაროლი JSON-RPC-შეერთებისათვის - + Execute command when the best block changes (%s in cmd is replaced by block hash) კომანდის შესრულება უკეთესი ბლოკის გამოჩენისას (%s კომანდაში ჩანაცვლდება ბლოკის ჰეშით) @@ -3403,7 +3416,7 @@ This label turns red, if the priority is smaller than "medium". DNS-ძებნის დაშვება -addnode, -seednode და -connect-სათვის - + Loading addresses... მისამართების ჩატვირთვა... @@ -3413,12 +3426,12 @@ This label turns red, if the priority is smaller than "medium". არასწორია მისამართი -proxy: '%s' - + Unknown network specified in -onlynet: '%s' -onlynet-ში მითითებულია უცნობი ქსელი: '%s' - + Insufficient funds არ არის საკმარისი თანხა @@ -3428,17 +3441,17 @@ This label turns red, if the priority is smaller than "medium". ბლოკების ინდექსის ჩატვირთვა... - + Add a node to connect to and attempt to keep the connection open მისაერთებელი კვანძის დამატება და მიერთების შეძლებისდაგვარად შენარჩუნება - + Loading wallet... საფულის ჩატვირთვა... - + Cannot downgrade wallet საფულის ძველ ვერსიაზე გადაყვანა შეუძლებელია @@ -3448,27 +3461,27 @@ This label turns red, if the priority is smaller than "medium". ვერ ხერხდება ნაგულისხმევი მისამართის ჩაწერა - + Rescanning... სკანირება... - + Done loading ჩატვირთვა დასრულებულია - + Error შეცდომა - + To use the %s option - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -3590,6 +3603,16 @@ If the file does not exist, create it with owner-readable-only file permissions. Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3650,6 +3673,11 @@ If the file does not exist, create it with owner-readable-only file permissions. ERROR + + + Entire balance reserved + + Expires @@ -3710,11 +3738,6 @@ If the file does not exist, create it with owner-readable-only file permissions. Message - - - Messate Type - - Miner: @@ -3751,12 +3774,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - No coins; - - - - + Offline; @@ -3766,12 +3784,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3851,7 +3864,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + List commands @@ -3866,7 +3879,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + This help message @@ -3891,12 +3904,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3906,7 +3919,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3916,22 +3929,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Connect only to the specified node(s) - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -3941,27 +3954,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + 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: 5000) @@ -3971,7 +3984,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Use UPnP to map the listening port (default: 1 when listening) @@ -3981,22 +3994,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) - + Use the test network - + Output extra debugging information. Implies all other -debug* options @@ -4006,7 +4019,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Prepend debug output with timestamp @@ -4016,7 +4029,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -4026,7 +4039,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Send commands to node running on <ip> (default: 127.0.0.1) @@ -4036,7 +4049,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -4046,7 +4059,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Upgrade wallet to latest format @@ -4061,7 +4074,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Attempt to recover private keys from a corrupt wallet.dat @@ -4081,7 +4094,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Boinc Mining @@ -4091,7 +4104,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error obtaining next project. Error 06172014. @@ -4141,12 +4154,32 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -4161,12 +4194,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -4186,17 +4219,17 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid amount for -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - + Invalid amount for -mininput=<amount>: '%s' @@ -4206,22 +4239,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4231,10 +4264,15 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4251,17 +4289,17 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Unknown -socks proxy version requested: %i - + Invalid -tor address: '%s' - + Cannot resolve -bind address: '%s' @@ -4271,7 +4309,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid amount for -reservebalance=<amount> @@ -4286,22 +4324,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete - + Error loading wallet.dat @@ -4321,17 +4359,17 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4341,37 +4379,37 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - + Warning: Disk space is low! diff --git a/src/qt/locale/bitcoin_kk_KZ.ts b/src/qt/locale/bitcoin_kk_KZ.ts index 3215b4fef0..0f10d3fc28 100644 --- a/src/qt/locale/bitcoin_kk_KZ.ts +++ b/src/qt/locale/bitcoin_kk_KZ.ts @@ -299,7 +299,7 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + &Transactions &Транзакциялар @@ -309,21 +309,17 @@ This product includes software developed by the OpenSSL Project for use in the O Шығу - + &Options... Параметрлері - - &Backup Wallet... - Әмиянды жасыру - &Change Passphrase... Құпия сөзді өзгерту - + Wallet Әмиян @@ -333,7 +329,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Overview @@ -439,28 +435,12 @@ This product includes software developed by the OpenSSL Project for use in the O - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -470,7 +450,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Diagnostics @@ -565,7 +545,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &File Файл @@ -580,24 +560,49 @@ This product includes software developed by the OpenSSL Project for use in the O - - &Advanced + + Scraper: waiting on wallet to sync. - + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + &Help Көмек - + [testnet] - + Gridcoin client @@ -615,12 +620,12 @@ This product includes software developed by the OpenSSL Project for use in the O - + Catching up... - + Last received block was generated %1. @@ -683,7 +688,7 @@ Address: %4 - + Wallet is <b>encrypted</b> and currently %1 @@ -698,7 +703,7 @@ Address: %4 - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -708,13 +713,13 @@ Address: %4 - + URI handling - + %n second(s) ago @@ -746,7 +751,7 @@ Address: %4 - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. @@ -789,7 +794,7 @@ Address: %4 - + %n second(s) @@ -821,12 +826,12 @@ Address: %4 - + Up to date Жаңартылған - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. @@ -834,7 +839,7 @@ Address: %4 ClientModel - + Network Alert @@ -1281,7 +1286,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1727,6 +1732,14 @@ This label turns red, if the priority is smaller than "medium". + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1793,7 +1806,7 @@ This label turns red, if the priority is smaller than "medium". - + &Information Информация @@ -1815,7 +1828,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A @@ -1964,6 +1977,11 @@ This label turns red, if the priority is smaller than "medium". Clear console + + + &Scraper + + Yes @@ -1990,7 +2008,7 @@ This label turns red, if the priority is smaller than "medium". - + %1 B @@ -2287,22 +2305,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: Саны - + Form - + &Label: - + Enter a label for this address to add it to your address book @@ -2348,17 +2366,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2607,22 +2620,47 @@ This label turns red, if the priority is smaller than "medium". - + Source - + Generated in CoinBase - - Generated, PoS + + MINED - POS - + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From @@ -2741,10 +2779,6 @@ This label turns red, if the priority is smaller than "medium". Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - Информация - Amount @@ -2774,12 +2808,7 @@ This label turns red, if the priority is smaller than "medium". - - View Attachment - - - - + Execute Contract @@ -2788,21 +2817,11 @@ This label turns red, if the priority is smaller than "medium". C&lose Жабу - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Күні @@ -2875,7 +2894,7 @@ This label turns red, if the priority is smaller than "medium". - + Received with @@ -2895,32 +2914,42 @@ This label turns red, if the priority is smaller than "medium". - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) - + Transaction status. Hover over this field to show number of confirmations. @@ -3117,7 +3146,7 @@ This label turns red, if the priority is smaller than "medium". VotingChartDialog - + Poll Results @@ -3261,7 +3290,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3294,7 +3323,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3302,12 +3331,12 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + To use the %s option - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -3322,12 +3351,12 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo - + Error қате - + An error occurred while setting up the RPC port %u for listening on IPv6, falling back to IPv4: %s @@ -3359,7 +3388,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Boinc Mining @@ -3369,7 +3398,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error obtaining next project. Error 06172014. @@ -3409,12 +3438,32 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -3464,7 +3513,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + List commands @@ -3474,7 +3523,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + None @@ -3564,6 +3613,16 @@ If the file does not exist, create it with owner-readable-only file permissions. Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3624,6 +3683,11 @@ If the file does not exist, create it with owner-readable-only file permissions. ERROR + + + Entire balance reserved + + Expires @@ -3684,11 +3748,6 @@ If the file does not exist, create it with owner-readable-only file permissions. Message - - - Messate Type - - Miner: @@ -3725,12 +3784,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - No coins; - - - - + Offline; @@ -3745,12 +3799,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3825,12 +3874,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3840,12 +3889,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Allow DNS lookups for -addnode, -seednode and -connect - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3855,12 +3904,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Add a node to connect to and attempt to keep the connection open - + Connect only to the specified node(s) @@ -3870,22 +3919,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Specify your own public address - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -3895,27 +3944,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + 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: 5000) @@ -3925,7 +3974,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Use UPnP to map the listening port (default: 1 when listening) @@ -3935,12 +3984,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) @@ -3950,7 +3999,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Run in the background as a daemon and accept commands @@ -3960,7 +4009,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Output extra debugging information. Implies all other -debug* options @@ -3970,7 +4019,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Prepend debug output with timestamp @@ -4000,7 +4049,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -4010,12 +4059,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Send commands to node running on <ip> (default: 127.0.0.1) - + Execute command when the best block changes (%s in cmd is replaced by block hash) @@ -4025,12 +4074,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Require a confirmations for change (default: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -4040,7 +4089,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Upgrade wallet to latest format @@ -4055,12 +4104,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Attempt to recover private keys from a corrupt wallet.dat - + How many blocks to check at startup (default: 2500, 0 = all) @@ -4075,12 +4124,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Block creation options: - + Set minimum block size in bytes (default: 0) @@ -4090,12 +4139,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -4115,17 +4164,17 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid amount for -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - + Invalid amount for -mininput=<amount>: '%s' @@ -4135,22 +4184,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4160,7 +4209,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Weight @@ -4170,7 +4219,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Unknown -socks proxy version requested: %i @@ -4180,7 +4229,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid -proxy address: '%s' @@ -4190,22 +4239,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Cannot resolve -bind address: '%s' - + Failed to listen on any port. Use -listen=0 if you want this. - + Cannot resolve -externalip address: '%s' - + Invalid amount for -reservebalance=<amount> @@ -4230,20 +4279,25 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4255,12 +4309,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error loading wallet.dat - + Cannot downgrade wallet @@ -4270,12 +4324,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Rescanning... - + Importing blockchain data file. @@ -4295,22 +4349,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Done loading - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4320,27 +4374,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount @@ -4350,12 +4404,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - + Warning: Disk space is low! diff --git a/src/qt/locale/bitcoin_ko_KR.ts b/src/qt/locale/bitcoin_ko_KR.ts index 02599c27e4..4a854f60a9 100644 --- a/src/qt/locale/bitcoin_ko_KR.ts +++ b/src/qt/locale/bitcoin_ko_KR.ts @@ -299,12 +299,12 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + Sign &message... 메시지 서명(&M)... - + &Overview 개요(&O) @@ -400,7 +400,7 @@ This product includes software developed by the OpenSSL Project for use in the O 어플리케이션 종료 - + &Options... 옵션(&O) @@ -415,7 +415,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + %n second(s) ago @@ -443,7 +443,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Date: %1 Amount: %2 Type: %3 @@ -451,7 +451,7 @@ Address: %4 - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -461,18 +461,10 @@ Address: %4 - &Backup Wallet... - 지갑 백업(&B)... - - - + &Change Passphrase... 암호문 변경(&C)... - - Backup wallet to another location - 지갑을 다른장소에 백업 - Change the passphrase used for wallet encryption @@ -524,7 +516,7 @@ Address: %4 메시지 확인(&V)... - + Wallet 지갑 @@ -534,7 +526,7 @@ Address: %4 - + &Send 보내기(&S) @@ -554,28 +546,12 @@ Address: %4 - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -585,7 +561,7 @@ Address: %4 - + &Diagnostics @@ -615,14 +591,14 @@ Address: %4 - + [testnet] [테스트넷] - + Gridcoin client @@ -632,7 +608,7 @@ Address: %4 - + Last received block was generated %1. @@ -677,7 +653,7 @@ Address: %4 - + URI handling URI 핸들링 @@ -736,7 +712,7 @@ Address: %4 - + %n second(s) %n 초 @@ -764,7 +740,37 @@ Address: %4 - + + Scraper: waiting on wallet to sync. + + + + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + &File 파일(&F) @@ -779,17 +785,12 @@ Address: %4 - - &Advanced - - - - + &Help 도움말(&H) - + Processed %n block(s) of transaction history. %n 블럭 만큼의 거래 기록이 처리됨. @@ -801,12 +802,12 @@ Address: %4 현재까지 - + Catching up... 블록 따라잡기... - + Sent transaction 거래 보내기 @@ -816,16 +817,12 @@ 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 occurred. Gridcoin can no longer continue safely and will quit. @@ -833,7 +830,7 @@ Address: %4 ClientModel - + Network Alert @@ -915,10 +912,6 @@ Address: %4 (un)select all 모두 선택(하지 않음) - - List mode - 리스트 모드 - Amount @@ -1284,7 +1277,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1497,10 +1490,6 @@ This label turns red, if the priority is smaller than "medium". Map port using &UPnP 사용중인 &UPnP 포트 매핑 - - Proxy &IP: - 프록시 &IP: - &Port: @@ -1734,6 +1723,14 @@ This label turns red, if the priority is smaller than "medium". + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1795,7 +1792,7 @@ This label turns red, if the priority is smaller than "medium". RPCConsole - + @@ -1807,7 +1804,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A 없음 @@ -1827,12 +1824,12 @@ This label turns red, if the priority is smaller than "medium". 시작 시간 - + Gridcoin - Debug Console - + Boost version @@ -1907,7 +1904,12 @@ This label turns red, if the priority is smaller than "medium". 열기(&O) - + + &Scraper + + + + Command-line options 명령줄 옵션 @@ -1992,7 +1994,7 @@ This label turns red, if the priority is smaller than "medium". 사용할 수 있는 명령을 둘러보려면 <b>help</b>를 입력하십시오. - + %1 B %1 바이트 @@ -2027,7 +2029,7 @@ This label turns red, if the priority is smaller than "medium". - + Welcome to the Gridcoin RPC console! @@ -2294,22 +2296,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: 금액(&M): - + Pay &To: 송금할 대상(&T): - + &Label: 라벨(&L): - + Alt+A Alt+A @@ -2350,22 +2352,17 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Form 유형 - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2612,22 +2609,17 @@ This label turns red, if the priority is smaller than "medium". - + Source - + Generated in CoinBase - - Generated, PoS - - - - + TX ID @@ -2669,7 +2661,37 @@ This label turns red, if the priority is smaller than "medium". - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + unknown @@ -2691,10 +2713,6 @@ This label turns red, if the priority is smaller than "medium". Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - 정보 - label @@ -2778,12 +2796,7 @@ This label turns red, if the priority is smaller than "medium". 이 창은 거래의 세부내역을 보여줍니다 - - View Attachment - - - - + Execute Contract @@ -2792,21 +2805,11 @@ This label turns red, if the priority is smaller than "medium". C&lose 닫기(&L) - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date 날짜 @@ -2841,32 +2844,12 @@ This label turns red, if the priority is smaller than "medium". - - Mined - DPOR - - - - - Minted - (Local) DPOR - - - - - Mined - PoR - - - - - Mined - Interest - - - - + Destination address of transaction. - + Open for %n more block(s) @@ -2903,7 +2886,7 @@ This label turns red, if the priority is smaller than "medium". - + Received with 받은 주소 @@ -2923,12 +2906,42 @@ This label turns red, if the priority is smaller than "medium". - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) - + Transaction status. Hover over this field to show number of confirmations. @@ -3117,17 +3130,10 @@ This label turns red, if the priority is smaller than "medium". 상대방 - - UpgradeDialog - - Hide - 숨기기 - - VotingChartDialog - + Poll Results @@ -3271,7 +3277,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3304,7 +3310,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3312,12 +3318,12 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: 옵션: - + This help message @@ -3352,12 +3358,12 @@ This label turns red, if the priority is smaller than "medium". - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3367,7 +3373,7 @@ This label turns red, if the priority is smaller than "medium". - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3377,7 +3383,7 @@ This label turns red, if the priority is smaller than "medium". - + Connect only to the specified node(s) @@ -3387,22 +3393,22 @@ This label turns red, if the priority is smaller than "medium". 피어 주소를 받기 위해 노드에 연결하고, 받은 후에 연결을 끊습니다 - + Specify your own public address 공인 주소를 지정하십시오 - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -3412,22 +3418,22 @@ This label turns red, if the priority is smaller than "medium". - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + Threshold for disconnecting misbehaving peers (default: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) @@ -3522,6 +3528,16 @@ This label turns red, if the priority is smaller than "medium". Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3582,6 +3598,11 @@ This label turns red, if the priority is smaller than "medium". ERROR + + + Entire balance reserved + + Expires @@ -3647,11 +3668,6 @@ This label turns red, if the priority is smaller than "medium". Message 메시지 - - - Messate Type - - Miner: @@ -3688,12 +3704,7 @@ This label turns red, if the priority is smaller than "medium". - - No coins; - - - - + Offline; @@ -3703,12 +3714,7 @@ This label turns red, if the priority is smaller than "medium". - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3788,12 +3794,12 @@ This label turns red, if the priority is smaller than "medium". - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) @@ -3803,12 +3809,12 @@ This label turns red, if the priority is smaller than "medium". 명령줄과 JSON-RPC 명령 수락 - + Use the test network - + Output extra debugging information. Implies all other -debug* options @@ -3818,7 +3824,7 @@ This label turns red, if the priority is smaller than "medium". - + Prepend debug output with timestamp @@ -3828,7 +3834,7 @@ This label turns red, if the priority is smaller than "medium". - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -3838,7 +3844,7 @@ This label turns red, if the priority is smaller than "medium". - + Send commands to node running on <ip> (default: 127.0.0.1) @@ -3848,7 +3854,7 @@ This label turns red, if the priority is smaller than "medium". - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -3858,7 +3864,7 @@ This label turns red, if the priority is smaller than "medium". - + Upgrade wallet to latest format @@ -3873,7 +3879,7 @@ This label turns red, if the priority is smaller than "medium". - + Attempt to recover private keys from a corrupt wallet.dat @@ -3893,7 +3899,7 @@ This label turns red, if the priority is smaller than "medium". - + Boinc Mining @@ -3903,7 +3909,7 @@ This label turns red, if the priority is smaller than "medium". - + Error obtaining next project. Error 06172014. @@ -3953,12 +3959,32 @@ This label turns red, if the priority is smaller than "medium". - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -3973,12 +3999,12 @@ This label turns red, if the priority is smaller than "medium". - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -3998,17 +4024,17 @@ This label turns red, if the priority is smaller than "medium". - + Invalid amount for -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - + Invalid amount for -mininput=<amount>: '%s' @@ -4018,22 +4044,22 @@ This label turns red, if the priority is smaller than "medium". - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4043,10 +4069,15 @@ This label turns red, if the priority is smaller than "medium". - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4063,17 +4094,17 @@ This label turns red, if the priority is smaller than "medium". - + Unknown -socks proxy version requested: %i - + Invalid -tor address: '%s' - + Cannot resolve -bind address: '%s' @@ -4083,7 +4114,7 @@ This label turns red, if the priority is smaller than "medium". - + Invalid amount for -reservebalance=<amount> @@ -4098,22 +4129,22 @@ This label turns red, if the priority is smaller than "medium". - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete - + Error loading wallet.dat @@ -4133,17 +4164,17 @@ This label turns red, if the priority is smaller than "medium". - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4153,47 +4184,47 @@ This label turns red, if the priority is smaller than "medium". - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - + Warning: Disk space is low! - + Run in the background as a daemon and accept commands 데몬으로 백그라운드에서 실행하고 명령을 허용 - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) 지갑 거래가 바뀌면 명령을 실행합니다.(%s 안의 명령어가 TxID로 바뀝니다) @@ -4203,12 +4234,12 @@ This label turns red, if the priority is smaller than "medium". 블록 생성 옵션: - + Failed to listen on any port. Use -listen=0 if you want this. 어떤 포트도 반응하지 않습니다. 사용자 반응=0 만약 원한다면 - + Specify wallet file (within data directory) 데이터 폴더 안에 지갑 파일을 선택하세요. @@ -4233,7 +4264,7 @@ This label turns red, if the priority is smaller than "medium". JSON-RPC 연결에 사용할 암호 - + Execute command when the best block changes (%s in cmd is replaced by block hash) 최고의 블럭이 변하면 명령을 실행(cmd 에 있는 %s 는 블럭 해시에 의해 대체되어 짐) @@ -4243,12 +4274,12 @@ This label turns red, if the priority is smaller than "medium". -addnode, -seednode, -connect 옵션에 대해 DNS 탐색 허용 - + To use the %s option - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -4280,12 +4311,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Gridcoin version - + Usage: 사용법: @@ -4295,7 +4326,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + List commands @@ -4320,12 +4351,12 @@ If the file does not exist, create it with owner-readable-only file permissions. 잘못된 -proxy 주소입니다: '%s' - + Unknown network specified in -onlynet: '%s' -onlynet에 지정한 네트워크를 알 수 없습니다: '%s' - + Insufficient funds 자금 부족 @@ -4335,17 +4366,17 @@ If the file does not exist, create it with owner-readable-only file permissions. 블럭 인덱스를 불러오는 중... - + Add a node to connect to and attempt to keep the connection open 노드를 추가하여 연결하고 연결상태를 계속 유지하려고 시도합니다. - + Loading wallet... 지갑을 불러오는 중... - + Cannot downgrade wallet 지갑을 다운그레이드 할 수 없습니다 @@ -4355,17 +4386,17 @@ If the file does not exist, create it with owner-readable-only file permissions. 기본 계좌에 기록할 수 없습니다 - + Rescanning... 재검색 중... - + Done loading 로딩 완료 - + Error 오류 diff --git a/src/qt/locale/bitcoin_ky.ts b/src/qt/locale/bitcoin_ky.ts index b0252d3413..c69eca4102 100644 --- a/src/qt/locale/bitcoin_ky.ts +++ b/src/qt/locale/bitcoin_ky.ts @@ -299,12 +299,12 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + &Transactions &Транзакциялар - + &Backup Wallet/Config... @@ -319,7 +319,7 @@ This product includes software developed by the OpenSSL Project for use in the O Билдирүүнү &текшерүү... - + Wallet Капчык @@ -329,7 +329,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Overview @@ -440,28 +440,42 @@ This product includes software developed by the OpenSSL Project for use in the O - - &Neural Network + + Scraper: waiting on wallet to sync. - - Neural Network + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. - &New User Wizard + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. - - + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + New User Wizard - + &Voting @@ -471,7 +485,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Diagnostics @@ -561,7 +575,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &File &Файл @@ -576,24 +590,19 @@ This product includes software developed by the OpenSSL Project for use in the O - - &Advanced - - - - + &Help &Жардам - + [testnet] - + Gridcoin client @@ -611,12 +620,12 @@ This product includes software developed by the OpenSSL Project for use in the O - + Catching up... - + Last received block was generated %1. @@ -679,7 +688,7 @@ Address: %4 - + Wallet is <b>encrypted</b> and currently %1 @@ -694,7 +703,7 @@ Address: %4 - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -704,13 +713,13 @@ Address: %4 - + URI handling - + %n second(s) ago @@ -742,7 +751,7 @@ Address: %4 - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. @@ -785,7 +794,7 @@ Address: %4 - + %n second(s) @@ -817,12 +826,12 @@ Address: %4 - + Up to date Жаңыланган - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. @@ -830,7 +839,7 @@ Address: %4 ClientModel - + Network Alert @@ -1277,7 +1286,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1723,6 +1732,14 @@ This label turns red, if the priority is smaller than "medium". + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1784,7 +1801,7 @@ This label turns red, if the priority is smaller than "medium". RPCConsole - + &Information Маалымат @@ -1806,7 +1823,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A @@ -1941,7 +1958,12 @@ This label turns red, if the priority is smaller than "medium". - + + &Scraper + + + + &Open &Ачуу @@ -1956,7 +1978,7 @@ This label turns red, if the priority is smaller than "medium". Консолду тазалоо - + Gridcoin - Debug Console @@ -1986,7 +2008,7 @@ This label turns red, if the priority is smaller than "medium". - + %1 B @@ -2288,12 +2310,12 @@ This label turns red, if the priority is smaller than "medium". - + &Label: - + Enter a label for this address to add it to your address book @@ -2339,22 +2361,17 @@ This label turns red, if the priority is smaller than "medium". Билдирүү: - + Send Custom Message to a Gridcoin Recipient - + A&mount: - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2603,22 +2620,47 @@ This label turns red, if the priority is smaller than "medium". - + Source - + Generated in CoinBase - - Generated, PoS + + MINED - POS - + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From @@ -2737,10 +2779,6 @@ This label turns red, if the priority is smaller than "medium". Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - Маалымат - Amount @@ -2770,12 +2808,7 @@ This label turns red, if the priority is smaller than "medium". - - View Attachment - - - - + Execute Contract @@ -2784,21 +2817,11 @@ This label turns red, if the priority is smaller than "medium". C&lose - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Дата @@ -2871,7 +2894,7 @@ This label turns red, if the priority is smaller than "medium". - + Received with @@ -2891,32 +2914,42 @@ This label turns red, if the priority is smaller than "medium". - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) - + Transaction status. Hover over this field to show number of confirmations. @@ -3113,7 +3146,7 @@ This label turns red, if the priority is smaller than "medium". VotingChartDialog - + Poll Results @@ -3257,7 +3290,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3290,7 +3323,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3298,12 +3331,12 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + To use the %s option - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -3318,12 +3351,12 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo - + Error Ката - + An error occurred while setting up the RPC port %u for listening on IPv6, falling back to IPv4: %s @@ -3355,7 +3388,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Boinc Mining @@ -3365,7 +3398,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error obtaining next project. Error 06172014. @@ -3405,12 +3438,32 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -3460,7 +3513,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + List commands @@ -3470,7 +3523,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + None @@ -3560,6 +3613,16 @@ If the file does not exist, create it with owner-readable-only file permissions. Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3620,6 +3683,11 @@ If the file does not exist, create it with owner-readable-only file permissions. ERROR + + + Entire balance reserved + + Expires @@ -3680,11 +3748,6 @@ If the file does not exist, create it with owner-readable-only file permissions. Message Билдирүү - - - Messate Type - - Miner: @@ -3721,12 +3784,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - No coins; - - - - + Offline; @@ -3741,12 +3799,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3821,12 +3874,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3836,12 +3889,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Allow DNS lookups for -addnode, -seednode and -connect - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3851,12 +3904,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Add a node to connect to and attempt to keep the connection open - + Connect only to the specified node(s) @@ -3866,22 +3919,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Specify your own public address - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -3891,27 +3944,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + 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: 5000) @@ -3921,7 +3974,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Use UPnP to map the listening port (default: 1 when listening) @@ -3931,12 +3984,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) @@ -3946,7 +3999,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Run in the background as a daemon and accept commands @@ -3956,7 +4009,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Output extra debugging information. Implies all other -debug* options @@ -3966,7 +4019,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Prepend debug output with timestamp @@ -3996,7 +4049,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -4006,12 +4059,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Send commands to node running on <ip> (default: 127.0.0.1) - + Execute command when the best block changes (%s in cmd is replaced by block hash) @@ -4021,12 +4074,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Require a confirmations for change (default: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -4036,7 +4089,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Upgrade wallet to latest format @@ -4051,12 +4104,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Attempt to recover private keys from a corrupt wallet.dat - + How many blocks to check at startup (default: 2500, 0 = all) @@ -4071,12 +4124,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Block creation options: - + Set minimum block size in bytes (default: 0) @@ -4086,12 +4139,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -4111,17 +4164,17 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid amount for -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - + Invalid amount for -mininput=<amount>: '%s' @@ -4131,22 +4184,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4156,7 +4209,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Weight @@ -4166,7 +4219,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Unknown -socks proxy version requested: %i @@ -4176,7 +4229,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid -proxy address: '%s' @@ -4186,22 +4239,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Cannot resolve -bind address: '%s' - + Failed to listen on any port. Use -listen=0 if you want this. - + Cannot resolve -externalip address: '%s' - + Invalid amount for -reservebalance=<amount> @@ -4226,20 +4279,25 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4251,12 +4309,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error loading wallet.dat - + Cannot downgrade wallet @@ -4266,12 +4324,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Rescanning... - + Importing blockchain data file. @@ -4291,22 +4349,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Done loading - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4316,27 +4374,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount @@ -4346,12 +4404,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - + Warning: Disk space is low! diff --git a/src/qt/locale/bitcoin_la.ts b/src/qt/locale/bitcoin_la.ts index 9a97b5c645..aa089049cd 100644 --- a/src/qt/locale/bitcoin_la.ts +++ b/src/qt/locale/bitcoin_la.ts @@ -23,19 +23,6 @@ Distributed under the MIT/X11 software license, see the accompanying file COPYIN This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (https://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - - -This is experimental software. - -Distributed under the MIT/X11 software license, see the accompanying file COPYING 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. - Hoc est experimentale programma. - -Distributum sub MIT/X11 licentia programmatum, vide comitantem plicam COPYING vel http://www.opensource.org/licenses/mit-license.php. - -Hoc productum continet programmata composita ab OpenSSL Project pro utendo in OpenSSL Toolkit (http://www.openssl.org/) et programmata cifrarum scripta ab Eric Young (eay@cryptsoft.com) et UPnP programmata scripta ab Thomas Bernard. - AddressBookPage @@ -312,12 +299,12 @@ Hoc productum continet programmata composita ab OpenSSL Project pro utendo in Op BitcoinGUI - + Gridcoin - + Send coins to a Gridcoin address @@ -393,28 +380,42 @@ Hoc productum continet programmata composita ab OpenSSL Project pro utendo in Op - - &Neural Network + + Scraper: waiting on wallet to sync. - - Neural Network + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. - &New User Wizard + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. - - + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + New User Wizard - + &Voting @@ -424,7 +425,7 @@ Hoc productum continet programmata composita ab OpenSSL Project pro utendo in Op - + &Diagnostics @@ -489,24 +490,19 @@ Hoc productum continet programmata composita ab OpenSSL Project pro utendo in Op Exporta data in hac tabella in plicam - + &Community - - &Advanced - - - - + [testnet] [testnet] - + Gridcoin client @@ -524,7 +520,7 @@ Hoc productum continet programmata composita ab OpenSSL Project pro utendo in Op - + Last received block was generated %1. @@ -584,7 +580,7 @@ Inscriptio: %4 ?} {4?} - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -594,19 +590,7 @@ Inscriptio: %4 - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Dies: %1 -Quantitas: %2 -Typus: %3 -Inscriptio: %4 - - - - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. @@ -665,7 +649,7 @@ Inscriptio: %4 - + %n second(s) @@ -697,7 +681,7 @@ Inscriptio: %4 - + &Overview &Summarium @@ -727,7 +711,7 @@ Inscriptio: %4 Exi applicatione - + &Options... &Optiones @@ -736,19 +720,11 @@ Inscriptio: %4 &Encrypt Wallet... &Cifra Cassidile... - - &Backup Wallet... - &Conserva Cassidile... - &Change Passphrase... &Muta tesseram... - - Backup wallet to another location - Conserva cassidile in locum alium - Change the passphrase used for wallet encryption @@ -770,12 +746,12 @@ Inscriptio: %4 &Verifica nuntium... - + Wallet Cassidile - + &Send &Mitte @@ -785,12 +761,12 @@ Inscriptio: %4 &Accipe - + &Show / Hide &Monstra/Occulta - + &File &Plica @@ -800,12 +776,12 @@ Inscriptio: %4 &Configuratio - + &Help &Auxilium - + %n second(s) ago @@ -842,12 +818,12 @@ Inscriptio: %4 Recentissimo - + Catching up... Persequens... - + Sent transaction Transactio missa @@ -857,16 +833,12 @@ Inscriptio: %4 Transactio incipiens - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Cassidile <b>cifratum</b> est et iam nunc <b>reseratum</b> - - - + Wallet is <b>encrypted</b> and currently <b>locked</b> Cassidile <b>cifratum</b> est et iam nunc <b>seratum</b> - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. @@ -874,7 +846,7 @@ Inscriptio: %4 ClientModel - + Network Alert Monitio Retis @@ -1321,7 +1293,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1539,10 +1511,6 @@ This label turns red, if the priority is smaller than "medium". Map port using &UPnP Designa portam utendo &UPnP - - Proxy &IP: - &IP vicarii: - &Port: @@ -1771,6 +1739,14 @@ This label turns red, if the priority is smaller than "medium". non synchronizato + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1832,7 +1808,7 @@ This label turns red, if the priority is smaller than "medium". RPCConsole - + @@ -1844,7 +1820,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A N/A @@ -1924,7 +1900,7 @@ This label turns red, if the priority is smaller than "medium". Scribe <b>help</b> pro summario possibilium mandatorum. - + %1 B @@ -1959,12 +1935,12 @@ This label turns red, if the priority is smaller than "medium". - + Gridcoin - Debug Console - + Boost version @@ -2064,7 +2040,12 @@ This label turns red, if the priority is smaller than "medium". - + + &Scraper + + + + Welcome to the Gridcoin RPC console! @@ -2331,22 +2312,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: &Quantitas: - + Pay &To: Pensa &Ad: - + &Label: &Titulus: - + Alt+A Alt+A @@ -2366,12 +2347,12 @@ This label turns red, if the priority is smaller than "medium". Nuntius: - + Form Schema - + Enter a label for this address to add it to your address book Insero titulum huic inscriptioni ut eam in tuum librum inscriptionum addas. @@ -2392,17 +2373,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2651,26 +2627,47 @@ This label turns red, if the priority is smaller than "medium". - + Source Fons - Generated - Generatum + + Generated in CoinBase + - - Generated in CoinBase + + MINED - POS - - Generated, PoS + + MINED - POR - + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From Ab @@ -2784,27 +2781,11 @@ This label turns red, if the priority is smaller than "medium". Transaction Inputs - - Transaction ID - ID transactionis - Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - Informatio - - - Transaction - Transactio - - - Inputs - Lectenda - Amount @@ -2834,12 +2815,7 @@ This label turns red, if the priority is smaller than "medium". Haec tabula monstrat descriptionem verbosam transactionis - - View Attachment - - - - + Execute Contract @@ -2848,21 +2824,11 @@ This label turns red, if the priority is smaller than "medium". C&lose - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Dies @@ -2935,7 +2901,7 @@ This label turns red, if the priority is smaller than "medium". Generatum sed non acceptum - + Received with Acceptum cum @@ -2955,32 +2921,42 @@ This label turns red, if the priority is smaller than "medium". Pensitatio ad te ipsum - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (n/a) - + Transaction status. Hover over this field to show number of confirmations. Status transactionis. Supervola cum mure ut monstretur numerus confirmationum. @@ -3177,7 +3153,7 @@ This label turns red, if the priority is smaller than "medium". VotingChartDialog - + Poll Results @@ -3321,7 +3297,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3354,7 +3330,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3362,37 +3338,37 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: Optiones: - + Specify data directory Specifica indicem datorum - + Connect to a node to retrieve peer addresses, and disconnect Conecta ad nodum acceptare inscriptiones parium, et disconecte - + Specify your own public address Specifica tuam propriam publicam inscriptionem - + Accept command line and JSON-RPC commands Accipe terminalis et JSON-RPC mandata. - + Run in the background as a daemon and accept commands Operare infere sicut daemon et mandata accipe - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) Facere mandatum quotiescumque cassidilis transactio mutet (%s in mandato sbstituitur ab TxID) @@ -3417,7 +3393,7 @@ This label turns red, if the priority is smaller than "medium". Optiones creandi frustorum: - + Boinc Mining @@ -3427,7 +3403,7 @@ This label turns red, if the priority is smaller than "medium". - + Error obtaining next project. Error 06172014. @@ -3467,12 +3443,32 @@ This label turns red, if the priority is smaller than "medium". - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -3557,7 +3553,7 @@ This label turns red, if the priority is smaller than "medium". Tessera pro conexionibus JSON-RPC - + Execute command when the best block changes (%s in cmd is replaced by block hash) Pelle mandatum quando optissimum frustum mutat (%s in mandato substituitur ab hash frusti) @@ -3567,7 +3563,7 @@ This label turns red, if the priority is smaller than "medium". Permitte quaerenda DNS pro -addnode, -seednode, et -connect - + Loading addresses... Legens inscriptiones... @@ -3577,12 +3573,12 @@ This label turns red, if the priority is smaller than "medium". Inscriptio -proxy non valida: '%s' - + Unknown network specified in -onlynet: '%s' Ignotum rete specificatum in -onlynet: '%s' - + Insufficient funds Inopia nummorum @@ -3592,17 +3588,17 @@ This label turns red, if the priority is smaller than "medium". Legens indicem frustorum... - + Add a node to connect to and attempt to keep the connection open Adice nodum cui conectere et conare sustinere conexionem apertam - + Loading wallet... Legens cassidile... - + Cannot downgrade wallet Non posse cassidile regredi @@ -3612,27 +3608,27 @@ This label turns red, if the priority is smaller than "medium". Non posse scribere praedefinitam inscriptionem - + Rescanning... Iterum perlegens... - + Done loading Completo lengendi - + Error Error - + To use the %s option Ut utaris optione %s - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -3666,12 +3662,12 @@ If the file does not exist, create it with owner-readable-only file permissions. Si plica non existat, crea eam cum permissionibus ut solus eius dominus eam legere sinatur. - + Gridcoin version - + Usage: Usus: @@ -3681,7 +3677,7 @@ Si plica non existat, crea eam cum permissionibus ut solus eius dominus eam lege - + List commands Enumera mandata @@ -3696,7 +3692,7 @@ Si plica non existat, crea eam cum permissionibus ut solus eius dominus eam lege - + This help message Hic nuntius auxilii @@ -3726,12 +3722,12 @@ Si plica non existat, crea eam cum permissionibus ut solus eius dominus eam lege Specifica tempumfati conexionis in millisecundis (praedefinitum: 5000) - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3741,7 +3737,7 @@ Si plica non existat, crea eam cum permissionibus ut solus eius dominus eam lege - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3751,22 +3747,22 @@ Si plica non existat, crea eam cum permissionibus ut solus eius dominus eam lege Manutene non plures quam <n> conexiones ad paria (praedefinitum: 125) - + Connect only to the specified node(s) Conecte sole ad nodos specificatos (vel nodum specificatum) - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) Tantum conecte ad nodos in rete <net> (IPv4, IPv6 aut Tor) - + Discover own IP address (default: 1 when listening and no -externalip) Discooperi propriam inscriptionem IP (praedefinitum: 1 quando auscultans et nullum -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) Accipe conexiones externas (praedefinitum: 1 nisi -proxy neque -connect) @@ -3776,27 +3772,27 @@ Si plica non existat, crea eam cum permissionibus ut solus eius dominus eam lege - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + Threshold for disconnecting misbehaving peers (default: 100) Limen pro disconectendo paria improba (praedefinitum: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Numerum secundorum prohibere ne paria improba reconectant (praedefinitum: 86400) - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 5000) Maxima magnitudo memoriae pro datis accipendis singulis conexionibus, <n>*1000 octetis/bytes (praedefinitum: 5000) @@ -3806,7 +3802,7 @@ Si plica non existat, crea eam cum permissionibus ut solus eius dominus eam lege Maxima magnitudo memoriae pro datis mittendis singulis conexionibus, <n>*1000 octetis/bytes (praedefinitum: 1000) - + Use UPnP to map the listening port (default: 1 when listening) Utere UPnP designare portam auscultandi (praedefinitum: 1 quando auscultans) @@ -3816,22 +3812,22 @@ Si plica non existat, crea eam cum permissionibus ut solus eius dominus eam lege Utere UPnP designare portam auscultandi (praedefinitum: 0) - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) - + Use the test network Utere rete experimentale - + Output extra debugging information. Implies all other -debug* options @@ -3841,7 +3837,7 @@ Si plica non existat, crea eam cum permissionibus ut solus eius dominus eam lege - + Prepend debug output with timestamp @@ -3851,7 +3847,7 @@ Si plica non existat, crea eam cum permissionibus ut solus eius dominus eam lege - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -3861,7 +3857,7 @@ Si plica non existat, crea eam cum permissionibus ut solus eius dominus eam lege Permitte conexionibus JSON-RPC ex inscriptione specificata - + Send commands to node running on <ip> (default: 127.0.0.1) Mitte mandata nodo operanti in <ip> (praedefinitum: 127.0.0.1) @@ -3871,7 +3867,7 @@ Si plica non existat, crea eam cum permissionibus ut solus eius dominus eam lege - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -3881,7 +3877,7 @@ Si plica non existat, crea eam cum permissionibus ut solus eius dominus eam lege - + Upgrade wallet to latest format Progredere cassidile ad formam recentissimam @@ -3896,7 +3892,7 @@ Si plica non existat, crea eam cum permissionibus ut solus eius dominus eam lege Iterum perlege catenam frustorum propter absentes cassidilis transactiones - + Attempt to recover private keys from a corrupt wallet.dat Conare recipere claves privatas de corrupto wallet.dat @@ -3991,6 +3987,16 @@ Si plica non existat, crea eam cum permissionibus ut solus eius dominus eam lege Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -4051,6 +4057,11 @@ Si plica non existat, crea eam cum permissionibus ut solus eius dominus eam lege ERROR + + + Entire balance reserved + + Expires @@ -4121,11 +4132,6 @@ Si plica non existat, crea eam cum permissionibus ut solus eius dominus eam lege Message Nuntius - - - Messate Type - - Miner: @@ -4162,12 +4168,7 @@ Si plica non existat, crea eam cum permissionibus ut solus eius dominus eam lege - - No coins; - - - - + Offline; @@ -4177,12 +4178,7 @@ Si plica non existat, crea eam cum permissionibus ut solus eius dominus eam lege - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -4207,12 +4203,12 @@ Si plica non existat, crea eam cum permissionibus ut solus eius dominus eam lege - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) Optiones SSL: (vide vici de Bitcoin pro instructionibus SSL configurationis) @@ -4232,17 +4228,17 @@ Si plica non existat, crea eam cum permissionibus ut solus eius dominus eam lege Clavis privata daemonis moderans (praedefinitum: server.pem) - + Invalid amount for -paytxfee=<amount>: '%s' Quantitas non valida pro -paytxfee=<quantitas>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. Monitio: -paytxfee constitutum valde magnum! Hoc est merces transactionis solves si mittis transactionem. - + Invalid amount for -mininput=<amount>: '%s' @@ -4252,22 +4248,22 @@ Si plica non existat, crea eam cum permissionibus ut solus eius dominus eam lege - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4277,10 +4273,15 @@ Si plica non existat, crea eam cum permissionibus ut solus eius dominus eam lege Monitio: wallet.data corrupta, data salvata! Originalis wallet.dat salvata ut wallet.{timestamp}.bak in %s; si pendendum tuum vel transactiones pravae sunt, oportet ab conservato restituere. - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4297,17 +4298,17 @@ Si plica non existat, crea eam cum permissionibus ut solus eius dominus eam lege wallet.dat corrupta, salvare abortum est - + Unknown -socks proxy version requested: %i Ignota -socks vicarii versio postulata: %i - + Invalid -tor address: '%s' - + Cannot resolve -bind address: '%s' Non posse resolvere -bind inscriptonem: '%s' @@ -4317,7 +4318,7 @@ Si plica non existat, crea eam cum permissionibus ut solus eius dominus eam lege Non posse resolvere -externalip inscriptionem: '%s' - + Invalid amount for -reservebalance=<amount> @@ -4332,22 +4333,22 @@ Si plica non existat, crea eam cum permissionibus ut solus eius dominus eam lege Error legendi wallet.dat: Cassidile corruptum - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. Monitio: error legendo wallet.dat! Omnes claves recte lectae, sed data transactionum vel libri inscriptionum fortasse desint vel prava sint. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete - + Error loading wallet.dat Error legendi wallet.dat @@ -4367,17 +4368,17 @@ Si plica non existat, crea eam cum permissionibus ut solus eius dominus eam lege - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) Non posse conglutinare ad %s in hoc computatro (conglutinare redidit errorem %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4387,41 +4388,37 @@ Si plica non existat, crea eam cum permissionibus ut solus eius dominus eam lege - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount Quantitas non valida - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - Warning: This version is obsolete, upgrade required! - Monitio: Haec versio obsoleta est, progressio postulata! - - - + Warning: Disk space is low! diff --git a/src/qt/locale/bitcoin_lt.ts b/src/qt/locale/bitcoin_lt.ts index a97b575af7..c8d53d9da3 100644 --- a/src/qt/locale/bitcoin_lt.ts +++ b/src/qt/locale/bitcoin_lt.ts @@ -23,19 +23,6 @@ Distributed under the MIT/X11 software license, see the accompanying file COPYIN This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (https://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - - -This is experimental software. - -Distributed under the MIT/X11 software license, see the accompanying file COPYING 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. - Tai eksperimentinė programa. - -Platinama pagal MIT/X11 licenciją, kurią rasite faile COPYING arba http://www.opensource.org/licenses/mit-license.php. - -Šiame produkte yra OpenSSL projekto kuriamas OpenSSL Toolkit (http://www.openssl.org/), Eric Young parašyta kriptografinė programinė įranga bei Thomas Bernard sukurta UPnP programinė įranga. - AddressBookPage @@ -312,12 +299,12 @@ Platinama pagal MIT/X11 licenciją, kurią rasite faile COPYING arba http://www. BitcoinGUI - + Sign &message... Pasirašyti ži&nutę... - + &Overview &Apžvalga @@ -413,7 +400,7 @@ Platinama pagal MIT/X11 licenciją, kurią rasite faile COPYING arba http://www. Išjungti programą - + &Options... &Parinktys... @@ -427,19 +414,11 @@ Platinama pagal MIT/X11 licenciją, kurią rasite faile COPYING arba http://www. Encrypt or decrypt wallet - - &Backup Wallet... - &Backup piniginę... - &Change Passphrase... &Keisti slaptafrazę... - - Backup wallet to another location - Daryti piniginės atsarginę kopiją - Change the passphrase used for wallet encryption @@ -491,7 +470,7 @@ Platinama pagal MIT/X11 licenciją, kurią rasite faile COPYING arba http://www. &Tikrinti žinutę... - + Wallet Piniginė @@ -501,7 +480,7 @@ Platinama pagal MIT/X11 licenciją, kurią rasite faile COPYING arba http://www. Gridcoin - + &Send &Siųsti @@ -521,28 +500,12 @@ Platinama pagal MIT/X11 licenciją, kurią rasite faile COPYING arba http://www. - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -552,7 +515,7 @@ Platinama pagal MIT/X11 licenciją, kurią rasite faile COPYING arba http://www. - + &Diagnostics @@ -582,14 +545,14 @@ Platinama pagal MIT/X11 licenciją, kurią rasite faile COPYING arba http://www. - + [testnet] [testavimotinklas] - + Gridcoin client @@ -608,7 +571,7 @@ Platinama pagal MIT/X11 licenciją, kurią rasite faile COPYING arba http://www. - + Date: %1 Amount: %2 Type: %3 @@ -622,7 +585,7 @@ Adresas: %4 {1 ?} {4?} - + Wallet is <b>encrypted</b> and currently %1 @@ -669,7 +632,7 @@ Adresas: %4 {1 - + %n second(s) @@ -715,7 +678,37 @@ Adresas: %4 {1 - + + Scraper: waiting on wallet to sync. + + + + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + &File &Failas @@ -730,17 +723,12 @@ Adresas: %4 {1 - - &Advanced - - - - + &Help &Pagalba - + %n second(s) ago @@ -781,12 +769,12 @@ Adresas: %4 {1 Atnaujinta - + Catching up... Vejamasi... - + Last received block was generated %1. @@ -841,18 +829,7 @@ Adresas: %4 {1 Ateinantis sandoris - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Data: %1 -Suma: %2 -Tipas: %3 -Adresas: %4 - - - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. @@ -863,17 +840,13 @@ Adresas: %4 URI handling - - 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> - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. @@ -881,7 +854,7 @@ Adresas: %4 ClientModel - + Network Alert Tinklo įspėjimas @@ -963,10 +936,6 @@ Adresas: %4 Priority - - List mode - Sąrašo režimas - Amount @@ -1332,7 +1301,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1550,10 +1519,6 @@ This label turns red, if the priority is smaller than "medium". Map port using &UPnP Persiųsti prievadą naudojant &UPnP - - Proxy &IP: - Tarpinio serverio &IP: - &Port: @@ -1782,6 +1747,14 @@ This label turns red, if the priority is smaller than "medium". nesinchronizuota + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1843,7 +1816,7 @@ This label turns red, if the priority is smaller than "medium". RPCConsole - + @@ -1855,7 +1828,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A nėra @@ -1950,7 +1923,7 @@ This label turns red, if the priority is smaller than "medium". - + %1 B %1 B @@ -1985,12 +1958,12 @@ This label turns red, if the priority is smaller than "medium". - + Gridcoin - Debug Console - + Boost version @@ -2079,6 +2052,11 @@ This label turns red, if the priority is smaller than "medium". Out: + + + &Scraper + + SendCoinsDialog @@ -2342,22 +2320,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: Su&ma: - + Pay &To: Mokėti &gavėjui: - + &Label: Ž&ymė: - + Alt+A Alt+A @@ -2377,12 +2355,12 @@ This label turns red, if the priority is smaller than "medium". Žinutė: - + Form Forma - + Enter a label for this address to add it to your address book Įveskite žymę šiam adresui kad galėtumėte įtraukti jį į adresų knygelę @@ -2403,17 +2381,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2664,26 +2637,47 @@ This label turns red, if the priority is smaller than "medium". - + Source Šaltinis - Generated - Sugeneruotas + + Generated in CoinBase + - - Generated in CoinBase + + MINED - POS - - Generated, PoS + + MINED - POR - + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From Nuo @@ -2798,23 +2792,11 @@ This label turns red, if the priority is smaller than "medium". Transaction Inputs - - Transaction ID - Sandorio ID - Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - Informacija - - - Transaction - Sandoris - Amount @@ -2844,12 +2826,7 @@ This label turns red, if the priority is smaller than "medium". Šis langas sandorio detalų aprašymą - - View Attachment - - - - + Execute Contract @@ -2858,21 +2835,11 @@ This label turns red, if the priority is smaller than "medium". C&lose &Užverti - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Data @@ -2946,7 +2913,7 @@ This label turns red, if the priority is smaller than "medium". Išgauta bet nepriimta - + Received with Gauta su @@ -2966,32 +2933,42 @@ This label turns red, if the priority is smaller than "medium". Mokėjimas sau - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) nepasiekiama - + Transaction status. Hover over this field to show number of confirmations. Sandorio būklė. Užvedus pelės žymeklį ant šios srities matysite patvirtinimų skaičių. @@ -3188,7 +3165,7 @@ This label turns red, if the priority is smaller than "medium". VotingChartDialog - + Poll Results @@ -3332,7 +3309,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3365,7 +3342,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3373,12 +3350,12 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: Parinktys: - + This help message Pagalbos žinutė @@ -3413,12 +3390,12 @@ This label turns red, if the priority is smaller than "medium". Nustatyti sujungimo trukm? milisekund?mis (pagal nutyl?jim?: 5000) - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3428,7 +3405,7 @@ This label turns red, if the priority is smaller than "medium". - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3438,7 +3415,7 @@ This label turns red, if the priority is smaller than "medium". Palaikyti ne daugiau <n> jung?i? kolegoms (pagal nutyl?jim?: 125) - + Connect only to the specified node(s) Prisijungti tik prie nurodyto mazgo @@ -3448,22 +3425,22 @@ This label turns red, if the priority is smaller than "medium". - + Specify your own public address Nurodykite savo nuosavą viešą adresą - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -3473,22 +3450,22 @@ This label turns red, if the priority is smaller than "medium". - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + 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) @@ -3508,7 +3485,7 @@ This label turns red, if the priority is smaller than "medium". - + Boinc Mining @@ -3518,7 +3495,7 @@ This label turns red, if the priority is smaller than "medium". - + Error obtaining next project. Error 06172014. @@ -3563,12 +3540,32 @@ This label turns red, if the priority is smaller than "medium". Maksimalus buferis siuntimo sujungimui <n>*1000 bit? (pagal nutyl?jim?: 1000) - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -3598,12 +3595,12 @@ This label turns red, if the priority is smaller than "medium". Bandymas naudoti UPnP strukt?ra klausymosi prievadui (default: 0) - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) @@ -3703,6 +3700,16 @@ This label turns red, if the priority is smaller than "medium". Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3763,6 +3770,11 @@ This label turns red, if the priority is smaller than "medium". ERROR + + + Entire balance reserved + + Expires @@ -3818,11 +3830,6 @@ This label turns red, if the priority is smaller than "medium". Message Žinutė - - - Messate Type - - Miner: @@ -3859,12 +3866,7 @@ This label turns red, if the priority is smaller than "medium". - - No coins; - - - - + Offline; @@ -3874,12 +3876,7 @@ This label turns red, if the priority is smaller than "medium". - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3949,7 +3946,7 @@ This label turns red, if the priority is smaller than "medium". Naudoti testavimo tinkl? - + Output extra debugging information. Implies all other -debug* options @@ -3959,7 +3956,7 @@ This label turns red, if the priority is smaller than "medium". - + Prepend debug output with timestamp @@ -3974,7 +3971,7 @@ This label turns red, if the priority is smaller than "medium". - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -3984,12 +3981,12 @@ This label turns red, if the priority is smaller than "medium". 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) - + Execute command when the best block changes (%s in cmd is replaced by block hash) @@ -3999,12 +3996,12 @@ This label turns red, if the priority is smaller than "medium". - + Require a confirmations for change (default: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -4014,7 +4011,7 @@ This label turns red, if the priority is smaller than "medium". - + Upgrade wallet to latest format Atnaujinti pinigin? ? naujausi? format? @@ -4029,12 +4026,12 @@ This label turns red, if the priority is smaller than "medium". Ieškoti prarast? pinigin?s sandori? blok? grandin?je - + Attempt to recover private keys from a corrupt wallet.dat - + How many blocks to check at startup (default: 2500, 0 = all) @@ -4049,12 +4046,12 @@ This label turns red, if the priority is smaller than "medium". - + Block creation options: - + Set minimum block size in bytes (default: 0) @@ -4064,12 +4061,12 @@ This label turns red, if the priority is smaller than "medium". - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) SSL opcijos (žr.e Bitcoin Wiki for SSL setup instructions) @@ -4089,17 +4086,17 @@ This label turns red, if the priority is smaller than "medium". Serverio privatus raktas (pagal nutyl?jim?: server.pem) - + Invalid amount for -paytxfee=<amount>: '%s' Neteisinga suma -paytxfee=<amount>: '%s' - + 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?. - + Invalid amount for -mininput=<amount>: '%s' @@ -4109,22 +4106,22 @@ This label turns red, if the priority is smaller than "medium". - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4134,10 +4131,15 @@ This label turns red, if the priority is smaller than "medium". - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4154,7 +4156,7 @@ This label turns red, if the priority is smaller than "medium". - + Unknown -socks proxy version requested: %i @@ -4164,27 +4166,27 @@ This label turns red, if the priority is smaller than "medium". - + Invalid -tor address: '%s' - + Cannot resolve -bind address: '%s' - + Failed to listen on any port. Use -listen=0 if you want this. - + Cannot resolve -externalip address: '%s' - + Invalid amount for -reservebalance=<amount> @@ -4199,32 +4201,32 @@ This label turns red, if the priority is smaller than "medium". wallet.dat pakrovimo klaida, wallet.dat sugadintas - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete - + Error loading wallet.dat wallet.dat pakrovimo klaida - + Cannot downgrade wallet - + Importing blockchain data file. @@ -4239,17 +4241,17 @@ This label turns red, if the priority is smaller than "medium". - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) Nepavyko susieti šiame kompiuteryje prievado %s (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4259,42 +4261,42 @@ This label turns red, if the priority is smaller than "medium". - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount Neteisinga suma - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - + Warning: Disk space is low! - + Send trace/debug info to console instead of debug.log file Siųsti atsekimo/derinimo info į konsolę vietoj debug.log failo @@ -4309,17 +4311,17 @@ This label turns red, if the priority is smaller than "medium". Slaptažodis JSON-RPC sujungimams - + Allow DNS lookups for -addnode, -seednode and -connect Leisti DNS paiešką sujungimui ir mazgo pridėjimui - + To use the %s option - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -4351,12 +4353,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Gridcoin version - + Usage: Naudojimas: @@ -4366,7 +4368,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + List commands Komand? s?rašas @@ -4401,32 +4403,32 @@ If the file does not exist, create it with owner-readable-only file permissions. Įkeliamas blokų indeksas... - + Add a node to connect to and attempt to keep the connection open Pridėti mazgą prie sujungti su and attempt to keep the connection open - + Loading wallet... Užkraunama piniginė... - + Cannot write default address Negalima parašyti įprasto adreso - + Rescanning... Peržiūra - + Done loading Įkėlimas baigtas - + Error Klaida diff --git a/src/qt/locale/bitcoin_lv_LV.ts b/src/qt/locale/bitcoin_lv_LV.ts index 1936db775d..a2c0a03226 100644 --- a/src/qt/locale/bitcoin_lv_LV.ts +++ b/src/qt/locale/bitcoin_lv_LV.ts @@ -299,12 +299,12 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + Sign &message... Parakstīt &ziņojumu... - + &Overview &Pārskats @@ -400,7 +400,7 @@ This product includes software developed by the OpenSSL Project for use in the O Aizvērt programmu - + &Options... &Iespējas... @@ -414,19 +414,11 @@ This product includes software developed by the OpenSSL Project for use in the O Encrypt or decrypt wallet - - &Backup Wallet... - &Maciņa Rezerves Kopija... - &Change Passphrase... Mainīt &Paroli... - - Backup wallet to another location - Izveidot maciņa rezerves kopiju citur - Change the passphrase used for wallet encryption @@ -478,7 +470,7 @@ This product includes software developed by the OpenSSL Project for use in the O &Pārbaudīt ziņojumu... - + Wallet Maciņš @@ -488,7 +480,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Send &Sūtīt @@ -508,28 +500,12 @@ This product includes software developed by the OpenSSL Project for use in the O - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -539,7 +515,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Diagnostics @@ -569,14 +545,14 @@ This product includes software developed by the OpenSSL Project for use in the O - + [testnet] [testnet] - + Gridcoin client @@ -595,7 +571,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Date: %1 Amount: %2 Type: %3 @@ -610,7 +586,7 @@ Adrese: %4 ?} {4?} - + Wallet is <b>encrypted</b> and currently %1 @@ -657,7 +633,7 @@ Adrese: %4 - + %n second(s) @@ -703,7 +679,37 @@ Adrese: %4 - + + Scraper: waiting on wallet to sync. + + + + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + &File &Fails @@ -718,17 +724,12 @@ Adrese: %4 - - &Advanced - - - - + &Help &Palīdzība - + %n second(s) ago @@ -769,12 +770,12 @@ Adrese: %4 Sinhronizēts - + Catching up... Sinhronizējos... - + Last received block was generated %1. @@ -829,19 +830,7 @@ Adrese: %4 Ienākoša transakcija - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Datums: %1 -Daudzums: %2 -Tips: %3 -Adrese: %4 - - - - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. @@ -852,17 +841,13 @@ Adrese: %4 URI handling - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Maciņš ir <b>šifrēts</b> un pašlaik <b>atslēgts</b> - Wallet is <b>encrypted</b> and currently <b>locked</b> Maciņš ir <b>šifrēts</b> un pašlaik <b>slēgts</b> - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. @@ -870,7 +855,7 @@ Adrese: %4 ClientModel - + Network Alert T?kla br?din?jums @@ -952,10 +937,6 @@ Adrese: %4 Priority - - List mode - Saraksta režīms - Amount @@ -1321,7 +1302,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1534,10 +1515,6 @@ This label turns red, if the priority is smaller than "medium". Map port using &UPnP Kartēt portu, izmantojot &UPnP - - Proxy &IP: - Starpniekservera &IP: - &Port: @@ -1771,6 +1748,14 @@ This label turns red, if the priority is smaller than "medium". nav sinhroniz?ts + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1832,7 +1817,7 @@ This label turns red, if the priority is smaller than "medium". RPCConsole - + @@ -1844,7 +1829,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A N/A @@ -1864,12 +1849,12 @@ This label turns red, if the priority is smaller than "medium". Sākuma laiks - + Gridcoin - Debug Console - + Boost version @@ -1974,7 +1959,12 @@ This label turns red, if the priority is smaller than "medium". &Konsole - + + &Scraper + + + + &Network Traffic &Tīkla Satiksme @@ -2029,7 +2019,7 @@ This label turns red, if the priority is smaller than "medium". Ierakstiet <b>help</b> lai iegūtu pieejamo komandu sarakstu. - + %1 B %1 B @@ -2064,7 +2054,7 @@ This label turns red, if the priority is smaller than "medium". - + Welcome to the Gridcoin RPC console! @@ -2331,22 +2321,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: Apjo&ms - + Pay &To: &Saņēmējs: - + &Label: &Nosaukums: - + Alt+A Alt+A @@ -2366,12 +2356,12 @@ This label turns red, if the priority is smaller than "medium". Ziņojums: - + Form Forma - + Enter a label for this address to add it to your address book Lai pievienotu adresi adrešu gr?matai, tai j?dod nosaukums @@ -2392,17 +2382,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2653,22 +2638,47 @@ This label turns red, if the priority is smaller than "medium". - + Source - + Generated in CoinBase - - Generated, PoS + + MINED - POS - + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From @@ -2788,10 +2798,6 @@ This label turns red, if the priority is smaller than "medium". Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - Informācija - Amount @@ -2821,12 +2827,7 @@ This label turns red, if the priority is smaller than "medium". Šis panelis parāda transakcijas detaļas - - View Attachment - - - - + Execute Contract @@ -2835,21 +2836,11 @@ This label turns red, if the priority is smaller than "medium". C&lose &Aizvērt - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Datums @@ -2923,7 +2914,7 @@ This label turns red, if the priority is smaller than "medium". ?ener?ts, ta?u nav akcept?ts - + Received with Sa?emts ar @@ -2943,32 +2934,42 @@ This label turns red, if the priority is smaller than "medium". Maks?jums sev - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (nav pieejams) - + Transaction status. Hover over this field to show number of confirmations. Transakcijas statuss. Turiet peli virs š? lauka, lai redz?tu apstiprin?jumu skaitu. @@ -3165,7 +3166,7 @@ This label turns red, if the priority is smaller than "medium". VotingChartDialog - + Poll Results @@ -3309,7 +3310,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3342,7 +3343,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3350,42 +3351,42 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: Iespējas: - + Specify data directory Norādiet datu direktoriju - + Connect to a node to retrieve peer addresses, and disconnect Pievienoties mezglam, lai iegūtu citu mezglu adreses, un atvienoties - + Specify your own public address Norādiet savu publisko adresi - + Accept command line and JSON-RPC commands Pieņemt komandrindas un JSON-RPC komandas - + Run in the background as a daemon and accept commands Darbināt fonā kā servisu un pieņemt komandas - + Block creation options: Bloka izveidošanas iestatījumi: - + Send trace/debug info to console instead of debug.log file Debug/trace informāciju izvadīt konsolē, nevis debug.log failā @@ -3400,7 +3401,7 @@ This label turns red, if the priority is smaller than "medium". JSON-RPC savienojumu parole - + Execute command when the best block changes (%s in cmd is replaced by block hash) Izpildīt komandu, kad labāk atbilstošais bloks izmainās (%s cmd aizvieto ar bloka hešu) @@ -3410,7 +3411,7 @@ This label turns red, if the priority is smaller than "medium". Atļaut DNS uzmeklēšanu priekš -addnode, -seednode un -connect - + Loading addresses... Ielādē adreses... @@ -3420,12 +3421,12 @@ This label turns red, if the priority is smaller than "medium". Nederīga -proxy adrese: '%s' - + Unknown network specified in -onlynet: '%s' -onlynet komandā norādīts nepazīstams tīkls: '%s' - + Insufficient funds Nepietiek bitkoinu @@ -3435,17 +3436,17 @@ This label turns red, if the priority is smaller than "medium". Ielādē bloku indeksu... - + Add a node to connect to and attempt to keep the connection open Pievienot mezglu, kam pievienoties un turēt savienojumu atvērtu - + Loading wallet... Ielādē maciņu... - + Cannot downgrade wallet Nevar maciņa formātu padarīt vecāku @@ -3455,27 +3456,27 @@ This label turns red, if the priority is smaller than "medium". Nevar ierakstīt adresi pēc noklusēšanas - + Rescanning... Skanēju no jauna... - + Done loading Ielāde pabeigta - + Error Kļūda - + To use the %s option Izmantot opciju %s - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -3599,6 +3600,16 @@ Ja fails neeksist?, izveidojiet to ar at?auju las?šanai tikai ?pašniekam.Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3659,6 +3670,11 @@ Ja fails neeksist?, izveidojiet to ar at?auju las?šanai tikai ?pašniekam.ERROR + + + Entire balance reserved + + Expires @@ -3719,11 +3735,6 @@ Ja fails neeksist?, izveidojiet to ar at?auju las?šanai tikai ?pašniekam.Message - - - Messate Type - - Miner: @@ -3760,12 +3771,7 @@ Ja fails neeksist?, izveidojiet to ar at?auju las?šanai tikai ?pašniekam. - - No coins; - - - - + Offline; @@ -3775,12 +3781,7 @@ Ja fails neeksist?, izveidojiet to ar at?auju las?šanai tikai ?pašniekam. - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3865,7 +3866,7 @@ Ja fails neeksist?, izveidojiet to ar at?auju las?šanai tikai ?pašniekam. - + List commands Komandu saraksts @@ -3880,7 +3881,7 @@ Ja fails neeksist?, izveidojiet to ar at?auju las?šanai tikai ?pašniekam. - + This help message Šis pal?dz?bas pazi?ojums @@ -3910,12 +3911,12 @@ Ja fails neeksist?, izveidojiet to ar at?auju las?šanai tikai ?pašniekam. - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3925,7 +3926,7 @@ Ja fails neeksist?, izveidojiet to ar at?auju las?šanai tikai ?pašniekam. - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3935,22 +3936,22 @@ Ja fails neeksist?, izveidojiet to ar at?auju las?šanai tikai ?pašniekam.Uztur?t l?dz <n> savienojumiem ar citiem mezgliem(p?c noklus?šanas: 125) - + Connect only to the specified node(s) - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -3960,27 +3961,27 @@ Ja fails neeksist?, izveidojiet to ar at?auju las?šanai tikai ?pašniekam. - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + Threshold for disconnecting misbehaving peers (default: 100) Slieksnis p?rk?p?jmezglu atvienošanai (p?c noklus?šanas: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Sekundes, cik ilgi attur?t p?rk?p?jmezglus no atk?rtotas pievienošan?s (p?c noklus?šanas: 86400) - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 5000) @@ -3990,7 +3991,7 @@ Ja fails neeksist?, izveidojiet to ar at?auju las?šanai tikai ?pašniekam. - + Use UPnP to map the listening port (default: 1 when listening) @@ -4000,22 +4001,22 @@ Ja fails neeksist?, izveidojiet to ar at?auju las?šanai tikai ?pašniekam. - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) - + Use the test network Izmantot testa t?klu - + Output extra debugging information. Implies all other -debug* options @@ -4025,7 +4026,7 @@ Ja fails neeksist?, izveidojiet to ar at?auju las?šanai tikai ?pašniekam. - + Prepend debug output with timestamp @@ -4040,7 +4041,7 @@ Ja fails neeksist?, izveidojiet to ar at?auju las?šanai tikai ?pašniekam. - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -4050,22 +4051,22 @@ Ja fails neeksist?, izveidojiet to ar at?auju las?šanai tikai ?pašniekam.At?aut JSON-RPC savienojumus no nor?d?t?s IP adreses - + Send commands to node running on <ip> (default: 127.0.0.1) Nos?t?t komandas mezglam, kas darbojas adres? <ip> (p?c noklus?šanas: 127.0.0.1) - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - + Require a confirmations for change (default: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -4075,7 +4076,7 @@ Ja fails neeksist?, izveidojiet to ar at?auju las?šanai tikai ?pašniekam. - + Upgrade wallet to latest format Atjaunot maci?a form?tu uz jaun?ko @@ -4090,7 +4091,7 @@ Ja fails neeksist?, izveidojiet to ar at?auju las?šanai tikai ?pašniekam.Atk?rtoti skan?t bloku virkni, mekl?jot tr?kstoš?s maci?a transakcijas - + Attempt to recover private keys from a corrupt wallet.dat @@ -4110,7 +4111,7 @@ Ja fails neeksist?, izveidojiet to ar at?auju las?šanai tikai ?pašniekam. - + Boinc Mining @@ -4120,7 +4121,7 @@ Ja fails neeksist?, izveidojiet to ar at?auju las?šanai tikai ?pašniekam. - + Error obtaining next project. Error 06172014. @@ -4170,12 +4171,32 @@ Ja fails neeksist?, izveidojiet to ar at?auju las?šanai tikai ?pašniekam. - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -4190,12 +4211,12 @@ Ja fails neeksist?, izveidojiet to ar at?auju las?šanai tikai ?pašniekam. - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -4215,17 +4236,17 @@ Ja fails neeksist?, izveidojiet to ar at?auju las?šanai tikai ?pašniekam.Servera priv?t? atsl?ga (p?c noklus?šanas: server.pem) - + Invalid amount for -paytxfee=<amount>: '%s' Neder?gs daudzums priekš -paytxfree=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - + Invalid amount for -mininput=<amount>: '%s' @@ -4235,22 +4256,22 @@ Ja fails neeksist?, izveidojiet to ar at?auju las?šanai tikai ?pašniekam. - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4260,10 +4281,15 @@ Ja fails neeksist?, izveidojiet to ar at?auju las?šanai tikai ?pašniekam. - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4280,32 +4306,32 @@ Ja fails neeksist?, izveidojiet to ar at?auju las?šanai tikai ?pašniekam. - + Unknown -socks proxy version requested: %i Piepras?ta nezin?ma -socks proxy versija: %i - + Invalid -tor address: '%s' - + Cannot resolve -bind address: '%s' Nevar uzmekl?t -bind adresi: '%s' - + Failed to listen on any port. Use -listen=0 if you want this. - + Cannot resolve -externalip address: '%s' Nevar atrisin?t -externalip adresi: '%s' - + Invalid amount for -reservebalance=<amount> @@ -4320,22 +4346,22 @@ Ja fails neeksist?, izveidojiet to ar at?auju las?šanai tikai ?pašniekam.Nevar iel?d?t wallet.dat: maci?š boj?ts - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete - + Error loading wallet.dat K??da iel?d?jot wallet.dat @@ -4355,17 +4381,17 @@ Ja fails neeksist?, izveidojiet to ar at?auju las?šanai tikai ?pašniekam. - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) Nevar pievienoties pie %s šaj? dator? (pievienošan?s atgrieza k??du %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4375,37 +4401,37 @@ Ja fails neeksist?, izveidojiet to ar at?auju las?šanai tikai ?pašniekam. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount Neder?gs daudzums - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - + Warning: Disk space is low! diff --git a/src/qt/locale/bitcoin_ms_MY.ts b/src/qt/locale/bitcoin_ms_MY.ts index a6d15e5022..ad534345b8 100644 --- a/src/qt/locale/bitcoin_ms_MY.ts +++ b/src/qt/locale/bitcoin_ms_MY.ts @@ -299,12 +299,12 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + Sign &message... - + &Overview @@ -334,7 +334,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Wallet @@ -344,7 +344,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Send @@ -430,28 +430,12 @@ This product includes software developed by the OpenSSL Project for use in the O - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -461,7 +445,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Diagnostics @@ -552,7 +536,7 @@ Alihkan fail data ke dalam tab semasa - + &File @@ -567,24 +551,19 @@ Alihkan fail data ke dalam tab semasa - - &Advanced - - - - + &Help - + [testnet] - + Gridcoin client @@ -606,12 +585,12 @@ Alihkan fail data ke dalam tab semasa - + Catching up... - + Last received block was generated %1. @@ -674,7 +653,7 @@ Address: %4 - + Wallet is <b>encrypted</b> and currently %1 @@ -689,7 +668,7 @@ Address: %4 - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -699,13 +678,43 @@ Address: %4 - + + Scraper: waiting on wallet to sync. + + + + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. - + %n second(s) ago @@ -733,7 +742,7 @@ Address: %4 - + URI handling @@ -776,7 +785,7 @@ Address: %4 - + %n second(s) @@ -804,7 +813,7 @@ Address: %4 - + &Encrypt Wallet... @@ -814,7 +823,7 @@ Address: %4 - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. @@ -822,7 +831,7 @@ Address: %4 ClientModel - + Network Alert @@ -1269,7 +1278,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1715,6 +1724,14 @@ This label turns red, if the priority is smaller than "medium". + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1781,7 +1798,7 @@ This label turns red, if the priority is smaller than "medium". - + &Information @@ -1803,7 +1820,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A @@ -1952,6 +1969,11 @@ This label turns red, if the priority is smaller than "medium". Clear console + + + &Scraper + + Yes @@ -1978,7 +2000,7 @@ This label turns red, if the priority is smaller than "medium". - + %1 B @@ -2280,12 +2302,12 @@ This label turns red, if the priority is smaller than "medium". - + &Label: - + Enter a label for this address to add it to your address book @@ -2331,22 +2353,17 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - + A&mount: - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2593,22 +2610,17 @@ This label turns red, if the priority is smaller than "medium". - + Source - + Generated in CoinBase - - Generated, PoS - - - - + From @@ -2727,7 +2739,37 @@ This label turns red, if the priority is smaller than "medium". - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + Amount @@ -2755,12 +2797,7 @@ This label turns red, if the priority is smaller than "medium". - - View Attachment - - - - + Execute Contract @@ -2769,21 +2806,11 @@ This label turns red, if the priority is smaller than "medium". C&lose &Tutup - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date @@ -2855,7 +2882,7 @@ This label turns red, if the priority is smaller than "medium". - + Received with @@ -2875,32 +2902,42 @@ This label turns red, if the priority is smaller than "medium". - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) - + Transaction status. Hover over this field to show number of confirmations. @@ -3097,7 +3134,7 @@ This label turns red, if the priority is smaller than "medium". VotingChartDialog - + Poll Results @@ -3241,7 +3278,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3274,7 +3311,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3282,12 +3319,12 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + To use the %s option - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -3302,12 +3339,12 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo - + Error - + An error occurred while setting up the RPC port %u for listening on IPv6, falling back to IPv4: %s @@ -3339,7 +3376,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Boinc Mining @@ -3349,7 +3386,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error obtaining next project. Error 06172014. @@ -3389,12 +3426,32 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -3444,7 +3501,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + List commands @@ -3454,7 +3511,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + None @@ -3544,6 +3601,16 @@ If the file does not exist, create it with owner-readable-only file permissions. Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3604,6 +3671,11 @@ If the file does not exist, create it with owner-readable-only file permissions. ERROR + + + Entire balance reserved + + Expires @@ -3664,11 +3736,6 @@ If the file does not exist, create it with owner-readable-only file permissions. Message - - - Messate Type - - Miner: @@ -3705,12 +3772,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - No coins; - - - - + Offline; @@ -3725,12 +3787,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3805,12 +3862,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3820,12 +3877,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Allow DNS lookups for -addnode, -seednode and -connect - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3835,12 +3892,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Add a node to connect to and attempt to keep the connection open - + Connect only to the specified node(s) @@ -3850,22 +3907,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Specify your own public address - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -3875,27 +3932,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + 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: 5000) @@ -3905,7 +3962,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Use UPnP to map the listening port (default: 1 when listening) @@ -3915,12 +3972,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) @@ -3930,7 +3987,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Run in the background as a daemon and accept commands @@ -3940,7 +3997,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Output extra debugging information. Implies all other -debug* options @@ -3950,7 +4007,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Prepend debug output with timestamp @@ -3980,7 +4037,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -3990,12 +4047,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Send commands to node running on <ip> (default: 127.0.0.1) - + Execute command when the best block changes (%s in cmd is replaced by block hash) @@ -4005,12 +4062,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Require a confirmations for change (default: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -4020,7 +4077,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Upgrade wallet to latest format @@ -4035,12 +4092,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Attempt to recover private keys from a corrupt wallet.dat - + How many blocks to check at startup (default: 2500, 0 = all) @@ -4055,12 +4112,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Block creation options: - + Set minimum block size in bytes (default: 0) @@ -4070,12 +4127,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -4095,17 +4152,17 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid amount for -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - + Invalid amount for -mininput=<amount>: '%s' @@ -4115,22 +4172,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4140,7 +4197,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Weight @@ -4150,7 +4207,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Unknown -socks proxy version requested: %i @@ -4160,7 +4217,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid -proxy address: '%s' @@ -4170,22 +4227,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Cannot resolve -bind address: '%s' - + Failed to listen on any port. Use -listen=0 if you want this. - + Cannot resolve -externalip address: '%s' - + Invalid amount for -reservebalance=<amount> @@ -4210,20 +4267,25 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4235,12 +4297,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error loading wallet.dat - + Cannot downgrade wallet @@ -4250,12 +4312,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Rescanning... - + Importing blockchain data file. @@ -4275,22 +4337,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Done loading - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4300,27 +4362,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount @@ -4330,12 +4392,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - + Warning: Disk space is low! diff --git a/src/qt/locale/bitcoin_nb.ts b/src/qt/locale/bitcoin_nb.ts index 9c9e9ec35b..9cf24d5459 100644 --- a/src/qt/locale/bitcoin_nb.ts +++ b/src/qt/locale/bitcoin_nb.ts @@ -23,20 +23,6 @@ Distributed under the MIT/X11 software license, see the accompanying file COPYIN This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (https://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - - -This is experimental software. - -Distributed under the MIT/X11 software license, see the accompanying file COPYING 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. - -Dette er eksperimentell programvare. - -Distribuert under MIT/X11 programvarelisensen, se medfølgende fil COPYING 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. - AddressBookPage @@ -313,12 +299,12 @@ Dette produktet inneholder programvare utviklet av OpenSSL prosjektet for bruk i BitcoinGUI - + Sign &message... Signer &melding... - + &Overview &Oversikt @@ -414,7 +400,7 @@ Dette produktet inneholder programvare utviklet av OpenSSL prosjektet for bruk i Avslutt applikasjonen - + &Options... &Innstillinger... @@ -428,19 +414,11 @@ Dette produktet inneholder programvare utviklet av OpenSSL prosjektet for bruk i Encrypt or decrypt wallet Krypter eller dekrypter lommeboken - - &Backup Wallet... - Lag &Sikkerhetskopi av Lommebok... - &Change Passphrase... &Endre Adgangsfrase... - - Backup wallet to another location - Sikkerhetskopier lommebok til annet sted - Change the passphrase used for wallet encryption @@ -492,7 +470,7 @@ Dette produktet inneholder programvare utviklet av OpenSSL prosjektet for bruk i &Verifiser melding... - + Wallet Lommebok @@ -502,7 +480,7 @@ Dette produktet inneholder programvare utviklet av OpenSSL prosjektet for bruk i - + &Send &Send @@ -522,28 +500,12 @@ Dette produktet inneholder programvare utviklet av OpenSSL prosjektet for bruk i - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -553,7 +515,7 @@ Dette produktet inneholder programvare utviklet av OpenSSL prosjektet for bruk i - + &Diagnostics @@ -583,14 +545,14 @@ Dette produktet inneholder programvare utviklet av OpenSSL prosjektet for bruk i - + [testnet] [testnett] - + Gridcoin client @@ -600,23 +562,7 @@ Dette produktet inneholder programvare utviklet av OpenSSL prosjektet for bruk i - %1 second(s) ago - %1 sekunder siden - - - %1 minute(s) ago - %1 minutt siden - - - %1 hour(s) ago - %1 time siden - - - %1 day(s) ago - %1 dag siden - - - + Last received block was generated %1. @@ -676,7 +622,7 @@ Adresse: %4 ?} {4?} - + Wallet is <b>encrypted</b> and currently %1 @@ -723,7 +669,7 @@ Adresse: %4 - + %n second(s) %n sekund @@ -765,7 +711,37 @@ Adresse: %4 - + + Scraper: waiting on wallet to sync. + + + + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + &File &Fil @@ -780,17 +756,12 @@ Adresse: %4 - - &Advanced - - - - + &Help &Hjelp - + Processed %n block(s) of transaction history. Lastet %n blokk med transaksjonshistorikk. @@ -835,12 +806,12 @@ Adresse: %4 Oppdatert - + Catching up... Laster ned... - + Sent transaction Sendt transaksjon @@ -850,19 +821,7 @@ Adresse: %4 Innkommende transaksjon - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Dato: %1 -Beløp: %2 -Type: %3 -Adresse: %4 - - - - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. @@ -873,17 +832,13 @@ Adresse: %4 URI handling - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Lommeboken er <b>kryptert</b> og for tiden <b>låst opp</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 occurred. Gridcoin can no longer continue safely and will quit. @@ -891,7 +846,7 @@ Adresse: %4 ClientModel - + Network Alert Nettverksvarsel @@ -973,10 +928,6 @@ Adresse: %4 (un)select all velg (fjern) alle - - List mode - Listevisning - Amount @@ -1344,7 +1295,7 @@ Dette betyr at det trengs en avgift på minimum %2. NewPollDialog - + Create Poll @@ -1557,10 +1508,6 @@ Dette betyr at det trengs en avgift på minimum %2. Map port using &UPnP Sett opp port ved hjelp av &UPnP - - Proxy &IP: - Proxy &IP: - &Port: @@ -1794,6 +1741,14 @@ Dette betyr at det trengs en avgift på minimum %2. ute av synk + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1855,7 +1810,7 @@ Dette betyr at det trengs en avgift på minimum %2. RPCConsole - + @@ -1867,7 +1822,7 @@ Dette betyr at det trengs en avgift på minimum %2. - + N/A - @@ -1947,7 +1902,12 @@ Dette betyr at det trengs en avgift på minimum %2. Ut: - + + &Scraper + + + + Debug log file Loggfil for feilsøk @@ -1977,7 +1937,7 @@ Dette betyr at det trengs en avgift på minimum %2. Skriv <b>help</b> for en oversikt over kommandoer. - + %1 B %1 B @@ -2012,12 +1972,12 @@ Dette betyr at det trengs en avgift på minimum %2. - + Gridcoin - Debug Console - + Boost version @@ -2087,7 +2047,7 @@ Dette betyr at det trengs en avgift på minimum %2. Klientnavn - + Welcome to the Gridcoin RPC console! @@ -2354,22 +2314,22 @@ Dette betyr at det trengs en avgift på minimum %2. SendCoinsEntry - + A&mount: &Beløp: - + Pay &To: Betal &Til: - + &Label: &Merkelapp: - + Alt+A Alt+A @@ -2389,12 +2349,12 @@ Dette betyr at det trengs en avgift på minimum %2. Melding: - + Form Skjema - + Enter a label for this address to add it to your address book Skriv inn en merkelapp for denne adressen for å legge den til i din adressebok @@ -2415,17 +2375,12 @@ Dette betyr at det trengs en avgift på minimum %2. Fjern denne mottakeren - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2627,12 +2582,7 @@ Dette betyr at det trengs en avgift på minimum %2. - - Generated, PoS - - - - + From Fra @@ -2664,12 +2614,8 @@ Dette betyr at det trengs en avgift på minimum %2. Comment Kommentar - - Transaction ID - Transaksjons-ID - - + Open for %n more block(s) Åpen for %n blokk til @@ -2721,12 +2667,42 @@ Dette betyr at det trengs en avgift på minimum %2. - + Source Kilde - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + TX ID @@ -2761,10 +2737,6 @@ Dette betyr at det trengs en avgift på minimum %2. Transaction Inputs - - Generated - Generert - @@ -2816,18 +2788,6 @@ Dette betyr at det trengs en avgift på minimum %2. Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - Informasjon - - - Transaction - Transaksjon - - - Inputs - Inndata - Amount @@ -2857,12 +2817,7 @@ Dette betyr at det trengs en avgift på minimum %2. Her vises en detaljert beskrivelse av transaksjonen - - View Attachment - - - - + Execute Contract @@ -2871,21 +2826,11 @@ Dette betyr at det trengs en avgift på minimum %2. C&lose &Lukk - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Dato @@ -2948,7 +2893,7 @@ Dette betyr at det trengs en avgift på minimum %2. Generert men ikke akseptert - + Received with Mottatt med @@ -2963,32 +2908,42 @@ Dette betyr at det trengs en avgift på minimum %2. Betaling til deg selv - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) - - + Transaction status. Hover over this field to show number of confirmations. Transaksjonsstatus. Hold muspekeren over dette feltet for å se antall bekreftelser. @@ -3013,7 +2968,7 @@ Dette betyr at det trengs en avgift på minimum %2. Beløp fjernet eller lagt til saldo. - + Offline @@ -3023,7 +2978,7 @@ Dette betyr at det trengs en avgift på minimum %2. Ubekreftet - + Sent to Sendt til @@ -3197,17 +3152,10 @@ Dette betyr at det trengs en avgift på minimum %2. til - - UpgradeDialog - - Hide - Skjul - - VotingChartDialog - + Poll Results @@ -3351,7 +3299,7 @@ Dette betyr at det trengs en avgift på minimum %2. VotingVoteDialog - + PlaceVote @@ -3384,7 +3332,7 @@ Dette betyr at det trengs en avgift på minimum %2. WalletModel - + Sending... Sender... @@ -3392,12 +3340,12 @@ Dette betyr at det trengs en avgift på minimum %2. bitcoin-core - + Options: Innstillinger: - + This help message Denne hjelpemeldingen @@ -3432,12 +3380,12 @@ Dette betyr at det trengs en avgift på minimum %2. Angi tidsavbrudd for forbindelse i millisekunder (standardverdi: 5000) - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3447,7 +3395,7 @@ Dette betyr at det trengs en avgift på minimum %2. - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3457,7 +3405,7 @@ Dette betyr at det trengs en avgift på minimum %2. Hold maks <n> koblinger åpne til andre noder (standardverdi: 125) - + Connect only to the specified node(s) Koble kun til angitt(e) node(r) @@ -3467,22 +3415,22 @@ Dette betyr at det trengs en avgift på minimum %2. Koble til node for å hente adresser til andre noder, koble så fra igjen - + Specify your own public address Angi din egen offentlige adresse - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) Koble kun til noder i nettverket <nett> (IPv4, IPv6 eller Tor) - + Discover own IP address (default: 1 when listening and no -externalip) Oppdag egen IP-adresse (standardverdi: 1 ved lytting og uten -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) Ta imot tilkoblinger fra utsiden (standardverdi: 1 hvis uten -proxy eller -connect) @@ -3492,22 +3440,22 @@ Dette betyr at det trengs en avgift på minimum %2. - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + 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) @@ -3602,6 +3550,16 @@ Dette betyr at det trengs en avgift på minimum %2. Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3662,6 +3620,11 @@ Dette betyr at det trengs en avgift på minimum %2. ERROR + + + Entire balance reserved + + Expires @@ -3727,11 +3690,6 @@ Dette betyr at det trengs en avgift på minimum %2. Message Melding - - - Messate Type - - Miner: @@ -3768,12 +3726,7 @@ Dette betyr at det trengs en avgift på minimum %2. - - No coins; - - - - + Offline; @@ -3783,12 +3736,7 @@ Dette betyr at det trengs en avgift på minimum %2. - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3868,12 +3816,12 @@ Dette betyr at det trengs en avgift på minimum %2. Bruk UPnP for lytteport (standardverdi: 0) - + Fee per KB to add to transactions you send Gebyr per KB som skal legges til transaksjoner du sender - + When creating transactions, ignore inputs with value less than this (default: 0.01) @@ -3883,12 +3831,12 @@ Dette betyr at det trengs en avgift på minimum %2. Ta imot kommandolinje- og JSON-RPC-kommandoer - + Use the test network Bruk testnettverket - + Output extra debugging information. Implies all other -debug* options @@ -3898,7 +3846,7 @@ Dette betyr at det trengs en avgift på minimum %2. - + Prepend debug output with timestamp @@ -3908,7 +3856,7 @@ Dette betyr at det trengs en avgift på minimum %2. - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -3918,7 +3866,7 @@ Dette betyr at det trengs en avgift på minimum %2. 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) @@ -3928,7 +3876,7 @@ Dette betyr at det trengs en avgift på minimum %2. - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -3938,7 +3886,7 @@ Dette betyr at det trengs en avgift på minimum %2. - + Upgrade wallet to latest format Oppgradér lommebok til nyeste format @@ -3953,7 +3901,7 @@ Dette betyr at det trengs en avgift på minimum %2. Se gjennom blokk-kjeden etter manglende lommeboktransaksjoner - + Attempt to recover private keys from a corrupt wallet.dat Forsøk å berge private nøkler fra en korrupt wallet.dat @@ -3973,7 +3921,7 @@ Dette betyr at det trengs en avgift på minimum %2. - + Boinc Mining @@ -3983,7 +3931,7 @@ Dette betyr at det trengs en avgift på minimum %2. - + Error obtaining next project. Error 06172014. @@ -4033,12 +3981,32 @@ Dette betyr at det trengs en avgift på minimum %2. - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -4053,12 +4021,12 @@ Dette betyr at det trengs en avgift på minimum %2. - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) SSL valg: (se Bitcoin Wiki for instruksjoner for oppsett av SSL) @@ -4078,17 +4046,17 @@ Dette betyr at det trengs en avgift på minimum %2. Servers private nøkkel (standardverdi: server.pem) - + Invalid amount for -paytxfee=<amount>: '%s' Ugyldig beløp for -paytxfee=<beløp>: '%s' - + 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 transaksjoner. - + Invalid amount for -mininput=<amount>: '%s' @@ -4098,22 +4066,22 @@ Dette betyr at det trengs en avgift på minimum %2. - + Wallet %s resides outside data directory %s. Lommeboken %s holder til utenfor data mappen %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... Verifiserer databasens integritet... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4123,10 +4091,15 @@ Dette betyr at det trengs en avgift på minimum %2. Advarsel: wallet.dat korrupt, data reddet! Original wallet.dat lagret som wallet.{timestamp}.bak i %s; hvis din saldo eller dine transaksjoner ikke er korrekte bør du gjenopprette fra en backup. - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4143,17 +4116,17 @@ Dette betyr at det trengs en avgift på minimum %2. wallet.dat korrupt, bergning feilet - + Unknown -socks proxy version requested: %i Ukjent -socks proxy versjon angitt: %i - + Invalid -tor address: '%s' - + Cannot resolve -bind address: '%s' Kunne ikke slå opp -bind adresse: '%s' @@ -4163,7 +4136,7 @@ Dette betyr at det trengs en avgift på minimum %2. Kunne ikke slå opp -externalip adresse: '%s' - + Invalid amount for -reservebalance=<amount> @@ -4178,22 +4151,22 @@ Dette betyr at det trengs en avgift på minimum %2. Feil ved lasting av wallet.dat: Lommeboken er skadet - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. Advarsel: Feil ved lesing av wallet.dat! Alle taster lest riktig, men transaksjon dataene eller adresse innlegg er kanskje manglende eller feil. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete - + Error loading wallet.dat Feil ved lasting av wallet.dat @@ -4213,17 +4186,17 @@ Dette betyr at det trengs en avgift på minimum %2. - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) Kan ikke binde til %s på denne datamaskinen (bind returnerte feil %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4233,51 +4206,47 @@ Dette betyr at det trengs en avgift på minimum %2. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed Feil: Opprettelse av transaksjonen mislyktes - + Sending... Sender... - + 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. - + Invalid amount Ugyldig beløp - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - Warning: This version is obsolete, upgrade required! - Advarsel: Denne versjonen er foreldet, oppgradering kreves! - - - + Warning: Disk space is low! Advarsel: Lite lagringsplass! - + Run in the background as a daemon and accept commands Kjør i bakgrunnen som daemon og ta imot kommandoer - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) Kjør kommando når en lommeboktransaksjon endres (%s i kommando er erstattet med TxID) @@ -4287,12 +4256,12 @@ Dette betyr at det trengs en avgift på minimum %2. Valg for opprettelse av blokker: - + Failed to listen on any port. Use -listen=0 if you want this. Kunne ikke lytte på noen port. Bruk -listen=0 hvis det er dette du vil. - + Specify wallet file (within data directory) Angi lommebokfil (inne i datamappe) @@ -4317,7 +4286,7 @@ Dette betyr at det trengs en avgift på minimum %2. Passord for JSON-RPC forbindelser - + Execute command when the best block changes (%s in cmd is replaced by block hash) Utfør kommando når beste blokk endrer seg (%s i kommandoen erstattes med blokkens hash) @@ -4327,12 +4296,12 @@ Dette betyr at det trengs en avgift på minimum %2. Tillat oppslag i DNS for -addnode, -seednode og -connect - + To use the %s option For å bruke %s opsjonen - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -4366,12 +4335,12 @@ If the file does not exist, create it with owner-readable-only file permissions. Hvis filen ikke finnes, opprett den med leserettighet kun for eier av filen. - + Gridcoin version - + Usage: Bruk: @@ -4381,7 +4350,7 @@ Hvis filen ikke finnes, opprett den med leserettighet kun for eier av filen. - + List commands List opp kommandoer @@ -4406,12 +4375,12 @@ Hvis filen ikke finnes, opprett den med leserettighet kun for eier av filen.Ugyldig -proxy adresse: '%s' - + Unknown network specified in -onlynet: '%s' Ukjent nettverk angitt i -onlynet '%s' - + Insufficient funds Utilstrekkelige midler @@ -4421,17 +4390,17 @@ Hvis filen ikke finnes, opprett den med leserettighet kun for eier av filen.Laster blokkindeks... - + Add a node to connect to and attempt to keep the connection open Legg til node for tilkobling og hold forbindelsen åpen - + Loading wallet... Laster lommebok... - + Cannot downgrade wallet Kan ikke nedgradere lommebok @@ -4441,17 +4410,17 @@ Hvis filen ikke finnes, opprett den med leserettighet kun for eier av filen.Kan ikke skrive standardadresse - + Rescanning... Leser gjennom... - + Done loading Ferdig med lasting - + Error Feil diff --git a/src/qt/locale/bitcoin_nl.ts b/src/qt/locale/bitcoin_nl.ts index 22843a9584..1990ec10ef 100644 --- a/src/qt/locale/bitcoin_nl.ts +++ b/src/qt/locale/bitcoin_nl.ts @@ -23,20 +23,6 @@ Distributed under the MIT/X11 software license, see the accompanying file COPYIN This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (https://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - - -This is experimental software. - -Distributed under the MIT/X11 software license, see the accompanying file COPYING 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. - -Dit is experimentele software. - -Gedistribueerd onder de MIT/X11 software licentie, zie het bijgevoegde bestand COPYING 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 gemaakt door Eric Young (eay@cryptsoft.com) en UPnP software geschreven door Thomas Bernard. - AddressBookPage @@ -313,12 +299,12 @@ Dit product bevat software ontwikkeld door het OpenSSL Project voor gebruik in d BitcoinGUI - + Sign &message... &Onderteken bericht... - + &Overview &Overzicht @@ -414,7 +400,7 @@ Dit product bevat software ontwikkeld door het OpenSSL Project voor gebruik in d Programma afsluiten - + &Options... &Opties... @@ -429,7 +415,7 @@ Dit product bevat software ontwikkeld door het OpenSSL Project voor gebruik in d Versleutel of ontsleutel de portemonnee - + %n second(s) ago %n seconden geleden @@ -461,7 +447,7 @@ Dit product bevat software ontwikkeld door het OpenSSL Project voor gebruik in d - + Date: %1 Amount: %2 Type: %3 @@ -476,7 +462,7 @@ Adres: %4 ?} {4?} - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -486,17 +472,39 @@ Adres: %4 - &Backup Wallet... - &Backup Portemonnee... + + Scraper: waiting on wallet to sync. + - - &Change Passphrase... - &Wijzig Wachtwoord + + Scraper: superblock not needed - inactive. + - Backup wallet to another location - Backup portemonnee naar een andere locatie + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + + &Change Passphrase... + &Wijzig Wachtwoord @@ -549,7 +557,7 @@ Adres: %4 &Verifiëer bericht... - + Wallet Portemonnee @@ -559,7 +567,7 @@ Adres: %4 Gridcoin - + &Send &Verstuur @@ -579,28 +587,12 @@ Adres: %4 Toon informatie over Gridcoin - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -610,7 +602,7 @@ Adres: %4 - + &Diagnostics @@ -640,14 +632,14 @@ Adres: %4 - + [testnet] [testnetwerk] - + Gridcoin client Gridcoin client @@ -657,23 +649,7 @@ Adres: %4 %1 actieve verbinding naar Gridcoin netwerk - %1 second(s) ago - %1 seconden geleden - - - %1 minute(s) ago - %1 minuut geleden - - - %1 hour(s) ago - %1 uur geleden - - - %1 day(s) ago - %1 dag geleden - - - + Last received block was generated %1. Laatst ontvangen blok is gegenereerd op %1. @@ -718,19 +694,7 @@ Adres: %4 - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Datum: %1 -Bedrag: %2 -Type: %3 -Adres: %4 - - - - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. URI kan niet ontleedt worden! Mogelijke oorzaken zijn een ongeldig Gridcoin adres of incorrecte URI parameters. @@ -789,7 +753,7 @@ Adres: %4 - + %n second(s) %n seconde @@ -821,27 +785,7 @@ Adres: %4 - Not staking because wallet is locked - Niet staking omdat portemonnee aan het beveiligd is - - - Not staking because wallet is offline - Niet staking omdat portemonnee aan het offline is - - - Not staking because wallet is syncing - Niet staking omdat portemonnee aan het synchroniseren is. - - - Not staking because you don't have mature coins - Niet staking omdat je geen mature munten hebt - - - Not staking - Niet aan het staken. - - - + &File &Bestand @@ -856,17 +800,12 @@ Adres: %4 - - &Advanced - - - - + &Help &Hulp - + Processed %n block(s) of transaction history. %n blok aan transactiegeschiedenis verwerkt. @@ -879,12 +818,12 @@ Adres: %4 Bijgewerkt - + Catching up... Aan het bijwerken... - + Sent transaction Verstuurde transactie @@ -894,16 +833,12 @@ Adres: %4 Binnenkomende transactie - 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 occurred. Gridcoin can no longer continue safely and will quit. Een fatale fout . Gridcoin kan niet langer veilig doorgaan en sluit af. @@ -911,7 +846,7 @@ Adres: %4 ClientModel - + Network Alert Netwerkwaarschuwing @@ -993,10 +928,6 @@ Adres: %4 (un)select all (de)selecteer alles - - List mode - Lijst modus - Amount @@ -1376,7 +1307,7 @@ Dit betekend dat een fee van %2 is vereist. NewPollDialog - + Create Poll @@ -1589,10 +1520,6 @@ Dit betekend dat een fee van %2 is vereist. Map port using &UPnP Portmapping via &UPnP - - Proxy &IP: - Proxy &IP: - &Port: @@ -1826,6 +1753,14 @@ Dit betekend dat een fee van %2 is vereist. niet gesynchroniseerd + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1887,7 +1822,7 @@ Dit betekend dat een fee van %2 is vereist. RPCConsole - + @@ -1899,7 +1834,7 @@ Dit betekend dat een fee van %2 is vereist. - + N/A N.v.t. @@ -1979,7 +1914,12 @@ Dit betekend dat een fee van %2 is vereist. Uit: - + + &Scraper + + + + Debug log file Debuglogbestand @@ -2009,7 +1949,7 @@ Dit betekend dat een fee van %2 is vereist. Typ <b>help</b> voor een overzicht van de beschikbare opdrachten. - + %1 B %1 B @@ -2044,12 +1984,12 @@ Dit betekend dat een fee van %2 is vereist. - + Gridcoin - Debug Console - + Boost version @@ -2119,7 +2059,7 @@ Dit betekend dat een fee van %2 is vereist. Clientnaam - + Welcome to the Gridcoin RPC console! @@ -2386,22 +2326,22 @@ Dit betekend dat een fee van %2 is vereist. SendCoinsEntry - + A&mount: B&edrag: - + Pay &To: Betaal &Aan: - + &Label: &Label: - + Alt+A Alt+A @@ -2427,12 +2367,12 @@ Dit betekend dat een fee van %2 is vereist. Vul een label in voor dit adres om het toe te voegen aan uw adresboek - + Form Vorm - + The address to send the payment to (e.g. Sjz75uKHzUQJnSdzvpiigEGxseKkDhQToX) @@ -2447,17 +2387,12 @@ Dit betekend dat een fee van %2 is vereist. Verwijder deze ontvanger - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2675,16 +2610,42 @@ Dit betekend dat een fee van %2 is vereist. - - Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE - Information - Informatie + + MINED - UNKNOWN + + + + + Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. + - + %1/offline %1/offline @@ -2715,26 +2676,17 @@ Dit betekend dat een fee van %2 is vereist. - + Source Bron - Generated - Gegenereerd - - - + Generated in CoinBase - - Generated, PoS - - - - + From Van @@ -2848,18 +2800,6 @@ Dit betekend dat een fee van %2 is vereist. Transaction Inputs - - Transaction ID - Transactie-ID - - - Transaction - Transactie - - - Inputs - Inputs - Amount @@ -2889,12 +2829,7 @@ Dit betekend dat een fee van %2 is vereist. Dit venster laat een uitgebreide beschrijving van de transactie zien - - View Attachment - - - - + Execute Contract @@ -2903,21 +2838,11 @@ Dit betekend dat een fee van %2 is vereist. C&lose S&luiten - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Datum @@ -2952,32 +2877,12 @@ Dit betekend dat een fee van %2 is vereist. - - Mined - DPOR - - - - - Minted - (Local) DPOR - - - - - Mined - PoR - - - - - Mined - Interest - - - - + Destination address of transaction. Ontvangend adres van transactie. - + Open for %n more block(s) Open voor nog %n blok @@ -3015,7 +2920,7 @@ Dit betekend dat een fee van %2 is vereist. Gegenereerd maar niet geaccepteerd - + Received with Ontvangen met @@ -3035,12 +2940,42 @@ Dit betekend dat een fee van %2 is vereist. Betaling aan uzelf - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (nvt) - + Transaction status. Hover over this field to show number of confirmations. Transactiestatus. Houd de cursor boven dit veld om het aantal bevestigingen te laten zien. @@ -3229,17 +3164,10 @@ Dit betekend dat een fee van %2 is vereist. naar - - UpgradeDialog - - Hide - Verbergen - - VotingChartDialog - + Poll Results @@ -3383,7 +3311,7 @@ Dit betekend dat een fee van %2 is vereist. VotingVoteDialog - + PlaceVote @@ -3416,7 +3344,7 @@ Dit betekend dat een fee van %2 is vereist. WalletModel - + Sending... Versturen... @@ -3424,12 +3352,12 @@ Dit betekend dat een fee van %2 is vereist. bitcoin-core - + Options: Opties: - + This help message Dit helpbericht @@ -3464,12 +3392,12 @@ Dit betekend dat een fee van %2 is vereist. Specificeer de time-outtijd in milliseconden (standaard: 5000) - + Connect through socks proxy Verbind door socks proxy - + Select the version of socks proxy to use (4-5, default: 5) Selecteer de versie van socks proxy (4-5, default: 5) @@ -3479,7 +3407,7 @@ Dit betekend dat een fee van %2 is vereist. Gebruik proxy tor verborgen diensten (standaard: zelfde als -proxy) - + Listen for connections on <port> (default: 32749 or testnet: 32748) Luister voor verbindingen op <poort> (standaard: 15714 of testnet: 25714) {32749 ?} {32748)?} @@ -3489,7 +3417,7 @@ Dit betekend dat een fee van %2 is vereist. Onderhoud maximaal <n> verbindingen naar peers (standaard: 125) - + Connect only to the specified node(s) Verbind alleen naar de gespecificeerde node(s) @@ -3499,26 +3427,22 @@ Dit betekend dat een fee van %2 is vereist. Verbind naar een node om adressen van anderen op te halen, en verbreek vervolgens de verbinding - + Specify your own public address Specificeer uw eigen publieke adres - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) Verbind alleen naar nodes in netwerk <net> (IPv4, IPv6 of Tor) - + Discover own IP address (default: 1 when listening and no -externalip) Ontdek eigen IP-adres (standaard: 1 als er wordt geluisterd en geen -externalip is opgegeven) - Find peers using internet relay chat (default: 0) - Zoek peers door gebruik van Internet Relay Chat (standaard: 1) {? 0)} - - - + Accept connections from outside (default: 1 if no -proxy or -connect) Accepteer verbindingen van buitenaf (standaard: 1 als geen -proxy of -connect is opgegeven) @@ -3528,26 +3452,22 @@ Dit betekend dat een fee van %2 is vereist. Koppel aan gegeven adres. Gebruik [host]:poort notatie voor IPv6 - + Find peers using DNS lookup (default: 1) Zoek peers doormiddel van DNS lookup (standaard: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) Synchroniseer tijd met andere connecties. Uitschakelen als de tijd op uw systeem nauwkeurig is bijv. synchroniseren met NTP (standaard: 1) - Sync checkpoints policy (default: strict) - Sync checkpoints beleid (standaard: strikt) - - - + 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) @@ -3642,6 +3562,16 @@ Dit betekend dat een fee van %2 is vereist. Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3702,6 +3632,11 @@ Dit betekend dat een fee van %2 is vereist. ERROR + + + Entire balance reserved + + Expires @@ -3767,11 +3702,6 @@ Dit betekend dat een fee van %2 is vereist. Message Bericht - - - Messate Type - - Miner: @@ -3808,12 +3738,7 @@ Dit betekend dat een fee van %2 is vereist. - - No coins; - - - - + Offline; @@ -3823,12 +3748,7 @@ Dit betekend dat een fee van %2 is vereist. - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3908,12 +3828,12 @@ Dit betekend dat een fee van %2 is vereist. Gebruik UPnP om de luisterende poort te mappen (standaard: 0) - + Fee per KB to add to transactions you send Vergoeding per KB toe te voegen aan de transacties die u verzendt - + When creating transactions, ignore inputs with value less than this (default: 0.01) Bij het maken van transacties, negeer ingangen met waarde minder dan dit (standaard: 0,01) @@ -3923,12 +3843,12 @@ Dit betekend dat een fee van %2 is vereist. Aanvaard opdrachtregel- en JSON-RPC-opdrachten - + Use the test network Gebruik het testnetwerk - + Output extra debugging information. Implies all other -debug* options Geef extra debugging informatie weer. Impliceert alle andere debug * opties @@ -3938,7 +3858,7 @@ Dit betekend dat een fee van %2 is vereist. Geef extra netwerk debug informatie weer - + Prepend debug output with timestamp Voeg een tijdstempel toe aan debug output @@ -3948,7 +3868,7 @@ Dit betekend dat een fee van %2 is vereist. Stuur trace/debug info naar de debugger - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) Wacht op JSON-RPC-connecties op <poort> (standaard: 15715 of testnet: 25715) @@ -3958,7 +3878,7 @@ Dit betekend dat een fee van %2 is vereist. 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) @@ -3968,7 +3888,7 @@ Dit betekend dat een fee van %2 is vereist. Vereist een bevestiging voor verandering (standaard: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) Dwing transactie scripts gebruik van canonieke PUSH operatoren (standaard: 1) @@ -3978,7 +3898,7 @@ Dit betekend dat een fee van %2 is vereist. Voer opdracht uit zodra een relevante waarschuwing wordt ontvangen (%s in cmd wordt vervangen door bericht) - + Upgrade wallet to latest format Vernieuw portemonnee naar nieuwste versie @@ -3993,7 +3913,7 @@ Dit betekend dat een fee van %2 is vereist. Doorzoek de blokketen op ontbrekende portemonnee-transacties - + Attempt to recover private keys from a corrupt wallet.dat Poog de geheime sleutels uit een corrupt wallet.dat bestand terug te halen @@ -4013,7 +3933,7 @@ Dit betekend dat een fee van %2 is vereist. - + Boinc Mining @@ -4023,7 +3943,7 @@ Dit betekend dat een fee van %2 is vereist. - + Error obtaining next project. Error 06172014. @@ -4073,12 +3993,32 @@ Dit betekend dat een fee van %2 is vereist. - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -4093,12 +4033,12 @@ Dit betekend dat een fee van %2 is vereist. Stel maximale block grootte in bytes in (standaard: 250000) - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) Stel maximale grootte van high-priority/low-fee transacties in bytes (standaard: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) SSL-opties: (zie de Bitcoin wiki voor SSL-instructies) @@ -4118,21 +4058,17 @@ Dit betekend dat een fee van %2 is vereist. Geheime sleutel voor server (standaard: server.pem) - Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - Aanvaardbare cijfers (standaard: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - - - + Invalid amount for -paytxfee=<amount>: '%s' Ongeldig bedrag voor -paytxfee=<bedrag>: '%s' - + 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. - + Invalid amount for -mininput=<amount>: '%s' Ongeldig bedrag voor -mininput = <bedrag>: '%s' @@ -4142,22 +4078,22 @@ Dit betekend dat een fee van %2 is vereist. - + Wallet %s resides outside data directory %s. Portemonnee %s bevindt zich buiten de datamap %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. Kan een slot op data directory %s niet verkrijgen. Gridcoin wordt waarschijnlijk al uitgevoerd. - + Verifying database integrity... Database integriteit wordt geverifieërd - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. Fout bij het ??initialiseren van de database omgeving %s! Om te herstellen, BACKUP die directory, verwijder dan alles van behalve het wallet.dat. @@ -4167,10 +4103,15 @@ Dit betekend dat een fee van %2 is vereist. Waarschuwing: wallet.dat is corrupt, data is veiliggesteld! Originele wallet.dat is opgeslagen als wallet.{tijdstip}.bak in %s; als uw balans of transacties incorrect zijn dient u een backup terug te zetten. - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4187,17 +4128,17 @@ Dit betekend dat een fee van %2 is vereist. wallet.dat corrupt, veiligstellen mislukt - + Unknown -socks proxy version requested: %i Onbekende -socks proxyversie aangegeven: %i - + Invalid -tor address: '%s' Ongeldig-tor adres: '%s' - + Cannot resolve -bind address: '%s' Kan -bind adres niet herleiden: '%s' @@ -4207,16 +4148,10 @@ Dit betekend dat een fee van %2 is vereist. Kan -externlip adres niet herleiden: '%s' - + Invalid amount for -reservebalance=<amount> Ongeldig bedrag voor -reservebalance = <bedrag> - - Unable to sign checkpoint, wrong checkpointkey? - - Kan checkpoint niet ondertekenen, verkeerde checkpoint sleutel? - - Error loading blkindex.dat @@ -4228,22 +4163,22 @@ Dit betekend dat een fee van %2 is vereist. Fout bij laden wallet.dat: Portemonnee corrupt - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. Waarschuwing: Fout bij het lezen van wallet.dat! Alle sleutels zijn in goede orde uitgelezen, maar transactiedata of adresboeklemma's zouden kunnen ontbreken of fouten bevatten. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin Fout bij laden van wallet.dat: Portemonnee vereist een nieuwere versie van Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete Portemonnee moet herschreven worden: herstart Gridcoin om te voltooien - + Error loading wallet.dat Fout bij laden wallet.dat @@ -4263,17 +4198,17 @@ Dit betekend dat een fee van %2 is vereist. Fout: kan geen verbinding maken met node - + Unable to bind to %s on this computer. Gridcoin is probably already running. Niet mogelijk om %s op deze computer. Gridcoin is waarschijnlijk al geopened. - + Unable to bind to %s on this computer (bind returned error %d, %s) Niet in staat om aan %s te binden op deze computer (bind gaf error %d, %s) - + Error: Wallet locked, unable to create transaction Fout: Portemonnee is op slot, niet mogelijk een transactie te creëren. @@ -4283,59 +4218,47 @@ Dit betekend dat een fee van %2 is vereist. Fout: Portemonnee ontgrendeld voor alleen staking, niet in staat om de transactie te maken. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds Fout: Deze transactie vereist een transactie vergoeding van ten minste %s vanwege de hoeveelheid, complexiteit, of het gebruik van recent ontvangen gelden - + Error: Transaction creation failed Fout: Creëren van transactie mislukt. - + Sending... Versturen... - + 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 geweigerd, Dit kan gebeuren als sommige munten in je portemonnee al gebruikt zijn, door het gebruik van een kopie van wallet.dat en de munten in de kopie zijn niet gemarkeerd als gebruikt. - + Invalid amount Ongeldig bedrag - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. Waarschuwing: Controleer of de datum en tijd van de computer juist zijn! Als uw klok verkeerd is Gridcoin zal niet goed werken. - Warning: This version is obsolete, upgrade required! - Waarschuwing: Deze versie is verouderd, een upgrade is vereist! - - - WARNING: synchronized checkpoint violation detected, but skipped! - WAARSCHUWING: gesynchroniseerd checkpoint overtreding is geconstateerd, maar overgeslagen! - - - + Warning: Disk space is low! Waarschuwing: Hardeschijf raakt vol! - WARNING: Invalid checkpoint found! Displayed transactions may not be correct! You may need to upgrade, or notify developers. - WAARSCHUWING: Ongeldig controlepunt gevonden! Weergegeven transacties kunnen niet kloppen! Het is mogelijk dat je moet upgraden, of developers moet waarschuwen. - - - + Run in the background as a daemon and accept commands Draai in de achtergrond als daemon en aanvaard opdrachten - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) Voer opdracht uit zodra een portemonneetransactie verandert (%s in cmd wordt vervangen door TxID) @@ -4345,12 +4268,12 @@ Dit betekend dat een fee van %2 is vereist. Blokcreatie-opties: - + Failed to listen on any port. Use -listen=0 if you want this. Mislukt om op welke poort dan ook te luisteren. Gebruik -listen=0 as u dit wilt. - + Specify wallet file (within data directory) Specificeer het portemonnee bestand (vanuit de gegevensmap) @@ -4375,7 +4298,7 @@ Dit betekend dat een fee van %2 is vereist. Wachtwoord voor JSON-RPC-verbindingen - + Execute command when the best block changes (%s in cmd is replaced by block hash) Voer opdracht uit zodra het beste blok verandert (%s in cmd wordt vervangen door blokhash) @@ -4385,12 +4308,12 @@ Dit betekend dat een fee van %2 is vereist. Sta DNS-naslag toe voor -addnode, -seednode en -connect - + To use the %s option Om de %s optie te gebruiken - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -4424,12 +4347,12 @@ If the file does not exist, create it with owner-readable-only file permissions. Als het bestand niet bestaat, maak het dan aan, met een alleen-lezen permissie. - + Gridcoin version Gridcoin versie - + Usage: Gebruik: @@ -4439,7 +4362,7 @@ Als het bestand niet bestaat, maak het dan aan, met een alleen-lezen permissie.< - + List commands Lijst van commando's @@ -4464,12 +4387,12 @@ Als het bestand niet bestaat, maak het dan aan, met een alleen-lezen permissie.< Ongeldig -proxy adres: '%s' - + Unknown network specified in -onlynet: '%s' Onbekend netwerk gespecificeerd in -onlynet: '%s' - + Insufficient funds Ontoereikend saldo @@ -4479,17 +4402,17 @@ Als het bestand niet bestaat, maak het dan aan, met een alleen-lezen permissie.< Blokindex aan het laden... - + Add a node to connect to and attempt to keep the connection open Voeg een node om naar te verbinden toe en probeer de verbinding open te houden - + Loading wallet... Portemonnee aan het laden... - + Cannot downgrade wallet Kan portemonnee niet downgraden @@ -4499,17 +4422,17 @@ Als het bestand niet bestaat, maak het dan aan, met een alleen-lezen permissie.< Kan standaardadres niet schrijven - + Rescanning... Blokketen aan het herscannen... - + Done loading Klaar met laden - + Error Fout diff --git a/src/qt/locale/bitcoin_pam.ts b/src/qt/locale/bitcoin_pam.ts index 521ff80520..e719840603 100644 --- a/src/qt/locale/bitcoin_pam.ts +++ b/src/qt/locale/bitcoin_pam.ts @@ -23,18 +23,6 @@ Distributed under the MIT/X11 software license, see the accompanying file COPYIN This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (https://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - - -This is experimental software. - -Distributed under the MIT/X11 software license, see the accompanying file COPYING 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. - -Metung ya ining experimental software. -Me-distribute ya lalam na ning lisensya na ning MIT/X11 software, lawan ye ing makayabeng file COPYING o http://www.opensource.org/licenses/mit-license.php. -Ing produktung ini atin yang makayabeng software a gewa dareng OpenSSL Project para gamit king OpenSSL Toolkit(http://www.openssl.org/) at cryptographic software a sinulat ng Eric Young (eay@cryptsoft.com) at UPnp software a sinulat ng Thomas Bernard. - AddressBookPage @@ -311,17 +299,17 @@ Ing produktung ini atin yang makayabeng software a gewa dareng OpenSSL Project p BitcoinGUI - + Sign &message... I-sign ing &mensayi - + Gridcoin - + &Overview &Overview @@ -437,28 +425,42 @@ Ing produktung ini atin yang makayabeng software a gewa dareng OpenSSL Project p - - &Neural Network + + Scraper: waiting on wallet to sync. - - Neural Network + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. - &New User Wizard + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. - - + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + New User Wizard - + &Voting @@ -468,7 +470,7 @@ Ing produktung ini atin yang makayabeng software a gewa dareng OpenSSL Project p - + &Diagnostics @@ -528,24 +530,19 @@ Ing produktung ini atin yang makayabeng software a gewa dareng OpenSSL Project p - + &Community - - &Advanced - - - - + [testnet] [testnet] - + Gridcoin client @@ -562,7 +559,7 @@ Ing produktung ini atin yang makayabeng software a gewa dareng OpenSSL Project p - + Last received block was generated %1. @@ -622,7 +619,7 @@ Address: %4 ?} {4?} - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -632,19 +629,7 @@ Address: %4 - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Aldo: %1 -Alaga: %2 -Type: %3 -Address: %4 - - - - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. @@ -703,7 +688,7 @@ Address: %4 - + %n second(s) @@ -731,7 +716,7 @@ Address: %4 - + &Options... &Pipamilian... @@ -740,19 +725,11 @@ Address: %4 &Encrypt Wallet... I-&Encrypt in Wallet... - - &Backup Wallet... - I-&Backup ing Wallet... - &Change Passphrase... &Alilan ing Passphrase... - - Backup wallet to another location - I-backup ing wallet king aliwang lugal - Change the passphrase used for wallet encryption @@ -774,17 +751,17 @@ Address: %4 &Beripikan ing message... - + Wallet Wallet - + &Show / Hide &Ipalto / Isalikut - + &File &File @@ -794,12 +771,12 @@ Address: %4 &Pamag-ayus - + &Help &Saup - + %n second(s) ago @@ -832,12 +809,12 @@ Address: %4 Makatuki ya king aldo - + Catching up... Catching up... - + Sent transaction Mipadalang transaksion @@ -847,16 +824,12 @@ Address: %4 Paparatang a transaksion - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Maka-<b>encrypt</b> ya ing wallet at kasalukuyan yang maka-<b>unlocked</b> - - - + Wallet is <b>encrypted</b> and currently <b>locked</b> Maka-<b>encrypt</b> ya ing wallet at kasalukuyan yang maka-<b>locked</b> - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. @@ -864,7 +837,7 @@ Address: %4 ClientModel - + Network Alert Alertu ning Network @@ -1311,7 +1284,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1529,10 +1502,6 @@ This label turns red, if the priority is smaller than "medium". Map port using &UPnP Mapa ng ning port gamit ing &UPnP - - Proxy &IP: - Proxy &IP: - &Port: @@ -1761,6 +1730,14 @@ This label turns red, if the priority is smaller than "medium". ali ya maka-sync + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1822,7 +1799,7 @@ This label turns red, if the priority is smaller than "medium". RPCConsole - + @@ -1834,7 +1811,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A N/A @@ -1919,7 +1896,7 @@ This label turns red, if the priority is smaller than "medium". I-type ing <b>help</b> ban akit la reng ati at magsilbing commands. - + %1 B @@ -1954,12 +1931,12 @@ This label turns red, if the priority is smaller than "medium". - + Gridcoin - Debug Console - + Boost version @@ -2054,7 +2031,12 @@ This label turns red, if the priority is smaller than "medium". - + + &Scraper + + + + Welcome to the Gridcoin RPC console! @@ -2321,22 +2303,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: A&laga: - + Pay &To: Ibayad &kang: - + &Label: &Label: - + Alt+A Alt+A @@ -2356,12 +2338,12 @@ This label turns red, if the priority is smaller than "medium". Mensayi: - + Form Form - + Enter a label for this address to add it to your address book Magpalub kang label para king address a ini ban a-iabe me king aklat dareng address @@ -2382,17 +2364,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2639,26 +2616,47 @@ This label turns red, if the priority is smaller than "medium". - + Source Pikuanan - Generated - Megawa + + Generated in CoinBase + - - Generated in CoinBase + + MINED - POS - - Generated, PoS + + MINED - POR - + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From Menibat @@ -2771,23 +2769,11 @@ This label turns red, if the priority is smaller than "medium". Transaction Inputs - - Transaction ID - ID ning Transaksion - Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - &Impormasion - - - Transaction - Transaksion - Amount @@ -2817,12 +2803,7 @@ This label turns red, if the priority is smaller than "medium". Ining pane a ini magpakit yang detalyadung description ning transaksion - - View Attachment - - - - + Execute Contract @@ -2831,21 +2812,11 @@ This label turns red, if the priority is smaller than "medium". C&lose I&sara - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Kaaldauan @@ -2917,7 +2888,7 @@ This label turns red, if the priority is smaller than "medium". Me-generate ya oneng ali ya metanggap - + Received with Atanggap kayabe ning @@ -2937,32 +2908,42 @@ This label turns red, if the priority is smaller than "medium". Kabayaran keka - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (n/a) - + Transaction status. Hover over this field to show number of confirmations. Status ning Transaksion: Itapat me babo na ning field a ini ban ipakit dala reng bilang dareng me-kumpirma na @@ -3159,7 +3140,7 @@ This label turns red, if the priority is smaller than "medium". VotingChartDialog - + Poll Results @@ -3303,7 +3284,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3336,7 +3317,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3344,37 +3325,37 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: Pipamilian: - + Specify data directory Pilinan ing data directory - + Connect to a node to retrieve peer addresses, and disconnect Kumunekta king note ban ayakua mula reng peer address, at mako king panga konekta - + Specify your own public address Sabyan me ing kekang pampublikong address - + Accept command line and JSON-RPC commands Tumanggap command line at JSON-RPC commands - + Run in the background as a daemon and accept commands Gumana king gulut bilang daemon at tumanggap commands - + Block creation options: Pipamilian king pamag-gawang block: @@ -3469,6 +3450,16 @@ This label turns red, if the priority is smaller than "medium". Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3529,6 +3520,11 @@ This label turns red, if the priority is smaller than "medium". ERROR + + + Entire balance reserved + + Expires @@ -3589,11 +3585,6 @@ This label turns red, if the priority is smaller than "medium". Message Mensayi - - - Messate Type - - Miner: @@ -3630,12 +3621,7 @@ This label turns red, if the priority is smaller than "medium". - - No coins; - - - - + Offline; @@ -3645,12 +3631,7 @@ This label turns red, if the priority is smaller than "medium". - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3740,7 +3721,7 @@ This label turns red, if the priority is smaller than "medium". Password para king JSON-RPC koneksion - + Execute command when the best block changes (%s in cmd is replaced by block hash) I-execute ing command istung mialilan ya ing best block (%s in cmd is replaced by block hash) @@ -3750,7 +3731,7 @@ This label turns red, if the priority is smaller than "medium". Payagan ing pamaglawe DNS para king -addnode, -seednode and -connect - + Loading addresses... Lo-load da ne ing address... @@ -3760,12 +3741,12 @@ This label turns red, if the priority is smaller than "medium". Ali katanggap-tanggap a -proxy addresss: '%s' - + Unknown network specified in -onlynet: '%s' E kilalang network ing mepili king -onlynet: '%s' - + Insufficient funds Kulang a pondo @@ -3775,17 +3756,17 @@ This label turns red, if the priority is smaller than "medium". Lo-load dane ing block index... - + Add a node to connect to and attempt to keep the connection open Magdagdag a node ban kumunekta at subuknan apanatili yang makabuklat ing koneksion - + Loading wallet... Lo-load dane ing wallet... - + Cannot downgrade wallet Ali ya magsilbing i-downgrade ing wallet @@ -3795,27 +3776,27 @@ This label turns red, if the priority is smaller than "medium". Eya misulat ing default address - + Rescanning... I-scan deng pasibayu... - + Done loading Yari ne ing pamag-load - + Error Mali - + To use the %s option Para agamit ing %s a pimamilian - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -3849,12 +3830,12 @@ If the file does not exist, create it with owner-readable-only file permissions. Nung ing file ala ya, gawa ka gamit ing owner-readable-only file permissions. - + Gridcoin version - + Usage: Pamanggamit: @@ -3864,7 +3845,7 @@ Nung ing file ala ya, gawa ka gamit ing owner-readable-only file permissions. - + List commands Listahan dareng commands @@ -3879,7 +3860,7 @@ Nung ing file ala ya, gawa ka gamit ing owner-readable-only file permissions. - + This help message Ining saup a mensayi @@ -3909,12 +3890,12 @@ Nung ing file ala ya, gawa ka gamit ing owner-readable-only file permissions. - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3924,7 +3905,7 @@ Nung ing file ala ya, gawa ka gamit ing owner-readable-only file permissions. - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3934,22 +3915,22 @@ Nung ing file ala ya, gawa ka gamit ing owner-readable-only file permissions.Mag-maintain peka <n> koneksion keng peers (default: 125) - + Connect only to the specified node(s) Kumunekta mu king mepiling node(s) - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) I-discover ing sariling IP address (default: 1 istung makiramdam at -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) Tumanggap koneksion menibat king kilwal (default: 1 if no -proxy or -connect) @@ -3959,27 +3940,27 @@ Nung ing file ala ya, gawa ka gamit ing owner-readable-only file permissions. - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + Threshold for disconnecting misbehaving peers (default: 100) Threshold for disconnecting misbehaving peers (default: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Number of seconds to keep misbehaving peers from reconnecting (default: 86400) - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 5000) @@ -3989,7 +3970,7 @@ Nung ing file ala ya, gawa ka gamit ing owner-readable-only file permissions. - + Use UPnP to map the listening port (default: 1 when listening) @@ -3999,22 +3980,22 @@ Nung ing file ala ya, gawa ka gamit ing owner-readable-only file permissions. - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) - + Use the test network Gamitan ing test network - + Output extra debugging information. Implies all other -debug* options @@ -4024,7 +4005,7 @@ Nung ing file ala ya, gawa ka gamit ing owner-readable-only file permissions. - + Prepend debug output with timestamp @@ -4039,7 +4020,7 @@ Nung ing file ala ya, gawa ka gamit ing owner-readable-only file permissions. - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -4049,22 +4030,22 @@ Nung ing file ala ya, gawa ka gamit ing owner-readable-only file permissions.Payagan ya i JSON-RPC koneksion para king metung a IP address - + Send commands to node running on <ip> (default: 127.0.0.1) Magpadalang command king node a gagana king <ip>(default: 127.0.0.1) - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - + Require a confirmations for change (default: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -4074,7 +4055,7 @@ Nung ing file ala ya, gawa ka gamit ing owner-readable-only file permissions. - + Upgrade wallet to latest format I-upgrade ing wallet king pekabayung porma @@ -4089,7 +4070,7 @@ Nung ing file ala ya, gawa ka gamit ing owner-readable-only file permissions.I-scan pasibayu ing block chain para kareng mauaualang transaksion - + Attempt to recover private keys from a corrupt wallet.dat @@ -4109,7 +4090,7 @@ Nung ing file ala ya, gawa ka gamit ing owner-readable-only file permissions. - + Boinc Mining @@ -4119,7 +4100,7 @@ Nung ing file ala ya, gawa ka gamit ing owner-readable-only file permissions. - + Error obtaining next project. Error 06172014. @@ -4169,12 +4150,32 @@ Nung ing file ala ya, gawa ka gamit ing owner-readable-only file permissions. - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -4189,12 +4190,12 @@ Nung ing file ala ya, gawa ka gamit ing owner-readable-only file permissions. - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) Pipamilian ning SSL: (lawen ye ing Bitcoin Wiki para king SSL setup instructions) @@ -4214,17 +4215,17 @@ Nung ing file ala ya, gawa ka gamit ing owner-readable-only file permissions.Server private key (default: server.pem) - + Invalid amount for -paytxfee=<amount>: '%s' Eya maliari ing alaga keng -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. Kapabaluan: Sobra ya katas ing makalage king -paytxfee. Ini ing maging bayad mu para king bayad na ning transaksion istung pepadala me ing transaksion a ini. - + Invalid amount for -mininput=<amount>: '%s' @@ -4234,22 +4235,22 @@ Nung ing file ala ya, gawa ka gamit ing owner-readable-only file permissions. - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4259,10 +4260,15 @@ Nung ing file ala ya, gawa ka gamit ing owner-readable-only file permissions. - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4279,17 +4285,17 @@ Nung ing file ala ya, gawa ka gamit ing owner-readable-only file permissions. - + Unknown -socks proxy version requested: %i E kilalang -socks proxy version requested: %i - + Invalid -tor address: '%s' - + Cannot resolve -bind address: '%s' Eya me-resolve ing -bind address: '%s' @@ -4299,7 +4305,7 @@ Nung ing file ala ya, gawa ka gamit ing owner-readable-only file permissions.Eya me-resolve ing -externalip address: '%s' - + Invalid amount for -reservebalance=<amount> @@ -4314,22 +4320,22 @@ Nung ing file ala ya, gawa ka gamit ing owner-readable-only file permissions.Me-mali ya ing pamag-load king wallet.dat: Me-corrupt ya ing wallet - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete - + Error loading wallet.dat Me-mali ya ing pamag-load king wallet.dat @@ -4349,17 +4355,17 @@ Nung ing file ala ya, gawa ka gamit ing owner-readable-only file permissions. - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) Ali ya magsilbing mag-bind keng %s kening kompyuter a ini (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4369,41 +4375,37 @@ Nung ing file ala ya, gawa ka gamit ing owner-readable-only file permissions. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount Ing alaga e ya katanggap-tanggap - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - Warning: This version is obsolete, upgrade required! - Kapabaluan: Ing bersioin a ini laus ne, kailangan nang mag-upgrade! - - - + Warning: Disk space is low! diff --git a/src/qt/locale/bitcoin_pl.ts b/src/qt/locale/bitcoin_pl.ts index bf420fd5e9..8b4ff61242 100644 --- a/src/qt/locale/bitcoin_pl.ts +++ b/src/qt/locale/bitcoin_pl.ts @@ -26,20 +26,6 @@ Oprogramowanie eksperymentalne. Rozprowadzane na licencji MIT/X11, zobacz plik 'COPYING' lub http://www.opensource.org/licenses/mit-license.php. -Ten produkt zawiera oprogramowanie stworzone przez OpenSSL Project do użytku przez OpenSSL Toolkit (http://www.openssl.org/). Oprogramowanie kryptograficzne napisane przez Eric'a Young (eay@cryptsoft.com) i oprogramowanie UPnP napisane przez Thomas'a Bernard. - - - -This is experimental software. - -Distributed under the MIT/X11 software license, see the accompanying file COPYING 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. - -Oprogramowanie eksperymentalne. - -Rozprowadzane na licencji MIT/X11, zobacz plik 'COPYING' lub http://www.opensource.org/licenses/mit-license.php. - Ten produkt zawiera oprogramowanie stworzone przez OpenSSL Project do użytku przez OpenSSL Toolkit (http://www.openssl.org/). Oprogramowanie kryptograficzne napisane przez Eric'a Young (eay@cryptsoft.com) i oprogramowanie UPnP napisane przez Thomas'a Bernard. @@ -318,12 +304,12 @@ Ten produkt zawiera oprogramowanie stworzone przez OpenSSL Project do użytku pr BitcoinGUI - + Sign &message... Podpisz wiado&mość... - + &Overview P&odsumowanie @@ -419,7 +405,7 @@ Ten produkt zawiera oprogramowanie stworzone przez OpenSSL Project do użytku pr Zamknij program - + &Options... &Opcje... @@ -434,7 +420,7 @@ Ten produkt zawiera oprogramowanie stworzone przez OpenSSL Project do użytku pr Zaszyfruj lub rozszyfruj portfel - + %n second(s) ago @@ -470,7 +456,7 @@ Ten produkt zawiera oprogramowanie stworzone przez OpenSSL Project do użytku pr - + Date: %1 Amount: %2 Type: %3 @@ -485,7 +471,7 @@ Adres: %4 ?} {4?} - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -495,17 +481,39 @@ Adres: %4 - &Backup Wallet... - &Wykonaj kopię zapasową... + + Scraper: waiting on wallet to sync. + - - &Change Passphrase... - &Zmień hasło... + + Scraper: superblock not needed - inactive. + - Backup wallet to another location - Wykonaj kopię zapasową portfela w inne miejsce + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + + &Change Passphrase... + &Zmień hasło... @@ -558,7 +566,7 @@ Adres: %4 &Zweryfikuj wiadomość... - + Wallet Portfel @@ -568,7 +576,7 @@ Adres: %4 Gridcoin - + &Send &Wyślij @@ -578,37 +586,7 @@ Adres: %4 Odbie&rz - - &Rebuild Block Chain - &Odbuduj łańcuch bloków - - - - Rebuild Block Chain - Odbuduj łańcuch bloków - - - - &Download Blocks - &Pobierz bloki - - - - Download Blocks - Pobierz bloki - - - - &Upgrade Client - &Aktualizuj program - - - - Upgrade Client - Aktualizuj program - - - + &About Gridcoin &O Gridcoin @@ -618,37 +596,12 @@ Adres: %4 Pokaż informacje o Gridcoin - - &Neural Network - Sieć &neuronowa - - - - Neural Network - Sieć neuronowa - - - - &Advanced Configuration - Konfiguracj&a zaawansowana - - - - Advanced Configuration - Konfiguracja zaawansowana - - - - &New User Wizard - &Nowy kreator użytkownika - - - + New User Wizard Nowy kreator użytkownika - + &Voting &Głosowanie @@ -658,17 +611,7 @@ Adres: %4 Głosowanie - - &Foundation - &Fundacja - - - - Foundation - Fundacja - - - + &Diagnostics &Diagnostyka @@ -677,16 +620,6 @@ Adres: %4 Diagnostics Diagnostyka - - - FA&Q - - - - - Interactive FAQ - Interaktywne FAQ - Modify configuration options for Gridcoin @@ -708,12 +641,14 @@ Adres: %4 + [testnet] [testnet] + Gridcoin client Klient Gridcoin @@ -723,27 +658,7 @@ Adres: %4 %1 aktywnych połączeń do sieci Gridcoin - - %1 second(s) ago - %1 sekund(y) temu - - - - %1 minute(s) ago - %1 minut(y) temu - - - - %1 hour(s) ago - %1 godzin(y) temu - - - - %1 day(s) ago - %1 dni temu - - - + Last received block was generated %1. Ostatni odebrany blok został wygenerowany %1. @@ -788,19 +703,7 @@ Adres: %4 Uwaga! - Problem ze ścięzką do BOINC! - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Data: %1 -Kwota: %2 -Typ: %3 -Adres: %4 - - - - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. URI nie może zostać sparsowane! Może to być spowodowane złym adresem Gridcoin lub złymi parametrami URI. @@ -859,7 +762,7 @@ Adres: %4 - + %n second(s) %n sekunda @@ -895,47 +798,7 @@ Adres: %4 - - Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. %4 - Twoja waga wynosi %1<br>Waga sieci to %2<br><b>Szacowany</b> czas do uzyskania nagrody to %3. %4 - - - - Not staking because wallet is locked - Brak gromadzenia (staking) ponieważ twój portfel jest zablokowany - - - - Not staking because wallet is offline - Brak gromadzenia (staking) ponieważ twój portfel jest odłączony od sieci - - - - Not staking because wallet is syncing - Brak gromadzenia (staking) ponieważ twój portfel się synchronizuje - - - - Not staking because you don't have mature coins and stake weight is too low. - Brak gromadzenia (staking) ponieważ nie masz "dojrzałych" monet i twoja waga gromadzenia jest za niska. - - - - Not staking because you don't have mature coins - Brak gromadzenia (staking) ponieważ nie masz "dojrzałych" monet - - - - Searching for mature coins... Please wait - Szukanie "dojrzałych" monet... proszę czekać - - - - Not staking - Brak gromadzenia (staking) - - - + &File &Plik @@ -950,17 +813,12 @@ Adres: %4 Społe&czność - - &Advanced - Z&aawansowane - - - + &Help Pomo&c - + Processed %n block(s) of transaction history. Przetworzono %n bloków historii transakcji. @@ -974,12 +832,12 @@ Adres: %4 Aktualny - + Catching up... Trwa synchronizacja… - + Sent transaction Transakcja wysłana @@ -989,16 +847,12 @@ Adres: %4 Transakcja przychodząca - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Portfel jest <b>zaszyfrowany</b> i obecnie <b>odblokowany</b> - - - + Wallet is <b>encrypted</b> and currently <b>locked</b> Portfel jest <b>zaszyfrowany</b> i obecnie <b>zablokowany</b> - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. Błąd krytyczny. Portfel gridcoin nie może kontynuować i się zamknie. @@ -1006,7 +860,7 @@ Adres: %4 ClientModel - + Network Alert Ostrzeżenie sieci @@ -1088,10 +942,6 @@ Adres: %4 (un)select all Zaznacz/Odznacz wszystko - - List mode - Widok listy - Amount @@ -1288,23 +1138,13 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Diagnostics - + Diagnostyka Verify CPID is in Neural Network - - - The label associated with this address book entry - Etykieta jest związana z tym wpisem książki adresowej - - - - The address associated with this address book entry. This can only be modified for sending addresses. - Adres jest związany z tym wpisem książki adresowej. Można edytować tylko dla adresów wyjściowych. - Verify BOINC path @@ -1381,12 +1221,12 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " The label associated with this address book entry - + Etykieta jest związana z tym wpisem książki adresowej The address associated with this address book entry. This can only be modified for sending addresses. - + Adres jest związany z tym wpisem książki adresowej. Można edytować tylko dla adresów wyjściowych. @@ -1480,7 +1320,7 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " NewPollDialog - + Create Poll Utwórz głosowanie @@ -1693,10 +1533,6 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Map port using &UPnP Mapuj port używając &UPnP - - Proxy &IP: - &IP proxy: - &Port: @@ -1858,11 +1694,6 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Net Weight: Waga sieci: - - - DPOR Weight: - Waga DPOR: - Error Messages: @@ -1894,12 +1725,7 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Aktualne głosowanie: - - Client Messages: - Wiadomości: - - - + Available: Dostępne: @@ -1940,6 +1766,14 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " desynchronizacja + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -2001,7 +1835,7 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " RPCConsole - + @@ -2013,7 +1847,7 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " - + N/A NIEDOSTĘPNE @@ -2093,7 +1927,12 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Wyjście: - + + &Scraper + + + + Debug log file Plik logowania debugowania @@ -2123,7 +1962,7 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Wpisz <b>help</b> aby uzyskać listę dostępnych komend. - + %1 B %1 B @@ -2158,12 +1997,12 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " %1 g %2 m - + Gridcoin - Debug Console Gridcoin - konsola debugowania - + Boost version Wersja Boost @@ -2233,7 +2072,7 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Nazwa klienta - + Welcome to the Gridcoin RPC console! Witaj w konsoli RPC! @@ -2500,22 +2339,22 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " SendCoinsEntry - + A&mount: Su&ma: - + Pay &To: A&dres przelewu: - + &Label: &Etykieta: - + Alt+A Alt+A @@ -2535,12 +2374,12 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Wiadomość: - + Form Formularz - + Enter a label for this address to add it to your address book Wprowadź etykietę dla tego adresu by dodać go do książki adresowej @@ -2561,22 +2400,12 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Usuń tego odbiorcę - + Send Custom Message to a Gridcoin Recipient Wyślij swoją wiadomość do odbiorcy - - Track Coins - Śledź monety - - - - Add Attachment - Załącznik - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) Wprowadź adres Gridcoin (n.p. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2827,22 +2656,47 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " - + Source Źródło - + Generated in CoinBase - - Generated, PoS + + MINED - POS - + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + TX ID @@ -2877,10 +2731,6 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Transaction Inputs - - Generated - Wygenerowano - @@ -2941,29 +2791,11 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Comment Komentarz - - Transaction ID - ID transakcji - - - - Block Type - Typ bloku - - - - Block Number - Numer bloku - Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. Wygenerowane money musza "dojrzeć" przez 110 bloków zanim mogą zostać użyte. Kiedy wygenerowałeś ten blok, ogłoszenie zostało rozesłane do sieci aby go dodać do sieci bloków. Jeśli się nie powiedzie, jego status zostanie zmieniony na "brak akceptacji" i nie będzie można go użyć. Może się to czasem zdarzyć jeśli inna gałąź wygeneruje blok w przeciągu kilku sekund od twojego. - - Information - Informacje - label @@ -2984,14 +2816,6 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Message Wiadomość - - Transaction - Transakcja - - - Inputs - Wejścia - Amount @@ -3021,12 +2845,7 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Ten panel pokazuje szczegółowy opis transakcji - - View Attachment - Zobacz załącznik - - - + Execute Contract Wykonaj kontrakt @@ -3035,21 +2854,11 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " C&lose Z&amknij - - - Gridcoin Documents - Dokumenty Gridcoin - - - - Document cannot be found on P2P server. - Dokument nie może zostać znaleziony na serwerze P2P. - TransactionTableModel - + Date Data @@ -3103,7 +2912,7 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Ten blok nie został odebrany przez inne gałęzie<br> i prawdopodobnie nie zostanie zaakceptowany! - + Received with Otrzymane przez @@ -3118,32 +2927,42 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Płatność do siebie - - Mined - DPOR - Wykopane - DPOR + + MINED - POS + - - Minted - (Local) DPOR - Wykopane - (lokalnie) DPOR + + MINED - POR + - - Mined - PoR - Wykopane - PoR + + MINED - ORPHANED + - - Mined - Interest - Wykopane - Udział + + POS SIDE STAKE + - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (brak) - + Transaction status. Hover over this field to show number of confirmations. Status transakcji. Najedź na pole, aby zobaczyć liczbę potwierdzeń. @@ -3168,7 +2987,7 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Kwota usunięta lub dodana do konta. - + Offline Offline @@ -3188,7 +3007,7 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Wygenerowane ale nie zaakceptowane - + Sent to Wysłane do @@ -3362,33 +3181,10 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " do - - UpgradeDialog - - - Gridcoin Upgrading Facility - Aktualizowanie oprogramowania Gridcoin - - - - Retry Download - Pobierz ponownie - - - - Upgrade - Aktualizuj - - - - Hide - Ukryj - - VotingChartDialog - + Poll Results Wyniki ankiety @@ -3479,18 +3275,7 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Typ udziału - - Question - Pytanie - - - - - Answers - Odpowiedzi - - - + # Voters # Głosujący @@ -3500,12 +3285,7 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Kompletny udział - - URL - URL - - - + Best Answer Najlepsza odpowiedź @@ -3531,11 +3311,6 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " - Question. - Pytanie. - - - Total Participants. Uczestników razem. @@ -3544,11 +3319,6 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Total Shares. Udziałów razem. - - - URL. - URL. - Best Answer. @@ -3558,7 +3328,7 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " VotingVoteDialog - + PlaceVote Zagłosuj @@ -3591,7 +3361,7 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " WalletModel - + Sending... Wysyłanie... @@ -3599,22 +3369,17 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " bitcoin-core - + Options: Opcje: - + This help message Ta wiadomość pomocy - - Specify configuration file (default: gridcoin.conf) - Określ plik konfiguracyjny (domyślnie: gridcoin.con) - - - + Specify pid file (default: gridcoind.pid) Określ plik PID (domyślnie: gridcoin.pid) @@ -3644,12 +3409,12 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Wskaż czas oczekiwania bezczynności połączenia w milisekundach (domyślnie: 5000) - + Connect through socks proxy Połącz przez socks proxy - + Select the version of socks proxy to use (4-5, default: 5) Wybierz którą wersję socks proxy użyć (4-5, domyślnie: 5) @@ -3659,7 +3424,7 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Użyj proxy do połączenia z usługą TOR (domyślnie: takie samo jak proxy) - + Listen for connections on <port> (default: 32749 or testnet: 32748) Nasłuchuj połaczeń na <porcie> (domyślnie: 32749 lub testnet: 32748) @@ -3669,7 +3434,7 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Utrzymuj maksymalnie <n> połączeń z peerami (domyślnie: 125) - + Connect only to the specified node(s) Połącz tylko do wskazanego węzła @@ -3679,27 +3444,22 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Podłącz się do węzła aby otrzymać adresy peerów i rozłącz - + Specify your own public address Podaj swój publiczny adres - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) Połącz z węzłami tylko w sieci <net> (IPv4, IPv6 lub Tor) - + Discover own IP address (default: 1 when listening and no -externalip) Odkryj własny adres IP (domy?lnie: 1 kiedy w trybie nas?uchu i brak -externalip ) - - Find peers using internet relay chat (default: 0) - Znajdź peerów korzystających z IRC - - - + Accept connections from outside (default: 1 if no -proxy or -connect) Akceptuj połączenia z zewnątrz (domyślnie: 1 jeżli nie ustawiono -proxy lub -connect) @@ -3709,32 +3469,27 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Powiąż z podanym adresem. Użyj zapisu [host]:port dla IPv6 - + Find peers using DNS lookup (default: 1) Znajdź użytkowników korzystających z wyszukiwania DNS (domyślnie: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) Czas synchronizacji z innymi gałęziami. Wyłącz jeśli czas na twoim systemie jest dokładny n.p. synchronizuje się przez NTP (domyślnie: 1) - - Sync checkpoints policy (default: strict) - Synchronizuj zasady punktu kontrolnego (default: ścisły) - - - + Threshold for disconnecting misbehaving peers (default: 100) Próg po którym nast?pi rozłączenie nietrzymających się zasad peerów (domyślnie: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Czas w sekundach, przez jaki nietrzymający się zasad peerzy nie będą mogli ponownie się podłączyć (domyślnie: 86400) - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 5000) Maksymalny bufor odbioru na połączenie, <n>*1000 bajtów (domyślnie: 5000) @@ -3744,26 +3499,27 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Maksymalny bufor wysyłu na połączenie, <n>*1000 bajtów (domyślnie: 1000) - + Use UPnP to map the listening port (default: 1 when listening) Używaj UPnP do mapowania portu nasłuchu (domy?lnie: 1 gdy nas?uchuje) - + Use UPnP to map the listening port (default: 0) Używaj UPnP do mapowania portu nasłuchu (domy?lnie: 0) - + Fee per KB to add to transactions you send Opłata za KB dodana do transakcji którą wysyłasz - + When creating transactions, ignore inputs with value less than this (default: 0.01) Przy tworzeniu transakcji, ignoruj wpisy większe niż to (domyślnie: 0.01) + None @@ -3809,12 +3565,12 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " - + Use the test network Użyj sieci testowej - + Output extra debugging information. Implies all other -debug* options Wyświetl dodatkowe informacje debugowania. Zawiera wszystkie inne opcje -debug* @@ -3824,52 +3580,52 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Wyświetl dodatkowe informacje debugowania o sieci - + Prepend debug output with timestamp Poprzedzaj informacje debuggera znacznikiem czasu - + Send trace/debug info to debugger Wyślij wyśledzone/zdebugowane informacje do debuggera - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) Nasłuchuj połączeń JSON-RPC na <porcie> (domyślnie: 15715 lub testnet: 25715) - + 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) - + Require a confirmations for change (default: 0) Wymagaj potwierdzenia dla zmian - + Enforce transaction scripts to use canonical PUSH operators (default: 1) Wymuś by skrypty transakcyjne używały konanicznych operatorów PUSH - + Execute command when a relevant alert is received (%s in cmd is replaced by message) Uruchom komendę przy odebraniu odpowiedniego alarmu (%s w cmd jest zastąpione wiadomością) - + Upgrade wallet to latest format Zaktualizuj portfel do najnowszego formatu - + Address Adres @@ -3886,7 +3642,7 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Answers - + Odpowiedzi @@ -3913,6 +3669,16 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3973,6 +3739,11 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " ERROR + + + Entire balance reserved + + Expires @@ -4028,11 +3799,6 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Message Wiadomość - - - Messate Type - - Miner: @@ -4069,12 +3835,7 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " - - No coins; - - - - + Offline; @@ -4084,19 +3845,14 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key Question - + Pytanie @@ -4116,7 +3872,7 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Share Type - + Typ udziału @@ -4136,12 +3892,12 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Title - + Tytuł URL - + URL @@ -4159,12 +3915,12 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " - + Accept command line and JSON-RPC commands Akceptuj linię poleceń oraz polecenia JSON-RPC - + Set key pool size to <n> (default: 100) Ustaw rozmiar puli kluczy na <n> (domyślnie: 100) @@ -4174,7 +3930,7 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Przeskanuj blok łańcuchów żeby znaleźć zaginione transakcje portfela - + Attempt to recover private keys from a corrupt wallet.dat Próbuj odzyskać klucze prywatne z uszkodzonego wallet.dat @@ -4194,7 +3950,7 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " - + Boinc Mining @@ -4204,7 +3960,7 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " - + Error obtaining next project. Error 06172014. @@ -4254,12 +4010,32 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -4274,12 +4050,12 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Ustaw maksymalny rozmiar bloku w bajtach (domyślnie: 250000) - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) Ustaw maksymalny rozmiar transakcji wysokiego-priorytetu/niskiej-opłaty w bajtach - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) Opcje SSL: (odwiedź Bitcoin Wiki w celu uzyskania instrukcji) @@ -4299,22 +4075,17 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Klucz prywatny serwera (domyślnie: server.pem) - - Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - Akceptowane szyfry (domyślnie: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - - - + Invalid amount for -paytxfee=<amount>: '%s' Nieprawidłowa kwota dla -paytxfee=<amount>: '%s' - + 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. - + Invalid amount for -mininput=<amount>: '%s' Nieprawidłowa kwota dla -mininput=<amount>: '%s' @@ -4324,22 +4095,22 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Inicjalizacja poprawności działa nie udała się. Aplikacja gridcoin wyłączy się. - + Wallet %s resides outside data directory %s. Portfel %s znajduje się poza folderem z danymi %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. Nie można uzyskać blokady na folderze %s. Aplikacja Gridcoin jest już prawdopodobnie uruchomiona. - + Verifying database integrity... Sprawdzanie integralności bazy danych... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. Bład inicjalizacji bazy danych %s! Aby odzyskać, ZRÓB KOPIĘ ZAPASOWĄ FOLDERU, dopiero usuń z niego wszystko POMIJAJĄC wallet.dat. @@ -4349,8 +4120,13 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Ostrzeżenie: Odtworzono dane z uszkodzonego pliku wallet.dat! Oryginalny wallet.dat został zapisany jako wallet.{timestamp}.bak w %s; jeżli twoje saldo lub transakcje są niepoprawne powinieneś odtworzyć kopię zapasową. - + Vote + Głos + + + + Waiting for coins to mature @@ -4369,17 +4145,17 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " wallet.dat uszkodzony, odtworzenie się nie powiodło - + Unknown -socks proxy version requested: %i Nieznana wersja proxy w -socks: %i - + Invalid -tor address: '%s' Nieprawidłowy adres -tor: '%s' - + Cannot resolve -bind address: '%s' Nie można uzyskać adresu -bind: '%s' @@ -4389,17 +4165,12 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Nie można uzyskać adresu -externalip: '%s' - + Invalid amount for -reservebalance=<amount> Nieprawidłowa kwota dla -reservebalance=<amount> - - Unable to sign checkpoint, wrong checkpointkey? - Nie można podpisać punktu kontrolnego. Zły klucz punktu kontrolnego? - - - + Error loading blkindex.dat Bład ładowania blkindex.dat @@ -4409,22 +4180,22 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Błąd ładowania wallet.dat: Uszkodzony portfel - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. Ostrzeżenie: błąd odczytu wallet.dat! Wszystkie klucze zostały odczytane, ale może brakować pewnych danych transakcji lub wpisów w książce adresowej lub mogą one być nieprawidłowe. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin Błąd ładowania wallet.dat: Portfel wymaga nowej wersji aplikacji Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete Portfel potrzebuje być zapisany: uruchom ponownie aplikację Gridcoin aby zakończyć - + Error loading wallet.dat Błąd ładowania wallet.dat @@ -4444,17 +4215,17 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Błąd: nie udało się wystartować gałęzi - + Unable to bind to %s on this computer. Gridcoin is probably already running. Nie można przywiązać %s na tym komputerze. Aplikacja Gridcoin jest już prawdopodobnie uruchomiona. - + Unable to bind to %s on this computer (bind returned error %d, %s) Nie można przywiązać %s na tym komputerze (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction Błąd: Portfel zablokowany, nie mozna utworzyć transakcji @@ -4464,61 +4235,47 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Błąd: Portfel odblokowany tylko do gromadzenia (staking), nie można utworzyć transakcji. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds Bład: Ta transakcja wymaga opłaty transakcyjnej wysokości conajmniej %s z powodu jej rozmiaru, kompleksowości lub użycia dopiero otrzymanych środków - + Error: Transaction creation failed Bład: Utworzenie transakcji nie powiodło się - + Sending... Wysyłanie... - + 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. Błąd: Transakcja odrzucona. Może się tak zdarzyć jeśli niektóre z monet w twoich portfelu zostały już wydane, czyli jeśli użyłeś kopii zapasowej wallet.dat i monety zostały wydany w kopii ale nie zostały oznaczone jako wydane tutaj. - + Invalid amount Nieprawidłowa kwota - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. Ostrzeżenie: Proszę sprawdzić czy data i czas twojego komputera są prawidłowe! Jeśli twój zegar jest źle ustawiony, aplikacja Gridcoin nie będzie prawidłowo pracować. - Warning: This version is obsolete, upgrade required! - Uwaga: Ta wersja jest przestarzała, aktualizacja wymagana! - - - - WARNING: synchronized checkpoint violation detected, but skipped! - Ostrzeżenie: Wykryto naruszenie zsynchronizowanego punktu kontrolnego, ale zostało pominięte! - - - + Warning: Disk space is low! Ostrzeżenie: Mało miejsca na dysku! - - WARNING: Invalid checkpoint found! Displayed transactions may not be correct! You may need to upgrade, or notify developers. - Ostrzeżenie: Znaleziono nieprawidłowy punkt kontrolny! Wyświetlane informacje mogą być nieprawidłowe! Powinieneś zaktualizować oprogramowanie lub powiadomić programistów. - - - + Run in the background as a daemon and accept commands Uruchom w tle jako daemon i przyjmuj polecenia - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) Wykonaj polecenie, kiedy transakcja portfela ulegnie zmianie (%s w poleceniu zostanie zastąpione przez TxID) @@ -4528,12 +4285,12 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Opcje tworzenia bloku: - + Failed to listen on any port. Use -listen=0 if you want this. Próba nasłuchiwania na jakimkolwiek porcie nie powiodła się. Użyj -listen=0 jeśli tego chcesz. - + Specify wallet file (within data directory) Określ plik portfela (w obrębie folderu danych) @@ -4558,7 +4315,7 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Hasło do połączeń JSON-RPC - + Execute command when the best block changes (%s in cmd is replaced by block hash) Wykonaj polecenie kiedy najlepszy blok ulegnie zmianie (%s w komendzie zastanie zastąpione przez hash bloku) @@ -4568,12 +4325,12 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " Zezwól -addnode, -seednode i -connect na łączenie się z serwerem DNS - + To use the %s option Aby użyć opcji %s - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -4617,12 +4374,12 @@ If the file does not exist, create it with owner-readable-only file permissions. Jeżeli plik nie istnieje, utwórz go z uprawnieniami właćciciela-tylko-do-odczytu. - + Gridcoin version Wersja Gridcoin - + Usage: Użycie: @@ -4632,7 +4389,7 @@ Jeżeli plik nie istnieje, utwórz go z uprawnieniami właćciciela-tylko-do-odc Wyślij komendę do -server lub gridcoin - + List commands Lista poleceń @@ -4657,12 +4414,12 @@ Jeżeli plik nie istnieje, utwórz go z uprawnieniami właćciciela-tylko-do-odc Nieprawidłowy adres -proxy: '%s' - + Unknown network specified in -onlynet: '%s' Nieznana sieć w -onlynet: '%s' - + Insufficient funds Niewystarczające środki @@ -4672,17 +4429,17 @@ Jeżeli plik nie istnieje, utwórz go z uprawnieniami właćciciela-tylko-do-odc Ładowanie indeksu bloku... - + Add a node to connect to and attempt to keep the connection open Dodaj węzeł do podłączenia się i próbuj utrzymać to połączenie - + Loading wallet... Wczytywanie portfela... - + Cannot downgrade wallet Nie można dezaktualizować portfela @@ -4692,17 +4449,17 @@ Jeżeli plik nie istnieje, utwórz go z uprawnieniami właćciciela-tylko-do-odc Nie można zapisać domyślnego adresu - + Rescanning... Ponowne skanowanie... - + Done loading Wczytywanie zakończone - + Error Błąd diff --git a/src/qt/locale/bitcoin_pt_BR.ts b/src/qt/locale/bitcoin_pt_BR.ts index 1186f9f0e6..68c866b945 100644 --- a/src/qt/locale/bitcoin_pt_BR.ts +++ b/src/qt/locale/bitcoin_pt_BR.ts @@ -23,20 +23,6 @@ Distributed under the MIT/X11 software license, see the accompanying file COPYIN This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (https://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - - -This is experimental software. - -Distributed under the MIT/X11 software license, see the accompanying file COPYING 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. - ? -Este é um software experimental.? -? -Distribuido sob a licença de software MIT/X11, veja o arquivo anexo COPYING ou http://www.opensource.org/licenses/mit-license.php.? -? -Este produto inclui software desenvolvido pelo Projeto OpenSSL para uso no OpenSSL Toolkit (http://www.openssl.org/), software de criptografia escrito por Eric Young (eay@cryptsoft.com) e sofware UPnP escrito por Thomas Bernard. - AddressBookPage @@ -313,12 +299,12 @@ Este produto inclui software desenvolvido pelo Projeto OpenSSL para uso no OpenS BitcoinGUI - + Sign &message... Assinar &mensagem... - + &Overview &Visão geral @@ -414,7 +400,7 @@ Este produto inclui software desenvolvido pelo Projeto OpenSSL para uso no OpenS Sair da aplicação - + &Options... &Opções... @@ -429,7 +415,7 @@ Este produto inclui software desenvolvido pelo Projeto OpenSSL para uso no OpenS Cryptografar ou Decryptografar carteira - + %n second(s) ago @@ -461,7 +447,7 @@ Este produto inclui software desenvolvido pelo Projeto OpenSSL para uso no OpenS - + Date: %1 Amount: %2 Type: %3 @@ -475,7 +461,7 @@ Endereço: %4 {1 ?} {4?} - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -485,17 +471,39 @@ Endereço: %4 {1 - &Backup Wallet... - &Backup da carteira... + + Scraper: waiting on wallet to sync. + - - &Change Passphrase... - &Mudar frase de segurança... + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + - Backup wallet to another location - Fazer cópia de segurança da carteira para uma outra localização + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + + &Change Passphrase... + &Mudar frase de segurança... @@ -548,7 +556,7 @@ Endereço: %4 {1 &Verificar mensagem... - + Wallet Carteira @@ -558,7 +566,7 @@ Endereço: %4 {1 - + &Send &Enviar @@ -578,28 +586,12 @@ Endereço: %4 {1 - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -609,7 +601,7 @@ Endereço: %4 {1 - + &Diagnostics @@ -639,14 +631,14 @@ Endereço: %4 {1 - + [testnet] [testnet] - + Gridcoin client @@ -656,7 +648,7 @@ Endereço: %4 {1 - + Last received block was generated %1. @@ -701,18 +693,7 @@ Endereço: %4 {1 - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Data: %1 -Quantidade: %2 -Tipo: %3 -Endereço: %4 - - - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. @@ -771,7 +752,7 @@ Endereço: %4 - + %n second(s) %n segundo @@ -803,7 +784,7 @@ Endereço: %4 - + &File &Arquivo @@ -818,17 +799,12 @@ Endereço: %4 - - &Advanced - - - - + &Help A&juda - + Processed %n block(s) of transaction history. %n bloco processado do histórico de transações. @@ -841,12 +817,12 @@ Endereço: %4 Atualizado - + Catching up... Recuperando o atraso ... - + Sent transaction Transação enviada @@ -856,16 +832,12 @@ Endereço: %4 Transação recebida - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Carteira está <b>criptografada</b> e atualmente <b>desbloqueada</b> - - - + Wallet is <b>encrypted</b> and currently <b>locked</b> Carteira está <b>criptografada</b> e atualmente <b>bloqueada</b> - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. @@ -873,7 +845,7 @@ Endereço: %4 ClientModel - + Network Alert Alerta da Rede @@ -955,10 +927,6 @@ Endereço: %4 (un)select all (de)selecionar tudo - - List mode - Modo lista - Amount @@ -1324,7 +1292,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1537,10 +1505,6 @@ This label turns red, if the priority is smaller than "medium". Map port using &UPnP Mapear porta usando &UPnP - - Proxy &IP: - &IP do proxy: - &Port: @@ -1774,6 +1738,14 @@ This label turns red, if the priority is smaller than "medium". fora de sincronia + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1835,7 +1807,7 @@ This label turns red, if the priority is smaller than "medium". RPCConsole - + @@ -1847,7 +1819,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A N/A @@ -1927,7 +1899,12 @@ This label turns red, if the priority is smaller than "medium". Saída: - + + &Scraper + + + + Debug log file Arquivo de log de depuração @@ -1962,7 +1939,7 @@ This label turns red, if the priority is smaller than "medium". Digite <b>help</b> para uma visão geral dos comandos disponíveis. - + %1 B %1 B @@ -1997,12 +1974,12 @@ This label turns red, if the priority is smaller than "medium". - + Gridcoin - Debug Console - + Boost version @@ -2334,22 +2311,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: Q&uantidade: - + Pay &To: Pagar &Para: - + &Label: &Rótulo: - + Alt+A Alt+A @@ -2375,12 +2352,12 @@ This label turns red, if the priority is smaller than "medium". Digite um rótulo para este endereço para adicioná-lo ao catálogo de endereços - + Form Formulário - + The address to send the payment to (e.g. Sjz75uKHzUQJnSdzvpiigEGxseKkDhQToX) @@ -2395,17 +2372,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2654,16 +2626,12 @@ This label turns red, if the priority is smaller than "medium". - + Source Fonte - Generated - Gerado - - - + From De @@ -2674,21 +2642,42 @@ This label turns red, if the priority is smaller than "medium". - Information - Informação + + Generated in CoinBase + - - Generated in CoinBase + + MINED - POS - - Generated, PoS + + MINED - POR - + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + unknown desconhecido @@ -2723,8 +2712,8 @@ This label turns red, if the priority is smaller than "medium". matures in %n more block(s) - maduro em mais %n bloco - maduro em mais %n blocos + maduro em mais %n bloco + maduro em mais %n blocos @@ -2796,18 +2785,6 @@ This label turns red, if the priority is smaller than "medium". Transaction Inputs - - Transaction ID - ID da transação - - - Transaction - Transação - - - Inputs - Entradas - Amount @@ -2837,12 +2814,7 @@ This label turns red, if the priority is smaller than "medium". Este painel mostra uma descrição detalhada da transação - - View Attachment - - - - + Execute Contract @@ -2851,21 +2823,11 @@ This label turns red, if the priority is smaller than "medium". C&lose &Fechar - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Data @@ -2900,32 +2862,12 @@ This label turns red, if the priority is smaller than "medium". - - Mined - DPOR - - - - - Minted - (Local) DPOR - - - - - Mined - PoR - - - - - Mined - Interest - - - - + Destination address of transaction. Endereço de destino da transação. - + Open for %n more block(s) Aberto por mais %n bloco @@ -2963,7 +2905,7 @@ This label turns red, if the priority is smaller than "medium". Gerado mas não aceito - + Received with Recebido @@ -2983,12 +2925,42 @@ This label turns red, if the priority is smaller than "medium". Pagamento para você mesmo - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (n/a) - + Transaction status. Hover over this field to show number of confirmations. Status da transação. Passe o mouse sobre este campo para mostrar o número de confirmações. @@ -3177,17 +3149,10 @@ This label turns red, if the priority is smaller than "medium". para - - UpgradeDialog - - Hide - Ocultar - - VotingChartDialog - + Poll Results @@ -3331,7 +3296,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3364,7 +3329,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3372,12 +3337,12 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: Opções: - + This help message Esta mensagem de ajuda @@ -3412,12 +3377,12 @@ This label turns red, if the priority is smaller than "medium". Especifique o tempo limite (timeout) da conexão em milissegundos (padrão: 5000) - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3427,7 +3392,7 @@ This label turns red, if the priority is smaller than "medium". - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3437,7 +3402,7 @@ This label turns red, if the priority is smaller than "medium". Manter no máximo <n> conexões aos peers (padrão: 125) - + Connect only to the specified node(s) Conectar apenas a nó(s) específico(s) @@ -3447,22 +3412,22 @@ This label turns red, if the priority is smaller than "medium". Conectar a um nó para receber endereços de participantes, e desconectar. - + Specify your own public address Especificar seu próprio endereço público - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) Apenas conectar em nós na rede <net> (IPv4, IPv6, ou Tor) - + Discover own IP address (default: 1 when listening and no -externalip) Descobrir os próprios endereços IP (padrão: 1 quando no modo listening e opção -externalip não estiver presente) - + Accept connections from outside (default: 1 if no -proxy or -connect) Aceitar conexões externas (padrão: 1 se opções -proxy ou -connect não estiverem presentes) @@ -3472,22 +3437,22 @@ This label turns red, if the priority is smaller than "medium". - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + Threshold for disconnecting misbehaving peers (default: 100) Limite para desconectar peers mal comportados (padrão: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Número de segundos para impedir que peers mal comportados reconectem (padrão: 86400) @@ -3582,6 +3547,16 @@ This label turns red, if the priority is smaller than "medium". Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3642,6 +3617,11 @@ This label turns red, if the priority is smaller than "medium". ERROR + + + Entire balance reserved + + Expires @@ -3707,11 +3687,6 @@ This label turns red, if the priority is smaller than "medium". Message Mensagem - - - Messate Type - - Miner: @@ -3748,12 +3723,7 @@ This label turns red, if the priority is smaller than "medium". - - No coins; - - - - + Offline; @@ -3763,12 +3733,7 @@ This label turns red, if the priority is smaller than "medium". - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3848,12 +3813,12 @@ This label turns red, if the priority is smaller than "medium". Usar UPnP para mapear porta de escuta (padrão: 0) - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) @@ -3863,12 +3828,12 @@ This label turns red, if the priority is smaller than "medium". Aceitar linha de comando e comandos JSON-RPC - + Use the test network Usar rede de teste - + Output extra debugging information. Implies all other -debug* options @@ -3878,7 +3843,7 @@ This label turns red, if the priority is smaller than "medium". - + Prepend debug output with timestamp @@ -3888,7 +3853,7 @@ This label turns red, if the priority is smaller than "medium". - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -3898,7 +3863,7 @@ This label turns red, if the priority is smaller than "medium". Permitir conexões JSON-RPC de endereços IP específicos - + Send commands to node running on <ip> (default: 127.0.0.1) Enviar comando para nó rodando em <ip> (pardão: 127.0.0.1) @@ -3908,7 +3873,7 @@ This label turns red, if the priority is smaller than "medium". - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -3918,7 +3883,7 @@ This label turns red, if the priority is smaller than "medium". - + Upgrade wallet to latest format Atualizar carteira para o formato mais recente @@ -3933,7 +3898,7 @@ This label turns red, if the priority is smaller than "medium". Re-escanear blocos procurando por transações perdidas da carteira - + Attempt to recover private keys from a corrupt wallet.dat Tentar recuperar chaves privadas de um arquivo wallet.dat corrompido @@ -3953,7 +3918,7 @@ This label turns red, if the priority is smaller than "medium". - + Boinc Mining @@ -3963,7 +3928,7 @@ This label turns red, if the priority is smaller than "medium". - + Error obtaining next project. Error 06172014. @@ -4013,12 +3978,32 @@ This label turns red, if the priority is smaller than "medium". - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -4033,12 +4018,12 @@ This label turns red, if the priority is smaller than "medium". - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) Opções SSL: (veja a Wiki do Bitcoin para instruções de configuração SSL) @@ -4058,17 +4043,17 @@ This label turns red, if the priority is smaller than "medium". Chave privada do servidor (padrão: server.pem) - + Invalid amount for -paytxfee=<amount>: '%s' Quantidade inválida para -paytxfee=<quantidade>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. Cuidado: valor de -paytxfee escolhido é muito alto! Este é o valor da taxa de transação que você irá pagar se enviar a transação. - + Invalid amount for -mininput=<amount>: '%s' @@ -4078,22 +4063,22 @@ This label turns red, if the priority is smaller than "medium". - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4103,10 +4088,15 @@ This label turns red, if the priority is smaller than "medium". Aviso: wallet.dat corrompido, dados recuperados! Arquivo wallet.dat original salvo como wallet.{timestamp}.bak em %s; se seu saldo ou transações estiverem incorretos, você deve restauras o backup. - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4123,17 +4113,17 @@ This label turns red, if the priority is smaller than "medium". wallet.dat corrompido, recuperação falhou - + Unknown -socks proxy version requested: %i Versão desconhecida do proxy -socks requisitada: %i - + Invalid -tor address: '%s' - + Cannot resolve -bind address: '%s' Impossível encontrar o endereço -bind: '%s' @@ -4143,7 +4133,7 @@ This label turns red, if the priority is smaller than "medium". Impossível encontrar endereço -externalip: '%s' - + Invalid amount for -reservebalance=<amount> @@ -4158,22 +4148,22 @@ This label turns red, if the priority is smaller than "medium". Erro ao carregar wallet.dat: Carteira corrompida - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. Cuidado: erro ao ler arquivo wallet.dat! Todas as chaves foram lidas corretamente, mas dados transações e do catálogo de endereços podem estar faltando ou estar incorretas. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete - + Error loading wallet.dat Erro ao carregar wallet.dat @@ -4193,17 +4183,17 @@ This label turns red, if the priority is smaller than "medium". - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) Impossível vincular a %s neste computador (bind retornou erro %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4213,51 +4203,47 @@ This label turns red, if the priority is smaller than "medium". - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount Quantidade inválida - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - Warning: This version is obsolete, upgrade required! - Cuidado: Esta versão está obsoleta, atualização exigida! - - - + Warning: Disk space is low! - + Run in the background as a daemon and accept commands Rodar em segundo plano como serviço e aceitar comandos - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) Executa um comando quando uma transação da carteira mudar (%s no comando será substituído por TxID) @@ -4267,12 +4253,12 @@ This label turns red, if the priority is smaller than "medium". Opções de criação de blocos: - + Failed to listen on any port. Use -listen=0 if you want this. Falha ao escutar em qualquer porta. Use -listen=0 se você quiser isso. - + Specify wallet file (within data directory) Especifique o arquivo da carteira (dentro do diretório de dados) @@ -4297,7 +4283,7 @@ This label turns red, if the priority is smaller than "medium". Senha para conexões JSON-RPC - + Execute command when the best block changes (%s in cmd is replaced by block hash) Executa um comando quando o melhor bloco mudar (%s no comando será substituído pelo hash do bloco) @@ -4307,12 +4293,12 @@ This label turns red, if the priority is smaller than "medium". Permitir consultas DNS para -addnode, -seednode e -connect - + To use the %s option Para usar a opção %s - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -4346,12 +4332,12 @@ If the file does not exist, create it with owner-readable-only file permissions. Se o arquivo não existir, crie um com permissão de leitura apenas pelo dono - + Gridcoin version - + Usage: Uso: @@ -4361,7 +4347,7 @@ Se o arquivo não existir, crie um com permissão de leitura apenas pelo dono - + List commands Lista de comandos @@ -4386,12 +4372,12 @@ Se o arquivo não existir, crie um com permissão de leitura apenas pelo donoEndereço -proxy inválido: '%s' - + Unknown network specified in -onlynet: '%s' Rede desconhecida especificada em -onlynet: '%s' - + Insufficient funds Saldo insuficiente @@ -4401,17 +4387,17 @@ Se o arquivo não existir, crie um com permissão de leitura apenas pelo donoCarregando índice de blocos... - + Add a node to connect to and attempt to keep the connection open Adicionar um cliente para se conectar e tentar manter a conexão ativa - + Loading wallet... Carregando carteira... - + Cannot downgrade wallet Não é possível fazer downgrade da carteira @@ -4421,17 +4407,17 @@ Se o arquivo não existir, crie um com permissão de leitura apenas pelo donoNão foi possível escrever no endereço padrão - + Rescanning... Re-escaneando... - + Done loading Carregamento terminado! - + Error Erro diff --git a/src/qt/locale/bitcoin_pt_PT.ts b/src/qt/locale/bitcoin_pt_PT.ts index 49e8023911..446f834260 100644 --- a/src/qt/locale/bitcoin_pt_PT.ts +++ b/src/qt/locale/bitcoin_pt_PT.ts @@ -23,20 +23,6 @@ Distributed under the MIT/X11 software license, see the accompanying file COPYIN This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (https://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - - -This is experimental software. - -Distributed under the MIT/X11 software license, see the accompanying file COPYING 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. - -Este é um programa experimental. - -Distribuído sob uma licença de software MIT/X11, por favor verifique o ficheiro anexo license.txt ou http://www.opensource.org/licenses/mit-license.php. - -Este produto inclui software desenvolvido pelo Projecto OpenSSL para uso no OpenSSL Toolkit (http://www.openssl.org/), software criptográfico escrito por Eric Young (eay@cryptsoft.com) e software UPnP escrito por Thomas Bernard. - AddressBookPage @@ -313,12 +299,12 @@ Este produto inclui software desenvolvido pelo Projecto OpenSSL para uso no Open BitcoinGUI - + Sign &message... Assinar &mensagem... - + &Overview &Resumo @@ -414,7 +400,7 @@ Este produto inclui software desenvolvido pelo Projecto OpenSSL para uso no Open Sair da aplicação - + &Options... &Opções... @@ -429,7 +415,7 @@ Este produto inclui software desenvolvido pelo Projecto OpenSSL para uso no Open Encriptar ou desencriptar carteira - + %n second(s) ago %n há segundo @@ -461,7 +447,7 @@ Este produto inclui software desenvolvido pelo Projecto OpenSSL para uso no Open - + Date: %1 Amount: %2 Type: %3 @@ -476,7 +462,7 @@ Endereço: %4 ?} {4?} - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -486,17 +472,39 @@ Endereço: %4 - &Backup Wallet... - Efetuar &Cópia de Segurança da Carteira... + + Scraper: waiting on wallet to sync. + - - &Change Passphrase... - Alterar &Frase de Segurança... + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + - Backup wallet to another location - Efetue uma cópia de segurança da carteira para outra localização + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + + &Change Passphrase... + Alterar &Frase de Segurança... @@ -549,7 +557,7 @@ Endereço: %4 &Verificar mensagem... - + Wallet Carteira @@ -559,7 +567,7 @@ Endereço: %4 Gridcoin - + &Send &Enviar @@ -568,30 +576,6 @@ Endereço: %4 &Receive &Receber - - &Rebuild Block Chain - &Reconstruir Cadeia de Blocos - - - Rebuild Block Chain - Reconstruir Cadeia de Blocos - - - &Download Blocks - &Transferir Blocos - - - Download Blocks - Transferir Blocos - - - &Upgrade Client - & Actualizar Cliente - - - Upgrade Client - Actualizar Cliente - &About Gridcoin @@ -603,36 +587,12 @@ Endereço: %4 Mostrar informaçõe sobre o Grdicoin - - &Neural Network - &Rede Neural - - - - Neural Network - Rede Neural - - - &Advanced Configuration - &Configurações Avançadas - - - Advanced Configuration - Configurações Avançadas - - - - &New User Wizard - &Assistente de Novo Utilizador - - - - + New User Wizard Assistente de Novo Utilizador - + &Voting &Votações @@ -642,15 +602,7 @@ Endereço: %4 Votações - &Foundation - &Instituição - - - Foundation - Instituição - - - + &Diagnostics &Diagnósticos @@ -659,14 +611,6 @@ Endereço: %4 Diagnostics Diagnósticos - - FA&Q - FA&Q - - - Interactive FAQ - FAQ - Modify configuration options for Gridcoin @@ -688,14 +632,14 @@ Endereço: %4 - + [testnet] [rede de testes] - + Gridcoin client Cliente Gridcoin @@ -705,23 +649,7 @@ Endereço: %4 %1 ligação ativa à rede Gridcoin - %1 second(s) ago - %1 há segundo - - - %1 minute(s) ago - há %1 minuto - - - %1 hour(s) ago - há %1 hora - - - %1 day(s) ago - há %1 dia - - - + Last received block was generated %1. O último bloco recebido foi gerado %1. @@ -766,19 +694,7 @@ Endereço: %4 Atenção! - Erro na Diretoria do Boinc! - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Data: %1 -Quantia: %2 -Tipo: %3 -Endereço: %4 - - - - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. O URI não pode ser analisado! Isto pode ser causado por um endereço inválido de Gridcoin ou parâmetros de URI mal-formados. @@ -837,7 +753,7 @@ Endereço: %4 - + %n second(s) %n segundo @@ -869,39 +785,7 @@ Endereço: %4 - Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. %4 - A realizar Staking.<br>O seu peso é de %1<br>Peso da rede é %2<br><b>Tempo</b> estimado para ganhar recompensa +e de %3. %4 - - - Not staking because wallet is locked - Não está a fazer stake porque a carteira está trancada - - - Not staking because wallet is offline - Não está a fazer stake porque a carteita está offline - - - Not staking because wallet is syncing - Não está a fazer stale porque a carteira esta a sincronizar - - - Not staking because you don't have mature coins and stake weight is too low. - Não está a realizar stake porque não tem' moedas maduras e o peso do stake é muito baixo. - - - Not staking because you don't have mature coins - Não a fazer stake porque não tem moedas maduras - - - Searching for mature coins... Please wait - Procurando por moedas maduras... Por favor aguarde - - - Not staking - Não realizando stake - - - + &File &Ficheiro @@ -916,17 +800,12 @@ Endereço: %4 &Comunidade - - &Advanced - &Avançado - - - + &Help &Ajuda - + Processed %n block(s) of transaction history. Processado %n bloco do histórico de transações. @@ -939,12 +818,12 @@ Endereço: %4 Atualizado - + Catching up... Recuperando o atraso... - + Sent transaction Transação enviada @@ -954,16 +833,12 @@ Endereço: %4 Transação recebida - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - A carteira está <b>encriptada</b> e atualmente <b>desbloqueada</b> - - - + Wallet is <b>encrypted</b> and currently <b>locked</b> A carteira está <b>encriptada</b> e atualmente <b>bloqueada</b> - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. Ocorreu um erro fatal. O Gridcoin não consegue continuar em segurança e vai fechar. @@ -971,7 +846,7 @@ Endereço: %4 ClientModel - + Network Alert Alerta da Rede @@ -1053,10 +928,6 @@ Endereço: %4 (un)select all (des)selecionar todos - - List mode - Modo de lista - Amount @@ -1434,7 +1305,7 @@ Isto significa que uma taxa de pelo menos %2 é necesária. NewPollDialog - + Create Poll Criar Votação @@ -1647,10 +1518,6 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Map port using &UPnP Mapear porta, utilizando &UPnP - - Proxy &IP: - &IP do proxy: - &Port: @@ -1817,10 +1684,6 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Error Messages: - - DPOR Weight: - Peso DPOR: - Magnitude: @@ -1846,10 +1709,6 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Current Poll: Votação Atual: - - Client Messages: - Mensagens do Cliente: - Available: @@ -1892,6 +1751,14 @@ Isto significa que uma taxa de pelo menos %2 é necesária. fora de sincronia + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1953,7 +1820,7 @@ Isto significa que uma taxa de pelo menos %2 é necesária. RPCConsole - + @@ -1965,7 +1832,7 @@ Isto significa que uma taxa de pelo menos %2 é necesária. - + N/A N/D @@ -2045,7 +1912,12 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Saída: - + + &Scraper + + + + Debug log file Ficheiro de registo de depuração @@ -2075,7 +1947,7 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Insira <b>help</b> para visualizar os comandos disponíveis. - + %1 B %1 B @@ -2110,12 +1982,12 @@ Isto significa que uma taxa de pelo menos %2 é necesária. %1 h %2 m - + Gridcoin - Debug Console Gridcoin- Consola de Depuração - + Boost version Versão de Boost @@ -2185,7 +2057,7 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Nome do cliente - + Welcome to the Gridcoin RPC console! Bem-vindo à consola RPC Grdicoin! @@ -2452,22 +2324,22 @@ Isto significa que uma taxa de pelo menos %2 é necesária. SendCoinsEntry - + A&mount: Qu&antia: - + Pay &To: &Pagar A: - + &Label: Rótu&lo: - + Alt+A Alt+A @@ -2487,12 +2359,12 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Mensagem: - + Form Formulário - + Enter a label for this address to add it to your address book Escreva um rótulo para este endereço para o adicionar ao seu livro de endereços @@ -2513,21 +2385,12 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Remover este destinatário - + Send Custom Message to a Gridcoin Recipient Enviar Mensagem Personalizada a um Destinatário Gridcoin - Track Coins - Rastrear Moedas - - - - Add Attachment - Adicionar Anexo - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) Insira um endereço Gridcoin (exemplo:S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2755,16 +2618,12 @@ Isto significa que uma taxa de pelo menos %2 é necesária. - + Source Origem - Generated - Gerado - - - + From De @@ -2787,23 +2646,11 @@ Isto significa que uma taxa de pelo menos %2 é necesária. own address endereço próprio - - Block Type - Tipo de Bloco - - - Block Number - Número do Bloco - Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. As moedas gerados pelo Gridcoin devem maturar durante 110 blocos antes de poderem ser gastas. Quando gerou este bloco, ele foi transmitido à rede para ser adicionado à cadeia de blocos. Se falhar a entrada na cadeia, o seu estado será alterado para "não aceite" e não será' possivel de usar. Isto pode acontecer ocasionalmente se outro módulo gerar um bloxo com segundos de diferença do seu. - - Information - Informação - label @@ -2832,7 +2679,7 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Débito - + Open for %n more block(s) Aberta por mais %n bloco @@ -2858,12 +2705,37 @@ Isto significa que uma taxa de pelo menos %2 é necesária. - - Generated, PoS + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN - + matures in %n more block(s) matura daqui por %n bloco @@ -2926,18 +2798,6 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Transaction Inputs - - Transaction ID - ID da Transação - - - Transaction - Transação - - - Inputs - Entradas - Amount @@ -2967,12 +2827,7 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Esta janela mostra uma descrição detalhada da transação - - View Attachment - Ver Anexos - - - + Execute Contract Executar Contrato @@ -2981,21 +2836,11 @@ Isto significa que uma taxa de pelo menos %2 é necesária. C&lose F&echar - - - Gridcoin Documents - Documentos do Gridcoin - - - - Document cannot be found on P2P server. - Documento não encontrado no servidor P2P. - TransactionTableModel - + Date Data @@ -3038,27 +2883,7 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Esye bloco não foi recebido por outros nódulos<br> e provavelmente não será aceite! - - Mined - DPOR - Minada - DPOR - - - - Minted - (Local) DPOR - Minted - DPOR (Local) - - - - Mined - PoR - Minada - PoR - - - - Mined - Interest - Minada - Interesse - - - + Date and time that the transaction was received. Data e hora a que esta transação foi recebida. @@ -3073,7 +2898,7 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Quantia retirada ou adicionada ao saldo. - + Open until %1 Aberto até %1 @@ -3103,7 +2928,7 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Gerado mas não aceite - + Received with Recebido com @@ -3123,12 +2948,42 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Pagamento ao próprio - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (n/d) - + Transaction status. Hover over this field to show number of confirmations. Estado da transação. Colocar ponteiro por cima deste campo para mostrar o número de confirmações. @@ -3307,29 +3162,10 @@ Isto significa que uma taxa de pelo menos %2 é necesária. para - - UpgradeDialog - - Gridcoin Upgrading Facility - Instalação de Actualização do Gridcoin - - - Retry Download - Tentar Transferência novamente - - - Upgrade - Actualizar - - - Hide - Ocultar - - VotingChartDialog - + Poll Results Resultados da Votação @@ -3419,14 +3255,6 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Share Type Tipo de Partilha - - Question - Questão - - - Answers - Respostas - # Voters @@ -3437,10 +3265,6 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Total Shares Total de Partilhas - - URL - URL - Best Answer @@ -3466,10 +3290,6 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Share Type. Tipo de Partilha. - - Question. - Questão. - Total Participants. @@ -3480,10 +3300,6 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Total Shares. Total de Partilhas. - - URL. - URL. - Best Answer. @@ -3493,7 +3309,7 @@ Isto significa que uma taxa de pelo menos %2 é necesária. VotingVoteDialog - + PlaceVote ColocarVoto @@ -3526,7 +3342,7 @@ Isto significa que uma taxa de pelo menos %2 é necesária. WalletModel - + Sending... Enviando... @@ -3534,19 +3350,15 @@ Isto significa que uma taxa de pelo menos %2 é necesária. bitcoin-core - + Options: Opções: - + This help message Esta mensagem de ajuda - - Specify configuration file (default: gridcoin.conf) - Especificar ficheiro de configuração (por defeito: gridcoin.conf) - Specify pid file (default: gridcoind.pid) @@ -3578,12 +3390,12 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Especificar tempo de espera da ligação em millisegundos (por defeito: 5000) - + Connect through socks proxy Ligar através de socks proxy - + Select the version of socks proxy to use (4-5, default: 5) Seleccione a versão do socks proxy a utilizar (4-5. por defeito: 5) @@ -3593,7 +3405,7 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Utilizar proxy para verificar serviços ocultos do tor (por defeito: o mesmo que -proxy) - + Listen for connections on <port> (default: 32749 or testnet: 32748) Escutar ligações em on <port> (por defeito: 32749 na testnet: 32748) @@ -3603,7 +3415,7 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Manter no máximo <n> ligações a peers (por defeito: 125) - + Connect only to the specified node(s) Ligar apenas ao(s) nódulo(s) especificado(s) @@ -3613,26 +3425,22 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Ligar a um nó para recuperar endereços de pares, e desligar - + Specify your own public address Especifique o seu endereço público - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) Apenas ligar a nódulos na rede <net> (IPv4, IPv6 ou Tor) - + Discover own IP address (default: 1 when listening and no -externalip) Descobrir endereço IP próprio (por defeito: 1 ao escutar e sem -externalip) - Find peers using internet relay chat (default: 0) - Encontrar peers utilizando irc (por defeito: 0) - - - + Accept connections from outside (default: 1 if no -proxy or -connect) Aceitar ligações externas (por defeito: 1 sem -proxy ou -connect) @@ -3642,26 +3450,22 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Ligar ao endereço fornecido. Usar [host]:por notação para IPv6 - + Find peers using DNS lookup (default: 1) Encontrar peers utilizando o DNS lookup - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) Sincronizar tempo com outros nódulos. Desabilitar se o tempo no seu sistema for preciso, por exemplo a sincronizar com NTP (por defeito: 1) - Sync checkpoints policy (default: strict) - Sincronizar politíca de checkpoints (por defeito: rigoroso) - - - + Threshold for disconnecting misbehaving peers (default: 100) Tolerância para desligar peers mal-formados (por defeito: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Número de segundos a impedir que peers mal-formados se liguem de novo (por defeito: 86400) @@ -3756,6 +3560,16 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3816,6 +3630,11 @@ Isto significa que uma taxa de pelo menos %2 é necesária. ERROR + + + Entire balance reserved + + Expires @@ -3881,11 +3700,6 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Message Mensagem - - - Messate Type - - Miner: @@ -3922,12 +3736,7 @@ Isto significa que uma taxa de pelo menos %2 é necesária. - - No coins; - - - - + Offline; @@ -3937,12 +3746,7 @@ Isto significa que uma taxa de pelo menos %2 é necesária. - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -4022,12 +3826,12 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Usar UPnP para mapear a porta de escuta (padrão: 0) - + Fee per KB to add to transactions you send Taxa por kb para adicionar às transações que enviou - + When creating transactions, ignore inputs with value less than this (default: 0.01) Quando criando transações, ignorar entradas com valor inferior a este (por defeito: 0.01) @@ -4037,12 +3841,12 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Aceitar comandos de linha de comandos e JSON-RPC - + Use the test network Utilizar a rede de testes - testnet - + Output extra debugging information. Implies all other -debug* options Informação de depuração de saída. implica todas as outras opções de -debug* @@ -4052,7 +3856,7 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Informação de depuração da rede de saída - + Prepend debug output with timestamp Prepend debug output with timestamp @@ -4062,7 +3866,7 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Enviar informações rastreio/depuração para o debugger - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) Escuta para ligações JSON-RPC em <port> (por defeito: 15715 ou testnet: 25715) @@ -4072,7 +3876,7 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Permitir ligações JSON-RPC do endereço IP especificado - + Send commands to node running on <ip> (default: 127.0.0.1) Enviar comandos para o nódulo a correr em <ip> (por defeito: 127.0.0.1) @@ -4082,7 +3886,7 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Necessita de confirmação para alteração (por defeito: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) Forçar scripts de transação a utilizarem operadores de PUSH @@ -4092,7 +3896,7 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Executar comando quando um alerta relevante foi recebido (%s no cmd é substituido pela mensagem) - + Upgrade wallet to latest format Atualize a carteira para o formato mais recente @@ -4107,7 +3911,7 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Reexaminar a cadeia de blocos para transações em falta na carteira - + Attempt to recover private keys from a corrupt wallet.dat Tentar recuperar chaves privadas de um wallet.dat corrupto @@ -4127,7 +3931,7 @@ Isto significa que uma taxa de pelo menos %2 é necesária. - + Boinc Mining @@ -4137,7 +3941,7 @@ Isto significa que uma taxa de pelo menos %2 é necesária. - + Error obtaining next project. Error 06172014. @@ -4187,12 +3991,32 @@ Isto significa que uma taxa de pelo menos %2 é necesária. - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -4207,12 +4031,12 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Definir tamanho do bloco em bytes (por defeito: 250000) - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) Definir tamanho máximo das transações de alta prioridade/baixa taxa em bytes (por defeito: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) Opções SSL: (ver a Wiki Bitcoin para instruções de configuração SSL) @@ -4232,21 +4056,17 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Chave privada do servidor (por defeito: server.pem) - Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - Cifras aceitáveus (por defeito: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - - - + Invalid amount for -paytxfee=<amount>: '%s' Quantia inválida para -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. Atenção: -paytxfee está definida com um valor muito elevado! Esta é a taxa que irá pagar se enviar uma transação. - + Invalid amount for -mininput=<amount>: '%s' Quantia inválida para -mininput=<amount>: '%s' @@ -4256,22 +4076,22 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Inicialização de verificação de sanidade falhou. Gridcoin está a encerrar. - + Wallet %s resides outside data directory %s. A carteira %s reside fora da directoria de dados %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. Não foi possivel cadear a diretoria de dados %s. O Gridcoin já está provavelmente em execução. - + Verifying database integrity... Verificando integridade da base de dados... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. Erro ao iniciar o ambiente da base de dados %s! Para recuperar, GUARDE ESSA DIRETORIA, depois remova tudo, exceto o wallet.dat. @@ -4281,10 +4101,15 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Atenção: wallet.dat corrupto, dados recuperados! wallet.dat original salvo como wallet.{timestamp}.bak em %s; se o seu saldo ou transações estiverem incorretos, deverá recuperar uma cópia de segurança. - + Vote Voto + + + Waiting for coins to mature + + Wallet locked; @@ -4301,17 +4126,17 @@ Isto significa que uma taxa de pelo menos %2 é necesária. wallet.dat corrupta, recuperação falhou - + Unknown -socks proxy version requested: %i Versão de proxy desconhecida -socks necessária: %i - + Invalid -tor address: '%s' Endereço -tor inválido: '%s' - + Cannot resolve -bind address: '%s' Não foi possivel resolver o endereço -bind: '%s' @@ -4321,15 +4146,10 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Não foi possivel resolver o endereço -externalip: '%s' - + Invalid amount for -reservebalance=<amount> Quantia inválida para - reservebalance=<amount> - - Unable to sign checkpoint, wrong checkpointkey? - - Incapaz de verificar checkpoint, chave de checkpoint errada? - Error loading blkindex.dat @@ -4341,22 +4161,22 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Erro ao carregar wallet.dat: Carteira corrompida - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. Atenção: erro ao ler wallet.dat! Todas as chaves foram lidas correctamente, mas dados de transação ou do livro de endereços podem estar em falta ou incorretos. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin Erro ao carregar wallet.dat: A carteira necessira de uma versão mais recente do Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete A carteira precisa de ser reescrita: reinicie o Gridcoin para concluir - + Error loading wallet.dat Erro ao carregar wallet.dat @@ -4376,17 +4196,17 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Erro: Não possivel começar o nódulo - + Unable to bind to %s on this computer. Gridcoin is probably already running. Não foi possível ligar %s neste computador. O Gridcoin já está possivelmente a ser executado. - + Unable to bind to %s on this computer (bind returned error %d, %s) Incapaz de vincular a %s neste computador (ligação retornou erro %d, %s) - + Error: Wallet locked, unable to create transaction Erro: Carteira bloqueada, incapaz de criar transação @@ -4396,59 +4216,47 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Erro: Carteira desbloqueada para stake apenas, incapaz de criar transação. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds Erro: Esta transação necessita de uma taxa de transação de pelo menos %s devido a esta quantia, complexidade, ou utilização de fundos recebidos recentemente - + Error: Transaction creation failed Erro: Criação de transação fallhou - + Sending... Enviando... - + 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. Erro: A transação foi rejeitada. Isto pode acontecer se algumas das moedas na sua carteira já tiverem sido gastas, por exemplo se as usou na cópia da sua wallet.dat, mas não foram marcadas como gastas aqui. - + Invalid amount Quantia inválida - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. Aviso: Por favor verifique que a data e tempo 's do seu computador estão corretos! Se o seu relógio estiver incorreto, o Gridcoin não funcionará bem. - Warning: This version is obsolete, upgrade required! - Atenção: Esta versão está obsoleta, actualização necessária! - - - WARNING: synchronized checkpoint violation detected, but skipped! - AVISO: violação detetada na sincronização de checkpoint, mas ignorada! - - - + Warning: Disk space is low! Aviso: Pouco disco em espaço! - WARNING: Invalid checkpoint found! Displayed transactions may not be correct! You may need to upgrade, or notify developers. - AVISO: Checkpoint inválido encontrado! As transações mostradas podem não ser corretas! Pode necessitar de actualizar ou notificar os desenvolvedorees. - - - + Run in the background as a daemon and accept commands Correr o processo em segundo plano e aceitar comandos - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) Executar o comando quando uma transação da carteira muda (no comando, %s é substituído pela Id. da Transação) @@ -4458,12 +4266,12 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Opções da criação de bloco: - + Failed to listen on any port. Use -listen=0 if you want this. Falhou a escutar em qualquer porta. Use -listen=0 se quiser isto. - + Specify wallet file (within data directory) Especifique ficheiro de carteira (dentro da pasta de dados) @@ -4488,7 +4296,7 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Palavra-passe para ligações JSON-RPC - + Execute command when the best block changes (%s in cmd is replaced by block hash) Executar o comando quando o melhor bloco muda (no comando, %s é substituído pela hash do bloco) @@ -4498,12 +4306,12 @@ Isto significa que uma taxa de pelo menos %2 é necesária. Permitir procuras DNS para -addnode, -seednode e -connect - + To use the %s option Para usar as %s opções %s - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -4547,12 +4355,12 @@ If the file does not exist, create it with owner-readable-only file permissions. Se o ficheiro não existir, crie-o com permissões de leitura. - + Gridcoin version Versão do Gridcoin - + Usage: Utilização: @@ -4562,7 +4370,7 @@ Se o ficheiro não existir, crie-o com permissões de leitura. Enviar comando ao -server ou gridcoin - + List commands Listar comandos @@ -4587,12 +4395,12 @@ Se o ficheiro não existir, crie-o com permissões de leitura. Endereço -proxy inválido: '%s' - + Unknown network specified in -onlynet: '%s' Rede desconhecida especificada em -onlynet: '%s' - + Insufficient funds Fundos insuficientes @@ -4602,17 +4410,17 @@ Se o ficheiro não existir, crie-o com permissões de leitura. A carregar o índice de blocos... - + Add a node to connect to and attempt to keep the connection open Adicionar um nó para se ligar e tentar manter a ligação aberta - + Loading wallet... A carregar a carteira... - + Cannot downgrade wallet Impossível mudar a carteira para uma versão anterior @@ -4622,17 +4430,17 @@ Se o ficheiro não existir, crie-o com permissões de leitura. Impossível escrever endereço por defeito - + Rescanning... Reexaminando... - + Done loading Carregamento concluído - + Error Erro diff --git a/src/qt/locale/bitcoin_ro_RO.ts b/src/qt/locale/bitcoin_ro_RO.ts index c375f25802..a7fec5c61b 100644 --- a/src/qt/locale/bitcoin_ro_RO.ts +++ b/src/qt/locale/bitcoin_ro_RO.ts @@ -23,20 +23,6 @@ Distributed under the MIT/X11 software license, see the accompanying file COPYIN This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (https://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - - -This is experimental software. - -Distributed under the MIT/X11 software license, see the accompanying file COPYING 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. - -Acesta este un software experimental. - -Distribuit sub licen?a MIT/X11, vezi fi?ierul înso?itor COPYING sau http://www.opensource.org/licenses/mit-license.php. - -Acest produs include programe dezvoltate de c?tre OpenSSL Project pentru a fi folosite în OpenSSL Toolkit (http://www.openssl.org/) ?i programe criptografice scrise de c?tre Eric Young (eay@cryptsoft.com) ?i programe UPnP scrise de c?tre Thomas Bernard. - AddressBookPage @@ -313,12 +299,12 @@ Acest produs include programe dezvoltate de c?tre OpenSSL Project pentru a fi fo BitcoinGUI - + Sign &message... Semnează &mesaj... - + &Overview &Imagine de ansamblu @@ -414,7 +400,7 @@ Acest produs include programe dezvoltate de c?tre OpenSSL Project pentru a fi fo Închide aplicaţia - + &Options... &Opţiuni... @@ -428,19 +414,11 @@ Acest produs include programe dezvoltate de c?tre OpenSSL Project pentru a fi fo Encrypt or decrypt wallet Cripteaz? sau decripteaz? portofelul - - &Backup Wallet... - Face o copie de siguranţă a portofelului... - &Change Passphrase... S&chimbă parola... - - Backup wallet to another location - Creează o copie de rezervă a portofelului într-o locaţie diferită - Change the passphrase used for wallet encryption @@ -492,7 +470,7 @@ Acest produs include programe dezvoltate de c?tre OpenSSL Project pentru a fi fo &Verifică mesaj... - + Wallet Portofel @@ -502,7 +480,7 @@ Acest produs include programe dezvoltate de c?tre OpenSSL Project pentru a fi fo Gridcoin - + &Send Trimite @@ -522,28 +500,12 @@ Acest produs include programe dezvoltate de c?tre OpenSSL Project pentru a fi fo Arat? informa?ii despre Gridcoin - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -553,7 +515,7 @@ Acest produs include programe dezvoltate de c?tre OpenSSL Project pentru a fi fo - + &Diagnostics @@ -583,14 +545,14 @@ Acest produs include programe dezvoltate de c?tre OpenSSL Project pentru a fi fo - + [testnet] [testnet] - + Gridcoin client Clientul Gridcoin @@ -600,23 +562,7 @@ Acest produs include programe dezvoltate de c?tre OpenSSL Project pentru a fi fo %1 conexiune activ? la reteaua Gridcoin - %1 second(s) ago - %1 secund? în urm? - - - %1 minute(s) ago - %1 minut în urm? - - - %1 hour(s) ago - %1 or? în urm? - - - %1 day(s) ago - %1 zi în urm? - - - + Last received block was generated %1. Ultimul bloc primit a fost generat %1. @@ -676,7 +622,7 @@ Adresa: %4 ?} {4?} - + Wallet is <b>encrypted</b> and currently %1 @@ -723,7 +669,7 @@ Adresa: %4 - + %n second(s) @@ -769,27 +715,37 @@ Adresa: %4 - Not staking because wallet is locked - Nu este in modul stake deoarece portofelul este blocat + + Scraper: waiting on wallet to sync. + - Not staking because wallet is offline - Nu este in modul stake deoarece portofelul este offline + + Scraper: superblock not needed - inactive. + - Not staking because wallet is syncing - Nu este in modul stake deoarece portofelul se sincronizeaza + + Scraper: downloading and processing stats. + - Not staking because you don't have mature coins - Nu este in modul stake deoarece nu sunt destule monede maturate + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + - Not staking - Not staking + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + - + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + &File &Fişier @@ -804,17 +760,12 @@ Adresa: %4 - - &Advanced - - - - + &Help A&jutor - + Processed %n block(s) of transaction history. S-a procesat %n bloc din istoricul tranzacţiilor. @@ -864,12 +815,12 @@ Adresa: %4 Actualizat - + Catching up... Se actualizează... - + Sent transaction Tranzacţie expediată @@ -879,19 +830,7 @@ Adresa: %4 Tranzacţie recepţionată - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Data: %1 -Suma: %2 -Tipul: %3 -Adresa: %4 - - - - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. URI nu poate fi parsatt! Cauza poate fi o adresa Gridcoin invalid? sau parametrii URI malforma?i. @@ -902,17 +841,13 @@ Adresa: %4 URI handling Manipulare URI - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Portofelul este <b>criptat</b> iar în momentul de faţă este <b>deblocat</b> - Wallet is <b>encrypted</b> and currently <b>locked</b> Portofelul este <b>criptat</b> iar în momentul de faţă este <b>blocat</b> - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. A ap?rut o eroare fatal?. Gridcoin nu mai poate continua în condi?ii de siguran?? ?i va iesi. @@ -920,7 +855,7 @@ Adresa: %4 ClientModel - + Network Alert Alert? re?ea @@ -1002,10 +937,6 @@ Adresa: %4 (un)select all (de)selectare tot - - List mode - Mod listă - Amount @@ -1385,7 +1316,7 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? NewPollDialog - + Create Poll @@ -1598,10 +1529,6 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Map port using &UPnP Mapare port folosind &UPnP - - Proxy &IP: - Proxy &IP: - &Port: @@ -1835,6 +1762,14 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Nu este sincronizat + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1896,7 +1831,7 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? RPCConsole - + @@ -1908,7 +1843,7 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? - + N/A indisponibil @@ -1988,7 +1923,12 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Ieşire: - + + &Scraper + + + + Debug log file Fişier jurnal depanare @@ -2018,7 +1958,7 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Scrieţi <b>help</b> pentru a vedea comenzile disponibile. - + %1 B %1 B @@ -2053,12 +1993,12 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? - + Gridcoin - Debug Console - + Boost version @@ -2128,7 +2068,7 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Nume client - + Welcome to the Gridcoin RPC console! @@ -2395,22 +2335,22 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? SendCoinsEntry - + A&mount: Su&mă: - + Pay &To: Plăteşte că&tre: - + &Label: &Etichetă: - + Alt+A Alt+A @@ -2430,12 +2370,12 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Mesaj: - + Form Formular - + Enter a label for this address to add it to your address book Introdu o etichet? pentru aceast? adres? pentru a fi ad?ugat? în lista ta de adrese @@ -2456,17 +2396,12 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Scoateti acest destinatar - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2717,26 +2652,47 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? - + Source Sursa - Generated - Generat + + Generated in CoinBase + - - Generated in CoinBase + + MINED - POS - - Generated, PoS + + MINED - POR - + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From De la @@ -2851,27 +2807,11 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Transaction Inputs - - Transaction ID - ID-ul tranzactiei - Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - Informaţie - - - Transaction - Tranzac?ie - - - Inputs - Intrari - Amount @@ -2901,12 +2841,7 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Acest panou arată o descriere detaliată a tranzacţiei - - View Attachment - - - - + Execute Contract @@ -2915,21 +2850,11 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? C&lose Închide - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Data @@ -3003,7 +2928,7 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Generat dar neacceptat - + Received with Recep?ionat cu @@ -3023,32 +2948,42 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Plat? c?tre tine - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (n/a) - + Transaction status. Hover over this field to show number of confirmations. Starea tranzac?iei. Treci cu mausul peste acest câmp pentru afi?area num?rului de confirm?ri. @@ -3242,17 +3177,10 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? c?tre - - UpgradeDialog - - Hide - Ascunde - - VotingChartDialog - + Poll Results @@ -3396,7 +3324,7 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? VotingVoteDialog - + PlaceVote @@ -3429,7 +3357,7 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? WalletModel - + Sending... Se trimite... @@ -3437,12 +3365,12 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? bitcoin-core - + Options: Opţiuni: - + This help message Acest mesaj de ajutor @@ -3472,12 +3400,12 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Specific? intervalul maxim de conectare în milisecunde (implicit: 5000) - + Connect through socks proxy Conecteaz?-te printr-un proxy socks - + Select the version of socks proxy to use (4-5, default: 5) Selectati versiunea de proxy socks(4-5, implicit: 5) @@ -3487,7 +3415,7 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Utilizati proxy pentru a ajunge la serviciile tor (implicit: la fel ca proxy) - + Listen for connections on <port> (default: 32749 or testnet: 32748) Ascult? pentru conect?ri pe <port> (implicit: 15714 sau testnet: 25714) {32749 ?} {32748)?} @@ -3497,7 +3425,7 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Men?ine cel mult <n> conexiuni cu partenerii (implicit: 125) - + Connect only to the specified node(s) Conecteaza-te doar la nod(urile) specifice @@ -3507,26 +3435,22 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Se conectează la un nod pentru a obţine adresele partenerilor, şi apoi se deconectează - + Specify your own public address Specificaţi adresa dvs. publică - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) Efectueaz? conexiuni doar c?tre nodurile din re?eaua <net> (IPv4, IPv6 sau Tor) - + Discover own IP address (default: 1 when listening and no -externalip) Descopera propria ta adresa IP (intial: 1) - Find peers using internet relay chat (default: 0) - Gaseste noduri fosoling irc (implicit: 1) {0)?} - - - + Accept connections from outside (default: 1 if no -proxy or -connect) Accept? conexiuni din afar? (implicit: 1 dac? nu se folose?te -proxy sau -connect) @@ -3536,26 +3460,22 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Leaga la o adresa data. Utilizeaza notatie [host]:port pt IPv6 - + Find peers using DNS lookup (default: 1) Gaseste peers folosind cautare DNS(implicit: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) Sincronizeaz? timp cu alte noduri. Dezactiveaz? daca timpul de pe sistemul dumneavoastr? este precis ex: sincronizare cu NTP (implicit: 1) - Sync checkpoints policy (default: strict) - Sincronizeaza politica checkpoint(implicit: strict) - - - + Threshold for disconnecting misbehaving peers (default: 100) Prag pentru deconectarea partenerilor care nu func?ioneaz? corect (implicit: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Num?rul de secunde pentru a preveni reconectarea partenerilor care nu func?ioneaz? corect (implicit: 86400) @@ -3650,6 +3570,16 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3710,6 +3640,11 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? ERROR + + + Entire balance reserved + + Expires @@ -3775,11 +3710,6 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Message Mesaj - - - Messate Type - - Miner: @@ -3816,12 +3746,7 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? - - No coins; - - - - + Offline; @@ -3831,12 +3756,7 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3916,12 +3836,12 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Foloseste UPnP pentru a vedea porturile (initial: 0) - + Fee per KB to add to transactions you send Comision pe kB de adaugat la tranzactiile pe care le trimiti - + When creating transactions, ignore inputs with value less than this (default: 0.01) Când crea?i tranzac?ii, ignora?i intr?ri cu valori mai mici decât aceasta (implicit: 0,01) @@ -3931,7 +3851,7 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Acceptă comenzi din linia de comandă şi comenzi JSON-RPC - + Run in the background as a daemon and accept commands Rulează în fundal ca un demon şi acceptă comenzi @@ -3941,7 +3861,7 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Utilizeaz? re?eaua de test - + Output extra debugging information. Implies all other -debug* options Extra informatii despre depanare. Implica toate optiunile -debug* @@ -3951,7 +3871,7 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Extra informatii despre depanare retea. - + Prepend debug output with timestamp Ataseaza output depanare cu log de timp @@ -3961,7 +3881,7 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Trimite informa?iile trace/debug la consol? - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) Ascult? pentru conexiuni JSON-RPC pe <port> (implicit:15715 sau testnet: 25715) @@ -3971,7 +3891,7 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Permite conexiuni JSON-RPC de la adresa IP specificat? - + Send commands to node running on <ip> (default: 127.0.0.1) Trimite comenzi la nodul care ruleaz? la <ip> (implicit: 127.0.0.1) @@ -3981,7 +3901,7 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Necesita confirmari pentru schimbare (implicit: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) Enforseaza tranzactiile script sa foloseasca operatori canonici PUSH(implicit: 1) @@ -3991,7 +3911,7 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Execut? o comand? când o alerta relevantâ este primitâ(%s in cmd este înlocuit de mesaj) - + Upgrade wallet to latest format Actualizeaz? portofelul la ultimul format @@ -4006,7 +3926,7 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Rescaneaz? lan?ul de bloc pentru tranzac?iile portofel lips? - + Attempt to recover private keys from a corrupt wallet.dat Încearc? recuperarea cheilor private dintr-un wallet.dat corupt @@ -4026,7 +3946,7 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? - + Boinc Mining @@ -4036,7 +3956,7 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? - + Error obtaining next project. Error 06172014. @@ -4086,12 +4006,32 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -4106,12 +4046,12 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Seteaz? m?rimea maxima a blocului în bytes (implicit: 250000) - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) Setati valoarea maxima a prioritate mare/taxa scazuta in bytes(implicit: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) Optiuni SSl (vezi Bitcoin wiki pentru intructiunile de instalare) @@ -4131,21 +4071,17 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Cheia privat? a serverului (implicit: server.pem) - Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - Cifruri acceptabile (implicit: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - - - + Invalid amount for -paytxfee=<amount>: '%s' Suma nevalid? pentru -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. Atentie: setarea -paytxfee este foarte ridicata! Aceasta este taxa tranzactiei pe care o vei plati daca trimiti o tranzactie. - + Invalid amount for -mininput=<amount>: '%s' Suma invalida pentru -mininput=<amount>: '%s' @@ -4155,22 +4091,22 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? - + Wallet %s resides outside data directory %s. Portofelul %s este in afara directorului %s - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. Nu se poate obtine un lock pe directorul de date &s. Blackoin probabil ruleaza deja. - + Verifying database integrity... Se verifica integritatea bazei de date... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. Eroare la ini?ializarea mediu de baze de date %s! Pentru a recupera, SALVATI ACEL DIRECTORr, apoi scoate?i totul din el, cu excep?ia wallet.dat. @@ -4180,10 +4116,15 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Atentie: fisierul wallet.dat este corupt, date salvate! Fisierul original wallet.dat a fost salvat ca wallet.{timestamp}.bak in %s; daca balansul sau tranzactiile sunt incorecte ar trebui sa restaurati dintr-o copie de siguranta. - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4200,17 +4141,17 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? wallet.dat corupt, recuperare e?uat? - + Unknown -socks proxy version requested: %i S-a cerut o versiune necunoscut? de proxy -socks: %i - + Invalid -tor address: '%s' Adresa -tor invalida: '%s' - + Cannot resolve -bind address: '%s' Nu se poate rezolva adresa -bind: '%s' @@ -4220,16 +4161,10 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Nu se poate rezolva adresa -externalip: '%s' - + Invalid amount for -reservebalance=<amount> Suma invalida pentru -reservebalance=<amount> - - Unable to sign checkpoint, wrong checkpointkey? - - În imposibilitatea de a semna checkpoint-ul, checkpointkey gre?it? - - Error loading blkindex.dat @@ -4241,22 +4176,22 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Eroare la înc?rcarea wallet.dat: Portofel corupt - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. Atentie: eroare la citirea fisierului wallet.dat! Toate cheile sunt citite corect, dar datele tranzactiei sau anumite intrari din agenda sunt incorecte sau lipsesc. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin Eroare la înc?rcarea wallet.dat: Portofelul necesita o versiune mai noua de Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete A fost nevoie de rescrierea portofelului: restarta?i Gridcoin pentru a finaliza - + Error loading wallet.dat Eroare la înc?rcarea wallet.dat @@ -4276,17 +4211,17 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Eroare: nodul nu a putut fi pornit - + Unable to bind to %s on this computer. Gridcoin is probably already running. Imposibil de conectat %s pe acest computer. Cel mai probabil Gridcoin ruleaza - + Unable to bind to %s on this computer (bind returned error %d, %s) Nu se poate folosi %s pe acest calculator (eroarea returnat? este %d, %s) - + Error: Wallet locked, unable to create transaction Eroare: portofel blocat, tranzactia nu s-a creat @@ -4296,54 +4231,42 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Eroare: portofel blocat doar pentru staking, tranzactia nu s-a creat. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds Eroare: Aceast? tranzac?ie necesit? un comision de tranzac?ie de cel pu?in %s din cauza valorii sale, complexitate, sau utilizarea de fonduri recent primite - + Error: Transaction creation failed Eroare: crearea tranzac?iei a e?uat. - + Sending... Se trimite... - + 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. Eroare: tranzac?ia a fost respins?. Acest lucru s-ar putea întâmpla în cazul în care unele dintre monedele din portofel au fost deja cheltuite, cum si cum a?i utilizat o copie a wallet.dat ?i monedele au fost cheltuite în copie dar nu au fost marcate ca ?i cheltuite aici. - + Invalid amount Sum? nevalid? - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. Atentie: Va rugam verificati ca timpul si data calculatorului sunt corete. Daca timpul este gresit Gridcoin nu va functiona corect. - Warning: This version is obsolete, upgrade required! - Aten?ie: aceast? versiune este dep??it?, este necesar? actualizarea! - - - WARNING: synchronized checkpoint violation detected, but skipped! - ATENTIONARE: s-a detectat o violare a checkpoint-ului sincronizat, dar s-a ignorat! - - - + Warning: Disk space is low! Avertisment: spa?iul pe disc este sc?zut! - WARNING: Invalid checkpoint found! Displayed transactions may not be correct! You may need to upgrade, or notify developers. - ATENTIONARE: checkpoint invalid! Trazatiile afisate pot fi incorecte! Posibil s? ave?i nevoie s? face?i upgrade, sau s? notificati dezvoltatorii. - - - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) Execută comanda cînd o tranzacţie a portofelului se schimbă (%s în cmd este înlocuit de TxID) @@ -4353,12 +4276,12 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Opţiuni creare bloc: - + Failed to listen on any port. Use -listen=0 if you want this. Nu s-a reuşit ascultarea pe orice port. Folosiţi -listen=0 dacă vreţi asta. - + Specify configuration file (default: gridcoinresearch.conf) @@ -4388,7 +4311,7 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Parola pentru conexiunile JSON-RPC - + Execute command when the best block changes (%s in cmd is replaced by block hash) Execută comanda cînd cel mai bun bloc se modifică (%s în cmd este înlocuit cu hash-ul blocului) @@ -4398,12 +4321,12 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? Permite căutări DNS pentru -addnode, -seednode şi -connect - + To use the %s option Pentru a folosi op?iunea %s - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -4437,12 +4360,12 @@ If the file does not exist, create it with owner-readable-only file permissions. Dac? fi?ierul nu exist?, creeaz?-l cu permisiuni de citire doar de c?tre proprietar. - + Gridcoin version Versiune Gridcoin - + Usage: Uz: @@ -4452,7 +4375,7 @@ Dac? fi?ierul nu exist?, creeaz?-l cu permisiuni de citire doar de c?tre proprie - + List commands List? de comenzi @@ -4477,12 +4400,12 @@ Dac? fi?ierul nu exist?, creeaz?-l cu permisiuni de citire doar de c?tre proprie Adresa -proxy nevalidă: '%s' - + Unknown network specified in -onlynet: '%s' Reţeaua specificată în -onlynet este necunoscută: '%s' - + Insufficient funds Fonduri insuficiente @@ -4492,17 +4415,17 @@ Dac? fi?ierul nu exist?, creeaz?-l cu permisiuni de citire doar de c?tre proprie Încărcare index bloc... - + Add a node to connect to and attempt to keep the connection open Adaugă un nod la care te poţi conecta pentru a menţine conexiunea deschisă - + Loading wallet... Încărcare portofel... - + Cannot downgrade wallet Nu se poate retrograda portofelul @@ -4512,17 +4435,17 @@ Dac? fi?ierul nu exist?, creeaz?-l cu permisiuni de citire doar de c?tre proprie Nu se poate scrie adresa implicită - + Rescanning... Rescanare... - + Done loading Încărcare terminată - + Error Eroare diff --git a/src/qt/locale/bitcoin_ru.ts b/src/qt/locale/bitcoin_ru.ts index 16eb499987..6a05544a61 100644 --- a/src/qt/locale/bitcoin_ru.ts +++ b/src/qt/locale/bitcoin_ru.ts @@ -24,21 +24,6 @@ Distributed under the MIT/X11 software license, see the accompanying file COPYIN This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (https://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - - -This is experimental software. - -Distributed under the MIT/X11 software license, see the accompanying file COPYING 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. - -Это экспериментальное программное обеспечение. - -Распространяется в соответствии с лицензией на программное обеспечение MIT / X11, см. Сопроводительный файл COPYING или http://www.opensource.org/licenses/mit-license.php. - -Этот продукт включает программное обеспечение, разработанное OpenSSL Project для использования в OpenSSL Toolkit (http://www.openssl.org/) и криптографическом программном обеспечении, написанном Эриком Яном (eay@cryptsoft.com) и программным обеспечением UPnP, написанным Томасом Бернардом. - - AddressBookPage @@ -315,12 +300,12 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + Sign &message... &Подписать сообщение... - + &Overview &Обзор @@ -416,7 +401,7 @@ This product includes software developed by the OpenSSL Project for use in the O Закрыть приложение - + &Options... &Параметры @@ -431,7 +416,7 @@ This product includes software developed by the OpenSSL Project for use in the O Зашифровать или расшифровывать бумажник - + %n second(s) ago %n секунд назад @@ -467,7 +452,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Date: %1 Amount: %2 Type: %3 @@ -482,7 +467,7 @@ Address: %4 ?} {4?} - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -492,17 +477,39 @@ Address: %4 - &Backup Wallet... - &Сделать резервную копию бумажника... + + Scraper: waiting on wallet to sync. + - - &Change Passphrase... - &Изменить пароль... + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + - Backup wallet to another location - Сделать резервную копию бумажника в другом месте + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + + &Change Passphrase... + &Изменить пароль... @@ -555,7 +562,7 @@ Address: %4 &Проверить сообщение... - + Wallet Бумажник @@ -565,7 +572,7 @@ Address: %4 Gridcoin - + &Send &Отправить @@ -574,30 +581,6 @@ Address: %4 &Receive &Получить - - &Rebuild Block Chain - &Перестроить блокчейн - - - Rebuild Block Chain - Перестроить блокчейн - - - &Download Blocks - &Загрузить блоки - - - Download Blocks - Загрузить блоки - - - &Upgrade Client - &Обновить клиент - - - Upgrade Client - Обновить клиент - &About Gridcoin @@ -609,36 +592,12 @@ Address: %4 Информация о Gridcoin - - &Neural Network - &Нейронная Сеть - - - - Neural Network - Нейронная Сеть - - - &Advanced Configuration - &Дополнительная Конфигурация - - - Advanced Configuration - Дополнительная Конфигурация - - - - &New User Wizard - &Мастер настройки нового пользователя - - - - + New User Wizard Мастер настройки нового пользователя - + &Voting &Голосование @@ -648,15 +607,7 @@ Address: %4 Голосование - &Foundation - &Организация - - - Foundation - Организация - - - + &Diagnostics &Диагностика @@ -665,14 +616,6 @@ Address: %4 Diagnostics Диагностика - - FA&Q - FA&Q - - - Interactive FAQ - Интерактивный FAQ - Modify configuration options for Gridcoin @@ -694,14 +637,14 @@ Address: %4 - + [testnet] [тестовая сеть] - + Gridcoin client Gridcoin клиент @@ -711,23 +654,7 @@ Address: %4 %1 Активные соединения в сети Gridcoin - %1 second(s) ago - %1 секунд назад - - - %1 minute(s) ago - %1 минут назад - - - %1 hour(s) ago - %1 часов назад - - - %1 day(s) ago - %1 Дней назад - - - + Last received block was generated %1. Последний полученный блок был сгенерирован %1. @@ -772,19 +699,7 @@ Address: %4 Внимание! - Boinc Ошибка пути! - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Дата: %1 -Сумма: %2 -Тип: %3 -Адрес: %4 - - - - + URI handling Обработка URI @@ -843,7 +758,7 @@ Address: %4 - + %n second(s) %n секунда @@ -879,39 +794,7 @@ Address: %4 - Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. %4 - Стейкинг.<br> Ваша значимость %1<br>Сеть %2<br><b>Установленое</b> время до награды %3. %4 - - - Not staking because wallet is locked - Стейкинг отсутствует, по причине блокировки кошелька - - - Not staking because wallet is offline - Стейкинг отсутствует, кошелек отключен от сети - - - Not staking because wallet is syncing - Стейкинг отсутствует, так как идет синхронизация кошелька - - - Not staking because you don't have mature coins and stake weight is too low. - Стейкинг отсутствует, потому что у вас нет сформировавшихся средств для этого, а ставка слишком мала. - - - Not staking because you don't have mature coins - Стейкинг отсутствует, по причине отсутствия монет - - - Searching for mature coins... Please wait - Поиск монет... Пожалуйста подождите - - - Not staking - Стейкинг отсутствует - - - + &File &Файл @@ -926,17 +809,12 @@ Address: %4 &Комьюнити - - &Advanced - &Дополнительно - - - + &Help &Помощь - + Processed %n block(s) of transaction history. Обработан %n блок истории транзакций. @@ -950,12 +828,12 @@ Address: %4 Синхронизировано - + Catching up... Синхронизируется... - + Sent transaction Исходящая транзакция @@ -965,16 +843,12 @@ 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 occurred. Gridcoin can no longer continue safely and will quit. Произошла неисправимая ошибка. Gridcoin не может безопасно продолжать работу и будет закрыт. @@ -982,7 +856,7 @@ Address: %4 ClientModel - + Network Alert Сетевая Тревога @@ -1064,10 +938,6 @@ Address: %4 (un)select all Отменить выбор всего - - List mode - Режим списка - Amount @@ -1448,7 +1318,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll Создать опрос @@ -1661,10 +1531,6 @@ This label turns red, if the priority is smaller than "medium". Map port using &UPnP Пробросить порт через &UPnP - - Proxy &IP: - &IP Прокси: - &Port: @@ -1831,10 +1697,6 @@ This label turns red, if the priority is smaller than "medium". Error Messages: - - DPOR Weight: - DPOR Влияние: - Magnitude: @@ -1860,10 +1722,6 @@ This label turns red, if the priority is smaller than "medium". Current Poll: Текущий Опрос: - - Client Messages: - Сообщение клиента: - Available: @@ -1906,6 +1764,14 @@ This label turns red, if the priority is smaller than "medium". не синхронизировано + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1972,7 +1838,7 @@ This label turns red, if the priority is smaller than "medium". Gridcoin - Консоль отладки - + Boost version Boost версия @@ -1989,7 +1855,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A Н/Д @@ -2134,7 +2000,12 @@ This label turns red, if the priority is smaller than "medium". Выход: - + + &Scraper + + + + Debug log file Отладочный лог-файл @@ -2164,7 +2035,7 @@ This label turns red, if the priority is smaller than "medium". Напишите <b>help</b> для просмотра доступных команд. - + %1 B %1 Б @@ -2199,7 +2070,7 @@ This label turns red, if the priority is smaller than "medium". %1 ч %2 мин - + Welcome to the Gridcoin RPC console! Добро пожаловать в Gridcoin RPC консоль! @@ -2466,27 +2337,27 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: Ко&личество: - + Pay &To: Полу&чатель: - + Form Форма - + &Label: &Метка: - + The address to send the payment to (e.g. Sjz75uKHzUQJnSdzvpiigEGxseKkDhQToX) Адрес получателя (например Sjz75uKHzUQJnSdzvpiigEGxseKkDhQToX) @@ -2501,21 +2372,12 @@ This label turns red, if the priority is smaller than "medium". Удалить получателя - + Send Custom Message to a Gridcoin Recipient Отправить редактируемое сообщение получателю Gridcoin - Track Coins - Трекинг средств - - - - Add Attachment - Добавить приложение - - - + Alt+A Alt+A @@ -2792,49 +2654,58 @@ This label turns red, if the priority is smaller than "medium". - + Source Источник - Generated - Сгенерированно - - - + From От - Block Type - Тип блока + + Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. + Сгенерированные гридкойн-монеты должны созреть до значения в 110 блоков, прежде чем их можно будет потратить. Когда вы сгенерировали блок, он будет передан в сеть для добавления в цепочку блоков. Если он не сможет попасть в цепочку, его состояние изменится на «не принято», в таком случае вы не сможете потратить монеты. Это может произойти, если другой узел генерирует блок в течение нескольких секунд после вашего. - Block Number - Номер блока + + Generated in CoinBase + - - Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Сгенерированные гридкойн-монеты должны созреть до значения в 110 блоков, прежде чем их можно будет потратить. Когда вы сгенерировали блок, он будет передан в сеть для добавления в цепочку блоков. Если он не сможет попасть в цепочку, его состояние изменится на «не принято», в таком случае вы не сможете потратить монеты. Это может произойти, если другой узел генерирует блок в течение нескольких секунд после вашего. + + MINED - POS + - Information - Информация + + MINED - POR + - - Generated in CoinBase + + MINED - ORPHANED - - Generated, PoS + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + unknown неизвестно @@ -2943,18 +2814,6 @@ This label turns red, if the priority is smaller than "medium". Transaction Inputs - - Transaction ID - ID транзакции - - - Transaction - Транзакция - - - Inputs - Входы - Amount @@ -2984,12 +2843,7 @@ This label turns red, if the priority is smaller than "medium". Эта панель отображает детальное описание транзакции. - - View Attachment - Просмотр приложения - - - + Execute Contract Выполнить контракт @@ -2998,21 +2852,11 @@ This label turns red, if the priority is smaller than "medium". C&lose &Закрыть - - - Gridcoin Documents - Документы Gridcoin - - - - Document cannot be found on P2P server. - Документ не может быть найден на сервере P2P. - TransactionTableModel - + Date Дата @@ -3047,32 +2891,12 @@ This label turns red, if the priority is smaller than "medium". Этот блок не был получен никакими другими узлами и, вероятно, не будет принят! - - Mined - DPOR - Добыто - DPOR - - - - Minted - (Local) DPOR - Добыто - (Local) DPOR - - - - Mined - PoR - Добыто - PoR - - - - Mined - Interest - Добыто - интерес - - - + Destination address of transaction. Адрес назначения транзакции. - + Open for %n more block(s) Открыто для ещё %n блока @@ -3111,7 +2935,7 @@ This label turns red, if the priority is smaller than "medium". Сгенерировано, но не принято - + Received with Получено на @@ -3131,12 +2955,42 @@ This label turns red, if the priority is smaller than "medium". Отправлено себе - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (недоступно) - + Transaction status. Hover over this field to show number of confirmations. Статус транзакции. Подведите курсор к этому полю, чтобы увидеть количество подтверждений. @@ -3325,29 +3179,10 @@ This label turns red, if the priority is smaller than "medium". до - - UpgradeDialog - - Gridcoin Upgrading Facility - Обновление Gridcoin - - - Retry Download - Повторить загрузку - - - Upgrade - Обновить - - - Hide - Скрыть - - VotingChartDialog - + Poll Results Результаты опроса @@ -3437,14 +3272,6 @@ This label turns red, if the priority is smaller than "medium". Share Type Тематика - - Question - Вопрос - - - Answers - Ответы - # Voters @@ -3455,10 +3282,6 @@ This label turns red, if the priority is smaller than "medium". Total Shares Распространено - - URL - URL - Best Answer @@ -3484,10 +3307,6 @@ This label turns red, if the priority is smaller than "medium". Share Type. Тематика. - - Question. - Вопрос. - Total Participants. @@ -3498,10 +3317,6 @@ This label turns red, if the priority is smaller than "medium". Total Shares. Распространено. - - URL. - URL. - Best Answer. @@ -3511,7 +3326,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote Место Голосования @@ -3544,7 +3359,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... Отправка... @@ -3552,37 +3367,37 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: Параметры: - + Specify data directory Задать каталог данных - + Connect to a node to retrieve peer addresses, and disconnect Подключиться к участнику, чтобы получить список адресов других участников и отключиться - + Specify your own public address Укажите ваш собственный публичный адрес - + Accept command line and JSON-RPC commands Принимать командную строку и команды JSON-RPC - + Run in the background as a daemon and accept commands Запускаться в фоне как демон и принимать команды - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) Выполнить команду, когда меняется транзакция в бумажнике (%s в команде заменяется на TxID) @@ -3682,6 +3497,16 @@ This label turns red, if the priority is smaller than "medium". Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3742,6 +3567,11 @@ This label turns red, if the priority is smaller than "medium". ERROR + + + Entire balance reserved + + Expires @@ -3802,11 +3632,6 @@ This label turns red, if the priority is smaller than "medium". Message Сообщение - - - Messate Type - - Miner: @@ -3843,12 +3668,7 @@ This label turns red, if the priority is smaller than "medium". - - No coins; - - - - + Offline; @@ -3858,12 +3678,7 @@ This label turns red, if the priority is smaller than "medium". - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3923,7 +3738,7 @@ This label turns red, if the priority is smaller than "medium". Пароль для подключений JSON-RPC - + Execute command when the best block changes (%s in cmd is replaced by block hash) Выполнить команду, когда появляется новый блок (%s в команде заменяется на хэш блока) @@ -3933,7 +3748,7 @@ This label turns red, if the priority is smaller than "medium". Разрешить поиск в DNS для -addnode, -seednode и -connect - + Staking Interest @@ -3958,7 +3773,7 @@ This label turns red, if the priority is smaller than "medium". Чтобы использовать опцию %s - + Loading addresses... Загрузка адресов... @@ -3968,12 +3783,12 @@ This label turns red, if the priority is smaller than "medium". Неверный адрес -proxy: '%s' - + Unknown network specified in -onlynet: '%s' В параметре -onlynet указана неизвестная сеть: '%s' - + Insufficient funds Недостаточно монет @@ -3983,17 +3798,17 @@ This label turns red, if the priority is smaller than "medium". Загрузка индекса блоков... - + Add a node to connect to and attempt to keep the connection open Добавить узел для подключения и пытаться поддерживать соединение открытым - + Loading wallet... Загрузка бумажника... - + Cannot downgrade wallet Не удаётся понизить версию бумажника @@ -4003,22 +3818,22 @@ This label turns red, if the priority is smaller than "medium". Не удаётся записать адрес по умолчанию - + Rescanning... Сканирование... - + Done loading Загрузка завершена - + Error Ошибка - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -4062,12 +3877,12 @@ If the file does not exist, create it with owner-readable-only file permissions. Если файл не существует, создайте его и установите права доступа только для владельца. - + Gridcoin version Gridcoin версия - + URL URL @@ -4097,7 +3912,7 @@ If the file does not exist, create it with owner-readable-only file permissions. Отправить команду -server или gridcoind - + List commands Список команд @@ -4112,14 +3927,10 @@ If the file does not exist, create it with owner-readable-only file permissions. Gridcoin - + This help message Эта справка - - Specify configuration file (default: gridcoin.conf) - Укажите конфигурационный файл (по умолчанию: gridcoin.conf) - Specify pid file (default: gridcoind.pid) @@ -4141,12 +3952,12 @@ If the file does not exist, create it with owner-readable-only file permissions. Тайм-аут соединения в миллисекундах (по умолчанию: 5000) - + Connect through socks proxy Подключение через прокси-сервер socks - + Select the version of socks proxy to use (4-5, default: 5) Выберите версию прокси-сервера socks (4-5, по умолчанию: 5) @@ -4156,7 +3967,7 @@ If the file does not exist, create it with owner-readable-only file permissions. Использовать прокси для доступа к скрытым службам (по умолчанию: то же, что и -proxy) - + Listen for connections on <port> (default: 32749 or testnet: 32748) Слушайте подключения по <port> (по умолчанию: 32749 или testnet: 32748) @@ -4166,26 +3977,22 @@ If the file does not exist, create it with owner-readable-only file permissions. Поддерживать не более <n> подключений к узлам (по умолчанию: 125) - + Connect only to the specified node(s) Подключаться только к указанному узлу(ам) - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) Подключаться только к узлам из сети <net> (IPv4, IPv6 или Tor) - + Discover own IP address (default: 1 when listening and no -externalip) Определить свой IP (по умолчанию: 1 при прослушивании и если не используется -externalip) - Find peers using internet relay chat (default: 0) - Найти сверстников с помощью интернет-ретрансляционного чата (по умолчанию: 0) - - - + Accept connections from outside (default: 1 if no -proxy or -connect) Принимать подключения извне (по умолчанию: 1, если не используется -proxy или -connect) @@ -4195,31 +4002,27 @@ If the file does not exist, create it with owner-readable-only file permissions. Привязать к данному адресу. Используйте [host]: обозначение порта для IPv6 - + Find peers using DNS lookup (default: 1) Найти одноранговых узлов, использующих DNS-поиск (по умолчанию: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) Синхронизируйте время с другими узлами. Отключите, если время в вашей системе точно, например. Синхронизация с NTP (по умолчанию: 1) - Sync checkpoints policy (default: strict) - Политика синхронизации контрольных точек (по умолчанию: строгий) - - - + 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: 5000) Максимальный размер буфера приёма на соединение, <n>*1000 байт (по умолчанию: 5000) @@ -4229,7 +4032,7 @@ If the file does not exist, create it with owner-readable-only file permissions. Максимальный размер буфера отправки на соединение, <n>*1000 байт (по умолчанию: 1000) - + Use UPnP to map the listening port (default: 1 when listening) Использовать UPnP для проброса порта (по умолчанию: 1, если используется прослушивание) @@ -4239,22 +4042,22 @@ If the file does not exist, create it with owner-readable-only file permissions. Использовать UPnP для проброса порта (по умолчанию: 0) - + Fee per KB to add to transactions you send Плата за КБ для добавления к транзакциям, которые вы отправляете - + When creating transactions, ignore inputs with value less than this (default: 0.01) При создании транзакции игнорируйте вводы меньше чем (default: 0.01) - + Use the test network Использовать тестовую сеть - + Output extra debugging information. Implies all other -debug* options Вывод дополнительной информации об отладке. Подразумевает все другие опции -debug * @@ -4264,7 +4067,7 @@ If the file does not exist, create it with owner-readable-only file permissions. Вывод дополнительной информации об отладке сети - + Prepend debug output with timestamp Подготовить вывод отладки с меткой времени @@ -4274,7 +4077,7 @@ If the file does not exist, create it with owner-readable-only file permissions. Отправить трассировку / отладочную информацию в отладчик - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) Слушайте подключения JSON-RPC на <порт> (по умолчанию: 15715 или testnet: 25715) @@ -4284,7 +4087,7 @@ If the file does not exist, create it with owner-readable-only file permissions. Разрешить подключения JSON-RPC с указанного IP - + Send commands to node running on <ip> (default: 127.0.0.1) Посылать команды узлу, запущенному на <ip> (по умолчанию: 127.0.0.1) @@ -4294,7 +4097,7 @@ If the file does not exist, create it with owner-readable-only file permissions. Требовать подтверждения изменений (по умолчанию: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) Использовать сценарии транзакций для использования канонических операторов PUSH (по умолчанию: 1) @@ -4304,7 +4107,7 @@ If the file does not exist, create it with owner-readable-only file permissions. Выполнить команду при получении соответствующего предупреждения (% s в cmd заменяется сообщением) - + Upgrade wallet to latest format Обновить бумажник до последнего формата @@ -4319,7 +4122,7 @@ If the file does not exist, create it with owner-readable-only file permissions. Перепроверить цепь блоков на предмет отсутствующих в бумажнике транзакций - + Attempt to recover private keys from a corrupt wallet.dat Попытаться восстановить приватные ключи из повреждённого wallet.dat @@ -4339,7 +4142,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Boinc Mining @@ -4349,7 +4152,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error obtaining next project. Error 06172014. @@ -4399,12 +4202,32 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -4419,12 +4242,12 @@ If the file does not exist, create it with owner-readable-only file permissions. Установить максимальный размер блока в байтах (по умолчанию: 250000) - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) Установите максимальный размер транзакций с высоким приоритетом / низкой оплатой в байтах (по умолчанию: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) Параметры SSL: (см. Инструкции по настройке Bitcoin Wiki для SSL) @@ -4444,21 +4267,17 @@ If the file does not exist, create it with owner-readable-only file permissions. Приватный ключ сервера (по умолчанию: server.pem) - Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - Допустимые алгоритмы (по умолчанию: TLSv1 + HIGH:! SSLv2:! ANULL:! ENULL:! AH:! 3DES: @STRENGTH) - - - + Invalid amount for -paytxfee=<amount>: '%s' Неверная сумма в параметре -paytxfee=<кол-во>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. Внимание: установлено очень большое значение -paytxfee. Это комиссия, которую вы заплатите при проведении транзакции. - + Invalid amount for -mininput=<amount>: '%s' Недопустимая сумма для -mininput = <amount>: '% s' @@ -4468,22 +4287,22 @@ If the file does not exist, create it with owner-readable-only file permissions. Инициализация проверки работоспособности не удалась. Gridcoin закрывается. - + Wallet %s resides outside data directory %s. Бумажник %s располагается вне каталога данных %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. Не удается получить блокировку в каталоге данных% s. Гридкойн, вероятно, уже работает. - + Verifying database integrity... Проверка целостности базы данных... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. Ошибка инициализации среды базы данных% s! Чтобы восстановить, СДЕЛАЙТЕ БЕКАП ДАННОЙ ДИРЕКТОРИИ, затем удалите все, кроме него, за исключением wallet.dat. @@ -4493,10 +4312,15 @@ If the file does not exist, create it with owner-readable-only file permissions. Внимание: wallet.dat повреждён, данные спасены! Оригинальный wallet.dat сохранён как wallet.{timestamp}.bak в %s; если ваш баланс или транзакции некорректны, вы должны восстановить файл из резервной копии. - + Vote Голосовать + + + Waiting for coins to mature + + Wallet locked; @@ -4513,17 +4337,17 @@ If the file does not exist, create it with owner-readable-only file permissions. wallet.dat повреждён, спасение данных не удалось - + Unknown -socks proxy version requested: %i В параметре -socks запрошена неизвестная версия: %i - + Invalid -tor address: '%s' Недопустимый адрес -tor: '% s' - + Cannot resolve -bind address: '%s' Не удаётся разрешить адрес в параметре -bind: '%s' @@ -4533,16 +4357,10 @@ If the file does not exist, create it with owner-readable-only file permissions. Не удаётся разрешить адрес в параметре -externalip: '%s' - + Invalid amount for -reservebalance=<amount> Недопустимая сумма для -reservebalance = <amount> - - Unable to sign checkpoint, wrong checkpointkey? - - Не удалось подписать контрольную точку, неверен checkpointkey? - - Error loading blkindex.dat @@ -4554,22 +4372,22 @@ If the file does not exist, create it with owner-readable-only file permissions. Ошибка загрузки wallet.dat: Бумажник поврежден - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. Внимание: ошибка чтения wallet.dat! Все ключи прочитаны верно, но данные транзакций или записи адресной книги могут отсутствовать или быть неправильными. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin Ошибка загрузки wallet.dat: Бумажник требует более новой версии Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete Необходимо перезаписать бумажник: перезапустите Gridcoin для завершения операции - + Error loading wallet.dat Ошибка при загрузке wallet.dat @@ -4589,17 +4407,17 @@ If the file does not exist, create it with owner-readable-only file permissions. Ошибка: не удалось запустить узел - + Unable to bind to %s on this computer. Gridcoin is probably already running. Невозможно забиндиться %s на этом компьютере. Gridcoin вероятно уже запущен. - + Unable to bind to %s on this computer (bind returned error %d, %s) Невозможно привязаться к %s на этом компьютере (bind вернул ошибку %d, %s) - + Error: Wallet locked, unable to create transaction Ошибка: кошелек заблокирован, невозможно создать транзакцию @@ -4609,51 +4427,39 @@ If the file does not exist, create it with owner-readable-only file permissions. Ошибка: Кошелек разблокирован только для стейкинга, невозможно создать транзакцию. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds Ошибка: эта транзакция требует комиссию как минимум %s из-за суммы, сложности или использования недавно полученных средств - + Error: Transaction creation failed Ошибка: Не удалось создать транзакцию - + Sending... Отправка... - + 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, и монеты были использованы в копии, но не отмечены как потраченные здесь. - + Invalid amount Неверная сумма - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. Внимание: убедитесь, что дата и время на Вашем компьютере выставлены верно. Если Ваши часы идут неправильно, Gridcoin будет работать некорректно. - Warning: This version is obsolete, upgrade required! - Внимание: эта версия устарела, требуется обновление! - - - WARNING: synchronized checkpoint violation detected, but skipped! - ПРЕДУПРЕЖДЕНИЕ: обнаружено нарушение синхронизированной контрольной точки, но пройдено! - - - + Warning: Disk space is low! Внимание: Свободное место заканчивается! - - WARNING: Invalid checkpoint found! Displayed transactions may not be correct! You may need to upgrade, or notify developers. - ПРЕДУПРЕЖДЕНИЕ. Неверная контрольная точка найдена! Отображаемые транзакции могут быть неверными! Возможно, вам потребуется обновиться или уведомить разработчиков. - diff --git a/src/qt/locale/bitcoin_sk.ts b/src/qt/locale/bitcoin_sk.ts index adda78821d..c02a06f8a3 100644 --- a/src/qt/locale/bitcoin_sk.ts +++ b/src/qt/locale/bitcoin_sk.ts @@ -23,20 +23,6 @@ Distributed under the MIT/X11 software license, see the accompanying file COPYIN This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (https://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - - -This is experimental software. - -Distributed under the MIT/X11 software license, see the accompanying file COPYING 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. - -Toto je experimentálny softvér. - -Distribuovaný pod softvérovou licenciou MIT/X11, vi? priložený súbor COPYING alebo http://www.opensource.org/licenses/mit-license.php. - -Tento produkt obsahuje softvér vyvinutý projektom OpenSSL Project pre použitie v sade OpenSSL Toolkit (http://www.openssl.org/) a šifrovací softvér, ktorý napísal Eric Young (eay@cryptsoft.com) a UPnP softvér ktorý napísaný Thomas Bernard. - AddressBookPage @@ -313,12 +299,12 @@ Tento produkt obsahuje softvér vyvinutý projektom OpenSSL Project pre použiti BitcoinGUI - + Sign &message... Podpísať &správu... - + &Overview &Prehľad @@ -414,7 +400,7 @@ Tento produkt obsahuje softvér vyvinutý projektom OpenSSL Project pre použiti Ukončiť program - + &Options... &Možnosti... @@ -429,7 +415,7 @@ Tento produkt obsahuje softvér vyvinutý projektom OpenSSL Project pre použiti Zašifrovať alebo dešifrovať peňaženku - + %n second(s) ago pred %n sekundou @@ -465,7 +451,7 @@ Tento produkt obsahuje softvér vyvinutý projektom OpenSSL Project pre použiti - + Date: %1 Amount: %2 Type: %3 @@ -479,7 +465,7 @@ Adresa: %4 {1 ?} {4?} - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -489,17 +475,39 @@ Adresa: %4 {1 - &Backup Wallet... - &Zálohovať peňaženku... + + Scraper: waiting on wallet to sync. + - - &Change Passphrase... - &Zmena Hesla... + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + - Backup wallet to another location - Zálohovať peňaženku na iné miesto + + &Change Passphrase... + &Zmena Hesla... @@ -552,7 +560,7 @@ Adresa: %4 {1 O&veriť správu... - + Wallet Peňaženka @@ -562,7 +570,7 @@ Adresa: %4 {1 Gridcoin - + &Send &Odoslať @@ -571,30 +579,6 @@ Adresa: %4 {1 &Receive &Prijať - - &Rebuild Block Chain - Vybudovať &reťaz - - - Rebuild Block Chain - Vybudovať reťaz2 - - - &Download Blocks - Stiahnuť reťaz - - - Download Blocks - Stiahnuť reťaz - - - &Upgrade Client - Aktualizovať - - - Upgrade Client - Aktualizovať - &About Gridcoin @@ -606,36 +590,12 @@ Adresa: %4 {1 Zobraziť informácie o Gridcoin - - &Neural Network - Neural Network - - - - Neural Network - Neural Network - - - &Advanced Configuration - Pokročilé nastavenia - - - Advanced Configuration - Pokročilé nastavenia - - - - &New User Wizard - Sprevodca nastavením - - - - + New User Wizard Sprevodca nastavením - + &Voting Hlasovanie @@ -645,15 +605,7 @@ Adresa: %4 {1 Hlasovanie - &Foundation - Nadácia - - - Foundation - Nadácia - - - + &Diagnostics Diagnostika @@ -662,14 +614,6 @@ Adresa: %4 {1 Diagnostics Diagnostika - - FA&Q - FA&Q - - - Interactive FAQ - Interaktívne FAQ - Modify configuration options for Gridcoin @@ -691,14 +635,14 @@ Adresa: %4 {1 - + [testnet] [testovacia sieť] - + Gridcoin client Gridcoin klient @@ -708,23 +652,7 @@ Adresa: %4 {1 %1 aktívne spojenie s Gridcoin sieťov - %1 second(s) ago - pred %1 sekundou - - - %1 minute(s) ago - pred %1 minútou - - - %1 hour(s) ago - pred %1 hodinou - - - %1 day(s) ago - pred %1 dňom - - - + Last received block was generated %1. Posledný prijatý blok bol vytvorený %1. @@ -769,18 +697,7 @@ Adresa: %4 {1 Pozor! - Chybná cesta k BOINCu! - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Dátum: %1 -Suma: %2 -Typ: %3 -Adresa: %4 - - - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. URI nemožno analyzovať! Toto môže byť spôsobené neplatnou Gridcoin adresu alebo chybnými URI parametrami. @@ -839,7 +756,7 @@ Adresa: %4 - + %n second(s) %n sekunda @@ -875,39 +792,7 @@ Adresa: %4 - Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. %4 - Stávkujem.<br>Vaša váha: %1<br>Váha siete: %2<br>Odmenu dostanete<b>odhadom</b> o %3. %4 - - - Not staking because wallet is locked - Nestávkujem pretože peňaženka je zamknutá - - - Not staking because wallet is offline - Nestávkujem pretože peňaženka je offline - - - Not staking because wallet is syncing - Nestávkujem pretože peňaženka sa synchronizuje - - - Not staking because you don't have mature coins and stake weight is too low. - Nestávkujem pretože nemáte odležané mince a vaša váha je príliš nízka - - - Not staking because you don't have mature coins - Nestávkujem pretože nemáte odležané mince - - - Searching for mature coins... Please wait - Hľadám odležané mince - - - Not staking - Nestávkujem - - - + &File &Súbor @@ -922,17 +807,12 @@ Adresa: %4 - - &Advanced - Pokročilé - - - + &Help &Pomoc - + Processed %n block(s) of transaction history. Spracovaných %n blok transakčnej histórie. @@ -946,12 +826,12 @@ Adresa: %4 Aktualizovaný - + Catching up... Sťahujem... - + Sent transaction Odoslané transakcie @@ -961,16 +841,12 @@ Adresa: %4 Prijatá transakcia - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Peňaženka je <b>zašifrovaná</b> a momentálne <b>odomknutá</b> - - - + Wallet is <b>encrypted</b> and currently <b>locked</b> Peňaženka je <b>zašifrovaná</b> a momentálne <b>zamknutá</b> - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. Došlo k závažnej chybe. Gridcoin už nemôže pokračovať bezpečne a bude ukončený. @@ -978,7 +854,7 @@ Adresa: %4 ClientModel - + Network Alert Výstraha siete @@ -1060,10 +936,6 @@ Adresa: %4 (un)select all (ne)vybrať všetko - - List mode - Zoznamový režim - Amount @@ -1443,7 +1315,7 @@ To znamená, že je potrebný poplatok aspoň %2. NewPollDialog - + Create Poll @@ -1656,10 +1528,6 @@ To znamená, že je potrebný poplatok aspoň %2. Map port using &UPnP Mapovať port pomocou &UPnP - - Proxy &IP: - Proxy &IP: - &Port: @@ -1893,6 +1761,14 @@ To znamená, že je potrebný poplatok aspoň %2. nesynchronizované + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1954,7 +1830,7 @@ To znamená, že je potrebný poplatok aspoň %2. RPCConsole - + @@ -1966,7 +1842,7 @@ To znamená, že je potrebný poplatok aspoň %2. - + N/A nie je k dispozícii @@ -2046,7 +1922,12 @@ To znamená, že je potrebný poplatok aspoň %2. Von: - + + &Scraper + + + + Debug log file Súbor záznamu ladenia @@ -2076,7 +1957,7 @@ To znamená, že je potrebný poplatok aspoň %2. Napíš <b>help</b> pre prehľad dostupných príkazov. - + %1 B %1 B @@ -2111,12 +1992,12 @@ To znamená, že je potrebný poplatok aspoň %2. - + Gridcoin - Debug Console - + Boost version @@ -2186,7 +2067,7 @@ To znamená, že je potrebný poplatok aspoň %2. Meno klienta - + Welcome to the Gridcoin RPC console! @@ -2453,22 +2334,22 @@ To znamená, že je potrebný poplatok aspoň %2. SendCoinsEntry - + A&mount: Su&ma: - + Pay &To: Zapla&tiť: - + &Label: &Popis: - + Alt+A Alt+A @@ -2509,22 +2390,17 @@ To znamená, že je potrebný poplatok aspoň %2. Odstráni? tohto príjemcu - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Form Formulár - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) Zadajte Gridcoin adresu (napr. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2766,22 +2642,47 @@ To znamená, že je potrebný poplatok aspoň %2. - + Source Zdroj - + Generated in CoinBase - - Generated, PoS + + MINED - POS - + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + TX ID @@ -2816,10 +2717,6 @@ To znamená, že je potrebný poplatok aspoň %2. Transaction Inputs - - Generated - Vygenerované - @@ -2858,10 +2755,6 @@ To znamená, že je potrebný poplatok aspoň %2. Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - Informácia - label @@ -2909,18 +2802,6 @@ To znamená, že je potrebný poplatok aspoň %2. Comment Komentár - - Transaction ID - ID transakcie - - - Transaction - Transakcia - - - Inputs - Vstupy - Amount @@ -2937,7 +2818,7 @@ To znamená, že je potrebný poplatok aspoň %2. nepravda - + Open for %n more block(s) Otvorená pre %n ďalší blok @@ -2959,12 +2840,7 @@ To znamená, že je potrebný poplatok aspoň %2. Táto časť obrazovky zobrazuje detailný popis transakcie - - View Attachment - - - - + Execute Contract @@ -2973,21 +2849,11 @@ To znamená, že je potrebný poplatok aspoň %2. C&lose Zatvoriť - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Dátum @@ -3031,32 +2897,12 @@ To znamená, že je potrebný poplatok aspoň %2. - - Mined - DPOR - - - - - Minted - (Local) DPOR - - - - - Mined - PoR - - - - - Mined - Interest - - - - + Destination address of transaction. Cie?ová adresa transakcie. - + Open until %1 Otvorené do %1 @@ -3086,7 +2932,7 @@ To znamená, že je potrebný poplatok aspoň %2. Vypo?ítané ale neakceptované - + Received with Prijaté s @@ -3106,12 +2952,42 @@ To znamená, že je potrebný poplatok aspoň %2. Platba sebe samému - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (n/a) - + Transaction status. Hover over this field to show number of confirmations. Status transakcie. Presu?te myš nad toto pole a zobrazí sa po?et potvrdení. @@ -3300,17 +3176,10 @@ To znamená, že je potrebný poplatok aspoň %2. do - - UpgradeDialog - - Hide - Skryť - - VotingChartDialog - + Poll Results @@ -3454,7 +3323,7 @@ To znamená, že je potrebný poplatok aspoň %2. VotingVoteDialog - + PlaceVote @@ -3487,7 +3356,7 @@ To znamená, že je potrebný poplatok aspoň %2. WalletModel - + Sending... Posielam... @@ -3495,12 +3364,12 @@ To znamená, že je potrebný poplatok aspoň %2. bitcoin-core - + Options: Možnosti: - + This help message Táto pomocná správa @@ -3535,12 +3404,12 @@ To znamená, že je potrebný poplatok aspoň %2. Ur?i? aut spojenia v milisekundách (predvolené: 5000) - + Connect through socks proxy Pripojenie cez SOCKS proxy - + Select the version of socks proxy to use (4-5, default: 5) Vyberte verziu SOCKS proxy pre používanie (4-5, predvolené: 5) @@ -3550,7 +3419,7 @@ To znamená, že je potrebný poplatok aspoň %2. Použi? proxy server k získaniu Tor skrytých služieb (predvolené: rovnaká ako -proxy) - + Listen for connections on <port> (default: 32749 or testnet: 32748) Po?úva? pripojenia na <port> (predvolené: 15714 alebo testovacia sie?: 25714) {32749 ?} {32748)?} @@ -3560,7 +3429,7 @@ To znamená, že je potrebný poplatok aspoň %2. Udržiava? maximálne <n> spojení (predvolené: 125) - + Connect only to the specified node(s) Pripoji? sa len k ur?enému uzlu(om) @@ -3570,26 +3439,22 @@ To znamená, že je potrebný poplatok aspoň %2. Pripojiť sa k uzlu, získať adresy ďalších počítačov v sieti a odpojiť sa - + Specify your own public address Určite vašu vlastnú verejnú adresu - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) Pripoji? len k uzlom siete <net> (IPv4, IPv6 alebo Tor) - + Discover own IP address (default: 1 when listening and no -externalip) Objavte vlastnú IP adresa (predvolené: 1 pri po?úvaní a nie -externalip) - Find peers using internet relay chat (default: 0) - Nájs? peerov pomocou Internet Relay Chat (predvolené: 1) {0)?} - - - + Accept connections from outside (default: 1 if no -proxy or -connect) Prijíma? pripojenie z vonka (predvolené: 1, ak nie -proxy alebo -connect) @@ -3599,26 +3464,22 @@ To znamená, že je potrebný poplatok aspoň %2. Spoji? do danej adresy. Použite [host]:port zápis pre IPv6 - + Find peers using DNS lookup (default: 1) Nájs? peerov pomocou vyh?adávania DNS (predvolené: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) Synchronizácia ?asu s ostatnými uzlami. Zakáza? ak ?as na vašom systéme je presný, napr synchronizáciu s NTP (predvolené: 1) - Sync checkpoints policy (default: strict) - Sync checkpoints policy (predvolené: strict) - - - + Threshold for disconnecting misbehaving peers (default: 100) Hranica pre odpojenie zle sa správajúcich peerov (predvolené: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Po?et sekúnd kedy sa zabráni zle sa správajúcim peerom znovupripojenie (predvolené: 86400) @@ -3713,6 +3574,16 @@ To znamená, že je potrebný poplatok aspoň %2. Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3773,6 +3644,11 @@ To znamená, že je potrebný poplatok aspoň %2. ERROR + + + Entire balance reserved + + Expires @@ -3838,11 +3714,6 @@ To znamená, že je potrebný poplatok aspoň %2. Message Správa - - - Messate Type - - Miner: @@ -3879,12 +3750,7 @@ To znamená, že je potrebný poplatok aspoň %2. - - No coins; - - - - + Offline; @@ -3894,12 +3760,7 @@ To znamená, že je potrebný poplatok aspoň %2. - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3979,12 +3840,12 @@ To znamená, že je potrebný poplatok aspoň %2. Skúsi? použi? UPnP pre mapovanie po?úvajúceho portu (default: 0) - + Fee per KB to add to transactions you send Poplatok za KB prida? do transakcií, ktoré odosielate - + When creating transactions, ignore inputs with value less than this (default: 0.01) Pri vytváraní transakcií, ignorova? vstupy s hodnotou nižšou než táto (predvolené: 0.01) @@ -3994,12 +3855,12 @@ To znamená, že je potrebný poplatok aspoň %2. Prijímať príkazy z príkazového riadku a JSON-RPC - + Use the test network Použi? testovaciu sie? - + Output extra debugging information. Implies all other -debug* options Výstupné ?alšie informácie o ladení. Znamená všetky -debug* možnosti @@ -4009,7 +3870,7 @@ To znamená, že je potrebný poplatok aspoň %2. Výstupné ?alšie sie?ové informácie o ladení - + Prepend debug output with timestamp Pred debug výstup s ?asovou pe?iatkou @@ -4019,7 +3880,7 @@ To znamená, že je potrebný poplatok aspoň %2. Posla? stopy/ladiace informácie do debuggera - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) Po?úvajte pre JSON-RPC spojenie na <port> (predvolené: 15715 alebo testovaciasie?: 25715) @@ -4029,7 +3890,7 @@ To znamená, že je potrebný poplatok aspoň %2. 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) @@ -4039,7 +3900,7 @@ To znamená, že je potrebný poplatok aspoň %2. Požadova? potvrdenie pre zmenu (predvolené: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) Presadzova? transak?né skripty k používaniu kanonických PUSH operátorov (predvolené: 1) @@ -4049,7 +3910,7 @@ To znamená, že je potrebný poplatok aspoň %2. Spusti? príkaz, ke? je prijaté príslušné upozornenie (%s v cmd je nahradený správou) - + Upgrade wallet to latest format Aktualizuj pe?aženku na najnovší formát. @@ -4064,7 +3925,7 @@ To znamená, že je potrebný poplatok aspoň %2. Znovu skenova? re?az blokov pre chýbajúce transakcie - + Attempt to recover private keys from a corrupt wallet.dat Pokus obnovi? súkromné k?ú?e z poškodeného wallet.dat @@ -4084,7 +3945,7 @@ To znamená, že je potrebný poplatok aspoň %2. - + Boinc Mining @@ -4094,7 +3955,7 @@ To znamená, že je potrebný poplatok aspoň %2. - + Error obtaining next project. Error 06172014. @@ -4144,12 +4005,32 @@ To znamená, že je potrebný poplatok aspoň %2. - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -4164,12 +4045,12 @@ To znamená, že je potrebný poplatok aspoň %2. Nastavte maximálnu ve?kos? bloku v bajtoch (predvolené: 250000) - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) Nastavte maximálnu ve?kos? high-priority/low-fee transakcií v bajtoch (predvolené: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) SSL možnos?: (pozrite Bitcoin Wiki pre návod na nastavenie SSL) @@ -4189,21 +4070,17 @@ To znamená, že je potrebný poplatok aspoň %2. Súkromný k?ú? servra (predvolené: server.pem) - Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - Akceptovate?né ciphers (predvolené: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - - - + Invalid amount for -paytxfee=<amount>: '%s' Neplatná suma pre -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. Upozornenie: -paytxfee je nastavené ve?mi vysoko. Toto sú transak?né poplatky ktoré zaplatíte ak odošlete transakciu. - + Invalid amount for -mininput=<amount>: '%s' Neplatná suma pre -mininput=<amount>: '%s' @@ -4213,22 +4090,22 @@ To znamená, že je potrebný poplatok aspoň %2. - + Wallet %s resides outside data directory %s. Pe?aženka %s bydlisko mimo dátový adresár %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. Nemožno získa? zámok na dátový adresár %s. Gridcoin už pravdepodobne beží. - + Verifying database integrity... Overenie integrity databázy ... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. Chyba pri inicializácii databázy prostredie %s! Ak chcete obnovi?, ZÁLOHUJTE TENTO ADRESÁR, potom všetko z neho odstránte okrem wallet.dat. @@ -4238,10 +4115,15 @@ To znamená, že je potrebný poplatok aspoň %2. Upozornenie: wallet.dat poškodený, údaje zachránené! Pôvodný wallet.dat bol uložený ako wallet.{timestamp}.bak v %s; ak váš zostatok alebo transakcie nie sú správne, mali by ste obnovi? zo zálohy. - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4258,17 +4140,17 @@ To znamená, že je potrebný poplatok aspoň %2. wallet.dat je poškodený, záchrana zlyhala - + Unknown -socks proxy version requested: %i Neznáma požadovaná SOCKS proxy verzia:% i - + Invalid -tor address: '%s' Neplatná -tor adresa: '%s' - + Cannot resolve -bind address: '%s' Nemožno rozloži? -bind adresu: '%s' @@ -4278,16 +4160,10 @@ To znamená, že je potrebný poplatok aspoň %2. Nemožno rozloži? -externalip adresu: '%s' - + Invalid amount for -reservebalance=<amount> Neplatná suma pre -reservebalance=<množstvo> - - Unable to sign checkpoint, wrong checkpointkey? - - Nemožno podpísa? kontrolný bod, zlý checkpointkey? - - Error loading blkindex.dat @@ -4299,22 +4175,22 @@ To znamená, že je potrebný poplatok aspoň %2. Chyba na?ítania wallet.dat: Pe?aženka je poškodená - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. Upozornenie: Chyba pri ?ítaní wallet.dat! Všetky k?ú?e na?ítané správne, ale transak?né dáta alebo položky adresára môže chýba? alebo by? nesprávne. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin Chyba pri na?ítaní wallet.dat: Pe?aženka vyžaduje novšiu verziu Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete Pe?aženka potrebuje by? prepísaná: reštartujte Gridcoin k dokon?eniu - + Error loading wallet.dat Chyba na?ítania wallet.dat @@ -4334,17 +4210,17 @@ To znamená, že je potrebný poplatok aspoň %2. Chyba: nemožno spusti? uzol - + Unable to bind to %s on this computer. Gridcoin is probably already running. Nemôžem sa pripoji? na %s na tomto po?íta?i. Gridcoin je pravdepodobne už beží. - + Unable to bind to %s on this computer (bind returned error %d, %s) Nemôžem sa pripoji? k %s na tomto po?íta?i (bind vrátil chybu %d, %s) - + Error: Wallet locked, unable to create transaction Chyba: Pe?aženka je zamknutá, nie je možné vytvori? transakciu @@ -4354,59 +4230,47 @@ To znamená, že je potrebný poplatok aspoň %2. Chyba: Pe?aženka odomknuté len pre stávkovanie, nemožné vytvori? transakciu. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds Chyba: Táto operácia vyžaduje transak?ný poplatok vo výške aspo? %s, pretože jeho množstvo, zložitos?, alebo použitím nedávno prijatých finan?ných prostriedkov - + Error: Transaction creation failed Chyba: Vytvorenie transakcie zlyhalo - + Sending... Posielam... - + 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. Chyba: Transakcia bola zamietnutá. To môže nasta?, ak niektoré z mincí vo vašej pe?aženke sa už použili, ako napríklad, ak ste použili kópiu wallet.dat a mince boli použité v kópii, ale neboli ozna?ené ako použité tu. - + Invalid amount Neplatná suma - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. Upozornenie: Skontrolujte, že dátum a ?as po?íta?a sú správne! Ak je Váš ?as nesprávny Gridcoin nebude pracova? správne. - Warning: This version is obsolete, upgrade required! - Upozornenie: Táto verzia je zastaraná, vyžaduje sa aktualizácia! - - - WARNING: synchronized checkpoint violation detected, but skipped! - UPOZORNENIE: detekovaný synchronizovaný porušený checkpoint, ale presko?ený! - - - + Warning: Disk space is low! Upozornenie: Nedostatok miesta na disku! - WARNING: Invalid checkpoint found! Displayed transactions may not be correct! You may need to upgrade, or notify developers. - UPOZORNENIE: Neplatný checkpoint nájdený! Uvedené transakcie nemusia by? správne! Možno budete musie? upgradova?, alebo upozorni? vývojárov. - - - + Run in the background as a daemon and accept commands Bežať na pozadí ako démon a prijímať príkazy - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) Vykonaj príkaz keď sa zmení transakcia peňaženky (%s v príkaze je nahradená TxID) @@ -4416,12 +4280,12 @@ To znamená, že je potrebný poplatok aspoň %2. Voľby vytvorenia bloku: - + Failed to listen on any port. Use -listen=0 if you want this. Chyba počúvania na ktoromkoľvek porte. Použi -listen=0 ak toto chcete. - + Specify wallet file (within data directory) Označ súbor peňaženky (v priečinku s dátami) @@ -4446,7 +4310,7 @@ To znamená, že je potrebný poplatok aspoň %2. Heslo pre JSON-rPC spojenia - + Execute command when the best block changes (%s in cmd is replaced by block hash) Vykonaj príkaz, ak zmeny v najlepšom bloku (%s v príkaze nahradí blok hash) @@ -4456,12 +4320,12 @@ To znamená, že je potrebný poplatok aspoň %2. Povoliť vyhľadávanie DNS pre pridanie nódy a spojenie - + To use the %s option Použi? %s možnos?. - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -4495,12 +4359,12 @@ If the file does not exist, create it with owner-readable-only file permissions. Ak súbor neexistuje, vytvorte ho s oprávnením pre ?ítanie len vlastníkom (owner-readable-only) - + Gridcoin version Gridcoin verzia - + Usage: Použitie: @@ -4510,7 +4374,7 @@ Ak súbor neexistuje, vytvorte ho s oprávnením pre ?ítanie len vlastníkom (o - + List commands Zoznam príkazov @@ -4535,12 +4399,12 @@ Ak súbor neexistuje, vytvorte ho s oprávnením pre ?ítanie len vlastníkom (o Neplatná adresa proxy: '%s' - + Unknown network specified in -onlynet: '%s' Neznáma sieť upresnená v -onlynet: '%s' - + Insufficient funds Nedostatok prostriedkov @@ -4550,17 +4414,17 @@ Ak súbor neexistuje, vytvorte ho s oprávnením pre ?ítanie len vlastníkom (o Načítavanie zoznamu blokov... - + Add a node to connect to and attempt to keep the connection open Pridať nód na pripojenie a pokus o udržanie pripojenia otvoreného - + Loading wallet... Načítavam peňaženku... - + Cannot downgrade wallet Nie je možné prejsť na nižšiu verziu peňaženky @@ -4570,17 +4434,17 @@ Ak súbor neexistuje, vytvorte ho s oprávnením pre ?ítanie len vlastníkom (o Nie je možné zapísať predvolenú adresu. - + Rescanning... Nové prehľadávanie... - + Done loading Dokončené načítavanie - + Error Chyba diff --git a/src/qt/locale/bitcoin_sl_SI.ts b/src/qt/locale/bitcoin_sl_SI.ts index 1045908d73..05d1fe3f0e 100644 --- a/src/qt/locale/bitcoin_sl_SI.ts +++ b/src/qt/locale/bitcoin_sl_SI.ts @@ -23,20 +23,6 @@ Distributed under the MIT/X11 software license, see the accompanying file COPYIN This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (https://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - - -This is experimental software. - -Distributed under the MIT/X11 software license, see the accompanying file COPYING 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. - -To je poizkusen softver. - -Distribuiran pod MIT/X11 softversko licenco, glej priloženo datoteko COPYING ali http://www.opensource.org/licenses/mit-license.php. - -Ta proizvod vklju?uje softver razvit s strani projekta OpenSSL za uporabo v OpenSSL Toolkit (http://www.openssl.org/) in kriptografski softver, ki ga je napisal Eric Young (eay@cryptsoft.com), ter UPnP softver, ki ga je napisal Thomas Bernard. - AddressBookPage @@ -313,12 +299,12 @@ Ta proizvod vklju?uje softver razvit s strani projekta OpenSSL za uporabo v Open BitcoinGUI - + Sign &message... Podpiši &sporočilo ... - + &Overview Pre&gled @@ -414,7 +400,7 @@ Ta proizvod vklju?uje softver razvit s strani projekta OpenSSL za uporabo v Open Ustavite program - + &Options... &Možnosti ... @@ -428,19 +414,11 @@ Ta proizvod vklju?uje softver razvit s strani projekta OpenSSL za uporabo v Open Encrypt or decrypt wallet Šifriraj ali dešifriraj denarnico - - &Backup Wallet... - Shrani &varnostno kopijo denarnice ... - &Change Passphrase... &Spremeni geslo ... - - Backup wallet to another location - Shranite varnostno kopijo svoje denarnice na drugo lokacijo - Change the passphrase used for wallet encryption @@ -492,7 +470,7 @@ Ta proizvod vklju?uje softver razvit s strani projekta OpenSSL za uporabo v Open &Preveri sporočilo ... - + Wallet Denarnica @@ -502,7 +480,7 @@ Ta proizvod vklju?uje softver razvit s strani projekta OpenSSL za uporabo v Open Gridcoin - + &Send &Pošlji @@ -522,28 +500,12 @@ Ta proizvod vklju?uje softver razvit s strani projekta OpenSSL za uporabo v Open Pokaži informacije o Gridcoin - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -553,7 +515,7 @@ Ta proizvod vklju?uje softver razvit s strani projekta OpenSSL za uporabo v Open - + &Diagnostics @@ -583,14 +545,14 @@ Ta proizvod vklju?uje softver razvit s strani projekta OpenSSL za uporabo v Open - + [testnet] [testnet] - + Gridcoin client Gridcoin program @@ -600,23 +562,7 @@ Ta proizvod vklju?uje softver razvit s strani projekta OpenSSL za uporabo v Open %1 aktivne povezave na Gridcoin omrežje - %1 second(s) ago - pred %1 sekundo - - - %1 minute(s) ago - Pred %1 minuto - - - %1 hour(s) ago - Pred %1 uro. - - - %1 day(s) ago - Pred %1 dnevom. - - - + Last received block was generated %1. Zadnji prejeti blok je bil ustvarjen %1. @@ -676,7 +622,7 @@ Naslov: %4 ?} {4?} - + Wallet is <b>encrypted</b> and currently %1 @@ -723,7 +669,7 @@ Naslov: %4 - + %n second(s) @@ -773,27 +719,37 @@ Naslov: %4 - Not staking because wallet is locked - Ne deležite ker je denarnica zakljenjena + + Scraper: waiting on wallet to sync. + - Not staking because wallet is offline - Ne deležite ker denarnica ni povezana + + Scraper: superblock not needed - inactive. + - Not staking because wallet is syncing - Ne deležite ker se denarnica sinhronizira z omrežjem + + Scraper: downloading and processing stats. + - Not staking because you don't have mature coins - Ne deležite ker nimate zrelih kovancev. + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + - Not staking - Ne deležite + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + - + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + &File &Datoteka @@ -808,17 +764,12 @@ Naslov: %4 - - &Advanced - - - - + &Help &Pomoč - + Processed %n block(s) of transaction history. %n obdelan blok zgodovine transakcij. @@ -873,12 +824,12 @@ Naslov: %4 Posodobljeno - + Catching up... Dohitevam omrežje ... - + Sent transaction Odlivi @@ -888,19 +839,7 @@ Naslov: %4 Prilivi - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Datum: %1 -Koli?ina: %2 -Vrsta: %3 -Naslov: %4 - - - - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. URI ne more biti raz?lenjen! To se lahko zgodi zaradi neveljavnega Gridcoin naslova ali slabih parametrov URI. @@ -911,17 +850,13 @@ Naslov: %4 URI handling Rokovanje z URI - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Denarnica je <b>šifrirana</b> in trenutno <b>odklenjena</b> - Wallet is <b>encrypted</b> and currently <b>locked</b> Denarnica je <b>šifrirana</b> in trenutno <b>zaklenjena</b> - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. Prišlo je do usodne napake. Program Gridcoin se ne more ve? varno nadaljevati in se bo zato zaprl. @@ -929,7 +864,7 @@ Naslov: %4 ClientModel - + Network Alert Omrežno Opozorilo @@ -1011,10 +946,6 @@ Naslov: %4 (un)select all izberi vse/nič - - List mode - Seznam - Amount @@ -1394,7 +1325,7 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". NewPollDialog - + Create Poll @@ -1607,10 +1538,6 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Map port using &UPnP Preslikaj vrata z uporabo &UPnP - - Proxy &IP: - Naslov &IP posredniškega strežnika: - &Port: @@ -1844,6 +1771,14 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". nesinhronizirano + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1905,7 +1840,7 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". RPCConsole - + @@ -1917,7 +1852,7 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". - + N/A Neznano @@ -1997,7 +1932,12 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Odhodnih: - + + &Scraper + + + + Debug log file Razhroščevalni dnevnik @@ -2027,7 +1967,7 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Vtipkajte <b>help</b> za pregled razpoložljivih ukazov. - + %1 B %1 B @@ -2062,12 +2002,12 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". - + Gridcoin - Debug Console - + Boost version @@ -2137,7 +2077,7 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Ime odjemalca - + Welcome to the Gridcoin RPC console! @@ -2404,22 +2344,22 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". SendCoinsEntry - + A&mount: &Znesek: - + Pay &To: Prejemnik &plačila: - + &Label: &Oznaka: - + Alt+A Alt+A @@ -2439,12 +2379,12 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Sporočilo: - + Form Oblika - + Enter a label for this address to add it to your address book Vnesite oznako za ta naslov, ki bo shranjena v imenik @@ -2465,17 +2405,12 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Odstrani tega prejemnika - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2728,26 +2663,47 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". - + Source Izvor - Generated - Generirano + + Generated in CoinBase + - - Generated in CoinBase + + MINED - POS - - Generated, PoS + + MINED - POR - + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From Pošiljatelj @@ -2863,27 +2819,11 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Transaction Inputs - - Transaction ID - ID transakcije - Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - Informacije - - - Transaction - Transakcija - - - Inputs - Vnosi - Amount @@ -2913,12 +2853,7 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". V tem podoknu so prikazane podrobnosti o transakciji - - View Attachment - - - - + Execute Contract @@ -2927,21 +2862,11 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". C&lose &Zapri - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Datum @@ -3016,7 +2941,7 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Generirano, toda ne sprejeto - + Received with Prejeto z @@ -3036,32 +2961,42 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Izpla?ilo sebi - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (ni na voljo) - + Transaction status. Hover over this field to show number of confirmations. Stanje transakcije. Zapeljite z miško ?ez to polje za prikaz števila potrdil. @@ -3255,17 +3190,10 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". za - - UpgradeDialog - - Hide - Skrij - - VotingChartDialog - + Poll Results @@ -3409,7 +3337,7 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". VotingVoteDialog - + PlaceVote @@ -3442,7 +3370,7 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". WalletModel - + Sending... Pošiljanje... @@ -3450,12 +3378,12 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". bitcoin-core - + Options: Možnosti: - + This help message To sporo?ilo pomo?i @@ -3485,12 +3413,12 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Dolo?i ?as pavze povezovanja v milisekundah (privzeto: 5000) - + Connect through socks proxy Poveži se skozi socks proxy - + Select the version of socks proxy to use (4-5, default: 5) Izberi verzijo socks proxya za uporabo (4-5, privzeto: 5) @@ -3500,7 +3428,7 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Uporabi proxy za povezavo s skritimi storitvami tora (privzeto: isto kot -proxy) - + Listen for connections on <port> (default: 32749 or testnet: 32748) Sprejmi povezave na <port> (privzeta vrata: 15714 ali testnet: 25714) {32749 ?} {32748)?} @@ -3510,7 +3438,7 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Obdrži maksimalno število <n> povezav (privzeto: 125) - + Connect only to the specified node(s) Poveži se samo na dolo?ena vozliš?e(a) @@ -3520,26 +3448,22 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Povežite se z vozliščem za pridobitev naslovov soležnikov in nato prekinite povezavo. - + Specify your own public address Določite vaš lasten javni naslov - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) Poveži se samo z vozliš?i v omrežju <net> (IPv4, IPv6 in Tor) - + Discover own IP address (default: 1 when listening and no -externalip) Odkrij svoj IP naslov (privzeto: 1 ob poslušanju, ko ni aktiviran -externalip) - Find peers using internet relay chat (default: 0) - Najdi soležnike prek irca (privzeto: 0) - - - + Accept connections from outside (default: 1 if no -proxy or -connect) Sprejmi zunanje povezave (privzeto: 1 ?e ni nastavljen -proxy ali -connect) @@ -3549,26 +3473,22 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Naveži na dani naslov. Uporabi [host]:port ukaz za IPv6 - + Find peers using DNS lookup (default: 1) Najdi soležnike z uporabno DNS vpogleda (privzeto: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) Sinhroniziraj ?as z drugimi vozliš?i. Onemogo?i, ?e je ?as na vašem sistemu to?no nastavljen, npr. sinhroniziranje z NTP (privzeto: 1) - Sync checkpoints policy (default: strict) - Sinhronizacija na?ina to?k preverjanja (privzeto: strogo) - - - + Threshold for disconnecting misbehaving peers (default: 100) Prag za prekinitev povezav s slabimi odjemalci (privzeto: 1000) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Število sekund preden se ponovno povežejo neodzivni soležniki (privzeto: 86400) @@ -3663,6 +3583,16 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3723,6 +3653,11 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". ERROR + + + Entire balance reserved + + Expires @@ -3788,11 +3723,6 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Message Sporo?ilo - - - Messate Type - - Miner: @@ -3829,12 +3759,7 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". - - No coins; - - - - + Offline; @@ -3844,12 +3769,7 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3929,12 +3849,12 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Uporabi UPnP za mapiranje vrat poslušanja (privzeto: 0) - + Fee per KB to add to transactions you send Provizija na KB ki jo morate dodati transakcijam, ki jih pošiljate - + When creating transactions, ignore inputs with value less than this (default: 0.01) Ob ustvarjanju transakcij, prezri vnose z manjšo vrednostjo kot (privzeto: 0.01) @@ -3944,7 +3864,7 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Sprejemaj ukaze iz ukazne vrstice in preko JSON-RPC - + Run in the background as a daemon and accept commands Teci v ozadju in sprejemaj ukaze @@ -3954,7 +3874,7 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Uporabi testno omrežje - + Output extra debugging information. Implies all other -debug* options Output dodatnih informacij razhroš?evanja. Obsega vse druge -debug* možnosti. @@ -3964,7 +3884,7 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Output dodatnih informacij razhroš?evanja omrežja. - + Prepend debug output with timestamp Opremi output rahroš?evanja s ?asovnim žigom. @@ -3974,7 +3894,7 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Pošlji sledilne/razhroš?evalne informacije v razhroš?evalnik - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) Sprejmi povezave na <port> (privzeta vrata: 15714 ali testnet: 25714) @@ -3984,7 +3904,7 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Dovoli JSON-RPC povezave z dolo?enega IP naslova - + Send commands to node running on <ip> (default: 127.0.0.1) Pošlji ukaze vozliš?u na <ip> (privzet: 127.0.0.1) @@ -3994,7 +3914,7 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Zahtevaj potrditve za spremembo (default: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) Zahtevaj da transakcijske skripte uporabljajo operatorje canonical PUSH (privzeto: 1) @@ -4004,7 +3924,7 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Izvrši ukaz, ko je prejet relevanten alarm (%s je v cmd programu nadomeš?en s sporo?ilom) - + Upgrade wallet to latest format Posodobi denarnico v najnovejši zapis @@ -4019,7 +3939,7 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Ponovno preglej verigo blokov za manjkajo?e transakcije denarnice - + Attempt to recover private keys from a corrupt wallet.dat Poizkusi rešiti zasebni klju? iz pokvarjene wallet.dat @@ -4039,7 +3959,7 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". - + Boinc Mining @@ -4049,7 +3969,7 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". - + Error obtaining next project. Error 06172014. @@ -4099,12 +4019,32 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -4119,12 +4059,12 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Nastavi najve?jo velikost bloka v bajtih (privzeto: 250000) - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) Nastavi maksimalno velikost visoke-prioritete/nizke-provizije transakcij v bajtih (privzeto: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) SSL možnosti: (glejte Bitcoin Wiki za navodla, kako nastaviti SSL) @@ -4144,21 +4084,17 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Zasebni klju? strežnika (privzet: server.pem) - Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - Dovoljeni kodirniki (privzeti: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - - - + Invalid amount for -paytxfee=<amount>: '%s' Neveljavni znesek za -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. Opozorilo: -paytxfee je nastavljen zelo visoko! To je transakcijska provizija, ki jo boste pla?ali ob pošiljanju transakcije. - + Invalid amount for -mininput=<amount>: '%s' Neveljavni znesek za -miniput=<amount>: '%s' @@ -4168,22 +4104,22 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". - + Wallet %s resides outside data directory %s. Denarnica %s se nahaja zunaj datote?nega imenika %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. Ni bilo mogo?e najti podatkovnega imenika %s. Aplikacija Gridcoin je verjetno že zagnana. - + Verifying database integrity... Potrdite neopore?nost baze podatkov... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. Napaka pri zagonu podatkovne baze okolja %s! Za popravilo, NAPRAVITE VARNOSTNO KOPIJO IMENIKA, in iz njega odstranite vse razen datoteke wallet.dat @@ -4193,10 +4129,15 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Opozorilo: wallet.dat je pokvarjena, podatki rešeni! Originalna wallet.dat je bila shranjena kot denarnica. {timestamp}.bak v %s; ?e imate napa?no prikazano stanje na ra?unu ali v transakcijah prenovite datoteko z varnostno kopijo. - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4213,17 +4154,17 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". wallet.dat poškodovana, neuspešna obnova - + Unknown -socks proxy version requested: %i Zahtevana neznana -socks proxy razli?ica: %i - + Invalid -tor address: '%s' Neveljaven -tor naslov: '%s' - + Cannot resolve -bind address: '%s' Ni mogo?e dolo?iti -bind naslova: '%s' @@ -4233,16 +4174,10 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Ni mogo?e dolo?iti -externalip naslova: '%s' - + Invalid amount for -reservebalance=<amount> Neveljavni znesek za -reservebalance=<amount> - - Unable to sign checkpoint, wrong checkpointkey? - - Ni bilo mogo?e vpisati to?ke preverjanja, napa?en klju? za to?ko preverjanja? - - Error loading blkindex.dat @@ -4254,22 +4189,22 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Napaka pri nalaganju wallet.dat: denarnica pokvarjena - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. Opozorilo: napaka pri branju wallet.dat! Vsi klju?i so bili pravilno prebrani, podatki o transakciji ali imenik vnešenih naslovov so morda izgubljeni ali nepravilni. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin Napaka pri nalaganju wallet.dat: denarnica zahteva novejšo verzijo Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete Denarnica mora biti prepisana: ponovno odprite Gridcoin za dokon?anje - + Error loading wallet.dat Napaka pri nalaganju wallet.dat @@ -4289,17 +4224,17 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Napaka: ni mogo?e zagnati vozliš?a - + Unable to bind to %s on this computer. Gridcoin is probably already running. Navezava v %s na tem ra?unalniku ni mogo?a Gridcoin aplikacija je verjetno že zagnana. - + Unable to bind to %s on this computer (bind returned error %d, %s) Na tem ra?unalniku je bilo nemogo?e vezati na %s (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction Napaka: Zaklenjena denarnica, ni mogo?e opraviti transakcije @@ -4309,54 +4244,42 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds Napaka: Ta transakcija zahteva transakcijsko provizijo vsaj %s zaradi svoje koli?ine, kompleksnosti ali uporabo sredstev, ki ste jih prejeli pred kratkim. - + Error: Transaction creation failed Napaka: Ustvarjanje transakcije spodletelo - + Sending... Pošiljanje... - + 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. Napaka: Transakcija je bila zavrnjena. To se je lahko zgodilo, ?e so bili kovanci v vaši denarnici že zapravljeni, na primer ?e ste uporabili kopijo wallet.dat in so bili kovanci zapravljeni v kopiji, a tu še niso bili ozna?eni kot zapravljeni. - + Invalid amount Neveljavna koli?ina - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. Opozorilo: Prosimo preverite svoj datum in ?as svojega ra?unalnika! ?e je vaša ura nastavljena napa?no Gridcoin ne bo deloval. - Warning: This version is obsolete, upgrade required! - Opozorilo: ta razli?ica je zastarela, potrebna je nadgradnja! - - - WARNING: synchronized checkpoint violation detected, but skipped! - OPOZORILO: zaznana je bila kršitev s sinhronizirami to?kami preverjanja, a je bila izpuš?ena. - - - + Warning: Disk space is low! Opozorilo: Malo prostora na disku! - WARNING: Invalid checkpoint found! Displayed transactions may not be correct! You may need to upgrade, or notify developers. - OPOZORILO: Najdene so bile neveljavne to?ke preverjanja! Prikazane transakcije so morda napa?ne! Poiš?ite novo razli?ico aplikacije ali pa obvestite razvijalce. - - - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) Izvedi ukaz, ko bo transakcija denarnice se spremenila (V cmd je bil TxID zamenjan za %s) @@ -4366,12 +4289,12 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Možnosti ustvarjanja blokov: - + Failed to listen on any port. Use -listen=0 if you want this. Ni mogoče poslušati na nobenih vratih. Če to zares želite, uporabite opcijo -listen=0. - + Specify configuration file (default: gridcoinresearch.conf) @@ -4401,7 +4324,7 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Geslo za povezave na JSON-RPC - + Execute command when the best block changes (%s in cmd is replaced by block hash) Izvedi ukaz, ko je najden najboljši blok (niz %s v ukazu bo zamenjan s hash vrednostjo bloka) @@ -4411,12 +4334,12 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". Omogoči poizvedbe DNS za opcije -addnode, -seednode in -connect. - + To use the %s option Za uporabo %s opcije - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -4450,12 +4373,12 @@ If the file does not exist, create it with owner-readable-only file permissions. ?e datoteka ne obstaja, jo ustvarite z lastniškimi dovoljenji za datoteke. - + Gridcoin version Gridcoin razli?ica - + Usage: Uporaba: @@ -4465,7 +4388,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + List commands Prikaži ukaze @@ -4490,12 +4413,12 @@ If the file does not exist, create it with owner-readable-only file permissions. Neveljaven naslov -proxy: '%s' - + Unknown network specified in -onlynet: '%s' Neznano omrežje določeno v -onlynet: '%s'. - + Insufficient funds Premalo sredstev @@ -4505,17 +4428,17 @@ If the file does not exist, create it with owner-readable-only file permissions. Nalagam kazalo blokov ... - + Add a node to connect to and attempt to keep the connection open Dodaj povezavo na vozlišče in jo skušaj držati odprto - + Loading wallet... Nalagam denarnico ... - + Cannot downgrade wallet Ne morem @@ -4525,17 +4448,17 @@ If the file does not exist, create it with owner-readable-only file permissions. Ni mogoče zapisati privzetega naslova - + Rescanning... Ponovno pregledujem verigo ... - + Done loading Nalaganje končano - + Error Napaka diff --git a/src/qt/locale/bitcoin_sq.ts b/src/qt/locale/bitcoin_sq.ts index ae916a5b00..317612b054 100644 --- a/src/qt/locale/bitcoin_sq.ts +++ b/src/qt/locale/bitcoin_sq.ts @@ -299,7 +299,7 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + &Overview &Përmbledhje @@ -405,28 +405,42 @@ This product includes software developed by the OpenSSL Project for use in the O - - &Neural Network + + Scraper: waiting on wallet to sync. - - Neural Network + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. - &New User Wizard + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. - - + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + New User Wizard - + &Voting @@ -436,7 +450,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Diagnostics @@ -521,24 +535,19 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Community - - &Advanced - - - - + [testnet] [testo rrjetin] - + Gridcoin client @@ -556,7 +565,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Last received block was generated %1. @@ -609,7 +618,7 @@ Address: %4 - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -619,13 +628,13 @@ Address: %4 - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. - + %n second(s) ago @@ -657,7 +666,7 @@ Address: %4 - + URI handling @@ -710,7 +719,7 @@ Address: %4 - + %n second(s) @@ -742,12 +751,12 @@ Address: %4 - + Change the passphrase used for wallet encryption Ndrysho frazkalimin e përdorur per enkriptimin e portofolit - + Wallet Portofol @@ -757,7 +766,7 @@ Address: %4 - + &Send &Dergo @@ -767,7 +776,7 @@ Address: %4 &Merr - + &Show / Hide &Shfaq / Fsheh @@ -782,7 +791,7 @@ Address: %4 - + &File &Skedar @@ -792,22 +801,22 @@ Address: %4 &Konfigurimet - + &Help &Ndihmë - + Up to date I azhornuar - + Catching up... Duke u azhornuar... - + Sent transaction Dërgo transaksionin @@ -817,16 +826,12 @@ Address: %4 Transaksion në ardhje - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Portofoli po <b> enkriptohet</b> dhe është <b> i ç'kyçur</b> - - - + Wallet is <b>encrypted</b> and currently <b>locked</b> Portofoli po <b> enkriptohet</b> dhe është <b> i kyçur</b> - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. @@ -834,7 +839,7 @@ Address: %4 ClientModel - + Network Alert @@ -1281,7 +1286,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1727,6 +1732,14 @@ This label turns red, if the priority is smaller than "medium". + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1793,7 +1806,7 @@ This label turns red, if the priority is smaller than "medium". - + &Information Informacion @@ -1815,7 +1828,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A @@ -1964,6 +1977,11 @@ This label turns red, if the priority is smaller than "medium". Clear console + + + &Scraper + + Yes @@ -1990,7 +2008,7 @@ This label turns red, if the priority is smaller than "medium". - + %1 B @@ -2287,22 +2305,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: Sh&uma: - + Pay &To: Paguaj &drejt: - + &Label: &Etiketë: - + Alt+A Alt+A @@ -2323,12 +2341,12 @@ This label turns red, if the priority is smaller than "medium". Krijoni një etiketë për këtë adresë që t'ja shtoni librit të adresave - + Form Formilarë - + The address to send the payment to (e.g. Sjz75uKHzUQJnSdzvpiigEGxseKkDhQToX) @@ -2348,17 +2366,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2589,12 +2602,42 @@ This label turns red, if the priority is smaller than "medium". - + Source - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From @@ -2708,10 +2751,6 @@ This label turns red, if the priority is smaller than "medium". Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - Informacion - true @@ -2723,7 +2762,7 @@ This label turns red, if the priority is smaller than "medium". - + , has not been successfully broadcast yet , nuk është transmetuar me sukses deri tani @@ -2746,19 +2785,10 @@ This label turns red, if the priority is smaller than "medium". - - Generated, PoS - - - - + unknown i/e panjohur - - Transaction - transaksionit - Amount @@ -2778,12 +2808,7 @@ This label turns red, if the priority is smaller than "medium". Ky panel tregon një përshkrim të detajuar të transaksionit - - View Attachment - - - - + Execute Contract @@ -2792,21 +2817,11 @@ This label turns red, if the priority is smaller than "medium". C&lose - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Data @@ -2864,32 +2879,12 @@ This label turns red, if the priority is smaller than "medium". - + Received from - - Mined - DPOR - - - - - Minted - (Local) DPOR - - - - - Mined - PoR - - - - - Mined - Interest - - - - + Transaction status. Hover over this field to show number of confirmations. @@ -2914,7 +2909,7 @@ This label turns red, if the priority is smaller than "medium". - + Open until %1 Hapur deri më %1 @@ -2929,7 +2924,7 @@ This label turns red, if the priority is smaller than "medium". I krijuar por i papranuar - + Received with Marrë me @@ -2944,7 +2939,37 @@ This label turns red, if the priority is smaller than "medium". Pagesë ndaj vetvetes - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (p/a) @@ -3121,7 +3146,7 @@ This label turns red, if the priority is smaller than "medium". VotingChartDialog - + Poll Results @@ -3265,7 +3290,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3298,7 +3323,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3306,7 +3331,7 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: Opsionet: @@ -3316,22 +3341,22 @@ This label turns red, if the priority is smaller than "medium". Fonde te pamjaftueshme - + Rescanning... Rikerkim - + Error Problem - + To use the %s option - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -3453,6 +3478,16 @@ If the file does not exist, create it with owner-readable-only file permissions. Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3513,6 +3548,11 @@ If the file does not exist, create it with owner-readable-only file permissions. ERROR + + + Entire balance reserved + + Expires @@ -3578,11 +3618,6 @@ If the file does not exist, create it with owner-readable-only file permissions. Message - - - Messate Type - - Miner: @@ -3624,12 +3659,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - No coins; - - - - + Offline; @@ -3639,12 +3669,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - Out of rance exception while parsing Transaction Message -> - - - - + Please wait for new user wizard to start... @@ -3734,7 +3759,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + List commands @@ -3749,7 +3774,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + This help message @@ -3784,12 +3809,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3799,12 +3824,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Allow DNS lookups for -addnode, -seednode and -connect - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3814,12 +3839,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Add a node to connect to and attempt to keep the connection open - + Connect only to the specified node(s) @@ -3829,22 +3854,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Specify your own public address - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -3854,27 +3879,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + 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: 5000) @@ -3884,7 +3909,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Use UPnP to map the listening port (default: 1 when listening) @@ -3894,12 +3919,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) @@ -3909,7 +3934,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Run in the background as a daemon and accept commands @@ -3919,7 +3944,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Output extra debugging information. Implies all other -debug* options @@ -3929,7 +3954,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Prepend debug output with timestamp @@ -3959,7 +3984,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -3969,12 +3994,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Send commands to node running on <ip> (default: 127.0.0.1) - + Execute command when the best block changes (%s in cmd is replaced by block hash) @@ -3984,12 +4009,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Require a confirmations for change (default: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -3999,7 +4024,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Upgrade wallet to latest format @@ -4014,12 +4039,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Attempt to recover private keys from a corrupt wallet.dat - + How many blocks to check at startup (default: 2500, 0 = all) @@ -4034,12 +4059,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Block creation options: - + Set minimum block size in bytes (default: 0) @@ -4049,12 +4074,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -4074,17 +4099,17 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid amount for -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - + Invalid amount for -mininput=<amount>: '%s' @@ -4094,22 +4119,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4119,7 +4144,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Weight @@ -4129,7 +4154,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Unknown -socks proxy version requested: %i @@ -4139,7 +4164,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid -proxy address: '%s' @@ -4149,22 +4174,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Cannot resolve -bind address: '%s' - + Failed to listen on any port. Use -listen=0 if you want this. - + Cannot resolve -externalip address: '%s' - + Invalid amount for -reservebalance=<amount> @@ -4189,20 +4214,45 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4214,12 +4264,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error loading wallet.dat - + Acceptable ciphers (default: TLSv1.2+HIGH:TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!3DES:@STRENGTH) @@ -4234,7 +4284,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Boinc Mining @@ -4254,7 +4304,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error obtaining next project. Error 06172014. @@ -4304,22 +4354,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Done loading - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4329,37 +4379,37 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - + Warning: Disk space is low! diff --git a/src/qt/locale/bitcoin_sr.ts b/src/qt/locale/bitcoin_sr.ts index 6adee063e9..6d1cf521e2 100644 --- a/src/qt/locale/bitcoin_sr.ts +++ b/src/qt/locale/bitcoin_sr.ts @@ -299,7 +299,7 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + &Overview &Општи преглед @@ -410,28 +410,42 @@ This product includes software developed by the OpenSSL Project for use in the O - - &Neural Network + + Scraper: waiting on wallet to sync. - - Neural Network + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. - &New User Wizard + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. - - + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + New User Wizard - + &Voting @@ -441,7 +455,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Diagnostics @@ -516,24 +530,19 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Community - - &Advanced - - - - + [testnet] [testnet] - + Gridcoin client @@ -552,7 +561,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Last received block was generated %1. @@ -605,7 +614,7 @@ Address: %4 - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -615,13 +624,13 @@ Address: %4 - + URI handling - + %n second(s) ago @@ -657,7 +666,7 @@ Address: %4 - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. @@ -710,7 +719,7 @@ Address: %4 - + %n second(s) @@ -746,7 +755,7 @@ Address: %4 - + &Options... П&оставке... @@ -755,10 +764,6 @@ Address: %4 &Encrypt Wallet... &Шифровање новчаника... - - &Backup Wallet... - &Backup новчаника - &Change Passphrase... @@ -770,7 +775,7 @@ Address: %4 Мењање лозинке којом се шифрује новчаник - + Wallet новчаник @@ -780,12 +785,12 @@ Address: %4 - + &Send &Пошаљи - + &Backup Wallet/Config... @@ -795,7 +800,7 @@ Address: %4 - + &File &Фајл @@ -805,22 +810,22 @@ Address: %4 &Подешавања - + &Help П&омоћ - + Up to date Ажурно - + Catching up... Ажурирање у току... - + Sent transaction Послана трансакција @@ -830,16 +835,12 @@ 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 occurred. Gridcoin can no longer continue safely and will quit. @@ -847,7 +848,7 @@ Address: %4 ClientModel - + Network Alert @@ -1294,7 +1295,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1740,6 +1741,14 @@ This label turns red, if the priority is smaller than "medium". + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1806,7 +1815,7 @@ This label turns red, if the priority is smaller than "medium". - + &Information @@ -1828,7 +1837,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A @@ -1977,6 +1986,11 @@ This label turns red, if the priority is smaller than "medium". Clear console + + + &Scraper + + Yes @@ -2003,7 +2017,7 @@ This label turns red, if the priority is smaller than "medium". - + %1 B @@ -2300,17 +2314,17 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: Iznos: - + &Label: &Етикета - + Alt+A Alt+ @@ -2325,12 +2339,12 @@ This label turns red, if the priority is smaller than "medium". Poruka: - + Form Форма - + Enter a label for this address to add it to your address book @@ -2361,17 +2375,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2622,22 +2631,17 @@ This label turns red, if the priority is smaller than "medium". - + Source - + Generated in CoinBase - - Generated, PoS - - - - + From @@ -2758,7 +2762,37 @@ This label turns red, if the priority is smaller than "medium". - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + Amount iznos @@ -2786,12 +2820,7 @@ This label turns red, if the priority is smaller than "medium". Ovaj odeljak pokazuje detaljan opis transakcije - - View Attachment - - - - + Execute Contract @@ -2800,21 +2829,11 @@ This label turns red, if the priority is smaller than "medium". C&lose Zatvorite - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date datum @@ -2888,7 +2907,7 @@ This label turns red, if the priority is smaller than "medium". - + Received with @@ -2908,32 +2927,42 @@ This label turns red, if the priority is smaller than "medium". - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) - + Transaction status. Hover over this field to show number of confirmations. @@ -3130,7 +3159,7 @@ This label turns red, if the priority is smaller than "medium". VotingChartDialog - + Poll Results @@ -3274,7 +3303,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3307,7 +3336,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3315,22 +3344,22 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: Opcije - + Specify data directory Gde je konkretni data direktorijum - + Accept command line and JSON-RPC commands Prihvati komandnu liniju i JSON-RPC komande - + Run in the background as a daemon and accept commands Radi u pozadini kao daemon servis i prihvati komande @@ -3345,22 +3374,22 @@ This label turns red, if the priority is smaller than "medium". Lozinka za JSON-RPC konekcije - + Loading addresses... učitavam adrese.... - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -3370,27 +3399,27 @@ This label turns red, if the priority is smaller than "medium". - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount @@ -3405,12 +3434,12 @@ This label turns red, if the priority is smaller than "medium". Učitavam blok indeksa... - + To use the %s option - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -3457,7 +3486,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Boinc Mining @@ -3467,7 +3496,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error obtaining next project. Error 06172014. @@ -3507,12 +3536,32 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -3572,7 +3621,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + List commands @@ -3587,7 +3636,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + This help message @@ -3617,12 +3666,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3632,12 +3681,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Allow DNS lookups for -addnode, -seednode and -connect - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3647,7 +3696,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Add a node to connect to and attempt to keep the connection open @@ -3742,6 +3791,16 @@ If the file does not exist, create it with owner-readable-only file permissions. Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3812,6 +3871,11 @@ If the file does not exist, create it with owner-readable-only file permissions. ERROR + + + Entire balance reserved + + Expires @@ -3867,11 +3931,6 @@ If the file does not exist, create it with owner-readable-only file permissions. Message - - - Messate Type - - Miner: @@ -3908,12 +3967,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - No coins; - - - - + Offline; @@ -3923,12 +3977,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3963,17 +4012,17 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -3983,27 +4032,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + 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: 5000) @@ -4013,7 +4062,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Use UPnP to map the listening port (default: 1 when listening) @@ -4023,22 +4072,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) - + Use the test network - + Output extra debugging information. Implies all other -debug* options @@ -4048,7 +4097,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Prepend debug output with timestamp @@ -4068,7 +4117,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -4078,12 +4127,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Send commands to node running on <ip> (default: 127.0.0.1) - + Execute command when the best block changes (%s in cmd is replaced by block hash) @@ -4093,12 +4142,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Require a confirmations for change (default: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -4108,7 +4157,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Upgrade wallet to latest format @@ -4123,12 +4172,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Attempt to recover private keys from a corrupt wallet.dat - + How many blocks to check at startup (default: 2500, 0 = all) @@ -4143,12 +4192,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Block creation options: - + Set minimum block size in bytes (default: 0) @@ -4158,12 +4207,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -4183,17 +4232,17 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid amount for -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - + Invalid amount for -mininput=<amount>: '%s' @@ -4203,22 +4252,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4228,7 +4277,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Weight @@ -4238,7 +4287,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Unknown -socks proxy version requested: %i @@ -4248,7 +4297,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid -proxy address: '%s' @@ -4258,22 +4307,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Cannot resolve -bind address: '%s' - + Failed to listen on any port. Use -listen=0 if you want this. - + Cannot resolve -externalip address: '%s' - + Invalid amount for -reservebalance=<amount> @@ -4293,20 +4342,25 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4318,12 +4372,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error loading wallet.dat - + Cannot downgrade wallet @@ -4333,12 +4387,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Rescanning... Ponovo skeniram... - + Importing blockchain data file. @@ -4353,22 +4407,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Done loading Završeno učitavanje - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - + Warning: Disk space is low! - + Error Greška diff --git a/src/qt/locale/bitcoin_sv.ts b/src/qt/locale/bitcoin_sv.ts index 983ed2198a..293568b8e1 100644 --- a/src/qt/locale/bitcoin_sv.ts +++ b/src/qt/locale/bitcoin_sv.ts @@ -23,21 +23,6 @@ Distributed under the MIT/X11 software license, see the accompanying file COPYIN This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (https://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - - -This is experimental software. - -Distributed under the MIT/X11 software license, see the accompanying file COPYING 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. - -Detta är experimentell mjukvara. - - -Distribuerad under mjukvarulicensen MIT/X11, se den medföljande filen COPYING eller http://www.opensource.org/licenses/mit-license.php. - -Denna produkten innehåller mjukvara utvecklad av OpenSSL Project för användning i OpenSSL Toolkit (http://www.openssl.org/) och kryptografisk mjukvara utvecklad av Eric Young (eay@cryptsoft.com) samt UPnP-mjukvara skriven av Thomas Bernard. - AddressBookPage @@ -314,12 +299,12 @@ Denna produkten innehåller mjukvara utvecklad av OpenSSL Project för användni BitcoinGUI - + Sign &message... Signera &meddelande... - + &Overview &Översikt @@ -415,7 +400,7 @@ Denna produkten innehåller mjukvara utvecklad av OpenSSL Project för användni Avsluta programmet - + &Options... &Alternativ... @@ -430,7 +415,7 @@ Denna produkten innehåller mjukvara utvecklad av OpenSSL Project för användni Kryptera eller avkryptera plånbok - + %n second(s) ago %n sekund sen @@ -462,7 +447,7 @@ Denna produkten innehåller mjukvara utvecklad av OpenSSL Project för användni - + Date: %1 Amount: %2 Type: %3 @@ -477,7 +462,7 @@ Adress: %4 ?} {4?} - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -487,17 +472,39 @@ Adress: %4 - &Backup Wallet... - &Säkerhetskopiera plånbok... + + Scraper: waiting on wallet to sync. + - - &Change Passphrase... - &Byt lösenord... + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + - Backup wallet to another location - Säkerhetskopiera plånboken till en annan plats + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + + &Change Passphrase... + &Byt lösenord... @@ -550,7 +557,7 @@ Adress: %4 &Verifiera meddelande... - + Wallet Plånbok @@ -560,7 +567,7 @@ Adress: %4 Gridcoin - + &Send &Skicka @@ -569,30 +576,6 @@ Adress: %4 &Receive &Ta emot - - &Rebuild Block Chain - &Bygg om Blockkedjan - - - Rebuild Block Chain - Bygg om Blockkedjan - - - &Download Blocks - &Ladda Hem Block - - - Download Blocks - Ladda Hem Block - - - &Upgrade Client - &Uppgradera Klienten - - - Upgrade Client - Uppgradera Klienten - &About Gridcoin @@ -604,36 +587,12 @@ Adress: %4 Visa information om Gridcoin - - &Neural Network - &Neuronnät - - - - Neural Network - Neuronnät - - - &Advanced Configuration - &Avancerade Inställningar - - - Advanced Configuration - Avancerade Inställningar - - - - &New User Wizard - &Användarguide - - - - + New User Wizard Användarguide - + &Voting &Röstning @@ -643,15 +602,7 @@ Adress: %4 Röstning - &Foundation - &Stiftelse - - - Foundation - Stiftelse - - - + &Diagnostics &Diagnostik @@ -660,14 +611,6 @@ Adress: %4 Diagnostics Diagnostik - - FA&Q - FA&Q - - - Interactive FAQ - Interaktiv FAQ - Modify configuration options for Gridcoin @@ -689,14 +632,14 @@ Adress: %4 - + [testnet] [testnet] - + Gridcoin client Gridcoin klient @@ -706,23 +649,7 @@ Adress: %4 %1 aktiv anslutning till Gridcoin nätverket - %1 second(s) ago - %1 sekund sen - - - %1 minute(s) ago - %1 minut sen - - - %1 hour(s) ago - %1 timme sen - - - %1 day(s) ago - %1 dag sen - - - + Last received block was generated %1. Senaste mottagna block genererades %1. @@ -767,19 +694,7 @@ Adress: %4 Obs! Fel på BOINC-sökväg! - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Datum: %1 -Belopp: %2 -Typ: %3 -Adress: %4 - - - - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. URI:n kan inte tolkas! Detta kan bero på en ogiltig Gridcoin adress eller felaktiga URI parametrar. @@ -838,7 +753,7 @@ Adress: %4 - + %n second(s) %n sekund @@ -870,31 +785,7 @@ Adress: %4 - Not staking because wallet is locked - Ingen staking för att plånboken är låst - - - Not staking because wallet is offline - Ingen staking för att plånboken är offline - - - Not staking because wallet is syncing - Ingen staking för att plånboken synkroniseras - - - Not staking because you don't have mature coins - Ingen staking för att dina coins är ännu inte föråldrade - - - Searching for mature coins... Please wait - Söker efter mogna mynt... Var god vänta - - - Not staking - Ingen staking - - - + &File &Arkiv @@ -910,17 +801,12 @@ Adress: %4 &Community - - &Advanced - &Avancerat - - - + &Help &Hjälp - + Processed %n block(s) of transaction history. Bearbetade %n block av transaktionshistoriken. @@ -933,12 +819,12 @@ Adress: %4 Uppdaterad - + Catching up... Hämtar senaste... - + Sent transaction Transaktion skickad @@ -948,16 +834,12 @@ Adress: %4 Inkommande transaktion - 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> - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. Ett fatalt fel uppstod. Gridcoin kan inte fortsätta och stänger programmet. @@ -965,7 +847,7 @@ Adress: %4 ClientModel - + Network Alert Nätverkslarm @@ -1047,10 +929,6 @@ Adress: %4 (un)select all (av)markera allt - - List mode - Listvy - Amount @@ -1430,7 +1308,7 @@ Detta betyder att en avgift på minst %2 krävs. NewPollDialog - + Create Poll Skapa Omröstning @@ -1643,10 +1521,6 @@ Detta betyder att en avgift på minst %2 krävs. Map port using &UPnP Tilldela port med hjälp av &UPnP - - Proxy &IP: - Proxy-&IP: - &Port: @@ -1813,10 +1687,6 @@ Detta betyder att en avgift på minst %2 krävs. Error Messages: - - DPOR Weight: - DPOR-vikt: - Magnitude: @@ -1842,10 +1712,6 @@ Detta betyder att en avgift på minst %2 krävs. Current Poll: Aktuell omröstning: - - Client Messages: - Klientmeddelanden: - Available: @@ -1888,6 +1754,14 @@ Detta betyder att en avgift på minst %2 krävs. osynkroniserad + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1949,7 +1823,7 @@ Detta betyder att en avgift på minst %2 krävs. RPCConsole - + @@ -1961,7 +1835,7 @@ Detta betyder att en avgift på minst %2 krävs. - + N/A ej tillgänglig @@ -2041,7 +1915,12 @@ Detta betyder att en avgift på minst %2 krävs. Ut: - + + &Scraper + + + + Debug log file Debugloggfil @@ -2071,7 +1950,7 @@ Detta betyder att en avgift på minst %2 krävs. Skriv <b>help</b> för en översikt av alla kommandon. - + %1 B %1 B @@ -2106,12 +1985,12 @@ Detta betyder att en avgift på minst %2 krävs. %1 h %2 m - + Gridcoin - Debug Console Gridcoin - Felsökningskonsol - + Boost version Boost-version @@ -2181,7 +2060,7 @@ Detta betyder att en avgift på minst %2 krävs. Klientnamn - + Welcome to the Gridcoin RPC console! @@ -2448,22 +2327,22 @@ Detta betyder att en avgift på minst %2 krävs. SendCoinsEntry - + A&mount: &Belopp: - + Pay &To: Betala &Till: - + &Label: &Etikett: - + Alt+A Alt+A @@ -2504,26 +2383,17 @@ Detta betyder att en avgift på minst %2 krävs. Ta bort denna mottagare - + Send Custom Message to a Gridcoin Recipient - Track Coins - Spåra Mynt - - - - Add Attachment - - - - + Form Formulär - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) Ange en Gridcoin-address (t.ex. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2772,22 +2642,47 @@ Detta betyder att en avgift på minst %2 krävs. - + Source Källa - + Generated in CoinBase - - Generated, PoS + + MINED - POS - + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + TX ID @@ -2822,10 +2717,6 @@ Detta betyder att en avgift på minst %2 krävs. Transaction Inputs - - Generated - Genererad - @@ -2859,23 +2750,11 @@ Detta betyder att en avgift på minst %2 krävs. Credit Kredit - - Block Type - Blocktyp - - - Block Number - Blocknummer - Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. Gridcoin-genererade mynt måste mogna i 110 block innan de kan spenderas. När du skapade detta block skickades det ut på nätverket för att läggas till i blockkedjan. Om det misslyckas att läggas till kommer dess status ändras till "ej accepterad" och mynten kan inte spenderas. Detta kan hända om en annan nod skapar ett block inom några sekunder av ditt. - - Information - Information - label @@ -2922,18 +2801,6 @@ Detta betyder att en avgift på minst %2 krävs. Comment Kommentar - - Transaction ID - Transaktions-ID - - - Transaction - Transaktion - - - Inputs - Inputs - Amount @@ -2963,12 +2830,7 @@ Detta betyder att en avgift på minst %2 krävs. Den här panelen visar en detaljerad beskrivning av transaktionen - - View Attachment - Visa Bifogning - - - + Execute Contract @@ -2977,21 +2839,11 @@ Detta betyder att en avgift på minst %2 krävs. C&lose S&täng - - - Gridcoin Documents - Gridcoin-dokument - - - - Document cannot be found on P2P server. - Dokumentet kan inte hittas på P2p-servern. - TransactionTableModel - + Date Datum @@ -3026,32 +2878,12 @@ Detta betyder att en avgift på minst %2 krävs. - - Mined - DPOR - - - - - Minted - (Local) DPOR - - - - - Mined - PoR - - - - - Mined - Interest - - - - + Destination address of transaction. Transaktionens destinationsadress. - + Open for %n more block(s) Öppet för %n mer block @@ -3089,7 +2921,7 @@ Detta betyder att en avgift på minst %2 krävs. Genererad men inte accepterad - + Received with Mottagen med @@ -3109,12 +2941,42 @@ Detta betyder att en avgift på minst %2 krävs. Betalning till dig själv - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (n/a) - + Transaction status. Hover over this field to show number of confirmations. Transaktionsstatus. Håll muspekaren över för att se antal bekräftelser. @@ -3303,29 +3165,10 @@ Detta betyder att en avgift på minst %2 krävs. till - - UpgradeDialog - - Gridcoin Upgrading Facility - Gridcoin-uppgradering - - - Retry Download - Försök igen - - - Upgrade - Uppgradera - - - Hide - Göm - - VotingChartDialog - + Poll Results Röstningsresultat @@ -3415,14 +3258,6 @@ Detta betyder att en avgift på minst %2 krävs. Share Type Fördelningstyp - - Question - Fråga - - - Answers - Svar - # Voters @@ -3433,10 +3268,6 @@ Detta betyder att en avgift på minst %2 krävs. Total Shares Andelar - - URL - URL - Best Answer @@ -3462,10 +3293,6 @@ Detta betyder att en avgift på minst %2 krävs. Share Type. Fördelningstyp. - - Question. - Fråga. - Total Participants. @@ -3476,10 +3303,6 @@ Detta betyder att en avgift på minst %2 krävs. Total Shares. Andelar. - - URL. - URL. - Best Answer. @@ -3489,7 +3312,7 @@ Detta betyder att en avgift på minst %2 krävs. VotingVoteDialog - + PlaceVote Rösta @@ -3522,7 +3345,7 @@ Detta betyder att en avgift på minst %2 krävs. WalletModel - + Sending... Skickar... @@ -3530,12 +3353,12 @@ Detta betyder att en avgift på minst %2 krävs. bitcoin-core - + Options: Inställningar: - + This help message Det här hjälp medelandet @@ -3570,12 +3393,12 @@ Detta betyder att en avgift på minst %2 krävs. Ange timeout för uppkoppling i millisekunder (förvalt: 5000) - + Connect through socks proxy Koppla genom en socks proxy - + Select the version of socks proxy to use (4-5, default: 5) Välj version av socks proxy (4-5, förval 5) @@ -3585,7 +3408,7 @@ Detta betyder att en avgift på minst %2 krävs. Använd proxy för att nå Tor gömda servicer (standard: samma som -proxy) - + Listen for connections on <port> (default: 32749 or testnet: 32748) Lyssna efter anslutningar på <port> (standard: 15714 eller testnät: 25714) {32749 ?} {32748)?} @@ -3595,7 +3418,7 @@ Detta betyder att en avgift på minst %2 krävs. Ha som mest <n> anslutningar till andra klienter (förvalt: 125) - + Connect only to the specified node(s) Koppla enbart upp till den/de specificerade noden/noder @@ -3605,26 +3428,22 @@ Detta betyder att en avgift på minst %2 krävs. Anslut till en nod för att hämta klientadresser, och koppla från - + Specify your own public address Ange din egen publika adress - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) Anslut enbart till noder i nätverket <net> (IPv4, IPv6 eller Tor) - + Discover own IP address (default: 1 when listening and no -externalip) Hitta egen IP-adress (förvalt: 1 under lyssning och utan -externalip) - Find peers using internet relay chat (default: 0) - Hitta andra klienter genom internet relay chat (standard: 1) {0)?} - - - + Accept connections from outside (default: 1 if no -proxy or -connect) Acceptera anslutningar utifrån (förvalt: 1 om ingen -proxy eller -connect) @@ -3634,26 +3453,22 @@ Detta betyder att en avgift på minst %2 krävs. Bind till angiven adress. Använd [host]:port för IPv6 - + Find peers using DNS lookup (default: 1) Hitta andra klienter via DNS uppsökning (standard: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) Synkronisera tiden med andra noder. Avaktivera om klockan i ditt sytem är exakt som t.ex. synkroniserad med NTP (förval: 1) - Sync checkpoints policy (default: strict) - Synka kontrollpunkts policy (standard: strict) - - - + Threshold for disconnecting misbehaving peers (default: 100) Tröskelvärde för att koppla ifrån klienter som missköter sig (förvalt: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) Antal sekunder att hindra klienter som missköter sig från att ansluta (förvalt: 86400) @@ -3748,6 +3563,16 @@ Detta betyder att en avgift på minst %2 krävs. Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3808,6 +3633,11 @@ Detta betyder att en avgift på minst %2 krävs. ERROR + + + Entire balance reserved + + Expires @@ -3873,11 +3703,6 @@ Detta betyder att en avgift på minst %2 krävs. Message Meddelande - - - Messate Type - - Miner: @@ -3914,12 +3739,7 @@ Detta betyder att en avgift på minst %2 krävs. - - No coins; - - - - + Offline; @@ -3929,12 +3749,7 @@ Detta betyder att en avgift på minst %2 krävs. - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -4014,12 +3829,12 @@ Detta betyder att en avgift på minst %2 krävs. Använd UPnP för att mappa den lyssnande porten (förvalt: 0) - + Fee per KB to add to transactions you send Avgift per KB som adderas till transaktionen du sänder - + When creating transactions, ignore inputs with value less than this (default: 0.01) När transaktioner skapas, ignorera värden som är lägre än detta (standard: 0.01) @@ -4029,12 +3844,12 @@ Detta betyder att en avgift på minst %2 krävs. Tillåt kommandon från kommandotolken och JSON-RPC-kommandon - + Use the test network Använd testnätverket - + Output extra debugging information. Implies all other -debug* options Skriv ut extra debug information. Betyder alla andra -debug* alternativ @@ -4044,7 +3859,7 @@ Detta betyder att en avgift på minst %2 krävs. Skriv ut extra nätverks debug information - + Prepend debug output with timestamp Tidstämpla debug utskriften @@ -4054,7 +3869,7 @@ Detta betyder att en avgift på minst %2 krävs. Skicka trace/debug till debuggern - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) Lyssna efter JSON-RPC anslutningar på <port> (standard: 15715 eller testnät: 25715) @@ -4064,7 +3879,7 @@ Detta betyder att en avgift på minst %2 krävs. Tillåt JSON-RPC-anslutningar från specifika IP-adresser - + Send commands to node running on <ip> (default: 127.0.0.1) Skicka kommandon till klient på <ip> (förvalt: 127.0.0.1) @@ -4074,7 +3889,7 @@ Detta betyder att en avgift på minst %2 krävs. Kräv bekräftelse för ändring (förval: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) Tvinga transaktionsskript att använda kanoniska PUSH operatörer (standard: 1) @@ -4084,7 +3899,7 @@ Detta betyder att en avgift på minst %2 krävs. Kör kommando när en relevant alert är mottagen (%s i cmd är ersatt av meddelandet) - + Upgrade wallet to latest format Uppgradera plånboken till senaste formatet @@ -4099,7 +3914,7 @@ Detta betyder att en avgift på minst %2 krävs. Sök i blockkedjan efter saknade plånboks transaktioner - + Attempt to recover private keys from a corrupt wallet.dat Försök att rädda de privata nycklarna från en korrupt wallet.dat @@ -4119,7 +3934,7 @@ Detta betyder att en avgift på minst %2 krävs. - + Boinc Mining @@ -4129,7 +3944,7 @@ Detta betyder att en avgift på minst %2 krävs. - + Error obtaining next project. Error 06172014. @@ -4179,12 +3994,32 @@ Detta betyder att en avgift på minst %2 krävs. - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -4199,12 +4034,12 @@ Detta betyder att en avgift på minst %2 krävs. Sätt största blockstorlek i bytes (förvalt: 250000) - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) Ställ in max storlek för hög prioritet/lågavgifts transaktioner i bytes (förval: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) SSL-inställningar: (se Bitcoin-wikin för SSL-setup instruktioner) @@ -4224,21 +4059,17 @@ Detta betyder att en avgift på minst %2 krävs. Serverns privata nyckel (förvalt: server.pem) - Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - Godtagbara chiffer (standard: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - - - + Invalid amount for -paytxfee=<amount>: '%s' Ogiltigt belopp för -paytxfee=<belopp>:'%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. Varning: -paytxfee är satt väldigt hög! Detta är avgiften du kommer betala för varje transaktion. - + Invalid amount for -mininput=<amount>: '%s' Fel mängd för -mininput=<amount>: '%s' @@ -4248,22 +4079,22 @@ Detta betyder att en avgift på minst %2 krävs. - + Wallet %s resides outside data directory %s. Plånbok %s ligger utanför datamappen %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. Kan inte låsa datan i mappen %s. Gridcoin är kanske redan startad. - + Verifying database integrity... Verifierar integriteten i databasen... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. Ett fel uppstod vid initialiseringen av databasen %s! För att återställa, SÄKERHETSKOPIERA MAPPEN, radera sedan allt från mappen förutom wallet.dat. @@ -4273,10 +4104,15 @@ Detta betyder att en avgift på minst %2 krävs. Varning: wallet.dat korrupt, datan har räddats! Den ursprungliga wallet.dat har sparas som wallet.{timestamp}.bak i %s; om ditt saldo eller transaktioner är felaktiga ska du återställa från en säkerhetskopia. - + Vote Rösta + + + Waiting for coins to mature + + Wallet locked; @@ -4293,17 +4129,17 @@ Detta betyder att en avgift på minst %2 krävs. wallet.dat korrupt, räddning misslyckades - + Unknown -socks proxy version requested: %i Okänd -socks proxy version begärd: %i - + Invalid -tor address: '%s' Fel -tor adress: '%s' - + Cannot resolve -bind address: '%s' Kan inte matcha -bind adress: '%s' @@ -4313,16 +4149,10 @@ Detta betyder att en avgift på minst %2 krävs. Kan inte matcha -externalip adress: '%s' - + Invalid amount for -reservebalance=<amount> Fel mängd för -reservebalance=<amount> - - Unable to sign checkpoint, wrong checkpointkey? - - Kan inte signera checkpoint, fel checkpointkey? - - Error loading blkindex.dat @@ -4334,22 +4164,22 @@ Detta betyder att en avgift på minst %2 krävs. Fel vid inläsningen av wallet.dat: Plånboken är skadad - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. Varning: fel vid läsning av wallet.dat! Alla nycklar lästes korrekt, men transaktionsdatan eller adressbokens poster kanske saknas eller är felaktiga. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin Kunde inte ladda wallet.dat: En nyare version av Gridcoin krävs - + Wallet needed to be rewritten: restart Gridcoin to complete Plånboken måste skrivas om: Starta om Gridcoin för att slutföra - + Error loading wallet.dat Fel vid inläsning av plånboksfilen wallet.dat @@ -4369,17 +4199,17 @@ Detta betyder att en avgift på minst %2 krävs. Fel: kunde inte starta noden - + Unable to bind to %s on this computer. Gridcoin is probably already running. Kan inte binda till %s på denna dator. Gridcoin är sannolikt redan startad. - + Unable to bind to %s on this computer (bind returned error %d, %s) Det går inte att binda till %s på den här datorn (bind returnerade felmeddelande %d, %s) - + Error: Wallet locked, unable to create transaction Fel: Plånboken låst, kan inte utföra transaktion @@ -4389,59 +4219,47 @@ Detta betyder att en avgift på minst %2 krävs. Fel: Plånboken öppnad endast för stake-process, kan inte skapa transaktion. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds Fel: Transaktionen kräver en transaktionsavgift på min %s på grund av dess storlek, komplexitet eller användning av nyligen mottagna kapital - + Error: Transaction creation failed Fel: Skapandet av transaktion misslyckades - + Sending... Skickar... - + 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. Fel: Transaktionen nekades. Detta kan hända om vissa av mynten i din plånbok redan är använda, t.ex om du använder en kopia av wallet.dat och mynten redan var använda i kopia men inte markerade som använda här. - + Invalid amount Ogiltig mängd - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. Varning: Kolla att din dators tid och datum är rätt. Gridcoin kan inte fungera ordentligt om tiden i datorn är fel. - Warning: This version is obsolete, upgrade required! - Varning: denna version är föråldrad, uppgradering krävs! - - - WARNING: synchronized checkpoint violation detected, but skipped! - VARNING: synkroniserad kontrollpunkts brott upptäckt, men hoppades över! - - - + Warning: Disk space is low! Varning: Lågt skivutrymme - WARNING: Invalid checkpoint found! Displayed transactions may not be correct! You may need to upgrade, or notify developers. - VARNING: Felaktig kontrollpunkt hittad! Visade transaktioner kan vara felaktiga! Du kan behöva uppgradera eller kontakta utvecklarna. - - - + Run in the background as a daemon and accept commands Kör i bakgrunden som tjänst och acceptera kommandon - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) Exekvera kommando när en plånbokstransaktion ändras (%s i cmd är ersatt av TxID) @@ -4451,12 +4269,12 @@ Detta betyder att en avgift på minst %2 krävs. Block skapande inställningar: - + Failed to listen on any port. Use -listen=0 if you want this. Misslyckades att lyssna på någon port. Använd -listen=0 om du vill detta. - + Specify wallet file (within data directory) Ange plånboksfil (inom datakatalogen) @@ -4481,7 +4299,7 @@ Detta betyder att en avgift på minst %2 krävs. Lösenord för JSON-RPC-anslutningar - + Execute command when the best block changes (%s in cmd is replaced by block hash) Exekvera kommando när det bästa blocket ändras (%s i cmd är utbytt av blockhash) @@ -4491,12 +4309,12 @@ Detta betyder att en avgift på minst %2 krävs. Tillåt DNS-sökningar för -addnode, -seednode och -connect - + To use the %s option Att använda %s alternativet - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -4530,12 +4348,12 @@ If the file does not exist, create it with owner-readable-only file permissions. Om filen inte existerar, skapa den med filrättigheten endast läsbar för ägaren. - + Gridcoin version Gridcoin version - + Usage: Användning: @@ -4545,7 +4363,7 @@ Om filen inte existerar, skapa den med filrättigheten endast läsbar för ägar - + List commands Lista kommandon @@ -4570,12 +4388,12 @@ Om filen inte existerar, skapa den med filrättigheten endast läsbar för ägar Ogiltig -proxy adress: '%s' - + Unknown network specified in -onlynet: '%s' Okänt nätverk som anges i -onlynet: '%s' - + Insufficient funds Otillräckligt med bitcoins @@ -4585,17 +4403,17 @@ Om filen inte existerar, skapa den med filrättigheten endast läsbar för ägar Laddar blockindex... - + Add a node to connect to and attempt to keep the connection open Lägg till en nod att koppla upp mot och försök att hålla anslutningen öppen - + Loading wallet... Laddar plånbok... - + Cannot downgrade wallet Kan inte nedgradera plånboken @@ -4605,17 +4423,17 @@ Om filen inte existerar, skapa den med filrättigheten endast läsbar för ägar Kan inte skriva standardadress - + Rescanning... Söker igen... - + Done loading Klar med laddning - + Error Fel diff --git a/src/qt/locale/bitcoin_th_TH.ts b/src/qt/locale/bitcoin_th_TH.ts index a72b48a161..1696d9288e 100644 --- a/src/qt/locale/bitcoin_th_TH.ts +++ b/src/qt/locale/bitcoin_th_TH.ts @@ -299,12 +299,12 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + Sign &message... เซ็นต์ชื่อด้วย &ข้อความ... - + &Overview &ภาพรวม @@ -400,7 +400,7 @@ This product includes software developed by the OpenSSL Project for use in the O ออกจากโปรแกรม - + &Options... &ตัวเลือก... @@ -414,19 +414,11 @@ This product includes software developed by the OpenSSL Project for use in the O Encrypt or decrypt wallet - - &Backup Wallet... - &สำรองกระเป๋าเงิน... - &Change Passphrase... &เปลี่ยนรหัสผ่าน... - - Backup wallet to another location - สำรอง กระเป๋าเงินไปยัง ที่เก็บอื่น - Change the passphrase used for wallet encryption @@ -478,7 +470,7 @@ This product includes software developed by the OpenSSL Project for use in the O &ยืนยันข้อความ... - + Wallet กระเป๋าเงิน @@ -488,7 +480,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Send &ส่ง @@ -508,28 +500,12 @@ This product includes software developed by the OpenSSL Project for use in the O - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -539,7 +515,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Diagnostics @@ -569,14 +545,14 @@ This product includes software developed by the OpenSSL Project for use in the O - + [testnet] [testnet] - + Gridcoin client @@ -586,7 +562,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Last received block was generated %1. @@ -639,7 +615,7 @@ Address: %4 - + Wallet is <b>encrypted</b> and currently %1 @@ -686,7 +662,7 @@ Address: %4 - + %n second(s) @@ -724,7 +700,37 @@ Address: %4 - + + Scraper: waiting on wallet to sync. + + + + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + &File &ไฟล์ @@ -739,17 +745,12 @@ Address: %4 - - &Advanced - - - - + &Help &ช่วยเหลือ - + Processed %n block(s) of transaction history. %n บล็อกในประวัติรายการ ได้รับการดำเนินการเรียบร้อยแล้ว @@ -789,12 +790,12 @@ Address: %4 ทันสมัย - + Catching up... กำลังตามให้ทัน... - + Sent transaction รายการที่ส่ง @@ -804,7 +805,7 @@ Address: %4 การทำรายการขาเข้า - + URI handling @@ -815,17 +816,13 @@ Address: %4 URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. - - 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 occurred. Gridcoin can no longer continue safely and will quit. @@ -833,7 +830,7 @@ Address: %4 ClientModel - + Network Alert @@ -915,10 +912,6 @@ Address: %4 (un)select all (ไม่)เลือกทั้งหมด - - List mode - โหมดแบบรายการ - Amount @@ -1284,7 +1277,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1542,10 +1535,6 @@ This label turns red, if the priority is smaller than "medium". Map port using &UPnP จองพอร์ต โดยใช้ &UPnP - - Proxy &IP: - พร็อกซี่ &IP: - &Port: @@ -1734,6 +1723,14 @@ This label turns red, if the priority is smaller than "medium". + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1800,7 +1797,7 @@ This label turns red, if the priority is smaller than "medium". - + &Information @@ -1822,7 +1819,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A @@ -1971,6 +1968,11 @@ This label turns red, if the priority is smaller than "medium". Clear console + + + &Scraper + + Yes @@ -1997,7 +1999,7 @@ This label turns red, if the priority is smaller than "medium". - + %1 B @@ -2299,12 +2301,12 @@ This label turns red, if the priority is smaller than "medium". รูป - + &Label: &ชื่อ: - + Enter a label for this address to add it to your address book @@ -2350,22 +2352,17 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - + A&mount: - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2612,22 +2609,47 @@ This label turns red, if the priority is smaller than "medium". - + Source - + Generated in CoinBase - - Generated, PoS + + MINED - POS - + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From @@ -2745,10 +2767,6 @@ This label turns red, if the priority is smaller than "medium". Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - ข้อมูล - Amount @@ -2778,12 +2796,7 @@ This label turns red, if the priority is smaller than "medium". - - View Attachment - - - - + Execute Contract @@ -2792,21 +2805,11 @@ This label turns red, if the priority is smaller than "medium". C&lose &ปิด - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date วันที่ @@ -2878,7 +2881,7 @@ This label turns red, if the priority is smaller than "medium". - + Received with @@ -2898,32 +2901,42 @@ This label turns red, if the priority is smaller than "medium". - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) - + Transaction status. Hover over this field to show number of confirmations. @@ -3120,7 +3133,7 @@ This label turns red, if the priority is smaller than "medium". VotingChartDialog - + Poll Results @@ -3264,7 +3277,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3297,7 +3310,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3305,12 +3318,12 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + To use the %s option - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -3357,7 +3370,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Boinc Mining @@ -3367,7 +3380,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error obtaining next project. Error 06172014. @@ -3407,12 +3420,32 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -3462,7 +3495,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + List commands @@ -3472,7 +3505,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + None @@ -3562,6 +3595,16 @@ If the file does not exist, create it with owner-readable-only file permissions. Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3622,6 +3665,11 @@ If the file does not exist, create it with owner-readable-only file permissions. ERROR + + + Entire balance reserved + + Expires @@ -3682,11 +3730,6 @@ If the file does not exist, create it with owner-readable-only file permissions. Message - - - Messate Type - - Miner: @@ -3723,12 +3766,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - No coins; - - - - + Offline; @@ -3743,12 +3781,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3823,12 +3856,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3838,12 +3871,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Allow DNS lookups for -addnode, -seednode and -connect - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3853,12 +3886,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Add a node to connect to and attempt to keep the connection open - + Connect only to the specified node(s) @@ -3868,22 +3901,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Specify your own public address - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -3893,27 +3926,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + 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: 5000) @@ -3923,7 +3956,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Use UPnP to map the listening port (default: 1 when listening) @@ -3933,12 +3966,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) @@ -3948,7 +3981,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Run in the background as a daemon and accept commands @@ -3958,7 +3991,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Output extra debugging information. Implies all other -debug* options @@ -3968,7 +4001,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Prepend debug output with timestamp @@ -3998,7 +4031,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -4008,12 +4041,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Send commands to node running on <ip> (default: 127.0.0.1) - + Execute command when the best block changes (%s in cmd is replaced by block hash) @@ -4023,12 +4056,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Require a confirmations for change (default: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -4038,7 +4071,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Upgrade wallet to latest format @@ -4053,12 +4086,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Attempt to recover private keys from a corrupt wallet.dat - + How many blocks to check at startup (default: 2500, 0 = all) @@ -4073,12 +4106,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Block creation options: - + Set minimum block size in bytes (default: 0) @@ -4088,12 +4121,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -4113,17 +4146,17 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid amount for -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - + Invalid amount for -mininput=<amount>: '%s' @@ -4133,22 +4166,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4158,7 +4191,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Weight @@ -4168,7 +4201,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Unknown -socks proxy version requested: %i @@ -4178,7 +4211,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid -proxy address: '%s' @@ -4188,22 +4221,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Cannot resolve -bind address: '%s' - + Failed to listen on any port. Use -listen=0 if you want this. - + Cannot resolve -externalip address: '%s' - + Invalid amount for -reservebalance=<amount> @@ -4228,20 +4261,25 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4253,12 +4291,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error loading wallet.dat - + Cannot downgrade wallet @@ -4268,12 +4306,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Rescanning... - + Importing blockchain data file. @@ -4293,22 +4331,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Done loading - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4318,27 +4356,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount @@ -4348,17 +4386,17 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - + Warning: Disk space is low! - + Error ข้อผิดพลาด diff --git a/src/qt/locale/bitcoin_tr.ts b/src/qt/locale/bitcoin_tr.ts index 497d29b8c4..41ced01d04 100644 --- a/src/qt/locale/bitcoin_tr.ts +++ b/src/qt/locale/bitcoin_tr.ts @@ -23,20 +23,6 @@ Distributed under the MIT/X11 software license, see the accompanying file COPYIN This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (https://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - - -This is experimental software. - -Distributed under the MIT/X11 software license, see the accompanying file COPYING 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. - - Bu, deneysel bir yazılımdır. - - MIT/X11 yazılım lisansı kapsamında yayınlanmıştır, beraberindeki COPYING dosyasına ya da http://www.opensource.org/licenses/mit-license.php sayfasına bakınız. - - Bu ürün, OpenSSL Toolkit'inde (http://www.openssl.org/) kullanılmak üzere OpenSSL projesi tarafından geliştirilen yazılımı, Eric Young (eay@cryptsoft.com) tarafından hazırlanmış kriptografik yazılımı ve Thomas Bernard tarafından hazırlanmış UPnP yazılımı içerir. - AddressBookPage @@ -313,12 +299,12 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + Sign &message... &İleti imzala... - + &Overview &Genel bakış @@ -414,7 +400,7 @@ This product includes software developed by the OpenSSL Project for use in the O Uygulamadan çık - + &Options... &Seçenekler... @@ -429,7 +415,7 @@ This product includes software developed by the OpenSSL Project for use in the O Cüzdanı şifrele veya cüzdanın şifresini aç - + %n second(s) ago %n saniye önce @@ -457,7 +443,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Date: %1 Amount: %2 Type: %3 @@ -472,7 +458,7 @@ Adres: %4 ?} {4?} - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -482,17 +468,39 @@ Adres: %4 - &Backup Wallet... - Cüzdanı &Yedekle... + + Scraper: waiting on wallet to sync. + - - &Change Passphrase... - Parolayı &Değiştir... + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + - Backup wallet to another location - Cüzdanı diğer bir konumda yedekle + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + + &Change Passphrase... + Parolayı &Değiştir... @@ -545,7 +553,7 @@ Adres: %4 İletiyi &kontrol et... - + Wallet Cüzdan @@ -555,7 +563,7 @@ Adres: %4 Gridcoin - + &Send &Gönder @@ -564,30 +572,6 @@ Adres: %4 &Receive &Al - - &Rebuild Block Chain - &Blok Zincirini Tekrar Yapılandır - - - Rebuild Block Chain - Blok Zincirini Tekrar Yapılandır - - - &Download Blocks - Tüm Blokları İndir - - - Download Blocks - Tüm Blokları İndir - - - &Upgrade Client - &İstemciyi Güncelle - - - Upgrade Client - İstemciyi Güncelle - &About Gridcoin @@ -599,36 +583,12 @@ Adres: %4 Gridcoin hakkındaki bilgiyi göster - - &Neural Network - &Neural Network - - - - Neural Network - Neural Network - - - &Advanced Configuration - &Gelişmiş Ayarlar - - - Advanced Configuration - Gelişmiş Yapılandırma - - - - &New User Wizard - &Yeni Kullanıcı Sihirbazı - - - - + New User Wizard Yeni Kullanıcı Sihirbazı - + &Voting &Oylama @@ -638,7 +598,7 @@ Adres: %4 Oylama - + &Diagnostics &Tanılayıcı @@ -668,14 +628,14 @@ Adres: %4 - + [testnet] [testnet] - + Gridcoin client Gridcoin istemcisi @@ -685,23 +645,7 @@ Adres: %4 Gridcoin ağına %1 etkin bağlantı - %1 second(s) ago - %1 saniye önce - - - %1 minute(s) ago - %1 dakika önce - - - %1 hour(s) ago - %1 saat önce - - - %1 day(s) ago - %1 gün önce - - - + Last received block was generated %1. Son alınan blok, üretildi %1. @@ -746,19 +690,7 @@ Adres: %4 Boinc Konumu Hatası! - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - Tarih: %1 -Miktar: %2 -Tür: %3 -Adres: %4 - - - - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. URI ayrıştırılamadı! Bu, geçersiz bir Gridcoin adresi veya hatalı URI parametreleri nedeniyle olabilir. @@ -817,7 +749,7 @@ Adres: %4 - + %n second(s) %n saniye @@ -845,39 +777,7 @@ Adres: %4 - Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. %4 - Pay Alınıyor.<br>Sizin Ağırlığınız: %1<br>Ağın Ağırlığı: %2<br><b>Pay almak için TAHMİNİ</b> süre: %3. %4 - - - Not staking because wallet is locked - Pay alınmıyor çünkü cüzdan kilitlidir - - - Not staking because wallet is offline - Pay alınmıyor çünkü cüzdan çevrimdışıdır - - - Not staking because wallet is syncing - Pay alınmıyor çünkü cüzdan senkronize ediliyor - - - Not staking because you don't have mature coins and stake weight is too low. - Pay alınamıyor çünkü olgunlaşmış coininiz yok ya da pay ağırlığı çok düşük. - - - Not staking because you don't have mature coins - Pay alınmıyor çünkü olgunlaşmış coininiz yok - - - Searching for mature coins... Please wait - Olgunlaşmış coinler aranıyor... Lütfen Bekleyin - - - Not staking - Pay alınmıyor - - - + &File &Dosya @@ -892,17 +792,12 @@ Adres: %4 - - &Advanced - - - - + &Help &Yardım - + Processed %n block(s) of transaction history. İşlem tarihçesinden %n blok işlendi. @@ -914,12 +809,12 @@ Adres: %4 Güncel - + Catching up... Aralık kapatılıyor... - + Sent transaction İşlem gönderildi @@ -929,16 +824,12 @@ Adres: %4 Gelen işlem - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Cüzdan <b>şifrelenmiştir</b> ve şu anda <b>kilidi açıktır</b> - - - + Wallet is <b>encrypted</b> and currently <b>locked</b> Cüzdan <b>şifrelenmiştir</b> ve şu anda <b>kilitlidir</b> - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. Önemli bir hata oluştu. Gridcoin artık güvenli bir şekilde devam edemez ve şimdi kapatılacak. @@ -946,7 +837,7 @@ Adres: %4 ClientModel - + Network Alert Ağ Uyarısı @@ -1028,10 +919,6 @@ Adres: %4 (un)select all tümünü seç(me) - - List mode - Liste kipi - Amount @@ -1411,7 +1298,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1624,10 +1511,6 @@ This label turns red, if the priority is smaller than "medium". Map port using &UPnP Portları &UPnP kullanarak haritala - - Proxy &IP: - Vekil &IP: - &Port: @@ -1861,6 +1744,14 @@ This label turns red, if the priority is smaller than "medium". Eşleşme Dışı + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1922,7 +1813,7 @@ This label turns red, if the priority is smaller than "medium". RPCConsole - + @@ -1934,7 +1825,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A Mevcut değil @@ -2014,7 +1905,12 @@ This label turns red, if the priority is smaller than "medium". Dışarı: - + + &Scraper + + + + Debug log file Hata ayıklama kütük dosyası @@ -2049,7 +1945,7 @@ This label turns red, if the priority is smaller than "medium". Mevcut komutların listesi için <b>help</b> yazınız. - + %1 B %1 B @@ -2084,12 +1980,12 @@ This label turns red, if the priority is smaller than "medium". - + Gridcoin - Debug Console - + Boost version @@ -2421,22 +2317,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: T&utar: - + Pay &To: &Şu adrese öde: - + &Label: &Etiket: - + Alt+A Alt+A @@ -2462,12 +2358,12 @@ This label turns red, if the priority is smaller than "medium". Adres defterinize eklemek için bu adrese bir etiket giriniz - + Form Form - + The address to send the payment to (e.g. Sjz75uKHzUQJnSdzvpiigEGxseKkDhQToX) @@ -2482,21 +2378,12 @@ This label turns red, if the priority is smaller than "medium". Bu alıcıyı kaldır - + Send Custom Message to a Gridcoin Recipient Gridcoin alıcısına bir mesaj yaz - Track Coins - Coinleri Takip Et - - - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) Gridcoin adresi girin (Örnek: S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2743,16 +2630,12 @@ This label turns red, if the priority is smaller than "medium". - + Source Kaynak - Generated - Oluşturuldu - - - + From Gönderen @@ -2763,21 +2646,42 @@ This label turns red, if the priority is smaller than "medium". - Information - Bilgi + + Generated in CoinBase + - - Generated in CoinBase + + MINED - POS - - Generated, PoS + + MINED - POR - + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + unknown Bilinmiyor @@ -2884,18 +2788,6 @@ This label turns red, if the priority is smaller than "medium". Transaction Inputs - - Transaction ID - İşlem ID'si - - - Transaction - İşlem - - - Inputs - Girdiler - Amount @@ -2925,12 +2817,7 @@ This label turns red, if the priority is smaller than "medium". Bu pano işlemin ayrıntılı açıklamasını gösterir - - View Attachment - - - - + Execute Contract @@ -2939,21 +2826,11 @@ This label turns red, if the priority is smaller than "medium". C&lose K&apat - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Tarih @@ -2988,32 +2865,12 @@ This label turns red, if the priority is smaller than "medium". - - Mined - DPOR - Gridcoin Madeni Çıkarıldı- DPOR - - - - Minted - (Local) DPOR - - - - - Mined - PoR - Gridcoin Madeni Çıkarıldı-POR - - - - Mined - Interest - Gridcoin Madeni Çıkarıldı- Sadece Pay Alındı - - - + Destination address of transaction. İşlemin alıcı adresi. - + Open for %n more block(s) %n taneden daha fazla blok için açık @@ -3050,7 +2907,7 @@ This label turns red, if the priority is smaller than "medium". Oluşturuldu ama kabul edilmedi - + Received with Şununla alındı @@ -3070,12 +2927,42 @@ This label turns red, if the priority is smaller than "medium". Kendinize ödeme - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (mevcut değil) - + Transaction status. Hover over this field to show number of confirmations. İşlem durumu. Doğrulama sayısını görüntülemek için fare imlecini bu alanın üzerinde tutunuz. @@ -3264,29 +3151,10 @@ This label turns red, if the priority is smaller than "medium". Alıcı - - UpgradeDialog - - Gridcoin Upgrading Facility - Gridcoin Güncelleme - - - Retry Download - Tekrar indirmeyi dene - - - Upgrade - Güncelle - - - Hide - Gizle - - VotingChartDialog - + Poll Results Poll Sonuçları @@ -3376,10 +3244,6 @@ This label turns red, if the priority is smaller than "medium". Share Type - - Question - Soru - # Voters @@ -3434,7 +3298,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3467,7 +3331,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... Gönderiyor... @@ -3475,19 +3339,15 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: Seçenekler: - + This help message Bu yardım mesajı - - Specify configuration file (default: gridcoin.conf) - Yapılandırma dosyası belirtin (varsayılan: gridcoin.conf) - Specify pid file (default: gridcoind.pid) @@ -3519,12 +3379,12 @@ This label turns red, if the priority is smaller than "medium". Bağlantı zaman aşım süresini milisaniye olarak belirt (varsayılan: 5000) - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) Kullanılacak socks vekil sunucusunun versiyonunu seç (4-5, varsayılan: 5) @@ -3534,7 +3394,7 @@ This label turns red, if the priority is smaller than "medium". Tor gizli servisine erişim için vekil sunucu kullan (varsayılan: -proxy ile aynı) - + Listen for connections on <port> (default: 32749 or testnet: 32748) <port> üzerinde bağlantıları dinle (varsayılan: 15714 veya testnet: 25714) {32749 ?} {32748)?} @@ -3544,7 +3404,7 @@ This label turns red, if the priority is smaller than "medium". Eşler ile en çok <n> adet bağlantı kur (varsayılan: 125) - + Connect only to the specified node(s) Sadece belirtilen ağ noktalarına bağlan @@ -3554,26 +3414,22 @@ This label turns red, if the priority is smaller than "medium". Eş adresleri elde etmek için bir düğüme bağlan ve ardından bağlantıyı kes - + Specify your own public address Kendi genel adresinizi tanımlayın - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) Sadece <net> şebekesindeki ağ noktalarına bağlan (IPv4, IPv6 ya da Tor) - + Discover own IP address (default: 1 when listening and no -externalip) Kendi IP adresini keşfet (varsayılan: dinlenildiğinde ve -externalip yoksa 1) - Find peers using internet relay chat (default: 0) - Internet aktarımlı chat kullanarak eşleri bul (varsayılan: 1) {0)?} - - - + Accept connections from outside (default: 1 if no -proxy or -connect) Dıarıdan gelen bağlantıları kabul et (varsayılan: -proxy veya -connect yoksa 1) @@ -3583,26 +3439,22 @@ This label turns red, if the priority is smaller than "medium". Belirtilen adrese bağlı. IPv6 için [host]:port notasyonunu kullan - + Find peers using DNS lookup (default: 1) DNS arama kullanarak eşleri bul (varsayılan: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) Diğer ağ noktalarıyla saati senkronize et. Sisteminizdeki saat doğru ise devre dışı bırakın, örn: NTC ile senkronize etme (varsayılan: 1) - Sync checkpoints policy (default: strict) - Kontrol noktası politikasını senkronize et (varsayılan: sıkı) - - - + 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) @@ -3697,6 +3549,16 @@ This label turns red, if the priority is smaller than "medium". Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3757,6 +3619,11 @@ This label turns red, if the priority is smaller than "medium". ERROR + + + Entire balance reserved + + Expires @@ -3822,11 +3689,6 @@ This label turns red, if the priority is smaller than "medium". Message İleti - - - Messate Type - - Miner: @@ -3863,12 +3725,7 @@ This label turns red, if the priority is smaller than "medium". - - No coins; - - - - + Offline; @@ -3878,12 +3735,7 @@ This label turns red, if the priority is smaller than "medium". - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3963,12 +3815,12 @@ This label turns red, if the priority is smaller than "medium". Dinlenecek portu haritalamak için UPnP kullan (varsayılan: 0) - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) @@ -3978,12 +3830,12 @@ This label turns red, if the priority is smaller than "medium". Komut satırı ve JSON-RPC komutlarını kabul et - + Use the test network Deneme şebekesini kullan - + Output extra debugging information. Implies all other -debug* options Ekstra hata ayıklama bilgisini çıktı al. Diğer tüm -debug* seçeneklerini kapsar @@ -3993,7 +3845,7 @@ This label turns red, if the priority is smaller than "medium". Ekstra ağ hata ayıklama bilgisini çıktı olarak al - + Prepend debug output with timestamp Tarih bilgisini, hata ayıklama çıktısının başına ekle @@ -4003,7 +3855,7 @@ This label turns red, if the priority is smaller than "medium". Hata ayıklayıcıya hata ayıklama bilgisi gönder - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) <port> üzerinde JSON-RPC bağlantılarını dinle (varsayılan: 15715 veya testnet: 25715) @@ -4013,7 +3865,7 @@ This label turns red, if the priority is smaller than "medium". Belirtilen IP 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 ağ noktasına komut yolla @@ -4023,7 +3875,7 @@ This label turns red, if the priority is smaller than "medium". - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -4033,7 +3885,7 @@ This label turns red, if the priority is smaller than "medium". - + Upgrade wallet to latest format Cüzdanı en yeni sürüme güncelle @@ -4048,7 +3900,7 @@ This label turns red, if the priority is smaller than "medium". Blok zincirini eksik cüzdan işlemleri için tekrar yapılandır - + Attempt to recover private keys from a corrupt wallet.dat Bozuk bir wallet.dat dosyasından özel anahtarları geri kazanmayı dene @@ -4068,7 +3920,7 @@ This label turns red, if the priority is smaller than "medium". - + Boinc Mining @@ -4078,7 +3930,7 @@ This label turns red, if the priority is smaller than "medium". - + Error obtaining next project. Error 06172014. @@ -4128,12 +3980,32 @@ This label turns red, if the priority is smaller than "medium". - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -4148,12 +4020,12 @@ This label turns red, if the priority is smaller than "medium". Bayt olarak maksimum blok boyutunu belirle (varsayılan: 250000) - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) Bayt olarak yüksek öncelikli/düşük ücretli işlemlerin maksimum boyutunu belirle (varsayılan: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) SSL seçenekleri: (SSL kurulum bilgisi için Bitcoin vikisine bakınız) @@ -4173,17 +4045,17 @@ This label turns red, if the priority is smaller than "medium". Sunucu özel anahtarı (varsay?lan: server.pem) - + Invalid amount for -paytxfee=<amount>: '%s' -paytxfee=<meblağ> için geçersiz meblağ: '%s' - + 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, coin gönderirseniz ödeyeceğiniz işlem ücretidir. - + Invalid amount for -mininput=<amount>: '%s' @@ -4193,22 +4065,22 @@ This label turns red, if the priority is smaller than "medium". Başlatma kontrolü başarışız oldu. Gridcoin kapanıyor. - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... Veritabanı bütünlüğü doğrulanıyor... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. Veritabanı ortamı %s başlatılırken hata oluştu! Kurtarmak için, İLGİLİ KLASÖRÜ YEDEKLEYİN, ardından wallet.dat dışındaki herşeyi silin. @@ -4218,10 +4090,15 @@ This label turns red, if the priority is smaller than "medium". Uyarı: wallet.dat bozuk, veriler geri kazanıldı! Özgün wallet.dat, wallet.{zamandamgası}.bak olarak %s klasörüne kaydedildi; bakiyeniz ya da işlemleriniz yanlışsa bir yedeklemeden tekrar yüklemeniz gerekir. - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4238,17 +4115,17 @@ This label turns red, if the priority is smaller than "medium". wallet.dat bozuk, geri kazanım başarısız oldu - + Unknown -socks proxy version requested: %i Bilinmeyen bir -socks vekil sürümü talep edildi: %i - + Invalid -tor address: '%s' Geçersiz -tor adresi: '%s' - + Cannot resolve -bind address: '%s' -bind adresi çözümlenemedi: '%s' @@ -4258,16 +4135,10 @@ This label turns red, if the priority is smaller than "medium". -externalip adresi çözümlenemedi: '%s' - + Invalid amount for -reservebalance=<amount> -reservebalance=<amount> için geçersiz miktar - - Unable to sign checkpoint, wrong checkpointkey? - - Kontrol noktası imzalanamadı, bu bir hatalı kontrol noktası anahtarı mı? - - Error loading blkindex.dat @@ -4279,22 +4150,22 @@ This label turns red, if the priority is smaller than "medium". wallet.dat dosyasının yüklenmesinde hata oluştu: bozuk cüzdan - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. Uyarı: wallet.dat dosyasının okunması sırasında bir hata meydana geldi! Tüm anahtarlar doğru bir şekilde okundu, ancak işlem verileri ya da adres defteri unsurları hatalı veya eksik olabilir. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin HATA: wallet.dat yüklenemedi, wallet.dat daha yeni bir Gridcoin istemcisine ihtiyaç duyuyor. - + Wallet needed to be rewritten: restart Gridcoin to complete Cüzdanın tekrardan oluşturulması gerekiyor: Gridcoin istemcisini yeniden başlatın - + Error loading wallet.dat wallet.dat dosyasının yüklenmesinde hata oluştu @@ -4314,17 +4185,17 @@ This label turns red, if the priority is smaller than "medium". Ağ Noktası Başlatılamadı - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) Bu bilgisayarda %s unsuruna bağlanılamadı. (bind şu hatayı iletti: %d, %s) - + Error: Wallet locked, unable to create transaction Hata: Cüzdan kilitli, işlem yapılamıyor. @@ -4334,55 +4205,47 @@ This label turns red, if the priority is smaller than "medium". Hata: Cüzdan sadece pay almak için açık, coin gönderilemez. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds Hata: Bu işlem; miktarı, karmaşıklığı veya son alınan miktarın kullanımı nedeniyle en az %s işlem ücreti gerektirir - + Error: Transaction creation failed Hata: İşlem yaratma başarısız oldu - + Sending... Gönderiyor... - + 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. Hata: İşlem reddedildi. Bu; cüzdanınızdaki bazı coinler, önceden harcanmışsa, örneğin wallet.dat dosyasının bir kopyasını kullandıysanız ve bu kopyadaki coinler harcanmış ise ve burada harcanmış olarak işaretlenmediğinden olabilir. - + Invalid amount Geçersiz meblağ - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. Uyarı: Lütfen bilgisayarınızın tarih ve saatinin doğruluğunu kontrol ediniz! Saatiniz yanlış ise, Gridcoin düzgün çalışmayacaktır. - Warning: This version is obsolete, upgrade required! - Uyarı: Bu sürüm çok eskidir, güncellemeniz gerekir! - - - WARNING: synchronized checkpoint violation detected, but skipped! - UYARI: Senkronize edilen kontrol noktası ihlali tespit edildi ancak atlandı! - - - + Warning: Disk space is low! Uyarı: Disk alanınız düşük! - + Run in the background as a daemon and accept commands Arka planda daemon (servis) olarak çalış ve komutları kabul et - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) Bir cüzdan işlemi değiştiğinde komutu çalıştır (komuttaki %s işlem kimliği ile değiştirilecektir) @@ -4392,12 +4255,12 @@ This label turns red, if the priority is smaller than "medium". Blok oluşturma seçenekleri: - + Failed to listen on any port. Use -listen=0 if you want this. Herhangi bir portun dinlenmesi başarısız oldu. Bunu istiyorsanız -listen=0 seçeneğini kullanınız. - + Specify wallet file (within data directory) Cüzdan dosyası belirtiniz (veri klasörünün içinde) @@ -4422,7 +4285,7 @@ This label turns red, if the priority is smaller than "medium". JSON-RPC bağlantıları için parola - + Execute command when the best block changes (%s in cmd is replaced by block hash) En iyi blok değiştiğinde komutu çalıştır (komut için %s parametresi blok hash değeri ile değiştirilecektir) @@ -4432,12 +4295,12 @@ This label turns red, if the priority is smaller than "medium". -addnode, -seednode ve -connect için DNS aramalarına izin ver - + To use the %s option %s seçeneğini kullanmak için - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -4471,12 +4334,12 @@ If the file does not exist, create it with owner-readable-only file permissions. Dosya mevcut deilse, sadece sahibi için okumayla sınırlı izin ile oluşturunuz. - + Gridcoin version Gridcoin Versiyonu - + Usage: Kullanım: @@ -4486,7 +4349,7 @@ Dosya mevcut deilse, sadece sahibi için okumayla sınırlı izin ile oluşturun Server'a veya Hata Ayıklama Konsoluna Komut Gönder - + List commands Komutları Listele @@ -4511,12 +4374,12 @@ Dosya mevcut deilse, sadece sahibi için okumayla sınırlı izin ile oluşturun Geçersiz -proxy adresi: '%s' - + Unknown network specified in -onlynet: '%s' -onlynet için bilinmeyen bir ağ belirtildi: '%s' - + Insufficient funds Yetersiz Bakiye @@ -4526,17 +4389,17 @@ Dosya mevcut deilse, sadece sahibi için okumayla sınırlı izin ile oluşturun Blok indeksi yükleniyor... - + Add a node to connect to and attempt to keep the connection open Bağlanılacak ağ noktası ekle ve bağlantıyı sürekli açık tutmaya çalış - + Loading wallet... Cüzdan yükleniyor... - + Cannot downgrade wallet Cüzdan eski sürüme geri alınamaz @@ -4546,17 +4409,17 @@ Dosya mevcut deilse, sadece sahibi için okumayla sınırlı izin ile oluşturun Varsayılan adres yazılamadı - + Rescanning... Yeniden taranıyor... - + Done loading Yükleme Tamamlandı - + Error Hata diff --git a/src/qt/locale/bitcoin_uk.ts b/src/qt/locale/bitcoin_uk.ts index e4d1db0ee3..a588bbadb2 100644 --- a/src/qt/locale/bitcoin_uk.ts +++ b/src/qt/locale/bitcoin_uk.ts @@ -299,12 +299,12 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + Sign &message... &Підписати повідомлення... - + &Overview &Огляд @@ -400,7 +400,7 @@ This product includes software developed by the OpenSSL Project for use in the O Вийти - + &Options... &Параметри... @@ -414,19 +414,11 @@ This product includes software developed by the OpenSSL Project for use in the O Encrypt or decrypt wallet - - &Backup Wallet... - &Резервне копіювання гаманця... - &Change Passphrase... Змінити парол&ь... - - Backup wallet to another location - Резервне копіювання гаманця в інше місце - Change the passphrase used for wallet encryption @@ -478,7 +470,7 @@ This product includes software developed by the OpenSSL Project for use in the O П&еревірити повідомлення... - + Wallet Гаманець @@ -488,7 +480,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Send &Відправити @@ -508,28 +500,12 @@ This product includes software developed by the OpenSSL Project for use in the O - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -539,7 +515,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Diagnostics @@ -569,14 +545,14 @@ This product includes software developed by the OpenSSL Project for use in the O - + [testnet] [тестова мережа] - + Gridcoin client @@ -586,7 +562,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Last received block was generated %1. @@ -639,7 +615,7 @@ Address: %4 - + Wallet is <b>encrypted</b> and currently %1 @@ -686,7 +662,7 @@ Address: %4 - + %n second(s) @@ -732,7 +708,37 @@ Address: %4 - + + Scraper: waiting on wallet to sync. + + + + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + &File &Файл @@ -747,17 +753,12 @@ Address: %4 - - &Advanced - - - - + &Help &Довідка - + Processed %n block(s) of transaction history. Оброблено %n блок історії транзакцій. @@ -807,12 +808,12 @@ Address: %4 Синхронізовано - + Catching up... Синхронізується... - + Sent transaction Надіслані транзакції @@ -822,7 +823,7 @@ Address: %4 Отримані транзакції - + URI handling @@ -833,17 +834,13 @@ Address: %4 URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. - - 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 occurred. Gridcoin can no longer continue safely and will quit. @@ -851,7 +848,7 @@ Address: %4 ClientModel - + Network Alert @@ -933,10 +930,6 @@ Address: %4 (un)select all Вибрати/зняти всі - - List mode - Списком - Amount @@ -1302,7 +1295,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1515,10 +1508,6 @@ This label turns red, if the priority is smaller than "medium". Map port using &UPnP Відображення порту через &UPnP - - Proxy &IP: - &IP проксі: - &Port: @@ -1752,6 +1741,14 @@ This label turns red, if the priority is smaller than "medium". + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1813,7 +1810,7 @@ This label turns red, if the priority is smaller than "medium". RPCConsole - + @@ -1825,7 +1822,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A Н/Д @@ -1845,12 +1842,12 @@ This label turns red, if the priority is smaller than "medium". Час запуску - + Gridcoin - Debug Console - + Boost version @@ -1925,7 +1922,12 @@ This label turns red, if the priority is smaller than "medium". &Відкрити - + + &Scraper + + + + Command-line options Параметри командного рядка @@ -2010,7 +2012,7 @@ This label turns red, if the priority is smaller than "medium". Наберіть <b>help</b> для перегляду доступних команд. - + %1 B %1 Б @@ -2045,7 +2047,7 @@ This label turns red, if the priority is smaller than "medium". - + Welcome to the Gridcoin RPC console! @@ -2312,22 +2314,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: &Кількість: - + Pay &To: &Отримувач: - + &Label: &Мітка: - + Alt+A Alt+A @@ -2347,12 +2349,12 @@ This label turns red, if the priority is smaller than "medium". Повідомлення: - + Form Форма - + Enter a label for this address to add it to your address book @@ -2373,17 +2375,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2634,22 +2631,47 @@ This label turns red, if the priority is smaller than "medium". - + Source - + Generated in CoinBase - - Generated, PoS + + MINED - POS - + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From @@ -2769,10 +2791,6 @@ This label turns red, if the priority is smaller than "medium". Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - Інформація - Amount @@ -2802,12 +2820,7 @@ This label turns red, if the priority is smaller than "medium". Даний діалог показує детальну статистику по вибраній транзакції - - View Attachment - - - - + Execute Contract @@ -2816,21 +2829,11 @@ This label turns red, if the priority is smaller than "medium". C&lose З&акрити - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Дата @@ -2904,7 +2907,7 @@ This label turns red, if the priority is smaller than "medium". - + Received with @@ -2924,32 +2927,42 @@ This label turns red, if the priority is smaller than "medium". - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) - + Transaction status. Hover over this field to show number of confirmations. @@ -3143,17 +3156,10 @@ This label turns red, if the priority is smaller than "medium". - - UpgradeDialog - - Hide - Приховати - - VotingChartDialog - + Poll Results @@ -3297,7 +3303,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3330,7 +3336,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3338,12 +3344,12 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: Параметри: - + This help message @@ -3378,12 +3384,12 @@ This label turns red, if the priority is smaller than "medium". - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3393,7 +3399,7 @@ This label turns red, if the priority is smaller than "medium". - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3403,7 +3409,7 @@ This label turns red, if the priority is smaller than "medium". - + Connect only to the specified node(s) @@ -3413,22 +3419,22 @@ This label turns red, if the priority is smaller than "medium". Підключитись до вузла, щоб отримати список адрес інших учасників та від'єднатись - + Specify your own public address Вкажіть вашу власну публічну адресу - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -3438,22 +3444,22 @@ This label turns red, if the priority is smaller than "medium". - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + Threshold for disconnecting misbehaving peers (default: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) @@ -3548,6 +3554,16 @@ This label turns red, if the priority is smaller than "medium". Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3608,6 +3624,11 @@ This label turns red, if the priority is smaller than "medium". ERROR + + + Entire balance reserved + + Expires @@ -3673,11 +3694,6 @@ This label turns red, if the priority is smaller than "medium". Message - - - Messate Type - - Miner: @@ -3714,12 +3730,7 @@ This label turns red, if the priority is smaller than "medium". - - No coins; - - - - + Offline; @@ -3729,12 +3740,7 @@ This label turns red, if the priority is smaller than "medium". - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3814,12 +3820,12 @@ This label turns red, if the priority is smaller than "medium". - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) @@ -3829,12 +3835,12 @@ This label turns red, if the priority is smaller than "medium". Приймати команди із командного рядка та команди JSON-RPC - + Use the test network - + Output extra debugging information. Implies all other -debug* options @@ -3844,7 +3850,7 @@ This label turns red, if the priority is smaller than "medium". - + Prepend debug output with timestamp @@ -3854,7 +3860,7 @@ This label turns red, if the priority is smaller than "medium". - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -3864,7 +3870,7 @@ This label turns red, if the priority is smaller than "medium". - + Send commands to node running on <ip> (default: 127.0.0.1) @@ -3874,7 +3880,7 @@ This label turns red, if the priority is smaller than "medium". - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -3884,7 +3890,7 @@ This label turns red, if the priority is smaller than "medium". - + Upgrade wallet to latest format @@ -3899,7 +3905,7 @@ This label turns red, if the priority is smaller than "medium". - + Attempt to recover private keys from a corrupt wallet.dat @@ -3919,7 +3925,7 @@ This label turns red, if the priority is smaller than "medium". - + Boinc Mining @@ -3929,7 +3935,7 @@ This label turns red, if the priority is smaller than "medium". - + Error obtaining next project. Error 06172014. @@ -3979,12 +3985,32 @@ This label turns red, if the priority is smaller than "medium". - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -3999,12 +4025,12 @@ This label turns red, if the priority is smaller than "medium". - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -4024,17 +4050,17 @@ This label turns red, if the priority is smaller than "medium". - + Invalid amount for -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - + Invalid amount for -mininput=<amount>: '%s' @@ -4044,22 +4070,22 @@ This label turns red, if the priority is smaller than "medium". - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4069,10 +4095,15 @@ This label turns red, if the priority is smaller than "medium". - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4089,17 +4120,17 @@ This label turns red, if the priority is smaller than "medium". - + Unknown -socks proxy version requested: %i - + Invalid -tor address: '%s' - + Cannot resolve -bind address: '%s' @@ -4109,7 +4140,7 @@ This label turns red, if the priority is smaller than "medium". - + Invalid amount for -reservebalance=<amount> @@ -4124,22 +4155,22 @@ This label turns red, if the priority is smaller than "medium". - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete - + Error loading wallet.dat @@ -4159,17 +4190,17 @@ This label turns red, if the priority is smaller than "medium". - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4179,47 +4210,47 @@ This label turns red, if the priority is smaller than "medium". - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - + Warning: Disk space is low! - + Run in the background as a daemon and accept commands Запустити в фоновому режимі (як демон) та приймати команди - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) Виконати команду, коли транзакція гаманця зміниться (замість %s в команді буде підставлено ідентифікатор транзакції) @@ -4229,12 +4260,12 @@ This label turns red, if the priority is smaller than "medium". Опції створення блоку: - + Failed to listen on any port. Use -listen=0 if you want this. Не вдалося слухати на жодному порту. Використовуйте -listen=0, якщо ви хочете цього. - + Specify wallet file (within data directory) Вкажіть файл гаманця (в межах каталогу даних) @@ -4259,7 +4290,7 @@ This label turns red, if the priority is smaller than "medium". Пароль для JSON-RPC-з'єднань - + Execute command when the best block changes (%s in cmd is replaced by block hash) Виконати команду, коли з'явиться новий блок (%s в команді змінюється на хеш блоку) @@ -4269,12 +4300,12 @@ This label turns red, if the priority is smaller than "medium". Дозволити пошук в DNS для команд -addnode, -seednode та -connect - + To use the %s option - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -4306,12 +4337,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Gridcoin version - + Usage: Використання: @@ -4321,7 +4352,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + List commands @@ -4346,12 +4377,12 @@ If the file does not exist, create it with owner-readable-only file permissions. Помилка в адресі проксі-сервера: «%s» - + Unknown network specified in -onlynet: '%s' Невідома мережа вказана в -onlynet: «%s» - + Insufficient funds Недостатньо коштів @@ -4361,17 +4392,17 @@ If the file does not exist, create it with owner-readable-only file permissions. Завантаження індексу блоків... - + Add a node to connect to and attempt to keep the connection open Додати вузол до підключення і лишити його відкритим - + Loading wallet... Завантаження гаманця... - + Cannot downgrade wallet Не вдається понизити версію гаманця @@ -4381,17 +4412,17 @@ If the file does not exist, create it with owner-readable-only file permissions. Неможливо записати типову адресу - + Rescanning... Сканування... - + Done loading Завантаження завершене - + Error Помилка diff --git a/src/qt/locale/bitcoin_ur_PK.ts b/src/qt/locale/bitcoin_ur_PK.ts index 526c28ff48..24bfd6829e 100644 --- a/src/qt/locale/bitcoin_ur_PK.ts +++ b/src/qt/locale/bitcoin_ur_PK.ts @@ -299,7 +299,7 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + Wallet @@ -309,7 +309,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Overview @@ -425,28 +425,12 @@ This product includes software developed by the OpenSSL Project for use in the O - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -456,7 +440,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Diagnostics @@ -561,7 +545,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &File @@ -576,24 +560,49 @@ This product includes software developed by the OpenSSL Project for use in the O - - &Advanced + + Scraper: waiting on wallet to sync. - + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + &Help - + [testnet] - + Gridcoin client @@ -616,12 +625,12 @@ This product includes software developed by the OpenSSL Project for use in the O - + Catching up... - + Last received block was generated %1. @@ -684,7 +693,7 @@ Address: %4 - + Wallet is <b>encrypted</b> and currently %1 @@ -699,7 +708,7 @@ Address: %4 - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -709,13 +718,13 @@ Address: %4 - + URI handling - + %n second(s) ago @@ -747,7 +756,7 @@ Address: %4 - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. @@ -790,7 +799,7 @@ Address: %4 - + %n second(s) @@ -822,7 +831,7 @@ Address: %4 - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. @@ -830,7 +839,7 @@ Address: %4 ClientModel - + Network Alert @@ -1277,7 +1286,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1723,6 +1732,14 @@ This label turns red, if the priority is smaller than "medium". + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1789,7 +1806,7 @@ This label turns red, if the priority is smaller than "medium". - + &Information @@ -1811,7 +1828,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A @@ -1960,6 +1977,11 @@ This label turns red, if the priority is smaller than "medium". Clear console + + + &Scraper + + Yes @@ -1986,7 +2008,7 @@ This label turns red, if the priority is smaller than "medium". - + %1 B @@ -2288,12 +2310,12 @@ This label turns red, if the priority is smaller than "medium". - + &Label: - + Enter a label for this address to add it to your address book @@ -2339,22 +2361,17 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - + A&mount: - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2603,22 +2620,17 @@ This label turns red, if the priority is smaller than "medium". - + Source - + Generated in CoinBase - - Generated, PoS - - - - + From @@ -2738,7 +2750,37 @@ This label turns red, if the priority is smaller than "medium". - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + Amount رقم @@ -2766,12 +2808,7 @@ This label turns red, if the priority is smaller than "medium". - - View Attachment - - - - + Execute Contract @@ -2780,21 +2817,11 @@ This label turns red, if the priority is smaller than "medium". C&lose بند - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date تاریخ @@ -2867,7 +2894,7 @@ This label turns red, if the priority is smaller than "medium". - + Received with @@ -2887,32 +2914,42 @@ This label turns red, if the priority is smaller than "medium". - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) - + Transaction status. Hover over this field to show number of confirmations. @@ -3109,7 +3146,7 @@ This label turns red, if the priority is smaller than "medium". VotingChartDialog - + Poll Results @@ -3253,7 +3290,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3286,7 +3323,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3294,12 +3331,12 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + To use the %s option - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -3346,7 +3383,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Boinc Mining @@ -3356,7 +3393,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error obtaining next project. Error 06172014. @@ -3396,12 +3433,32 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -3451,7 +3508,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + List commands @@ -3461,7 +3518,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + None @@ -3551,6 +3608,16 @@ If the file does not exist, create it with owner-readable-only file permissions. Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3611,6 +3678,11 @@ If the file does not exist, create it with owner-readable-only file permissions. ERROR + + + Entire balance reserved + + Expires @@ -3671,11 +3743,6 @@ If the file does not exist, create it with owner-readable-only file permissions. Message - - - Messate Type - - Miner: @@ -3712,12 +3779,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - No coins; - - - - + Offline; @@ -3732,12 +3794,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3812,12 +3869,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3827,12 +3884,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Allow DNS lookups for -addnode, -seednode and -connect - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3842,12 +3899,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Add a node to connect to and attempt to keep the connection open - + Connect only to the specified node(s) @@ -3857,22 +3914,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Specify your own public address - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -3882,27 +3939,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + 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: 5000) @@ -3912,7 +3969,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Use UPnP to map the listening port (default: 1 when listening) @@ -3922,12 +3979,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) @@ -3937,7 +3994,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Run in the background as a daemon and accept commands @@ -3947,7 +4004,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Output extra debugging information. Implies all other -debug* options @@ -3957,7 +4014,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Prepend debug output with timestamp @@ -3987,7 +4044,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -3997,12 +4054,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Send commands to node running on <ip> (default: 127.0.0.1) - + Execute command when the best block changes (%s in cmd is replaced by block hash) @@ -4012,12 +4069,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Require a confirmations for change (default: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -4027,7 +4084,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Upgrade wallet to latest format @@ -4042,12 +4099,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Attempt to recover private keys from a corrupt wallet.dat - + How many blocks to check at startup (default: 2500, 0 = all) @@ -4062,12 +4119,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Block creation options: - + Set minimum block size in bytes (default: 0) @@ -4077,12 +4134,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -4102,17 +4159,17 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid amount for -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - + Invalid amount for -mininput=<amount>: '%s' @@ -4122,22 +4179,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4147,7 +4204,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Weight @@ -4157,7 +4214,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Unknown -socks proxy version requested: %i @@ -4167,7 +4224,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid -proxy address: '%s' @@ -4177,22 +4234,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Cannot resolve -bind address: '%s' - + Failed to listen on any port. Use -listen=0 if you want this. - + Cannot resolve -externalip address: '%s' - + Invalid amount for -reservebalance=<amount> @@ -4217,20 +4274,25 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4242,12 +4304,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error loading wallet.dat - + Cannot downgrade wallet @@ -4257,12 +4319,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Rescanning... - + Importing blockchain data file. @@ -4282,22 +4344,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Done loading - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4307,27 +4369,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount @@ -4337,17 +4399,17 @@ If the file does not exist, create it with owner-readable-only file permissions. ناکافی فنڈز - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - + Warning: Disk space is low! - + Error نقص diff --git a/src/qt/locale/bitcoin_vi.ts b/src/qt/locale/bitcoin_vi.ts index 7909c89153..f2c0304ee6 100644 --- a/src/qt/locale/bitcoin_vi.ts +++ b/src/qt/locale/bitcoin_vi.ts @@ -299,7 +299,7 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + Wallet @@ -309,7 +309,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Overview @@ -425,28 +425,12 @@ This product includes software developed by the OpenSSL Project for use in the O - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -456,7 +440,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Diagnostics @@ -561,7 +545,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &File @@ -576,24 +560,49 @@ This product includes software developed by the OpenSSL Project for use in the O - - &Advanced + + Scraper: waiting on wallet to sync. - + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + &Help - + [testnet] - + Gridcoin client @@ -615,12 +624,12 @@ This product includes software developed by the OpenSSL Project for use in the O - + Catching up... - + Last received block was generated %1. @@ -683,7 +692,7 @@ Address: %4 - + Wallet is <b>encrypted</b> and currently %1 @@ -698,7 +707,7 @@ Address: %4 - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -708,13 +717,13 @@ Address: %4 - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. - + %n second(s) ago @@ -742,7 +751,7 @@ Address: %4 - + URI handling @@ -785,7 +794,7 @@ Address: %4 - + %n second(s) @@ -813,7 +822,7 @@ Address: %4 - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. @@ -821,7 +830,7 @@ Address: %4 ClientModel - + Network Alert @@ -1268,7 +1277,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1714,6 +1723,14 @@ This label turns red, if the priority is smaller than "medium". + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1780,7 +1797,7 @@ This label turns red, if the priority is smaller than "medium". - + &Information @@ -1802,7 +1819,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A @@ -1951,6 +1968,11 @@ This label turns red, if the priority is smaller than "medium". Clear console + + + &Scraper + + Yes @@ -1977,7 +1999,7 @@ This label turns red, if the priority is smaller than "medium". - + %1 B @@ -2279,12 +2301,12 @@ This label turns red, if the priority is smaller than "medium". - + &Label: - + Enter a label for this address to add it to your address book @@ -2330,22 +2352,17 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - + A&mount: - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2592,22 +2609,17 @@ This label turns red, if the priority is smaller than "medium". - + Source - + Generated in CoinBase - - Generated, PoS - - - - + From @@ -2726,7 +2738,37 @@ This label turns red, if the priority is smaller than "medium". - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + Amount S? l??ng @@ -2754,12 +2796,7 @@ This label turns red, if the priority is smaller than "medium". - - View Attachment - - - - + Execute Contract @@ -2768,21 +2805,11 @@ This label turns red, if the priority is smaller than "medium". C&lose - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date @@ -2854,7 +2881,7 @@ This label turns red, if the priority is smaller than "medium". - + Received with @@ -2874,32 +2901,42 @@ This label turns red, if the priority is smaller than "medium". - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) - + Transaction status. Hover over this field to show number of confirmations. @@ -3096,7 +3133,7 @@ This label turns red, if the priority is smaller than "medium". VotingChartDialog - + Poll Results @@ -3240,7 +3277,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3273,7 +3310,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3281,12 +3318,12 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + To use the %s option - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -3301,12 +3338,12 @@ for example: alertnotify=echo %%s | mail -s "Gridcoin Alert" admin@foo - + Error - + An error occurred while setting up the RPC port %u for listening on IPv6, falling back to IPv4: %s @@ -3338,7 +3375,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Boinc Mining @@ -3348,7 +3385,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error obtaining next project. Error 06172014. @@ -3388,12 +3425,32 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -3443,7 +3500,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + List commands @@ -3453,7 +3510,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + None @@ -3543,6 +3600,16 @@ If the file does not exist, create it with owner-readable-only file permissions. Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3603,6 +3670,11 @@ If the file does not exist, create it with owner-readable-only file permissions. ERROR + + + Entire balance reserved + + Expires @@ -3663,11 +3735,6 @@ If the file does not exist, create it with owner-readable-only file permissions. Message - - - Messate Type - - Miner: @@ -3704,12 +3771,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - No coins; - - - - + Offline; @@ -3724,12 +3786,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3804,12 +3861,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3819,12 +3876,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Allow DNS lookups for -addnode, -seednode and -connect - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3834,12 +3891,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Add a node to connect to and attempt to keep the connection open - + Connect only to the specified node(s) @@ -3849,22 +3906,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Specify your own public address - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -3874,27 +3931,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + 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: 5000) @@ -3904,7 +3961,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Use UPnP to map the listening port (default: 1 when listening) @@ -3914,12 +3971,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) @@ -3929,7 +3986,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Run in the background as a daemon and accept commands @@ -3939,7 +3996,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Output extra debugging information. Implies all other -debug* options @@ -3949,7 +4006,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Prepend debug output with timestamp @@ -3979,7 +4036,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -3989,12 +4046,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Send commands to node running on <ip> (default: 127.0.0.1) - + Execute command when the best block changes (%s in cmd is replaced by block hash) @@ -4004,12 +4061,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Require a confirmations for change (default: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -4019,7 +4076,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Upgrade wallet to latest format @@ -4034,12 +4091,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Attempt to recover private keys from a corrupt wallet.dat - + How many blocks to check at startup (default: 2500, 0 = all) @@ -4054,12 +4111,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Block creation options: - + Set minimum block size in bytes (default: 0) @@ -4069,12 +4126,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -4094,17 +4151,17 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid amount for -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - + Invalid amount for -mininput=<amount>: '%s' @@ -4114,22 +4171,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4139,7 +4196,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Weight @@ -4149,7 +4206,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Unknown -socks proxy version requested: %i @@ -4159,7 +4216,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid -proxy address: '%s' @@ -4169,22 +4226,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Cannot resolve -bind address: '%s' - + Failed to listen on any port. Use -listen=0 if you want this. - + Cannot resolve -externalip address: '%s' - + Invalid amount for -reservebalance=<amount> @@ -4209,20 +4266,25 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4234,12 +4296,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error loading wallet.dat - + Cannot downgrade wallet @@ -4249,12 +4311,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Rescanning... - + Importing blockchain data file. @@ -4274,22 +4336,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Done loading - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4299,27 +4361,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount @@ -4329,12 +4391,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - + Warning: Disk space is low! diff --git a/src/qt/locale/bitcoin_vi_VN.ts b/src/qt/locale/bitcoin_vi_VN.ts index 3c469581d5..aba6c9089c 100644 --- a/src/qt/locale/bitcoin_vi_VN.ts +++ b/src/qt/locale/bitcoin_vi_VN.ts @@ -299,12 +299,12 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + Sign &message... Chứ ký & Tin nhắn... - + &Overview &Tổng quan @@ -400,7 +400,7 @@ This product includes software developed by the OpenSSL Project for use in the O Thoát chương trình - + &Options... &Tùy chọn... @@ -414,19 +414,11 @@ This product includes software developed by the OpenSSL Project for use in the O Encrypt or decrypt wallet - - &Backup Wallet... - &Sao lưu ví tiền... - &Change Passphrase... &Thay đổi mật khẩu... - - Backup wallet to another location - Sao lưu ví tiền ở vị trí khác - Change the passphrase used for wallet encryption @@ -473,7 +465,7 @@ This product includes software developed by the OpenSSL Project for use in the O &Tin nhắn xác thực - + Wallet @@ -483,7 +475,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Send &Gửi @@ -503,28 +495,12 @@ This product includes software developed by the OpenSSL Project for use in the O - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -534,7 +510,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + &Diagnostics @@ -569,14 +545,14 @@ This product includes software developed by the OpenSSL Project for use in the O - + [testnet] - + Gridcoin client @@ -593,7 +569,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Last received block was generated %1. @@ -646,7 +622,7 @@ Address: %4 - + Wallet is <b>encrypted</b> and currently %1 @@ -693,7 +669,7 @@ Address: %4 - + %n second(s) @@ -731,7 +707,37 @@ Address: %4 - + + Scraper: waiting on wallet to sync. + + + + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + &File &File @@ -746,17 +752,12 @@ Address: %4 - - &Advanced - - - - + &Help Trợ &giúp - + %n second(s) ago @@ -789,12 +790,12 @@ Address: %4 Đã cập nhật - + Catching up... Bắt kịp... - + Sent transaction Giao dịch đã gửi @@ -804,7 +805,7 @@ Address: %4 Giao dịch đang tới - + URI can not be parsed! This can be caused by an invalid Gridcoin address or malformed URI parameters. @@ -815,17 +816,13 @@ Address: %4 URI handling - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Ví tiền <b> đã được mã hóa</b>và hiện <b>đang mở</b> - Wallet is <b>encrypted</b> and currently <b>locked</b> Ví tiền <b> đã được mã hóa</b>và hiện <b>đang khóa</b> - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. @@ -833,7 +830,7 @@ Address: %4 ClientModel - + Network Alert @@ -915,10 +912,6 @@ Address: %4 Priority - - List mode - Chế độ danh sách - Amount @@ -1284,7 +1277,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1532,10 +1525,6 @@ This label turns red, if the priority is smaller than "medium". &Apply - - Proxy &IP: - Proxy &IP: - &Port: @@ -1734,6 +1723,14 @@ This label turns red, if the priority is smaller than "medium". + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1800,7 +1797,7 @@ This label turns red, if the priority is smaller than "medium". - + &Information Thông tin @@ -1822,7 +1819,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A @@ -1967,7 +1964,12 @@ This label turns red, if the priority is smaller than "medium". - + + &Scraper + + + + Block chain Block chain @@ -1992,7 +1994,7 @@ This label turns red, if the priority is smaller than "medium". Gõ <b>help</b> để xem nhưng câu lệnh có sẵn - + %1 B %1 B @@ -2027,7 +2029,7 @@ This label turns red, if the priority is smaller than "medium". - + Welcome to the Gridcoin RPC console! @@ -2294,22 +2296,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: Lượng: - + &Label: &Nhãn - + Form Form - + Enter a label for this address to add it to your address book @@ -2355,17 +2357,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2612,22 +2609,47 @@ This label turns red, if the priority is smaller than "medium". - + Source - + Generated in CoinBase - - Generated, PoS + + MINED - POS - + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + From @@ -2745,10 +2767,6 @@ This label turns red, if the priority is smaller than "medium". Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - Thông tin - Amount @@ -2778,12 +2796,7 @@ This label turns red, if the priority is smaller than "medium". - - View Attachment - - - - + Execute Contract @@ -2792,21 +2805,11 @@ This label turns red, if the priority is smaller than "medium". C&lose Đó&ng - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date Ngày tháng @@ -2878,7 +2881,7 @@ This label turns red, if the priority is smaller than "medium". - + Received with @@ -2898,32 +2901,42 @@ This label turns red, if the priority is smaller than "medium". - - Mined - DPOR + + MINED - POS - - Minted - (Local) DPOR + + MINED - POR - - Mined - PoR + + MINED - ORPHANED - - Mined - Interest + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) - + Transaction status. Hover over this field to show number of confirmations. @@ -3117,17 +3130,10 @@ This label turns red, if the priority is smaller than "medium". - - UpgradeDialog - - Hide - Ẩn - - VotingChartDialog - + Poll Results @@ -3271,7 +3277,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3304,7 +3310,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3312,7 +3318,7 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: Lựa chọn: @@ -3322,7 +3328,7 @@ This label turns red, if the priority is smaller than "medium". Đang đọc các địa chỉ... - + Acceptable ciphers (default: TLSv1.2+HIGH:TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!3DES:@STRENGTH) @@ -3337,7 +3343,7 @@ This label turns red, if the priority is smaller than "medium". - + Boinc Mining @@ -3347,7 +3353,7 @@ This label turns red, if the priority is smaller than "medium". - + Error obtaining next project. Error 06172014. @@ -3392,12 +3398,32 @@ This label turns red, if the priority is smaller than "medium". - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -3417,12 +3443,12 @@ This label turns red, if the priority is smaller than "medium". - + Loading wallet... Đang đọc ví... - + Cannot downgrade wallet Không downgrade được ví @@ -3432,22 +3458,22 @@ This label turns red, if the priority is smaller than "medium". Không ghi được địa chỉ mặc định - + Rescanning... Đang quét lại... - + Done loading Đã nạp xong - + Error Lỗi - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -3569,6 +3595,16 @@ If the file does not exist, create it with owner-readable-only file permissions. Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3629,6 +3665,11 @@ If the file does not exist, create it with owner-readable-only file permissions. ERROR + + + Entire balance reserved + + Expires @@ -3689,11 +3730,6 @@ If the file does not exist, create it with owner-readable-only file permissions. Message Tin nhắn - - - Messate Type - - Miner: @@ -3730,12 +3766,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - No coins; - - - - + Offline; @@ -3745,12 +3776,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3825,7 +3851,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + List commands @@ -3840,7 +3866,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + This help message @@ -3875,12 +3901,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3890,12 +3916,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Allow DNS lookups for -addnode, -seednode and -connect - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3905,12 +3931,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Add a node to connect to and attempt to keep the connection open - + Connect only to the specified node(s) @@ -3920,22 +3946,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Specify your own public address - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -3945,27 +3971,27 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + 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: 5000) @@ -3975,7 +4001,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Use UPnP to map the listening port (default: 1 when listening) @@ -3985,12 +4011,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) @@ -4000,7 +4026,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Run in the background as a daemon and accept commands @@ -4010,7 +4036,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Output extra debugging information. Implies all other -debug* options @@ -4020,7 +4046,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Prepend debug output with timestamp @@ -4050,7 +4076,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -4060,12 +4086,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Send commands to node running on <ip> (default: 127.0.0.1) - + Execute command when the best block changes (%s in cmd is replaced by block hash) @@ -4075,12 +4101,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Require a confirmations for change (default: 0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -4090,7 +4116,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Upgrade wallet to latest format @@ -4105,12 +4131,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Attempt to recover private keys from a corrupt wallet.dat - + How many blocks to check at startup (default: 2500, 0 = all) @@ -4125,12 +4151,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Block creation options: - + Set minimum block size in bytes (default: 0) @@ -4140,12 +4166,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -4165,17 +4191,17 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid amount for -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - + Invalid amount for -mininput=<amount>: '%s' @@ -4185,22 +4211,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4210,10 +4236,15 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4230,7 +4261,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Unknown -socks proxy version requested: %i @@ -4240,7 +4271,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Invalid -proxy address: '%s' @@ -4250,22 +4281,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Cannot resolve -bind address: '%s' - + Failed to listen on any port. Use -listen=0 if you want this. - + Cannot resolve -externalip address: '%s' - + Invalid amount for -reservebalance=<amount> @@ -4280,22 +4311,22 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete - + Error loading wallet.dat @@ -4315,17 +4346,17 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4335,37 +4366,37 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - + Warning: Disk space is low! diff --git a/src/qt/locale/bitcoin_zh_CN.ts b/src/qt/locale/bitcoin_zh_CN.ts index 285605bef3..74755fca72 100644 --- a/src/qt/locale/bitcoin_zh_CN.ts +++ b/src/qt/locale/bitcoin_zh_CN.ts @@ -23,20 +23,6 @@ Distributed under the MIT/X11 software license, see the accompanying file COPYIN This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (https://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. - - -This is experimental software. - -Distributed under the MIT/X11 software license, see the accompanying file COPYING 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. - -这是一套实验性软件。 - -本软件是依据MIT/X11软件授权条款散布。详情见附带的COPYING或http://www.opensource.org/licenses/mit-license.php. - -本产品包含了由OpenSSL Project开发的OpenSSL Toolkit (https://www.openssl.org/)和Eric Young (eay@cryptsoft.com) 的加密软件,以及Thomas Bernard的UPnP软件。 - AddressBookPage @@ -313,12 +299,12 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + Gridcoin 格雷德币 - + Send coins to a Gridcoin address 向指定的地址发送格雷德币 @@ -383,30 +369,6 @@ This product includes software developed by the OpenSSL Project for use in the O Gridcoin rewards distributed computing with BOINC 格雷德币给BOINC分布式计算参与者提供报酬 - - &Rebuild Block Chain - &重建区块链 - - - Rebuild Block Chain - 重建区块链 - - - &Download Blocks - &下载区块 - - - Download Blocks - 下载区块 - - - &Upgrade Client - 更新客户端 - - - Upgrade Client - 更新客户端 - &About Gridcoin @@ -418,36 +380,12 @@ This product includes software developed by the OpenSSL Project for use in the O 显示关于格雷德币的信息 - - &Neural Network - &神经网络 - - - - Neural Network - 神经网络 - - - &Advanced Configuration - &高级设置 - - - Advanced Configuration - 高级设置 - - - - &New User Wizard - &新用户向导 - - - - + New User Wizard 新用户向导 - + &Voting &投票 @@ -457,15 +395,7 @@ This product includes software developed by the OpenSSL Project for use in the O 投票 - &Foundation - &基金会 - - - Foundation - 基金会 - - - + &Diagnostics &诊断 @@ -474,14 +404,6 @@ This product includes software developed by the OpenSSL Project for use in the O Diagnostics 诊断 - - FA&Q - 常见问题 - - - Interactive FAQ - 交互式提问 - Modify configuration options for Gridcoin @@ -538,24 +460,19 @@ This product includes software developed by the OpenSSL Project for use in the O 导出当前标签页的数据 - + &Community 社区 - - &Advanced - &高级 - - - + [testnet] [测试网络] - + Gridcoin client 格雷德币客户端 @@ -565,23 +482,7 @@ This product includes software developed by the OpenSSL Project for use in the O 与格雷德币网络建立了 %1 个可用连接 - %1 second(s) ago - %1 秒前 - - - %1 minute(s) ago - %1 分钟前 - - - %1 hour(s) ago - %1 小时前 - - - %1 day(s) ago - %1 天前 - - - + Last received block was generated %1. 最新收到的区块产生于 %1。 @@ -641,7 +542,7 @@ Address: %4 ?} {4?} - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -651,19 +552,7 @@ Address: %4 - Date: %1 -Amount: %2 -Type: %3 -Address: %4 - - 日期: %1 -金额: %2 -类型: %3 -地址: %4 - - - - + URI handling URI处理 @@ -722,7 +611,7 @@ Address: %4 - + %n second(s) %n 秒 @@ -750,39 +639,7 @@ Address: %4 - Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. %4 - 正在进行权益增值。<br>您的权重为%1<br>全网权重为%2<br><b>估计</b>获得回报的时间为%3. %4 - - - Not staking because wallet is locked - 未进行权益增值,因为钱包已锁定 - - - Not staking because wallet is offline - 未进行权益增值,因为钱包处于离线状态 - - - Not staking because wallet is syncing - 未进行权益增值,因为钱包正在同步 - - - Not staking because you don't have mature coins and stake weight is too low. - 未进行权益增值,因为钱包中没有成熟的格雷德币,且权益增值权重过低。 - - - Not staking because you don't have mature coins - 未进行权益增值,因为钱包中没有成熟的格雷德币 - - - Searching for mature coins... Please wait - 搜寻成熟货币... - - - Not staking - 未进行权益增值 - - - + &Overview 概况(&O) @@ -812,7 +669,7 @@ Address: %4 退出程序 - + &Options... 选项(&O)... @@ -821,19 +678,11 @@ Address: %4 &Encrypt Wallet... 加密钱包(&E)... - - &Backup Wallet... - 备份钱包(&B)... - &Change Passphrase... 更改密码(&C)... - - Backup wallet to another location - 备份钱包到其他文件夹 - Change the passphrase used for wallet encryption @@ -855,12 +704,12 @@ Address: %4 验证消息(&V)... - + Wallet 钱包 - + &Send 发送(&S) @@ -870,12 +719,12 @@ Address: %4 接收(&R) - + &Show / Hide 显示 / 隐藏(&S) - + &File 文件(&F) @@ -885,12 +734,12 @@ Address: %4 设置(&S) - + &Help 帮助(&H) - + Processed %n block(s) of transaction history. 已处理 %n 个交易历史数据块。 @@ -930,12 +779,12 @@ Address: %4 已是最新 - + Catching up... 更新中... - + Sent transaction 发送交易 @@ -945,16 +794,42 @@ Address: %4 流入交易 - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - 钱包已被<b>加密</b>,当前为<b>解锁</b>状态 + + Scraper: waiting on wallet to sync. + + + + + Scraper: superblock not needed - inactive. + - + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + Wallet is <b>encrypted</b> and currently <b>locked</b> 钱包已被<b>加密</b>,当前为<b>锁定</b>状态 - + A fatal error occurred. Gridcoin can no longer continue safely and will quit. 发生致命错误。格雷德币不再安全,即将退出。 @@ -962,7 +837,7 @@ Address: %4 ClientModel - + Network Alert 网络警报 @@ -1044,10 +919,6 @@ Address: %4 (un)select all (取消)全选 - - List mode - 列表模式 - Amount @@ -1422,7 +1293,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll 创建民意调查 @@ -1635,10 +1506,6 @@ This label turns red, if the priority is smaller than "medium". Map port using &UPnP 使用 &UPnP 映射端口 - - Proxy &IP: - 代理服务器 &IP: - &Port: @@ -1805,10 +1672,6 @@ This label turns red, if the priority is smaller than "medium". Error Messages: - - DPOR Weight: - DPOR权重: - Magnitude: @@ -1834,10 +1697,6 @@ This label turns red, if the priority is smaller than "medium". Current Poll: 当前民意调查: - - Client Messages: - 钱包消息: - Available: @@ -1880,6 +1739,14 @@ This label turns red, if the priority is smaller than "medium". 未完成同步 + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1941,7 +1808,7 @@ This label turns red, if the priority is smaller than "medium". RPCConsole - + @@ -1953,7 +1820,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A 不可用 @@ -2038,7 +1905,12 @@ This label turns red, if the priority is smaller than "medium". 输出: - + + &Scraper + + + + Debug log file 调试日志文件 @@ -2073,7 +1945,7 @@ This label turns red, if the priority is smaller than "medium". - + %1 B %1 B @@ -2108,12 +1980,12 @@ This label turns red, if the priority is smaller than "medium". %1 时 %2 分 - + Gridcoin - Debug Console 格雷德币 - 调试控制台 - + Boost version 加速器版本 @@ -2440,27 +2312,27 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: 金额(&M) - + Pay &To: 付给(&T): - + Form 表单 - + &Label: 标签(&L)? - + The address to send the payment to (e.g. Sjz75uKHzUQJnSdzvpiigEGxseKkDhQToX) 付款地址 (例如:Sjz75uKHzUQJnSdzvpiigEGxseKkDhQToX) @@ -2475,21 +2347,12 @@ This label turns red, if the priority is smaller than "medium". 移除此接收者 - + Send Custom Message to a Gridcoin Recipient 向格雷德币收款者发送常用消息 - Track Coins - 追踪货币 - - - - Add Attachment - 添加附件 - - - + Alt+A Alt+A @@ -2762,49 +2625,58 @@ This label turns red, if the priority is smaller than "medium". - + Source - Generated - 生成 - - - + From 来自 - Block Type - 区块类型 + + Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. + 生成的格雷德币必须经过 110 个区块的成熟期后才可以使用。区块被生成后,它将被广播到网络中以加入区块链。如果它未能进入区块链,其状态将变为“未被接受”并且不可使用。有些时候,可能会有另一个节点比你早几秒钟成功生成一个区块,此时就可能发生这种情况。 - Block Number - 区块数 + + Generated in CoinBase + - - Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - 生成的格雷德币必须经过 110 个区块的成熟期后才可以使用。区块被生成后,它将被广播到网络中以加入区块链。如果它未能进入区块链,其状态将变为“未被接受”并且不可使用。有些时候,可能会有另一个节点比你早几秒钟成功生成一个区块,此时就可能发生这种情况。 + + MINED - POS + - Information - 信息 + + MINED - POR + - - Generated in CoinBase + + MINED - ORPHANED - - Generated, PoS + + POS SIDE STAKE - + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + unknown 未知 @@ -2911,18 +2783,6 @@ This label turns red, if the priority is smaller than "medium". Transaction Inputs - - Transaction ID - 交易ID - - - Transaction - 交易 - - - Inputs - 输入 - Amount @@ -2952,12 +2812,7 @@ This label turns red, if the priority is smaller than "medium". 当前面板显示了交易的详细信息 - - View Attachment - 查看附件 - - - + Execute Contract 履行合同 @@ -2966,21 +2821,11 @@ This label turns red, if the priority is smaller than "medium". C&lose 关闭(&l) - - - Gridcoin Documents - 格雷德币文档 - - - - Document cannot be found on P2P server. - 文档在点对点服务器上未找到。 - TransactionTableModel - + Date 日期 @@ -3022,32 +2867,12 @@ This label turns red, if the priority is smaller than "medium". 此数据块未被任何其他节点接收,可能不被接受! - - Mined - DPOR - 挖矿所得 - DPOR - - - - Minted - (Local) DPOR - 新矿 - (本地)DPOR - - - - Mined - PoR - 挖矿所得 - PoR - - - - Mined - Interest - 挖矿所得 - 利息 - - - + Destination address of transaction. 转账目标地址 - + Open until %1 直到 %1 后再打开 @@ -3077,7 +2902,7 @@ This label turns red, if the priority is smaller than "medium". 已生成但未被接受 - + Received with 收款 @@ -3097,12 +2922,42 @@ This label turns red, if the priority is smaller than "medium". 付款给自己 - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (不可用) - + Transaction status. Hover over this field to show number of confirmations. 交易状态。 鼠标移到此区域可显示确认项数量。 @@ -3291,29 +3146,10 @@ This label turns red, if the priority is smaller than "medium". - - UpgradeDialog - - Gridcoin Upgrading Facility - 格雷德币升级器 - - - Retry Download - 重试下载 - - - Upgrade - 升级 - - - Hide - 隐藏 - - VotingChartDialog - + Poll Results 民意调查结果 @@ -3403,14 +3239,6 @@ This label turns red, if the priority is smaller than "medium". Share Type 计票方式 - - Question - 问题 - - - Answers - 答案 - # Voters @@ -3421,10 +3249,6 @@ This label turns red, if the priority is smaller than "medium". Total Shares 总票数 - - URL - 网址 - Best Answer @@ -3450,10 +3274,6 @@ This label turns red, if the priority is smaller than "medium". Share Type. 计票方式。 - - Question. - 问题。 - Total Participants. @@ -3464,10 +3284,6 @@ This label turns red, if the priority is smaller than "medium". Total Shares. 总票数。 - - URL. - 网址。 - Best Answer. @@ -3477,7 +3293,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote 放置投票 @@ -3510,7 +3326,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... 正在发送... @@ -3518,41 +3334,41 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: 选项: - + Specify data directory 指定数据目录 - + Connect to a node to retrieve peer addresses, and disconnect 连接一个节点并获取对端地址,然后断开连接 - + Specify your own public address 指定您的公共地址 - + Accept command line and JSON-RPC commands 接受命令行和 JSON-RPC 命令 - + Run in the background as a daemon and accept commands 在后台作为守护进程运行并接受指令 - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) 当钱包转账变化时执行命令 (命令行中的 %s 会被替换成TxID) @@ -3562,12 +3378,12 @@ This label turns red, if the priority is smaller than "medium". 区块生成选项: - + Failed to listen on any port. Use -listen=0 if you want this. 监听任意端口失败。 若您希望如此,使用 -listen=0. - + Specify wallet file (within data directory) 指定钱包文件(数据目录内) @@ -3593,7 +3409,7 @@ This label turns red, if the priority is smaller than "medium". - + Execute command when the best block changes (%s in cmd is replaced by block hash) 当最佳区块变化时执行命令 (命令行中的 %s 会被替换成区块哈希值) @@ -3603,12 +3419,12 @@ This label turns red, if the priority is smaller than "medium". 使用 -addnode, -seednode 和 -connect选项时允许DNS查找 - + To use the %s option 使用 %s 选项 - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -3633,7 +3449,7 @@ rpcpassword=%s - + Loading addresses... 正在加载地址... @@ -3643,22 +3459,22 @@ rpcpassword=%s 无效的代理地址: '%s' - + Unknown network specified in -onlynet: '%s' 被指定的是未知网络 -onlynet: '%s' - + Unable to bind to %s on this computer. Gridcoin is probably already running. 无法在本机绑定 %s 端口。比特币客户端软件可能已经在运行。 - + Unable to bind to %s on this computer (bind returned error %d, %s) 无法绑定本机端口 %s (返回错误消息 %d, %s) - + Error: Wallet locked, unable to create transaction 错误:钱包已锁定,不能创建交易 @@ -3668,27 +3484,27 @@ rpcpassword=%s 错误:钱包解锁仅用于权益增值,无法创建交易。 - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds 错误:转账需要至少 %s 的转账费,因为其数额,复杂度或使用了近期收到的存款 - + Error: Transaction creation failed 错误:交易创建失败 - + Sending... 发送中... - + 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文件的副本,钱币在该副本中被花费但未在这里标记为已花费时。 - + Invalid amount 无效金额 @@ -3703,7 +3519,7 @@ rpcpassword=%s 加载区块索引... - + An error occurred while setting up the RPC port %u for listening on IPv6, falling back to IPv4: %s 当设置RPC端口%u以进行IPv6监听时出错,回到IPv4: %s @@ -3739,7 +3555,7 @@ rpcpassword=<password> - + Boinc Mining @@ -3749,7 +3565,7 @@ rpcpassword=<password> - + Error obtaining next project. Error 06172014. @@ -3789,12 +3605,32 @@ rpcpassword=<password> - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -3869,7 +3705,7 @@ rpcpassword=<password> 向-server或gridcoind发送指令 - + List commands 命令列表 @@ -3886,15 +3722,11 @@ rpcpassword=<password> 格雷德币 - + This help message 该帮助信息 - - Specify configuration file (default: gridcoin.conf) - 指定配置文件 (默认:gridcoin.conf) - Specify pid file (default: gridcoind.pid) @@ -3916,12 +3748,12 @@ rpcpassword=<password> 指定连接超时毫秒数 (默认: 5000) - + Connect through socks proxy 通过 socks 代理连接 - + Select the version of socks proxy to use (4-5, default: 5) 选择SOCKS服务器的使用版本(4-5, 默认: 5) @@ -3931,7 +3763,7 @@ rpcpassword=<password> 使用代理到达隐藏服务器 (默认: 与-proxy相同) - + Listen for connections on <port> (default: 32749 or testnet: 32748) 使用<port>端口监听连接 (默认: 15714 或测试网络: 25714) {32749 ?} {32748)?} @@ -3941,31 +3773,27 @@ rpcpassword=<password> 保留最多 <n> 条节点连接 (默认: %u) - + Add a node to connect to and attempt to keep the connection open 添加节点并与其保持连接 - + Connect only to the specified node(s) 只连接到特定的节点 - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) 只连接 <net>网络中的节点 (ipv4, ipv6 或 onion) - + Discover own IP address (default: 1 when listening and no -externalip) 找到您自己的IP地址(缺省:1,当监听时, 且无 -externalip) - Find peers using internet relay chat (default: 0) - 寻找使用互联网中继聊天的同伴 (默认: 1) {0)?} - - - + Accept connections from outside (default: 1 if no -proxy or -connect) 接受外部连接 (默认: 1,若无 -proxy 或 -connect) @@ -3975,31 +3803,27 @@ rpcpassword=<password> 绑定指定的IP地址开始监听。IPv6地址请使用[host]:port 格式 - + Find peers using DNS lookup (default: 1) 通过DNS查找网络上的节点 (缺省: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) 与其他节点同步时间。无效化之,若您的系统时间是准确的,例如与NTP同步(默认: 1) - Sync checkpoints policy (default: strict) - 同步检查点策略 (缺省:严格) - - - + Threshold for disconnecting misbehaving peers (default: 100) 断开 非礼节点的阀值 (默认: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) 限制 非礼节点 若干秒内不能连接 (默认: 86400) (??: 86400) - + Maximum per-connection receive buffer, <n>*1000 bytes (default: 5000) 每个连接的最大接收缓存,<n>*1000 字节 (默认: 5000) @@ -4009,7 +3833,7 @@ rpcpassword=<password> 每个连接的最大发送缓存,<n>*1000 字节 (默认: 1000) - + Use UPnP to map the listening port (default: 1 when listening) 使用UPnP暴露本机监听端口(默认:1 当正在监听) @@ -4019,23 +3843,23 @@ rpcpassword=<password> 使用UPnP暴露本机监听端口(默认:0) - + Fee per KB to add to transactions you send 每发送1KB交易所需的费用 - + When creating transactions, ignore inputs with value less than this (default: 0.01) 当生成交易时,忽略价值小于此的输入 (默认:0.01) - + Use the test network 使用测试网络 - + Output extra debugging information. Implies all other -debug* options 输出调试信息。蕴含任何其他-debug*选项 @@ -4045,7 +3869,7 @@ rpcpassword=<password> 输出额外网络调试信息 - + Prepend debug output with timestamp 输出调试信息时,前面加上时间戳 @@ -4055,7 +3879,7 @@ rpcpassword=<password> 跟踪/调试信息发送到调试器 - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) 使用 <port>端口监听 JSON-RPC 连接 (默认: 15715 ; testnet: 25715) @@ -4065,7 +3889,7 @@ rpcpassword=<password> 允许来自指定IP地址的 JSON-RPC 连接 - + Send commands to node running on <ip> (default: 127.0.0.1) 向IP地址为 <ip> 的节点发送指令 (缺省: 127.0.0.1) @@ -4075,7 +3899,7 @@ rpcpassword=<password> 改变时要求一个确认 (默认:0) - + Enforce transaction scripts to use canonical PUSH operators (default: 1) 强制要求转账脚本使用PUSH运算(默认:1) @@ -4085,7 +3909,7 @@ rpcpassword=<password> 当收到相关警报时执行指令 (命令行中的 %s 会被替换成消息) - + Upgrade wallet to latest format 升级钱包到最新版 @@ -4101,7 +3925,7 @@ rpcpassword=<password> 重新扫描数据链以查找遗漏的交易 - + Attempt to recover private keys from a corrupt wallet.dat 尝试从一个损坏的wallet.dat文件中恢复私钥 @@ -4196,6 +4020,16 @@ rpcpassword=<password> Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -4256,6 +4090,11 @@ rpcpassword=<password> ERROR + + + Entire balance reserved + + Expires @@ -4326,11 +4165,6 @@ rpcpassword=<password> Message 消息 - - - Messate Type - - Miner: @@ -4367,12 +4201,7 @@ rpcpassword=<password> - - No coins; - - - - + Offline; @@ -4382,12 +4211,7 @@ rpcpassword=<password> - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -4412,12 +4236,12 @@ rpcpassword=<password> - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) 以比特为单位设置高优先级/低费用的转账的最大大小 (默认: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) SSL选项:(见Bitcoin Wiki中SSL安装的讲解) @@ -4439,21 +4263,17 @@ rpcpassword=<password> - Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - 可接受的加密器 (默认为 TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH) - - - + Invalid amount for -paytxfee=<amount>: '%s' 非法金额 -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. 警告:-paytxfee 被设置得非常高!若您发送一个转账,这是您将支付的转账费。 - + Invalid amount for -mininput=<amount>: '%s' 无效金额 -paytxfee=<amount>: '%s' @@ -4463,22 +4283,22 @@ rpcpassword=<password> 初始化完整性检查失败。格雷德币正在停止运行。 - + Wallet %s resides outside data directory %s. 钱包%s位于数据目录%s之外。 - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. 无法给数据目录 %s 加锁。格雷德币进程可能已在运行。 - + Verifying database integrity... 检查数据库完整性... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. 初始化数据库环境 %s 时出错!为恢复,备份该目录,然后删除除wallet.dat之外的全部文件 @@ -4488,7 +4308,7 @@ rpcpassword=<password> 警告:wallet.dat损坏,数据已抢救! 原始的wallet.dat文件已在%s中保存为wallet.{timestamp}.bak.若您的余额或转账记录有误,您应该从备份中恢复。 - + Weight @@ -4498,17 +4318,17 @@ rpcpassword=<password> wallet.dat损坏,抢救失败 - + Unknown -socks proxy version requested: %i 被指定的是未知socks代理版本: %i - + Invalid -tor address: '%s' 无效的 -tor 地址: '%s' - + Cannot resolve -bind address: '%s' 无法解析 -bind 端口地址: '%s' @@ -4518,15 +4338,10 @@ rpcpassword=<password> 无法解析 -externalip 地址: '%s' - + Invalid amount for -reservebalance=<amount> 对-reservebalance=<amount> 无效的金额 - - Unable to sign checkpoint, wrong checkpointkey? - - 无法签名检查点,检查点密钥错误? - Error loading blkindex.dat @@ -4543,20 +4358,25 @@ rpcpassword=<password> wallet.dat钱包文件加载错误:钱包损坏 - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. 警告: 读取wallet.dat时出现错误!所有密钥均已正确解读,但转账数据或地址簿条目可能缺失或不正确。 - + Error loading wallet.dat: Wallet requires newer version of Gridcoin wallet.dat钱包文件加载错误:请升级到最新格雷德币客户端 - + Vote 投票 + + + Waiting for coins to mature + + Wallet locked; @@ -4568,12 +4388,12 @@ rpcpassword=<password> 钱包文件需要重写:请退出并重新启动格雷德币客户端 - + Error loading wallet.dat wallet.dat钱包文件加载错误 - + Cannot downgrade wallet 无法降级钱包 @@ -4583,12 +4403,12 @@ rpcpassword=<password> 无法写入缺省地址 - + Rescanning... 正在重新扫描... - + Importing blockchain data file. 导入区块链数据文件。 @@ -4603,34 +4423,22 @@ rpcpassword=<password> 错误: 无法启动节点 - + Done loading 加载完成 - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. 警告:请确定您当前计算机的日期和时间是正确的!格雷德币将无法在错误的时间下正常工作。 - Warning: This version is obsolete, upgrade required! - 警告:此版本已被废弃,要求升级! - - - WARNING: synchronized checkpoint violation detected, but skipped! - 警告:发现已同步的检查点有冲突,但已跳过! - - - + Warning: Disk space is low! 警告:磁盘剩余空间低! - WARNING: Invalid checkpoint found! Displayed transactions may not be correct! You may need to upgrade, or notify developers. - 警告:发现无效检查点!显示的转账可能不正确!您可能需要升级或告知开发者。 - - - + Error 错误 diff --git a/src/qt/locale/bitcoin_zh_TW.ts b/src/qt/locale/bitcoin_zh_TW.ts index e4646365df..d7f4b90dea 100644 --- a/src/qt/locale/bitcoin_zh_TW.ts +++ b/src/qt/locale/bitcoin_zh_TW.ts @@ -299,12 +299,12 @@ This product includes software developed by the OpenSSL Project for use in the O BitcoinGUI - + Sign &message... 簽署訊息... - + &Overview 總覽 @@ -400,7 +400,7 @@ This product includes software developed by the OpenSSL Project for use in the O 結束應用程式 - + &Options... 選項... @@ -415,7 +415,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + %n second(s) ago @@ -443,7 +443,7 @@ This product includes software developed by the OpenSSL Project for use in the O - + Date: %1 Amount: %2 Type: %3 @@ -451,7 +451,7 @@ Address: %4 - + Staking.<br>Your weight is %1<br>Network weight is %2<br><b>Estimated</b> time to earn reward is %3. @@ -461,18 +461,10 @@ Address: %4 - &Backup Wallet... - 備份錢包... - - - + &Change Passphrase... 改變密碼... - - Backup wallet to another location - 把錢包備份到其它地方 - Change the passphrase used for wallet encryption @@ -524,7 +516,7 @@ Address: %4 驗證訊息... - + Wallet 錢包 @@ -534,7 +526,7 @@ Address: %4 - + &Send 付款 @@ -554,28 +546,12 @@ Address: %4 - - &Neural Network - - - - - Neural Network - - - - - &New User Wizard - - - - - + New User Wizard - + &Voting @@ -585,7 +561,7 @@ Address: %4 - + &Diagnostics @@ -615,14 +591,14 @@ Address: %4 - + [testnet] [testnet] - + Gridcoin client @@ -632,7 +608,7 @@ Address: %4 - + Last received block was generated %1. @@ -677,7 +653,7 @@ Address: %4 - + URI handling URI 處理 @@ -736,7 +712,7 @@ Address: %4 - + %n second(s) %n 秒鐘 @@ -764,7 +740,37 @@ Address: %4 - + + Scraper: waiting on wallet to sync. + + + + + Scraper: superblock not needed - inactive. + + + + + Scraper: downloading and processing stats. + + + + + Scraper: Convergence achieved, date/time %1. All projects on whitelist included. + + + + + Scraper: Convergence achieved, date/time %1 UTC. Project(s) excluded: %2. + + + + + Scraper: No convergence able to be achieved. Will retry in a few minutes. + + + + &File 檔案 @@ -779,17 +785,12 @@ Address: %4 - - &Advanced - - - - + &Help 說明 - + Processed %n block(s) of transaction history. 已經處理了 %n 個區塊的交易紀錄。 @@ -801,12 +802,12 @@ Address: %4 最新狀態 - + Catching up... 正在趕進度... - + Sent transaction 付款交易 @@ -816,16 +817,12 @@ 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 occurred. Gridcoin can no longer continue safely and will quit. @@ -833,7 +830,7 @@ Address: %4 ClientModel - + Network Alert @@ -915,10 +912,6 @@ Address: %4 (un)select all 全選或全不選 - - List mode - 列表模式 - Amount @@ -1284,7 +1277,7 @@ This label turns red, if the priority is smaller than "medium". NewPollDialog - + Create Poll @@ -1497,10 +1490,6 @@ This label turns red, if the priority is smaller than "medium". Map port using &UPnP 用 &UPnP 設定通訊埠對應 - - Proxy &IP: - 代理位址: - &Port: @@ -1734,6 +1723,14 @@ This label turns red, if the priority is smaller than "medium". + + QObject + + + %1 didn't yet exit safely... + + + QRCodeDialog @@ -1795,7 +1792,7 @@ This label turns red, if the priority is smaller than "medium". RPCConsole - + @@ -1807,7 +1804,7 @@ This label turns red, if the priority is smaller than "medium". - + N/A 未知 @@ -1827,12 +1824,12 @@ This label turns red, if the priority is smaller than "medium". 啓動時間 - + Gridcoin - Debug Console - + Boost version @@ -1907,7 +1904,12 @@ This label turns red, if the priority is smaller than "medium". 開啓 - + + &Scraper + + + + Command-line options 命令列選項 @@ -1997,7 +1999,7 @@ This label turns red, if the priority is smaller than "medium". - + %1 B %1 B (位元組) @@ -2294,22 +2296,22 @@ This label turns red, if the priority is smaller than "medium". SendCoinsEntry - + A&mount: 金額: - + Pay &To: 付給: - + &Label: 標記: - + Alt+A Alt+A @@ -2335,12 +2337,12 @@ This label turns red, if the priority is smaller than "medium". 請輸入這個位址的標記來把它加進位址簿中 - + Form 表單 - + The address to send the payment to (e.g. Sjz75uKHzUQJnSdzvpiigEGxseKkDhQToX) @@ -2355,17 +2357,12 @@ This label turns red, if the priority is smaller than "medium". - + Send Custom Message to a Gridcoin Recipient - - Add Attachment - - - - + Enter a Gridcoin address (e.g. S67nL4vELWwdDVzjgtEP4MxryarTZ9a8GB) @@ -2612,22 +2609,47 @@ This label turns red, if the priority is smaller than "medium". - + Source 來源 - + Generated in CoinBase - - Generated, PoS + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE - + + MINED - UNKNOWN + + + + TX ID @@ -2662,10 +2684,6 @@ This label turns red, if the priority is smaller than "medium". Transaction Inputs - - Generated - 生產出來 - @@ -2695,10 +2713,6 @@ This label turns red, if the priority is smaller than "medium". Gridcoin generated coins must mature 110 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, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - Information - 資訊 - label @@ -2753,18 +2767,6 @@ This label turns red, if the priority is smaller than "medium". Comment 附註 - - Transaction ID - 交易識別碼 - - - Transaction - 交易 - - - Inputs - 輸入 - Amount @@ -2794,12 +2796,7 @@ This label turns red, if the priority is smaller than "medium". 這個版面顯示這次交易的詳細說明 - - View Attachment - - - - + Execute Contract @@ -2808,21 +2805,11 @@ This label turns red, if the priority is smaller than "medium". C&lose 關閉 - - - Gridcoin Documents - - - - - Document cannot be found on P2P server. - - TransactionTableModel - + Date 日期 @@ -2857,32 +2844,12 @@ This label turns red, if the priority is smaller than "medium". - - Mined - DPOR - - - - - Minted - (Local) DPOR - - - - - Mined - PoR - - - - - Mined - Interest - - - - + Destination address of transaction. - + Open for %n more block(s) 到下 %n 個區塊生出來前可修改 @@ -2919,7 +2886,7 @@ This label turns red, if the priority is smaller than "medium". 生產出來但是不被接受 - + Received with 收款 @@ -2939,12 +2906,42 @@ This label turns red, if the priority is smaller than "medium". 付給自己 - + + MINED - POS + + + + + MINED - POR + + + + + MINED - ORPHANED + + + + + POS SIDE STAKE + + + + + POR SIDE STAKE + + + + + MINED - UNKNOWN + + + + (n/a) (不適用) - + Transaction status. Hover over this field to show number of confirmations. 交易狀態。把游標停在欄位上會顯示確認次數。 @@ -3133,17 +3130,10 @@ This label turns red, if the priority is smaller than "medium". - - UpgradeDialog - - Hide - 隱藏 - - VotingChartDialog - + Poll Results @@ -3287,7 +3277,7 @@ This label turns red, if the priority is smaller than "medium". VotingVoteDialog - + PlaceVote @@ -3320,7 +3310,7 @@ This label turns red, if the priority is smaller than "medium". WalletModel - + Sending... @@ -3328,12 +3318,12 @@ This label turns red, if the priority is smaller than "medium". bitcoin-core - + Options: 選項: - + This help message @@ -3368,12 +3358,12 @@ This label turns red, if the priority is smaller than "medium". - + Connect through socks proxy - + Select the version of socks proxy to use (4-5, default: 5) @@ -3383,7 +3373,7 @@ This label turns red, if the priority is smaller than "medium". - + Listen for connections on <port> (default: 32749 or testnet: 32748) @@ -3393,7 +3383,7 @@ This label turns red, if the priority is smaller than "medium". - + Connect only to the specified node(s) @@ -3403,22 +3393,22 @@ This label turns red, if the priority is smaller than "medium". 連線到某個節點來取得其它節點的位址,然後斷線 - + Specify your own public address 指定自己的公開位址 - + Only connect to nodes in network <net> (IPv4, IPv6 or Tor) - + Discover own IP address (default: 1 when listening and no -externalip) - + Accept connections from outside (default: 1 if no -proxy or -connect) @@ -3428,22 +3418,22 @@ This label turns red, if the priority is smaller than "medium". - + Find peers using DNS lookup (default: 1) - + Sync time with other nodes. Disable if time on your system is precise e.g. syncing with NTP (default: 1) - + Threshold for disconnecting misbehaving peers (default: 100) - + Number of seconds to keep misbehaving peers from reconnecting (default: 86400) @@ -3538,6 +3528,16 @@ This label turns red, if the priority is smaller than "medium". Block read failed + + + Blocks Loaded + + + + + Blocks Verified + + Boinc Public Key @@ -3598,6 +3598,11 @@ This label turns red, if the priority is smaller than "medium". ERROR + + + Entire balance reserved + + Expires @@ -3663,11 +3668,6 @@ This label turns red, if the priority is smaller than "medium". Message 訊息 - - - Messate Type - - Miner: @@ -3704,12 +3704,7 @@ This label turns red, if the priority is smaller than "medium". - - No coins; - - - - + Offline; @@ -3719,12 +3714,7 @@ This label turns red, if the priority is smaller than "medium". - - Out of rance exception while parsing Transaction Message -> - - - - + Public Key @@ -3804,12 +3794,12 @@ This label turns red, if the priority is smaller than "medium". - + Fee per KB to add to transactions you send - + When creating transactions, ignore inputs with value less than this (default: 0.01) @@ -3820,12 +3810,12 @@ This label turns red, if the priority is smaller than "medium". - + Use the test network - + Output extra debugging information. Implies all other -debug* options @@ -3835,7 +3825,7 @@ This label turns red, if the priority is smaller than "medium". - + Prepend debug output with timestamp @@ -3845,7 +3835,7 @@ This label turns red, if the priority is smaller than "medium". - + Listen for JSON-RPC connections on <port> (default: 15715 or testnet: 25715) @@ -3855,7 +3845,7 @@ This label turns red, if the priority is smaller than "medium". - + Send commands to node running on <ip> (default: 127.0.0.1) @@ -3865,7 +3855,7 @@ This label turns red, if the priority is smaller than "medium". - + Enforce transaction scripts to use canonical PUSH operators (default: 1) @@ -3875,7 +3865,7 @@ This label turns red, if the priority is smaller than "medium". - + Upgrade wallet to latest format @@ -3890,7 +3880,7 @@ This label turns red, if the priority is smaller than "medium". - + Attempt to recover private keys from a corrupt wallet.dat @@ -3910,7 +3900,7 @@ This label turns red, if the priority is smaller than "medium". - + Boinc Mining @@ -3920,7 +3910,7 @@ This label turns red, if the priority is smaller than "medium". - + Error obtaining next project. Error 06172014. @@ -3970,12 +3960,32 @@ This label turns red, if the priority is smaller than "medium". - + Mining - + + No coins + + + + + No current polls + + + + + Out of range exception while parsing Transaction Message -> + + + + + POR Blocks Verified + + + + Please wait for new user wizard to start... @@ -3990,12 +4000,12 @@ This label turns red, if the priority is smaller than "medium". - + Set maximum size of high-priority/low-fee transactions in bytes (default: 27000) - + SSL options: (see the Bitcoin Wiki for SSL setup instructions) @@ -4015,17 +4025,17 @@ This label turns red, if the priority is smaller than "medium". - + Invalid amount for -paytxfee=<amount>: '%s' - + Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - + Invalid amount for -mininput=<amount>: '%s' @@ -4035,22 +4045,22 @@ This label turns red, if the priority is smaller than "medium". - + Wallet %s resides outside data directory %s. - + Cannot obtain a lock on data directory %s. Gridcoin is probably already running. - + Verifying database integrity... - + Error initializing database environment %s! To recover, BACKUP THAT DIRECTORY, then remove everything from it except for wallet.dat. @@ -4060,10 +4070,15 @@ This label turns red, if the priority is smaller than "medium". - + Vote + + + Waiting for coins to mature + + Wallet locked; @@ -4080,17 +4095,17 @@ This label turns red, if the priority is smaller than "medium". - + Unknown -socks proxy version requested: %i - + Invalid -tor address: '%s' - + Cannot resolve -bind address: '%s' @@ -4100,7 +4115,7 @@ This label turns red, if the priority is smaller than "medium". - + Invalid amount for -reservebalance=<amount> @@ -4115,22 +4130,22 @@ This label turns red, if the priority is smaller than "medium". - + Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - + Error loading wallet.dat: Wallet requires newer version of Gridcoin - + Wallet needed to be rewritten: restart Gridcoin to complete - + Error loading wallet.dat @@ -4150,17 +4165,17 @@ This label turns red, if the priority is smaller than "medium". - + Unable to bind to %s on this computer. Gridcoin is probably already running. - + Unable to bind to %s on this computer (bind returned error %d, %s) - + Error: Wallet locked, unable to create transaction @@ -4170,47 +4185,47 @@ This label turns red, if the priority is smaller than "medium". - + Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds - + Error: Transaction creation failed - + Sending... - + 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. - + Invalid amount - + Warning: Please check that your computer's date and time are correct! If your clock is wrong Gridcoin will not work properly. - + Warning: Disk space is low! - + Run in the background as a daemon and accept commands 用護靈模式在背景執行並接受指令 - + Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) 當錢包有交易改變時要執行的指令(指令中的 %s 會被取代成交易識別碼) @@ -4220,12 +4235,12 @@ This label turns red, if the priority is smaller than "medium". 區塊製造選項: - + Failed to listen on any port. Use -listen=0 if you want this. 在任意的通訊埠聽候失敗。如果你希望這樣的話,可以設定 -listen=0. - + Specify wallet file (within data directory) 指定錢包檔(會在資料目錄中) @@ -4250,7 +4265,7 @@ This label turns red, if the priority is smaller than "medium". JSON-RPC 連線密碼 - + Execute command when the best block changes (%s in cmd is replaced by block hash) 當最新區塊改變時要執行的指令(指令中的 %s 會被取代成區塊雜湊值) @@ -4260,12 +4275,12 @@ This label turns red, if the priority is smaller than "medium". 允許對 -addnode, -seednode, -connect 的參數使用域名查詢 - + To use the %s option - + %s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -4297,12 +4312,12 @@ If the file does not exist, create it with owner-readable-only file permissions. - + Gridcoin version - + Usage: 用法: @@ -4312,7 +4327,7 @@ If the file does not exist, create it with owner-readable-only file permissions. - + List commands @@ -4337,12 +4352,12 @@ If the file does not exist, create it with owner-readable-only file permissions. 無效的 -proxy 位址: '%s' - + Unknown network specified in -onlynet: '%s' 在 -onlynet 指定了不明的網路別: '%s' - + Insufficient funds 累積金額不足 @@ -4352,17 +4367,17 @@ If the file does not exist, create it with owner-readable-only file permissions. 正在載入區塊索引... - + Add a node to connect to and attempt to keep the connection open 增加一個要連線的節線,並試著保持對它的連線暢通 - + Loading wallet... 正在載入錢包資料... - + Cannot downgrade wallet 沒辦法把錢包格式降級 @@ -4372,17 +4387,17 @@ If the file does not exist, create it with owner-readable-only file permissions. 沒辦法把預設位址寫進去 - + Rescanning... 正在重新掃描... - + Done loading 載入完成 - + Error 錯誤 diff --git a/src/qt/overviewpage.cpp b/src/qt/overviewpage.cpp index c7a20cf254..e1b8a8c8fd 100644 --- a/src/qt/overviewpage.cpp +++ b/src/qt/overviewpage.cpp @@ -207,7 +207,6 @@ void OverviewPage::UpdateBoincUtilization() ui->labelNetWeight->setText(QString::fromUtf8(GlobalStatusStruct.netWeight.c_str())); ui->labelCoinWeight->setText(QString::fromUtf8(GlobalStatusStruct.coinWeight.c_str())); ui->labelMagnitude->setText(QString::fromUtf8(GlobalStatusStruct.magnitude.c_str())); - ui->labelProject->setText(QString::fromUtf8(GlobalStatusStruct.project.c_str())); ui->labelCpid->setText(QString::fromUtf8(GlobalStatusStruct.cpid.c_str())); ui->labelStatus->setText(QString::fromUtf8(GlobalStatusStruct.status.c_str())); ui->labelPoll->setText(QString::fromUtf8(GlobalStatusStruct.poll.c_str()).replace(QChar('_'),QChar(' '), Qt::CaseSensitive)); diff --git a/src/rpcblockchain.cpp b/src/rpcblockchain.cpp index ebd3efb0ec..c2558f97ea 100644 --- a/src/rpcblockchain.cpp +++ b/src/rpcblockchain.cpp @@ -6,13 +6,13 @@ #include "main.h" #include "rpcserver.h" #include "rpcprotocol.h" -#include "cpid.h" #include "kernel.h" #include "init.h" // for pwalletMain #include "block.h" #include "txdb.h" #include "beacon.h" #include "neuralnet/neuralnet.h" +#include "neuralnet/researcher.h" #include "backup.h" #include "appcache.h" #include "tally.h" @@ -58,7 +58,6 @@ extern bool AdvertiseBeacon(std::string &sOutPrivKey, std::string &sOutPubKey, s double Round(double d, int place); extern double GetSuperblockAvgMag(std::string data,double& out_beacon_count,double& out_participant_count,double& out_average, bool bIgnoreBeacons,int nHeight); -extern bool CPIDAcidTest2(std::string bpk, std::string externalcpid); bool AsyncNeuralRequest(std::string command_name,std::string cpid,int NodeLimit); bool FullSyncWithDPORNodes(); @@ -80,29 +79,13 @@ void GatherNeuralHashes(); extern bool TallyMagnitudesInSuperblock(); double GetTotalBalance(); -MiningCPID GetNextProject(bool bForce); -std::string SerializeBoincBlock(MiningCPID mcpid); - double CoinToDouble(double surrogate); extern void TxToJSON(const CTransaction& tx, const uint256 hashBlock, UniValue& entry); double LederstrumpfMagnitude2(double mag,int64_t locktime); bool IsCPIDValidv2(MiningCPID& mc, int height); -std::string RetrieveMd5(std::string s1); -extern double GetNetworkAvgByProject(std::string projectname); -void HarvestCPIDs(bool cleardata); BlockFinder RPCBlockFinder; -double GetNetworkAvgByProject(std::string projectname) -{ - boost::replace_all(projectname, "_", " "); - if (mvNetwork.size() < 1) return 0; - StructCPID structcpid = mvNetwork[projectname]; - if (!structcpid.initialized) return 0; - double networkavgrac = structcpid.AverageRAC; - return networkavgrac; -} - double GetDifficulty(const CBlockIndex* blockindex) { // Floating point number that is a multiple of the minimum difficulty, @@ -217,9 +200,6 @@ UniValue blockToJSON(const CBlock& block, const CBlockIndex* blockindex, bool fP result.pushKV("CPID", bb.cpid); if (!IsResearchAgeEnabled(blockindex->nHeight)) { - result.pushKV("ProjectName", bb.projectname); - result.pushKV("RAC", bb.rac); - result.pushKV("NetworkRAC", bb.NetworkRAC); result.pushKV("RSAWeight",bb.RSAWeight); } @@ -243,7 +223,6 @@ UniValue blockToJSON(const CBlock& block, const CBlockIndex* blockindex, bool fP } result.pushKV("ClientVersion",bb.clientversion); - if (!bb.cpidv2.empty()) result.pushKV("CPIDv2",bb.cpidv2.substr(0,32)); bool IsCPIDValid2 = IsCPIDValidv2(bb,blockindex->nHeight); result.pushKV("CPIDValid",IsCPIDValid2); @@ -455,31 +434,6 @@ UniValue getblockbynumber(const UniValue& params, bool fHelp) return blockToJSON(block, pblockindex, params.size() > 1 ? params[1].get_bool() : false); } -void filecopy(FILE *dest, FILE *src) -{ - const int size = 16384; - char buffer[size]; - - while (!feof(src)) - { - int n = fread(buffer, 1, size, src); - fwrite(buffer, 1, n, dest); - } - - fflush(dest); -} - -void fileopen_and_copy(std::string src, std::string dest) -{ - FILE * infile = fopen(src.c_str(), "rb"); - FILE * outfile = fopen(dest.c_str(), "wb"); - - filecopy(outfile, infile); - - fclose(infile); - fclose(outfile); -} - std::string ExtractValue(std::string data, std::string delimiter, int pos) { std::vector vKeys = split(data.c_str(),delimiter); @@ -628,7 +582,6 @@ bool TallyMagnitudesInSuperblock() StructCPID& stMagg = GetInitializedStructCPID2(cpid,mvMagnitudesCopy); stMagg.cpid = cpid; stMagg.Magnitude = stCPID.Magnitude; - stMagg.PaymentMagnitude = LederstrumpfMagnitude2(magnitude,GetAdjustedTime()); //Adjust total owed - in case they are a newbie: if (true) { @@ -649,22 +602,18 @@ bool TallyMagnitudesInSuperblock() double NetworkAvgMagnitude = TotalNetworkMagnitude / (TotalNetworkEntries+.01); // Store the Total Network Magnitude: StructCPID& network = GetInitializedStructCPID2("NETWORK",mvNetworkCopy); - network.projectname="NETWORK"; network.NetworkMagnitude = TotalNetworkMagnitude; network.NetworkAvgMagnitude = NetworkAvgMagnitude; if (fDebug) LogPrintf("TallyMagnitudesInSuperblock: Extracted %.0f magnitude entries from cached superblock %s", TotalNetworkEntries, ReadCache(Section::SUPERBLOCK, "block_number").value); double TotalProjects = 0; - double TotalRAC = 0; - double AVGRac = 0; // Load boinc project averages from neural network std::string projects = ReadCache(Section::SUPERBLOCK, "averages").value; if (projects.empty()) return false; std::vector vProjects = split(projects.c_str(),";"); if (vProjects.size() > 0) { - double totalRAC = 0; for (unsigned int i = 0; i < vProjects.size(); i++) { // For each Project in the contract @@ -675,23 +624,13 @@ bool TallyMagnitudesInSuperblock() if (project.length() > 1) { StructCPID& stProject = GetInitializedStructCPID2(project,mvNetworkCopy); - stProject.projectname = project; - stProject.AverageRAC = avg; //As of 7-16-2015, start pulling in Total RAC - totalRAC = 0; - totalRAC = RoundFromString("0" + ExtractValue(vProjects[i],",",2),0); - stProject.rac = totalRAC; mvNetworkCopy[project]=stProject; TotalProjects++; - TotalRAC += avg; } } } } - AVGRac = TotalRAC/(TotalProjects+.01); - network.AverageRAC = AVGRac; - network.rac = TotalRAC; - network.NetworkProjects = TotalProjects; mvNetworkCopy["NETWORK"] = network; if (fDebug3) LogPrintf(".TMS43."); return true; @@ -703,22 +642,11 @@ bool TallyMagnitudesInSuperblock() } } -bool CPIDAcidTest2(std::string bpk, std::string externalcpid) -{ - uint256 hashRand = GetRandHash(); - std::string email = GetArgument("email", "NA"); - boost::to_lower(email); - std::string cpidv2 = ComputeCPIDv2(email, bpk, hashRand); - std::string cpidv1 = cpidv2.substr(0,32); - return (externalcpid==cpidv1); -} - bool AdvertiseBeacon(std::string &sOutPrivKey, std::string &sOutPubKey, std::string &sError, std::string &sMessage) { sOutPrivKey = "BUG! deprecated field used"; LOCK(cs_main); { - GetNextProject(false); if (!IsResearcher(GlobalCPUMiningCPID.cpid)) { sError = "INVESTORS_CANNOT_SEND_BEACONS"; @@ -744,18 +672,6 @@ bool AdvertiseBeacon(std::string &sOutPrivKey, std::string &sOutPubKey, std::str } uint256 hashRand = GetRandHash(); - std::string email = GetArgument("email", "NA"); - boost::to_lower(email); - GlobalCPUMiningCPID.email=email; - GlobalCPUMiningCPID.cpidv2 = ComputeCPIDv2(GlobalCPUMiningCPID.email, GlobalCPUMiningCPID.boincruntimepublickey, hashRand); - - bool IsCPIDValid2 = CPID_IsCPIDValid(GlobalCPUMiningCPID.cpid,GlobalCPUMiningCPID.cpidv2, hashRand); - if (!IsCPIDValid2) - { - sError="Invalid CPID"; - return false; - } - double nBalance = GetTotalBalance(); if (nBalance < 1.01) { @@ -773,11 +689,9 @@ bool AdvertiseBeacon(std::string &sOutPrivKey, std::string &sOutPubKey, std::str // Convert the new pubkey into legacy hex format sOutPubKey = HexStr(keyBeacon.GetPubKey().Raw()); - GlobalCPUMiningCPID.lastblockhash = GlobalCPUMiningCPID.cpidhash; - std::string sParam = SerializeBoincBlock(GlobalCPUMiningCPID,pindexBest->nVersion); std::string GRCAddress = DefaultWalletAddress(); // Public Signing Key is stored in Beacon - std::string contract = GlobalCPUMiningCPID.cpidv2 + ";" + hashRand.GetHex() + ";" + GRCAddress + ";" + sOutPubKey; + std::string contract = "UNUSED;" + hashRand.GetHex() + ";" + GRCAddress + ";" + sOutPubKey; LogPrintf("Creating beacon for cpid %s, %s",GlobalCPUMiningCPID.cpid, contract); std::string sBase = EncodeBase64(contract); std::string sAction = "add"; @@ -929,17 +843,22 @@ UniValue rainbymagnitude(const UniValue& params, bool fHelp) std::string sContract = DecodeBase64(scacheContract); std::string sGRCAddress = ExtractValue(sContract, ";", 2); + if (fDebug) LogPrintf("INFO: rainbymagnitude: sGRCaddress = %s.", sGRCAddress); + double dPayout = (structMag.Magnitude / dTotalNetworkMagnitude) * dAmount; if (dPayout <= 0) continue; - dTotalAmount += dPayout; - CBitcoinAddress address(sGRCAddress); if (!address.IsValid()) - throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, std::string("Invalid Gridcoin address: ") + sGRCAddress); + { + LogPrintf("ERROR: rainbymagnitude: Invalid Gridcoin address: %s.", sGRCAddress); + continue; + } + + dTotalAmount += dPayout; setAddress.insert(address); @@ -1018,6 +937,8 @@ UniValue advertisebeacon(const UniValue& params, bool fHelp) "\n" "Advertise a beacon (Requires wallet to be fully unlocked)\n"); + EnsureWalletIsUnlocked(); + UniValue res(UniValue::VOBJ); /* Try to copy key from config. The call is no-op if already imported or @@ -1081,7 +1002,7 @@ UniValue beaconstatus(const UniValue& params, bool fHelp) // Search for beacon, and report on beacon status. - std::string sCPID = msPrimaryCPID; + std::string sCPID = NN::GetPrimaryCpid(); if (params.size() > 0) sCPID = params[0].get_str(); @@ -1109,25 +1030,30 @@ UniValue beaconstatus(const UniValue& params, bool fHelp) res.pushKV("Magnitude (As of last superblock)", dMagnitude); - if (dMagnitude==0) - res.pushKV("Warning","Your magnitude is 0 as of the last superblock: this may keep you from staking POR blocks."); + const bool is_mine = sCPID == NN::GetPrimaryCpid(); + res.pushKV("Mine", is_mine); - // Staking Test 10-15-2016 - Simulate signing an actual block to verify this CPID keypair will work. - uint256 hashBlock = GetRandHash(); + if (is_mine && dMagnitude == 0) + res.pushKV("Warning","Your magnitude is 0 as of the last superblock: this may keep you from staking POR blocks."); - if (!sPubKey.empty()) + if (!sPubKey.empty() && is_mine) { + EnsureWalletIsUnlocked(); + bool bResult; std::string sSignature; std::string sError; + // Staking Test 10-15-2016 - Simulate signing an actual block to verify this CPID keypair will work. + uint256 hashBlock = GetRandHash(); + bResult = SignBlockWithCPID(sCPID, hashBlock.GetHex(), sSignature, sError); if (!bResult) { - sErr += "Failed to sign block with cpid "; + sErr += "Failed to sign block with cpid: "; sErr += sError; - sErr += ";"; + sErr += "; "; } bool fResult = VerifyCPIDSignature(sCPID, hashBlock.GetHex(), sSignature); @@ -1266,7 +1192,7 @@ UniValue lifetime(const UniValue& params, bool fHelp) UniValue c(UniValue::VOBJ); UniValue res(UniValue::VOBJ); - std::string cpid = msPrimaryCPID; + std::string cpid = NN::GetPrimaryCpid(); std::string Narr = ToString(GetAdjustedTime()); c.pushKV("Lifetime Payments Report", Narr); @@ -1316,7 +1242,7 @@ UniValue magnitude(const UniValue& params, bool fHelp) !params[0].get_str().empty() ) ? params[0].get_str() - : msPrimaryCPID; + : NN::GetPrimaryCpid(); if(cpid.empty()) throw runtime_error("CPID appears to be empty; unable to request magnitude report"); @@ -1393,8 +1319,8 @@ UniValue resetcpids(const UniValue& params, bool fHelp) LOCK(cs_main); ReadConfigFile(mapArgs, mapMultiArgs); - HarvestCPIDs(true); - GetNextProject(true); + NN::Researcher::Reload(); + res.pushKV("Reset", 1); return res; @@ -1779,38 +1705,6 @@ UniValue gatherneuralhashes(const UniValue& params, bool fHelp) return res; } -UniValue genboinckey(const UniValue& params, bool fHelp) -{ - if (fHelp || params.size() != 0) - throw runtime_error( - "genboinckey\n" - "\n" - "Generates a boinc key\n"); - - UniValue res(UniValue::VOBJ); - - //Gridcoin - R Halford - Generate Boinc Mining Key - 2-6-2015 - GetNextProject(false); - std::string email = GetArgument("email", "NA"); - boost::to_lower(email); - GlobalCPUMiningCPID.email = email; - GlobalCPUMiningCPID.cpidv2 = ComputeCPIDv2(GlobalCPUMiningCPID.email, GlobalCPUMiningCPID.boincruntimepublickey, 0); - //Store the BPK in the aesskein, and the cpid in version - GlobalCPUMiningCPID.aesskein = email; //Good - GlobalCPUMiningCPID.lastblockhash = GlobalCPUMiningCPID.cpidhash; - - //block version not needed for keys for now - std::string sParam = SerializeBoincBlock(GlobalCPUMiningCPID,7); - std::string sBase = EncodeBase64(sParam); - - if (fDebug3) - LogPrintf("GenBoincKey: Utilizing email %s with %s for %s", GlobalCPUMiningCPID.email, GlobalCPUMiningCPID.boincruntimepublickey, sParam); - - res.pushKV("[Specify in config file without quotes] boinckey=", sBase); - - return res; -} - UniValue getlistof(const UniValue& params, bool fHelp) { if (fHelp || params.size() != 1) @@ -1845,25 +1739,6 @@ UniValue getlistof(const UniValue& params, bool fHelp) return res; } -UniValue getnextproject(const UniValue& params, bool fHelp) -{ - if (fHelp || params.size() != 0) - throw runtime_error( - "getnextproject\n" - "\n" - "Requests wallet to get next project\n"); - - UniValue res(UniValue::VOBJ); - - LOCK(cs_main); - - GetNextProject(true); - - res.pushKV("GetNext", 1); - - return res; -} - UniValue listdata(const UniValue& params, bool fHelp) { if (fHelp || params.size() != 1) @@ -1956,10 +1831,9 @@ UniValue network(const UniValue& params, bool fHelp) { UniValue results(UniValue::VOBJ); - results.pushKV("Project", stNet.projectname); - results.pushKV("Avg RAC", stNet.AverageRAC); + results.pushKV("Project", (*ii).first); - if (stNet.projectname == "NETWORK") + if ((*ii).first == "NETWORK") { double MaximumEmission = BLOCKS_PER_DAY*GetMaximumBoincSubsidy(GetAdjustedTime()); double MoneySupply = DoubleFromAmount(pindexBest->nMoneySupply); @@ -2010,51 +1884,27 @@ UniValue projects(const UniValue& params, bool fHelp) "Displays information on projects in the network as well as researcher data if available\n"); UniValue res(UniValue::VARR); - - LOCK(cs_main); - - if (mvCPIDs.empty()) - HarvestCPIDs(false); + NN::ResearcherPtr researcher = NN::Researcher::Get(); for (const auto& item : NN::GetWhitelist().Snapshot().Sorted()) { UniValue entry(UniValue::VOBJ); - std::string sProjectName = item.m_name; - - if (sProjectName.empty()) - continue; - - std::string sProjectURL = item.m_url; - sProjectURL.erase(std::remove(sProjectURL.begin(), sProjectURL.end(), '@'), sProjectURL.end()); - - // If contains an additional stats URL for project stats; remove it for the user to goto the correct website. - if (sProjectURL.find("stats/") != string::npos) - { - std::size_t tFound = sProjectURL.find("stats/"); - sProjectURL.erase(tFound, sProjectURL.length()); - } - - entry.pushKV("Project", sProjectName); - entry.pushKV("URL", sProjectURL); - - if (!mvCPIDs.empty()) - { - StructCPID structcpid = mvCPIDs[sProjectName]; + entry.pushKV("Project", item.DisplayName()); + entry.pushKV("URL", item.DisplayUrl()); - if (structcpid.initialized && IsResearcher(structcpid.cpid) && IsResearcher(GlobalCPUMiningCPID.cpid)) - { - UniValue researcher(UniValue::VOBJ); + if (const NN::ProjectOption project = researcher->Project(item.m_name)) { + UniValue researcher(UniValue::VOBJ); - researcher.pushKV("CPID", structcpid.cpid); - researcher.pushKV("Team", structcpid.team); - researcher.pushKV("Valid for Research", (structcpid.team == "gridcoin" && structcpid.Iscpidvalid ? "true" : "false")); + researcher.pushKV("CPID", project->m_cpid.ToString()); + researcher.pushKV("Team", project->m_team); + researcher.pushKV("Valid for Research", project->Eligible()); - if (!structcpid.errors.empty()) - researcher.pushKV("Errors", structcpid.errors); + if (!project->Eligible()) { + researcher.pushKV("Errors", project->ErrorMessage()); + } - entry.pushKV("Researcher", researcher); - } + entry.pushKV("Researcher", researcher); } res.push_back(entry); @@ -2404,48 +2254,6 @@ UniValue currenttime(const UniValue& params, bool fHelp) return res; } -UniValue decryptphrase(const UniValue& params, bool fHelp) -{ - if (fHelp || params.size() != 1) - throw runtime_error( - "decryptphrase \n" - "\n" - " -> Encrypted phrase to decrypt\n" - "\n" - "Decrypts an encrypted phrase\n"); - - UniValue res(UniValue::VOBJ); - - std::string sParam1 = params[0].get_str(); - std::string test = AdvancedDecrypt(sParam1); - - res.pushKV("Phrase", sParam1); - res.pushKV("Decrypted Phrase", test); - - return res; -} - -UniValue encryptphrase(const UniValue& params, bool fHelp) -{ - if (fHelp || params.size() != 1) - throw runtime_error( - "encryptphrase \n" - "\n" - " Phase you wish to encrypt\n" - "\n" - "Encrypt a phrase\n"); - - UniValue res(UniValue::VOBJ); - - std::string sParam1 = params[0].get_str(); - std::string test = AdvancedCrypt(sParam1); - - res.pushKV("Phrase", sParam1); - res.pushKV("Encrypted Phrase", test); - - return res; -} - UniValue memorypool(const UniValue& params, bool fHelp) { if (fHelp || params.size() != 0) @@ -2569,13 +2377,12 @@ UniValue MagnitudeReport(std::string cpid) if (cpid.empty() || (Contains(structMag.cpid,cpid))) { UniValue entry(UniValue::VOBJ); + if (IsResearchAgeEnabled(pindexBest->nHeight)) { - StructCPID& stCPID = GetLifetimeCPID(structMag.cpid); double days = (GetAdjustedTime() - stCPID.LowLockTime) / 86400.0; entry.pushKV("CPID",structMag.cpid); - StructCPID& UH = GetInitializedStructCPID2(cpid,mvMagnitudes); entry.pushKV("Earliest Payment Time",TimestampToHRDate(stCPID.LowLockTime)); entry.pushKV("Magnitude (Last Superblock)", structMag.Magnitude); entry.pushKV("Research Payments (14 days)",structMag.payments); @@ -2607,7 +2414,6 @@ UniValue MagnitudeReport(std::string cpid) entry.pushKV("CPID",structMag.cpid); entry.pushKV("Last Block Paid",structMag.LastBlock); entry.pushKV("DPOR Magnitude", structMag.Magnitude); - entry.pushKV("Payment Magnitude",structMag.PaymentMagnitude); entry.pushKV("Payment Timespan (Days)",structMag.PaymentTimespan); entry.pushKV("Total Earned (14 days)",structMag.totalowed); entry.pushKV("DPOR Payments (14 days)",structMag.payments); @@ -2674,12 +2480,13 @@ UniValue GetJsonUnspentReport() // Written on 5-28-2017 - R HALFORD // We can use this as the basis for proving the total coin balance, and the current researcher magnitude in the voting system. UniValue results(UniValue::VARR); + std::string primary_cpid = NN::GetPrimaryCpid(); //Retrieve the historical magnitude - if (IsResearcher(msPrimaryCPID)) + if (IsResearcher(primary_cpid)) { - StructCPID& st1 = GetLifetimeCPID(msPrimaryCPID); - CBlockIndex* pHistorical = GetHistoricalMagnitude(msPrimaryCPID); + StructCPID& st1 = GetLifetimeCPID(primary_cpid); + CBlockIndex* pHistorical = GetHistoricalMagnitude(primary_cpid); UniValue entry1(UniValue::VOBJ); entry1.pushKV("Researcher Magnitude",pHistorical->nMagnitude); results.push_back(entry1); @@ -2690,14 +2497,14 @@ UniValue GetJsonUnspentReport() std::string sBlockhash = pHistorical->GetBlockHash().GetHex(); std::string sError; std::string sSignature; - bool bResult = SignBlockWithCPID(msPrimaryCPID, pHistorical->GetBlockHash().GetHex(), sSignature, sError); + bool bResult = SignBlockWithCPID(primary_cpid, pHistorical->GetBlockHash().GetHex(), sSignature, sError); // Just because below comment it'll keep in line with that if (!bResult) sSignature = sError; // Find the Magnitude from the last staked block, within the last 6 months, and ensure researcher has a valid current beacon (if the beacon is expired, the signature contain an error message) - std::string sMagXML = "" + msPrimaryCPID + "" + RoundToString(pHistorical->nMagnitude,2) + "" + + std::string sMagXML = "" + primary_cpid + "" + RoundToString(pHistorical->nMagnitude,2) + "" + "" + ToString(pHistorical->nHeight) + "" + sBlockhash + "" + sSignature + ""; std::string sMagnitude = ExtractXML(sMagXML,"",""); std::string sXmlSigned = ExtractXML(sMagXML,"",""); diff --git a/src/rpcclient.cpp b/src/rpcclient.cpp index 6c22206b26..00559b6dfe 100644 --- a/src/rpcclient.cpp +++ b/src/rpcclient.cpp @@ -132,6 +132,8 @@ static const CRPCConvertParam vRPCConvertParams[] = { "listunspent" , 0 }, { "listunspent" , 1 }, { "listunspent" , 2 }, + { "consolidateunspent" , 1 }, + { "consolidateunspent" , 2 }, { "move" , 2 }, { "move" , 3 }, { "rainbymagnitude" , 0 }, diff --git a/src/rpcdataacq.cpp b/src/rpcdataacq.cpp index bb81baf04f..8a3950cf57 100644 --- a/src/rpcdataacq.cpp +++ b/src/rpcdataacq.cpp @@ -6,7 +6,6 @@ #include "main.h" #include "rpcserver.h" -#include "cpid.h" #include "kernel.h" #include "block.h" #include "txdb.h" diff --git a/src/rpcdump.cpp b/src/rpcdump.cpp index e3bcd79544..df11e8ed72 100644 --- a/src/rpcdump.cpp +++ b/src/rpcdump.cpp @@ -112,6 +112,7 @@ UniValue importprivkey(const UniValue& params, bool fHelp) "\n" "[label] -------> Optional; Label for imported address\n" "[bool:rescan] -> Optional; Default true\n" + "WARNING: if true rescan of blockchain will occur. This could take up to 20 minutes.\n" "\n" "Adds a private key (as returned by dumpprivkey) to your wallet\n"); @@ -183,10 +184,18 @@ UniValue importwallet(const UniValue& params, bool fHelp) "\n" " -> filename of the wallet to import\n" "\n" - "Imports keys from a wallet dump file (see dumpwallet)\n"); + "Imports keys from a wallet dump file (see dumpwallet)\n" + "If a path is not specified in the filename, the data directory is used."); + + boost::filesystem::path PathForImport = boost::filesystem::path(params[0].get_str()); + boost::filesystem::path DefaultPathDataDir = GetDataDir(); + + // If provided filename does not have a path, then append parent path, otherwise leave alone. + if (PathForImport.parent_path().empty()) + PathForImport = DefaultPathDataDir / PathForImport; ifstream file; - file.open(params[0].get_str().c_str()); + file.open(PathForImport.string().c_str()); if (!file.is_open()) throw JSONRPCError(RPC_INVALID_PARAMETER, "Cannot open wallet dump file"); diff --git a/src/rpcmining.cpp b/src/rpcmining.cpp index 6d3df6da3d..15bd3d2d01 100644 --- a/src/rpcmining.cpp +++ b/src/rpcmining.cpp @@ -15,6 +15,8 @@ using namespace std; double GRCMagnitudeUnit(int64_t locktime); +namespace NN { std::string GetPrimaryCpid(); } + UniValue getmininginfo(const UniValue& params, bool fHelp) { if (fHelp || params.size() != 0) @@ -117,14 +119,15 @@ UniValue getmininginfo(const UniValue& params, bool fHelp) //9-19-2015 - CM obj.pushKV("MyNeuralHash", NN::GetInstance()->GetNeuralHash()); - obj.pushKV("CPID",msPrimaryCPID); + std::string primary_cpid = NN::GetPrimaryCpid(); + obj.pushKV("CPID", primary_cpid); - if (IsResearcher(msPrimaryCPID)) + if (IsResearcher(primary_cpid)) { { double dMagnitudeUnit = GRCMagnitudeUnit(nTime); double dAccrualAge,AvgMagnitude; - int64_t nBoinc = ComputeResearchAccrual(nTime, msPrimaryCPID, "getmininginfo", pindexBest, false, 69, dAccrualAge, dMagnitudeUnit, AvgMagnitude); + int64_t nBoinc = ComputeResearchAccrual(nTime, primary_cpid, "getmininginfo", pindexBest, false, 69, dAccrualAge, dMagnitudeUnit, AvgMagnitude); obj.pushKV("Magnitude Unit",dMagnitudeUnit); obj.pushKV("BoincRewardPending",nBoinc/(double)COIN); } diff --git a/src/rpcprotocol.h b/src/rpcprotocol.h index 2d8f2e9e20..df097ff917 100644 --- a/src/rpcprotocol.h +++ b/src/rpcprotocol.h @@ -41,7 +41,6 @@ enum RPCErrorCode // General application defined errors RPC_MISC_ERROR = -1, // std::exception thrown in command handling - RPC_FORBIDDEN_BY_SAFE_MODE = -2, // Server is in safe mode, and command is not allowed in safe mode RPC_TYPE_ERROR = -3, // Unexpected type was passed as parameter RPC_INVALID_ADDRESS_OR_KEY = -5, // Invalid address or key RPC_OUT_OF_MEMORY = -7, // Ran out of memory during operation diff --git a/src/rpcrawtransaction.cpp b/src/rpcrawtransaction.cpp old mode 100644 new mode 100755 index 127e766735..aa82f937f4 --- a/src/rpcrawtransaction.cpp +++ b/src/rpcrawtransaction.cpp @@ -13,6 +13,7 @@ #include "main.h" #include "net.h" #include "wallet.h" +#include "coincontrol.h" using namespace std; using namespace boost; @@ -604,6 +605,167 @@ UniValue listunspent(const UniValue& params, bool fHelp) } +UniValue consolidateunspent(const UniValue& params, bool fHelp) +{ + if (fHelp || params.size() < 1 || params.size() > 3) + throw runtime_error( + "consolidateunspent
[UTXO size [maximum number of inputs]]\n" + "\n" + "Performs a single transaction to consolidate UTXOs on\n" + "a given address. The optional parameter of UTXO size will result\n" + "in consolidating UTXOs to generate an output of that size or\n" + "the output for the total value of the specified maximum,\n" + "maximum number of smallest inputs, whichever is less.\n"); + + UniValue result(UniValue::VOBJ); + + std::string sAddress = params[0].get_str(); + CBitcoinAddress OptimizeAddress(sAddress); + + int64_t nConsolidateLimit = 0; + // Set default maximum consolidation to 50 inputs if it is not specified. This is based + // on performance tests on the Pi to ensure the transaction returns within a reasonable time. + // The performance tests on the Pi show about 3 UTXO's/second. Intel machines should do + // about 3x that. The GUI will not be responsive during the transaction. + unsigned int nInputNumberLimit = 50; + + if (params.size() > 1) nConsolidateLimit = AmountFromValue(params[1]); + if (params.size() > 2) nInputNumberLimit = params[2].get_int(); + + // Clamp InputNumberLimit to 200. Above 200 risks an invalid transaction due to the size. + nInputNumberLimit = std::min(nInputNumberLimit, (unsigned int) 200); + + if (!OptimizeAddress.IsValid()) + throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, string("Invalid Gridcoin address: ") + sAddress); + + // Set the consolidation transaction address to the same as the inputs to consolidate. + CScript scriptDestPubKey; + scriptDestPubKey.SetDestination(OptimizeAddress.Get()); + + std::vector vecInputs; + + // A convenient way to do a sort without the bother of writing a comparison operator. + // The map does it for us! It must be a multimap, because it is highly likely one or + // more UTXO's will have the same nValue. + std::multimap mInputs; + + // Have to lock both main and wallet to prevent deadlocks. + LOCK2(cs_main, pwalletMain->cs_wallet); + + // Get the current UTXO's. + pwalletMain->AvailableCoins(vecInputs, false, NULL, false); + + // Filter outputs by matching address and insert into sorted multimap. + for (auto const& out : vecInputs) + { + CTxDestination outaddress; + int64_t nOutValue = out.tx->vout[out.i].nValue; + + if (!ExtractDestination(out.tx->vout[out.i].scriptPubKey, outaddress)) continue; + + if (CBitcoinAddress(outaddress) == OptimizeAddress) + mInputs.insert(std::make_pair(nOutValue, out)); + } + + CWalletTx wtxNew; + + // For min fee calculation. + CTransaction txDummy; + + set> setCoins; + + unsigned int iInputCount = 0; + int64_t nValue = 0; + + // Construct the inputs to the consolidation transaction. Either all of the inputs from above, or 200, + // or when the total reaches/exceeds nConsolidateLimit, whichever is more limiting. The map allows us + // to elegantly select the UTXO's from the smallest upwards. + for (auto const& out : mInputs) + { + // Increment first so the count is 1 based. + ++iInputCount; + + if (fDebug) LogPrintf("INFO: consolidateunspent: input value = %f, confirmations = %" PRId64, ((double) out.first) / (double) COIN, out.second.nDepth); + + setCoins.insert(make_pair(out.second.tx, out.second.i)); + nValue += out.second.tx->vout[out.second.i].nValue; + + if (iInputCount == nInputNumberLimit || (nValue >= nConsolidateLimit && nConsolidateLimit != 0)) break; + } + + // If number of inputs that meet criteria is less than two, then do nothing. + if (iInputCount < 2) + { + result.pushKV("result", true); + result.pushKV("UTXOs consolidated", (uint64_t) 0); + + return result; + } + + CReserveKey reservekey(pwalletMain); + + + // Fee calculation to avoid change. + + // Bytes + // --------- The inputs to the tx - The one output. + int64_t nBytes = iInputCount * 148 + 34 + 10; + + // Min Fee + int64_t nMinFee = txDummy.GetMinFee(1, GMF_SEND, nBytes); + + int64_t nFee = nTransactionFee * (1 + nBytes / 1000); + + int64_t nFeeRequired = max(nMinFee, nFee); + + + if (pwalletMain->IsLocked()) + { + string strError = _("Error: Wallet locked, unable to create transaction."); + LogPrintf("consolidateunspent: %s", strError); + return strError; + } + + if (fWalletUnlockStakingOnly) + { + string strError = _("Error: Wallet unlocked for staking only, unable to create transaction."); + LogPrintf("consolidateunspent: %s", strError); + return strError; + } + + vector > vecSend; + + // Reduce the out value for the transaction by nFeeRequired from the total of the inputs to provide a fee + // to the staker. The fee has been calculated so that no change should be produced from the CreateTransaction + // call. Just in case, the input address is specified as the return address via coincontrol. + vecSend.push_back(std::make_pair(scriptDestPubKey, nValue - nFeeRequired)); + + CCoinControl coinControl; + + // Send the change back to the same address. + coinControl.destChange = OptimizeAddress.Get(); + + if (!pwalletMain->CreateTransaction(vecSend, setCoins, wtxNew, reservekey, nFeeRequired, &coinControl)) + { + string strError; + if (nValue + nFeeRequired > pwalletMain->GetBalance()) + strError = strprintf(_("Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds "), FormatMoney(nFeeRequired)); + else + strError = _("Error: Transaction creation failed "); + LogPrintf("consolidateunspent: %s", strError); + return strError; + } + + if (!pwalletMain->CommitTransaction(wtxNew, reservekey)) + return _("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."); + + result.pushKV("result", true); + result.pushKV("UTXOs consolidated", (uint64_t) iInputCount); + result.pushKV("Output UTXO value", (double)(nValue - nFeeRequired) / COIN); + + return result; +} + UniValue createrawtransaction(const UniValue& params, bool fHelp) { diff --git a/src/rpcserver.cpp b/src/rpcserver.cpp index 5fe8041d91..e916e62d40 100644 --- a/src/rpcserver.cpp +++ b/src/rpcserver.cpp @@ -272,170 +272,168 @@ UniValue stop(const UniValue& params, bool fHelp) // This also has improved the performance of rpc outputs. static const CRPCCommand vRPCCommands[] = -{ // name function safemd category - // ------------------------ ----------------------- ------ ----------------- - { "list", &listitem, true, cat_null }, - { "help", &help, true, cat_null }, - { "execute", &execute, true, cat_null }, +{ // name function category + // ------------------------ ----------------------- ----------------- + { "list", &listitem, cat_null }, + { "help", &help, cat_null }, + { "execute", &execute, cat_null }, // Wallet commands - { "addmultisigaddress", &addmultisigaddress, false, cat_wallet }, - { "addredeemscript", &addredeemscript, false, cat_wallet }, - { "backupprivatekeys", &backupprivatekeys, false, cat_wallet }, - { "backupwallet", &backupwallet, true, cat_wallet }, - { "burn", &burn, false, cat_wallet }, - { "checkwallet", &checkwallet, false, cat_wallet }, - { "createrawtransaction", &createrawtransaction, false, cat_wallet }, - { "decoderawtransaction", &decoderawtransaction, false, cat_wallet }, - { "decodescript", &decodescript, false, cat_wallet }, - { "dumpprivkey", &dumpprivkey, false, cat_wallet }, - { "dumpwallet", &dumpwallet, true, cat_wallet }, - { "encryptwallet", &encryptwallet, false, cat_wallet }, - { "getaccount", &getaccount, false, cat_wallet }, - { "getaccountaddress", &getaccountaddress, true, cat_wallet }, - { "getaddressesbyaccount", &getaddressesbyaccount, true, cat_wallet }, - { "getbalance", &getbalance, false, cat_wallet }, - { "getnewaddress", &getnewaddress, true, cat_wallet }, - { "getnewpubkey", &getnewpubkey, true, cat_wallet }, - { "getrawtransaction", &getrawtransaction, false, cat_wallet }, - { "getreceivedbyaccount", &getreceivedbyaccount, false, cat_wallet }, - { "getreceivedbyaddress", &getreceivedbyaddress, false, cat_wallet }, - { "gettransaction", &gettransaction, false, cat_wallet }, - { "getwalletinfo", &getwalletinfo, true, cat_wallet }, - { "importprivkey", &importprivkey, false, cat_wallet }, - { "importwallet", &importwallet, false, cat_wallet }, - { "keypoolrefill", &keypoolrefill, true, cat_wallet }, - { "listaccounts", &listaccounts, false, cat_wallet }, - { "listaddressgroupings", &listaddressgroupings, false, cat_wallet }, - { "listreceivedbyaccount", &listreceivedbyaccount, false, cat_wallet }, - { "listreceivedbyaddress", &listreceivedbyaddress, false, cat_wallet }, - { "listsinceblock", &listsinceblock, false, cat_wallet }, - { "listtransactions", &listtransactions, false, cat_wallet }, - { "listunspent", &listunspent, false, cat_wallet }, - { "makekeypair", &makekeypair, false, cat_wallet }, - { "move", &movecmd, false, cat_wallet }, - { "rain", &rain, false, cat_wallet }, - { "rainbymagnitude", &rainbymagnitude, false, cat_wallet }, - { "repairwallet", &repairwallet, false, cat_wallet }, - { "resendtx", &resendtx, false, cat_wallet }, - { "reservebalance", &reservebalance, false, cat_wallet }, - { "sendfrom", &sendfrom, false, cat_wallet }, - { "sendmany", &sendmany, false, cat_wallet }, - { "sendrawtransaction", &sendrawtransaction, false, cat_wallet }, - { "sendtoaddress", &sendtoaddress, false, cat_wallet }, - { "setaccount", &setaccount, true, cat_wallet }, - { "settxfee", &settxfee, false, cat_wallet }, - { "signmessage", &signmessage, false, cat_wallet }, - { "signrawtransaction", &signrawtransaction, false, cat_wallet }, - { "unspentreport", &unspentreport, false, cat_wallet }, - { "validateaddress", &validateaddress, true, cat_wallet }, - { "validatepubkey", &validatepubkey, true, cat_wallet }, - { "verifymessage", &verifymessage, false, cat_wallet }, - { "walletlock", &walletlock, true, cat_wallet }, - { "walletpassphrase", &walletpassphrase, true, cat_wallet }, - { "walletpassphrasechange", &walletpassphrasechange, false, cat_wallet }, + { "addmultisigaddress", &addmultisigaddress, cat_wallet }, + { "addredeemscript", &addredeemscript, cat_wallet }, + { "backupprivatekeys", &backupprivatekeys, cat_wallet }, + { "backupwallet", &backupwallet, cat_wallet }, + { "burn", &burn, cat_wallet }, + { "checkwallet", &checkwallet, cat_wallet }, + { "createrawtransaction", &createrawtransaction, cat_wallet }, + { "decoderawtransaction", &decoderawtransaction, cat_wallet }, + { "decodescript", &decodescript, cat_wallet }, + { "dumpprivkey", &dumpprivkey, cat_wallet }, + { "dumpwallet", &dumpwallet, cat_wallet }, + { "encryptwallet", &encryptwallet, cat_wallet }, + { "getaccount", &getaccount, cat_wallet }, + { "getaccountaddress", &getaccountaddress, cat_wallet }, + { "getaddressesbyaccount", &getaddressesbyaccount, cat_wallet }, + { "getbalance", &getbalance, cat_wallet }, + { "getnewaddress", &getnewaddress, cat_wallet }, + { "getnewpubkey", &getnewpubkey, cat_wallet }, + { "getrawtransaction", &getrawtransaction, cat_wallet }, + { "getreceivedbyaccount", &getreceivedbyaccount, cat_wallet }, + { "getreceivedbyaddress", &getreceivedbyaddress, cat_wallet }, + { "gettransaction", &gettransaction, cat_wallet }, + { "getwalletinfo", &getwalletinfo, cat_wallet }, + { "importprivkey", &importprivkey, cat_wallet }, + { "importwallet", &importwallet, cat_wallet }, + { "keypoolrefill", &keypoolrefill, cat_wallet }, + { "listaccounts", &listaccounts, cat_wallet }, + { "listaddressgroupings", &listaddressgroupings, cat_wallet }, + { "listreceivedbyaccount", &listreceivedbyaccount, cat_wallet }, + { "listreceivedbyaddress", &listreceivedbyaddress, cat_wallet }, + { "listsinceblock", &listsinceblock, cat_wallet }, + { "listtransactions", &listtransactions, cat_wallet }, + { "listunspent", &listunspent, cat_wallet }, + { "consolidateunspent", &consolidateunspent, cat_wallet }, + { "makekeypair", &makekeypair, cat_wallet }, + { "move", &movecmd, cat_wallet }, + { "rain", &rain, cat_wallet }, + { "rainbymagnitude", &rainbymagnitude, cat_wallet }, + { "repairwallet", &repairwallet, cat_wallet }, + { "resendtx", &resendtx, cat_wallet }, + { "reservebalance", &reservebalance, cat_wallet }, + { "sendfrom", &sendfrom, cat_wallet }, + { "sendmany", &sendmany, cat_wallet }, + { "sendrawtransaction", &sendrawtransaction, cat_wallet }, + { "sendtoaddress", &sendtoaddress, cat_wallet }, + { "setaccount", &setaccount, cat_wallet }, + { "settxfee", &settxfee, cat_wallet }, + { "signmessage", &signmessage, cat_wallet }, + { "signrawtransaction", &signrawtransaction, cat_wallet }, + { "unspentreport", &unspentreport, cat_wallet }, + { "validateaddress", &validateaddress, cat_wallet }, + { "validatepubkey", &validatepubkey, cat_wallet }, + { "verifymessage", &verifymessage, cat_wallet }, + { "walletlock", &walletlock, cat_wallet }, + { "walletpassphrase", &walletpassphrase, cat_wallet }, + { "walletpassphrasechange", &walletpassphrasechange, cat_wallet }, // Mining commands - { "advertisebeacon", &advertisebeacon, false, cat_mining }, - { "beaconreport", &beaconreport, false, cat_mining }, - { "beaconstatus", &beaconstatus, false, cat_mining }, - { "currentneuralhash", ¤tneuralhash, false, cat_mining }, - { "currentneuralreport", ¤tneuralreport, false, cat_mining }, - { "explainmagnitude", &explainmagnitude, false, cat_mining }, - { "getmininginfo", &getmininginfo, false, cat_mining }, - { "lifetime", &lifetime, false, cat_mining }, - { "magnitude", &magnitude, false, cat_mining }, - { "myneuralhash", &myneuralhash, false, cat_mining }, - { "neuralhash", &neuralhash, false, cat_mining }, - { "neuralreport", &neuralreport, false, cat_mining }, - { "resetcpids", &resetcpids, false, cat_mining }, - { "staketime", &staketime, false, cat_mining }, - { "superblockage", &superblockage, false, cat_mining }, - { "superblocks", &superblocks, false, cat_mining }, - { "syncdpor2", &syncdpor2, false, cat_mining }, - { "upgradedbeaconreport", &upgradedbeaconreport, false, cat_mining }, + { "advertisebeacon", &advertisebeacon, cat_mining }, + { "beaconreport", &beaconreport, cat_mining }, + { "beaconstatus", &beaconstatus, cat_mining }, + { "currentneuralhash", ¤tneuralhash, cat_mining }, + { "currentneuralreport", ¤tneuralreport, cat_mining }, + { "explainmagnitude", &explainmagnitude, cat_mining }, + { "getmininginfo", &getmininginfo, cat_mining }, + { "lifetime", &lifetime, cat_mining }, + { "magnitude", &magnitude, cat_mining }, + { "myneuralhash", &myneuralhash, cat_mining }, + { "neuralhash", &neuralhash, cat_mining }, + { "neuralreport", &neuralreport, cat_mining }, + { "resetcpids", &resetcpids, cat_mining }, + { "staketime", &staketime, cat_mining }, + { "superblockage", &superblockage, cat_mining }, + { "superblocks", &superblocks, cat_mining }, + { "syncdpor2", &syncdpor2, cat_mining }, + { "upgradedbeaconreport", &upgradedbeaconreport, cat_mining }, // Developer commands - { "addkey", &addkey, false, cat_developer }, - { "currentcontractaverage", ¤tcontractaverage, false, cat_developer }, - { "debug", &debug, true, cat_developer }, - { "debug10", &debug10, true, cat_developer }, - { "debug2", &debug2, true, cat_developer }, - { "debug3", &debug3, true, cat_developer }, - { "debug4", &debug4, true, cat_developer }, - { "debugnet", &debugnet, true, cat_developer }, - { "dportally", &dportally, false, cat_developer }, - { "exportstats1", &rpc_exportstats, false, cat_developer }, - { "forcequorum", &forcequorum, false, cat_developer }, - { "gatherneuralhashes", &gatherneuralhashes, false, cat_developer }, - { "genboinckey", &genboinckey, false, cat_developer }, - { "getblockstats", &rpc_getblockstats, false, cat_developer }, - { "getlistof", &getlistof, false, cat_developer }, - { "getnextproject", &getnextproject, false, cat_developer }, - { "getrecentblocks", &rpc_getrecentblocks, false, cat_developer }, - { "getsupervotes", &rpc_getsupervotes, false, cat_developer }, - { "listdata", &listdata, false, cat_developer }, - { "listprojects", &listprojects, false, cat_developer }, - { "memorizekeys", &memorizekeys, false, cat_developer }, - { "network", &network, false, cat_developer }, - { "neuralrequest", &neuralrequest, false, cat_developer }, - { "projects", &projects, false, cat_developer }, - { "readconfig", &readconfig, false, cat_developer }, - { "readdata", &readdata, false, cat_developer }, - { "refhash", &refhash, false, cat_developer }, - { "reorganize", &rpc_reorganize, false, cat_developer }, - { "sendalert", &sendalert, false, cat_developer }, - { "sendalert2", &sendalert2, false, cat_developer }, - { "sendblock", &sendblock, false, cat_developer }, - { "sendrawcontract", &sendrawcontract, false, cat_developer }, - { "superblockaverage", &superblockaverage, false, cat_developer }, - { "tally", &tally, false, cat_developer }, - { "tallyneural", &tallyneural, false, cat_developer }, - { "testnewcontract", &testnewcontract, false, cat_developer }, - { "versionreport", &versionreport, false, cat_developer }, - { "writedata", &writedata, false, cat_developer }, - - { "listmanifests", &listmanifests, false, cat_developer }, - { "getmpart", &getmpart, false, cat_developer }, - { "sendscraperfilemanifest", &sendscraperfilemanifest, false, cat_developer }, - { "savescraperfilemanifest", &savescraperfilemanifest, false, cat_developer }, - { "deletecscrapermanifest", &deletecscrapermanifest, false, cat_developer }, - { "archivescraperlog", &archivescraperlog, false, cat_developer }, + { "addkey", &addkey, cat_developer }, + { "currentcontractaverage", ¤tcontractaverage, cat_developer }, + { "debug", &debug, cat_developer }, + { "debug10", &debug10, cat_developer }, + { "debug2", &debug2, cat_developer }, + { "debug3", &debug3, cat_developer }, + { "debug4", &debug4, cat_developer }, + { "debugnet", &debugnet, cat_developer }, + { "dportally", &dportally, cat_developer }, + { "exportstats1", &rpc_exportstats, cat_developer }, + { "forcequorum", &forcequorum, cat_developer }, + { "gatherneuralhashes", &gatherneuralhashes, cat_developer }, + { "getblockstats", &rpc_getblockstats, cat_developer }, + { "getlistof", &getlistof, cat_developer }, + { "getrecentblocks", &rpc_getrecentblocks, cat_developer }, + { "getsupervotes", &rpc_getsupervotes, cat_developer }, + { "listdata", &listdata, cat_developer }, + { "listprojects", &listprojects, cat_developer }, + { "memorizekeys", &memorizekeys, cat_developer }, + { "network", &network, cat_developer }, + { "neuralrequest", &neuralrequest, cat_developer }, + { "projects", &projects, cat_developer }, + { "readconfig", &readconfig, cat_developer }, + { "readdata", &readdata, cat_developer }, + { "refhash", &refhash, cat_developer }, + { "reorganize", &rpc_reorganize, cat_developer }, + { "sendalert", &sendalert, cat_developer }, + { "sendalert2", &sendalert2, cat_developer }, + { "sendblock", &sendblock, cat_developer }, + { "sendrawcontract", &sendrawcontract, cat_developer }, + { "superblockaverage", &superblockaverage, cat_developer }, + { "tally", &tally, cat_developer }, + { "tallyneural", &tallyneural, cat_developer }, + { "testnewcontract", &testnewcontract, cat_developer }, + { "versionreport", &versionreport, cat_developer }, + { "writedata", &writedata, cat_developer }, + + { "listmanifests", &listmanifests, cat_developer }, + { "getmpart", &getmpart, cat_developer }, + { "sendscraperfilemanifest", &sendscraperfilemanifest, cat_developer }, + { "savescraperfilemanifest", &savescraperfilemanifest, cat_developer }, + { "deletecscrapermanifest", &deletecscrapermanifest, cat_developer }, + { "archivescraperlog", &archivescraperlog, cat_developer }, + { "testnewsb", &testnewsb, cat_developer }, // Network commands - { "addnode", &addnode, false, cat_network }, - { "addpoll", &addpoll, false, cat_network }, - { "askforoutstandingblocks", &askforoutstandingblocks, false, cat_network }, - { "getblockchaininfo", &getblockchaininfo, true, cat_network }, - { "getnetworkinfo", &getnetworkinfo, true, cat_network }, - { "currenttime", ¤ttime, false, cat_network }, - { "decryptphrase", &decryptphrase, false, cat_network }, - { "encryptphrase", &encryptphrase, false, cat_network }, - { "getaddednodeinfo", &getaddednodeinfo, true, cat_network }, - { "getbestblockhash", &getbestblockhash, true, cat_network }, - { "getblock", &getblock, true, cat_network }, - { "getblockbynumber", &getblockbynumber, true, cat_network }, - { "getblockcount", &getblockcount, true, cat_network }, - { "getblockhash", &getblockhash, true, cat_network }, - { "getcheckpoint", &getcheckpoint, true, cat_network }, - { "getconnectioncount", &getconnectioncount, true, cat_network }, - { "getdifficulty", &getdifficulty, true, cat_network }, - { "getinfo", &getinfo, true, cat_network }, - { "getnettotals", &getnettotals, true, cat_network }, - { "getpeerinfo", &getpeerinfo, true, cat_network }, - { "getrawmempool", &getrawmempool, true, cat_network }, - { "listallpolls", &listallpolls, true, cat_network }, - { "listallpolldetails", &listallpolldetails, true, cat_network }, - { "listpolldetails", &listpolldetails, true, cat_network }, - { "listpollresults", &listpollresults, true, cat_network }, - { "listpolls", &listpolls, true, cat_network }, - { "memorypool", &memorypool, true, cat_network }, - { "networktime", &networktime, true, cat_network }, - { "ping", &ping, true, cat_network }, - { "showblock", &showblock, true, cat_network }, - { "stop", &stop, true, cat_network }, - { "vote", &vote, false, cat_network }, - { "votedetails", &votedetails, true, cat_network }, + { "addnode", &addnode, cat_network }, + { "addpoll", &addpoll, cat_network }, + { "askforoutstandingblocks", &askforoutstandingblocks, cat_network }, + { "getblockchaininfo", &getblockchaininfo, cat_network }, + { "getnetworkinfo", &getnetworkinfo, cat_network }, + { "currenttime", ¤ttime, cat_network }, + { "getaddednodeinfo", &getaddednodeinfo, cat_network }, + { "getbestblockhash", &getbestblockhash, cat_network }, + { "getblock", &getblock, cat_network }, + { "getblockbynumber", &getblockbynumber, cat_network }, + { "getblockcount", &getblockcount, cat_network }, + { "getblockhash", &getblockhash, cat_network }, + { "getcheckpoint", &getcheckpoint, cat_network }, + { "getconnectioncount", &getconnectioncount, cat_network }, + { "getdifficulty", &getdifficulty, cat_network }, + { "getinfo", &getinfo, cat_network }, + { "getnettotals", &getnettotals, cat_network }, + { "getpeerinfo", &getpeerinfo, cat_network }, + { "getrawmempool", &getrawmempool, cat_network }, + { "listallpolls", &listallpolls, cat_network }, + { "listallpolldetails", &listallpolldetails, cat_network }, + { "listpolldetails", &listpolldetails, cat_network }, + { "listpollresults", &listpollresults, cat_network }, + { "listpolls", &listpolls, cat_network }, + { "memorypool", &memorypool, cat_network }, + { "networktime", &networktime, cat_network }, + { "ping", &ping, cat_network }, + { "showblock", &showblock, cat_network }, + { "stop", &stop, cat_network }, + { "vote", &vote, cat_network }, + { "votedetails", &votedetails, cat_network }, }; CRPCTable::CRPCTable() @@ -865,12 +863,6 @@ UniValue CRPCTable::execute(const std::string& strMethod, const UniValue& params if (!pcmd) throw JSONRPCError(RPC_METHOD_NOT_FOUND, "Method not found"); - // Observe safe mode - string strWarning = GetWarnings("rpc"); - if (strWarning != "" && !GetBoolArg("-disablesafemode") && - !pcmd->okSafeMode) - throw JSONRPCError(RPC_FORBIDDEN_BY_SAFE_MODE, string("Safe mode: ") + strWarning); - // Lets add a optional debug4 to display how long it takes the rpc commands to be performed in ms // We will do this only on successful calls not exceptions try diff --git a/src/rpcserver.h b/src/rpcserver.h index 739673dd51..b2ef165559 100644 --- a/src/rpcserver.h +++ b/src/rpcserver.h @@ -50,7 +50,6 @@ class CRPCCommand public: std::string name; rpcfn_type actor; - bool okSafeMode; rpccategory category; }; @@ -134,6 +133,7 @@ extern UniValue listreceivedbyaddress(const UniValue& params, bool fHelp); extern UniValue listsinceblock(const UniValue& params, bool fHelp); extern UniValue listtransactions(const UniValue& params, bool fHelp); extern UniValue listunspent(const UniValue& params, bool fHelp); +extern UniValue consolidateunspent(const UniValue& params, bool fHelp); extern UniValue makekeypair(const UniValue& params, bool fHelp); extern UniValue movecmd(const UniValue& params, bool fHelp); extern UniValue rain(const UniValue& params, bool fHelp); @@ -189,10 +189,8 @@ extern UniValue debugnet(const UniValue& params, bool fHelp); extern UniValue dportally(const UniValue& params, bool fHelp); extern UniValue forcequorum(const UniValue& params, bool fHelp); extern UniValue gatherneuralhashes(const UniValue& params, bool fHelp); -extern UniValue genboinckey(const UniValue& params, bool fHelp); extern UniValue rpc_getblockstats(const UniValue& params, bool fHelp); extern UniValue getlistof(const UniValue& params, bool fHelp); -extern UniValue getnextproject(const UniValue& params, bool fHelp); extern UniValue listdata(const UniValue& params, bool fHelp); extern UniValue listprojects(const UniValue& params, bool fHelp); extern UniValue memorizekeys(const UniValue& params, bool fHelp); @@ -221,14 +219,13 @@ extern UniValue sendscraperfilemanifest(const UniValue& params, bool fHelp); extern UniValue savescraperfilemanifest(const UniValue& params, bool fHelp); extern UniValue deletecscrapermanifest(const UniValue& params, bool fHelp); extern UniValue archivescraperlog(const UniValue& params, bool fHelp); +extern UniValue testnewsb(const UniValue& params, bool fHelp); // Network extern UniValue addnode(const UniValue& params, bool fHelp); extern UniValue addpoll(const UniValue& params, bool fHelp); extern UniValue askforoutstandingblocks(const UniValue& params, bool fHelp); extern UniValue currenttime(const UniValue& params, bool fHelp); -extern UniValue decryptphrase(const UniValue& params, bool fHelp); -extern UniValue encryptphrase(const UniValue& params, bool fHelp); extern UniValue getaddednodeinfo(const UniValue& params, bool fHelp); extern UniValue getbestblockhash(const UniValue& params, bool fHelp); extern UniValue getblock(const UniValue& params, bool fHelp); diff --git a/src/rpcwallet.cpp b/src/rpcwallet.cpp index 51dd33119a..a3ebb482fb 100644 --- a/src/rpcwallet.cpp +++ b/src/rpcwallet.cpp @@ -1955,9 +1955,19 @@ UniValue walletpassphrase(const UniValue& params, bool fHelp) if (!pwalletMain->IsLocked()) throw JSONRPCError(RPC_WALLET_ALREADY_UNLOCKED, "Error: Wallet is already unlocked, use walletlock first if need to change unlock settings."); + // Adapted from Bitcoin (20190511)... + // Get the timeout int64_t nSleepTime = params[1].get_int64(); - if (nSleepTime <= 0 || nSleepTime >= std::numeric_limits::max() / 1000000000) - throw runtime_error("timeout is out of bounds"); + // Timeout cannot be negative or zero, otherwise it will relock immediately. + if (nSleepTime <= 0) { + throw JSONRPCError(RPC_INVALID_PARAMETER, "Timeout cannot be negative or zero."); + } + // Clamp timeout + constexpr int64_t MAX_SLEEP_TIME = 100000000; // larger values trigger a macos/libevent bug? + if (nSleepTime > MAX_SLEEP_TIME) { + nSleepTime = MAX_SLEEP_TIME; + LogPrintf("WARN: walletpassphrase: timeout is too large. Set to limit of 10000000 seconds."); + } // Note that the walletpassphrase is stored in params[0] which is not mlock()ed SecureString strWalletPass; diff --git a/src/scraper/fwd.h b/src/scraper/fwd.h index 994fd79270..fe012c4e7d 100644 --- a/src/scraper/fwd.h +++ b/src/scraper/fwd.h @@ -7,7 +7,6 @@ #include "util.h" - /********************* * Scraper ENUMS * *********************/ @@ -53,15 +52,35 @@ typedef std::map mConvergedManifestParts; struct ConvergedManifest { // IMPORTANT... nContentHash is NOT the hash of part hashes in the order of vParts unlike CScraper::manifest. - // It is the hash of the data in the ConvergedManifestPartsMap in the order of the key. + // It is the hash of the data in the ConvergedManifestPartsMap in the order of the key. It represents + // the composite convergence by taking parts piecewise in the case of the fallback to bByParts (project) level. uint256 nContentHash; uint256 ConsensusBlock; int64_t timestamp; bool bByParts; mConvergedManifestParts ConvergedManifestPartsMap; - // ------------------ project ----- reason for exclusion - std::vector> vExcludedProjects; + + // Used when convergence is at the manifest level (normal) + std::map mIncludedScraperManifests; + + // Used when convergence is at the manifest level (normal) and also at the part (project) level for + // scrapers that are not part of any part (project) level convergence. + std::vector vIncludedScrapers; + std::vector vExcludedScrapers; + std::vector vScrapersNotPublishing; + + // Used when convergence is at the project (bByParts) level (fallback) + // ----- Project --------- ScraperID + std::multimap mIncludedScrapersbyProject; + // ----- ScraperID ------- Project + std::multimap mIncludedProjectsbyScraper; + // When bByParts (project) level convergence occurs, this records the the count of scrapers in the + // convergences by project. + std::map mScraperConvergenceCountbyProject; + + // --------- project + std::vector vExcludedProjects; }; @@ -96,15 +115,6 @@ struct ScraperObjectStatsKeyComp typedef std::map ScraperStats; -struct ConvergedScraperStats -{ - int64_t nTime; - ScraperStats mScraperConvergedStats; - std::string sContractHash; - std::string sContract; - std::vector> vExcludedProjects; -}; - // Extended AppCache structures similar to those in AppCache.h, except a deleted flag is provided struct AppCacheEntryExt { @@ -115,6 +125,4 @@ struct AppCacheEntryExt typedef std::unordered_map AppCacheSectionExt; - - #endif // FWD_H diff --git a/src/scraper/scraper.cpp b/src/scraper/scraper.cpp old mode 100644 new mode 100755 index 29479ab5ad..338ed0e1e7 --- a/src/scraper/scraper.cpp +++ b/src/scraper/scraper.cpp @@ -4,6 +4,8 @@ #include "http.h" #include "ui_interface.h" +#include "neuralnet/superblock.h" + #include #include #include @@ -51,6 +53,8 @@ struct ScraperFileManifestEntry uint256 hash; // hash of file int64_t timestamp; bool current; + bool excludefromcsmanifest; + std::string filetype; }; typedef std::map ScraperFileManifestMap; @@ -63,16 +67,24 @@ struct ScraperFileManifest int64_t timestamp; }; +// Both TeamIDMap and ProjTeamETags are protected by cs_TeamIDMap. // --------------- project -------------team name -- teamID typedef std::map> mTeamIDs; mTeamIDs TeamIDMap; +// ProjTeamETags is not persisted to disk. There would be little to be gained by doing so. The scrapers are restarted very +// rarely, and on restart, this would only save downloading team files for those projects that have one or TeamIDs missing AND +// an ETag had NOT changed since the last pull. Not worth the complexity. +// --------------- project ---- eTag +typedef std::map mProjectTeamETags; +mProjectTeamETags ProjTeamETags; + std::string urlsanity(const std::string& s, const std::string& type); std::string lowercase(std::string s); std::string ExtractXML(const std::string& XMLdata, const std::string& key, const std::string& key_end); ScraperFileManifest StructScraperFileManifest = {}; -// Global cache for converged scraper stats. Access must be through a lock. +// Global cache for converged scraper stats. Access must be with the lock cs_ConvergedScraperStatsCache taken. ConvergedScraperStats ConvergedScraperStatsCache = {}; CCriticalSection cs_Scraper; @@ -103,6 +115,7 @@ bool LoadScraperFileManifest(const fs::path& file); bool InsertScraperFileManifestEntry(ScraperFileManifestEntry& entry); unsigned int DeleteScraperFileManifestEntry(ScraperFileManifestEntry& entry); bool MarkScraperFileManifestEntryNonCurrent(ScraperFileManifestEntry& entry); +void AlignScraperFileManifestEntries(const fs::path& file, const std::string& filetype, const std::string& sProject, const bool& excludefromcsmanifest); ScraperStats GetScraperStatsByConsensusBeaconList(); bool LoadProjectFileToStatsByCPID(const std::string& project, const fs::path& file, const double& projectmag, const BeaconMap& mBeaconMap, ScraperStats& mScraperStats); bool LoadProjectObjectToStatsByCPID(const std::string& project, const CSerializeData& ProjectData, const double& projectmag, const BeaconMap& mBeaconMap, ScraperStats& mScraperStats); @@ -122,9 +135,11 @@ bool ScraperConstructConvergedManifestByProject(const NN::WhitelistSnapshot& pro std::string GenerateSBCoreDataFromScraperStats(ScraperStats& mScraperStats); // Overloaded. See alternative in scraper.h. std::string ScraperGetNeuralHash(std::string sNeuralContract); +NN::QuorumHash ScraperGetSuperblockHash(NN::Superblock& superblock); +bool DownloadProjectHostFiles(const NN::WhitelistSnapshot& projectWhitelist); bool DownloadProjectTeamFiles(const NN::WhitelistSnapshot& projectWhitelist); -bool ProcessProjectTeamFile(const fs::path& file, const std::string& etag, std::map& mTeamIdsForProject_out); +bool ProcessProjectTeamFile(const std::string& project, const fs::path& file, const std::string& etag); bool DownloadProjectRacFilesByCPID(const NN::WhitelistSnapshot& projectWhitelist); bool ProcessProjectRacFileByCPID(const std::string& project, const fs::path& file, const std::string& etag, BeaconConsensus& Consensus); bool AuthenticationETagUpdate(const std::string& project, const std::string& etag); @@ -163,7 +178,7 @@ class logger LOCK(cs_log); fs::path plogfile = pathDataDir / "scraper.log"; - logfile.open(plogfile.c_str(), std::ios_base::out | std::ios_base::app); + logfile.open(plogfile, std::ios_base::out | std::ios_base::app); if (!logfile.is_open()) LogPrintf("ERROR: Scraper: Logger: Failed to open logging file\n"); @@ -261,7 +276,7 @@ class logger // Re-open log file. fs::path plogfile = pathDataDir / "scraper.log"; - logfile.open(plogfile.c_str(), std::ios_base::out | std::ios_base::app); + logfile.open(plogfile, std::ios_base::out | std::ios_base::app); if (!logfile.is_open()) LogPrintf("ERROR: Scraper: Logger: Failed to open logging file\n"); @@ -269,7 +284,7 @@ class logger PrevArchiveCheckDate = ArchiveCheckDate; } - std::ifstream infile(pfile_temp.string().c_str(), std::ios_base::in | std::ios_base::binary); + std::ifstream infile(pfile_temp.string(), std::ios_base::in | std::ios_base::binary); if (!infile) { @@ -277,7 +292,7 @@ class logger return false; } - std::ofstream outgzfile(pfile_out.string().c_str(), std::ios_base::out | std::ios_base::binary); + std::ofstream outgzfile(pfile_out.string(), std::ios_base::out | std::ios_base::binary); if (!outgzfile) { @@ -372,7 +387,7 @@ void _log(logattribute eType, const std::string& sCall, const std::string& sMess catch (std::exception& ex) { - printf("Logger : exception occured in _log function (%s)\n", ex.what()); + printf("Logger : exception occurred in _log function (%s)\n", ex.what()); return; } @@ -389,7 +404,7 @@ void _log(logattribute eType, const std::string& sCall, const std::string& sMess // Send to UI for log window. uiInterface.NotifyScraperEvent(scrapereventtypes::Log, CT_NEW, sOut); - LogPrintf(std::string(sType + ": Scraper: <" + sCall + ">: %s").c_str(), sMessage); + if (eType != logattribute::INFO) LogPrintf(std::string(sType + ": Scraper: <" + sCall + ">: %s").c_str(), sMessage); return; } @@ -486,7 +501,7 @@ class userpass fs::path plistfile = GetDataDir() / "userpass.dat"; - userpassfile.open(plistfile.c_str(), std::ios_base::in); + userpassfile.open(plistfile, std::ios_base::in); if (!userpassfile.is_open()) _log(logattribute::CRITICAL, "userpass_data", "Failed to open userpass file"); @@ -542,9 +557,9 @@ class authdata authdata(const std::string& project) { std::string outfile = project + "_auth.dat"; - fs::path poutfile = GetDataDir() / outfile.c_str(); + fs::path poutfile = GetDataDir() / outfile; - oauthdata.open(poutfile.c_str(), std::ios_base::out | std::ios_base::app); + oauthdata.open(poutfile, std::ios_base::out | std::ios_base::app); if (!oauthdata.is_open()) _log(logattribute::CRITICAL, "auth_data", "Failed to open auth data file"); @@ -644,6 +659,7 @@ void ScraperApplyAppCacheEntries() ApplyCache("SCRAPER_RETAIN_NONCURRENT_FILES", SCRAPER_RETAIN_NONCURRENT_FILES); ApplyCache("SCRAPER_FILE_RETENTION_TIME", SCRAPER_FILE_RETENTION_TIME); + ApplyCache("EXPLORER_EXTENDED_FILE_RETENTION_TIME", EXPLORER_EXTENDED_FILE_RETENTION_TIME); ApplyCache("SCRAPER_CMANIFEST_RETAIN_NONCURRENT", SCRAPER_CMANIFEST_RETAIN_NONCURRENT); ApplyCache("SCRAPER_CMANIFEST_RETENTION_TIME", SCRAPER_CMANIFEST_RETENTION_TIME); ApplyCache("SCRAPER_CMANIFEST_INCLUDE_NONCURRENT_PROJ_FILES", SCRAPER_CMANIFEST_INCLUDE_NONCURRENT_PROJ_FILES); @@ -666,6 +682,7 @@ void ScraperApplyAppCacheEntries() _log(logattribute::INFO, "ScraperApplyAppCacheEntries", "SCRAPER_RETAIN_NONCURRENT_FILES = " + std::to_string(SCRAPER_RETAIN_NONCURRENT_FILES)); _log(logattribute::INFO, "ScraperApplyAppCacheEntries", "SCRAPER_FILE_RETENTION_TIME = " + std::to_string(SCRAPER_FILE_RETENTION_TIME)); + _log(logattribute::INFO, "ScraperApplyAppCacheEntries", "EXPLORER_EXTENDED_FILE_RETENTION_TIME = " + std::to_string(EXPLORER_EXTENDED_FILE_RETENTION_TIME)); _log(logattribute::INFO, "ScraperApplyAppCacheEntries", "SCRAPER_CMANIFEST_RETAIN_NONCURRENT = " + std::to_string(SCRAPER_CMANIFEST_RETAIN_NONCURRENT)); _log(logattribute::INFO, "ScraperApplyAppCacheEntries", "SCRAPER_CMANIFEST_RETENTION_TIME = " + std::to_string(SCRAPER_CMANIFEST_RETENTION_TIME)); _log(logattribute::INFO, "ScraperApplyAppCacheEntries", "SCRAPER_CMANIFEST_INCLUDE_NONCURRENT_PROJ_FILES = " + std::to_string(SCRAPER_CMANIFEST_INCLUDE_NONCURRENT_PROJ_FILES)); @@ -707,9 +724,6 @@ void Scraper(bool bSingleShot) if (pathDataDir.empty()) { pathDataDir = GetDataDir(); - // This is necessary to maintain compatibility with Windows. - pathDataDir.imbue(std::locale(std::locale(), new std::codecvt_utf8_utf16())); - pathScraper = pathDataDir / "Scraper"; } @@ -732,6 +746,9 @@ void Scraper(bool bSingleShot) // beforehand. while (OutOfSyncByAge()) { + // Set atomic out of sync flag to true. + fOutOfSyncByAge = true; + // Signal stats event to UI. uiInterface.NotifyScraperEvent(scrapereventtypes::OutOfSync, CT_UPDATING, {}); @@ -739,6 +756,9 @@ void Scraper(bool bSingleShot) MilliSleep(8000); } + // Set atomic out of sync flag to false. + fOutOfSyncByAge = false; + nSyncTime = GetAdjustedTime(); // Now that we are in sync, refresh from the AppCache and check for proper directory/file structure. @@ -811,13 +831,13 @@ void Scraper(bool bSingleShot) sbage = SuperblockAge(); _log(logattribute::INFO, "Scraper", "Superblock not needed. age=" + std::to_string(sbage)); _log(logattribute::INFO, "Scraper", "Sleeping for " + std::to_string(nScraperSleep / 1000) +" seconds"); - + MilliSleep(nScraperSleep); } } else if (sbage <= -1) - _log(logattribute::ERR, "Scraper", "RPC error occured, check logs"); + _log(logattribute::ERR, "Scraper", "RPC error occurred, check logs"); // This is the section to download statistics. Only do if authorized. else if (IsScraperAuthorized() || IsScraperAuthorizedToBroadcastManifests(AddressOut, KeyOut)) @@ -835,7 +855,7 @@ void Scraper(bool bSingleShot) // Delete manifest entries not on whitelist. Take a lock on cs_StructScraperFileManifest for this. { LOCK(cs_StructScraperFileManifest); - if (fDebug3) _log(logattribute::INFO, "LOCK", "cs_StructScraperFileManifest"); + if (fDebug3) _log(logattribute::INFO, "LOCK", "download statistics block: cs_StructScraperFileManifest"); ScraperFileManifestMap::iterator entry; @@ -851,7 +871,7 @@ void Scraper(bool bSingleShot) } // End LOCK(cs_StructScraperFileManifest) - if (fDebug3) _log(logattribute::INFO, "ENDLOCK", "cs_StructScraperFileManifest"); + if (fDebug3) _log(logattribute::INFO, "ENDLOCK", "download statistics block: cs_StructScraperFileManifest"); } AuthenticationETagClear(); @@ -865,12 +885,15 @@ void Scraper(bool bSingleShot) // If team filtering is set by policy then pull down and retrieve team ID's as needed. This loads the TeamIDMap global. // Note that the call(s) to ScraperDirectoryAndConfigSanity() above will preload the team ID map from the persisted file - // if it exists, so this will minimize the work that DownloadProjectTeamFiles() has to do. - if (REQUIRE_TEAM_WHITELIST_MEMBERSHIP) - DownloadProjectTeamFiles(projectWhitelist); + // if it exists, so this will minimize the work that DownloadProjectTeamFiles() has to do, unless explorer mode (fExplorer) is true. + if (REQUIRE_TEAM_WHITELIST_MEMBERSHIP || fExplorer) DownloadProjectTeamFiles(projectWhitelist); DownloadProjectRacFilesByCPID(projectWhitelist); + // If explorer mode is set (fExplorer is true), then download host files. These are currently not use for any other processing, + // so there is no corresponding Process function for the host files. + if (fExplorer) DownloadProjectHostFiles(projectWhitelist); + if (fDebug) _log(logattribute::INFO, "Scraper", "download size so far: " + std::to_string(ndownloadsize) + " upload size so far: " + std::to_string(nuploadsize)); ScraperStats mScraperStats = GetScraperStatsByConsensusBeaconList(); @@ -902,7 +925,7 @@ void Scraper(bool bSingleShot) // Publish and/or local delete CScraperManifests. { LOCK2(cs_StructScraperFileManifest, CScraperManifest::cs_mapManifest); - if (fDebug3) _log(logattribute::INFO, "LOCK2", "cs_StructScraperFileManifest, CScraperManifest::cs_mapManifest"); + if (fDebug3) _log(logattribute::INFO, "LOCK2", "manifest send block: cs_StructScraperFileManifest, CScraperManifest::cs_mapManifest"); // If the hash doesn't match (a new one is available), or there are none, then publish a new one. if (nmScraperFileManifestHash != StructScraperFileManifest.nFileManifestMapHash @@ -918,7 +941,7 @@ void Scraper(bool bSingleShot) nmScraperFileManifestHash = StructScraperFileManifest.nFileManifestMapHash; // End LOCK(cs_StructScraperFileManifest) - if (fDebug3) _log(logattribute::INFO, "ENDLOCK2", "cs_StructScraperFileManifest, CScraperManifest::cs_mapManifest"); + if (fDebug3) _log(logattribute::INFO, "ENDLOCK2", "manifest send block: cs_StructScraperFileManifest, CScraperManifest::cs_mapManifest"); } } @@ -957,9 +980,6 @@ void NeuralNetwork() if (!fScraperActive && pathDataDir.empty()) { pathDataDir = GetDataDir(); - // This is necessary to maintain compatibility with Windows. - pathDataDir.imbue(std::locale(std::locale(), new std::codecvt_utf8_utf16())); - pathScraper = pathDataDir / "Scraper"; // Initialize log singleton. Must be after the imbue. @@ -977,6 +997,9 @@ void NeuralNetwork() // We do NOT want to filter statistics with an out-of-date beacon list or project whitelist. while (OutOfSyncByAge()) { + // Set atomic out of sync flag to true. + fOutOfSyncByAge = true; + // Signal stats event to UI. uiInterface.NotifyScraperEvent(scrapereventtypes::OutOfSync, CT_NEW, {}); @@ -984,6 +1007,9 @@ void NeuralNetwork() MilliSleep(8000); } + // Set atomic out of sync flag to false. + fOutOfSyncByAge = false; + nSyncTime = GetAdjustedTime(); // ScraperHousekeeping items are only run in this thread if not handled by the Scraper() thread. @@ -1017,6 +1043,7 @@ void NeuralNetwork() } } +UniValue testnewsb(const UniValue& params, bool fHelp); bool ScraperHousekeeping() { @@ -1036,18 +1063,8 @@ bool ScraperHousekeeping() if (fDebug3 && !sSBCoreData.empty()) { - // Contract binary pack/unpack check... - _log(logattribute::INFO, "ScraperHousekeeping", "Checking compatibility with binary SB pack/unpack by packing then unpacking, then comparing to the original"); - - std::string sSBCoreData_out = UnpackBinarySuperblock(PackBinarySuperblock(sSBCoreData)); - - if (sSBCoreData == sSBCoreData_out) - _log(logattribute::INFO, "ScraperHousekeeping", "Generated contract passed binary pack/unpack"); - else - { - _log(logattribute::ERR, "ScraperHousekeeping", "Generated contract FAILED binary pack/unpack"); - _log(logattribute::INFO, "ScraperHousekeeping", "sSBCoreData_out = \n" + sSBCoreData_out); - } + UniValue dummy_params(UniValue::VARR); + testnewsb(dummy_params, false); } // Show this node's contract hash in the log. @@ -1107,7 +1124,7 @@ bool ScraperDirectoryAndConfigSanity() // Lock the manifest while it is being manipulated. { LOCK(cs_StructScraperFileManifest); - if (fDebug3) _log(logattribute::INFO, "LOCK", "cs_StructScraperFileManifest"); + if (fDebug3) _log(logattribute::INFO, "LOCK", "align directory with manifest file: cs_StructScraperFileManifest"); if (StructScraperFileManifest.mScraperFileManifest.empty()) { @@ -1136,6 +1153,9 @@ bool ScraperDirectoryAndConfigSanity() && fs::is_regular_file(dir)) { entry = StructScraperFileManifest.mScraperFileManifest.find(dir.path().filename().string()); + + if (fDebug10) _log(logattribute::INFO, "ScraperDirectoryAndConfigSanity", "Iterating through directory - checking file " + filename); + if (entry == StructScraperFileManifest.mScraperFileManifest.end()) { fs::remove(dir.path()); @@ -1143,23 +1163,31 @@ bool ScraperDirectoryAndConfigSanity() continue; } - if (entry->second.hash != GetFileHash(dir)) + // Only do the expensive hash checking on files that are included in published manifests. + if (!entry->second.excludefromcsmanifest) { - _log(logattribute::INFO, "ScraperDirectoryAndConfigSanity", "File failed hash check. Removing file."); - fs::remove(dir.path()); + if (entry->second.hash != GetFileHash(dir)) + { + _log(logattribute::INFO, "ScraperDirectoryAndConfigSanity", "File failed hash check. Removing file."); + fs::remove(dir.path()); + } } } } // Now iterate through the Manifest map and remove entries with no file, or entries and files older than - // SCRAPER_FILE_RETENTION_TIME, whether they are current or not, and remove non-current files regardless of time + // nRetentionTime, whether they are current or not, and remove non-current files regardless of time //if fScraperRetainNonCurrentFiles is false. for (entry = StructScraperFileManifest.mScraperFileManifest.begin(); entry != StructScraperFileManifest.mScraperFileManifest.end(); ) { ScraperFileManifestMap::iterator entry_copy = entry++; + int64_t nFileRetentionTime = fExplorer ? EXPLORER_EXTENDED_FILE_RETENTION_TIME : SCRAPER_FILE_RETENTION_TIME; + + if (fDebug10) _log(logattribute::INFO, "ScraperDirectoryAndConfigSanity", "Iterating through map - checking map entry " + entry_copy->first); + if (!fs::exists(pathScraper / entry_copy->first) - || ((GetAdjustedTime() - entry_copy->second.timestamp) > SCRAPER_FILE_RETENTION_TIME) + || ((GetAdjustedTime() - entry_copy->second.timestamp) > nFileRetentionTime) || (!SCRAPER_RETAIN_NONCURRENT_FILES && entry_copy->second.current == false)) { _log(logattribute::WARNING, "ScraperDirectoryAndConfigSanity", "Removing stale or orphan manifest entry: " + entry_copy->first); @@ -1168,11 +1196,11 @@ bool ScraperDirectoryAndConfigSanity() } // End LOCK(cs_StructScraperFileManifest) - if (fDebug3) _log(logattribute::INFO, "ENDLOCK", "cs_StructScraperFileManifest"); + if (fDebug3) _log(logattribute::INFO, "ENDLOCK", "align directory with manifest file: cs_StructScraperFileManifest"); } // If network policy is set to filter on whitelisted teams, then load team ID map from file. This will prevent the heavyweight - // team file downloads for projects whose team ID's have already been found and stored. + // team file downloads for projects whose team ID's have already been found and stored, unless explorer mode (fExplorer) is true. if (REQUIRE_TEAM_WHITELIST_MEMBERSHIP) { LOCK(cs_TeamIDMap); @@ -1251,109 +1279,274 @@ bool UserpassPopulated() + /********************** -* Project Team Files * +* Project Host Files * **********************/ -bool DownloadProjectTeamFiles(const NN::WhitelistSnapshot& projectWhitelist) +bool DownloadProjectHostFiles(const NN::WhitelistSnapshot& projectWhitelist) { - if (!projectWhitelist.Populated()) + // If fExplorer is false then skip processing. (This should not be called anyway, but return immediately just in case. + if (!fExplorer) + { + _log(logattribute::INFO, "DownloadProjectHostFiles", "Not in explorer mode. Skipping host file download and processing."); + return false; + } + + if (!projectWhitelist.Populated()) + { + _log(logattribute::CRITICAL, "DownloadProjectHostFiles", "Whitelist is not populated"); + + return false; + } + + _log(logattribute::INFO, "DownloadProjectHostFiles", "Whitelist is populated; Contains " + std::to_string(projectWhitelist.size()) + " projects"); + + if (!UserpassPopulated()) + { + _log(logattribute::CRITICAL, "DownloadProjectHostFiles", "Userpass is not populated"); + + return false; + } + + for (const auto& prjs : projectWhitelist) + { + _log(logattribute::INFO, "DownloadProjectHostFiles", "Downloading project host file for " + prjs.m_name); + + // Grab ETag of host file + Http http; + std::string sHostETag; + + bool buserpass = false; + std::string userpass; + + for (const auto& up : vuserpass) { - _log(logattribute::CRITICAL, "DownloadProjectTeamFiles", "Whitelist is not populated"); + if (up.first == prjs.m_name) + { + buserpass = true; - return false; + userpass = up.second; + + break; + } } - _log(logattribute::INFO, "DownloadProjectTeamFiles", "Whitelist is populated; Contains " + std::to_string(projectWhitelist.size()) + " projects"); + try + { + sHostETag = http.GetEtag(prjs.StatsUrl("host"), userpass); + } + catch (const std::runtime_error& e) + { + _log(logattribute::ERR, "DownloadProjectHostFiles", "Failed to pull host header file for " + prjs.m_name); + continue; + } - if (!UserpassPopulated()) + if (sHostETag.empty()) { - _log(logattribute::CRITICAL, "DownloadProjectTeamFiles", "Userpass is not populated"); + _log(logattribute::ERR, "DownloadProjectHostFiles", "ETag for project is empty" + prjs.m_name); - return false; + continue; } + else + _log(logattribute::INFO, "DownloadProjectHostFiles", "Successfully pulled host header file for " + prjs.m_name); - for (const auto& prjs : projectWhitelist) + if (buserpass) { - LOCK(cs_TeamIDMap); - if (fDebug3) _log(logattribute::INFO, "LOCK", "cs_TeamIDMap"); + authdata ad(lowercase(prjs.m_name)); - const auto iter = TeamIDMap.find(prjs.m_name); + ad.setoutputdata("host", prjs.m_name, sHostETag); - // If there is an entry in the TeamIDMap for the project, and in the submap (team name and team id) there - // are the correct number of team entries, then skip processing. - if (iter != TeamIDMap.end() && iter->second.size() == split(TEAM_WHITELIST, ",").size()) - { - _log(logattribute::INFO, "DownloadProjectTeamFiles", "Correct team whitelist entries already in the team ID map for " - + prjs.m_name + " project. Skipping team file download and processing."); - continue; - } + if (!ad.xport()) + _log(logattribute::CRITICAL, "DownloadProjectHostFiles", "Failed to export etag for " + prjs.m_name + " to authentication file"); + } + + std::string host_file_name; + fs::path host_file; + + // Use eTag versioning. + host_file_name = prjs.m_name + "-" + sHostETag + "-host.gz"; + host_file = pathScraper / host_file_name; + + // If the file with the same eTag already exists, don't download it again. + if (fs::exists(host_file)) + { + _log(logattribute::INFO, "DownloadProjectHostFiles", "Etag file for " + prjs.m_name + " already exists"); + continue; + } + + try + { + http.Download(prjs.StatsUrl("host"), host_file.string(), userpass); + } + catch(const std::runtime_error& e) + { + _log(logattribute::ERR, "DownloadProjectHostFiles", "Failed to download project host file for " + prjs.m_name); + continue; + } - _log(logattribute::INFO, "DownloadProjectTeamFiles", "Downloading project file for " + prjs.m_name); + // Save host xml files to file manifest map with exclude from CSManifest flag set to true. + AlignScraperFileManifestEntries(host_file, "host", prjs.m_name, true); + } - std::string team_file_name = prjs.m_name + "-team.gz"; + return true; +} - fs::path team_file = pathScraper / team_file_name.c_str(); - // Grab ETag of team file - Http http; - std::string sTeamETag; - bool buserpass = false; - std::string userpass; - for (const auto& up : vuserpass) - { - if (up.first == prjs.m_name) - { - buserpass = true; - userpass = up.second; +/********************** +* Project Team Files * +**********************/ - break; - } - } +bool DownloadProjectTeamFiles(const NN::WhitelistSnapshot& projectWhitelist) +{ + if (!projectWhitelist.Populated()) + { + _log(logattribute::CRITICAL, "DownloadProjectTeamFiles", "Whitelist is not populated"); - try - { - sTeamETag = http.GetEtag(prjs.StatsUrl("team"), userpass); - } - catch (const std::runtime_error& e) - { - _log(logattribute::ERR, "DownloadProjectTeamFiles", "Failed to pull team header file for " + prjs.m_name); - continue; - } + return false; + } - if (sTeamETag.empty()) - { - _log(logattribute::ERR, "DownloadProjectTeamFiles", "ETag for project is empty" + prjs.m_name); + _log(logattribute::INFO, "DownloadProjectTeamFiles", "Whitelist is populated; Contains " + std::to_string(projectWhitelist.size()) + " projects"); - continue; - } - else - _log(logattribute::INFO, "DownloadProjectTeamFiles", "Successfully pulled team header file for " + prjs.m_name); + if (!UserpassPopulated()) + { + _log(logattribute::CRITICAL, "DownloadProjectTeamFiles", "Userpass is not populated"); + + return false; + } + + for (const auto& prjs : projectWhitelist) + { + LOCK(cs_TeamIDMap); + if (fDebug3) _log(logattribute::INFO, "LOCK", "cs_TeamIDMap"); - if (buserpass) + const auto iter = TeamIDMap.find(prjs.m_name); + bool fProjTeamIDsMissing = false; + + if (iter == TeamIDMap.end() || iter->second.size() != split(TEAM_WHITELIST, "|").size()) fProjTeamIDsMissing = true; + + // If fExplorer is false, which means we do not need to retain team files, and there are no TeamID entries missing, + // then skip processing altogether. + if (!fExplorer && !fProjTeamIDsMissing) + { + _log(logattribute::INFO, "DownloadProjectTeamFiles", "Correct team whitelist entries already in the team ID map for " + + prjs.m_name + " project. Skipping team file download and processing."); + continue; + } + + _log(logattribute::INFO, "DownloadProjectTeamFiles", "Downloading project file for " + prjs.m_name); + + // Grab ETag of team file + Http http; + std::string sTeamETag; + + bool buserpass = false; + std::string userpass; + + for (const auto& up : vuserpass) + { + if (up.first == prjs.m_name) { - authdata ad(lowercase(prjs.m_name)); + buserpass = true; - ad.setoutputdata("team", prjs.m_name, sTeamETag); + userpass = up.second; - if (!ad.xport()) - _log(logattribute::CRITICAL, "DownloadProjectTeamFiles", "Failed to export etag for " + prjs.m_name + " to authentication file"); + break; } + } + + try + { + sTeamETag = http.GetEtag(prjs.StatsUrl("team"), userpass); + } + catch (const std::runtime_error& e) + { + _log(logattribute::ERR, "DownloadProjectTeamFiles", "Failed to pull team header file for " + prjs.m_name); + continue; + } + + if (sTeamETag.empty()) + { + _log(logattribute::ERR, "DownloadProjectTeamFiles", "ETag for project is empty" + prjs.m_name); + + continue; + } + else + _log(logattribute::INFO, "DownloadProjectTeamFiles", "Successfully pulled team header file for " + prjs.m_name); + + if (buserpass) + { + authdata ad(lowercase(prjs.m_name)); + + ad.setoutputdata("team", prjs.m_name, sTeamETag); + + if (!ad.xport()) + _log(logattribute::CRITICAL, "DownloadProjectTeamFiles", "Failed to export etag for " + prjs.m_name + " to authentication file"); + } + + std::string team_file_name; + fs::path team_file; + bool bDownloadFlag = false; + bool bETagChanged = false; - std::string chketagfile = prjs.m_name + "-" + sTeamETag + ".csv" + ".gz"; - fs::path chkfile = pathScraper / chketagfile.c_str(); + // Detect change in ETag from in memory versioning. + // ProjTeamETags is not persisted to disk. There would be little to be gained by doing so. The scrapers are restarted very + // rarely, and on restart, this would only save downloading team files for those projects that have one or TeamIDs missing AND + // an ETag had NOT changed since the last pull. Not worth the complexity. + auto const& iPrevETag = ProjTeamETags.find(prjs.m_name); - if (fs::exists(chkfile)) + if (iPrevETag == ProjTeamETags.end() || iPrevETag->second != sTeamETag) + { + bETagChanged = true; + + _log(logattribute::INFO, "DownloadProjectTeamFiles", "Team header file ETag has changed for " + prjs.m_name); + } + + + if (fExplorer) + { + // Use eTag versioning ON THE DISK with eTag versioned team files per project. + team_file_name = prjs.m_name + "-" + sTeamETag + "-team.gz"; + team_file = pathScraper / team_file_name; + + // If the file with the same eTag already exists, don't download it again. Leave bDownloadFlag false. + if (fs::exists(team_file)) { _log(logattribute::INFO, "DownloadProjectTeamFiles", "Etag file for " + prjs.m_name + " already exists"); - continue; + // continue; } else - fs::remove(team_file); + { + bDownloadFlag = true; + } + } + else + { + // Not in explorer mode... + // No versioning ON THE DISK for the individual team files for a given project. However, if the eTag pulled from the header + // does not match the entry in ProjTeamETags, then download the file and process. Note that this combined with the size check + // above means that the size of the inner map for the mTeamIDs for this project already doesn't match, which means either there + // were teams that cannot be associated (-1 entries in the file), or there was an addition to or deletion from the team + // whitelist. Either way if the ETag has changed under this condition, the -1 entries may be subject to change so the team file + // must be downloaded and processed to see if it has and update. If the ETag matches what was in the map, then the state + // has not changed since the team file was last processed, and no need to download and process again. + team_file_name = prjs.m_name + "-team.gz"; + team_file = pathScraper / team_file_name; + + if (bETagChanged) + { + if (fs::exists(team_file)) fs::remove(team_file); + bDownloadFlag = true; + } + } + + // If a new team file at the project site is detected, then download new file. (I.e. bDownload flag is true). + if (bDownloadFlag) + { try { http.Download(prjs.StatsUrl("team"), team_file.string(), userpass); @@ -1363,56 +1556,53 @@ bool DownloadProjectTeamFiles(const NN::WhitelistSnapshot& projectWhitelist) _log(logattribute::ERR, "DownloadProjectTeamFiles", "Failed to download project team file for " + prjs.m_name); continue; } + } + // If in explorer mode and new file downloaded, save team xml files to file manifest map with exclude from CSManifest flag set to true. + // If not in explorer mode, this is not necessary, because the team xml file is just temporary and can be discarded after + // processing. + if (fExplorer && bDownloadFlag) AlignScraperFileManifestEntries(team_file, "team", prjs.m_name, true); - std::map mTeamIDsForProject = {}; + // If require team whitelist is set and bETagChanged is true, then process the file. This also populates/updated the team whitelist TeamIDs + // in the TeamIDMap and the ETag entries in the ProjTeamETags map. + if (REQUIRE_TEAM_WHITELIST_MEMBERSHIP && bETagChanged) ProcessProjectTeamFile(prjs.m_name, team_file, sTeamETag); - if (ProcessProjectTeamFile(team_file.string(), sTeamETag, mTeamIDsForProject)) - { - // Insert or update team IDs for the project into the team ID map. - TeamIDMap[prjs.m_name] = mTeamIDsForProject; - } - - if (fDebug3) _log(logattribute::INFO, "ENDLOCK", "cs_TeamIDMap"); - } + if (fDebug3) _log(logattribute::INFO, "ENDLOCK", "cs_TeamIDMap"); + } return true; } - -bool ProcessProjectTeamFile(const fs::path& file, const std::string& etag, std::map& mTeamIdsForProject_out) +// Note this should be called with a lock held on cs_TeamIDMap, which is intended to protect both +// TeamIDMap and ProjTeamETags. +bool ProcessProjectTeamFile(const std::string& project, const fs::path& file, const std::string& etag) { + std::map mTeamIdsForProject; + // If passed an empty file, immediately return false. if (file.string().empty()) return false; - std::ifstream ingzfile(file.string().c_str(), std::ios_base::in | std::ios_base::binary); + std::ifstream ingzfile(file.string(), std::ios_base::in | std::ios_base::binary); if (!ingzfile) { - _log(logattribute::ERR, "ProcessProjectTeamFile", "Failed to open team gzip file (" + file.string() + ")"); + _log(logattribute::ERR, "ProcessProjectTeamFile", "Failed to open team gzip file (" + file.filename().string() + ")"); - return 0; + return false; } - _log(logattribute::INFO, "ProcessProjectTeamFile", "Opening team file (" + file.string() + ")"); + _log(logattribute::INFO, "ProcessProjectTeamFile", "Opening team file (" + file.filename().string() + ")"); boostio::filtering_istream in; in.push(boostio::gzip_decompressor()); in.push(ingzfile); - std::string gzetagfile = ""; - - gzetagfile = etag + ".csv" + ".gz"; - - // Put path in. - gzetagfile = ((fs::path)(pathScraper / gzetagfile)).string(); + _log(logattribute::INFO, "ProcessProjectTeamFile", "Started processing " + file.filename().string()); - _log(logattribute::INFO, "ProcessProjectTeamFile", "Started processing " + file.string()); - - std::vector vTeamWhiteList = split(TEAM_WHITELIST, ","); + std::vector vTeamWhiteList = split(TEAM_WHITELIST, "|"); std::string line; stringbuilder builder; @@ -1447,41 +1637,33 @@ bool ProcessProjectTeamFile(const fs::path& file, const std::string& etag, std:: continue; } - mTeamIdsForProject_out[sTeamName] = nTeamID; + mTeamIdsForProject[sTeamName] = nTeamID; } else builder.append(line); } - if (mTeamIdsForProject_out.empty()) + if (mTeamIdsForProject.empty()) { _log(logattribute::CRITICAL, "ProcessProjectTeamFile", "Error in data processing of " + file.string()); - std::string efile = etag + ".gz"; - fs::path fsepfile = pathScraper/ efile; ingzfile.close(); - if (fs::exists(fsepfile)) - fs::remove(fsepfile); - - if (fs::exists(file)) - fs::remove(file); + if (fs::exists(file)) fs::remove(file); return false; } - std::string efile = etag + ".gz"; - fs::path fsepfile = pathScraper/ efile; ingzfile.close(); - if (fs::exists(fsepfile)) - fs::remove(fsepfile); + // Insert or update team IDs for the project into the team ID map. This must be done before the StoreTeamIDList. + TeamIDMap[project] = mTeamIdsForProject; - if (fs::exists(file)) - fs::remove(file); + // Populate/update ProjTeamETags with the eTag to provide in memory versioning. + ProjTeamETags[project] = etag; - if (mTeamIdsForProject_out.size() < vTeamWhiteList.size()) - _log(logattribute::ERR, "ProcessProjectTeamFile", "Unable to determine team IDs for one or more whitelisted teams."); + if (mTeamIdsForProject.size() < vTeamWhiteList.size()) + _log(logattribute::WARNING, "ProcessProjectTeamFile", "Unable to determine team IDs for one or more whitelisted teams. This is not necessarily an error."); // The below is not an ideal implementation, because the entire map is going to be written out to disk each time. // The TeamIDs file is actually very small though, and this primitive implementation will suffice. @@ -1491,7 +1673,10 @@ bool ProcessProjectTeamFile(const fs::path& file, const std::string& etag, std:: else _log(logattribute::INFO, "ProcessProjectTeamFile", "Stored Team ID entries."); - _log(logattribute::INFO, "ProcessProjectTeamFile", "Finished processing " + file.string()); + // If not explorer mode, delete input file after processing. + if (!fExplorer && fs::exists(file)) fs::remove(file); + + _log(logattribute::INFO, "ProcessProjectTeamFile", "Finished processing " + file.filename().string()); return true; } @@ -1527,10 +1712,6 @@ bool DownloadProjectRacFilesByCPID(const NN::WhitelistSnapshot& projectWhitelist { _log(logattribute::INFO, "DownloadProjectRacFiles", "Downloading project file for " + prjs.m_name); - std::string rac_file_name = prjs.m_name + +"-user.gz"; - - fs::path rac_file = pathScraper / rac_file_name.c_str(); - // Grab ETag of rac file Http http; std::string sRacETag; @@ -1579,17 +1760,43 @@ bool DownloadProjectRacFilesByCPID(const NN::WhitelistSnapshot& projectWhitelist _log(logattribute::CRITICAL, "DownloadProjectRacFiles", "Failed to export etag for " + prjs.m_name + " to authentication file"); } - std::string chketagfile = prjs.m_name + "-" + sRacETag + ".csv" + ".gz"; - fs::path chkfile = pathScraper / chketagfile.c_str(); + std::string rac_file_name; + fs::path rac_file; + + std::string processed_rac_file_name; + fs::path processed_rac_file; + + processed_rac_file_name = prjs.m_name + "-" + sRacETag + ".csv" + ".gz"; + processed_rac_file = pathScraper / processed_rac_file_name; - if (fs::exists(chkfile)) + if (fExplorer) { - _log(logattribute::INFO, "DownloadProjectRacFiles", "Etag file for " + prjs.m_name + " already exists"); - //_log(logattribute::INFO, "DownloadProjectRacFiles", "Etag file size " + std::to_string(fs::file_size(chkfile))); - continue; + // Use eTag versioning for source file. + rac_file_name = prjs.m_name + "-" + sRacETag + "-user.gz"; + rac_file = pathScraper / rac_file_name; + + // If the file was already processed, both should be here. If both here, skip processing. + if (fs::exists(rac_file) && fs::exists(processed_rac_file)) + { + _log(logattribute::INFO, "DownloadProjectRacFiles", "Etag file for " + prjs.m_name + " already exists"); + continue; + } } else - fs::remove(chkfile); + { + // No versioning for source file. If file exists delete it and download anew, unless processed file already present. + rac_file_name = prjs.m_name + "-user.gz"; + rac_file = pathScraper / rac_file_name; + + if (fs::exists(rac_file)) fs::remove(rac_file); + + // If the file was already processed, skip processing. + if (fs::exists(processed_rac_file)) + { + _log(logattribute::INFO, "DownloadProjectRacFiles", "Etag file for " + prjs.m_name + " already exists"); + continue; + } + } try { @@ -1601,24 +1808,29 @@ bool DownloadProjectRacFilesByCPID(const NN::WhitelistSnapshot& projectWhitelist continue; } + // If in explorer mode, save user (rac) source xml files to file manifest map with exclude from CSManifest flag set to true. + if (fExplorer) AlignScraperFileManifestEntries(rac_file, "user_source", prjs.m_name, true); + + // Now that the source file is handled, process the file. ProcessProjectRacFileByCPID(prjs.m_name, rac_file.string(), sRacETag, Consensus); } // After processing, update global structure with the timestamp of the latest file in the manifest. { LOCK(cs_StructScraperFileManifest); - if (fDebug3) _log(logattribute::INFO, "LOCK", "cs_StructScraperFileManifest"); + if (fDebug3) _log(logattribute::INFO, "LOCK", "user (rac) files struct update post process: cs_StructScraperFileManifest"); int64_t nMaxTime = 0; for (const auto& entry : StructScraperFileManifest.mScraperFileManifest) { - nMaxTime = std::max(nMaxTime, entry.second.timestamp); + // Only consider processed (user) files + if (entry.second.filetype == "user") nMaxTime = std::max(nMaxTime, entry.second.timestamp); } StructScraperFileManifest.timestamp = nMaxTime; // End LOCK(cs_StructScraperFileManifest) - if (fDebug3) _log(logattribute::INFO, "ENDLOCK", "cs_StructScraperFileManifest"); + if (fDebug3) _log(logattribute::INFO, "ENDLOCK", "user (rac) files struct update post process: cs_StructScraperFileManifest"); } return true; } @@ -1636,7 +1848,7 @@ bool ProcessProjectRacFileByCPID(const std::string& project, const fs::path& fil if (file.string().empty()) return false; - std::ifstream ingzfile(file.string().c_str(), std::ios_base::in | std::ios_base::binary); + std::ifstream ingzfile(file.string(), std::ios_base::in | std::ios_base::binary); if (!ingzfile) { @@ -1744,18 +1956,15 @@ bool ProcessProjectRacFileByCPID(const std::string& project, const fs::path& fil { _log(logattribute::CRITICAL, "ProcessProjectRacFileByCPID", "Error in data processing of " + file.string() + "; Aborted processing"); - std::string efile = etag + ".gz"; - fs::path fsepfile = pathScraper/ efile; ingzfile.close(); outgzfile.flush(); outgzfile.close(); - if (fs::exists(fsepfile)) - fs::remove(fsepfile); - + // Remove the source file because it was bad. (Probable incomplete download.) if (fs::exists(file)) fs::remove(file); + // Remove the errored out processed file. if (fs::exists(gzetagfile)) fs::remove(gzetagfile); @@ -1778,10 +1987,10 @@ bool ProcessProjectRacFileByCPID(const std::string& project, const fs::path& fil try { size_t filea = fs::file_size(file); - fs::path temp = gzetagfile.c_str(); + fs::path temp = gzetagfile; size_t fileb = fs::file_size(temp); - _log(logattribute::INFO, "ProcessProjectRacFileByCPID", "Processing new rac file " + file.string() + "(" + std::to_string(filea) + " -> " + std::to_string(fileb) + ")"); + _log(logattribute::INFO, "ProcessProjectRacFileByCPID", "Processed new rac file " + file.string() + "(" + std::to_string(filea) + " -> " + std::to_string(fileb) + ")"); ndownloadsize += (int64_t)filea; nuploadsize += (int64_t)fileb; @@ -1791,66 +2000,11 @@ bool ProcessProjectRacFileByCPID(const std::string& project, const fs::path& fil _log(logattribute::INFO, "ProcessProjectRacFileByCPID", "FS Error -> " + std::string(e.what())); } - fs::remove(file); - - ScraperFileManifestEntry NewRecord; - - // Don't include path in Manifest, because this is local node dependent. - NewRecord.filename = gzetagfile_no_path; - NewRecord.project = project; - NewRecord.hash = nFileHash; - NewRecord.timestamp = GetAdjustedTime(); - // By definition the record we are about to insert is current. If a new file is downloaded for - // a given project, it has to be more up to date than any others. - NewRecord.current = true; - - // Code block to lock StructScraperFileManifest during record insertion and delete because we want this atomic. - { - LOCK(cs_StructScraperFileManifest); - if (fDebug3) _log(logattribute::INFO, "LOCK", "cs_StructScraperFileManifest"); - - // Iterate mScraperFileManifest to find any prior records for the same project and change current flag to false, - // or delete if older than SCRAPER_FILE_RETENTION_TIME or non-current and fScraperRetainNonCurrentFiles - // is false. - - ScraperFileManifestMap::iterator entry; - for (entry = StructScraperFileManifest.mScraperFileManifest.begin(); entry != StructScraperFileManifest.mScraperFileManifest.end(); ) - { - ScraperFileManifestMap::iterator entry_copy = entry++; - - if (entry_copy->second.project == project && entry_copy->second.current == true) - { - _log(logattribute::INFO, "ProcessProjectRacFileByCPID", "Marking old project manifest entry as current = false."); - MarkScraperFileManifestEntryNonCurrent(entry_copy->second); - } - - // If records are older than SCRAPER_FILE_RETENTION_TIME delete record, or if fScraperRetainNonCurrentFiles is false, - // delete all non-current records, including the one just marked non-current. - if (((GetAdjustedTime() - entry_copy->second.timestamp) > SCRAPER_FILE_RETENTION_TIME) - || (entry_copy->second.project == project && entry_copy->second.current == false && !SCRAPER_RETAIN_NONCURRENT_FILES)) - { - DeleteScraperFileManifestEntry(entry_copy->second); - } - } + // If not in explorer mode, no need to retain source file. + if (!fExplorer) fs::remove(file); - if (!InsertScraperFileManifestEntry(NewRecord)) - _log(logattribute::WARNING, "ProcessProjectRacFileByCPID", "Manifest entry already exists for " + nFileHash.ToString() + " " + gzetagfile); - else - _log(logattribute::INFO, "ProcessProjectRacFileByCPID", "Created manifest entry for " + nFileHash.ToString() + " " + gzetagfile); - - // The below is not an ideal implementation, because the entire map is going to be written out to disk each time. - // The manifest file is actually very small though, and this primitive implementation will suffice. I could - // put it up in the while loop above, but then there is a much higher risk that the manifest file could be out of - // sync if the wallet is ended during the middle of pulling the files. - _log(logattribute::INFO, "ProcessProjectRacFileByCPID", "Persisting manifest entry to disk."); - if (!StoreScraperFileManifest(pathScraper / "Manifest.csv.gz")) - _log(logattribute::ERR, "ProcessProjectRacFileByCPID", "StoreScraperFileManifest error occurred"); - else - _log(logattribute::INFO, "ProcessProjectRacFileByCPID", "Stored Manifest"); - - // End LOCK(cs_StructScraperFileManifest) - if (fDebug3) _log(logattribute::INFO, "ENDLOCK", "cs_StructScraperFileManifest"); - } + // Here, regardless of explorer mode, save processed rac files to file manifest map with exclude from CSManifest flag set to false. + AlignScraperFileManifestEntries(gzetagfile, "user", project, false); _log(logattribute::INFO, "ProcessProjectRacFileByCPID", "Complete Process"); @@ -1858,8 +2012,6 @@ bool ProcessProjectRacFileByCPID(const std::string& project, const fs::path& fil } - - uint256 GetFileHash(const fs::path& inputfile) { // open input file, and associate with CAutoFile @@ -1933,7 +2085,7 @@ uint256 GetmScraperFileManifestHash() bool LoadBeaconList(const fs::path& file, BeaconMap& mBeaconMap) { - std::ifstream ingzfile(file.string().c_str(), std::ios_base::in | std::ios_base::binary); + std::ifstream ingzfile(file.string(), std::ios_base::in | std::ios_base::binary); if (!ingzfile) { @@ -1978,7 +2130,7 @@ bool LoadBeaconList(const fs::path& file, BeaconMap& mBeaconMap) bool LoadTeamIDList(const fs::path& file) { - std::ifstream ingzfile(file.string().c_str(), std::ios_base::in | std::ios_base::binary); + std::ifstream ingzfile(file.string(), std::ios_base::in | std::ios_base::binary); if (!ingzfile) { @@ -1992,12 +2144,26 @@ bool LoadTeamIDList(const fs::path& file) in.push(ingzfile); std::string line; + std::string separator; // Header. This is used to construct the team names vector, since the team IDs were stored in the same order. std::getline(in, line); + // This is to detect and handle the loading of a legacy existing TeamID.csv.gz file that contains commas rather than pipes. + // The file will be rewritten with pipe separators when the team files are processed. + if (line.find("|") != std::string::npos) + { + separator = "|"; + } + else + { + _log(logattribute::INFO, "LoadTeamIDList", "Loading from legacy TeamID.csv.gz file with comma separator. This will be converted to pipe separator."); + + separator = ","; + } + // This is in the form Project, Gridcoin, ...." - std::vector vTeamNames = split(line, ","); + std::vector vTeamNames = split(line, separator); if (fDebug3) _log(logattribute::INFO, "LoadTeamIDList", "Size of vTeamNames = " + std::to_string(vTeamNames.size())); while (std::getline(in, line)) @@ -2005,7 +2171,7 @@ bool LoadTeamIDList(const fs::path& file) std::string sProject = {}; std::map mTeamIDsForProject = {}; - std::vector vline = split(line, ","); + std::vector vline = split(line, separator); unsigned int iTeamName = 0; // Populate team IDs into map. @@ -2032,9 +2198,13 @@ bool LoadTeamIDList(const fs::path& file) continue; } - std::string sTeamName = vTeamNames.at(iTeamName); + // Don't populate a map entry for a TeamID of -1, because that indicates the association does not exist. + if (nTeamID != -1) + { + std::string sTeamName = vTeamNames.at(iTeamName); - mTeamIDsForProject[sTeamName] = nTeamID; + mTeamIDsForProject[sTeamName] = nTeamID; + } } iTeamName++; @@ -2066,18 +2236,18 @@ bool StoreBeaconList(const fs::path& file) // Requires a lock. { LOCK(cs_StructScraperFileManifest); - if (fDebug3) _log(logattribute::INFO, "LOCK", "cs_StructScraperFileManifest"); + if (fDebug3) _log(logattribute::INFO, "LOCK", "store beacon list - update consensus block hash: cs_StructScraperFileManifest"); StructScraperFileManifest.nConsensusBlockHash = Consensus.nBlockHash; // End LOCK(cs_StructScraperFileManifest) - if (fDebug3) _log(logattribute::INFO, "ENDLOCK", "cs_StructScraperFileManifest"); + if (fDebug3) _log(logattribute::INFO, "ENDLOCK", "store beacon list - update consensus block hash: cs_StructScraperFileManifest"); } if (fs::exists(file)) fs::remove(file); - std::ofstream outgzfile(file.string().c_str(), std::ios_base::out | std::ios_base::binary); + std::ofstream outgzfile(file.string(), std::ios_base::out | std::ios_base::binary); if (!outgzfile) { @@ -2122,7 +2292,7 @@ bool StoreTeamIDList(const fs::path& file) if (fs::exists(file)) fs::remove(file); - std::ofstream outgzfile(file.string().c_str(), std::ios_base::out | std::ios_base::binary); + std::ofstream outgzfile(file.string(), std::ios_base::out | std::ios_base::binary); if (!outgzfile) { @@ -2140,7 +2310,7 @@ bool StoreTeamIDList(const fs::path& file) // Header stream << "Project"; - std::vector vTeamWhiteList = split(TEAM_WHITELIST, ","); + std::vector vTeamWhiteList = split(TEAM_WHITELIST, "|"); std::set setTeamWhiteList; // Ensure that the team names are in the correct order. @@ -2148,10 +2318,12 @@ bool StoreTeamIDList(const fs::path& file) setTeamWhiteList.insert(iTeam); for (auto const& iTeam: setTeamWhiteList) - stream << "," << iTeam; + stream << "|" << iTeam; stream << std::endl; + if (fDebug3) _log(logattribute::INFO, "StoreTeamIDList", "TeamIDMap size = " + std::to_string(TeamIDMap.size())); + // Data for (auto const& iProject : TeamIDMap) { @@ -2159,8 +2331,26 @@ bool StoreTeamIDList(const fs::path& file) stream << iProject.first; + for (auto const& iTeam: setTeamWhiteList) + { + // iter will point to the key in the inner map for that team. The second value of the iter will then be + // the TeamID. If it doesn't exist, store a -1 as a "NA" placeholder. + auto const& iter = iProject.second.find(iTeam); + + if (iter != iProject.second.end()) + { + sProjectEntry += "|" + std::to_string(iter->second); + } + else + { + sProjectEntry += "|-1"; + } + } + + /* for (auto const& iTeam : iProject.second) - sProjectEntry += "," + std::to_string(iTeam.second); + sProjectEntry += "|" + std::to_string(iTeam.second); + */ stream << sProjectEntry << std::endl; } @@ -2192,7 +2382,7 @@ bool InsertScraperFileManifestEntry(ScraperFileManifestEntry& entry) { StructScraperFileManifest.nFileManifestMapHash = GetmScraperFileManifestHash(); - if (fDebug) _log(logattribute::INFO, "InsertScraperFileManifestEntry", "Inserted File Manifest Entry and stored modifed nFileManifestMapHash."); + if (fDebug) _log(logattribute::INFO, "InsertScraperFileManifestEntry", "Inserted File Manifest Entry and stored modified nFileManifestMapHash."); } } @@ -2207,7 +2397,7 @@ unsigned int DeleteScraperFileManifestEntry(ScraperFileManifestEntry& entry) // Delete corresponding file if it exists. if (fs::exists(pathScraper / entry.filename)) - fs::remove(pathScraper /entry.filename); + fs::remove(pathScraper / entry.filename); ret = StructScraperFileManifest.mScraperFileManifest.erase(entry.filename); @@ -2216,7 +2406,7 @@ unsigned int DeleteScraperFileManifestEntry(ScraperFileManifestEntry& entry) { StructScraperFileManifest.nFileManifestMapHash = GetmScraperFileManifestHash(); - if (fDebug) _log(logattribute::INFO, "DeleteScraperFileManifestEntry", "Deleted File Manifest Entry and stored modifed nFileManifestMapHash."); + if (fDebug) _log(logattribute::INFO, "DeleteScraperFileManifestEntry", "Deleted File Manifest Entry and stored modified nFileManifestMapHash."); } // Returns number of elements erased, either 0 or 1. @@ -2234,15 +2424,98 @@ bool MarkScraperFileManifestEntryNonCurrent(ScraperFileManifestEntry& entry) StructScraperFileManifest.nFileManifestMapHash = GetmScraperFileManifestHash(); - if (fDebug) _log(logattribute::INFO, "DeleteScraperFileManifestEntry", "Marked File Manifest Entry non-current and stored modifed nFileManifestMapHash."); + if (fDebug) _log(logattribute::INFO, "DeleteScraperFileManifestEntry", "Marked File Manifest Entry non-current and stored modified nFileManifestMapHash."); return true; } +void AlignScraperFileManifestEntries(const fs::path& file, const std::string& filetype, const std::string& sProject, const bool& excludefromcsmanifest) +{ + ScraperFileManifestEntry NewRecord; + + std::string file_name = file.filename().string(); + + NewRecord.filename = file_name; + NewRecord.project = sProject; + NewRecord.hash = GetFileHash(file); + NewRecord.timestamp = GetAdjustedTime(); + NewRecord.current = true; + NewRecord.excludefromcsmanifest = excludefromcsmanifest; + NewRecord.filetype = filetype; + + // Code block to lock StructScraperFileManifest during record insertion and delete because we want this atomic. + { + LOCK(cs_StructScraperFileManifest); + if (fDebug3) + { + if (excludefromcsmanifest) + { + _log(logattribute::INFO, "LOCK", "saved manifest for downloaded "+ filetype + " files: AlignScraperFileManifestEntries: cs_StructScraperFileManifest"); + } + else + { + _log(logattribute::INFO, "LOCK", "saved manifest for processed "+ filetype + " files: AlignScraperFileManifestEntries: cs_StructScraperFileManifest"); + } + } + + // Iterate mScraperFileManifest to find any prior filetype records for the same project and change current flag to false, + // or delete if older than SCRAPER_FILE_RETENTION_TIME or non-current and fScraperRetainNonCurrentFiles + // is false. + + ScraperFileManifestMap::iterator entry; + for (entry = StructScraperFileManifest.mScraperFileManifest.begin(); entry != StructScraperFileManifest.mScraperFileManifest.end(); ) + { + ScraperFileManifestMap::iterator entry_copy = entry++; + + if (entry_copy->second.project == sProject && entry_copy->second.current == true && entry_copy->second.filetype == filetype) + { + _log(logattribute::INFO, "AlignScraperFileManifestEntries", "Marking old project manifest "+ filetype + " entry as current = false."); + MarkScraperFileManifestEntryNonCurrent(entry_copy->second); + } + + // If filetype records are older than EXPLORER_EXTENDED_FILE_RETENTION_TIME delete record, or if fScraperRetainNonCurrentFiles is false, + // delete all non-current records, including the one just marked non-current. (EXPLORER_EXTENDED_FILE_RETENTION_TIME rather + // then SCRAPER_FILE_RETENTION_TIME is used, because this section is only active if fExplorer is true.) + if (entry_copy->second.filetype == filetype && (((GetAdjustedTime() - entry_copy->second.timestamp) > EXPLORER_EXTENDED_FILE_RETENTION_TIME) + || (entry_copy->second.project == sProject && entry_copy->second.current == false && !SCRAPER_RETAIN_NONCURRENT_FILES))) + { + DeleteScraperFileManifestEntry(entry_copy->second); + } + } + + if (!InsertScraperFileManifestEntry(NewRecord)) + _log(logattribute::WARNING, "AlignScraperFileManifestEntries", "Manifest entry already exists for " + NewRecord.hash.ToString() + " " + file_name); + else + _log(logattribute::INFO, "AlignScraperFileManifestEntries", "Created manifest entry for " + NewRecord.hash.ToString() + " " + file_name); + + // The below is not an ideal implementation, because the entire map is going to be written out to disk each time. + // The manifest file is actually very small though, and this primitive implementation will suffice. + _log(logattribute::INFO, "AlignScraperFileManifestEntries", "Persisting manifest entry to disk."); + if (!StoreScraperFileManifest(pathScraper / "Manifest.csv.gz")) + _log(logattribute::ERR, "AlignScraperFileManifestEntries", "StoreScraperFileManifest error occurred"); + else + _log(logattribute::INFO, "AlignScraperFileManifestEntries", "Stored Manifest"); + + // End LOCK(cs_StructScraperFileManifest) + if (fDebug3) + { + if (excludefromcsmanifest) + { + _log(logattribute::INFO, "ENDLOCK", "saved manifest for downloaded "+ filetype + " files: AlignScraperFileManifestEntries: cs_StructScraperFileManifest"); + } + else + { + _log(logattribute::INFO, "ENDLOCK", "saved manifest for processed "+ filetype + " files: AlignScraperFileManifestEntries: cs_StructScraperFileManifest"); + } + } + } +} + + bool LoadScraperFileManifest(const fs::path& file) { - std::ifstream ingzfile(file.string().c_str(), std::ios_base::in | std::ios_base::binary); + std::ifstream ingzfile(file.string(), std::ios_base::in | std::ios_base::binary); if (!ingzfile) { @@ -2283,16 +2556,44 @@ bool LoadScraperFileManifest(const fs::path& file) LoadEntry.filename = vline[4]; + // This handles startup with legacy manifest file without excludefromcsmanifest column. + if (vline.size() >= 6) + { + // Intended for explorer mode, where files not to be included in CScraperManifest + // are to be maintained, such as team and host files. + LoadEntry.excludefromcsmanifest = std::stoi(vline[5]); + } + else + { + // The default if the field is not there is false. (Because scraper ver 1 all files are to be + // included.) + LoadEntry.excludefromcsmanifest = false; + } + + // This handles startup with legacy manifest file without filetype column. + if (vline.size() >= 7) + { + // In scraper ver 2, we have to support explorer mode, which includes retention of other files besides + // user statistics. + LoadEntry.filetype = vline[6]; + } + else + { + // The default if the field is not there is user. (Because scraper ver 1 all files in the manifest are + // user.) + LoadEntry.filetype = "user"; + } + // Lock cs_StructScraperFileManifest before updating // global structure. { LOCK(cs_StructScraperFileManifest); - if (fDebug3) _log(logattribute::INFO, "LOCK", "cs_StructScraperFileManifest"); + if (fDebug3) _log(logattribute::INFO, "LOCK", "load scraper file manifest - update entry: cs_StructScraperFileManifest"); InsertScraperFileManifestEntry(LoadEntry); // End LOCK(cs_StructScraperFileManifest - if (fDebug3) _log(logattribute::INFO, "ENDLOCK", "cs_StructScraperFileManifest"); + if (fDebug3) _log(logattribute::INFO, "ENDLOCK", "load scraper file manifest - update entry: cs_StructScraperFileManifest"); } } @@ -2305,7 +2606,7 @@ bool StoreScraperFileManifest(const fs::path& file) if (fs::exists(file)) fs::remove(file); - std::ofstream outgzfile(file.string().c_str(), std::ios_base::out | std::ios_base::binary); + std::ofstream outgzfile(file.string(), std::ios_base::out | std::ios_base::binary); if (!outgzfile) { @@ -2323,10 +2624,10 @@ bool StoreScraperFileManifest(const fs::path& file) //Lock StructScraperFileManifest during serialize to string. { LOCK(cs_StructScraperFileManifest); - if (fDebug3) _log(logattribute::INFO, "LOCK", "cs_StructScraperFileManifest"); + if (fDebug3) _log(logattribute::INFO, "LOCK", "store scraper file manifest to file: cs_StructScraperFileManifest"); // Header. - stream << "Hash," << "Current," << "Time," << "Project," << "Filename\n"; + stream << "Hash," << "Current," << "Time," << "Project," << "Filename," << "ExcludeFromCSManifest," << "Filetype" << "\n"; for (auto const& entry : StructScraperFileManifest.mScraperFileManifest) { @@ -2336,12 +2637,14 @@ bool StoreScraperFileManifest(const fs::path& file) + std::to_string(entry.second.current) + "," + std::to_string(entry.second.timestamp) + "," + entry.second.project + "," - + entry.first + "\n"; + + entry.first + "," + + std::to_string(entry.second.excludefromcsmanifest) + "," + + entry.second.filetype + "\n"; stream << sScraperFileManifestEntry; } // end LOCK(cs_StructScraperFileManifest) - if (fDebug3) _log(logattribute::INFO, "ENDLOCK", "cs_StructScraperFileManifest"); + if (fDebug3) _log(logattribute::INFO, "ENDLOCK", "store scraper file manifest to file: cs_StructScraperFileManifest"); } _log(logattribute::INFO, "StoreScraperFileManifest", "Finished processing manifest from map."); @@ -2363,7 +2666,7 @@ bool StoreStats(const fs::path& file, const ScraperStats& mScraperStats) if (fs::exists(file)) fs::remove(file); - std::ofstream outgzfile(file.string().c_str(), std::ios_base::out | std::ios_base::binary); + std::ofstream outgzfile(file.string(), std::ios_base::out | std::ios_base::binary); if (!outgzfile) { @@ -2441,7 +2744,7 @@ bool StoreStats(const fs::path& file, const ScraperStats& mScraperStats) bool LoadProjectFileToStatsByCPID(const std::string& project, const fs::path& file, const double& projectmag, const BeaconMap& mBeaconMap, ScraperStats& mScraperStats) { - std::ifstream ingzfile(file.string().c_str(), std::ios_base::in | std::ios_base::binary); + std::ifstream ingzfile(file.string(), std::ios_base::in | std::ios_base::binary); if (!ingzfile) { @@ -2651,16 +2954,16 @@ ScraperStats GetScraperStatsByConsensusBeaconList() unsigned int nActiveProjects = 0; { LOCK(cs_StructScraperFileManifest); - if (fDebug3) _log(logattribute::INFO, "LOCK", "cs_StructScraperFileManifest"); + if (fDebug3) _log(logattribute::INFO, "LOCK", "get scraper stats by consensus beacon list - count active projects: cs_StructScraperFileManifest"); for (auto const& entry : StructScraperFileManifest.mScraperFileManifest) { - if (entry.second.current) - nActiveProjects++; + // + if (entry.second.current && !entry.second.excludefromcsmanifest) nActiveProjects++; } // End LOCK(cs_StructScraperFileManifest) - if (fDebug3) _log(logattribute::INFO, "ENDLOCK", "cs_StructScraperFileManifest"); + if (fDebug3) _log(logattribute::INFO, "ENDLOCK", "get scraper stats by consensus beacon list - count active projects: cs_StructScraperFileManifest"); } double dMagnitudePerProject = NEURALNETWORKMULTIPLIER / nActiveProjects; @@ -2671,12 +2974,12 @@ ScraperStats GetScraperStatsByConsensusBeaconList() { LOCK(cs_StructScraperFileManifest); - if (fDebug3) _log(logattribute::INFO, "LOCK", "cs_StructScraperFileManifest"); + if (fDebug3) _log(logattribute::INFO, "LOCK", "get scraper stats by consensus beacon list - load project file to stats: cs_StructScraperFileManifest"); for (auto const& entry : StructScraperFileManifest.mScraperFileManifest) { - if (entry.second.current) + if (entry.second.current && !entry.second.excludefromcsmanifest) { std::string project = entry.first; fs::path file = pathScraper / entry.second.filename; @@ -2695,7 +2998,7 @@ ScraperStats GetScraperStatsByConsensusBeaconList() } // End LOCK(cs_StructScraperFileManifest) - if (fDebug3) _log(logattribute::INFO, "ENDLOCK", "cs_StructScraperFileManifest"); + if (fDebug3) _log(logattribute::INFO, "ENDLOCK", "get scraper stats by consensus beacon list - load project file to stats: cs_StructScraperFileManifest"); } ProcessNetworkWideFromProjectStats(Consensus.mBeaconMap, mScraperStats); @@ -2760,7 +3063,7 @@ std::string ExplainMagnitude(std::string sCPID) if (fDebug3) _log(logattribute::INFO, "LOCK", "cs_ConvergedScraperStatsCache"); - if (GetAdjustedTime() - ConvergedScraperStatsCache.nTime < nScraperSleep) + if (GetAdjustedTime() - ConvergedScraperStatsCache.nTime < (nScraperSleep / 1000) || ConvergedScraperStatsCache.bClean) bConvergenceUpdateNeeded = false; // End LOCK(cs_ConvergedScraperStatsCache) @@ -2786,7 +3089,7 @@ std::string ExplainMagnitude(std::string sCPID) stringbuilder out; - out.append("CPID,Project,RAC,Project_Total_RAC,Project_Avg_RAC,Project Mag,Cumulative RAC,Cumulative Mag,Errors"); + out.append("CPID,Project,CPID RAC,Project RAC,Project Mag,CPID Mag"); double dCPIDCumulativeRAC = 0.0; double dCPIDCumulativeMag = 0.0; @@ -2816,17 +3119,13 @@ std::string ExplainMagnitude(std::string sCPID) out.append(sCPID + ","); out.append(sProject + ","); - out.fixeddoubleappend(iProject->second.statsvalue.dRAC, 2); + out.fixeddoubleappend(entry.second.statsvalue.dRAC, 2); out.append(","); - out.fixeddoubleappend(iProject->second.statsvalue.dAvgRAC, 2); + out.fixeddoubleappend(iProject->second.statsvalue.dRAC, 2); out.append(","); out.fixeddoubleappend(iProject->second.statsvalue.dMag, 2); out.append(","); - out.fixeddoubleappend(dCPIDCumulativeRAC, 2); - out.append(","); - out.fixeddoubleappend(dCPIDCumulativeMag, 2); - out.append(","); - //The last field is for errors, but there are not any, so the is next. + out.fixeddoubleappend(entry.second.statsvalue.dMag, 2); out.append(""); } } @@ -2931,7 +3230,7 @@ bool ScraperSaveCScraperManifestToFiles(uint256 nManifestHash) outputfilewpath = savepath / outputfile; - std::ofstream outfile(outputfilewpath.string().c_str(), std::ios_base::out | std::ios_base::binary); + std::ofstream outfile(outputfilewpath.string(), std::ios_base::out | std::ios_base::binary); if (!outfile) { @@ -3232,7 +3531,8 @@ bool ScraperSendFileManifestContents(CBitcoinAddress& Address, CKey& Key) for (auto const& entry : StructScraperFileManifest.mScraperFileManifest) { // If SCRAPER_CMANIFEST_INCLUDE_NONCURRENT_PROJ_FILES is false, only include current files to send across the network. - if (!SCRAPER_CMANIFEST_INCLUDE_NONCURRENT_PROJ_FILES && !entry.second.current) + // Also continue (exclude) if it is a non-publishable entry (excludefromcsmanifest is true). + if ((!SCRAPER_CMANIFEST_INCLUDE_NONCURRENT_PROJ_FILES && !entry.second.current) || entry.second.excludefromcsmanifest) continue; fs::path inputfile = entry.first; @@ -3399,6 +3699,54 @@ bool ScraperConstructConvergedManifest(ConvergedManifest& StructConvergedManifes + " with " + std::to_string(nIdenticalContentManifestCount) + " scrapers out of " + std::to_string(nScraperCount) + " agreeing."); + _log(logattribute::INFO, "ScraperConstructConvergedManifest", "Content hash " + iter.second.GetHex()); + + auto ConvergenceRange = mManifestsBinnedbyContent.equal_range(iter.second); + + // Record included scrapers in convergence. + for (auto iter2 = ConvergenceRange.first; iter2 != ConvergenceRange.second; ++iter2) + { + // ------------------------------------------------- ScraperID ------------ manifest hash + StructConvergedManifest.mIncludedScraperManifests[iter2->second.first] = iter2->second.second; + } + + // Record scrapers that are not part of the convergence by iterating through the top level of the double map (which is keyed by ScraperID) + for (const auto& iScraper : mMapCSManifestsBinnedByScraper) + { + // If the scraper is not found in the mIncludedScraperManifests, then it was not part of the convergence. + if (StructConvergedManifest.mIncludedScraperManifests.find(iScraper.first) == StructConvergedManifest.mIncludedScraperManifests.end()) + { + StructConvergedManifest.vExcludedScrapers.push_back(iScraper.first); + _log(logattribute::INFO, "ScraperConstructConvergedManifest", "Scraper " + iScraper.first + " not in convergence."); + } + else + { + StructConvergedManifest.vIncludedScrapers.push_back(iScraper.first); + // Scraper was in the convergence. Log if in fDebug3. + _log(logattribute::INFO, "ScraperConstructConvergedManifest", "Scraper " + iScraper.first + " in convergence."); + } + } + + // Retrieve the complete list of scrapers from the AppCache to determine scrapers not publishing at all. + AppCacheSection mScrapers = ReadCacheSection(Section::SCRAPER); + + for (const auto& iScraper : mScrapers) + { + // Only include scrapers enabled in protocol. + + if (iScraper.second.value == "true" || iScraper.second.value == "1") + { + if (std::find(std::begin(StructConvergedManifest.vExcludedScrapers), std::end(StructConvergedManifest.vExcludedScrapers), iScraper.first) + == std::end(StructConvergedManifest.vExcludedScrapers) + && std::find(std::begin(StructConvergedManifest.vIncludedScrapers), std::end(StructConvergedManifest.vIncludedScrapers), iScraper.first) + == std::end(StructConvergedManifest.vIncludedScrapers)) + { + StructConvergedManifest.vScrapersNotPublishing.push_back(iScraper.first); + _log(logattribute::INFO, "ScraperConstructConvergedManifest", "Scraper " + iScraper.first + " authorized but not publishing."); + } + } + } + bConvergenceSuccessful = true; // Note this break is VERY important, it prevents considering essentially the same manifest that meets convergence multiple times. @@ -3470,19 +3818,11 @@ bool ScraperConstructConvergedManifest(ConvergedManifest& StructConvergedManifes StructConvergedManifest.nContentHash = Hash(ss2.begin(), ss2.end()); - // Fill out the excluded projects vector... + // Determine if there is an excluded project. If so, set convergence back to false and drop back to project level to try and recover project by project. for (const auto& iProjects : projectWhitelist) { if (StructConvergedManifest.ConvergedManifestPartsMap.find(iProjects.m_name) == StructConvergedManifest.ConvergedManifestPartsMap.end()) { - // Project in whitelist was not in the map, so it goes in the exclusion vector. - //StructConvergedManifest.vExcludedProjects.push_back(std::make_pair(iProjects.m_name, "Converged manifests (agreed by multiple scrapers) excluded project.")); - //_log(logattribute::WARNING, "ScraperConstructConvergedManifestByProject", "Project " - // + iProjects.m_name - // + " was excluded because the converged manifests from the scrapers all excluded the project."); - - // To deal with a corner case of a medium term project fallout at the head of the list (more recent) where it is still available within - // the 48 hour retention window, fallback to project level convergence to attempt to recover the project. _log(logattribute::WARNING, "ScraperConstructConvergedManifestByProject", "Project " + iProjects.m_name + " was excluded because the converged manifests from the scrapers all excluded the project. \n" @@ -3636,7 +3976,7 @@ bool ScraperConstructConvergedManifestByProject(const NN::WhitelistSnapshot& pro unsigned int nIdenticalContentManifestCount = mProjectObjectsBinnedbyContent.count(std::get<0>(iter.second)); if (nIdenticalContentManifestCount >= NumScrapersForSupermajority(nScraperCount)) { - // Find the first one of equivalent parts ------------------ by hash. + // Find the first one of equivalent parts ------------------ by object hash. ProjectConvergence = mProjectObjectsBinnedbyContent.find(std::get<0>(iter.second)); _log(logattribute::INFO, "ScraperConstructConvergedManifestByProject", "Found convergence on project object " + ProjectConvergence->first.GetHex() @@ -3644,7 +3984,7 @@ bool ScraperConstructConvergedManifestByProject(const NN::WhitelistSnapshot& pro + " with " + std::to_string(nIdenticalContentManifestCount) + " scrapers out of " + std::to_string(nScraperCount) + " agreeing."); - // Get the actual part ----------------- by hash. + // Get the actual part ----------------- by object hash. auto iPart = CSplitBlob::mapParts.find(std::get<0>(iter.second)); uint256 nContentHashCheck = Hash(iPart->second.data.begin(), iPart->second.data.end()); @@ -3656,6 +3996,18 @@ bool ScraperConstructConvergedManifestByProject(const NN::WhitelistSnapshot& pro break; } + auto ProjectConvergenceRange = mProjectObjectsBinnedbyContent.equal_range(std::get<0>(iter.second)); + + // Record included scrapers included for the project level convergence keyed by project and the reverse. A multimap is convenient here for both. + for (auto iter2 = ProjectConvergenceRange.first; iter2 != ProjectConvergenceRange.second; ++iter2) + { + // ------------------------------------------------------------------------- project -------------- ScraperID. + StructConvergedManifest.mIncludedScrapersbyProject.insert(std::make_pair(iter2->second.second, iter2->second.first)); + // ------------------------------------------------------------------------ ScraperID -------------- project. + StructConvergedManifest.mIncludedProjectsbyScraper.insert(std::make_pair(iter2->second.first, iter2->second.second)); + } + + // Put Project Object (Part) in StructConvergedManifest keyed by project. StructConvergedManifest.ConvergedManifestPartsMap.insert(std::make_pair(iWhitelistProject.m_name, iPart->second.data)); @@ -3716,16 +4068,62 @@ bool ScraperConstructConvergedManifestByProject(const NN::WhitelistSnapshot& pro + " projects at " + DateTimeStrFormat("%x %H:%M:%S", StructConvergedManifest.timestamp)); - // Fill out the excluded projects vector... + // Fill out the the excluded projects vector and the included scraper count (by project) map for (const auto& iProjects : projectWhitelist) { if (StructConvergedManifest.ConvergedManifestPartsMap.find(iProjects.m_name) == StructConvergedManifest.ConvergedManifestPartsMap.end()) { // Project in whitelist was not in the map, so it goes in the exclusion vector. - StructConvergedManifest.vExcludedProjects.push_back(std::make_pair(iProjects.m_name, "No convergence was found at the fallback (project) level.")); + StructConvergedManifest.vExcludedProjects.push_back(iProjects.m_name); _log(logattribute::WARNING, "ScraperConstructConvergedManifestByProject", "Project " + iProjects.m_name + " was excluded because there was no convergence from the scrapers for this project at the project level."); + + continue; + } + + unsigned int nScraperConvergenceCount = StructConvergedManifest.mIncludedScrapersbyProject.count(iProjects.m_name); + StructConvergedManifest.mScraperConvergenceCountbyProject.insert(std::make_pair(iProjects.m_name, nScraperConvergenceCount)); + + if (fDebug3) _log(logattribute::INFO, "ScraperConstructConvergedManifestByProject", "Project " + iProjects.m_name + + ": " + std::to_string(nScraperConvergenceCount) + " scraper(s) converged"); + } + + // Fill out the included and excluded scraper vector for scrapers that did not participate in any project level convergence. + for (const auto& iScraper : mMapCSManifestsBinnedByScraper) + { + if (StructConvergedManifest.mIncludedProjectsbyScraper.count(iScraper.first)) + { + StructConvergedManifest.vIncludedScrapers.push_back(iScraper.first); + if (fDebug3) _log(logattribute::INFO, "ScraperConstructConvergedManifestByProject", "Scraper " + + iScraper.first + + " was included in one or more project level convergences."); + } + else + { + StructConvergedManifest.vExcludedScrapers.push_back(iScraper.first); + _log(logattribute::INFO, "ScraperConstructConvergedManifestByProject", "Scraper " + + iScraper.first + + " was excluded because it was not included in any project level convergence."); + } + } + + // Retrieve the complete list of scrapers from the AppCache to determine scrapers not publishing at all. + AppCacheSection mScrapers = ReadCacheSection(Section::SCRAPER); + + for (const auto& iScraper : mScrapers) + { + // Only include scrapers enabled in protocol. + if (iScraper.second.value == "true" || iScraper.second.value == "1") + { + if (std::find(std::begin(StructConvergedManifest.vExcludedScrapers), std::end(StructConvergedManifest.vExcludedScrapers), iScraper.first) + == std::end(StructConvergedManifest.vExcludedScrapers) + && std::find(std::begin(StructConvergedManifest.vIncludedScrapers), std::end(StructConvergedManifest.vIncludedScrapers), iScraper.first) + == std::end(StructConvergedManifest.vIncludedScrapers)) + { + StructConvergedManifest.vScrapersNotPublishing.push_back(iScraper.first); + _log(logattribute::INFO, "ScraperConstructConvergedManifesByProject", "Scraper " + iScraper.first + " authorized but not publishing."); + } } } @@ -3887,7 +4285,15 @@ bool LoadBeaconListFromConvergedManifest(ConvergedManifest& StructConvergedManif _log(logattribute::INFO, "LoadBeaconListFromConvergedManifest", "mBeaconMap element count: " + std::to_string(mBeaconMap.size())); - return true; + // If the Beacon Map has no entries return false. + if (mBeaconMap.size()) + { + return true; + } + else + { + return false; + } } @@ -3983,11 +4389,10 @@ std::string GenerateSBCoreDataFromScraperStats(ScraperStats& mScraperStats) std::string ScraperGetNeuralContract(bool bStoreConvergedStats, bool bContractDirectFromStatsUpdate) { - // NOTE - out of sync check here is removed, because in all instances, it is being checked before this function is - // called. OutOfSyncByAge calls PreviousBlockAge(), which takes a lock on cs_main. This is likely a deadlock culprit. + // NOTE - OutOfSyncByAge calls PreviousBlockAge(), which takes a lock on cs_main. This is likely a deadlock culprit if called from here + // and the scraper or neuralnet loop nearly simultaneously. So we use an atomic flag updated by the scraper or neuralnet loop. // If not in sync then immediately bail with a empty string. - // if (OutOfSyncByAge()) - // return std::string(); + if (fOutOfSyncByAge) return std::string(); // Check the age of the ConvergedScraperStats cache. If less than nScraperSleep / 1000 old (for seconds), then simply report back the cache contents. // This prevents the relatively heavyweight stats computations from running too often. The time here may not exactly align with @@ -3997,7 +4402,8 @@ std::string ScraperGetNeuralContract(bool bStoreConvergedStats, bool bContractDi LOCK(cs_ConvergedScraperStatsCache); if (fDebug3) _log(logattribute::INFO, "LOCK", "cs_ConvergedScraperStatsCache"); - if (GetAdjustedTime() - ConvergedScraperStatsCache.nTime < (nScraperSleep / 1000)) + // If the cache is less than nScraperSleep in minutes old OR not dirty... + if (GetAdjustedTime() - ConvergedScraperStatsCache.nTime < (nScraperSleep / 1000) || ConvergedScraperStatsCache.bClean) bConvergenceUpdateNeeded = false; // End LOCK(cs_ConvergedScraperStatsCache) @@ -4020,12 +4426,10 @@ std::string ScraperGetNeuralContract(bool bStoreConvergedStats, bool bContractDi if (!bContractDirectFromStatsUpdate) { // ScraperConstructConvergedManifest also culls old CScraperManifests. If no convergence, then - // you can't make a SB core and you can't make a contract, so return the empty string. - if (ScraperConstructConvergedManifest(StructConvergedManifest)) + // you can't make a SB core and you can't make a contract, so return the empty string. Also check + // to make sure the BeaconMap has been populated properly. + if (ScraperConstructConvergedManifest(StructConvergedManifest) && LoadBeaconListFromConvergedManifest(StructConvergedManifest, mBeaconMap)) { - // This is to display the element count in the beacon map. - LoadBeaconListFromConvergedManifest(StructConvergedManifest, mBeaconMap); - ScraperStats mScraperConvergedStats = GetScraperStatsByConvergedManifest(StructConvergedManifest); _log(logattribute::INFO, "ScraperGetNeuralContract", "mScraperStats has the following number of elements: " + std::to_string(mScraperConvergedStats.size())); @@ -4053,7 +4457,10 @@ std::string ScraperGetNeuralContract(bool bStoreConvergedStats, bool bContractDi ConvergedScraperStatsCache.nTime = GetAdjustedTime(); ConvergedScraperStatsCache.sContractHash = ScraperGetNeuralHash(sSBCoreData); ConvergedScraperStatsCache.sContract = sSBCoreData; - ConvergedScraperStatsCache.vExcludedProjects = StructConvergedManifest.vExcludedProjects; + ConvergedScraperStatsCache.Convergence = StructConvergedManifest; + + // Mark the cache clean, because it was just updated. + ConvergedScraperStatsCache.bClean = true; // Signal UI of SBContract status if (!sSBCoreData.empty()) @@ -4141,42 +4548,201 @@ std::string ScraperGetNeuralContract(bool bStoreConvergedStats, bool bContractDi return sSBCoreData; } +// This is for SB version 2+ (bv11+). +NN::Superblock ScraperGetSuperblockContract(bool bStoreConvergedStats, bool bContractDirectFromStatsUpdate) +{ + NN::Superblock empty_superblock; + + // NOTE - OutOfSyncByAge calls PreviousBlockAge(), which takes a lock on cs_main. This is likely a deadlock culprit if called from here + // and the scraper or neuralnet loop nearly simultaneously. So we use an atomic flag updated by the scraper or neuralnet loop. + // If not in sync then immediately bail with a empty string. + if (fOutOfSyncByAge) return empty_superblock; + + // Check the age of the ConvergedScraperStats cache. If less than nScraperSleep / 1000 old (for seconds), then simply report back the cache contents. + // This prevents the relatively heavyweight stats computations from running too often. The time here may not exactly align with + // the scraper loop if it is running, but that is ok. The scraper loop updates the time in the cache too. + bool bConvergenceUpdateNeeded = true; + { + LOCK(cs_ConvergedScraperStatsCache); + if (fDebug3) _log(logattribute::INFO, "LOCK", "cs_ConvergedScraperStatsCache"); + + // If the cache is less than nScraperSleep in minutes old OR not dirty... + if (GetAdjustedTime() - ConvergedScraperStatsCache.nTime < (nScraperSleep / 1000) || ConvergedScraperStatsCache.bClean) + bConvergenceUpdateNeeded = false; + + // End LOCK(cs_ConvergedScraperStatsCache) + if (fDebug3) _log(logattribute::INFO, "ENDLOCK", "cs_ConvergedScraperStatsCache"); + } + + ConvergedManifest StructConvergedManifest; + BeaconMap mBeaconMap; + NN::Superblock superblock; + + // if bConvergenceUpdate is needed, and... + // If bContractDirectFromStatsUpdate is set to true, this means that this is being called from + // ScraperSynchronizeDPOR() in fallback mode to force a single shot update of the stats files and + // direct generation of the contract from the single shot run. This will return immediately with a blank if + // IsScraperAuthorized() evaluates to false, because that means that by network policy, no non-scraper + // stats downloads are allowed by unauthorized scraper nodes. + // (If bConvergenceUpdate is not needed, then the scraper is operating by convergence already... + if (bConvergenceUpdateNeeded) + { + if (!bContractDirectFromStatsUpdate) + { + // ScraperConstructConvergedManifest also culls old CScraperManifests. If no convergence, then + // you can't make a SB core and you can't make a contract, so return the empty string. Also check + // to make sure the BeaconMap has been populated properly. + if (ScraperConstructConvergedManifest(StructConvergedManifest) && LoadBeaconListFromConvergedManifest(StructConvergedManifest, mBeaconMap)) + { + ScraperStats mScraperConvergedStats = GetScraperStatsByConvergedManifest(StructConvergedManifest); + + _log(logattribute::INFO, "ScraperGetNeuralContract", "mScraperStats has the following number of elements: " + std::to_string(mScraperConvergedStats.size())); + + if (bStoreConvergedStats) + { + if (!StoreStats(pathScraper / "ConvergedStats.csv.gz", mScraperConvergedStats)) + _log(logattribute::ERR, "ScraperGetNeuralContract", "StoreStats error occurred"); + else + _log(logattribute::INFO, "ScraperGetNeuralContract", "Stored converged stats."); + } + + // I know this involves a copy operation, but it minimizes the lock time on the cache... we may want to + // lock before and do a direct assignment, but that will lock the cache for the whole stats computation, + // which is not really necessary. + { + LOCK(cs_ConvergedScraperStatsCache); + if (fDebug3) _log(logattribute::INFO, "LOCK", "cs_ConvergedScraperStatsCache"); + + NN::Superblock superblock_Prev = ConvergedScraperStatsCache.NewFormatSuperblock; + + superblock = NN::Superblock::FromStats(mScraperConvergedStats); + + ConvergedScraperStatsCache.mScraperConvergedStats = mScraperConvergedStats; + ConvergedScraperStatsCache.nTime = GetAdjustedTime(); + ConvergedScraperStatsCache.nNewFormatSuperblockHash = ScraperGetSuperblockHash(superblock); + ConvergedScraperStatsCache.NewFormatSuperblock = superblock; + ConvergedScraperStatsCache.Convergence = StructConvergedManifest; + + // Mark the cache clean, because it was just updated. + ConvergedScraperStatsCache.bClean = true; + + // Signal UI of SBContract status + if (superblock.GetSerializeSize(SER_NETWORK, 1)) + { + if (superblock_Prev.GetSerializeSize(SER_NETWORK, 1)) + { + // If the current is not empty and the previous is not empty and not the same, then there is an updated contract. + if (ScraperGetSuperblockHash(superblock) != ScraperGetSuperblockHash(superblock_Prev)) + uiInterface.NotifyScraperEvent(scrapereventtypes::SBContract, CT_UPDATED, {}); + } + else + // If the previous was empty and the current is not empty, then there is a new contract. + uiInterface.NotifyScraperEvent(scrapereventtypes::SBContract, CT_NEW, {}); + } + else + if (superblock_Prev.GetSerializeSize(SER_NETWORK, 1)) + // If the current is empty and the previous was not empty, then the contract has been deleted. + uiInterface.NotifyScraperEvent(scrapereventtypes::SBContract, CT_DELETED, {}); + + // End LOCK(cs_ConvergedScraperStatsCache) + if (fDebug3) _log(logattribute::INFO, "ENDLOCK", "cs_ConvergedScraperStatsCache"); + } + + + _log(logattribute::INFO, "ScraperGetNeuralContract", "Superblock object generated from convergence"); + + return superblock; + } + else + return empty_superblock; + } + // If bContractDirectFromStatsUpdate is true, then this is the single shot pass. + else if (IsScraperAuthorized()) + { + // This part is the "second trip through from ScraperSynchronizeDPOR() as a fallback, if + // authorized. + + // Do a single shot through the main scraper function to update all of the files. + ScraperSingleShot(); + + // Notice there is NO update to the ConvergedScraperStatsCache here, as that is not + // appropriate for the single shot. + ScraperStats mScraperStats = GetScraperStatsByConsensusBeaconList(); + superblock = NN::Superblock::FromStats(mScraperStats); + + // Signal the UI there is a contract. + if(superblock.GetSerializeSize(SER_NETWORK, 1)) + uiInterface.NotifyScraperEvent(scrapereventtypes::SBContract, CT_NEW, {}); + + _log(logattribute::INFO, "ScraperGetNeuralContract", "Superblock object generated from single shot"); + + return superblock; + } + } + else + { + // If we are here, we are using cached information. + + LOCK(cs_ConvergedScraperStatsCache); + if (fDebug3) _log(logattribute::INFO, "LOCK", "cs_ConvergedScraperStatsCache"); + + superblock = ConvergedScraperStatsCache.NewFormatSuperblock; + + // Signal the UI of the "updated" contract. This needs to be sent because the scraper loop could + // have changed the state to something else, even though an update to the contract really hasn't happened, + // because it is cached. + uiInterface.NotifyScraperEvent(scrapereventtypes::SBContract, CT_UPDATED, {}); + + _log(logattribute::INFO, "ScraperGetNeuralContract", "Superblock object from cached converged stats"); + + // End LOCK(cs_ConvergedScraperStatsCache) + if (fDebug3) _log(logattribute::INFO, "ENDLOCK", "cs_ConvergedScraperStatsCache"); + + } + + return superblock; +} + -// Note: This is simply a wrapper around GetQuorumHash in main.cpp for compatibility purposes. See the comments below. +// Note: This is simply a wrapper around GetQuorumHash in main.cpp for compatibility purposes. std::string ScraperGetNeuralHash() { std::string sNeuralContract = ScraperGetNeuralContract(false, false); std::string sHash; - //sHash = Hash(sNeuralContract.begin(), sNeuralContract.end()).GetHex(); - - // This is the hash currently used by the old NN. Continue to use it for compatibility purpose until the next mandatory - // after the new NN rollout, when the old NN hash function can be retired in favor of the commented out code above. - // The intent will be to uncomment out the above line, and then reverse the roles of ScraperGetNeuralHash() and - // GetQuorumHash(). sHash = GetQuorumHash(sNeuralContract); return sHash; } -// Note: This is simply a wrapper around GetQuorumHash in main.cpp for compatibility purposes. See the comments below. +// Note: This is simply a wrapper around GetQuorumHash in main.cpp for compatibility purposes. std::string ScraperGetNeuralHash(std::string sNeuralContract) { std::string sHash; - //sHash = Hash(sNeuralContract.begin(), sNeuralContract.end()).GetHex(); - - // This is the hash currently used by the old NN. Continue to use it for compatibility purpose until the next mandatory - // after the new NN rollout, when the old NN hash function can be retired in favor of the commented out code above. - // The intent will be to uncomment out the above line, and then reverse the roles of ScraperGetNeuralHash() and - // GetQuorumHash(). sHash = GetQuorumHash(sNeuralContract); return sHash; } +// Note: This is the native hash for SB ver 2+ (bv11+). +NN::QuorumHash ScraperGetSuperblockHash() +{ + NN::QuorumHash nSuperblockContractHash = NN::QuorumHash::Hash(ScraperGetSuperblockContract(false, false)); + + return nSuperblockContractHash; +} + +// Note: This is the native hash for SB ver 2+ (bv11+). +NN::QuorumHash ScraperGetSuperblockHash(NN::Superblock& superblock) +{ + NN::QuorumHash nSuperblockContractHash = NN::QuorumHash::Hash(superblock); + + return nSuperblockContractHash; +} + bool ScraperSynchronizeDPOR() { @@ -4288,3 +4854,110 @@ UniValue archivescraperlog(const UniValue& params, bool fHelp) } + +UniValue testnewsb(const UniValue& params, bool fHelp) +{ + if (fHelp || params.size() != 0 ) + throw std::runtime_error( + "testnewsb\n" + "Test the new Superblock class.\n" + ); + + LOCK(cs_ConvergedScraperStatsCache); + + if (ConvergedScraperStatsCache.sContract.empty()) + throw std::runtime_error( + "Wait until a convergence is formed.\n" + ); + + UniValue res(UniValue::VOBJ); + + // Contract binary pack/unpack check... + _log(logattribute::INFO, "testnewsb", "Checking compatibility with binary SB pack/unpack by packing then unpacking, then comparing to the original"); + + std::string& sSBCoreData = ConvergedScraperStatsCache.sContract; + + std::string sPackedSBCoreData = PackBinarySuperblock(sSBCoreData); + std::string sSBCoreData_out = UnpackBinarySuperblock(sPackedSBCoreData); + + if (sSBCoreData == sSBCoreData_out) + { + _log(logattribute::INFO, "testnewsb", "Generated contract passed binary pack/unpack"); + res.pushKV("Generated legacy contract", "passed"); + } + else + { + _log(logattribute::ERR, "testnewsb", "Generated contract FAILED binary pack/unpack"); + _log(logattribute::INFO, "testnewsb", "sSBCoreData_out = \n" + sSBCoreData_out); + res.pushKV("Generated legacy contract", "FAILED"); + + } + + _log(logattribute::INFO, "testnewsb", "sSBCoreData size = " + std::to_string(sSBCoreData.size())); + res.pushKV("sSBCoreData size", (uint64_t) sSBCoreData.size()); + _log(logattribute::INFO, "testnewsb", "sPackedSBCoreData size = " + std::to_string(sPackedSBCoreData.size())); + res.pushKV("sSBPackedCoreData size", (uint64_t) sPackedSBCoreData.size()); + + NN::Superblock NewFormatSuperblock; + NN::Superblock NewFormatSuperblock_out; + CDataStream ss(SER_NETWORK, 1); + uint64_t nNewFormatSuperblockSerSize; + uint64_t nNewFormatSuperblock_outSerSize; + uint256 nNewFormatSuperblockHash; + uint256 nNewFormatSuperblock_outHash; + + NewFormatSuperblock = NN::Superblock::FromStats(ConvergedScraperStatsCache.mScraperConvergedStats); + NewFormatSuperblock.m_timestamp = ConvergedScraperStatsCache.nTime; + + _log(logattribute::INFO, "testnewsb", "m_projects size = " + std::to_string(NewFormatSuperblock.m_projects.size())); + res.pushKV("m_projects size", (uint64_t) NewFormatSuperblock.m_projects.size()); + _log(logattribute::INFO, "testnewsb", "m_cpids size = " + std::to_string(NewFormatSuperblock.m_cpids.size())); + res.pushKV("m_cpids size", (uint64_t) NewFormatSuperblock.m_cpids.size()); + _log(logattribute::INFO, "testnewsb", "zero-mag count = " + std::to_string(NewFormatSuperblock.m_cpids.Zeros())); + res.pushKV("zero-mag count", (uint64_t) NewFormatSuperblock.m_cpids.Zeros()); + + nNewFormatSuperblockSerSize = NewFormatSuperblock.GetSerializeSize(SER_NETWORK, 1); + nNewFormatSuperblockHash = SerializeHash(NewFormatSuperblock); + + _log(logattribute::INFO, "testnewsb", "nNewFormatSuperblockSerSize = " + std::to_string(nNewFormatSuperblockSerSize)); + res.pushKV("nNewFormatSuperblockSerSize", nNewFormatSuperblockSerSize); + + ss << NewFormatSuperblock; + ss >> NewFormatSuperblock_out; + + nNewFormatSuperblock_outSerSize = NewFormatSuperblock_out.GetSerializeSize(SER_NETWORK, 1); + nNewFormatSuperblock_outHash = SerializeHash(NewFormatSuperblock_out); + + _log(logattribute::INFO, "testnewsb", "nNewFormatSuperblock_outSerSize = " + std::to_string(nNewFormatSuperblock_outSerSize)); + res.pushKV("nNewFormatSuperblock_outSerSize", nNewFormatSuperblock_outSerSize); + + if (nNewFormatSuperblockHash == nNewFormatSuperblock_outHash) + { + _log(logattribute::INFO, "testnewsb", "NewFormatSuperblock serialization passed."); + res.pushKV("NewFormatSuperblock serialization", "passed"); + } + else + { + _log(logattribute::ERR, "testnewsb", "NewFormatSuperblock serialization FAILED."); + res.pushKV("NewFormatSuperblock serialization", "FAILED"); + } + + NewFormatSuperblock = NN::Superblock::UnpackLegacy(sPackedSBCoreData); + NN::QuorumHash new_legacy_hash = NN::QuorumHash::Hash(NewFormatSuperblock); + std::string old_legacy_hash = GetQuorumHash(sSBCoreData_out); + + res.pushKV("new_legacy_hash", new_legacy_hash.ToString()); + res.pushKV("old_legacy_hash", old_legacy_hash); + + if (new_legacy_hash == old_legacy_hash) { + _log(logattribute::INFO, "testnewsb", "NewFormatSuperblock legacy hash passed."); + res.pushKV("NewFormatSuperblock legacy hash", "passed"); + } else { + _log(logattribute::INFO, "testnewsb", "NewFormatSuperblock legacy hash FAILED."); + res.pushKV("NewFormatSuperblock legacy hash", "FAILED"); + } + + _log(logattribute::INFO, "testnewsb", "NewFormatSuperblock legacy unpack number of zero mags = " + std::to_string(NewFormatSuperblock.m_cpids.Zeros())); + + return res; +} diff --git a/src/scraper/scraper.h b/src/scraper/scraper.h index 2a850138ad..af42e01274 100644 --- a/src/scraper/scraper.h +++ b/src/scraper/scraper.h @@ -28,6 +28,7 @@ // See fwd.h for certain forward declarations that need to be included in other areas. #include "fwd.h" +#include "neuralnet/superblock.h" /********************* * Scraper Namepsace * @@ -49,12 +50,17 @@ unsigned int nScraperSleep = 300000; // The amount of time before SB is due to start scraping. unsigned int nActiveBeforeSB = 14400; +// Explorer mode flag. Only effective if scraper is active. +bool fExplorer = false; + // These can be overridden by ScraperApplyAppCacheEntries(). // The flag to control whether non-current statistics files are retained. bool SCRAPER_RETAIN_NONCURRENT_FILES = true; // Define 48 hour retention time for stats files, current or not. int64_t SCRAPER_FILE_RETENTION_TIME = 48 * 3600; +// Define extended file retention time for explorer mode. +int64_t EXPLORER_EXTENDED_FILE_RETENTION_TIME = 168 * 3600; // Define whether prior CScraperManifests are kept. bool SCRAPER_CMANIFEST_RETAIN_NONCURRENT = true; // Define CManifest scraper object retention time. @@ -95,6 +101,9 @@ AppCacheSectionExt mScrapersExt = {}; // Lets try to start using some lockless synchronization. std::atomic nSyncTime {0}; +// Starting state is always out of sync. This atomic is to avoid multiple threads calling +// OutOfSyncByAge(), which takes a lock on cs_main and can cause deadlocks. +std::atomic fOutOfSyncByAge {true}; CCriticalSection cs_mScrapersExt; @@ -109,7 +118,9 @@ std::string ExplainMagnitude(std::string sCPID); bool IsScraperAuthorized(); bool IsScraperAuthorizedToBroadcastManifests(CBitcoinAddress& AddressOut, CKey& KeyOut); std::string ScraperGetNeuralContract(bool bStoreConvergedStats = false, bool bContractDirectFromStatsUpdate = false); +NN::Superblock ScraperGetSuperblockContract(bool bStoreConvergedStats = false, bool bContractDirectFromStatsUpdate = false); std::string ScraperGetNeuralHash(); +NN::QuorumHash ScraperGetSuperblockHash(); bool ScraperSynchronizeDPOR(); static std::vector vstatsobjecttypestrings = { "NetWorkWide", "byCPID", "byProject", "byCPIDbyProject" }; diff --git a/src/scraper_net.cpp b/src/scraper_net.cpp index e2dc48bd78..528ab8e977 100644 --- a/src/scraper_net.cpp +++ b/src/scraper_net.cpp @@ -14,6 +14,7 @@ #include "scraper_net.h" #include "appcache.h" #include "scraper/fwd.h" +#include "neuralnet/superblock.h" //Globals std::map CSplitBlob::mapParts; @@ -23,7 +24,9 @@ extern unsigned int SCRAPER_MISBEHAVING_NODE_BANSCORE; extern int64_t SCRAPER_DEAUTHORIZED_BANSCORE_GRACE_PERIOD; extern AppCacheSectionExt mScrapersExt; extern std::atomic nSyncTime; +extern ConvergedScraperStats ConvergedScraperStatsCache; extern CCriticalSection cs_mScrapersExt; +extern CCriticalSection cs_ConvergedScraperStatsCache; bool CSplitBlob::RecvPart(CNode* pfrom, CDataStream& vRecv) { @@ -413,9 +416,21 @@ void CScraperManifest::UnserializeCheck(CReaderStream& ss, unsigned int& banscor bool CScraperManifest::DeleteManifest(const uint256& nHash) { if (mapManifest.erase(nHash)) + { + // lock cs_ConvergedScraperStatsCache and mark ConvergedScraperStatsCache dirty because a manifest has been deleted + // that could have been used in the cached convergence, so the convergence may change. + { + LOCK(cs_ConvergedScraperStatsCache); + + ConvergedScraperStatsCache.bClean = false; + } + return true; + } else + { return false; + } } // A lock must be taken on cs_mapManifest before calling this function. @@ -473,6 +488,15 @@ bool CScraperManifest::RecvManifest(CNode* pfrom, CDataStream& vRecv) } return false; } + + // lock cs_ConvergedScraperStatsCache and mark ConvergedScraperStatsCache dirty because a new manifest is present, + // so the convergence may change. + { + LOCK(cs_ConvergedScraperStatsCache); + + ConvergedScraperStatsCache.bClean = false; + } + LogPrint("manifest", "received manifest %s with %u / %u parts", hash.GetHex(),(unsigned)manifest.cntPartsRcvd,(unsigned)manifest.vParts.size()); if( manifest.isComplete() ) { @@ -531,6 +555,15 @@ bool CScraperManifest::addManifest(std::unique_ptr&& m, CKey& // Call manifest complete to notify peers of new manifest. manifest.Complete(); + + // lock cs_ConvergedScraperStatsCache and mark ConvergedScraperStatsCache dirty because a new manifest is present, + // so the convergence may change. + { + LOCK(cs_ConvergedScraperStatsCache); + + ConvergedScraperStatsCache.bClean = false; + } + return true; } diff --git a/src/serialize.h b/src/serialize.h index 642339f051..82409b736c 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -241,8 +242,139 @@ uint64_t ReadCompactSize(Stream& is) return nSizeRet; } +class CSizeComputer; +/** + * Variable-length integers: bytes are a MSB base-128 encoding of the number. + * The high bit in each byte signifies whether another digit follows. To make + * sure the encoding is one-to-one, one is subtracted from all but the last digit. + * Thus, the byte sequence a[] with length len, where all but the last byte + * has bit 128 set, encodes the number: + * + * (a[len-1] & 0x7F) + sum(i=1..len-1, 128^i*((a[len-i-1] & 0x7F)+1)) + * + * Properties: + * * Very small (0-127: 1 byte, 128-16511: 2 bytes, 16512-2113663: 3 bytes) + * * Every integer has exactly one encoding + * * Encoding does not depend on size of original integer type + * * No redundancy: every (infinite) byte sequence corresponds to a list + * of encoded integers. + * + * 0: [0x00] 256: [0x81 0x00] + * 1: [0x01] 16383: [0xFE 0x7F] + * 127: [0x7F] 16384: [0xFF 0x00] + * 128: [0x80 0x00] 16511: [0xFF 0x7F] + * 255: [0x80 0x7F] 65535: [0x82 0xFE 0x7F] + * 2^32: [0x8E 0xFE 0xFE 0xFF 0x00] + */ + +/** + * Mode for encoding VarInts. + * + * Currently there is no support for signed encodings. The default mode will not + * compile with signed values, and the legacy "nonnegative signed" mode will + * accept signed values, but improperly encode and decode them if they are + * negative. In the future, the DEFAULT mode could be extended to support + * negative numbers in a backwards compatible way, and additional modes could be + * added to support different varint formats (e.g. zigzag encoding). + */ +enum class VarIntMode { DEFAULT, NONNEGATIVE_SIGNED }; + +template +struct CheckVarIntMode { + constexpr CheckVarIntMode() + { + static_assert(Mode != VarIntMode::DEFAULT || std::is_unsigned::value, "Unsigned type required with mode DEFAULT."); + static_assert(Mode != VarIntMode::NONNEGATIVE_SIGNED || std::is_signed::value, "Signed type required with mode NONNEGATIVE_SIGNED."); + } +}; + +template +inline unsigned int GetSizeOfVarInt(I n) +{ + CheckVarIntMode(); + int nRet = 0; + while(true) { + nRet++; + if (n <= 0x7F) + break; + n = (n >> 7) - 1; + } + return nRet; +} + +template +inline void WriteVarInt(CSizeComputer& os, I n); + +template +void WriteVarInt(Stream& os, I n) +{ + CheckVarIntMode(); + unsigned char tmp[(sizeof(n)*8+6)/7]; + int len=0; + while(true) { + tmp[len] = (n & 0x7F) | (len ? 0x80 : 0x00); + if (n <= 0x7F) + break; + n = (n >> 7) - 1; + len++; + } + do { + Serialize(os, tmp[len], SER_NETWORK, 1); + } while(len--); +} + +template +I ReadVarInt(Stream& is) +{ + CheckVarIntMode(); + I n = 0; + while(true) { + unsigned char chData; + Unserialize(is, chData, SER_NETWORK, 1); + if (n > (std::numeric_limits::max() >> 7)) { + throw std::ios_base::failure("ReadVarInt(): size too large"); + } + n = (n << 7) | (chData & 0x7F); + if (chData & 0x80) { + if (n == std::numeric_limits::max()) { + throw std::ios_base::failure("ReadVarInt(): size too large"); + } + n++; + } else { + return n; + } + } +} + +template +class CVarInt +{ +protected: + I &n; +public: + explicit CVarInt(I& nIn) : n(nIn) { } + + unsigned int GetSerializeSize(int nType = 0, int nVersion = 0) const + { + return GetSizeOfVarInt(n); + } + + template + void Serialize(Stream &s, int nType = 0, int nVersion = 0) const { + WriteVarInt(s, n); + } + template + void Unserialize(Stream& s, int nType = 0, int nVersion = 0) { + n = ReadVarInt(s); + } +}; + +template +CVarInt WrapVarInt(I& n) { return CVarInt{n}; } + +#define VARINT(obj, ...) WrapVarInt<__VA_ARGS__>(REF(obj)) #define FLATDATA(obj) REF(CFlatData((char*)&(obj), (char*)&(obj) + sizeof(obj))) /** Wrapper for serializing arrays and POD. @@ -322,6 +454,11 @@ template unsigned int GetSeri template void Serialize(Stream& os, const std::map& m, int nType, int nVersion); template void Unserialize(Stream& is, std::map& m, int nType, int nVersion); +// unordered_map +template unsigned int GetSerializeSize(const std::unordered_map& m, int nType, int nVersion); +template void Serialize(Stream& os, const std::unordered_map& m, int nType, int nVersion); +template void Unserialize(Stream& is, std::unordered_map& m, int nType, int nVersion); + // set template unsigned int GetSerializeSize(const std::set& m, int nType, int nVersion); template void Serialize(Stream& os, const std::set& m, int nType, int nVersion); @@ -350,7 +487,7 @@ inline void Serialize(Stream& os, const T& a, long nType, int nVersion) } template -inline void Unserialize(Stream& is, T& a, long nType, int nVersion) +inline void Unserialize(Stream& is, T&& a, long nType, int nVersion) { a.Unserialize(is, (int)nType, nVersion); } @@ -625,6 +762,42 @@ void Unserialize(Stream& is, std::map& m, int nType, int nVersion + +// +// unordered_map +// +template +unsigned int GetSerializeSize(const std::unordered_map& m, int nType, int nVersion) +{ + unsigned int nSize = GetSizeOfCompactSize(m.size()); + for (typename std::unordered_map::const_iterator mi = m.begin(); mi != m.end(); ++mi) + nSize += GetSerializeSize((*mi), nType, nVersion); + return nSize; +} + +template +void Serialize(Stream& os, const std::unordered_map& m, int nType, int nVersion) +{ + WriteCompactSize(os, m.size()); + for (typename std::unordered_map::const_iterator mi = m.begin(); mi != m.end(); ++mi) + Serialize(os, (*mi), nType, nVersion); +} + +template +void Unserialize(Stream& is, std::unordered_map& m, int nType, int nVersion) +{ + m.clear(); + unsigned int nSize = ReadCompactSize(is); + typename std::unordered_map::iterator mi = m.begin(); + for (unsigned int i = 0; i < nSize; i++) + { + std::pair item; + Unserialize(is, item, nType, nVersion); + mi = m.insert(mi, item); + } +} + + // // set // @@ -682,7 +855,7 @@ inline unsigned int SerReadWrite(Stream& s, const T& obj, int nType, int nVersio } template -inline unsigned int SerReadWrite(Stream& s, T& obj, int nType, int nVersion, CSerActionUnserialize ser_action) +inline unsigned int SerReadWrite(Stream& s, T&& obj, int nType, int nVersion, CSerActionUnserialize ser_action) { ::Unserialize(s, obj, nType, nVersion); return 0; @@ -866,7 +1039,7 @@ class CReaderStream } template - CReaderStream& operator>>(T& obj) + CReaderStream& operator>>(T&& obj) { // Unserialize from this stream ::Unserialize(*this, obj, nType, nVersion); @@ -890,6 +1063,7 @@ class CDataStream typedef vector_type::allocator_type allocator_type; typedef vector_type::reference reference; typedef vector_type::iterator iterator; + typedef vector_type::const_iterator const_iterator; typedef vector_type::reverse_iterator reverse_iterator; explicit CDataStream(int nTypeIn, int nVersionIn) @@ -934,7 +1108,9 @@ class CDataStream // Vector subset // iterator begin() { return vch.begin() + nReadPos; } + const_iterator begin() const { return vch.begin() + nReadPos; } iterator end() { return vch.end(); } + const_iterator end() const { return vch.end(); } void resize(size_type n, value_type c=0) { vch.resize(n + nReadPos, c); } void reserve(size_type n) { vch.reserve(n + nReadPos); } const_reference operator[](size_type pos) const { return vch[pos + nReadPos]; } diff --git a/src/test/DoS_tests.cpp b/src/test/DoS_tests.cpp index 87bafe947c..3b3a2d60ad 100755 --- a/src/test/DoS_tests.cpp +++ b/src/test/DoS_tests.cpp @@ -3,10 +3,8 @@ // #include -#include // for 'map_list_of()' #include #include -#include #include "main.h" #include "wallet.h" @@ -82,56 +80,6 @@ BOOST_AUTO_TEST_CASE(DoS_bantime) BOOST_CHECK(!CNode::IsBanned(addr)); } -static bool CheckNBits(unsigned int nbits1, int64_t time1, unsigned int nbits2, int64_t time2)\ -{ - if (time1 > time2) - return CheckNBits(nbits2, time2, nbits1, time1); - int64_t 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)); - -} - CTransaction RandomOrphan() { auto it = mapOrphanTransactions.lower_bound(GetRandHash()); diff --git a/src/test/cpid_tests.cpp b/src/test/cpid_tests.cpp deleted file mode 100755 index bd22845845..0000000000 --- a/src/test/cpid_tests.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include "cpid.h" - -#include - -BOOST_AUTO_TEST_SUITE(cpid_tests); - -BOOST_AUTO_TEST_CASE(cpid_VerifyComputeCPIDv2) -{ - uint256 blockhash = 1; - BOOST_CHECK_EQUAL( - ComputeCPIDv2("test@unittest.com", "abcdefghijklmno", blockhash), - "4078bd252856710b95c4f31377bb1ba86bc3666ac7676a706e736ece7176d4756a7b76417ad36cd97a6976d78fc5d0d2"); -} - -BOOST_AUTO_TEST_SUITE_END() diff --git a/src/test/crypter_tests.cpp b/src/test/crypter_tests.cpp deleted file mode 100755 index 6aa7634057..0000000000 --- a/src/test/crypter_tests.cpp +++ /dev/null @@ -1,41 +0,0 @@ -#include "crypter.h" - -#include -#include -#include -#include - -namespace -{ - const std::string PLAINTEXT("0434e3e09f49ea168c5bbf53f877ff4206923858aab7c7e1df25bc"); - const std::string SALT("jfjdslkfjslk4"); -} - -BOOST_AUTO_TEST_SUITE(crypter_tests) - -BOOST_AUTO_TEST_CASE(crypter_GridEncryptShouldProduceCorrectOutput) -{ - const std::vector plaintext(PLAINTEXT.begin(), PLAINTEXT.end()); - std::vector encrypted; - - BOOST_CHECK(GridEncrypt(plaintext, encrypted)); - - // Convert encrypted message to Base64 for easier verification. - std::string encrypted_message(encrypted.begin(), encrypted.end()); - BOOST_CHECK_EQUAL(EncodeBase64(encrypted_message), - "sdENub7Ll+MeRKvGrzOPYuOTQ+Eqlbc1reeD+tdnQ9PcxubYwL883Anxbc7POgmm+wL8AfYEqa4MyeQbPRdL1A=="); -} - -BOOST_AUTO_TEST_CASE(crypter_GridDecryptShouldDecryptValidInput) -{ - const std::vector encrypted = - DecodeBase64("sdENub7Ll+MeRKvGrzOPYuOTQ+Eqlbc1reeD+tdnQ9PcxubYwL883Anxbc7POgmm+wL8AfYEqa4MyeQbPRdL1A=="); - - // GridEncrypt allocates memory in destination while GridDecrypt doesn't. - std::vector plaintext(encrypted.size()); - BOOST_CHECK(GridDecrypt(encrypted, plaintext)); - const std::string decrypted_message(plaintext.begin(), plaintext.end()); - BOOST_CHECK_EQUAL(PLAINTEXT, decrypted_message); -} - -BOOST_AUTO_TEST_SUITE_END() diff --git a/src/test/data/client_state.xml b/src/test/data/client_state.xml new file mode 100644 index 0000000000..fa5993e757 --- /dev/null +++ b/src/test/data/client_state.xml @@ -0,0 +1,384 @@ + + + + + 0 + host.example.com + 127.0.0.1 + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + 4 + AuthenticAMD + AMD A8-7650K Radeon R7, 10 Compute Cores 4C+6G [Family 21 Model 48 Stepping 1] + fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 popcnt aes xsave avx f16c lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs xop skinit wdt lwp fma4 tce nodeid_msr tbm topoext perfctr_core perfctr_nb bpext ptsc cpb hw_pstate ssbd vmmcall fsgsbase bmi1 xsaveopt arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold overflow_recov + 2844945151.944860 + 84103715299.331421 + 1000000000.000000 + 1553593033.290475 + 0 + 15775625r16.000000 + 2097652.000000 + 2147479152.000000 + 112926989856.000000 + 38705620136.000000 + Linux Ubuntu + Ubuntu 18.04 LTS [4.15.0-46-generic|libc 2.27 (Ubuntu GLIBC 2.27-3ubuntu1)] + 1 + + + 1 + AMD Radeon Graphics + 2270572544.000000 + 0 + 1 + 552960000000.000000 + + 0 + 2165 + 0 + 0 + 720 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + AMD Radeon Graphics + Advanced Micro Devices, Inc. + 4098 + 1 + 0 + 190 + 63 + 1 + 1 + cl_khr_fp64 cl_amd_fp64 cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_int64_base_atomics cl_khr_int64_extended_atomics cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_gl_sharing cl_amd_device_attribute_query cl_amd_vec3 cl_amd_printf cl_amd_media_ops cl_amd_media_ops2 cl_amd_popcnt cl_khr_image2d_from_buffer cl_khr_spir cl_khr_gl_event + 2270572544 + 32768 + 720 + 6 + 0 + 0 + 4 + 16 + 1 + OpenCL 2.1 AMD-APP (2671.3) + OpenCL 1.2 AMD-APP (2671.3) + 2671.3 + + + + + + 0.999004 + -1.000000 + 0.999985 + 0.999985 + 0.999985 + 1553573000.312873 + 1537809806.529388 + 16359738.928552 + 16358557.023707 + 16358236.640803 + 773537.446470 + 1554346531.751300 + + + 103958.517311 + 11943404.327771 + 1554346536.891153 + 2750980.763047 + 44292501.573256 + 1554343775.473025 + + + + https://project1.example.com/boinc/ + Valid_Project_1 + + researcher + gridcoin + + b8b58cce3c90c7dc9f3601674202b21c + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + f5d8234352e5a5ae3915debba7258294 + 1541012345.000000 + 0.000000 + 0.000000 + 1540012345.000000 + 3 + 12345 + 1806 + 12345 + 0.000000 + 0.000000 + 1540012345.000000 + 0 + 0 + 0.000000 + 0.000000 + 0.000000 + 1550012345.000000 + 100.000000 + 0.000000 + 1.000000 + 0 + 0 + 0 + 0 + 0 + 0.000000 + 1540012345.000000 + + + + + cpu + 0.000000 + + + cpu + 0.000000 + + + ati + 0.000000 + + + ati + 0.000000 + + https://project1.example.com/boinc_cgi/cgi + 0.000000 + 0.000000 + 0.000000 + 0.000000 + 0.000000 + 1073712345.000000 + + + + https://project2.example.com/boinc/ + Valid_project 2 + + researcher + Gridcoin + + b8b58cce3c90c7dc9f3601674202b21c + YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY + 8edc235ddcecf9c416a5f9417d56f4fd + 1541012345.000000 + 0.000000 + 0.000000 + 1540012345.000000 + 3 + 12345 + 1806 + 12345 + 0.000000 + 0.000000 + 1540012345.000000 + 0 + 0 + 0.000000 + 0.000000 + 0.000000 + 1550012345.000000 + 100.000000 + 0.000000 + 1.000000 + 0 + 0 + 0 + 0 + 0 + 0.000000 + 1540012345.000000 + + + + + cpu + 0.000000 + + + cpu + 0.000000 + + + ati + 0.000000 + + + ati + 0.000000 + + https://project2.example.com/boinc_cgi/cgi + 0.000000 + 0.000000 + 0.000000 + 0.000000 + 0.000000 + 1073712345.000000 + + + + https://project3.example.com/boinc/ + invalid project 3 + + researcher + Gridcoin + + b8b58cce3c90c7dc9f3601674202b21c + ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ + 8edc235ddcecf9c416a5f9417d56f4fd + 1541012345.000000 + 0.000000 + 0.000000 + 1540012345.000000 + 3 + 12345 + 1806 + 12345 + 0.000000 + 0.000000 + 1540012345.000000 + 0 + 0 + 0.000000 + 0.000000 + 0.000000 + 1550012345.000000 + 100.000000 + 0.000000 + 1.000000 + 0 + 0 + 0 + 0 + 0 + 0.000000 + 1540012345.000000 + + + + + cpu + 0.000000 + + + cpu + 0.000000 + + + ati + 0.000000 + + + ati + 0.000000 + + https://project3.example.com/boinc_cgi/cgi + 0.000000 + 0.000000 + 0.000000 + 0.000000 + 0.000000 + 1073712345.000000 + + + + https://invalid-project.example.com/boinc/ + + researcher + Gridcoin + + b8b58cce3c90c7dc9f3601674202b21c + YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY + 8edc235ddcecf9c416a5f9417d56f4fd + 1541012345.000000 + 0.000000 + 0.000000 + 1540012345.000000 + 3 + 12345 + 1806 + 12345 + 0.000000 + 0.000000 + 1540012345.000000 + 0 + 0 + 0.000000 + 0.000000 + 0.000000 + 1550012345.000000 + 100.000000 + 0.000000 + 1.000000 + 0 + 0 + 0 + 0 + 0 + 0.000000 + 1540012345.000000 + + + + + cpu + 0.000000 + + + cpu + 0.000000 + + + ati + 0.000000 + + + ati + 0.000000 + + https://invalid-project.example.com/boinc_cgi/cgi + 0.000000 + 0.000000 + 0.000000 + 0.000000 + 0.000000 + 1073712345.000000 + +x86_64-pc-linux-gnu +7 +9 +3 +1 +3 +1 +3 +2 +1530012345.000000 +1550012345.000000 +i686-pc-linux-gnu +home + diff --git a/src/test/gridcoin_tests.cpp b/src/test/gridcoin_tests.cpp index cf4dc3c91c..db17c9f64a 100755 --- a/src/test/gridcoin_tests.cpp +++ b/src/test/gridcoin_tests.cpp @@ -3,11 +3,6 @@ #include "main.h" #include "global_objects_noui.hpp" #include "appcache.h" -#include "contract/superblock.h" - -#include "data/superblock.txt.h" -#include "data/superblock_packed.bin.h" -#include "data/superblock_unpacked.txt.h" #include #include @@ -16,10 +11,8 @@ extern double GetOutstandingAmountOwed(StructCPID &mag, std::string cpid, int64_t locktime, double& total_owed, double block_magnitude); extern std::map mvDPOR; -extern std::string GetQuorumHash(const std::string& data); extern bool fTestNet; double RoundFromString(std::string s, int place); -std::string LowerUnderscore(std::string data); namespace { @@ -32,8 +25,6 @@ namespace { // Create a fake CPID StructCPID& cpid = GetInitializedStructCPID2(TEST_CPID, mvMagnitudes); - cpid.projectname = "My Simple Test Project"; - cpid.entries = 1; cpid.cpid = TEST_CPID; cpid.payments = 123; //cpid.EarliestPaymentTime = 1490260000; @@ -75,40 +66,6 @@ BOOST_AUTO_TEST_CASE(gridcoin_GetOutstandingAmountOwedShouldReturnCorrectSum) BOOST_CHECK_CLOSE(outstanding, total_owed - cpid.payments, 0.000001); } -BOOST_AUTO_TEST_CASE(gridcoin_VerifyGetQuorumHash) -{ - const std::string contract = "0390450eff5f5cd6d7a7d95a6d898d8d,1480;1878ecb566ac8e62beb7d141e1922460,6.25;1963a6f109ea770c195a0e1afacd2eba,70;285ff8d5014ef73cc83580338a9c0345,820;46f64d69eb8c5ee9cd24178b589af83f,12.5;0,15;4f0fecd04be3a74c46aa9678f780d028,750;55cd02be28521073d367f7ca38615682,720;58e565221db80d168621187c36c26c3e,12.5;59900fe7ef44fe33aa2afdf98301ec1c,530;5a094d7d93f6d6370e78a2ac8c008407,1400;0,15;7d0d73fe026d66fd4ab8d5d8da32a611,84000;8cfe9864e18db32a334b7de997f5a4f2,35;8f2a530cf6f73647af4c680c3471ea65,90;96c18bb4a02d15c90224a7138a540cf7,4520;9b67756a05f76842de1e88226b79deb9,0;9ce6f19e20f69790601c9bf9c0b03928,3.75;9ff2b091f67327b7d8e5b75fb5337514,310;a7a537ff8ad4d8fff4b3dad444e681ef,0;a914eba952be5dfcf73d926b508fd5fa,6720;d5924e4750f0f1c1c97b9635914afb9e,0;db250f4451dc39632e52e157f034316d,5;e7f90818e3e87c0bbefe83ad3cfe27e1,13500;btc,0;grc,0;amicable numbers,536000,5900000;asteroids@home,158666.67,793333.33;citizen science grid,575333.33,2881428.57;collatz conjecture,4027142.86,36286380;cosmology@home,47000,282666.67;einstein@home,435333.33,5661428.57;gpugrid,1804285.71,9035714.29;leiden classical,2080,10500;lhc@home classic,26166.67,210000;milkyway@home,2094285.71,8395714.29;moowrap,996666.67,7981428.57;nfs@home,96000,385333.33;numberfields@home,89333.33,626666.67;primegrid,248000,1735714.29;seti@home,52333.33,367333.33;srbase,89666.67,896666.67;sztaki desktop grid,8320,41666.67;theskynet pogs,45500,409333.33;tn-grid,39500,514666.67;universe@home,47833.33,335333.33;vgtu project@home,20666.67,124000;world community grid,29166.67,263333.33;yafu,93000,838666.67;yoyo@home,7040,56333.33;NeuralNetwork,2000000,20000000;"; - BOOST_CHECK_EQUAL(GetQuorumHash(contract), "0f099cab261bb562ff553f3b9c7bf942"); -} - -BOOST_AUTO_TEST_CASE(gridcoin_QuorumHashShouldBeCorrectAfterPackingAndUnpackingBinarySuperblock) -{ - const std::string contract(superblock_txt, superblock_txt + superblock_txt_len); - const std::string packed = PackBinarySuperblock(contract); - const std::string unpacked = UnpackBinarySuperblock(packed); - //BOOST_CHECK_EQUAL(unpacked, contract); - BOOST_CHECK_EQUAL(GetQuorumHash(contract), GetQuorumHash(unpacked)); -} - -BOOST_AUTO_TEST_CASE(gridcoin_ValidatePackBinarySuperblock) -{ - const std::string contract(superblock_txt, superblock_txt + superblock_txt_len); - const std::string expected(superblock_packed_bin, superblock_packed_bin + superblock_packed_bin_len); - BOOST_CHECK_EQUAL(PackBinarySuperblock(contract), expected); -} - -BOOST_AUTO_TEST_CASE(gridcoin_ValidateUnpackBinarySuperblock) -{ - const std::string packed(superblock_packed_bin, superblock_packed_bin + superblock_packed_bin_len); - const std::string expected(superblock_unpacked_txt, superblock_unpacked_txt + superblock_unpacked_txt_len); - BOOST_CHECK_EQUAL(UnpackBinarySuperblock(packed), expected); -} - -BOOST_AUTO_TEST_CASE(gridcoin_LowerUnderscoreShouldConvertToLowerCaseAndReplaceUnderscoresWithSpaces) -{ - BOOST_CHECK_EQUAL("hello test string", LowerUnderscore("Hello_TEST_string")); -} - BOOST_AUTO_TEST_CASE(gridcoin_V8ShouldBeEnabledOnBlock1010000InProduction) { bool was_testnet = fTestNet; diff --git a/src/test/neuralnet/cpid_tests.cpp b/src/test/neuralnet/cpid_tests.cpp new file mode 100644 index 0000000000..4bf37dcbf9 --- /dev/null +++ b/src/test/neuralnet/cpid_tests.cpp @@ -0,0 +1,532 @@ +#include "neuralnet/cpid.h" + +#include +#include +#include + +// ----------------------------------------------------------------------------- +// Cpid +// ----------------------------------------------------------------------------- + +BOOST_AUTO_TEST_SUITE(Cpid) + +BOOST_AUTO_TEST_CASE(it_initializes_to_a_zero_cpid) +{ + NN::Cpid cpid; + + std::array zeros { }; + + BOOST_CHECK(cpid.Raw() == zeros); +} + +BOOST_AUTO_TEST_CASE(it_initializes_to_the_supplied_bytes) +{ + std::vector expected { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + }; + + NN::Cpid cpid(expected); + + std::vector bytes(cpid.Raw().begin(), cpid.Raw().end()); + + BOOST_CHECK(bytes == expected); +} + +BOOST_AUTO_TEST_CASE(it_parses_a_cpid_from_its_string_representation) +{ + NN::Cpid cpid = NN::Cpid::Parse("00010203040506070809101112131415"); + + BOOST_CHECK(cpid.Raw() == (std::array { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + })); +} + +BOOST_AUTO_TEST_CASE(it_parses_an_invalid_cpid_string_to_zeros) +{ + // Empty: + NN::Cpid cpid = NN::Cpid::Parse(""); + BOOST_CHECK(cpid.IsZero() == true); + + // Too short: 31 characters + cpid = NN::Cpid::Parse("0001020304050607080910111213141"); + BOOST_CHECK(cpid.IsZero() == true); + + // Too long: 33 characters + cpid = NN::Cpid::Parse("000102030405060708091011121314155"); + BOOST_CHECK(cpid.IsZero() == true); + + // Non-hex character at the end: + cpid = NN::Cpid::Parse("0001020304050607080910111213141Z"); + BOOST_CHECK(cpid.IsZero() == true); +} + +BOOST_AUTO_TEST_CASE(it_hashes_an_internal_cpid_and_email_to_make_a_public_cpid) +{ + std::vector expected { + 0x56, 0xd4, 0x2d, 0x93, 0xc5, 0x0c, 0xfa, 0xd6, + 0x5e, 0x13, 0x0d, 0xea, 0x34, 0x2a, 0xa0, 0xf9, + }; + + NN::Cpid cpid = NN::Cpid::Hash( + "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", // internal CPID + "test@example.com"); + + std::vector bytes(cpid.Raw().begin(), cpid.Raw().end()); + + BOOST_CHECK(bytes == expected); +} + +BOOST_AUTO_TEST_CASE(it_refuses_to_hash_an_invalid_internal_cpid_or_email) +{ + NN::Cpid cpid = NN::Cpid::Hash("", "test@example.com"); + + BOOST_CHECK(cpid.IsZero() == true); + + cpid = NN::Cpid::Hash("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", ""); + + BOOST_CHECK(cpid.IsZero() == true); + + cpid = NN::Cpid::Hash("", ""); + + BOOST_CHECK(cpid.IsZero() == true); +} + +BOOST_AUTO_TEST_CASE(it_compares_another_cpid_for_equality) +{ + NN::Cpid cpid1(std::vector { + 0x56, 0xd4, 0x2d, 0x93, 0xc5, 0x0c, 0xfa, 0xd6, + 0x5e, 0x13, 0x0d, 0xea, 0x34, 0x2a, 0xa0, 0xf9, + }); + + NN::Cpid cpid2(std::vector { + 0x56, 0xd4, 0x2d, 0x93, 0xc5, 0x0c, 0xfa, 0xd6, + 0x5e, 0x13, 0x0d, 0xea, 0x34, 0x2a, 0xa0, 0xf9, + }); + + BOOST_CHECK(cpid1 == cpid2); + BOOST_CHECK(cpid1 != NN::Cpid()); +} + +BOOST_AUTO_TEST_CASE(it_compares_another_cpid_by_relative_greatness) +{ + NN::Cpid cpid1(std::vector { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + }); + + NN::Cpid cpid2(std::vector { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + }); + + BOOST_CHECK(cpid1 < cpid2); + BOOST_CHECK(cpid2 > cpid1); + + NN::Cpid cpid3(std::vector { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + }); + + BOOST_CHECK(cpid1 < cpid3); + BOOST_CHECK(cpid3 > cpid1); + BOOST_CHECK(NN::Cpid() < cpid3); + BOOST_CHECK(cpid3 > NN::Cpid()); + + NN::Cpid cpid4(std::vector { + 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }); + + NN::Cpid cpid5(std::vector { + 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }); + + BOOST_CHECK(cpid4 < cpid5); + BOOST_CHECK(cpid5 > cpid4); + + NN::Cpid cpid6(std::vector { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, + }); + + BOOST_CHECK(cpid6 < cpid5); + BOOST_CHECK(cpid5 > cpid6); + + BOOST_CHECK((cpid1 < cpid1) == false); + BOOST_CHECK((cpid1 > cpid1) == false); + BOOST_CHECK((NN::Cpid() < NN::Cpid()) == false); + BOOST_CHECK((NN::Cpid() > NN::Cpid()) == false); +} + +BOOST_AUTO_TEST_CASE(it_determines_whether_a_cpid_is_all_zeros) +{ + NN::Cpid cpid; + + BOOST_CHECK(cpid.IsZero() == true); + + cpid = NN::Cpid::Parse("00010203040506070809101112131415"); + + BOOST_CHECK(cpid.IsZero() == false); +} + +BOOST_AUTO_TEST_CASE(it_determines_whether_a_cpid_matches_an_internal_cpid) +{ + NN::Cpid cpid(std::vector { + 0x56, 0xd4, 0x2d, 0x93, 0xc5, 0x0c, 0xfa, 0xd6, + 0x5e, 0x13, 0x0d, 0xea, 0x34, 0x2a, 0xa0, 0xf9, + }); + + std::string internal_cpid = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; + std::string email = "test@example.com"; + + BOOST_CHECK(cpid.Matches(internal_cpid, email) == true); + BOOST_CHECK(cpid.Matches(internal_cpid, "invalid") == false); + BOOST_CHECK(cpid.Matches("invalid", email) == false); + + // An invalid CPID should not match: + BOOST_CHECK(NN::Cpid().Matches(internal_cpid, email) == false); +} + +BOOST_AUTO_TEST_CASE(it_represents_itself_as_a_string) +{ + NN::Cpid cpid(std::vector { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + }); + + BOOST_CHECK(cpid.ToString() == "00010203040506070809101112131415"); +} + +BOOST_AUTO_TEST_CASE(it_serializes_to_a_stream) +{ + std::vector expected { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + }; + + NN::Cpid cpid(expected); + + BOOST_CHECK(cpid.GetSerializeSize(SER_NETWORK, 1) == 16); + + CDataStream stream(SER_NETWORK, 1); + stream << cpid; + std::vector output(stream.begin(), stream.end()); + + BOOST_CHECK(output == expected); +} + +BOOST_AUTO_TEST_CASE(it_deserializes_from_a_stream) +{ + NN::Cpid cpid; + + std::vector expected { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + }; + + CDataStream stream(expected, SER_NETWORK, 1); + stream >> cpid; + std::vector bytes(cpid.Raw().begin(), cpid.Raw().end()); + + BOOST_CHECK(bytes == expected); +} + +BOOST_AUTO_TEST_CASE(it_is_hashable_to_key_a_lookup_map) +{ + NN::Cpid cpid(std::vector { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + }); + + std::hash hasher; + + // 0x0706050403020100 + 0x1514131211100908 (CPID halves, little endian) + BOOST_CHECK(hasher(cpid) == 2024957465561532936); +} + +BOOST_AUTO_TEST_SUITE_END() + +// ----------------------------------------------------------------------------- +// MiningId +// ----------------------------------------------------------------------------- + +BOOST_AUTO_TEST_SUITE(MiningId) + +BOOST_AUTO_TEST_CASE(it_initializes_to_an_invalid_mining_id) +{ + NN::MiningId mining_id; + + BOOST_CHECK(mining_id.Which() == NN::MiningId::Kind::INVALID); +} + +BOOST_AUTO_TEST_CASE(it_initializes_to_an_investor) +{ + NN::MiningId mining_id = NN::MiningId::ForInvestor(); + + BOOST_CHECK(mining_id.Which() == NN::MiningId::Kind::INVESTOR); +} + +BOOST_AUTO_TEST_CASE(it_initializes_to_the_provided_cpid) +{ + NN::Cpid expected(std::vector { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + }); + + NN::MiningId mining_id(expected); + + BOOST_CHECK(mining_id.Which() == NN::MiningId::Kind::CPID); + + if (const NN::CpidOption cpid = mining_id.TryCpid()) { + BOOST_CHECK(*cpid == expected); + } else { + BOOST_FAIL("MiningId variant does not contain the CPID."); + } +} + +BOOST_AUTO_TEST_CASE(it_parses_an_investor_mining_id) +{ + NN::MiningId mining_id = NN::MiningId::Parse("INVESTOR"); + + BOOST_CHECK(mining_id.Which() == NN::MiningId::Kind::INVESTOR); + + mining_id = NN::MiningId::Parse("investor"); + + BOOST_CHECK(mining_id.Which() == NN::MiningId::Kind::INVESTOR); +} + +BOOST_AUTO_TEST_CASE(it_parses_a_cpid_mining_id) +{ + std::string hex = "00010203040506070809101112131415"; + + NN::MiningId mining_id = NN::MiningId::Parse(hex); + + BOOST_CHECK(mining_id.Which() == NN::MiningId::Kind::CPID); + + NN::Cpid expected = NN::Cpid::Parse(hex); + + if (const NN::CpidOption cpid = mining_id.TryCpid()) { + BOOST_CHECK(*cpid == expected); + + BOOST_CHECK((*cpid).Raw() == (std::array { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + })); + } else { + BOOST_FAIL("MiningId variant does not contain the CPID."); + } +} + +BOOST_AUTO_TEST_CASE(it_refuses_to_parse_an_invalid_cpid) +{ + // Empty: + NN::MiningId mining_id = NN::MiningId::Parse(""); + BOOST_CHECK(mining_id.Which() == NN::MiningId::Kind::INVALID); + + // Bad investor: + mining_id = NN::MiningId::Parse("INVESTOR "); + BOOST_CHECK(mining_id.Which() == NN::MiningId::Kind::INVALID); + + // Too short: 31 characters + mining_id = NN::MiningId::Parse("0001020304050607080910111213141"); + BOOST_CHECK(mining_id.Which() == NN::MiningId::Kind::INVALID); + + // Too long: 33 characters + mining_id = NN::MiningId::Parse("000102030405060708091011121314155"); + BOOST_CHECK(mining_id.Which() == NN::MiningId::Kind::INVALID); + + // Non-hex character at the end: + mining_id = NN::MiningId::Parse("0001020304050607080910111213141Z"); + BOOST_CHECK(mining_id.Which() == NN::MiningId::Kind::INVALID); +} + +BOOST_AUTO_TEST_CASE(it_compares_another_mining_id_for_equality) +{ + NN::MiningId mining_id1(NN::Cpid(std::vector { + 0x56, 0xd4, 0x2d, 0x93, 0xc5, 0x0c, 0xfa, 0xd6, + 0x5e, 0x13, 0x0d, 0xea, 0x34, 0x2a, 0xa0, 0xf9, + })); + + NN::MiningId mining_id2(NN::Cpid(std::vector { + 0x56, 0xd4, 0x2d, 0x93, 0xc5, 0x0c, 0xfa, 0xd6, + 0x5e, 0x13, 0x0d, 0xea, 0x34, 0x2a, 0xa0, 0xf9, + })); + + BOOST_CHECK(NN::MiningId() == NN::MiningId()); + BOOST_CHECK(NN::MiningId::ForInvestor() == NN::MiningId::ForInvestor()); + + BOOST_CHECK(mining_id1 == mining_id2); + BOOST_CHECK(mining_id1 != NN::MiningId()); + BOOST_CHECK(mining_id1 != NN::MiningId::ForInvestor()); + BOOST_CHECK(mining_id1 != NN::MiningId(NN::Cpid())); +} + +BOOST_AUTO_TEST_CASE(it_compares_another_cpid_for_equality) +{ + NN::MiningId mining_id(NN::Cpid(std::vector { + 0x56, 0xd4, 0x2d, 0x93, 0xc5, 0x0c, 0xfa, 0xd6, + 0x5e, 0x13, 0x0d, 0xea, 0x34, 0x2a, 0xa0, 0xf9, + })); + + NN::Cpid cpid(std::vector { + 0x56, 0xd4, 0x2d, 0x93, 0xc5, 0x0c, 0xfa, 0xd6, + 0x5e, 0x13, 0x0d, 0xea, 0x34, 0x2a, 0xa0, 0xf9, + }); + + BOOST_CHECK(mining_id == cpid); + BOOST_CHECK(mining_id != NN::Cpid()); +} + +BOOST_AUTO_TEST_CASE(it_determines_which_mining_id_variant_it_exhibits) +{ + NN::MiningId mining_id; + BOOST_CHECK(mining_id.Which() == NN::MiningId::Kind::INVALID); + + mining_id = NN::MiningId::ForInvestor(); + BOOST_CHECK(mining_id.Which() == NN::MiningId::Kind::INVESTOR); + + mining_id = NN::MiningId(NN::Cpid()); + BOOST_CHECK(mining_id.Which() == NN::MiningId::Kind::CPID); +} + +BOOST_AUTO_TEST_CASE(it_provides_guarded_access_to_stored_cpid_values) +{ + NN::Cpid expected(std::vector { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + }); + + NN::MiningId mining_id(expected); + + // To prevent mistakes, client code must check that a MiningId variant + // actually contains a CPID before using it: + if (const NN::CpidOption cpid = mining_id.TryCpid()) { + BOOST_CHECK(*cpid == expected); + } else { + BOOST_FAIL("MiningId variant does not contain the CPID."); + } + + mining_id = NN::MiningId(); + if (const NN::CpidOption cpid = mining_id.TryCpid()) { + BOOST_FAIL("MiningId variant should not contain the CPID."); + } + + mining_id = NN::MiningId::ForInvestor(); + if (const NN::CpidOption cpid = mining_id.TryCpid()) { + BOOST_FAIL("MiningId variant should not contain the CPID."); + } +} + +BOOST_AUTO_TEST_CASE(it_represents_itself_as_a_string) +{ + BOOST_CHECK(NN::MiningId().ToString().empty() == true); + BOOST_CHECK(NN::MiningId::ForInvestor().ToString() == "INVESTOR"); + + NN::MiningId mining_id(NN::Cpid(std::vector { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + })); + + BOOST_CHECK(mining_id.ToString() == "00010203040506070809101112131415"); +} + +BOOST_AUTO_TEST_CASE(it_serializes_to_a_stream_for_invalid) +{ + NN::MiningId mining_id; + + BOOST_CHECK(mining_id.GetSerializeSize(SER_NETWORK, 1) == 1); + + CDataStream stream(SER_NETWORK, 1); + stream << mining_id; + + BOOST_CHECK(stream.size() == 1); + BOOST_CHECK(stream[0] == 0x00); // MiningId::Kind::INVALID +} + +BOOST_AUTO_TEST_CASE(it_serializes_to_a_stream_for_investor) +{ + NN::MiningId mining_id = NN::MiningId::ForInvestor(); + + BOOST_CHECK(mining_id.GetSerializeSize(SER_NETWORK, 1) == 1); + + CDataStream stream(SER_NETWORK, 1); + stream << mining_id; + + BOOST_CHECK(stream.size() == 1); + BOOST_CHECK(stream[0] == 0x01); // MiningId::Kind::INVESTOR +} + +BOOST_AUTO_TEST_CASE(it_serializes_to_a_stream_for_cpid) +{ + std::vector expected { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + }; + + NN::MiningId mining_id{NN::Cpid(expected)}; + + BOOST_CHECK(mining_id.GetSerializeSize(SER_NETWORK, 1) == 17); + + CDataStream stream(SER_NETWORK, 1); + stream << mining_id; + std::vector output(stream.begin(), stream.end()); + + BOOST_CHECK(output[0] == 0x02); // MiningId::Kind::CPID + + BOOST_CHECK_EQUAL_COLLECTIONS( + ++output.begin(), // we already checked the first byte + output.end(), + expected.begin(), + expected.end()); +} + +BOOST_AUTO_TEST_CASE(it_deserializes_from_a_stream_for_invalid) +{ + // Initialize mining_id with a valid value to test invalid: + NN::MiningId mining_id = NN::MiningId::ForInvestor(); + + CDataStream stream(SER_NETWORK, 1); + stream << (unsigned char)0x00; // MiningId::Kind::INVALID + stream >> mining_id; + + BOOST_CHECK(mining_id.Which() == NN::MiningId::Kind::INVALID); +} + +BOOST_AUTO_TEST_CASE(it_deserializes_from_a_stream_for_investor) +{ + NN::MiningId mining_id; + + CDataStream stream(SER_NETWORK, 1); + stream << (unsigned char)0x01; // MiningId::Kind::INVESTOR + stream >> mining_id; + + BOOST_CHECK(mining_id.Which() == NN::MiningId::Kind::INVESTOR); +} + +BOOST_AUTO_TEST_CASE(it_deserializes_from_a_stream_for_cpid) +{ + NN::MiningId mining_id; + + NN::Cpid expected(std::vector { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + }); + + CDataStream stream(SER_NETWORK, 1); + stream << (unsigned char)0x02; // MiningId::Kind::CPID + stream << expected; + stream >> mining_id; + + BOOST_CHECK(mining_id.Which() == NN::MiningId::Kind::CPID); + + if (const boost::optional cpid = mining_id.TryCpid()) { + BOOST_CHECK(*cpid == expected); + } else { + BOOST_FAIL("MiningId variant does not contain the CPID."); + } +} + +BOOST_AUTO_TEST_SUITE_END() diff --git a/src/test/neuralnet/researcher_tests.cpp b/src/test/neuralnet/researcher_tests.cpp new file mode 100644 index 0000000000..2ebe553701 --- /dev/null +++ b/src/test/neuralnet/researcher_tests.cpp @@ -0,0 +1,1243 @@ +#include "appcache.h" +#include "neuralnet/researcher.h" +#include "util.h" + +#include +#include +#include +#include +#include + +namespace { +//! +//! \brief Attempt to locate the test data directory that contains a BOINC +//! client_state.xml stub file. +//! +//! \return Path to the test data directory containing the stub. +//! +boost::filesystem::path ResolveStubDir() +{ + const boost::filesystem::path cwd = boost::filesystem::current_path(); + const boost::filesystem::path data_dir("src/test/data"); + const std::string stub = "client_state.xml"; + + // Test harness run from subdirectory of repo root (src/, build/, etc.): + if (boost::filesystem::exists(cwd / ".." / data_dir / stub)) { + return boost::filesystem::canonical(cwd / ".." / data_dir); + } + + // Test harness run from platform-specific build sub-directory + // (ex: build/gridcoin-x86_64-unknown-linux-gnu/) + if (boost::filesystem::exists(cwd / ".." / ".." / data_dir / stub)) { + return boost::filesystem::canonical(cwd / ".." / ".." / data_dir); + } + + // Test harness run from sub-directory in a platform-specific build sub- + // directory (Travis; ex: build/gridcoin-x86_64-unknown-linux-gnu/src) + if (boost::filesystem::exists(cwd / ".." / ".." / ".." / data_dir / stub)) { + return boost::filesystem::canonical(cwd / ".." / ".." / ".." / data_dir); + } + + // Test harness run from test directory (src/test/): + if (boost::filesystem::exists(cwd / "data" / stub)) { + return cwd / "data"; + } + + // Test harness run from repo root: + return cwd / data_dir; +} + +//! +//! \brief Precondition that skips tests that read a client_state.xml stub from +//! disk if it does not exist. +//! +boost::test_tools::assertion_result ClientStateStubExists(boost::unit_test::test_unit_id) +{ + if (boost::filesystem::exists(ResolveStubDir() / "client_state.xml")) { + return true; + } + + boost::test_tools::assertion_result result(false); + result.message() << "client_state.xml test stub not found"; + + return result; +} +} // anonymous namespace + +// ----------------------------------------------------------------------------- +// MiningProject +// ----------------------------------------------------------------------------- + +BOOST_AUTO_TEST_SUITE(MiningProject) + +BOOST_AUTO_TEST_CASE(it_initializes_with_project_data) +{ + NN::Cpid expected(std::vector { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + }); + + NN::MiningProject project("project name", expected, "team name"); + + BOOST_CHECK(project.m_name == "project name"); + BOOST_CHECK(project.m_cpid == expected); + BOOST_CHECK(project.m_team == "team name"); + BOOST_CHECK(project.m_error == NN::MiningProject::Error::NONE); +} + +BOOST_AUTO_TEST_CASE(it_parses_a_project_xml_string) +{ + SetArgument("email", "researcher@example.com"); + + // The XML string contains a subset of data found within a element + // from BOINC's client_state.xml file: + // + NN::MiningProject project = NN::MiningProject::Parse( + R"XML( + + Project Name + Team Name + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + f5d8234352e5a5ae3915debba7258294 + + )XML"); + + NN::Cpid cpid = NN::Cpid::Parse("f5d8234352e5a5ae3915debba7258294"); + + BOOST_CHECK(project.m_name == "project name"); + BOOST_CHECK(project.m_cpid == cpid); + BOOST_CHECK(project.m_team == "team name"); + BOOST_CHECK(project.m_error == NN::MiningProject::Error::NONE); + + // Clean up: + SetArgument("email", ""); +} + +BOOST_AUTO_TEST_CASE(it_normalizes_project_names) +{ + NN::MiningProject project("Project_NAME", NN::Cpid(), "team name"); + + BOOST_CHECK(project.m_name == "project name"); +} + +BOOST_AUTO_TEST_CASE(it_converts_team_names_to_lowercase) +{ + NN::MiningProject project("project name", NN::Cpid(), "TEAM NAME"); + + BOOST_CHECK(project.m_team == "team name"); +} + +BOOST_AUTO_TEST_CASE(it_determines_whether_a_project_is_eligible) +{ + // Eligibility is determined by the absense of an error set while loading + // the project from BOINC's client_state.xml file. + + NN::MiningProject project("project name", NN::Cpid(), "team name"); + + BOOST_CHECK(project.Eligible() == true); + + project.m_error = NN::MiningProject::Error::INVALID_TEAM; + + BOOST_CHECK(project.Eligible() == false); +} + +BOOST_AUTO_TEST_CASE(it_formats_error_messages_for_display) +{ + NN::MiningProject project("project name", NN::Cpid(), "team name"); + + BOOST_CHECK(project.ErrorMessage().empty() == true); + + project.m_error = NN::MiningProject::Error::INVALID_TEAM; + + BOOST_CHECK(project.ErrorMessage().empty() == false); +} + +BOOST_AUTO_TEST_SUITE_END() + +// ----------------------------------------------------------------------------- +// MiningProjectMap +// ----------------------------------------------------------------------------- + +BOOST_AUTO_TEST_SUITE(MiningProjectMap) + +BOOST_AUTO_TEST_CASE(it_initializes_to_an_empty_collection) +{ + NN::MiningProjectMap projects; + + BOOST_CHECK(projects.empty() == true); +} + +BOOST_AUTO_TEST_CASE(it_is_iterable) +{ + NN::MiningProjectMap projects; + + projects.Set(NN::MiningProject("project name 1", NN::Cpid(), "team name")); + projects.Set(NN::MiningProject("project name 2", NN::Cpid(), "team name")); + + auto counter = 0; + + for (auto const& project : projects) { + BOOST_CHECK(boost::starts_with(project.first, "project name") == true); + counter++; + } + + BOOST_CHECK(counter == 2); +} + +BOOST_AUTO_TEST_CASE(it_parses_a_set_of_project_xml_sections) +{ + // External CPIDs generated with this email address: + SetArgument("email", "researcher@example.com"); + + NN::MiningProjectMap projects = NN::MiningProjectMap::Parse({ + R"XML( + + Project Name 1 + Gridcoin + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + f5d8234352e5a5ae3915debba7258294 + + )XML", + R"XML( + + Project Name 2 + Gridcoin + YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY + 8edc235ddcecf9c416a5f9417d56f4fd + + )XML", + }); + + NN::Cpid cpid_1 = NN::Cpid::Parse("f5d8234352e5a5ae3915debba7258294"); + NN::Cpid cpid_2 = NN::Cpid::Parse("8edc235ddcecf9c416a5f9417d56f4fd"); + + BOOST_CHECK(projects.size() == 2); + + if (const NN::ProjectOption project1 = projects.Try("project name 1")) { + BOOST_CHECK(project1->m_name == "project name 1"); + BOOST_CHECK(project1->m_cpid == cpid_1); + BOOST_CHECK(project1->m_team == "gridcoin"); + BOOST_CHECK(project1->m_error == NN::MiningProject::Error::NONE); + BOOST_CHECK(project1->Eligible() == true); + } else { + BOOST_FAIL("Project 1 does not exist in the mining project map."); + } + + if (const NN::ProjectOption project2 = projects.Try("project name 2")) { + BOOST_CHECK(project2->m_name == "project name 2"); + BOOST_CHECK(project2->m_cpid == cpid_2); + BOOST_CHECK(project2->m_team == "gridcoin"); + BOOST_CHECK(project2->m_error == NN::MiningProject::Error::NONE); + BOOST_CHECK(project2->Eligible() == true); + } else { + BOOST_FAIL("Project 2 does not exist in the mining project map."); + } + + // Clean up: + SetArgument("email", ""); + NN::Researcher::Reload(NN::MiningProjectMap()); +} + +BOOST_AUTO_TEST_CASE(it_skips_loading_project_xml_with_empty_project_names) +{ + NN::MiningProjectMap projects = NN::MiningProjectMap::Parse({ + // Empty element: + R"XML( + + + Gridcoin + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + f5d8234352e5a5ae3915debba7258294 + + )XML", + // Missing element: + R"XML( + + Gridcoin + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + f5d8234352e5a5ae3915debba7258294 + + )XML", + }); + + // No valid projects loaded; mining ID should remain INVESTOR: + BOOST_CHECK(projects.empty() == true); +} + +BOOST_AUTO_TEST_CASE(it_counts_the_number_of_projects) +{ + NN::MiningProjectMap projects; + + BOOST_CHECK(projects.size() == 0); + + projects.Set(NN::MiningProject("project name 1", NN::Cpid(), "team name")); + projects.Set(NN::MiningProject("project name 2", NN::Cpid(), "team name")); + + BOOST_CHECK(projects.size() == 2); +} + +BOOST_AUTO_TEST_CASE(it_indicates_whether_it_contains_any_projects) +{ + NN::MiningProjectMap projects; + + BOOST_CHECK(projects.empty() == true); + + projects.Set(NN::MiningProject("project name", NN::Cpid(), "team name")); + + BOOST_CHECK(projects.empty() == false); +} + +BOOST_AUTO_TEST_CASE(it_fetches_a_project_by_name) +{ + NN::MiningProjectMap projects; + + projects.Set(NN::MiningProject("project name", NN::Cpid(), "team name")); + + BOOST_CHECK(projects.Try("project name").value().m_name == "project name"); + BOOST_CHECK(projects.Try("nonexistent") == boost::none); +} + +BOOST_AUTO_TEST_CASE(it_does_not_overwrite_projects_with_the_same_name) +{ + NN::MiningProjectMap projects; + + projects.Set(NN::MiningProject("project name", NN::Cpid(), "team name 1")); + projects.Set(NN::MiningProject("project name", NN::Cpid(), "team name 2")); + + BOOST_CHECK(projects.Try("project name").value().m_team == "team name 1"); +} + +BOOST_AUTO_TEST_CASE(it_applies_a_provided_team_whitelist) +{ + NN::MiningProjectMap projects; + + projects.Set(NN::MiningProject("project 1", NN::Cpid(), "gridcoin")); + projects.Set(NN::MiningProject("project 2", NN::Cpid(), "team 1")); + projects.Set(NN::MiningProject("project 3", NN::Cpid(), "team 2")); + + // Before applying a whitelist, all projects are eligible: + + if (const NN::ProjectOption project1 = projects.Try("project 1")) { + BOOST_CHECK(project1->m_team == "gridcoin"); + BOOST_CHECK(project1->m_error == NN::MiningProject::Error::NONE); + BOOST_CHECK(project1->Eligible() == true); + } else { + BOOST_FAIL("Project 1 does not exist in the mining project map."); + } + + if (const NN::ProjectOption project2 = projects.Try("project 2")) { + BOOST_CHECK(project2->m_team == "team 1"); + BOOST_CHECK(project2->m_error == NN::MiningProject::Error::NONE); + BOOST_CHECK(project2->Eligible() == true); + } else { + BOOST_FAIL("Project 2 does not exist in the mining project map."); + } + + if (const NN::ProjectOption project3 = projects.Try("project 3")) { + BOOST_CHECK(project3->m_team == "team 2"); + BOOST_CHECK(project3->m_error == NN::MiningProject::Error::NONE); + BOOST_CHECK(project3->Eligible() == true); + } else { + BOOST_FAIL("Project 3 does not exist in the mining project map."); + } + + // Applying this whitelist disables eligibility for project 1: + // + projects.ApplyTeamWhitelist({ "team 1", "team 2" }); + + if (const NN::ProjectOption project1 = projects.Try("project 1")) { + BOOST_CHECK(project1->m_team == "gridcoin"); + BOOST_CHECK(project1->m_error == NN::MiningProject::Error::INVALID_TEAM); + BOOST_CHECK(project1->Eligible() == false); + } else { + BOOST_FAIL("Project 1 does not exist in the mining project map."); + } + + if (const NN::ProjectOption project2 = projects.Try("project 2")) { + BOOST_CHECK(project2->m_team == "team 1"); + BOOST_CHECK(project2->m_error == NN::MiningProject::Error::NONE); + BOOST_CHECK(project2->Eligible() == true); + } else { + BOOST_FAIL("Project 2 does not exist in the mining project map."); + } + + if (const NN::ProjectOption project3 = projects.Try("project 3")) { + BOOST_CHECK(project3->m_team == "team 2"); + BOOST_CHECK(project3->m_error == NN::MiningProject::Error::NONE); + BOOST_CHECK(project3->Eligible() == true); + } else { + BOOST_FAIL("Project 3 does not exist in the mining project map."); + } + + // Applying an empty whitelist removes the team requirement: + // + projects.ApplyTeamWhitelist({ }); + + if (const NN::ProjectOption project1 = projects.Try("project 1")) { + BOOST_CHECK(project1->m_team == "gridcoin"); + BOOST_CHECK(project1->m_error == NN::MiningProject::Error::NONE); + BOOST_CHECK(project1->Eligible() == true); + } else { + BOOST_FAIL("Project 1 does not exist in the mining project map."); + } + + if (const NN::ProjectOption project2 = projects.Try("project 2")) { + BOOST_CHECK(project2->m_team == "team 1"); + BOOST_CHECK(project2->m_error == NN::MiningProject::Error::NONE); + BOOST_CHECK(project2->Eligible() == true); + } else { + BOOST_FAIL("Project 2 does not exist in the mining project map."); + } + + if (const NN::ProjectOption project3 = projects.Try("project 3")) { + BOOST_CHECK(project3->m_team == "team 2"); + BOOST_CHECK(project3->m_error == NN::MiningProject::Error::NONE); + BOOST_CHECK(project3->Eligible() == true); + } else { + BOOST_FAIL("Project 3 does not exist in the mining project map."); + } +} + +BOOST_AUTO_TEST_SUITE_END() + +// ----------------------------------------------------------------------------- +// Researcher +// ----------------------------------------------------------------------------- + +BOOST_AUTO_TEST_SUITE(Researcher) + +BOOST_AUTO_TEST_CASE(it_initializes_to_an_investor) +{ + NN::Researcher researcher; + + BOOST_CHECK(researcher.Id().Which() == NN::MiningId::Kind::INVESTOR); + BOOST_CHECK(researcher.Projects().empty() == true); +} + +BOOST_AUTO_TEST_CASE(it_initializes_with_researcher_context_data) +{ + NN::MiningProjectMap expected; + + expected.Set(NN::MiningProject("project name", NN::Cpid(), "team name")); + + NN::Researcher researcher(NN::Cpid(), expected); + + BOOST_CHECK(researcher.Id().Which() == NN::MiningId::Kind::CPID); + BOOST_CHECK(researcher.Projects().size() == 1); +} + +BOOST_AUTO_TEST_CASE(it_converts_a_configured_email_address_to_lowercase) +{ + SetArgument("email", "RESEARCHER@EXAMPLE.COM"); + + BOOST_CHECK(NN::Researcher::Email() == "researcher@example.com"); + + // Clean up: + SetArgument("email", ""); +} + +BOOST_AUTO_TEST_CASE(it_provides_access_to_a_global_researcher_singleton) +{ + NN::ResearcherPtr researcher(NN::Researcher::Get()); + + BOOST_CHECK(researcher->Id() == NN::MiningId::ForInvestor()); +} + +BOOST_AUTO_TEST_CASE(it_determines_whether_a_wallet_is_eligible_for_rewards) +{ + NN::Researcher researcher; + + BOOST_CHECK(researcher.Eligible() == false); + BOOST_CHECK(researcher.IsInvestor() == true); + + // A zero-value CPID is technically a valid CPID: + researcher = NN::Researcher(NN::Cpid(), NN::MiningProjectMap()); + + BOOST_CHECK(researcher.Eligible() == true); + BOOST_CHECK(researcher.IsInvestor() == false); +} + +BOOST_AUTO_TEST_CASE(it_provides_an_overall_status_of_the_reseracher_context) +{ + NN::Researcher researcher; + + BOOST_CHECK(researcher.Status() == NN::ResearcherStatus::INVESTOR); + + NN::MiningProjectMap projects; + projects.Set(NN::MiningProject("ineligible", NN::Cpid(), "team name")); + + researcher = NN::Researcher(NN::MiningId::ForInvestor(), projects); + + // Has projects but none eligible (investor): + BOOST_CHECK(researcher.Status() == NN::ResearcherStatus::NO_PROJECTS); + + researcher = NN::Researcher(NN::Cpid(), std::move(projects)); + + BOOST_CHECK(researcher.Status() == NN::ResearcherStatus::ACTIVE); +} + +BOOST_AUTO_TEST_CASE(it_parses_project_xml_to_a_global_researcher_singleton) +{ + // External CPIDs generated with this email address: + SetArgument("email", "researcher@example.com"); + + NN::Researcher::Reload(NN::MiningProjectMap::Parse({ + R"XML( + + Project Name 1 + Gridcoin + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + f5d8234352e5a5ae3915debba7258294 + + )XML", + R"XML( + + Project Name 2 + Gridcoin + YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY + 8edc235ddcecf9c416a5f9417d56f4fd + + )XML", + })); + + NN::Cpid cpid_1 = NN::Cpid::Parse("f5d8234352e5a5ae3915debba7258294"); + NN::Cpid cpid_2 = NN::Cpid::Parse("8edc235ddcecf9c416a5f9417d56f4fd"); + + // Primary CPID is selected from the last valid CPID loaded: + BOOST_CHECK(NN::Researcher::Get()->Id() == cpid_2); + + const NN::MiningProjectMap& projects = NN::Researcher::Get()->Projects(); + BOOST_CHECK(projects.size() == 2); + + if (const NN::ProjectOption project1 = projects.Try("project name 1")) { + BOOST_CHECK(project1->m_name == "project name 1"); + BOOST_CHECK(project1->m_cpid == cpid_1); + BOOST_CHECK(project1->m_team == "gridcoin"); + BOOST_CHECK(project1->m_error == NN::MiningProject::Error::NONE); + BOOST_CHECK(project1->Eligible() == true); + } else { + BOOST_FAIL("Project 1 does not exist in the mining project map."); + } + + if (const NN::ProjectOption project2 = projects.Try("project name 2")) { + BOOST_CHECK(project2->m_name == "project name 2"); + BOOST_CHECK(project2->m_cpid == cpid_2); + BOOST_CHECK(project2->m_team == "gridcoin"); + BOOST_CHECK(project2->m_error == NN::MiningProject::Error::NONE); + BOOST_CHECK(project2->Eligible() == true); + } else { + BOOST_FAIL("Project 2 does not exist in the mining project map."); + } + + // Clean up: + SetArgument("email", ""); + NN::Researcher::Reload(NN::MiningProjectMap()); +} + +BOOST_AUTO_TEST_CASE(it_looks_up_loaded_boinc_projects_by_name) +{ + // External CPIDs generated with this email address: + SetArgument("email", "researcher@example.com"); + + NN::Researcher::Reload(NN::MiningProjectMap::Parse({ + R"XML( + + Name + Gridcoin + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + f5d8234352e5a5ae3915debba7258294 + + )XML", + })); + + NN::Cpid cpid = NN::Cpid::Parse("f5d8234352e5a5ae3915debba7258294"); + + const NN::ProjectOption project = NN::Researcher::Get()->Project("name"); + + if (project) { + BOOST_CHECK(project->m_name == "name"); + BOOST_CHECK(project->m_cpid == cpid); + BOOST_CHECK(project->m_team == "gridcoin"); + BOOST_CHECK(project->m_error == NN::MiningProject::Error::NONE); + BOOST_CHECK(project->Eligible() == true); + } else { + BOOST_FAIL("Project does not exist in the mining project map."); + } + + // Clean up: + SetArgument("email", ""); + NN::Researcher::Reload(NN::MiningProjectMap()); +} + +BOOST_AUTO_TEST_CASE(it_resets_to_investor_mode_when_parsing_no_projects) +{ + NN::Researcher::Reload(NN::MiningProjectMap()); + + BOOST_CHECK(NN::Researcher::Get()->Id() == NN::MiningId::ForInvestor()); + BOOST_CHECK(NN::Researcher::Get()->Projects().empty() == true); +} + +BOOST_AUTO_TEST_CASE(it_tags_invalid_projects_with_errors_when_parsing_xml) +{ + // External CPIDs generated with this email address: + SetArgument("email", "researcher@example.com"); + + NN::Researcher::Reload(NN::MiningProjectMap::Parse({ + // Required team mismatch: + R"XML( + + Project Name 1 + Not Gridcoin + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + f5d8234352e5a5ae3915debba7258294 + + )XML", + // element missing: + R"XML( + + Project Name 2 + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + f5d8234352e5a5ae3915debba7258294 + + )XML", + // Malformed external CPID: + R"XML( + + Project Name 3 + Gridcoin + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + invalid + + )XML", + // element missing: + R"XML( + + Project Name 4 + Gridcoin + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + + )XML", + // Mismatched external CPID to internal CPID/email address: + R"XML( + + Project Name 5 + Gridcoin + invalid + f5d8234352e5a5ae3915debba7258294 + + )XML", + // element missing: + R"XML( + + Project Name 6 + Gridcoin + f5d8234352e5a5ae3915debba7258294 + + )XML", + })); + + NN::Cpid cpid = NN::Cpid::Parse("f5d8234352e5a5ae3915debba7258294"); + + // No valid projects loaded; mining ID should remain INVESTOR: + BOOST_CHECK(NN::Researcher::Get()->Id() == NN::MiningId::ForInvestor()); + + const NN::MiningProjectMap& projects = NN::Researcher::Get()->Projects(); + BOOST_CHECK(projects.size() == 6); + + if (const NN::ProjectOption project1 = projects.Try("project name 1")) { + BOOST_CHECK(project1->m_name == "project name 1"); + BOOST_CHECK(project1->m_cpid == cpid); + BOOST_CHECK(project1->m_team == "not gridcoin"); + BOOST_CHECK(project1->m_error == NN::MiningProject::Error::INVALID_TEAM); + BOOST_CHECK(project1->Eligible() == false); + } else { + BOOST_FAIL("Project 1 does not exist in the mining project map."); + } + + if (const NN::ProjectOption project2 = projects.Try("project name 2")) { + BOOST_CHECK(project2->m_name == "project name 2"); + BOOST_CHECK(project2->m_cpid == cpid); + BOOST_CHECK(project2->m_team.empty() == true); + BOOST_CHECK(project2->m_error == NN::MiningProject::Error::INVALID_TEAM); + BOOST_CHECK(project2->Eligible() == false); + } else { + BOOST_FAIL("Project 2 does not exist in the mining project map."); + } + + if (const NN::ProjectOption project3 = projects.Try("project name 3")) { + BOOST_CHECK(project3->m_name == "project name 3"); + BOOST_CHECK(project3->m_cpid == NN::Cpid()); + BOOST_CHECK(project3->m_team == "gridcoin"); + BOOST_CHECK(project3->m_error == NN::MiningProject::Error::MALFORMED_CPID); + BOOST_CHECK(project3->Eligible() == false); + } else { + BOOST_FAIL("Project 3 does not exist in the mining project map."); + } + + if (const NN::ProjectOption project4 = projects.Try("project name 4")) { + BOOST_CHECK(project4->m_name == "project name 4"); + BOOST_CHECK(project4->m_cpid == NN::Cpid()); + BOOST_CHECK(project4->m_team == "gridcoin"); + BOOST_CHECK(project4->m_error == NN::MiningProject::Error::MALFORMED_CPID); + BOOST_CHECK(project4->Eligible() == false); + } else { + BOOST_FAIL("Project 4 does not exist in the mining project map."); + } + + if (const NN::ProjectOption project5 = projects.Try("project name 5")) { + BOOST_CHECK(project5->m_name == "project name 5"); + BOOST_CHECK(project5->m_cpid == cpid); + BOOST_CHECK(project5->m_team == "gridcoin"); + BOOST_CHECK(project5->m_error == NN::MiningProject::Error::MISMATCHED_CPID); + BOOST_CHECK(project5->Eligible() == false); + } else { + BOOST_FAIL("Project 5 does not exist in the mining project map."); + } + + if (const NN::ProjectOption project6 = projects.Try("project name 6")) { + BOOST_CHECK(project6->m_name == "project name 6"); + BOOST_CHECK(project6->m_cpid == cpid); + BOOST_CHECK(project6->m_team == "gridcoin"); + BOOST_CHECK(project6->m_error == NN::MiningProject::Error::MISMATCHED_CPID); + BOOST_CHECK(project6->Eligible() == false); + } else { + BOOST_FAIL("Project 6 does not exist in the mining project map."); + } + + // Clean up: + SetArgument("email", ""); + NN::Researcher::Reload(NN::MiningProjectMap()); +} + +BOOST_AUTO_TEST_CASE(it_skips_loading_project_xml_with_empty_project_names) +{ + NN::Researcher::Reload(NN::MiningProjectMap::Parse({ + // Empty element: + R"XML( + + + Gridcoin + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + f5d8234352e5a5ae3915debba7258294 + + )XML", + // Missing element: + R"XML( + + Gridcoin + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + f5d8234352e5a5ae3915debba7258294 + + )XML", + })); + + // No valid projects loaded; mining ID should remain INVESTOR: + BOOST_CHECK(NN::Researcher::Get()->Id() == NN::MiningId::ForInvestor()); + BOOST_CHECK(NN::Researcher::Get()->Projects().empty() == true); + + // Clean up: + NN::Researcher::Reload(NN::MiningProjectMap()); +} + +BOOST_AUTO_TEST_CASE(it_skips_the_team_requirement_when_set_by_protocol) +{ + // External CPIDs generated with this email address: + SetArgument("email", "researcher@example.com"); + + // Simulate a protocol control directive that disables the team requirement: + WriteCache(Section::PROTOCOL, "REQUIRE_TEAM_WHITELIST_MEMBERSHIP", "false", 1); + + NN::Researcher::Reload(NN::MiningProjectMap::Parse({ + R"XML( + + Project Name 1 + ! Not Gridcoin ! + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + f5d8234352e5a5ae3915debba7258294 + + )XML", + })); + + NN::Cpid cpid = NN::Cpid::Parse("f5d8234352e5a5ae3915debba7258294"); + + // Primary CPID is selected from the last valid CPID loaded: + BOOST_CHECK(NN::Researcher::Get()->Id() == cpid); + + const NN::MiningProjectMap& projects = NN::Researcher::Get()->Projects(); + BOOST_CHECK(projects.size() == 1); + + if (const NN::ProjectOption project1 = projects.Try("project name 1")) { + BOOST_CHECK(project1->m_name == "project name 1"); + BOOST_CHECK(project1->m_cpid == cpid); + BOOST_CHECK(project1->m_team == "! not gridcoin !"); + BOOST_CHECK(project1->m_error == NN::MiningProject::Error::NONE); + BOOST_CHECK(project1->Eligible() == true); + } else { + BOOST_FAIL("Project 1 does not exist in the mining project map."); + } + + // Clean up: + SetArgument("email", ""); + DeleteCache(Section::PROTOCOL, "REQUIRE_TEAM_WHITELIST_MEMBERSHIP"); + NN::Researcher::Reload(NN::MiningProjectMap()); +} + +BOOST_AUTO_TEST_CASE(it_applies_the_team_whitelist_when_set_by_the_protocol) +{ + // External CPIDs generated with this email address: + SetArgument("email", "researcher@example.com"); + + // Simulate a protocol control directive with whitelisted teams: + WriteCache(Section::PROTOCOL, "TEAM_WHITELIST", "team 1|Team 2", 1); + + NN::Researcher::Reload(NN::MiningProjectMap::Parse({ + R"XML( + + Project Name 1 + ! Not Gridcoin ! + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + f5d8234352e5a5ae3915debba7258294 + + )XML", + R"XML( + + Project Name 2 + Team 1 + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + f5d8234352e5a5ae3915debba7258294 + + )XML", + R"XML( + + Project Name 3 + Team 2 + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + f5d8234352e5a5ae3915debba7258294 + + )XML", + })); + + NN::Cpid cpid = NN::Cpid::Parse("f5d8234352e5a5ae3915debba7258294"); + + // Primary CPID is selected from the last valid CPID loaded: + BOOST_CHECK(NN::Researcher::Get()->Id() == cpid); + + const NN::MiningProjectMap& projects = NN::Researcher::Get()->Projects(); + BOOST_CHECK(projects.size() == 3); + + if (const NN::ProjectOption project1 = projects.Try("project name 1")) { + BOOST_CHECK(project1->m_name == "project name 1"); + BOOST_CHECK(project1->m_cpid == cpid); + BOOST_CHECK(project1->m_team == "! not gridcoin !"); + BOOST_CHECK(project1->m_error == NN::MiningProject::Error::INVALID_TEAM); + BOOST_CHECK(project1->Eligible() == false); + } else { + BOOST_FAIL("Project 1 does not exist in the mining project map."); + } + + if (const NN::ProjectOption project2 = projects.Try("project name 2")) { + BOOST_CHECK(project2->m_name == "project name 2"); + BOOST_CHECK(project2->m_cpid == cpid); + BOOST_CHECK(project2->m_team == "team 1"); + BOOST_CHECK(project2->m_error == NN::MiningProject::Error::NONE); + BOOST_CHECK(project2->Eligible() == true); + } else { + BOOST_FAIL("Project 2 does not exist in the mining project map."); + } + + if (const NN::ProjectOption project3 = projects.Try("project name 3")) { + BOOST_CHECK(project3->m_name == "project name 3"); + BOOST_CHECK(project3->m_cpid == cpid); + BOOST_CHECK(project3->m_team == "team 2"); + BOOST_CHECK(project3->m_error == NN::MiningProject::Error::NONE); + BOOST_CHECK(project3->Eligible() == true); + } else { + BOOST_FAIL("Project 3 does not exist in the mining project map."); + } + + // Clean up: + SetArgument("email", ""); + DeleteCache(Section::PROTOCOL, "TEAM_WHITELIST"); + NN::Researcher::Reload(NN::MiningProjectMap()); +} + +BOOST_AUTO_TEST_CASE(it_applies_the_team_requirement_dynamically) +{ + // External CPIDs generated with this email address: + SetArgument("email", "researcher@example.com"); + + NN::Researcher::Reload(NN::MiningProjectMap::Parse({ + R"XML( + + name + ! Not Gridcoin ! + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + f5d8234352e5a5ae3915debba7258294 + + )XML", + })); + + BOOST_CHECK(NN::Researcher::Get()->IsInvestor() == true); + + if (const NN::ProjectOption project = NN::Researcher::Get()->Project("name")) { + BOOST_CHECK(project->m_team == "! not gridcoin !"); + BOOST_CHECK(project->m_error == NN::MiningProject::Error::INVALID_TEAM); + BOOST_CHECK(project->Eligible() == false); + } else { + BOOST_FAIL("Project does not exist in the mining project map."); + } + + // Simulate a protocol control directive that disables the team requirement: + WriteCache(Section::PROTOCOL, "REQUIRE_TEAM_WHITELIST_MEMBERSHIP", "false", 1); + + // Rescan in-memory projects for previously-ineligible teams: + NN::Researcher::Refresh(); + + BOOST_CHECK(NN::Researcher::Get()->IsInvestor() == false); + + if (const NN::ProjectOption project = NN::Researcher::Get()->Project("name")) { + BOOST_CHECK(project->m_team == "! not gridcoin !"); + BOOST_CHECK(project->m_error == NN::MiningProject::Error::NONE); + BOOST_CHECK(project->Eligible() == true); + } else { + BOOST_FAIL("Project does not exist in the mining project map."); + } + + // Simulate a protocol control directive that enables the team requirement: + WriteCache(Section::PROTOCOL, "REQUIRE_TEAM_WHITELIST_MEMBERSHIP", "true", 1); + + // Rescan in-memory projects for previously-eligible teams: + NN::Researcher::Refresh(); + + BOOST_CHECK(NN::Researcher::Get()->IsInvestor() == true); + + if (const NN::ProjectOption project = NN::Researcher::Get()->Project("name")) { + BOOST_CHECK(project->m_team == "! not gridcoin !"); + BOOST_CHECK(project->m_error == NN::MiningProject::Error::INVALID_TEAM); + BOOST_CHECK(project->Eligible() == false); + } else { + BOOST_FAIL("Project does not exist in the mining project map."); + } + + // Clean up: + SetArgument("email", ""); + DeleteCache(Section::PROTOCOL, "REQUIRE_TEAM_WHITELIST_MEMBERSHIP"); + NN::Researcher::Reload(NN::MiningProjectMap()); +} + +BOOST_AUTO_TEST_CASE(it_applies_the_team_whitelist_dynamically) +{ + // External CPIDs generated with this email address: + SetArgument("email", "researcher@example.com"); + + NN::Researcher::Reload(NN::MiningProjectMap::Parse({ + R"XML( + + p1 + Gridcoin + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + f5d8234352e5a5ae3915debba7258294 + + )XML", + R"XML( + + p2 + Team 1 + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + f5d8234352e5a5ae3915debba7258294 + + )XML", + R"XML( + + p3 + Team 2 + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + f5d8234352e5a5ae3915debba7258294 + + )XML", + })); + + if (const NN::ProjectOption project = NN::Researcher::Get()->Project("p1")) { + BOOST_CHECK(project->m_team == "gridcoin"); + BOOST_CHECK(project->m_error == NN::MiningProject::Error::NONE); + BOOST_CHECK(project->Eligible() == true); + } else { + BOOST_FAIL("Project 1 does not exist in the mining project map."); + } + + if (const NN::ProjectOption project = NN::Researcher::Get()->Project("p2")) { + BOOST_CHECK(project->m_team == "team 1"); + BOOST_CHECK(project->m_error == NN::MiningProject::Error::INVALID_TEAM); + BOOST_CHECK(project->Eligible() == false); + } else { + BOOST_FAIL("Project 2 does not exist in the mining project map."); + } + + if (const NN::ProjectOption project = NN::Researcher::Get()->Project("p3")) { + BOOST_CHECK(project->m_team == "team 2"); + BOOST_CHECK(project->m_error == NN::MiningProject::Error::INVALID_TEAM); + BOOST_CHECK(project->Eligible() == false); + } else { + BOOST_FAIL("Project 3 does not exist in the mining project map."); + } + + // Simulate a protocol control directive that enables the team whitelist: + WriteCache(Section::PROTOCOL, "TEAM_WHITELIST", "Team 1|Team 2", 1); + + // Rescan in-memory projects for previously-ineligible teams: + NN::Researcher::Refresh(); + + if (const NN::ProjectOption project = NN::Researcher::Get()->Project("p1")) { + BOOST_CHECK(project->m_team == "gridcoin"); + BOOST_CHECK(project->m_error == NN::MiningProject::Error::INVALID_TEAM); + BOOST_CHECK(project->Eligible() == false); + } else { + BOOST_FAIL("Project 1 does not exist in the mining project map."); + } + + if (const NN::ProjectOption project = NN::Researcher::Get()->Project("p2")) { + BOOST_CHECK(project->m_team == "team 1"); + BOOST_CHECK(project->m_error == NN::MiningProject::Error::NONE); + BOOST_CHECK(project->Eligible() == true); + } else { + BOOST_FAIL("Project 2 does not exist in the mining project map."); + } + + if (const NN::ProjectOption project = NN::Researcher::Get()->Project("p3")) { + BOOST_CHECK(project->m_team == "team 2"); + BOOST_CHECK(project->m_error == NN::MiningProject::Error::NONE); + BOOST_CHECK(project->Eligible() == true); + } else { + BOOST_FAIL("Project 3 does not exist in the mining project map."); + } + + // Simulate a protocol control directive that disables the team whitelist: + WriteCache(Section::PROTOCOL, "TEAM_WHITELIST", "", 1); + + // Rescan in-memory projects for previously-eligible teams: + NN::Researcher::Refresh(); + + if (const NN::ProjectOption project = NN::Researcher::Get()->Project("p1")) { + BOOST_CHECK(project->m_team == "gridcoin"); + BOOST_CHECK(project->m_error == NN::MiningProject::Error::NONE); + BOOST_CHECK(project->Eligible() == true); + } else { + BOOST_FAIL("Project 1 does not exist in the mining project map."); + } + + if (const NN::ProjectOption project = NN::Researcher::Get()->Project("p2")) { + BOOST_CHECK(project->m_team == "team 1"); + BOOST_CHECK(project->m_error == NN::MiningProject::Error::INVALID_TEAM); + BOOST_CHECK(project->Eligible() == false); + } else { + BOOST_FAIL("Project 2 does not exist in the mining project map."); + } + + if (const NN::ProjectOption project = NN::Researcher::Get()->Project("p3")) { + BOOST_CHECK(project->m_team == "team 2"); + BOOST_CHECK(project->m_error == NN::MiningProject::Error::INVALID_TEAM); + BOOST_CHECK(project->Eligible() == false); + } else { + BOOST_FAIL("Project 3 does not exist in the mining project map."); + } + + // Clean up: + SetArgument("email", ""); + DeleteCache(Section::PROTOCOL, "TEAM_WHITELIST"); + NN::Researcher::Reload(NN::MiningProjectMap()); +} + +BOOST_AUTO_TEST_CASE(it_ignores_the_team_whitelist_without_the_team_requirement) +{ + // External CPIDs generated with this email address: + SetArgument("email", "researcher@example.com"); + + // Simulate a protocol control directive that disables the team requirement: + WriteCache(Section::PROTOCOL, "REQUIRE_TEAM_WHITELIST_MEMBERSHIP", "false", 1); + + NN::Researcher::Reload(NN::MiningProjectMap::Parse({ + R"XML( + + p1 + Gridcoin + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + f5d8234352e5a5ae3915debba7258294 + + )XML", + })); + + BOOST_CHECK(NN::Researcher::Get()->Eligible() == true); + + if (const NN::ProjectOption project = NN::Researcher::Get()->Project("p1")) { + BOOST_CHECK(project->m_team == "gridcoin"); + BOOST_CHECK(project->m_error == NN::MiningProject::Error::NONE); + BOOST_CHECK(project->Eligible() == true); + } else { + BOOST_FAIL("Project does not exist in the mining project map."); + } + + // Simulate a protocol control directive that enables the team whitelist: + WriteCache(Section::PROTOCOL, "TEAM_WHITELIST", "Team 1|Team 2", 1); + + // Rescan in-memory projects for previously-eligible teams: + NN::Researcher::Refresh(); + + BOOST_CHECK(NN::Researcher::Get()->Eligible() == true); + + if (const NN::ProjectOption project = NN::Researcher::Get()->Project("p1")) { + BOOST_CHECK(project->m_team == "gridcoin"); + BOOST_CHECK(project->m_error == NN::MiningProject::Error::NONE); + BOOST_CHECK(project->Eligible() == true); + } else { + BOOST_FAIL("Project does not exist in the mining project map."); + } + + // Simulate a protocol control directive that enables the team requirement + // (and thus, the whitelist): + WriteCache(Section::PROTOCOL, "REQUIRE_TEAM_WHITELIST_MEMBERSHIP", "true", 1); + + // Rescan in-memory projects for previously-eligible teams: + NN::Researcher::Refresh(); + + BOOST_CHECK(NN::Researcher::Get()->Eligible() == false); + + if (const NN::ProjectOption project = NN::Researcher::Get()->Project("p1")) { + BOOST_CHECK(project->m_team == "gridcoin"); + BOOST_CHECK(project->m_error == NN::MiningProject::Error::INVALID_TEAM); + BOOST_CHECK(project->Eligible() == false); + } else { + BOOST_FAIL("Project does not exist in the mining project map."); + } + + // Clean up: + SetArgument("email", ""); + DeleteCache(Section::PROTOCOL, "REQUIRE_TEAM_WHITELIST_MEMBERSHIP"); + DeleteCache(Section::PROTOCOL, "TEAM_WHITELIST"); + NN::Researcher::Reload(NN::MiningProjectMap()); +} + +// Note: the precondition skips this test case when the test harness cannot +// resolve the client_state.xml stub. Autotools' "make check" target counts +// this skip as a failure, so the test harness must be run from a supported +// path within the source tree. +// +BOOST_AUTO_TEST_CASE(it_parses_project_xml_from_a_client_state_xml_file, + *boost::unit_test::precondition(ClientStateStubExists)) +{ + // This test case reads a client_state.xml stub file in test/data/ and loads + // the projects and CPIDs into the global researcher context. + + // External CPIDs generated with this email address: + SetArgument("email", "researcher@example.com"); + + // Set the directory from which the wallet will open the client_state.xml. + // We point it at our test stub: + SetArgument("boincdatadir", ResolveStubDir().string() + "/"); + + // Read the stub and load projects and CPIDs into the researcher context: + NN::Researcher::Reload(); + + NN::Cpid cpid_1 = NN::Cpid::Parse("f5d8234352e5a5ae3915debba7258294"); + NN::Cpid cpid_2 = NN::Cpid::Parse("8edc235ddcecf9c416a5f9417d56f4fd"); + + // Primary CPID is selected from the last valid CPID loaded: + BOOST_CHECK(NN::Researcher::Get()->Id() == cpid_2); + + const NN::MiningProjectMap& projects = NN::Researcher::Get()->Projects(); + + // The stub contains 4 projects. One invalid project omits the project name + // so the wallet skips it: + BOOST_CHECK(projects.size() == 3); + + if (const NN::ProjectOption project1 = projects.Try("valid project 1")) { + BOOST_CHECK(project1->m_name == "valid project 1"); + BOOST_CHECK(project1->m_cpid == cpid_1); + BOOST_CHECK(project1->m_team == "gridcoin"); + BOOST_CHECK(project1->m_error == NN::MiningProject::Error::NONE); + BOOST_CHECK(project1->Eligible() == true); + } else { + BOOST_FAIL("Project 1 does not exist in the mining project map."); + } + + if (const NN::ProjectOption project2 = projects.Try("valid project 2")) { + BOOST_CHECK(project2->m_name == "valid project 2"); + BOOST_CHECK(project2->m_cpid == cpid_2); + BOOST_CHECK(project2->m_team == "gridcoin"); + BOOST_CHECK(project2->m_error == NN::MiningProject::Error::NONE); + BOOST_CHECK(project2->Eligible() == true); + } else { + BOOST_FAIL("Project 2 does not exist in the mining project map."); + } + + // The client_state.xml stub contains an invalid project for this test: + if (const NN::ProjectOption project3 = projects.Try("invalid project 3")) { + BOOST_CHECK(project3->m_name == "invalid project 3"); + BOOST_CHECK(project3->m_cpid == cpid_2); + BOOST_CHECK(project3->m_team == "gridcoin"); + BOOST_CHECK(project3->m_error == NN::MiningProject::Error::MISMATCHED_CPID); + BOOST_CHECK(project3->Eligible() == false); + } else { + BOOST_FAIL("Project 3 does not exist in the mining project map."); + } + + // Clean up: + SetArgument("email", ""); + SetArgument("boincdatadir", ""); + NN::Researcher::Reload(NN::MiningProjectMap()); +} + +// Note: the precondition skips this test case when the test harness cannot +// resolve the client_state.xml stub. Autotools' "make check" target counts +// this skip as a failure, so the test harness must be run from a supported +// path within the source tree. +// +BOOST_AUTO_TEST_CASE(it_resets_to_investor_mode_when_missing_email_address, + *boost::unit_test::precondition(ClientStateStubExists)) +{ + // We don't SetArgument("email", "...") for this test. + + // For a valid test, ensure that we can access the client_state.xml stub + // because it will also pass falsely if this is unset: + SetArgument("boincdatadir", ResolveStubDir().string() + "/"); + + NN::Researcher::Reload(); + + BOOST_CHECK(NN::Researcher::Get()->Id() == NN::MiningId::ForInvestor()); + BOOST_CHECK(NN::Researcher::Get()->Projects().empty() == true); + + // Clean up: + SetArgument("boincdatadir", ""); + NN::Researcher::Reload(NN::MiningProjectMap()); +} + +// Note: the precondition skips this test case when the test harness cannot +// resolve the client_state.xml stub. Autotools' "make check" target counts +// this skip as a failure, so the test harness must be run from a supported +// path within the source tree. +// +BOOST_AUTO_TEST_CASE(it_resets_to_investor_mode_when_explicitly_configured, + *boost::unit_test::precondition(ClientStateStubExists)) +{ + SetArgument("investor", "1"); + + // For a valid test, set the email address because it will also pass falsely + // if this is absent: + SetArgument("email", "researcher@example.com"); + + // For a valid test, ensure that we can access the client_state.xml stub + // because it will also pass falsely if this is unset: + SetArgument("boincdatadir", ResolveStubDir().string() + "/"); + + NN::Researcher::Reload(); + + BOOST_CHECK(NN::Researcher::Get()->Id() == NN::MiningId::ForInvestor()); + BOOST_CHECK(NN::Researcher::Get()->Projects().empty() == true); + + // Clean up: + SetArgument("investor", "0"); + SetArgument("email", ""); + SetArgument("boincdatadir", ""); + NN::Researcher::Reload(NN::MiningProjectMap()); +} + +BOOST_AUTO_TEST_SUITE_END() diff --git a/src/test/neuralnet/superblock_tests.cpp b/src/test/neuralnet/superblock_tests.cpp new file mode 100644 index 0000000000..4d29d1c0a7 --- /dev/null +++ b/src/test/neuralnet/superblock_tests.cpp @@ -0,0 +1,1611 @@ +#include "compat/endian.h" +#include "neuralnet/superblock.h" + +#include +#include +#include +#include +#include + +#include "test/data/superblock.txt.h" +#include "test/data/superblock_packed.bin.h" +#include "test/data/superblock_unpacked.txt.h" + +std::string ExtractXML(const std::string& XMLdata, const std::string& key, const std::string& key_end); +std::string ExtractValue(std::string data, std::string delimiter, int pos); + +namespace { +//! +//! \brief Legacy functions used to test backward compatibility with the old +//! superblock contract format. +//! +//! We may eventually remove these functions, so we'll redefine them here for +//! the test cases that check legacy support. +//! +struct Legacy +{ + struct BinaryResearcher + { + std::array cpid; + int16_t magnitude; + }; + + static std::string UnpackBinarySuperblock(std::string sBlock) + { + // 12-21-2015: R HALFORD: If the block is not binary, return the legacy format for backward compatibility + std::string sBinary = ExtractXML(sBlock,"",""); + if (sBinary.empty()) return sBlock; + + std::ostringstream stream; + stream << "" << ExtractXML(sBlock,"","") << "" + << "" << ExtractXML(sBlock,"","") << "" + << ""; + + // Binary data support structure: + // Each CPID consumes 16 bytes and 2 bytes for magnitude: (Except CPIDs + // with zero magnitude - the count of those is stored in XML node + // to save space) + // 1234567890123456MM + // MM = Magnitude stored as 2 bytes + // No delimiter between CPIDs, Step Rate = 18. + // CPID and magnitude are stored in big endian. + for (unsigned int x = 0; x < sBinary.length(); x += 18) + { + if(sBinary.length() - x < 18) + break; + + const BinaryResearcher* researcher = reinterpret_cast(sBinary.data() + x); + stream << HexStr(researcher->cpid.begin(), researcher->cpid.end()) << "," + << be16toh(researcher->magnitude) << ";"; + } + + // Append zero magnitude researchers so the beacon count matches + int num_zero_mag = atoi(ExtractXML(sBlock,"","")); + const std::string zero_entry("0,15;"); + for(int i=0; i"; + return stream.str(); + } + + static std::string PackBinarySuperblock(std::string sBlock) + { + std::string sMagnitudes = ExtractXML(sBlock,"",""); + + // For each CPID in the superblock, convert data to binary + std::stringstream stream; + int64_t num_zero_mag = 0; + for (auto& entry : split(sMagnitudes.c_str(), ";")) + { + if (entry.length() < 1) + continue; + + const std::vector& binary_cpid = ParseHex(entry); + if(binary_cpid.size() < 16) + { + ++num_zero_mag; + continue; + } + + BinaryResearcher researcher; + std::copy_n(binary_cpid.begin(), researcher.cpid.size(), researcher.cpid.begin()); + + // Ensure we do not blow out the binary space (technically we can handle 0-65535) + double magnitude_d = strtod(ExtractValue(entry, ",", 1).c_str(), NULL); + // Changed to 65535 for the new NN. This will still be able to be successfully unpacked by any node. + magnitude_d = std::max(0.0, std::min(magnitude_d, 65535.0)); + researcher.magnitude = htobe16(roundint(magnitude_d)); + + stream.write((const char*) &researcher, sizeof(BinaryResearcher)); + } + + std::stringstream block_stream; + block_stream << "" << num_zero_mag << "" + "" << stream.rdbuf() << "" + "" << ExtractXML(sBlock,"","") << "" + "" << ExtractXML(sBlock,"","") << ""; + return block_stream.str(); + } + + static std::string RetrieveMd5(std::string s1) + { + try + { + const char* chIn = s1.c_str(); + unsigned char digest2[16]; + MD5((unsigned char*)chIn, strlen(chIn), (unsigned char*)&digest2); + char mdString2[33]; + for(int i = 0; i < 16; i++) { + sprintf(&mdString2[i*2], "%02x", (unsigned int)digest2[i]); + } + std::string xmd5(mdString2); + return xmd5; + } + catch (std::exception &e) + { + LogPrintf("MD5 INVALID!"); + return ""; + } + } + + static std::string CPIDHash(double dMagIn, std::string sCPID) + { + std::string sMag = RoundToString(dMagIn,0); + double dMagLength = (double)sMag.length(); + double dExponent = pow(dMagLength,5); + std::string sMagComponent1 = RoundToString(dMagIn/(dExponent+.01),0); + std::string sSuffix = RoundToString(dMagLength * dExponent, 0); + std::string sHash = sCPID + sMagComponent1 + sSuffix; + return sHash; + } + + static std::string GetQuorumHash(const std::string& data) + { + //Data includes the Magnitudes, and the Projects: + std::string sMags = ExtractXML(data,"",""); + std::vector vMags = split(sMags.c_str(),";"); + std::string sHashIn = ""; + + for (unsigned int x = 0; x < vMags.size(); x++) + { + std::vector vRow = split(vMags[x].c_str(),","); + + // Each row should consist of two fields, CPID and magnitude. + if(vRow.size() < 2) + continue; + + // First row (CPID) must be exactly 32 bytes. + const std::string& sCPID = vRow[0]; + if(sCPID.size() != 32) + continue; + + double dMag = RoundFromString(vRow[1],0); + sHashIn += CPIDHash(dMag, sCPID) + ""; + } + + return RetrieveMd5(sHashIn); + } +}; // Legacy + +ScraperStats GetTestScraperStats() +{ + ScraperStats stats; + std::string cpid1 = "00010203040506070809101112131415"; + std::string cpid2 = "15141312111009080706050403020100"; + std::string project1 = "project_1"; + std::string project2 = "project_2"; + + ScraperObjectStats p1c1; + p1c1.statskey.objecttype = statsobjecttype::byCPIDbyProject; + p1c1.statskey.objectID = project1 + "," + cpid1; + p1c1.statsvalue.dTC = 1000; + p1c1.statsvalue.dRAC = 101; + p1c1.statsvalue.dAvgRAC = 1003; + p1c1.statsvalue.dMag = 1004; + stats.emplace(p1c1.statskey, p1c1); + + ScraperObjectStats p1c2; + p1c2.statskey.objecttype = statsobjecttype::byCPIDbyProject; + p1c2.statskey.objectID = project1 + "," + cpid2; + p1c2.statsvalue.dTC = 2000; + p1c2.statsvalue.dRAC = 102; + p1c2.statsvalue.dAvgRAC = 2003; + p1c2.statsvalue.dMag = 2004; + stats.emplace(p1c2.statskey, p1c2); + + ScraperObjectStats p2c1; + p2c1.statskey.objecttype = statsobjecttype::byCPIDbyProject; + p2c1.statskey.objectID = project2 + "," + cpid1; + p2c1.statsvalue.dTC = 3000; + p2c1.statsvalue.dRAC = 103; + p2c1.statsvalue.dAvgRAC = 3003; + p2c1.statsvalue.dMag = 3004; + stats.emplace(p2c1.statskey, p2c1); + + ScraperObjectStats p2c2; + p2c2.statskey.objecttype = statsobjecttype::byCPIDbyProject; + p2c2.statskey.objectID = project2 + "," + cpid2; + p2c2.statsvalue.dTC = 4000; + p2c2.statsvalue.dRAC = 104; + p2c2.statsvalue.dAvgRAC = 4003; + p2c2.statsvalue.dMag = 4004; + stats.emplace(p2c2.statskey, p2c2); + + ScraperObjectStats c1; + c1.statskey.objecttype = statsobjecttype::byCPID; + c1.statskey.objectID = cpid1; + c1.statsvalue.dTC = p1c1.statsvalue.dTC + p2c1.statsvalue.dTC; + c1.statsvalue.dRAC = p1c1.statsvalue.dRAC + p2c1.statsvalue.dRAC; + c1.statsvalue.dAvgRAC = c1.statsvalue.dRAC; + c1.statsvalue.dMag = p1c1.statsvalue.dMag + p2c1.statsvalue.dMag; + stats.emplace(c1.statskey, c1); + + ScraperObjectStats c2; + c2.statskey.objecttype = statsobjecttype::byCPID; + c2.statskey.objectID = cpid2; + c2.statsvalue.dTC = p1c2.statsvalue.dTC + p2c2.statsvalue.dTC; + c2.statsvalue.dRAC = p1c2.statsvalue.dRAC + p2c2.statsvalue.dRAC; + c2.statsvalue.dAvgRAC = c2.statsvalue.dRAC; + c2.statsvalue.dMag = p1c2.statsvalue.dMag + p2c2.statsvalue.dMag; + stats.emplace(c2.statskey, c2); + + ScraperObjectStats p1; + p1.statskey.objecttype = statsobjecttype::byProject; + p1.statskey.objectID = project1; + p1.statsvalue.dTC = p1c1.statsvalue.dTC + p1c2.statsvalue.dTC; + p1.statsvalue.dRAC = p1c1.statsvalue.dRAC + p1c2.statsvalue.dRAC; + p1.statsvalue.dAvgRAC = p1.statsvalue.dRAC / 2; + p1.statsvalue.dMag = p1c1.statsvalue.dMag + p1c2.statsvalue.dMag; + stats.emplace(p1.statskey, p1); + + ScraperObjectStats p2; + p2.statskey.objecttype = statsobjecttype::byProject; + p2.statskey.objectID = project2; + p2.statsvalue.dTC = p2c1.statsvalue.dTC + p2c2.statsvalue.dTC; + p2.statsvalue.dRAC = p2c1.statsvalue.dRAC + p2c2.statsvalue.dRAC; + p2.statsvalue.dAvgRAC = p2.statsvalue.dRAC / 2; + p2.statsvalue.dMag = p2c1.statsvalue.dMag + p2c2.statsvalue.dMag; + stats.emplace(p2.statskey, p2); + + return stats; +} +} // anonymous namespace + +// ----------------------------------------------------------------------------- +// Legacy Superblock Test Cases +// ----------------------------------------------------------------------------- + +extern std::string GetQuorumHash(const std::string& data); + +BOOST_AUTO_TEST_CASE(gridcoin_VerifyGetQuorumHash) +{ + const std::string contract = + "" + "0390450eff5f5cd6d7a7d95a6d898d8d,1480;" + "1878ecb566ac8e62beb7d141e1922460,6.25;" + "1963a6f109ea770c195a0e1afacd2eba,70;" + "285ff8d5014ef73cc83580338a9c0345,820;" + "46f64d69eb8c5ee9cd24178b589af83f,12.5;" + "0,15;" + "4f0fecd04be3a74c46aa9678f780d028,750;" + "55cd02be28521073d367f7ca38615682,720;" + "58e565221db80d168621187c36c26c3e,12.5;" + "59900fe7ef44fe33aa2afdf98301ec1c,530;" + "5a094d7d93f6d6370e78a2ac8c008407,1400;" + "0,15;" + "7d0d73fe026d66fd4ab8d5d8da32a611,84000;" + "8cfe9864e18db32a334b7de997f5a4f2,35;" + "8f2a530cf6f73647af4c680c3471ea65,90;" + "96c18bb4a02d15c90224a7138a540cf7,4520;" + "9b67756a05f76842de1e88226b79deb9,0;" + "9ce6f19e20f69790601c9bf9c0b03928,3.75;" + "9ff2b091f67327b7d8e5b75fb5337514,310;" + "a7a537ff8ad4d8fff4b3dad444e681ef,0;" + "a914eba952be5dfcf73d926b508fd5fa,6720;" + "d5924e4750f0f1c1c97b9635914afb9e,0;" + "db250f4451dc39632e52e157f034316d,5;" + "e7f90818e3e87c0bbefe83ad3cfe27e1,13500;" + "" + "btc,0;grc,0;" + "" + "amicable numbers,536000,5900000;" + "asteroids@home,158666.67,793333.33;" + "citizen science grid,575333.33,2881428.57;" + "collatz conjecture,4027142.86,36286380;" + "cosmology@home,47000,282666.67;" + "einstein@home,435333.33,5661428.57;" + "gpugrid,1804285.71,9035714.29;" + "leiden classical,2080,10500;" + "lhc@home classic,26166.67,210000;" + "milkyway@home,2094285.71,8395714.29;" + "moowrap,996666.67,7981428.57;" + "nfs@home,96000,385333.33;" + "numberfields@home,89333.33,626666.67;" + "primegrid,248000,1735714.29;" + "seti@home,52333.33,367333.33;" + "srbase,89666.67,896666.67;" + "sztaki desktop grid,8320,41666.67;" + "theskynet pogs,45500,409333.33;" + "tn-grid,39500,514666.67;" + "universe@home,47833.33,335333.33;" + "vgtu project@home,20666.67,124000;" + "world community grid,29166.67,263333.33;" + "yafu,93000,838666.67;" + "yoyo@home,7040,56333.33;" + "NeuralNetwork,2000000,20000000;" + ""; + + BOOST_CHECK_EQUAL(GetQuorumHash(contract), "0f099cab261bb562ff553f3b9c7bf942"); +} + +BOOST_AUTO_TEST_CASE(gridcoin_QuorumHashShouldBeCorrectAfterPackingAndUnpackingBinarySuperblock) +{ + const std::string contract(superblock_txt, superblock_txt + superblock_txt_len); + const std::string packed = PackBinarySuperblock(contract); + const std::string unpacked = UnpackBinarySuperblock(packed); + //BOOST_CHECK_EQUAL(unpacked, contract); + BOOST_CHECK_EQUAL(GetQuorumHash(contract), GetQuorumHash(unpacked)); +} + +BOOST_AUTO_TEST_CASE(gridcoin_ValidatePackBinarySuperblock) +{ + const std::string contract(superblock_txt, superblock_txt + superblock_txt_len); + const std::string expected(superblock_packed_bin, superblock_packed_bin + superblock_packed_bin_len); + BOOST_CHECK_EQUAL(PackBinarySuperblock(contract), expected); +} + +BOOST_AUTO_TEST_CASE(gridcoin_ValidateUnpackBinarySuperblock) +{ + const std::string packed(superblock_packed_bin, superblock_packed_bin + superblock_packed_bin_len); + const std::string expected(superblock_unpacked_txt, superblock_unpacked_txt + superblock_unpacked_txt_len); + BOOST_CHECK_EQUAL(UnpackBinarySuperblock(packed), expected); +} + +// ----------------------------------------------------------------------------- +// Superblock +// ----------------------------------------------------------------------------- + +BOOST_AUTO_TEST_SUITE(Superblock) + +BOOST_AUTO_TEST_CASE(it_initializes_to_an_empty_superblock) +{ + NN::Superblock superblock; + + BOOST_CHECK(superblock.m_version == NN::Superblock::CURRENT_VERSION); + + BOOST_CHECK(superblock.m_cpids.empty() == true); + BOOST_CHECK(superblock.m_cpids.TotalMagnitude() == 0); + BOOST_CHECK(superblock.m_cpids.AverageMagnitude() == 0); + + BOOST_CHECK(superblock.m_projects.empty() == true); + BOOST_CHECK(superblock.m_projects.TotalRac() == 0); + BOOST_CHECK(superblock.m_projects.AverageRac() == 0); + + BOOST_CHECK(superblock.m_height == 0); + BOOST_CHECK(superblock.m_timestamp == 0); +} + +BOOST_AUTO_TEST_CASE(it_initializes_to_the_specified_version) +{ + NN::Superblock superblock(1); + + BOOST_CHECK(superblock.m_version == 1); + + BOOST_CHECK(superblock.m_cpids.empty() == true); + BOOST_CHECK(superblock.m_cpids.TotalMagnitude() == 0); + BOOST_CHECK(superblock.m_cpids.AverageMagnitude() == 0); + + BOOST_CHECK(superblock.m_projects.empty() == true); + BOOST_CHECK(superblock.m_projects.TotalRac() == 0); + BOOST_CHECK(superblock.m_projects.AverageRac() == 0); + + BOOST_CHECK(superblock.m_height == 0); + BOOST_CHECK(superblock.m_timestamp == 0); +} + +BOOST_AUTO_TEST_CASE(it_initializes_from_a_provided_set_of_scraper_statistics) +{ + NN::Superblock superblock = NN::Superblock::FromStats(GetTestScraperStats()); + + auto& cpids = superblock.m_cpids; + BOOST_CHECK(cpids.size() == 2); + BOOST_CHECK(cpids.TotalMagnitude() == 10016); + BOOST_CHECK(cpids.AverageMagnitude() == 5008); + BOOST_CHECK(cpids.At(0)->first.ToString() == "00010203040506070809101112131415"); + BOOST_CHECK(cpids.At(0)->second == 4008); + BOOST_CHECK(cpids.At(1)->first.ToString() == "15141312111009080706050403020100"); + BOOST_CHECK(cpids.At(1)->second == 6008); + + auto& projects = superblock.m_projects; + BOOST_CHECK(projects.size() == 2); + BOOST_CHECK(projects.TotalRac() == 410); + BOOST_CHECK(projects.AverageRac() == 205.0); + + if (const auto project_1 = projects.Try("project_1")) { + BOOST_CHECK(project_1->m_total_credit == 3000); + BOOST_CHECK(project_1->m_average_rac == 102); + BOOST_CHECK(project_1->m_rac == 203); + } else { + BOOST_FAIL("Project 1 not found in superblock."); + } + + if (const auto project_2 = projects.Try("project_2")) { + BOOST_CHECK(project_2->m_total_credit == 7000); + BOOST_CHECK(project_2->m_average_rac == 104); + BOOST_CHECK(project_2->m_rac == 207); + } else { + BOOST_FAIL("Project 2 not found in superblock."); + } +} + +BOOST_AUTO_TEST_CASE(it_initializes_by_unpacking_a_legacy_binary_contract) +{ + std::string cpid1 = "00000000000000000000000000000000"; + std::string cpid2 = "00010203040506070809101112131415"; + std::string cpid3 = "15141312111009080706050403020100"; + + NN::Superblock superblock = NN::Superblock::UnpackLegacy( + Legacy::PackBinarySuperblock( + "" + + cpid1 + ",0;" // Include valid CPID with zero mag + + cpid2 + ",100;" // Include valid CPID with non-zero mag + + cpid3 + ",200;" // Include valid CPID with non-zero mag + "15,0;" // Add placeholder to zero-mag CPID count + "15,0;" // Add placeholder to zero-mag CPID count + "invalid,123;" // Add invalid CPID to zero-mag CPID count + "invalid,;" // Add missing mag to zero-mag CPID count + ",123;" // Add missing CPID to zero-mag CPID count + ";" // Drop empty record + "" + "" + "project_1,123,456;" + "project_2,234,567;" + "NeuralNetwork,1000,2000;" + "" + "btc,0;grc,0;" + ) + ); + + // Legacy string-packed superblocks unpack to version 1: + BOOST_CHECK(superblock.m_version == 1); + + BOOST_CHECK(superblock.m_cpids.size() == 3); + BOOST_CHECK(superblock.m_cpids.Zeros() == 5); + BOOST_CHECK(superblock.m_cpids.At(0)->first.ToString() == cpid1); + BOOST_CHECK(superblock.m_cpids.At(0)->second == 0); + BOOST_CHECK(superblock.m_cpids.At(1)->first.ToString() == cpid2); + BOOST_CHECK(superblock.m_cpids.At(1)->second == 100); + BOOST_CHECK(superblock.m_cpids.At(2)->first.ToString() == cpid3); + BOOST_CHECK(superblock.m_cpids.At(2)->second == 200); + + BOOST_CHECK(superblock.m_projects.size() == 2); + BOOST_CHECK(superblock.m_projects.TotalRac() == 1023); + BOOST_CHECK(superblock.m_projects.AverageRac() == 511.5); + + if (const auto project_1 = superblock.m_projects.Try("project_1")) { + BOOST_CHECK(project_1->m_total_credit == 0); + BOOST_CHECK(project_1->m_average_rac == 123); + BOOST_CHECK(project_1->m_rac == 456); + } else { + BOOST_FAIL("Project 1 not found in superblock."); + } + + if (const auto project_2 = superblock.m_projects.Try("project_2")) { + BOOST_CHECK(project_2->m_total_credit == 0); + BOOST_CHECK(project_2->m_average_rac == 234); + BOOST_CHECK(project_2->m_rac == 567); + } else { + BOOST_FAIL("Project 2 not found in superblock."); + } +} + +BOOST_AUTO_TEST_CASE(it_initializes_by_unpacking_a_legacy_text_contract) +{ + std::string cpid1 = "00000000000000000000000000000000"; + std::string cpid2 = "00010203040506070809101112131415"; + std::string cpid3 = "15141312111009080706050403020100"; + + NN::Superblock superblock = NN::Superblock::UnpackLegacy( + "" + + cpid1 + ",0;" // Include valid CPID with zero mag + + cpid2 + ",100;" // Include valid CPID with non-zero mag + + cpid3 + ",200;" // Include valid CPID with non-zero mag + "15,0;" // Drop placeholder + "15,0;" // Drop placeholder + "invalid,123;" // Drop invalid CPID + "invalid,;" // Drop missing mag + ",123;" // Drop missing CPID + ";" // Drop empty record + "" + "" + "project_1,123,456;" + "project_2,234,567;" + "NeuralNetwork,1000,2000;" + "" + "btc,0;grc,0;" + ); + + // Legacy string-packed superblocks unpack to version 1: + BOOST_CHECK(superblock.m_version == 1); + + BOOST_CHECK(superblock.m_cpids.size() == 3); + BOOST_CHECK(superblock.m_cpids.Zeros() == 0); + BOOST_CHECK(superblock.m_cpids.At(0)->first.ToString() == cpid1); + BOOST_CHECK(superblock.m_cpids.At(0)->second == 0); + BOOST_CHECK(superblock.m_cpids.At(1)->first.ToString() == cpid2); + BOOST_CHECK(superblock.m_cpids.At(1)->second == 100); + BOOST_CHECK(superblock.m_cpids.At(2)->first.ToString() == cpid3); + BOOST_CHECK(superblock.m_cpids.At(2)->second == 200); + + BOOST_CHECK(superblock.m_projects.size() == 2); + BOOST_CHECK(superblock.m_projects.TotalRac() == 1023); + BOOST_CHECK(superblock.m_projects.AverageRac() == 511.5); + + if (const auto project_1 = superblock.m_projects.Try("project_1")) { + BOOST_CHECK(project_1->m_total_credit == 0); + BOOST_CHECK(project_1->m_average_rac == 123); + BOOST_CHECK(project_1->m_rac == 456); + } else { + BOOST_FAIL("Project 1 not found in superblock."); + } + + if (const auto project_2 = superblock.m_projects.Try("project_2")) { + BOOST_CHECK(project_2->m_total_credit == 0); + BOOST_CHECK(project_2->m_average_rac == 234); + BOOST_CHECK(project_2->m_rac == 567); + } else { + BOOST_FAIL("Project 2 not found in superblock."); + } +} + +BOOST_AUTO_TEST_CASE(it_provides_backward_compatibility_for_legacy_contracts) +{ + const std::string legacy_contract( + superblock_txt, + superblock_txt + superblock_txt_len); + + const std::string legacy_packed = Legacy::PackBinarySuperblock(legacy_contract); + const std::string legacy_unpacked = Legacy::UnpackBinarySuperblock(legacy_packed); + const std::string expected_hash = Legacy::GetQuorumHash(legacy_contract); + + NN::Superblock superblock = NN::Superblock::UnpackLegacy(legacy_packed); + + BOOST_CHECK(superblock.m_version == 1); + BOOST_CHECK(NN::QuorumHash::Hash(superblock).ToString() == expected_hash); + + // Check the first few CPIDs: + auto& cpids = superblock.m_cpids; + BOOST_CHECK(cpids.size() == 1906); + BOOST_CHECK(cpids.At(0)->first.ToString() == "002a9d6f3832d0b0028606d907e09d97"); + BOOST_CHECK(cpids.At(0)->second == 1); + BOOST_CHECK(cpids.At(1)->first.ToString() == "002d383a19b63d698a3201793e7e3750"); + BOOST_CHECK(cpids.At(1)->second == 24); + + const std::string expected_packed( + superblock_packed_bin, + superblock_packed_bin + superblock_packed_bin_len); + + const std::string packed = superblock.PackLegacy(); + const std::string unpacked = Legacy::UnpackBinarySuperblock(packed); + + // Note: Superblock::PackLegacy is not guaranteed to pack a legacy contract + // exactly as passed to Superblock::UnpackLegacy even though this test data + // exists in a format that permits it to. The quorum hash must always match. + // + BOOST_CHECK(packed == expected_packed); + BOOST_CHECK(unpacked == legacy_unpacked); + BOOST_CHECK(Legacy::GetQuorumHash(unpacked) == expected_hash); +} + +BOOST_AUTO_TEST_CASE(it_calculates_its_age) +{ + NN::Superblock superblock; + + superblock.m_timestamp = GetAdjustedTime() - 1; + + BOOST_CHECK(superblock.Age() > 0); + BOOST_CHECK(superblock.Age() < GetAdjustedTime()); +} + +BOOST_AUTO_TEST_CASE(it_serializes_to_a_stream) +{ + std::vector expected { + 0x02, 0x00, 0x00, 0x00, // Version + 0x02, // CPIDs size + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, // CPID 1 + 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, // ... + 0xfd, 0xa8, 0x0f, // Magnitude + 0x15, 0x14, 0x13, 0x12, 0x11, 0x10, 0x09, 0x08, // CPID 2 + 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, // ... + 0xfd, 0x78, 0x17, // Magnitude + 0x00, // Zero count (VARINT) + 0x02, // Projects size + 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, // "project_1" key + 0x5f, 0x31, // ... + 0x96, 0x38, // Total credit (VARINT) + 0x66, // Average RAC (VARINT) + 0x80, 0x4b, // Total RAC (VARINT) + 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, // "project_2" key + 0x5f, 0x32, // ... + 0xb5, 0x58, // Total credit (VARINT) + 0x68, // Average RAC (VARINT) + 0x80, 0x4f, // Total RAC (VARINT) + }; + + NN::Superblock superblock = NN::Superblock::FromStats(GetTestScraperStats()); + + BOOST_CHECK(superblock.GetSerializeSize(SER_NETWORK, 1) == expected.size()); + + CDataStream stream(SER_NETWORK, 1); + stream << superblock; + std::vector output(stream.begin(), stream.end()); + + BOOST_CHECK(output == expected); +} + +BOOST_AUTO_TEST_CASE(it_deserializes_from_a_stream) +{ + std::vector bytes { + 0x02, 0x00, 0x00, 0x00, // Version + 0x02, // CPIDs size + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, // CPID 1 + 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, // ... + 0xfd, 0xa8, 0x0f, // Magnitude + 0x15, 0x14, 0x13, 0x12, 0x11, 0x10, 0x09, 0x08, // CPID 2 + 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, // ... + 0xfd, 0x78, 0x17, // Magnitude + 0x00, // Zero count (VARINT) + 0x02, // Projects size + 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, // "project_1" key + 0x5f, 0x31, // ... + 0x96, 0x38, // Total credit (VARINT) + 0x66, // Average RAC (VARINT) + 0x80, 0x4b, // Total RAC (VARINT) + 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, // "project_2" key + 0x5f, 0x32, // ... + 0xb5, 0x58, // Total credit (VARINT) + 0x68, // Average RAC (VARINT) + 0x80, 0x4f, // Total RAC (VARINT) + }; + + NN::Superblock superblock; + + CDataStream stream(bytes, SER_NETWORK, 1); + stream >> superblock; + + BOOST_CHECK(superblock.m_version == 2); + + const auto& cpids = superblock.m_cpids; + BOOST_CHECK(cpids.size() == 2); + BOOST_CHECK(cpids.Zeros() == 0); + BOOST_CHECK(cpids.TotalMagnitude() == 10016); + BOOST_CHECK(cpids.AverageMagnitude() == 5008.0); + BOOST_CHECK(cpids.At(0)->first.ToString() == "00010203040506070809101112131415"); + BOOST_CHECK(cpids.At(0)->second == 4008); + BOOST_CHECK(cpids.At(1)->first.ToString() == "15141312111009080706050403020100"); + BOOST_CHECK(cpids.At(1)->second == 6008); + + const auto& projects = superblock.m_projects; + BOOST_CHECK(projects.size() == 2); + BOOST_CHECK(projects.TotalRac() == 410); + BOOST_CHECK(projects.AverageRac() == 205.0); + + if (const auto project1 = projects.Try("project_1")) { + BOOST_CHECK(project1->m_total_credit == 3000); + BOOST_CHECK(project1->m_average_rac == 102); + BOOST_CHECK(project1->m_rac == 203); + } else { + BOOST_FAIL("Project 1 not found in index."); + } + + if (const auto project2 = projects.Try("project_2")) { + BOOST_CHECK(project2->m_total_credit == 7000); + BOOST_CHECK(project2->m_average_rac == 104); + BOOST_CHECK(project2->m_rac == 207); + } else { + BOOST_FAIL("Project 2 not found in index."); + } +} + +BOOST_AUTO_TEST_SUITE_END() + +// ----------------------------------------------------------------------------- +// Superblock::CpidIndex +// ----------------------------------------------------------------------------- + +BOOST_AUTO_TEST_SUITE(Superblock__CpidIndex) + +BOOST_AUTO_TEST_CASE(it_initializes_to_an_empty_index) +{ + NN::Superblock::CpidIndex cpids; + + BOOST_CHECK(cpids.size() == 0); + BOOST_CHECK(cpids.Zeros() == 0); +} + +BOOST_AUTO_TEST_CASE(it_initializes_with_a_zero_magnitude_cpid_count) +{ + // Used to initialize the index for a legacy superblock: + NN::Superblock::CpidIndex cpids(123); + + BOOST_CHECK(cpids.size() == 0); + BOOST_CHECK(cpids.Zeros() == 123); +} + +BOOST_AUTO_TEST_CASE(it_adds_a_cpid_magnitude_to_the_index) +{ + NN::Superblock::CpidIndex cpids; + + BOOST_CHECK(cpids.size() == 0); + + cpids.Add(NN::Cpid(), 123); + + BOOST_CHECK(cpids.size() == 1); +} + +BOOST_AUTO_TEST_CASE(it_ignores_insertion_of_a_duplicate_cpid) +{ + NN::Superblock::CpidIndex cpids; + NN::Cpid cpid = NN::Cpid::Parse("00010203040506070809101112131415"); + + cpids.Add(cpid, 123); + cpids.Add(cpid, 456); + + BOOST_CHECK(cpids.size() == 1); +} + +BOOST_AUTO_TEST_CASE(it_fetches_a_cpid_pair_by_offset) +{ + NN::Superblock::CpidIndex cpids; + + NN::Cpid cpid1 = NN::Cpid::Parse("00010203040506070809101112131415"); + NN::Cpid cpid2 = NN::Cpid::Parse("15141312111009080706050403020100"); + + cpids.Add(cpid1, 123); + cpids.Add(cpid2, 456); + + BOOST_CHECK(cpids.At(0)->first == cpid1); + BOOST_CHECK(cpids.At(0)->second == 123); + BOOST_CHECK(cpids.At(1)->first == cpid2); + BOOST_CHECK(cpids.At(1)->second == 456); +} + +BOOST_AUTO_TEST_CASE(it_fetches_the_magnitude_of_a_specific_cpid) +{ + NN::Superblock::CpidIndex cpids; + NN::Cpid cpid = NN::Cpid::Parse("00010203040506070809101112131415"); + + cpids.Add(cpid, 123); + + BOOST_CHECK(cpids.MagnitudeOf(cpid) == 123); +} + +BOOST_AUTO_TEST_CASE(it_assumes_zero_magnitude_for_a_nonexistent_cpid) +{ + NN::Superblock::CpidIndex cpids; + NN::Cpid cpid = NN::Cpid::Parse("00010203040506070809101112131415"); + + BOOST_CHECK(cpids.MagnitudeOf(cpid) == 0); +} + +BOOST_AUTO_TEST_CASE(it_stores_cpids_in_lexicographical_order) +{ + // The order is important to ensure consistent ordering of CPID records in + // superblocks for consensus and to access CPIDs by offset. + + NN::Superblock::CpidIndex cpids; + + NN::Cpid cpid1 = NN::Cpid::Parse("99999999999999999999999999999999"); + NN::Cpid cpid2 = NN::Cpid::Parse("ffffffffffffffffffffffffffffffff"); + NN::Cpid cpid3 = NN::Cpid::Parse("00000000000000000000000000000000"); + + cpids.Add(cpid1, 123); + cpids.Add(cpid2, 456); + cpids.Add(cpid3, 789); + + BOOST_CHECK(cpids.At(0)->first == cpid3); + BOOST_CHECK(cpids.At(0)->second == 789); + BOOST_CHECK(cpids.At(1)->first == cpid1); + BOOST_CHECK(cpids.At(1)->second == 123); + BOOST_CHECK(cpids.At(2)->first == cpid2); + BOOST_CHECK(cpids.At(2)->second == 456); +} + +BOOST_AUTO_TEST_CASE(it_counts_the_number_of_active_cpids) +{ + NN::Superblock::CpidIndex cpids; + + BOOST_CHECK(cpids.size() == 0); + + cpids.Add(NN::Cpid(), 123); + + BOOST_CHECK(cpids.size() == 1); +} + +BOOST_AUTO_TEST_CASE(it_determines_whether_it_contains_any_active_cpids) +{ + NN::Superblock::CpidIndex cpids; + + BOOST_CHECK(cpids.empty() == true); + + cpids.Add(NN::Cpid(), 123); + + BOOST_CHECK(cpids.empty() == false); +} + +BOOST_AUTO_TEST_CASE(it_tallies_the_number_of_zero_magnitude_cpids) +{ + NN::Superblock::CpidIndex cpids; + + BOOST_CHECK(cpids.Zeros() == 0); + + // Add only one zero-magnitude CPID: + cpids.Add(NN::Cpid::Parse("00010203040506070809101112131415"), 0); + cpids.Add(NN::Cpid::Parse("15141312111009080706050403020100"), 123); + + BOOST_CHECK(cpids.Zeros() == 1); +} + +BOOST_AUTO_TEST_CASE(it_skips_tallying_zero_magnitudes_for_legacy_superblocks) +{ + // Legacy superblocks embed the number of zero-magnitude CPIDs in the + // contract, so we won't count them upon insertion if explicitly set. + + NN::Superblock::CpidIndex cpids(123); + + BOOST_CHECK(cpids.Zeros() == 123); + + cpids.Add(NN::Cpid::Parse("00010203040506070809101112131415"), 0); + + BOOST_CHECK(cpids.Zeros() == 123); +} + +BOOST_AUTO_TEST_CASE(it_sums_the_count_of_both_active_and_zero_magnitude_cpids) +{ + NN::Superblock::CpidIndex cpids; + + BOOST_CHECK(cpids.TotalCount() == 0); + + // Add only one zero-magnitude CPID: + cpids.Add(NN::Cpid::Parse("00010203040506070809101112131415"), 0); + cpids.Add(NN::Cpid::Parse("15141312111009080706050403020100"), 123); + + BOOST_CHECK(cpids.TotalCount() == 2); +} + +BOOST_AUTO_TEST_CASE(it_tallies_the_sum_of_the_magnitudes_of_active_cpids) +{ + NN::Superblock::CpidIndex cpids; + + BOOST_CHECK(cpids.TotalMagnitude() == 0); + + cpids.Add(NN::Cpid(), 0); + cpids.Add(NN::Cpid::Parse("00010203040506070809101112131415"), 123); + cpids.Add(NN::Cpid::Parse("15141312111009080706050403020100"), 456); + + BOOST_CHECK(cpids.TotalMagnitude() == 579); +} + +BOOST_AUTO_TEST_CASE(it_skips_tallying_the_magnitudes_of_duplicate_cpids) +{ + NN::Superblock::CpidIndex cpids; + + cpids.Add(NN::Cpid::Parse("00010203040506070809101112131415"), 123); + + BOOST_CHECK(cpids.TotalMagnitude() == 123); + + cpids.Add(NN::Cpid::Parse("00010203040506070809101112131415"), 456); + + BOOST_CHECK(cpids.TotalMagnitude() == 123); +} + +BOOST_AUTO_TEST_CASE(it_calculates_the_average_magnitude_of_active_cpids) +{ + NN::Superblock::CpidIndex cpids; + + BOOST_CHECK(cpids.AverageMagnitude() == 0); + + cpids.Add(NN::Cpid(), 0); + cpids.Add(NN::Cpid::Parse("00010203040506070809101112131415"), 123); + cpids.Add(NN::Cpid::Parse("15141312111009080706050403020100"), 456); + + BOOST_CHECK(cpids.AverageMagnitude() == 289.5); +} + +BOOST_AUTO_TEST_CASE(it_is_iterable) +{ + NN::Superblock::CpidIndex cpids; + + const NN::Cpid cpid1 = NN::Cpid::Parse("00010203040506070809101112131415"); + const NN::Cpid cpid2 = NN::Cpid::Parse("15141312111009080706050403020100"); + + cpids.Add(cpid1, 123); + cpids.Add(cpid2, 123); + + size_t counter = 0; + + for (auto const& cpid : cpids) { + BOOST_CHECK(cpid.first == cpid1 || cpid.first == cpid2); + counter++; + } + + BOOST_CHECK(counter == 2); +} + +BOOST_AUTO_TEST_CASE(it_serializes_to_a_stream) +{ + const std::vector expected { + 0x01, // Active CPID size + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, // CPID + 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, // ... + 0x7b, // Magnitude (123) + 0x01, // Zero count (VARINT) + }; + + NN::Superblock::CpidIndex cpids; + + cpids.Add(NN::Cpid::Parse("00010203040506070809101112131415"), 123); + cpids.Add(NN::Cpid(), 0); + + BOOST_CHECK(cpids.GetSerializeSize(SER_NETWORK, 1) == expected.size()); + + CDataStream stream(SER_NETWORK, 1); + stream << cpids; + std::vector output(stream.begin(), stream.end()); + + BOOST_CHECK(output == expected); +} + +BOOST_AUTO_TEST_CASE(it_deserializes_from_a_stream) +{ + const std::vector bytes { + 0x01, // Active CPID size + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, // CPID + 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, // ... + 0x7b, // Magnitude (123) + 0x01, // Zero count (VARINT) + }; + + NN::Superblock::CpidIndex cpids; + + CDataStream stream(bytes, SER_NETWORK, 1); + stream >> cpids; + + const NN::Cpid cpid = NN::Cpid::Parse("00010203040506070809101112131415"); + + BOOST_CHECK(cpids.size() == 1); + BOOST_CHECK(cpids.Zeros() == 1); + BOOST_CHECK(cpids.At(0)->first == cpid); + BOOST_CHECK(cpids.MagnitudeOf(cpid) == 123); + BOOST_CHECK(cpids.TotalMagnitude() == 123); + BOOST_CHECK(cpids.AverageMagnitude() == 123); +} + +BOOST_AUTO_TEST_SUITE_END() + +// ----------------------------------------------------------------------------- +// Superblock::ProjectStats +// ----------------------------------------------------------------------------- + +BOOST_AUTO_TEST_SUITE(Superblock__ProjectStats) + +BOOST_AUTO_TEST_CASE(it_initializes_to_a_zero_statistics_object) +{ + NN::Superblock::ProjectStats stats; + + BOOST_CHECK(stats.m_total_credit == 0); + BOOST_CHECK(stats.m_average_rac == 0); + BOOST_CHECK(stats.m_rac == 0); +} + +BOOST_AUTO_TEST_CASE(it_initializes_to_the_supplied_statistics) +{ + NN::Superblock::ProjectStats stats(123, 456, 789); + + BOOST_CHECK(stats.m_total_credit == 123); + BOOST_CHECK(stats.m_average_rac == 456); + BOOST_CHECK(stats.m_rac == 789); +} + +BOOST_AUTO_TEST_CASE(it_initializes_to_supplied_legacy_superblock_statistics) +{ + NN::Superblock::ProjectStats stats(123, 456); + + BOOST_CHECK(stats.m_total_credit == 0); + BOOST_CHECK(stats.m_average_rac == 123); + BOOST_CHECK(stats.m_rac == 456); +} + +BOOST_AUTO_TEST_CASE(it_serializes_to_a_stream) +{ + const std::vector expected { + 0x01, // Total credit (VARINT) + 0x02, // Average RAC (VARINT) + 0x03, // Total RAC (VARINT) + }; + + NN::Superblock::ProjectStats project(1, 2, 3); + + BOOST_CHECK(project.GetSerializeSize(SER_NETWORK, 1) == expected.size()); + + CDataStream stream(SER_NETWORK, 1); + stream << project; + std::vector output(stream.begin(), stream.end()); + + BOOST_CHECK(output == expected); +} + +BOOST_AUTO_TEST_CASE(it_deserializes_from_a_stream) +{ + const std::vector bytes { + 0x01, // Total credit (VARINT) + 0x02, // Average RAC (VARINT) + 0x03, // Total RAC (VARINT) + }; + + NN::Superblock::ProjectStats project; + + CDataStream stream(bytes, SER_NETWORK, 1); + stream >> project; + + BOOST_CHECK(project.m_total_credit == 1); + BOOST_CHECK(project.m_average_rac == 2); + BOOST_CHECK(project.m_rac == 3); +} + +BOOST_AUTO_TEST_SUITE_END() + +// ----------------------------------------------------------------------------- +// Superblock::ProjectIndex +// ----------------------------------------------------------------------------- + +BOOST_AUTO_TEST_SUITE(Superblock__ProjectIndex) + +BOOST_AUTO_TEST_CASE(it_initializes_to_an_empty_index) +{ + NN::Superblock::ProjectIndex projects; + + BOOST_CHECK(projects.size() == 0); +} + +BOOST_AUTO_TEST_CASE(it_adds_a_project_statistics_entry_to_the_index) +{ + NN::Superblock::ProjectIndex projects; + + BOOST_CHECK(projects.size() == 0); + + projects.Add("project_name", NN::Superblock::ProjectStats()); + + BOOST_CHECK(projects.size() == 1); +} + +BOOST_AUTO_TEST_CASE(it_ignores_insertion_of_a_duplicate_project) +{ + NN::Superblock::ProjectIndex projects; + + projects.Add("project_1", NN::Superblock::ProjectStats(123, 123)); + projects.Add("project_1", NN::Superblock::ProjectStats(456, 456)); + + BOOST_CHECK(projects.size() == 1); +} + +BOOST_AUTO_TEST_CASE(it_ignores_insertion_of_a_project_with_an_empty_name) +{ + NN::Superblock::ProjectIndex projects; + + projects.Add("", NN::Superblock::ProjectStats(123, 123)); + + BOOST_CHECK(projects.size() == 0); +} + +BOOST_AUTO_TEST_CASE(it_fetches_the_statistics_of_a_specific_project) +{ + NN::Superblock::ProjectIndex projects; + + projects.Add("project_name", NN::Superblock::ProjectStats(123, 456, 789)); + + if (const auto project = projects.Try("project_name")) { + BOOST_CHECK(project->m_total_credit == 123); + BOOST_CHECK(project->m_average_rac == 456); + BOOST_CHECK(project->m_rac == 789); + } else { + BOOST_FAIL("Project not found in index."); + } +} + +BOOST_AUTO_TEST_CASE(it_stores_projects_in_lexicographical_order_by_name) +{ + // The order is important to ensure consistent ordering of project records + // in superblocks for consensus. + + NN::Superblock::ProjectIndex projects; + + projects.Add("project_3", NN::Superblock::ProjectStats(123, 123)); + projects.Add("project_1", NN::Superblock::ProjectStats(456, 456)); + projects.Add("project_2", NN::Superblock::ProjectStats(789, 789)); + + // The project index doesn't provide an offset accessor yet, so we'll + // check the order by looping: + size_t offset = 0; + for (const auto& project_pair : projects) { + switch (offset) { + case 0: + BOOST_CHECK(project_pair.first == "project_1"); + BOOST_CHECK(project_pair.second.m_rac == 456); + break; + case 1: + BOOST_CHECK(project_pair.first == "project_2"); + BOOST_CHECK(project_pair.second.m_rac == 789); + break; + case 2: + BOOST_CHECK(project_pair.first == "project_3"); + BOOST_CHECK(project_pair.second.m_rac == 123); + break; + default: + BOOST_FAIL("Unexpected project at offset."); + break; + } + + offset++; + } + + BOOST_CHECK(offset == projects.size()); +} + +BOOST_AUTO_TEST_CASE(it_counts_the_number_of_projects) +{ + NN::Superblock::ProjectIndex projects; + + BOOST_CHECK(projects.size() == 0); + + projects.Add("project_name", NN::Superblock::ProjectStats()); + + BOOST_CHECK(projects.size() == 1); +} + +BOOST_AUTO_TEST_CASE(it_determines_whether_it_contains_any_projects) +{ + NN::Superblock::ProjectIndex projects; + + BOOST_CHECK(projects.empty() == true); + + projects.Add("project_name", NN::Superblock::ProjectStats()); + + BOOST_CHECK(projects.empty() == false); +} + +BOOST_AUTO_TEST_CASE(it_tallies_the_sum_of_the_rac_for_all_projects) +{ + NN::Superblock::ProjectIndex projects; + + BOOST_CHECK(projects.TotalRac() == 0); + + projects.Add("project_1", NN::Superblock::ProjectStats(123, 123)); + projects.Add("project_2", NN::Superblock::ProjectStats(456, 456)); + projects.Add("project_3", NN::Superblock::ProjectStats(789, 789)); + + BOOST_CHECK(projects.TotalRac() == 1368); +} + +BOOST_AUTO_TEST_CASE(it_skips_tallying_the_rac_of_duplicate_projects) +{ + NN::Superblock::ProjectIndex projects; + + projects.Add("project_1", NN::Superblock::ProjectStats(123, 123)); + + BOOST_CHECK(projects.TotalRac() == 123); + + projects.Add("project_1", NN::Superblock::ProjectStats(456, 456)); + + BOOST_CHECK(projects.TotalRac() == 123); +} + +BOOST_AUTO_TEST_CASE(it_skips_tallying_the_rac_of_projects_with_empty_names) +{ + NN::Superblock::ProjectIndex projects; + + projects.Add("", NN::Superblock::ProjectStats(123, 123)); + + BOOST_CHECK(projects.TotalRac() == 0); +} + +BOOST_AUTO_TEST_CASE(it_calculates_the_average_rac_of_all_projects) +{ + NN::Superblock::ProjectIndex projects; + + BOOST_CHECK(projects.AverageRac() == 0); + + projects.Add("project_1", NN::Superblock::ProjectStats(123, 123)); + projects.Add("project_2", NN::Superblock::ProjectStats(456, 456)); + projects.Add("project_3", NN::Superblock::ProjectStats(789, 789)); + + BOOST_CHECK(projects.AverageRac() == 456.0); +} + +BOOST_AUTO_TEST_CASE(it_is_iterable) +{ + NN::Superblock::ProjectIndex projects; + + projects.Add("project_1", NN::Superblock::ProjectStats()); + projects.Add("project_2", NN::Superblock::ProjectStats()); + + size_t counter = 0; + + for (auto const& project : projects) { + BOOST_CHECK(boost::starts_with(project.first, "project_") == true); + counter++; + } + + BOOST_CHECK(counter == 2); +} + +BOOST_AUTO_TEST_CASE(it_serializes_to_a_stream) +{ + const std::vector expected { + 0x02, // Projects size + 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, // "project_1" key + 0x5f, 0x31, // ... + 0x01, // Total credit (VARINT) + 0x02, // Average RAC (VARINT) + 0x03, // Total RAC (VARINT) + 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, // "project_2" key + 0x5f, 0x32, // ... + 0x01, // Total credit (VARINT) + 0x02, // Average RAC (VARINT) + 0x03, // Total RAC (VARINT) + }; + + NN::Superblock::ProjectIndex projects; + + projects.Add("project_1", NN::Superblock::ProjectStats(1, 2, 3)); + projects.Add("project_2", NN::Superblock::ProjectStats(1, 2, 3)); + + BOOST_CHECK(projects.GetSerializeSize(SER_NETWORK, 1) == expected.size()); + + CDataStream stream(SER_NETWORK, 1); + stream << projects; + std::vector output(stream.begin(), stream.end()); + + BOOST_CHECK(output == expected); +} + +BOOST_AUTO_TEST_CASE(it_deserializes_from_a_stream) +{ + const std::vector bytes { + 0x02, // Projects size + 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, // "project_1" key + 0x5f, 0x31, // ... + 0x01, // Total credit (VARINT) + 0x02, // Average RAC (VARINT) + 0x03, // Total RAC (VARINT) + 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, // "project_2" key + 0x5f, 0x32, // ... + 0x01, // Total credit (VARINT) + 0x02, // Average RAC (VARINT) + 0x03, // Total RAC (VARINT) + }; + + NN::Superblock::ProjectIndex projects; + + CDataStream stream(bytes, SER_NETWORK, 1); + stream >> projects; + + BOOST_CHECK(projects.size() == 2); + + if (const auto project1 = projects.Try("project_1")) { + BOOST_CHECK(project1->m_total_credit == 1); + BOOST_CHECK(project1->m_average_rac == 2); + BOOST_CHECK(project1->m_rac == 3); + } else { + BOOST_FAIL("Project 1 not found in index."); + } + + if (const auto project2 = projects.Try("project_2")) { + BOOST_CHECK(project2->m_total_credit == 1); + BOOST_CHECK(project2->m_average_rac == 2); + BOOST_CHECK(project2->m_rac == 3); + } else { + BOOST_FAIL("Project 2 not found in index."); + } + + BOOST_CHECK(projects.TotalRac() == 6); + BOOST_CHECK(projects.AverageRac() == 3); +} + +BOOST_AUTO_TEST_SUITE_END(); + +// ----------------------------------------------------------------------------- +// QuorumHash +// ----------------------------------------------------------------------------- + +BOOST_AUTO_TEST_SUITE(QuorumHash) + +BOOST_AUTO_TEST_CASE(it_initializes_to_an_invalid_hash) +{ + NN::QuorumHash hash; + + BOOST_CHECK(hash.Valid() == false); + BOOST_CHECK(hash.Which() == NN::QuorumHash::Kind::INVALID); +} + +BOOST_AUTO_TEST_CASE(it_initializes_with_a_sha256_hash) +{ + NN::QuorumHash hash(uint256(0)); + + BOOST_CHECK(hash.Valid() == true); + BOOST_CHECK(hash.Which() == NN::QuorumHash::Kind::SHA256); +} + +BOOST_AUTO_TEST_CASE(it_initializes_with_a_legacy_md5_hash) +{ + NN::QuorumHash hash(std::array { }); + + BOOST_CHECK(hash.Valid() == true); + BOOST_CHECK(hash.Which() == NN::QuorumHash::Kind::MD5); +} + +BOOST_AUTO_TEST_CASE(it_initializes_to_the_supplied_bytes) +{ + NN::QuorumHash hash_invalid(std::vector { 0x00 }); + + BOOST_CHECK(hash_invalid.Valid() == false); + BOOST_CHECK(hash_invalid.Which() == NN::QuorumHash::Kind::INVALID); + + const std::vector sha256_bytes { + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }; + + NN::QuorumHash hash_sha256(sha256_bytes); + + BOOST_CHECK(hash_sha256.Valid() == true); + BOOST_CHECK(hash_sha256.Which() == NN::QuorumHash::Kind::SHA256); + BOOST_CHECK_EQUAL_COLLECTIONS( + sha256_bytes.begin(), + sha256_bytes.end(), + hash_sha256.Raw(), + hash_sha256.Raw() + 32); + + const std::vector md5_bytes { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + }; + + NN::QuorumHash hash_md5(md5_bytes); + + BOOST_CHECK(hash_md5.Valid() == true); + BOOST_CHECK(hash_md5.Which() == NN::QuorumHash::Kind::MD5); + BOOST_CHECK_EQUAL_COLLECTIONS( + md5_bytes.begin(), + md5_bytes.end(), + hash_md5.Raw(), + hash_md5.Raw() + 16); +} + +BOOST_AUTO_TEST_CASE(it_hashes_a_superblock) +{ + NN::Superblock superblock; + + auto& cpids = superblock.m_cpids; + cpids.Add(NN::Cpid::Parse("00010203040506070809101112131415"), 1); + cpids.Add(NN::Cpid::Parse("15141312111009080706050403020100"), 1); + + auto& projects = superblock.m_projects; + projects.Add("project_1", NN::Superblock::ProjectStats(0, 0, 0)); + projects.Add("project_2", NN::Superblock::ProjectStats(0, 0, 0)); + + std::vector input { + 0x02, // CPIDs size + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, // CPID 1 + 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, // ... + 0x01, // Magnitude + 0x15, 0x14, 0x13, 0x12, 0x11, 0x10, 0x09, 0x08, // CPID 2 + 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, // ... + 0x01, // Magnitude + 0x00, // Zero-mag count + 0x02, // Projects size + 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, // "project_1" key + 0x5f, 0x31, // ... + 0x00, // Total credit + 0x00, // Average RAC + 0x00, // Total RAC + 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, // "project_2" key + 0x5f, 0x32, // ... + 0x00, // Total credit + 0x00, // Average RAC + 0x00, // Total RAC + }; + + uint256 expected = Hash(input.begin(), input.end()); + NN::QuorumHash hash = NN::QuorumHash::Hash(superblock); + + BOOST_CHECK(hash.Valid() == true); + BOOST_CHECK(hash.Which() == NN::QuorumHash::Kind::SHA256); + BOOST_CHECK(hash == expected); + BOOST_CHECK(hash.ToString() + == "99b20dca6d76a3ab1b704925535ec08a9d46fbf95ca3036396b628e23db00156"); +} + +BOOST_AUTO_TEST_CASE(it_parses_a_sha256_hash_string) +{ + const std::vector expected { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + }; + + NN::QuorumHash hash = NN::QuorumHash::Parse(HexStr(expected)); + + BOOST_CHECK(hash.Which() == NN::QuorumHash::Kind::SHA256); + BOOST_CHECK_EQUAL_COLLECTIONS( + expected.begin(), + expected.end(), + hash.Raw(), + hash.Raw() + 32); +} + +BOOST_AUTO_TEST_CASE(it_parses_a_legacy_md5_hash_string) +{ + const std::vector expected { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + }; + + NN::QuorumHash hash = NN::QuorumHash::Parse(HexStr(expected)); + + BOOST_CHECK(hash.Which() == NN::QuorumHash::Kind::MD5); + BOOST_CHECK_EQUAL_COLLECTIONS( + expected.begin(), + expected.end(), + hash.Raw(), + hash.Raw() + 16); +} + +BOOST_AUTO_TEST_CASE(it_parses_an_invalid_quorum_hash_to_an_invalid_variant) +{ + // Empty: + NN::QuorumHash hash = NN::QuorumHash::Parse(""); + BOOST_CHECK(hash.Valid() == false); + + // Too short MD5: 31 characters + hash = NN::QuorumHash::Parse("0001020304050607080910111213141"); + BOOST_CHECK(hash.Valid() == false); + + // Too long MD5: 33 characters + hash = NN::QuorumHash::Parse("000102030405060708091011121314155"); + BOOST_CHECK(hash.Valid() == false); + + // Non-hex character at the end: + hash = NN::QuorumHash::Parse("0001020304050607080910111213141Z"); + BOOST_CHECK(hash.Valid() == false); + + // Too short SHA256: 63 characters + hash = NN::QuorumHash::Parse( + "000102030405060708091011121314150001020304050607080910111213141"); + BOOST_CHECK(hash.Valid() == false); + + // Too long SHA256: 65 characters + hash = NN::QuorumHash::Parse( + "00010203040506070809101112131415000102030405060708091011121314155"); + BOOST_CHECK(hash.Valid() == false); + + // Non-hex character at the end: + hash = NN::QuorumHash::Parse( + "000102030405060708091011121314150001020304050607080910111213141Z"); + BOOST_CHECK(hash.Valid() == false); +} + +BOOST_AUTO_TEST_CASE(it_hashes_cpid_magnitudes_from_a_legacy_superblock) +{ + // Version 1 superblocks hash with the legacy MD5-based algorithm: + NN::Superblock superblock(1); + + std::string cpid1 = "00010203040506070809101112131415"; + std::string cpid2 = "15141312111009080706050403020100"; + + superblock.m_cpids.Add(NN::Cpid::Parse(cpid1), 100); + superblock.m_cpids.Add(NN::Cpid::Parse(cpid2), 200); + + NN::QuorumHash hash = NN::QuorumHash::Hash(superblock); + + BOOST_CHECK(hash.Valid() == true); + BOOST_CHECK(hash.Which() == NN::QuorumHash::Kind::MD5); + BOOST_CHECK(hash.ToString() == "939715690b64b53edb2a79755eca4ae1"); + + BOOST_CHECK(hash.ToString() == Legacy::GetQuorumHash( + "" + + cpid1 + ",100;" + + cpid2 + ",200;" + "" + )); +} + +BOOST_AUTO_TEST_CASE(it_compares_another_quorum_hash_for_equality) +{ + NN::Superblock superblock; + NN::Superblock legacy_superblock(1); + + NN::QuorumHash invalid; + NN::QuorumHash sha256 = NN::QuorumHash::Hash(superblock); + NN::QuorumHash md5 = NN::QuorumHash::Hash(legacy_superblock); + + BOOST_CHECK(invalid == NN::QuorumHash()); + BOOST_CHECK(sha256 == NN::QuorumHash::Hash(superblock)); + BOOST_CHECK(md5 == NN::QuorumHash::Hash(legacy_superblock)); + + BOOST_CHECK(sha256 != invalid); + BOOST_CHECK(md5 != invalid); + BOOST_CHECK(sha256 != md5); +} + +BOOST_AUTO_TEST_CASE(it_compares_a_sha256_hash_for_equality) +{ + NN::Superblock superblock; + + // Hashed byte content of an empty superblock: + std::vector input { + 0x00, // CPIDs size + 0x00, // Zero-mag CPID count + 0x00, // Projects size + }; + + NN::QuorumHash hash = NN::QuorumHash::Hash(superblock); + uint256 expected = Hash(input.begin(), input.end()); + + BOOST_CHECK(hash == expected); + BOOST_CHECK(hash != uint256(0)); + BOOST_CHECK(NN::QuorumHash() != expected); +} + +BOOST_AUTO_TEST_CASE(it_compares_a_string_for_equality) +{ + NN::Superblock superblock; + NN::QuorumHash hash = NN::QuorumHash::Hash(superblock); + + BOOST_CHECK(hash == "27736f6456ba3805750faebf98bff6a5d0919230ede9bb70c29f0127f637e478"); + BOOST_CHECK(hash != "invalid"); + BOOST_CHECK(hash != ""); + + NN::Superblock legacy_superblock(1); + hash = NN::QuorumHash::Hash(legacy_superblock); + + BOOST_CHECK(hash == Legacy::GetQuorumHash("")); + BOOST_CHECK(hash != "invalid"); + BOOST_CHECK(hash != ""); + + hash = NN::QuorumHash(); // Invalid + + BOOST_CHECK(hash == ""); + BOOST_CHECK(hash != "27736f6456ba3805750faebf98bff6a5d0919230ede9bb70c29f0127f637e478"); + BOOST_CHECK(hash != Legacy::GetQuorumHash("")); +} + +BOOST_AUTO_TEST_CASE(it_represents_itself_as_a_string) +{ + NN::QuorumHash hash; + + BOOST_CHECK(hash.ToString() == ""); + + hash = NN::QuorumHash(uint256(0)); + + BOOST_CHECK(hash.ToString() + == "0000000000000000000000000000000000000000000000000000000000000000"); + + hash = NN::QuorumHash(NN::QuorumHash::Md5Sum { }); + + BOOST_CHECK(hash.ToString() == "00000000000000000000000000000000"); +} + +BOOST_AUTO_TEST_CASE(it_is_hashable_to_key_a_lookup_map) +{ + std::hash hasher; + + NN::QuorumHash hash_invalid; + + BOOST_CHECK(hasher(hash_invalid) == 0); + + NN::QuorumHash hash_sha256(uint256(std::vector { + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + })); + + + // 0x01 + 0x02 + 0x03 + 0x04 (SHA256 quarters, big endian) + BOOST_CHECK(hasher(hash_sha256) == 10); + + NN::QuorumHash hash_md5(std::array { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + }); + + // 0x0706050403020100 + 0x1514131211100908 (MD5 halves, little endian) + BOOST_CHECK(hasher(hash_md5) == 2024957465561532936); +} + +BOOST_AUTO_TEST_SUITE_END() diff --git a/src/test/serialize_tests.cpp b/src/test/serialize_tests.cpp new file mode 100644 index 0000000000..a04e759c64 --- /dev/null +++ b/src/test/serialize_tests.cpp @@ -0,0 +1,57 @@ +#include "serialize.h" +#include "util.h" + +#include + +BOOST_AUTO_TEST_CASE(varints) +{ + // encode + + CDataStream ss(SER_DISK, 0); + CDataStream::size_type size = 0; + for (int i = 0; i < 100000; i++) { + ss << VARINT(i, VarIntMode::NONNEGATIVE_SIGNED); + size += ::GetSerializeSize(VARINT(i, VarIntMode::NONNEGATIVE_SIGNED), 0, 0); + BOOST_CHECK(size == ss.size()); + } + + for (uint64_t i = 0; i < 100000000000ULL; i += 999999937) { + ss << VARINT(i); + size += ::GetSerializeSize(VARINT(i), 0, 0); + BOOST_CHECK(size == ss.size()); + } + + // decode + for (int i = 0; i < 100000; i++) { + int j = -1; + ss >> VARINT(j, VarIntMode::NONNEGATIVE_SIGNED); + BOOST_CHECK_MESSAGE(i == j, "decoded:" << j << " expected:" << i); + } + + for (uint64_t i = 0; i < 100000000000ULL; i += 999999937) { + uint64_t j = std::numeric_limits::max(); + ss >> VARINT(j); + BOOST_CHECK_MESSAGE(i == j, "decoded:" << j << " expected:" << i); + } +} + +BOOST_AUTO_TEST_CASE(varints_bitpatterns) +{ + CDataStream ss(SER_DISK, 0); + ss << VARINT(0, VarIntMode::NONNEGATIVE_SIGNED); BOOST_CHECK_EQUAL(HexStr(ss), "00"); ss.clear(); + ss << VARINT(0x7f, VarIntMode::NONNEGATIVE_SIGNED); BOOST_CHECK_EQUAL(HexStr(ss), "7f"); ss.clear(); + ss << VARINT((int8_t)0x7f, VarIntMode::NONNEGATIVE_SIGNED); BOOST_CHECK_EQUAL(HexStr(ss), "7f"); ss.clear(); + ss << VARINT(0x80, VarIntMode::NONNEGATIVE_SIGNED); BOOST_CHECK_EQUAL(HexStr(ss), "8000"); ss.clear(); + ss << VARINT((uint8_t)0x80); BOOST_CHECK_EQUAL(HexStr(ss), "8000"); ss.clear(); + ss << VARINT(0x1234, VarIntMode::NONNEGATIVE_SIGNED); BOOST_CHECK_EQUAL(HexStr(ss), "a334"); ss.clear(); + ss << VARINT((int16_t)0x1234, VarIntMode::NONNEGATIVE_SIGNED); BOOST_CHECK_EQUAL(HexStr(ss), "a334"); ss.clear(); + ss << VARINT(0xffff, VarIntMode::NONNEGATIVE_SIGNED); BOOST_CHECK_EQUAL(HexStr(ss), "82fe7f"); ss.clear(); + ss << VARINT((uint16_t)0xffff); BOOST_CHECK_EQUAL(HexStr(ss), "82fe7f"); ss.clear(); + ss << VARINT(0x123456, VarIntMode::NONNEGATIVE_SIGNED); BOOST_CHECK_EQUAL(HexStr(ss), "c7e756"); ss.clear(); + ss << VARINT((int32_t)0x123456, VarIntMode::NONNEGATIVE_SIGNED); BOOST_CHECK_EQUAL(HexStr(ss), "c7e756"); ss.clear(); + ss << VARINT(0x80123456U); BOOST_CHECK_EQUAL(HexStr(ss), "86ffc7e756"); ss.clear(); + ss << VARINT((uint32_t)0x80123456U); BOOST_CHECK_EQUAL(HexStr(ss), "86ffc7e756"); ss.clear(); + ss << VARINT(0xffffffff); BOOST_CHECK_EQUAL(HexStr(ss), "8efefefe7f"); ss.clear(); + ss << VARINT(0x7fffffffffffffffLL, VarIntMode::NONNEGATIVE_SIGNED); BOOST_CHECK_EQUAL(HexStr(ss), "fefefefefefefefe7f"); ss.clear(); + ss << VARINT(0xffffffffffffffffULL); BOOST_CHECK_EQUAL(HexStr(ss), "80fefefefefefefefe7f"); ss.clear(); +} diff --git a/src/txdb-leveldb.cpp b/src/txdb-leveldb.cpp index f40dc7f9bb..26a4974723 100644 --- a/src/txdb-leveldb.cpp +++ b/src/txdb-leveldb.cpp @@ -392,8 +392,7 @@ bool CTxDB::LoadBlockIndex() nLoaded +=10000; if (nLoaded > nHighest) nHighest=nLoaded; if (nHighest < nGrandfather) nHighest=nGrandfather; - std::string sBlocksLoaded = ToString(nLoaded) + "/" + ToString(nHighest) + " Blocks Loaded"; - uiInterface.InitMessage(_(sBlocksLoaded.c_str())); + uiInterface.InitMessage(strprintf("%" PRId64 "/%" PRId64 " %s", nLoaded, nHighest, _("Blocks Loaded"))); fprintf(stdout,"%d ",nLoaded); fflush(stdout); } } @@ -484,8 +483,7 @@ bool CTxDB::LoadBlockIndex() nLoaded +=1000; if (nLoaded > nHighest) nHighest=nLoaded; if (nHighest < nGrandfather) nHighest=nGrandfather; - std::string sBlocksLoaded = ToString(nLoaded) + "/" + ToString(nHighest) + " Blocks Verified"; - uiInterface.InitMessage(_(sBlocksLoaded.c_str())); + uiInterface.InitMessage(strprintf("%" PRId64 "/%" PRId64 " %s", nLoaded, nHighest, _("Blocks Verified"))); } } @@ -618,8 +616,7 @@ bool CTxDB::LoadBlockIndex() nLoaded +=10000; if (nLoaded > nHighest) nHighest=nLoaded; if (nHighest < nGrandfather) nHighest=nGrandfather; - std::string sBlocksLoaded = ToString(nLoaded) + "/" + ToString(nHighest) + " POR Blocks Verified"; - uiInterface.InitMessage(_(sBlocksLoaded.c_str())); + uiInterface.InitMessage(strprintf("%" PRId64 "/%" PRId64 " %s", nLoaded, nHighest, _("POR Blocks Verified"))); } // Block repair and reward collection only needs to be done after diff --git a/src/ui_interface.h b/src/ui_interface.h index bb1a0875b3..c6932f417b 100644 --- a/src/ui_interface.h +++ b/src/ui_interface.h @@ -16,6 +16,7 @@ #include #include "scraper/fwd.h" +#include "neuralnet/superblock.h" class CBasicKeyStore; class CWallet; diff --git a/src/uint256.h b/src/uint256.h index 6fd1fd14ee..fa66d2342f 100644 --- a/src/uint256.h +++ b/src/uint256.h @@ -342,11 +342,21 @@ class base_uint return (unsigned char*)&pn[0]; } + const unsigned char* begin() const + { + return (const unsigned char*)&pn[0]; + } + unsigned char* end() { return (unsigned char*)&pn[WIDTH]; } + const unsigned char* end() const + { + return (const unsigned char*)&pn[WIDTH]; + } + unsigned int size() { return sizeof(pn); diff --git a/src/util.cpp b/src/util.cpp index 8bef3888c8..e8be303afb 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -1253,6 +1253,33 @@ void ShrinkDebugFile() } } +std::string GetFileContents(std::string filepath) +{ + if (!boost::filesystem::exists(filepath)) { + LogPrintf("GetFileContents: file does not exist %s", filepath); + return "-1"; + } + + std::ifstream in(filepath, std::ios::in | std::ios::binary); + + if (in.fail()) { + LogPrintf("GetFileContents: error opening file %s", filepath); + return "-1"; + } + + if (fDebug10) LogPrintf("loading file to string %s", filepath); + + std::ostringstream out; + + out << in.rdbuf(); + + // Immediately close instead of waiting for the destructor to decrease the + // chance of a race when calling this to read BOINC's client_state.xml: + in.close(); + + return out.str(); +} + // // "Never go to sea with two chronometers; take one or three." // Our three time sources are: diff --git a/src/util.h b/src/util.h index 9a33cf47ba..54549c560a 100644 --- a/src/util.h +++ b/src/util.h @@ -192,8 +192,6 @@ bool WildcardMatch(const char* psz, const char* mask); bool WildcardMatch(const std::string& str, const std::string& mask); void FileCommit(FILE *fileout); -int GetFilesize(FILE* file); - std::string TimestampToHRDate(double dtm); bool RenameOver(boost::filesystem::path src, boost::filesystem::path dest); @@ -211,6 +209,16 @@ void ReadConfigFile(ArgsMap& mapSettingsRet, ArgsMultiMap& mapMultiSettingsRet); boost::filesystem::path GetSpecialFolderPath(int nFolder, bool fCreate = true); #endif void ShrinkDebugFile(); + +//! +//! \brief Read the contents of the specified file into memory. +//! +//! \param filepath The path to the file. Provide absolute paths when possible. +//! +//! \return The file contents as a string. +//! +std::string GetFileContents(std::string filepath); + int GetRandInt(int nMax); uint64_t GetRand(uint64_t nMax); uint256 GetRandHash(); @@ -341,7 +349,8 @@ std::string HexStr(const T itbegin, const T itend, bool fSpaces=false) return rv; } -inline std::string HexStr(const std::vector& vch, bool fSpaces=false) +template +inline std::string HexStr(const T& vch, bool fSpaces=false) { return HexStr(vch.begin(), vch.end(), fSpaces); } diff --git a/src/wallet.cpp b/src/wallet.cpp index 8ef137cc7f..ccb2517370 100644 --- a/src/wallet.cpp +++ b/src/wallet.cpp @@ -13,7 +13,6 @@ #include "coincontrol.h" #include #include -#include "cpid.h" #include "block.h" #include "rpcserver.h" #include "rpcclient.h" @@ -34,17 +33,6 @@ int64_t GetMaximumBoincSubsidy(int64_t nTime); bool fConfChange; unsigned int nDerivationMethodIndex; -namespace -{ - int64_t CoinFromValue(double dAmount) - { - if (dAmount <= 0.0 || dAmount > MAX_MONEY) throw JSONRPCError(RPC_TYPE_ERROR, "Invalid amount"); - int64_t nAmount = roundint64(dAmount * COIN); - if (!MoneyRange(nAmount)) throw JSONRPCError(RPC_TYPE_ERROR, "Invalid amount"); - return nAmount; - } -} - ////////////////////////////////////////////////////////////////////////////// // // mapWallet @@ -1530,19 +1518,19 @@ bool CWallet::SelectCoinsForStaking(int64_t nTargetValueIn, unsigned int nSpendT return true; } -bool CWallet::CreateTransaction(const vector >& vecSend, CWalletTx& wtxNew, CReserveKey& reservekey, - int64_t& nFeeRet, const CCoinControl* coinControl) +bool CWallet::CreateTransaction(const vector >& vecSend, set>& setCoins, + CWalletTx& wtxNew, CReserveKey& reservekey, int64_t& nFeeRet, const CCoinControl* coinControl) { - int64_t nValue = 0; + int64_t nValueOut = 0; for (auto const& s : vecSend) { - if (nValue < 0) + if (nValueOut < 0) return false; - nValue += s.second; + nValueOut += s.second; } - if (vecSend.empty() || nValue < 0) + if (vecSend.empty() || nValueOut < 0) return false; wtxNew.BindWallet(this); @@ -1559,24 +1547,36 @@ bool CWallet::CreateTransaction(const vector >& vecSend, wtxNew.vout.clear(); wtxNew.fFromMe = true; - int64_t nTotalValue = nValue + nFeeRet; + int64_t nTotalValue = nValueOut + nFeeRet; double dPriority = 0; // vouts to the payees for (auto const& s : vecSend) wtxNew.vout.push_back(CTxOut(s.second, s.first)); - // Choose coins to use - set > setCoins; int64_t nValueIn = 0; - if (!SelectCoins(nTotalValue, wtxNew.nTime, setCoins, nValueIn, coinControl)) - return false; + + // If provided coin set is empty, choose coins to use. + if (!setCoins.size()) + { + if (!SelectCoins(nTotalValue, wtxNew.nTime, setCoins, nValueIn, coinControl)) + return false; + } + else + { + // Add up input value for the provided set of coins. + for (auto const& input : setCoins) + { + nValueIn += input.first->vout[input.second].nValue; + } + } + for (auto const& pcoin : setCoins) { int64_t nCredit = pcoin.first->vout[pcoin.second].nValue; dPriority += (double)nCredit * pcoin.first->GetDepthInMainChain(); } - int64_t nChange = nValueIn - nValue - nFeeRet; + int64_t nChange = nValueIn - nValueOut - nFeeRet; // if sub-cent change is required, the fee must be raised to at least MIN_TX_FEE // or until nChange becomes zero // NOTE: this depends on the exact behaviour of GetMinFee @@ -1659,6 +1659,18 @@ bool CWallet::CreateTransaction(const vector >& vecSend, return true; } +bool CWallet::CreateTransaction(const vector >& vecSend, CWalletTx& wtxNew, CReserveKey& reservekey, + int64_t& nFeeRet, const CCoinControl* coinControl) +{ + // Initialize setCoins empty to let CreateTransaction choose via SelectCoins... + set> setCoins; + + return CreateTransaction(vecSend, setCoins, wtxNew, reservekey, nFeeRet, coinControl); +} + + + + bool CWallet::CreateTransaction(CScript scriptPubKey, int64_t nValue, CWalletTx& wtxNew, CReserveKey& reservekey, int64_t& nFeeRet, const CCoinControl* coinControl) { vector< pair > vecSend; diff --git a/src/wallet.h b/src/wallet.h index f6f73a60e6..129810270c 100644 --- a/src/wallet.h +++ b/src/wallet.h @@ -7,6 +7,7 @@ #include #include +#include #include #include "main.h" #include "key.h" @@ -199,6 +200,7 @@ class CWallet : public CCryptoKeyStore int64_t GetStake() const; int64_t GetNewMint() const; bool CreateTransaction(const std::vector >& vecSend, CWalletTx& wtxNew, CReserveKey& reservekey, int64_t& nFeeRet, const CCoinControl *coinControl=NULL); + bool CreateTransaction(const std::vector >& vecSend, std::set>& setCoins, CWalletTx& wtxNew, CReserveKey& reservekey, int64_t& nFeeRet, const CCoinControl *coinControl=NULL); bool CreateTransaction(CScript scriptPubKey, int64_t nValue, CWalletTx& wtxNew, CReserveKey& reservekey, int64_t& nFeeRet, const CCoinControl *coinControl=NULL); bool CommitTransaction(CWalletTx& wtxNew, CReserveKey& reservekey);