diff --git a/CLAUDE.md b/CLAUDE.md index 30cda513f48..6210515f339 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -108,10 +108,10 @@ For detailed patterns, see COMMON_FIXES.md ## Important Notes - **Three-way comparison**: Always compare v8.26 ↔ v8.22.2 ↔ Bitcoin v26.2 -- **Test all variants**: --descriptors, --legacy-wallet, --usecli +- **Test all variants**: --descriptors, --legacy-wallet, --usecli, --v2transport - **Document everything**: Update tracking files immediately - **Mock scrypt**: Currently using mock, causes PoW validation issues -- **v2transport tests**: p2p_leak_tx.py --v2transport is disabled (causes hang) as v2transport is not supported in DigiByte +- **V2 transport**: BIP324 V2 P2P transport is fully supported and tested (disabled by default, enable with `-v2transport=1`) --- diff --git a/DIGIBYTE_v8.26_RPC_FIX_IMPLEMENTATION_PLAN.md b/DIGIBYTE_v8.26_RPC_FIX_IMPLEMENTATION_PLAN.md deleted file mode 100644 index 8cf7a410138..00000000000 --- a/DIGIBYTE_v8.26_RPC_FIX_IMPLEMENTATION_PLAN.md +++ /dev/null @@ -1,377 +0,0 @@ -# DigiByte v8.26 RPC Fix Implementation Plan -## Minimal Changes to Restore v8.22 Multi-Algorithm Functionality - -**Date**: 2025-08-30 -**Objective**: Fix 4 critical RPC issues with minimal code changes, maintaining v8.26 architecture while restoring v8.22 functionality - ---- - -## Quick Task Summary for Sub-Agent Assignment - -### 🔴 CRITICAL RPC FIXES (Priority 1) - -| Task # | Fix | File | Lines | Issue | -|--------|-----|------|-------|-------| -| 1 | `getdifficulty` | `src/rpc/blockchain.cpp` | 428-446 | Returns single value instead of multi-algo object | -| 2 | `getmininginfo` | `src/rpc/mining.cpp` | After 505 | Missing "networkhashesps" field | -| 3 | `blockheaderToJSON` | `src/rpc/blockchain.cpp` | 170-172 | Wrong difficulty + missing algo fields | -| 4 | `generateblock` | `src/rpc/mining.cpp` | 400 | Hardcoded to SHA256D instead of miningAlgo | - -### 🟡 HIGH PRIORITY FIXES (Priority 2) - -| Task # | Fix | File | Lines | Issue | -|--------|-----|------|-------|-------| -| 5 | `generatetodescriptor` | `src/rpc/mining.cpp` | 236-273 | Missing algorithm parameter | -| 6 | Example addresses | `src/rpc/util.cpp` | 26 | Bitcoin addresses instead of DigiByte | - -### 🟢 TESTING & VALIDATION (Priority 3) - -| Task # | Action | Details | -|--------|--------|----------| -| 7 | Fix test constants | Change `MULTIALGO_HEIGHT = 290` to `100` in test file | -| 8 | Run test suite | Execute `feature_digibyte_multialgo_mining.py` | - -**Total Tasks**: 8 | **Critical**: 4 | **Estimated Time**: 2-4 hours | **Risk**: LOW - ---- - -## Critical Fix #1: Restore Multi-Algorithm `getdifficulty` - -### Current Issue -- **Location**: `src/rpc/blockchain.cpp:443` -- **Problem**: Returns single difficulty value instead of per-algorithm object -- **Impact**: Mining pools cannot query individual algorithm difficulties - -### Implementation Fix - -```cpp -// src/rpc/blockchain.cpp - Replace lines 428-446 - -static RPCHelpMan getdifficulty() -{ - return RPCHelpMan{"getdifficulty", - "\nReturns the proof-of-work difficulty for all active DigiByte mining algorithms.\n", - {}, - RPCResult{ - RPCResult::Type::OBJ, "", "", - { - {RPCResult::Type::OBJ, "difficulties", "The current difficulty for all active DigiByte algorithms", - { - {RPCResult::Type::NUM, "sha256d", /*optional=*/true, "SHA256D difficulty"}, - {RPCResult::Type::NUM, "scrypt", /*optional=*/true, "Scrypt difficulty"}, - {RPCResult::Type::NUM, "groestl", /*optional=*/true, "Groestl difficulty (before Odocrypt)"}, - {RPCResult::Type::NUM, "skein", /*optional=*/true, "Skein difficulty"}, - {RPCResult::Type::NUM, "qubit", /*optional=*/true, "Qubit difficulty"}, - {RPCResult::Type::NUM, "odo", /*optional=*/true, "Odocrypt difficulty (after activation)"}, - }}, - }}, - RPCExamples{ - HelpExampleCli("getdifficulty", "") - + HelpExampleRpc("getdifficulty", "") - }, - [&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue -{ - ChainstateManager& chainman = EnsureAnyChainman(request.context); - LOCK(cs_main); - - const CBlockIndex* tip = chainman.ActiveChain().Tip(); - const Consensus::Params& consensusParams = chainman.GetParams().GetConsensus(); - - UniValue obj(UniValue::VOBJ); - UniValue difficulties(UniValue::VOBJ); - - // Add difficulty for each active algorithm - for (int algo = 0; algo < NUM_ALGOS_IMPL; algo++) { - if (IsAlgoActive(tip, consensusParams, algo)) { - difficulties.pushKV(GetAlgoName(algo), GetDifficulty(tip, nullptr, algo)); - } - } - - obj.pushKV("difficulties", difficulties); - return obj; -}, - }; -} -``` - -### Testing -```bash -# Expected output format: -./digibyted getdifficulty -{ - "difficulties": { - "sha256d": 12345.67, - "scrypt": 23456.78, - "skein": 34567.89, - "qubit": 45678.90, - "odo": 56789.01 - } -} -``` - ---- - -## Critical Fix #2: Add `networkhashesps` to `getmininginfo` - -### Current Issue -- **Location**: `src/rpc/mining.cpp:441-513` -- **Problem**: Missing per-algorithm network hashrate field -- **Impact**: Cannot monitor individual algorithm network hashrates - -### Implementation Fix - -```cpp -// src/rpc/mining.cpp - Add after line 505 (after difficulties object) - - // Add per-algorithm network hashrates (DigiByte specific) - UniValue networkhashesps(UniValue::VOBJ); - for (int algo = 0; algo < NUM_ALGOS_IMPL; algo++) { - if (IsAlgoActive(tip, consensusParams, algo)) { - // Calculate hashrate for last 120 blocks of this algorithm - networkhashesps.pushKV(GetAlgoName(algo), - GetNetworkHashPS(120, -1, active_chain, algo)); - } - } - obj.pushKV("networkhashesps", networkhashesps); -``` - -### Update RPCResult definition (around line 463) -```cpp -// Add after the "difficulties" field definition -{RPCResult::Type::OBJ, "networkhashesps", "Network hashes per second for each algorithm", - { - {RPCResult::Type::NUM, "sha256d", /*optional=*/true, "SHA256D network hashrate"}, - {RPCResult::Type::NUM, "scrypt", /*optional=*/true, "Scrypt network hashrate"}, - {RPCResult::Type::NUM, "groestl", /*optional=*/true, "Groestl network hashrate"}, - {RPCResult::Type::NUM, "skein", /*optional=*/true, "Skein network hashrate"}, - {RPCResult::Type::NUM, "qubit", /*optional=*/true, "Qubit network hashrate"}, - {RPCResult::Type::NUM, "odo", /*optional=*/true, "Odocrypt network hashrate"}, - }}, -``` - ---- - -## Critical Fix #3: Correct `blockheaderToJSON` Difficulty and Add Algorithm Fields - -### Current Issue -- **Location**: `src/rpc/blockchain.cpp:170-172` -- **Problem 1**: Uses default algorithm (Groestl) for all blocks -- **Problem 2**: Missing algorithm fields that exist in `blockToJSON` -- **Impact**: Wrong difficulty and missing algorithm information in block headers - -### Implementation Fix - -```cpp -// src/rpc/blockchain.cpp - Replace line 170 and add algorithm fields after it - - // OLD: result.pushKV("difficulty", GetDifficulty(nullptr, blockindex)); - - // NEW: Fix difficulty to use block's actual algorithm - result.pushKV("difficulty", GetDifficulty(nullptr, blockindex, blockindex->GetAlgo())); - - // REQUIRED: Add algorithm fields (these exist in blockToJSON, must be in header too) - result.pushKV("pow_algo_id", blockindex->GetAlgo()); - result.pushKV("pow_algo", GetAlgoName(blockindex->GetAlgo())); - - // Note: pow_hash requires the full block, not available in blockheaderToJSON - // Note: odo_key would require consensus params - could be added if needed -``` - -**IMPORTANT**: These algorithm fields are NOT optional. The v8.26 `blockToJSON` already includes `pow_algo_id`, `pow_algo`, and `pow_hash` (lines 190-193). For consistency, `blockheaderToJSON` should have at least the algo_id and algo name. - -### Optional Enhancement: Add Algorithm Fields -```cpp -// Add after difficulty line (171+) - result.pushKV("pow_algo_id", blockindex->GetAlgo()); - result.pushKV("pow_algo", GetAlgoName(blockindex->GetAlgo())); - - // Add Odocrypt key if applicable - if (blockindex->GetAlgo() == ALGO_ODO) { - result.pushKV("odo_key", (int64_t)OdoKey(chainman.GetParams().GetConsensus(), blockindex->nTime)); - } -``` - ---- - -## Critical Fix #4: Fix `generateblock` Algorithm - -### Current Issue -- **Location**: `src/rpc/mining.cpp:400` -- **Problem**: Hardcoded to SHA256D instead of using miningAlgo -- **Impact**: Cannot generate blocks with configured algorithm - -### Implementation Fix - -```cpp -// src/rpc/mining.cpp - Replace line 400 - - // OLD: - // std::unique_ptr blocktemplate( - // BlockAssembler{chainman.ActiveChainstate(), nullptr}.CreateNewBlock(coinbase_script, ALGO_SHA256D)); - - // NEW: Use miningAlgo (defaults to ALGO_SCRYPT in DigiByte) - std::unique_ptr blocktemplate( - BlockAssembler{chainman.ActiveChainstate(), nullptr}.CreateNewBlock(coinbase_script, miningAlgo)); -``` - ---- - -## Additional Fix: Add Algorithm Parameter to `generatetodescriptor` - -### Current Issue -- **Location**: `src/rpc/mining.cpp:236-273` -- **Problem**: Missing algorithm parameter that exists in v8.22 - -### Implementation Fix - -```cpp -// src/rpc/mining.cpp - Add after line 244 (after maxtries parameter) - - {"algo", RPCArg::Type::STR, RPCArg::Default{GetAlgoName(ALGO_SCRYPT)}, - "The mining algorithm to use (sha256d, scrypt, groestl, skein, qubit, odo)"}, - -// Then update the function body (around line 260) to parse the algorithm: - - const int num_blocks{request.params[0].get_int()}; - const uint64_t max_tries{request.params[2].isNull() ? DEFAULT_MAX_TRIES : request.params[2].get_int()}; - - // Add algorithm parsing - int algo = ALGO_SCRYPT; // Default - if (!request.params[3].isNull()) { - std::string strAlgo = request.params[3].get_str(); - algo = GetAlgoByName(strAlgo, ALGO_SCRYPT); - } - - // Then use 'algo' when calling generateBlocks: - return generateBlocks(chainman, mempool, coinbase_script, num_blocks, max_tries, algo); -``` - ---- - -## Testing Strategy - -### 1. Unit Tests -Add to `src/test/rpc_tests.cpp`: -```cpp -BOOST_AUTO_TEST_CASE(rpc_getdifficulty_multialgo) -{ - // Test that getdifficulty returns an object with difficulties field - UniValue r = CallRPC("getdifficulty"); - BOOST_CHECK(r.isObject()); - BOOST_CHECK(r.exists("difficulties")); - BOOST_CHECK(r["difficulties"].isObject()); -} -``` - -### 2. Functional Test (see next section for complete test) - -### 3. Manual Testing Commands -```bash -# Test getdifficulty -./digibyte-cli getdifficulty - -# Test getmininginfo -./digibyte-cli getmininginfo | jq '.networkhashesps' - -# Test block header -./digibyte-cli getblockheader $(./digibyte-cli getbestblockhash) - -# Test block generation with algorithm -./digibyte-cli generatetoaddress 1 $(./digibyte-cli getnewaddress) 100000 scrypt -./digibyte-cli generatetoaddress 1 $(./digibyte-cli getnewaddress) 100000 sha256d -``` - ---- - -## Implementation Order - -1. **Phase 1: Core Fixes (Day 1)** - - Fix `getdifficulty` (30 mins) - - Fix `blockheaderToJSON` difficulty (15 mins) - - Test basic functionality - -2. **Phase 2: Mining Info (Day 1)** - - Add `networkhashesps` to `getmininginfo` (30 mins) - - Fix `generateblock` algorithm (15 mins) - - Test mining operations - -3. **Phase 3: Enhancements (Day 2)** - - Add algorithm parameter to `generatetodescriptor` (30 mins) - - Add algorithm fields to `blockheaderToJSON` (20 mins) - - Complete testing suite - -4. **Phase 4: Validation (Day 2)** - - Run full functional test suite - - Test with mining pool software - - Verify block explorer compatibility - ---- - -## Risk Assessment - -| Fix | Risk Level | Mitigation | -|-----|------------|------------| -| `getdifficulty` | LOW | Simple output format change | -| `networkhashesps` | LOW | Adding field, not modifying existing | -| `blockheaderToJSON` | MEDIUM | Ensure GetAlgo() works correctly | -| `generateblock` | LOW | Uses existing miningAlgo variable | -| `generatetodescriptor` | MEDIUM | Parameter parsing needs validation | - ---- - -## Validation Checklist - -- [ ] All algorithms report correct difficulty -- [ ] Network hashrates display for active algorithms -- [ ] Block headers show correct difficulty for their algorithm -- [ ] Block generation uses configured algorithm -- [ ] Mining pools can connect and query statistics -- [ ] Block explorers display algorithm information -- [ ] Regression tests pass -- [ ] No performance degradation - ---- - -## Notes - -1. **Minimal Changes**: All fixes restore v8.22 functionality with minimal code changes -2. **Backward Compatible**: Changes add fields/functionality without breaking existing -3. **Algorithm Constants**: Ensure NUM_ALGOS_IMPL is properly defined (should be 6) -4. **Odocrypt Handling**: Test after activation height (mainnet: 9,112,320, regtest: 600) - ---- - -### Key References for Sub-Agents - -**Algorithm IDs:** -- ALGO_SHA256D = 0 -- ALGO_SCRYPT = 1 (default) -- ALGO_GROESTL = 2 (replaced by Odocrypt) -- ALGO_SKEIN = 3 -- ALGO_QUBIT = 4 -- ALGO_ODO = 7 - -**Important Functions:** -- `IsAlgoActive(tip, consensusParams, algo)` -- `GetAlgoName(algo)` -- `GetAlgoByName(name, fallback)` -- `GetDifficulty(tip, blockindex, algo)` -- `GetNetworkHashPS(lookup, height, chain, algo)` - -**Success Criteria:** -✅ `getdifficulty` returns object with "difficulties" field -✅ `getmininginfo` includes "networkhashesps" field -✅ Block headers show correct difficulty -✅ `generateblock` uses miningAlgo -✅ All tests pass - ---- - -## Code Review Checklist - -Before committing: -1. Verify all algorithm IDs match v8.22 definitions -2. Check that IsAlgoActive() is called correctly -3. Ensure GetAlgoName() handles all algorithm IDs -4. Test with both pre and post-Odocrypt blocks -5. Verify no hardcoded algorithm assumptions remain \ No newline at end of file diff --git a/configure.ac b/configure.ac index af772a05f03..174109c7f19 100644 --- a/configure.ac +++ b/configure.ac @@ -1,9 +1,9 @@ AC_PREREQ([2.69]) define(_CLIENT_VERSION_MAJOR, 8) define(_CLIENT_VERSION_MINOR, 26) -define(_CLIENT_VERSION_BUILD, 0) +define(_CLIENT_VERSION_BUILD, 1) define(_CLIENT_VERSION_RC, 0) -define(_CLIENT_VERSION_IS_RELEASE, false) +define(_CLIENT_VERSION_IS_RELEASE, true) define(_COPYRIGHT_YEAR, 2025) define(_COPYRIGHT_HOLDERS,[The %s developers]) define(_COPYRIGHT_HOLDERS_SUBSTITUTION,[[DigiByte Core]]) diff --git a/depends/packages/qt.mk b/depends/packages/qt.mk index 61f263f2143..060406efc55 100644 --- a/depends/packages/qt.mk +++ b/depends/packages/qt.mk @@ -1,6 +1,6 @@ package=qt $(package)_version=5.15.10 -$(package)_download_path=https://download.qt.io/official_releases/qt/5.15/$($(package)_version)/submodules +$(package)_download_path=https://download.qt.io/archive/qt/5.15/$($(package)_version)/submodules $(package)_suffix=everywhere-opensource-src-$($(package)_version).tar.xz $(package)_file_name=qtbase-$($(package)_suffix) $(package)_sha256_hash=c0d06cb18d20f10bf7ad53552099e097ec39362d30a5d6f104724f55fa1c8fb9 diff --git a/src/crypto/scrypt.cpp b/src/crypto/scrypt.cpp index 96d500d9631..962f7c706c2 100644 --- a/src/crypto/scrypt.cpp +++ b/src/crypto/scrypt.cpp @@ -44,7 +44,9 @@ #endif #endif -static inline void be32enc(void *pp, uint32_t x) +// Scrypt-specific endian function to avoid conflicts with system headers +// This works with potentially unaligned pointers and is portable across all platforms +static inline void scrypt_be32enc(void *pp, uint32_t x) { uint8_t *p = (uint8_t *)pp; p[3] = x & 0xff; @@ -78,7 +80,7 @@ PBKDF2_SHA256(const uint8_t *passwd, size_t passwdlen, const uint8_t *salt, /* Iterate through the blocks. */ for (i = 0; i * 32 < dkLen; i++) { /* Generate INT(i + 1). */ - be32enc(ivec, (uint32_t)(i + 1)); + scrypt_be32enc(ivec, (uint32_t)(i + 1)); /* Compute U_1 = PRF(P, S || INT(i)). */ memcpy(&hctx, &PShctx, sizeof(CHMAC_SHA256)); @@ -190,7 +192,7 @@ void scrypt_1024_1_1_256_sp_generic(const char *input, char *output, char *scrat PBKDF2_SHA256((const uint8_t *)input, 80, (const uint8_t *)input, 80, 1, B, 128); for (k = 0; k < 32; k++) - X[k] = le32dec(&B[4 * k]); + X[k] = scrypt_le32dec(&B[4 * k]); for (i = 0; i < 1024; i++) { memcpy(&V[i * 32], X, 128); @@ -206,7 +208,7 @@ void scrypt_1024_1_1_256_sp_generic(const char *input, char *output, char *scrat } for (k = 0; k < 32; k++) - le32enc(&B[4 * k], X[k]); + scrypt_le32enc(&B[4 * k], X[k]); PBKDF2_SHA256((const uint8_t *)input, 80, B, 128, 1, (uint8_t *)output, 32); } diff --git a/src/crypto/scrypt.h b/src/crypto/scrypt.h index 5431fb67cee..113df34ca45 100644 --- a/src/crypto/scrypt.h +++ b/src/crypto/scrypt.h @@ -27,19 +27,21 @@ void PBKDF2_SHA256(const uint8_t *passwd, size_t passwdlen, const uint8_t *salt, size_t saltlen, uint64_t c, uint8_t *buf, size_t dkLen); -static inline uint32_t le32dec(const void *pp) +// Scrypt-specific endian functions to avoid conflicts with system headers +// These work with potentially unaligned pointers and are portable across all platforms +static inline uint32_t scrypt_le32dec(const void *pp) { - const uint8_t *p = (uint8_t const *)pp; - return ((uint32_t)(p[0]) + ((uint32_t)(p[1]) << 8) + - ((uint32_t)(p[2]) << 16) + ((uint32_t)(p[3]) << 24)); + const uint8_t *p = (uint8_t const *)pp; + return ((uint32_t)(p[0]) + ((uint32_t)(p[1]) << 8) + + ((uint32_t)(p[2]) << 16) + ((uint32_t)(p[3]) << 24)); } -static inline void le32enc(void *pp, uint32_t x) +static inline void scrypt_le32enc(void *pp, uint32_t x) { - uint8_t *p = (uint8_t *)pp; - p[0] = x & 0xff; - p[1] = (x >> 8) & 0xff; - p[2] = (x >> 16) & 0xff; - p[3] = (x >> 24) & 0xff; + uint8_t *p = (uint8_t *)pp; + p[0] = x & 0xff; + p[1] = (x >> 8) & 0xff; + p[2] = (x >> 16) & 0xff; + p[3] = (x >> 24) & 0xff; } #endif diff --git a/src/qt/digibyte.cpp b/src/qt/digibyte.cpp index 0bf8b525df6..a0ae5018bc1 100644 --- a/src/qt/digibyte.cpp +++ b/src/qt/digibyte.cpp @@ -301,13 +301,15 @@ void DigiByteApplication::applyTheme() theme = "dark"; } - // NOTE: CSS hot-loading functionality disabled for production - // Uncomment the following block to enable live CSS reloading from ~/.digibyte-dev/css/ for rapid development + // NOTE: CSS hot-loading functionality DISABLED for production + // To enable for development, uncomment the block below + // This allows live CSS reloading from ~/.digibyte-dev/css/ for rapid theming development + /* // Check if we should use external CSS for live reloading (development mode) QString externalCssDir = QDir::homePath() + "/.digibyte-dev/css/"; QString externalCssPath = externalCssDir + theme + ".css"; - + QFileInfo externalFile(externalCssPath); if (externalFile.exists() && externalFile.isReadable()) { // Use external CSS file for live reloading @@ -315,7 +317,7 @@ void DigiByteApplication::applyTheme() qDebug() << "Using external CSS for live reloading:" << m_externalCssPath; qDebug() << "Press F5 to reload CSS manually"; loadExternalStyleSheet(); - + // Set up file watcher if (!m_cssWatcher) { m_cssWatcher = new QFileSystemWatcher(this); @@ -326,7 +328,7 @@ void DigiByteApplication::applyTheme() m_cssWatcher->removePaths(m_cssWatcher->files()); } m_cssWatcher->addPath(m_externalCssPath); - + return; } */ @@ -586,8 +588,9 @@ bool DigiByteApplication::event(QEvent* e) return true; } - // NOTE: F5 CSS reload functionality disabled for production - // Uncomment to enable F5 key CSS reloading when using external stylesheets + // NOTE: F5 CSS reload functionality DISABLED for production + // Uncomment to enable for development + /* // Handle F5 key for CSS reload when using external stylesheets if (e->type() == QEvent::KeyPress && !m_externalCssPath.isEmpty()) { diff --git a/src/qt/locale/digibyte_ar.ts b/src/qt/locale/digibyte_ar.ts index 358fb5d92d9..249a089ac17 100644 --- a/src/qt/locale/digibyte_ar.ts +++ b/src/qt/locale/digibyte_ar.ts @@ -72,7 +72,7 @@ These are your DigiByte addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses. Signing is only possible with addresses of the type 'legacy'. - هذه هي عناوين بتكوين الخاصة بك لتلقي المدفوعات. استخدم الزر "إنشاء عنوان استلام جديد" في علامة تبويب الاستلام لإنشاء عناوين جديدة. + هذه هي عناوين DigiByte الخاصة بك لتلقي المدفوعات. استخدم الزر "إنشاء عنوان استلام جديد" في علامة تبويب الاستلام لإنشاء عناوين جديدة. التوقيع ممكن فقط مع عناوين من النوع "قديم". @@ -481,7 +481,7 @@ Signing is only possible with addresses of the type 'legacy'. Load Partially Signed DigiByte Transaction - تحميل معاملة بتكوين الموقعة جزئيًا + تحميل معاملة DigiByte الموقعة جزئيًا Load PSBT from clipboard... @@ -489,7 +489,7 @@ Signing is only possible with addresses of the type 'legacy'. Load Partially Signed DigiByte Transaction from clipboard - تحميل معاملة بتكوين الموقعة جزئيًا من الحافظة + تحميل معاملة DigiByte الموقعة جزئيًا من الحافظة Node window @@ -537,7 +537,7 @@ Signing is only possible with addresses of the type 'legacy'. Show the %1 help message to get a list with possible DigiByte command-line options - بين اشارة المساعدة %1 للحصول على قائمة من خيارات اوامر البت كوين المحتملة + بين اشارة المساعدة %1 للحصول على قائمة من خيارات اوامر DigiByte المحتملة &Mask values @@ -1011,7 +1011,7 @@ Signing is only possible with addresses of the type 'legacy'. DigiByte - بتكوين + DigiByte Discard blocks after verification, except most recent %1 GB (prune) @@ -1027,7 +1027,7 @@ Signing is only possible with addresses of the type 'legacy'. %1 will download and store a copy of the DigiByte block chain. - سيقوم %1 بتنزيل نسخة من سلسلة كتل بتكوين وتخزينها. + سيقوم %1 بتنزيل نسخة من سلسلة كتل DigiByte وتخزينها. The wallet will also be stored in this directory. @@ -1054,7 +1054,7 @@ Signing is only possible with addresses of the type 'legacy'. Attempting to spend digibytes that are affected by not-yet-displayed transactions will not be accepted by the network. - لن تقبل الشبكة محاولة إنفاق البتكوين المتأثرة بالمعاملات التي لم يتم عرضها بعد. + لن تقبل الشبكة محاولة إنفاق الDigiByte المتأثرة بالمعاملات التي لم يتم عرضها بعد. Number of blocks left @@ -1097,7 +1097,7 @@ Signing is only possible with addresses of the type 'legacy'. OpenURIDialog Open digibyte URI - افتح بتكوين URI + افتح DigiByte URI URI: @@ -1239,7 +1239,7 @@ Signing is only possible with addresses of the type 'legacy'. Connect to the DigiByte network through a SOCKS5 proxy. - الاتصال بشبكة البتكوين عبر وكيل SOCKS5. + الاتصال بشبكة الDigiByte عبر وكيل SOCKS5. &Connect through SOCKS5 proxy (default proxy): @@ -1315,7 +1315,7 @@ Signing is only possible with addresses of the type 'legacy'. Connect to the DigiByte network through a separate SOCKS5 proxy for Tor onion services. - اتصل بشبكة بتكوين من خلال وكيل SOCKS5 منفصل لخدمات Tor onion. + اتصل بشبكة DigiByte من خلال وكيل SOCKS5 منفصل لخدمات Tor onion. Use separate SOCKS&5 proxy to reach peers via Tor onion services: @@ -1390,7 +1390,7 @@ Signing is only possible with addresses of the type 'legacy'. The displayed information may be out of date. Your wallet automatically synchronizes with the DigiByte network after a connection is established, but this process has not completed yet. - قد تكون المعلومات المعروضة قديمة. تتزامن محفظتك تلقائيًا مع شبكة البتكوين بعد إنشاء الاتصال، ولكن هذه العملية لم تكتمل بعد. + قد تكون المعلومات المعروضة قديمة. تتزامن محفظتك تلقائيًا مع شبكة الDigiByte بعد إنشاء الاتصال، ولكن هذه العملية لم تكتمل بعد. Watch-only: @@ -1556,7 +1556,7 @@ Signing is only possible with addresses of the type 'legacy'. Cannot start digibyte: click-to-pay handler - لا يمكن تشغيل بتكوين: معالج النقر للدفع + لا يمكن تشغيل DigiByte: معالج النقر للدفع URI handling @@ -1568,7 +1568,7 @@ Signing is only possible with addresses of the type 'legacy'. URI cannot be parsed! This can be caused by an invalid DigiByte address or malformed URI parameters. - لا يمكن تحليل العنوان (URI)! يمكن أن يحدث هذا بسبب عنوان بتكوين غير صالح أو معلمات عنوان (URI) غير صحيحة. + لا يمكن تحليل العنوان (URI)! يمكن أن يحدث هذا بسبب عنوان DigiByte غير صالح أو معلمات عنوان (URI) غير صحيحة. Payment request file handling @@ -1610,7 +1610,7 @@ Signing is only possible with addresses of the type 'legacy'. Enter a DigiByte address (e.g. %1) - ادخل عنوان محفطة البتكوين (مثال %1) + ادخل عنوان محفطة الDigiByte (مثال %1) %1 d @@ -2003,7 +2003,7 @@ Signing is only possible with addresses of the type 'legacy'. An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the DigiByte network. - رسالة اختيارية لإرفاقها بطلب الدفع، والتي سيتم عرضها عند فتح الطلب. ملاحظة: لن يتم إرسال الرسالة مع الدفعة عبر شبكة البتكوين. + رسالة اختيارية لإرفاقها بطلب الدفع، والتي سيتم عرضها عند فتح الطلب. ملاحظة: لن يتم إرسال الرسالة مع الدفعة عبر شبكة الDigiByte. An optional label to associate with the new receiving address. @@ -2388,7 +2388,7 @@ Signing is only possible with addresses of the type 'legacy'. Warning: Invalid DigiByte address - تحذير: عنوان بتكوين غير صالح + تحذير: عنوان DigiByte غير صالح Warning: Unknown change address @@ -2423,7 +2423,7 @@ Signing is only possible with addresses of the type 'legacy'. The DigiByte address to send the payment to - عنوان البت كوين المرسل اليه الدفع + عنوان DigiByte المرسل اليه الدفع Alt+A @@ -2443,7 +2443,7 @@ Signing is only possible with addresses of the type 'legacy'. The fee will be deducted from the amount being sent. The recipient will receive less digibytes than you enter in the amount field. If multiple recipients are selected, the fee is split equally. - سيتم خصم الرسوم من المبلغ الذي يتم إرساله. لذا سوف يتلقى المستلم مبلغ أقل من البتكوين المدخل في حقل المبلغ. في حالة تحديد عدة مستلمين، يتم تقسيم الرسوم بالتساوي. + سيتم خصم الرسوم من المبلغ الذي يتم إرساله. لذا سوف يتلقى المستلم مبلغ أقل من الDigiByte المدخل في حقل المبلغ. في حالة تحديد عدة مستلمين، يتم تقسيم الرسوم بالتساوي. S&ubtract fee from amount @@ -2471,7 +2471,7 @@ Signing is only possible with addresses of the type 'legacy'. A message that was attached to the digibyte: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the DigiByte network. - الرسالة التي تم إرفاقها مع البتكوين: العنوان الذي سيتم تخزينه مع المعاملة للرجوع إليه. ملاحظة: لن يتم إرسال هذه الرسالة عبر شبكة البتكوين. + الرسالة التي تم إرفاقها مع الDigiByte: العنوان الذي سيتم تخزينه مع المعاملة للرجوع إليه. ملاحظة: لن يتم إرسال هذه الرسالة عبر شبكة الDigiByte. Pay To: @@ -2505,7 +2505,7 @@ Signing is only possible with addresses of the type 'legacy'. The DigiByte address to sign the message with - عنوان البتكوين لتوقيع الرسالة به + عنوان الDigiByte لتوقيع الرسالة به Choose previously used address @@ -2537,7 +2537,7 @@ Signing is only possible with addresses of the type 'legacy'. Sign the message to prove you own this DigiByte address - وقع الرسالة لتثبت انك تمتلك عنوان البت كوين هذا + وقع الرسالة لتثبت انك تمتلك عنوان DigiByte هذا Sign &Message @@ -2557,11 +2557,11 @@ Signing is only possible with addresses of the type 'legacy'. The DigiByte address the message was signed with - عنوان البتكوين الذي تم توقيع الرسالة به + عنوان الDigiByte الذي تم توقيع الرسالة به Verify the message to ensure it was signed with the specified DigiByte address - تحقق من الرسالة للتأكد من توقيعها مع عنوان البتكوين المحدد + تحقق من الرسالة للتأكد من توقيعها مع عنوان الDigiByte المحدد Verify &Message diff --git a/src/qt/locale/digibyte_cmn.ts b/src/qt/locale/digibyte_cmn.ts index 659b1972d4f..12bfcffe58c 100644 --- a/src/qt/locale/digibyte_cmn.ts +++ b/src/qt/locale/digibyte_cmn.ts @@ -47,7 +47,7 @@ Choose the address to receive coins with - 选择接收比特币地址 + 选择接收极特币地址 C&hoose @@ -55,12 +55,12 @@ These are your DigiByte addresses for sending payments. Always check the amount and the receiving address before sending coins. - 这些是你的比特币支付地址。在发送之前,一定要核对金额和接收地址。 + 这些是你的极特币支付地址。在发送之前,一定要核对金额和接收地址。 These are your DigiByte addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses. Signing is only possible with addresses of the type 'legacy'. - 這些是您的比特幣接收地址。使用“接收”標籤中的“產生新的接收地址”按鈕產生新的地址。只能使用“傳統”類型的地址進行簽名。 + 這些是您的极特币接收地址。使用“接收”標籤中的“產生新的接收地址”按鈕產生新的地址。只能使用“傳統”類型的地址進行簽名。 &Copy Address @@ -156,7 +156,7 @@ Signing is only possible with addresses of the type 'legacy'. Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR DIGIBYTES</b>! - 警告: 如果把钱包加密后又忘记密码,你就会从此<b>失去其中所有的比特币了</b>! + 警告: 如果把钱包加密后又忘记密码,你就会从此<b>失去其中所有的极特币了</b>! Are you sure you wish to encrypt your wallet? @@ -458,7 +458,7 @@ Signing is only possible with addresses of the type 'legacy'. Send coins to a DigiByte address - 向一个比特币地址发币 + 向一个极特币地址发币 Backup wallet to another location @@ -506,7 +506,7 @@ Signing is only possible with addresses of the type 'legacy'. Verify messages to ensure they were signed with specified DigiByte addresses - 校验消息,确保该消息是由指定的比特币地址所有者签名的 + 校验消息,确保该消息是由指定的极特币地址所有者签名的 &Load PSBT from file… @@ -620,7 +620,7 @@ Signing is only possible with addresses of the type 'legacy'. Load Partially Signed DigiByte Transaction - 加载部分签名比特币交易(PSBT) + 加载部分签名极特币交易(PSBT) Load PSBT from &clipboard… @@ -628,7 +628,7 @@ Signing is only possible with addresses of the type 'legacy'. Load Partially Signed DigiByte Transaction from clipboard - 从剪贴板中加载部分签名比特币交易(PSBT) + 从剪贴板中加载部分签名极特币交易(PSBT) Node window @@ -752,7 +752,7 @@ Signing is only possible with addresses of the type 'legacy'. %n active connection(s) to DigiByte network. A substring of the tooltip. - %n 与比特币网络接。 + %n 与极特币网络接。 @@ -1291,7 +1291,7 @@ The migration process will create a backup of the wallet before migrating. This %1 will download and store a copy of the DigiByte block chain. - %1 将会下载并存储比特币区块链。 + %1 将会下载并存储极特币区块链。 The wallet will also be stored in this directory. @@ -1376,7 +1376,7 @@ The migration process will create a backup of the wallet before migrating. This Attempting to spend digibytes that are affected by not-yet-displayed transactions will not be accepted by the network. - 嘗試花費受尚未顯示的交易影響的比特幣將不會被網路接受。 + 嘗試花費受尚未顯示的交易影響的极特币將不會被網路接受。 Unknown… @@ -1415,7 +1415,7 @@ The migration process will create a backup of the wallet before migrating. This OpenURIDialog Open digibyte URI - 打开比特币URI + 打开极特币URI @@ -1530,7 +1530,7 @@ The migration process will create a backup of the wallet before migrating. This Automatically open the DigiByte client port on the router. This only works when your router supports NAT-PMP and it is enabled. The external port could be random. - 自動開啟路由器上的比特幣用戶端連接埠。 只有當您的路由器支援 NAT-PMP 並且已啟用時,此功能才有效。 外部連接埠可以是隨機的。 + 自動開啟路由器上的极特币用戶端連接埠。 只有當您的路由器支援 NAT-PMP 並且已啟用時,此功能才有效。 外部連接埠可以是隨機的。 Map port using NA&T-PMP @@ -1598,7 +1598,7 @@ The migration process will create a backup of the wallet before migrating. This Choose the default subdivision unit to show in the interface and when sending coins. - 选择显示及发送比特币时使用的最小单位。 + 选择显示及发送极特币时使用的最小单位。 Third-party URLs (e.g. a block explorer) that appear in the transactions tab as context menu items. %s in the URL is replaced by transaction hash. Multiple URLs are separated by vertical bar |. @@ -1610,7 +1610,7 @@ The migration process will create a backup of the wallet before migrating. This Connect to the DigiByte network through a separate SOCKS5 proxy for Tor onion services. - 连接比特币网络时专门为Tor onion服务使用另一个 SOCKS5 代理。 + 连接极特币网络时专门为Tor onion服务使用另一个 SOCKS5 代理。 Monospaced font in the Overview tab: @@ -1844,7 +1844,7 @@ If you are receiving this error you should request the merchant provide a BIP21 URI cannot be parsed! This can be caused by an invalid DigiByte address or malformed URI parameters. - 无法解析 URI 地址!可能是因为比特币地址无效,或是 URI 参数格式错误。 + 无法解析 URI 地址!可能是因为极特币地址无效,或是 URI 参数格式错误。 Payment request file handling @@ -2293,7 +2293,7 @@ For more information on using this console, type %6. An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the DigiByte network. - 可在支付请求上备注一条信息,在打开支付请求时可以看到。注意:该消息不是通过比特币网络传送。 + 可在支付请求上备注一条信息,在打开支付请求时可以看到。注意:该消息不是通过极特币网络传送。 Use this form to request payments. All fields are <b>optional</b>. @@ -2562,7 +2562,7 @@ For more information on using this console, type %6. Creates a Partially Signed DigiByte Transaction (PSBT) for use with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet. - 创建一个“部分签名比特币交易”(PSBT),以用于诸如离线%1钱包,或是兼容PSBT的硬件钱包这类用途。 + 创建一个“部分签名极特币交易”(PSBT),以用于诸如离线%1钱包,或是兼容PSBT的硬件钱包这类用途。 from wallet '%1' @@ -2602,7 +2602,7 @@ For more information on using this console, type %6. Please, review your transaction. You can create and send this transaction or create a Partially Signed DigiByte Transaction (PSBT), which you can save or copy and then sign with, e.g., an offline %1 wallet, or a PSBT-compatible hardware wallet. Text to inform a user attempting to create a transaction of their current options. At this stage, a user can send their transaction or create a PSBT. This string is displayed when both private keys and PSBT controls are enabled. - 请务必仔细检查您的交易。你可以创建并发送这笔交易;也可以创建一个“部分签名比特币交易(PSBT)”,它可以被保存下来或被复制出去,然后就可以对它进行签名,比如用离线%1钱包,或是用兼容PSBT的硬件钱包。 + 请务必仔细检查您的交易。你可以创建并发送这笔交易;也可以创建一个“部分签名极特币交易(PSBT)”,它可以被保存下来或被复制出去,然后就可以对它进行签名,比如用离线%1钱包,或是用兼容PSBT的硬件钱包。 Please, review your transaction. @@ -2670,7 +2670,7 @@ For more information on using this console, type %6. The DigiByte address to send the payment to - 將支付發送到的比特幣地址給 + 將支付發送到的极特币地址給 The amount to send in the selected unit @@ -2720,7 +2720,7 @@ For more information on using this console, type %6. You can sign messages/agreements with your addresses to prove you can receive digibytes sent to them. Be careful not to sign anything vague or random, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - 您可以使用您的地址簽名訊息/協議,以證明您可以接收發送給他們的比特幣。但是請小心,不要簽名語意含糊不清,或隨機產生的內容,因為釣魚式詐騙可能會用騙你簽名的手法來冒充是你。只有簽名您同意的詳細內容。 + 您可以使用您的地址簽名訊息/協議,以證明您可以接收發送給他們的极特币。但是請小心,不要簽名語意含糊不清,或隨機產生的內容,因為釣魚式詐騙可能會用騙你簽名的手法來冒充是你。只有簽名您同意的詳細內容。 Signature @@ -2760,7 +2760,7 @@ For more information on using this console, type %6. Verify the message to ensure it was signed with the specified DigiByte address - 驗證這個訊息來確定是用指定的比特幣地址簽名的 + 驗證這個訊息來確定是用指定的极特币地址簽名的 Click "Sign Message" to generate signature diff --git a/src/qt/locale/digibyte_fa.ts b/src/qt/locale/digibyte_fa.ts index 3ee29ebfce2..b92c6d2059e 100644 --- a/src/qt/locale/digibyte_fa.ts +++ b/src/qt/locale/digibyte_fa.ts @@ -163,7 +163,7 @@ Send coins to a DigiByte address - ارسال وجه به نشانی بیت‌کوین + ارسال وجه به نشانی دیجی بایت Backup wallet to another location @@ -187,7 +187,7 @@ DigiByte - بیت‌کوین + دیجی بایت Wallet @@ -215,11 +215,11 @@ Sign messages with your DigiByte addresses to prove you own them - برای اثبات اینکه پیام‌ها به شما تعلق دارند، آن‌ها را با نشانی بیت‌کوین خود امضا کنید + برای اثبات اینکه پیام‌ها به شما تعلق دارند، آن‌ها را با نشانی دیجی بایت خود امضا کنید Verify messages to ensure they were signed with specified DigiByte addresses - برای حصول اطمینان از اینکه پیام با نشانی بیت‌کوین مشخص شده امضا است یا خیر، پیام را شناسایی کنید + برای حصول اطمینان از اینکه پیام با نشانی دیجی بایت مشخص شده امضا است یا خیر، پیام را شناسایی کنید &File @@ -239,7 +239,7 @@ Request payments (generates QR codes and digibyte: URIs) - درخواست پرداخت ( تولید کد کیوار و ادرس بیت کوین) + درخواست پرداخت ( تولید کد کیوار و ادرس دیجی بایت) Show the list of used sending addresses and labels @@ -251,7 +251,7 @@ Open a digibyte: URI or payment request - بازکردن یک بیت کوین: آدرس یا درخواست پرداخت + بازکردن یک دیجی بایت: آدرس یا درخواست پرداخت &Command-line options @@ -259,7 +259,7 @@ %n active connection(s) to DigiByte network - %n ارتباط فعال با شبکهٔ بیت‌کوین%n ارتباط فعال با شبکهٔ بیت‌کوین + %n ارتباط فعال با شبکهٔ دیجی بایت%n ارتباط فعال با شبکهٔ دیجی بایت Processing blocks on disk... @@ -509,7 +509,7 @@ The entered address "%1" is not a valid DigiByte address. - نشانی وارد شده "%1" یک نشانی معتبر بیت‌کوین نیست. + نشانی وارد شده "%1" یک نشانی معتبر دیجی بایت نیست. Could not unlock wallet. @@ -582,7 +582,7 @@ DigiByte - بیت‌کوین + دیجی بایت Error @@ -687,7 +687,7 @@ Automatically open the DigiByte client port on the router. This only works when your router supports UPnP and it is enabled. - باز کردن خودکار درگاه شبکهٔ بیت‌کوین روی روترها. تنها زمانی کار می‌کند که روتر از پروتکل UPnP پشتیبانی کند و این پروتکل فعال باشد. + باز کردن خودکار درگاه شبکهٔ دیجی بایت روی روترها. تنها زمانی کار می‌کند که روتر از پروتکل UPnP پشتیبانی کند و این پروتکل فعال باشد. Map port using &UPnP @@ -790,7 +790,7 @@ The displayed information may be out of date. Your wallet automatically synchronizes with the DigiByte network after a connection is established, but this process has not completed yet. - اطلاعات نمایش‌داده شده ممکن است قدیمی باشند. بعد از این که یک اتصال با شبکه برقرار شد، کیف پول شما به‌صورت خودکار با شبکهٔ بیت‌کوین همگام‌سازی می‌شود. اما این روند هنوز کامل نشده است. + اطلاعات نمایش‌داده شده ممکن است قدیمی باشند. بعد از این که یک اتصال با شبکه برقرار شد، کیف پول شما به‌صورت خودکار با شبکهٔ دیجی بایت همگام‌سازی می‌شود. اما این روند هنوز کامل نشده است. Available: @@ -863,7 +863,7 @@ Enter a DigiByte address (e.g. %1) - یک آدرس بیت‌کوین وارد کنید (مثلاً %1) + یک آدرس دیجی بایت وارد کنید (مثلاً %1) %1 d @@ -1343,7 +1343,7 @@ The DigiByte address to send the payment to - نشانی بیت‌کوین برای ارسال پرداخت به آن + نشانی دیجی بایت برای ارسال پرداخت به آن Alt+A @@ -1396,7 +1396,7 @@ The DigiByte address to sign the message with - نشانی بیت‌کوین برای امضاء پیغام با آن + نشانی دیجی بایت برای امضاء پیغام با آن Choose previously used address @@ -1448,11 +1448,11 @@ The DigiByte address the message was signed with - نشانی بیت‌کوین که پیغام با آن امضاء شده + نشانی دیجی بایت که پیغام با آن امضاء شده Verify the message to ensure it was signed with the specified DigiByte address - برای حصول اطمینان از اینکه پیام با نشانی بیت‌کوین مشخص شده امضا است یا خیر، پیام را شناسایی کنید + برای حصول اطمینان از اینکه پیام با نشانی دیجی بایت مشخص شده امضا است یا خیر، پیام را شناسایی کنید Verify &Message diff --git a/src/qt/locale/digibyte_fa_IR.ts b/src/qt/locale/digibyte_fa_IR.ts index acb07753825..ee1d7e73e8c 100644 --- a/src/qt/locale/digibyte_fa_IR.ts +++ b/src/qt/locale/digibyte_fa_IR.ts @@ -71,7 +71,7 @@ These are your DigiByte addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - اینها آدرس‌های بیتکوین شما برای دریافت وجوه هستند. توصیه می‌شود برای هر دریافت از یک آدرس جدید استفاده کنید. + اینها آدرس‌های دیجی بایت شما برای دریافت وجوه هستند. توصیه می‌شود برای هر دریافت از یک آدرس جدید استفاده کنید. &Copy Address @@ -177,7 +177,7 @@ Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR DIGIBYTES</b>! - اخطار: اگر کیف‌پول خود را رمزگذاری کرده و رمز خود را فراموش کنید، شما <b>تمام بیت‌کوین‌های خود را از دست خواهید داد</b>! + اخطار: اگر کیف‌پول خود را رمزگذاری کرده و رمز خود را فراموش کنید، شما <b>تمام دیجی بایت‌های خود را از دست خواهید داد</b>! Are you sure you wish to encrypt your wallet? @@ -347,7 +347,7 @@ Send coins to a DigiByte address - ارسال کوین به آدرس بیت کوین + ارسال کوین به آدرس دیجی بایت Backup wallet to another location @@ -367,7 +367,7 @@ DigiByte - بیت کوین + دیجی بایت Wallet @@ -395,11 +395,11 @@ Sign messages with your DigiByte addresses to prove you own them - پیام‌ها را با آدرس بیت‌کوین خود امضا کنید تا مالکیت آن‌ها را اثبات کنید + پیام‌ها را با آدرس دیجی بایت خود امضا کنید تا مالکیت آن‌ها را اثبات کنید Verify messages to ensure they were signed with specified DigiByte addresses - پیام‌ها را تائید کنید تا از امضاشدن آن‌ها با آدرس بیت‌کوین مطمئن شوید + پیام‌ها را تائید کنید تا از امضاشدن آن‌ها با آدرس دیجی بایت مطمئن شوید &File @@ -419,7 +419,7 @@ Request payments (generates QR codes and digibyte: URIs) - درخواست پرداخت (ساخت کد QR و بیت‌کوین: URIs) + درخواست پرداخت (ساخت کد QR و دیجی بایت: URIs) Show the list of used sending addresses and labels @@ -431,11 +431,11 @@ Open a digibyte: URI or payment request - بازکردن بیت‌کوین: آدرس یا درخواست پرداخت + بازکردن دیجی بایت: آدرس یا درخواست پرداخت %n active connection(s) to DigiByte network - %n ارتباط فعال به شبکه بیت‌کوین%n ارتباط فعال به شبکه بیت‌کوین + %n ارتباط فعال به شبکه دیجی بایت%n ارتباط فعال به شبکه دیجی بایت Indexing blocks on disk... @@ -629,7 +629,7 @@ The entered address "%1" is not a valid DigiByte address. - آدرس وارد شده "%1" آدرس معتبر بیت کوین نیست. + آدرس وارد شده "%1" آدرس معتبر دیجی بایت نیست. @@ -658,7 +658,7 @@ DigiByte - بیت کوین + دیجی بایت The wallet will also be stored in this directory. diff --git a/src/qt/locale/digibyte_zh-Hans.ts b/src/qt/locale/digibyte_zh-Hans.ts index 5d676b5776c..53dff3215b1 100644 --- a/src/qt/locale/digibyte_zh-Hans.ts +++ b/src/qt/locale/digibyte_zh-Hans.ts @@ -47,11 +47,11 @@ Choose the address to send coins to - 选择发送比特币地址 + 选择发送极特币地址 Choose the address to receive coins with - 选择接收比特币地址 + 选择接收极特币地址 C&hoose @@ -67,12 +67,12 @@ These are your DigiByte addresses for sending payments. Always check the amount and the receiving address before sending coins. - 这是你的比特币发币地址。发送前请确认发送数量和接收地址 + 这是你的极特币发币地址。发送前请确认发送数量和接收地址 These are your DigiByte addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses. Signing is only possible with addresses of the type 'legacy'. - 这是你的比特币接收地址。点击接收选项卡中“创建新的接收地址”按钮来创建新的地址。 + 这是你的极特币接收地址。点击接收选项卡中“创建新的接收地址”按钮来创建新的地址。 签名只能使用“传统”类型的地址。 diff --git a/src/qt/locale/digibyte_zh-Hant.ts b/src/qt/locale/digibyte_zh-Hant.ts index c2fe759e4ca..497b7ace009 100644 --- a/src/qt/locale/digibyte_zh-Hant.ts +++ b/src/qt/locale/digibyte_zh-Hant.ts @@ -51,7 +51,7 @@ Choose the address to receive coins with - 选择接收比特币地址 + 选择接收极特币地址 C&hoose @@ -59,12 +59,12 @@ These are your DigiByte addresses for sending payments. Always check the amount and the receiving address before sending coins. - 这些是你的比特币支付地址。在发送之前,一定要核对金额和接收地址。 + 这些是你的极特币支付地址。在发送之前,一定要核对金额和接收地址。 These are your DigiByte addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses. Signing is only possible with addresses of the type 'legacy'. - 這些是您的比特幣接收地址。使用“接收”標籤中的“產生新的接收地址”按鈕產生新的地址。只能使用“傳統”類型的地址進行簽名。 + 這些是您的极特币接收地址。使用“接收”標籤中的“產生新的接收地址”按鈕產生新的地址。只能使用“傳統”類型的地址進行簽名。 &Copy Address @@ -160,7 +160,7 @@ Signing is only possible with addresses of the type 'legacy'. Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR DIGIBYTES</b>! - 警告: 如果把钱包加密后又忘记密码,你就会从此<b>失去其中所有的比特币了</b>! + 警告: 如果把钱包加密后又忘记密码,你就会从此<b>失去其中所有的极特币了</b>! Are you sure you wish to encrypt your wallet? @@ -462,7 +462,7 @@ Signing is only possible with addresses of the type 'legacy'. Send coins to a DigiByte address - 向一个比特币地址发币 + 向一个极特币地址发币 Backup wallet to another location @@ -506,7 +506,7 @@ Signing is only possible with addresses of the type 'legacy'. Sign messages with your DigiByte addresses to prove you own them - 用比特币地址关联的私钥为消息签名,以证明您拥有这个比特币地址 + 用极特币地址关联的私钥为消息签名,以证明您拥有这个极特币地址 &Verify message… @@ -514,7 +514,7 @@ Signing is only possible with addresses of the type 'legacy'. Verify messages to ensure they were signed with specified DigiByte addresses - 校验消息,确保该消息是由指定的比特币地址所有者签名的 + 校验消息,确保该消息是由指定的极特币地址所有者签名的 &Load PSBT from file… @@ -628,7 +628,7 @@ Signing is only possible with addresses of the type 'legacy'. Load Partially Signed DigiByte Transaction - 加载部分签名比特币交易(PSBT) + 加载部分签名极特币交易(PSBT) Load PSBT from &clipboard… @@ -636,7 +636,7 @@ Signing is only possible with addresses of the type 'legacy'. Load Partially Signed DigiByte Transaction from clipboard - 从剪贴板中加载部分签名比特币交易(PSBT) + 从剪贴板中加载部分签名极特币交易(PSBT) Node window @@ -760,7 +760,7 @@ Signing is only possible with addresses of the type 'legacy'. %n active connection(s) to DigiByte network. A substring of the tooltip. - %n 与比特币网络接。 + %n 与极特币网络接。 @@ -1299,7 +1299,7 @@ The migration process will create a backup of the wallet before migrating. This %1 will download and store a copy of the DigiByte block chain. - %1 将会下载并存储比特币区块链。 + %1 将会下载并存储极特币区块链。 The wallet will also be stored in this directory. @@ -1388,7 +1388,7 @@ The migration process will create a backup of the wallet before migrating. This Attempting to spend digibytes that are affected by not-yet-displayed transactions will not be accepted by the network. - 嘗試花費受尚未顯示的交易影響的比特幣將不會被網路接受。 + 嘗試花費受尚未顯示的交易影響的极特币將不會被網路接受。 Unknown… @@ -1427,7 +1427,7 @@ The migration process will create a backup of the wallet before migrating. This OpenURIDialog Open digibyte URI - 打开比特币URI + 打开极特币URI @@ -1542,7 +1542,7 @@ The migration process will create a backup of the wallet before migrating. This Automatically open the DigiByte client port on the router. This only works when your router supports NAT-PMP and it is enabled. The external port could be random. - 自動開啟路由器上的比特幣用戶端連接埠。 只有當您的路由器支援 NAT-PMP 並且已啟用時,此功能才有效。 外部連接埠可以是隨機的。 + 自動開啟路由器上的极特币用戶端連接埠。 只有當您的路由器支援 NAT-PMP 並且已啟用時,此功能才有效。 外部連接埠可以是隨機的。 Map port using NA&T-PMP @@ -1610,7 +1610,7 @@ The migration process will create a backup of the wallet before migrating. This Choose the default subdivision unit to show in the interface and when sending coins. - 选择显示及发送比特币时使用的最小单位。 + 选择显示及发送极特币时使用的最小单位。 Third-party URLs (e.g. a block explorer) that appear in the transactions tab as context menu items. %s in the URL is replaced by transaction hash. Multiple URLs are separated by vertical bar |. @@ -1622,7 +1622,7 @@ The migration process will create a backup of the wallet before migrating. This Connect to the DigiByte network through a separate SOCKS5 proxy for Tor onion services. - 连接比特币网络时专门为Tor onion服务使用另一个 SOCKS5 代理。 + 连接极特币网络时专门为Tor onion服务使用另一个 SOCKS5 代理。 Monospaced font in the Overview tab: @@ -1856,7 +1856,7 @@ If you are receiving this error you should request the merchant provide a BIP21 URI cannot be parsed! This can be caused by an invalid DigiByte address or malformed URI parameters. - 无法解析 URI 地址!可能是因为比特币地址无效,或是 URI 参数格式错误。 + 无法解析 URI 地址!可能是因为极特币地址无效,或是 URI 参数格式错误。 Payment request file handling @@ -2305,7 +2305,7 @@ For more information on using this console, type %6. An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the DigiByte network. - 可在支付请求上备注一条信息,在打开支付请求时可以看到。注意:该消息不是通过比特币网络传送。 + 可在支付请求上备注一条信息,在打开支付请求时可以看到。注意:该消息不是通过极特币网络传送。 Use this form to request payments. All fields are <b>optional</b>. @@ -2574,7 +2574,7 @@ For more information on using this console, type %6. Creates a Partially Signed DigiByte Transaction (PSBT) for use with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet. - 创建一个“部分签名比特币交易”(PSBT),以用于诸如离线%1钱包,或是兼容PSBT的硬件钱包这类用途。 + 创建一个“部分签名极特币交易”(PSBT),以用于诸如离线%1钱包,或是兼容PSBT的硬件钱包这类用途。 from wallet '%1' @@ -2614,7 +2614,7 @@ For more information on using this console, type %6. Please, review your transaction. You can create and send this transaction or create a Partially Signed DigiByte Transaction (PSBT), which you can save or copy and then sign with, e.g., an offline %1 wallet, or a PSBT-compatible hardware wallet. Text to inform a user attempting to create a transaction of their current options. At this stage, a user can send their transaction or create a PSBT. This string is displayed when both private keys and PSBT controls are enabled. - 请务必仔细检查您的交易。你可以创建并发送这笔交易;也可以创建一个“部分签名比特币交易(PSBT)”,它可以被保存下来或被复制出去,然后就可以对它进行签名,比如用离线%1钱包,或是用兼容PSBT的硬件钱包。 + 请务必仔细检查您的交易。你可以创建并发送这笔交易;也可以创建一个“部分签名极特币交易(PSBT)”,它可以被保存下来或被复制出去,然后就可以对它进行签名,比如用离线%1钱包,或是用兼容PSBT的硬件钱包。 Please, review your transaction. @@ -2667,7 +2667,7 @@ For more information on using this console, type %6. Warning: Invalid DigiByte address - 警告: 比特币地址无效 + 警告: 极特币地址无效 Confirm custom change address @@ -2690,7 +2690,7 @@ For more information on using this console, type %6. The DigiByte address to send the payment to - 將支付發送到的比特幣地址給 + 將支付發送到的极特币地址給 The amount to send in the selected unit @@ -2740,7 +2740,7 @@ For more information on using this console, type %6. You can sign messages/agreements with your addresses to prove you can receive digibytes sent to them. Be careful not to sign anything vague or random, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - 您可以使用您的地址簽名訊息/協議,以證明您可以接收發送給他們的比特幣。但是請小心,不要簽名語意含糊不清,或隨機產生的內容,因為釣魚式詐騙可能會用騙你簽名的手法來冒充是你。只有簽名您同意的詳細內容。 + 您可以使用您的地址簽名訊息/協議,以證明您可以接收發送給他們的极特币。但是請小心,不要簽名語意含糊不清,或隨機產生的內容,因為釣魚式詐騙可能會用騙你簽名的手法來冒充是你。只有簽名您同意的詳細內容。 Signature @@ -2780,7 +2780,7 @@ For more information on using this console, type %6. Verify the message to ensure it was signed with the specified DigiByte address - 驗證這個訊息來確定是用指定的比特幣地址簽名的 + 驗證這個訊息來確定是用指定的极特币地址簽名的 Click "Sign Message" to generate signature diff --git a/src/qt/locale/digibyte_zh.ts b/src/qt/locale/digibyte_zh.ts index 1deac4fb3af..e9795dd74e4 100644 --- a/src/qt/locale/digibyte_zh.ts +++ b/src/qt/locale/digibyte_zh.ts @@ -67,7 +67,7 @@ These are your DigiByte addresses for sending payments. Always check the amount and the receiving address before sending coins. - 这些是你的比特币支付地址。在发送之前,一定要核对金额和接收地址。 + 这些是你的极特币支付地址。在发送之前,一定要核对金额和接收地址。 &Copy Address @@ -165,7 +165,7 @@ Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR DIGIBYTES</b>! - 注意:如果你加密了钱包,丢失了密码,您将<b>丢失所有的比特币。 + 注意:如果你加密了钱包,丢失了密码,您将<b>丢失所有的极特币。 Are you sure you wish to encrypt your wallet? @@ -185,7 +185,7 @@ Remember that encrypting your wallet cannot fully protect your digibytes from being stolen by malware infecting your computer. - 记住,加密您的钱包并不能完全保护您的比特币不被您电脑中的恶意软件窃取。 + 记住,加密您的钱包并不能完全保护您的极特币不被您电脑中的恶意软件窃取。 Wallet to be encrypted @@ -355,7 +355,7 @@ Send coins to a DigiByte address - 发送比特币到一个比特币地址 + 发送极特币到一个极特币地址 Backup wallet to another location @@ -391,11 +391,11 @@ Sign messages with your DigiByte addresses to prove you own them - 用您的比特币地址签名信息,以证明拥有它们 + 用您的极特币地址签名信息,以证明拥有它们 Verify messages to ensure they were signed with specified DigiByte addresses - 验证消息,确保它们是用指定的比特币地址签名的 + 验证消息,确保它们是用指定的极特币地址签名的 &File @@ -415,7 +415,7 @@ Request payments (generates QR codes and digibyte: URIs) - 请求支付(生成二维码和比特币链接) + 请求支付(生成二维码和极特币链接) Show the list of used sending addresses and labels @@ -431,7 +431,7 @@ %n active connection(s) to DigiByte network - %n 活跃的链接到比特币网络 + %n 活跃的链接到极特币网络 Indexing blocks on disk... @@ -491,7 +491,7 @@ Open a digibyte: URI - 打开比特币: URI + 打开极特币: URI Open Wallet @@ -827,7 +827,7 @@ The entered address "%1" is not a valid DigiByte address. - 输入的地址"%1"不是有效的比特币地址。 + 输入的地址"%1"不是有效的极特币地址。 Address "%1" already exists as a receiving address with label "%2" and so cannot be added as a sending address. @@ -904,7 +904,7 @@ DigiByte - 比特币 + 极特币 Error @@ -1200,7 +1200,7 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p When there is less transaction volume than space in the blocks, miners as well as relaying nodes may enforce a minimum fee. Paying only this minimum fee is just fine, but be aware that this can result in a never confirming transaction once there is more demand for digibyte transactions than the network can process. - 当交易量小于块的空间时,矿工和中继节点可以强制执行最低费用。只付最低费用就可以了,但注意,一旦比特币交易的需求超出网络的处理能力,就可能导致交易无法确认。 + 当交易量小于块的空间时,矿工和中继节点可以强制执行最低费用。只付最低费用就可以了,但注意,一旦极特币交易的需求超出网络的处理能力,就可能导致交易无法确认。 A too low fee might result in a never confirming transaction (read the tooltip) @@ -1288,7 +1288,7 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p Warning: Invalid DigiByte address - 警告:比特币地址无效 + 警告:极特币地址无效 The address you selected for change is not part of this wallet. Any or all funds in your wallet may be sent to this address. Are you sure? @@ -1311,11 +1311,11 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p The DigiByte address to send the payment to - 支付到的比特币地址 + 支付到的极特币地址 The fee will be deducted from the amount being sent. The recipient will receive less digibytes than you enter in the amount field. If multiple recipients are selected, the fee is split equally. - 手续费将从发出的总额中扣除。接受者收到的比特币将少于你输入的金额字段。如果选择了多个接受者,手续费将平均分配。 + 手续费将从发出的总额中扣除。接受者收到的极特币将少于你输入的金额字段。如果选择了多个接受者,手续费将平均分配。 This is an unauthenticated payment request. @@ -1327,7 +1327,7 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p A message that was attached to the digibyte: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the DigiByte network. - 附在比特币上的消息:URI将与交易一起存储,供参考。注意:此信息不会通过比特币网络发送。 + 附在极特币上的消息:URI将与交易一起存储,供参考。注意:此信息不会通过极特币网络发送。 diff --git a/src/qt/locale/digibyte_zh_CN.ts b/src/qt/locale/digibyte_zh_CN.ts index 93c079fea40..18320d6bd76 100644 --- a/src/qt/locale/digibyte_zh_CN.ts +++ b/src/qt/locale/digibyte_zh_CN.ts @@ -67,12 +67,12 @@ These are your DigiByte addresses for sending payments. Always check the amount and the receiving address before sending coins. - 您可以给这些比特币地址付款。在付款之前,务必要检查金额和收款地址是否正确。 + 您可以给这些极特币地址付款。在付款之前,务必要检查金额和收款地址是否正确。 These are your DigiByte addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses. Signing is only possible with addresses of the type 'legacy'. - 这是您用来收款的比特币地址。使用“接收”标签页中的“创建新收款地址”按钮来创建新的收款地址。 + 这是您用来收款的极特币地址。使用“接收”标签页中的“创建新收款地址”按钮来创建新的收款地址。 只有“传统(legacy)”类型的地址支持签名。 @@ -171,7 +171,7 @@ Signing is only possible with addresses of the type 'legacy'. Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR DIGIBYTES</b>! - 警告: 如果把钱包加密后又忘记密码,你就会从此<b>失去其中所有的比特币了</b>! + 警告: 如果把钱包加密后又忘记密码,你就会从此<b>失去其中所有的极特币了</b>! Are you sure you wish to encrypt your wallet? @@ -191,7 +191,7 @@ Signing is only possible with addresses of the type 'legacy'. Remember that encrypting your wallet cannot fully protect your digibytes from being stolen by malware infecting your computer. - 请注意,当您的计算机感染恶意软件时,加密钱包并不能完全规避您的比特币被偷窃的可能。 + 请注意,当您的计算机感染恶意软件时,加密钱包并不能完全规避您的极特币被偷窃的可能。 Wallet to be encrypted @@ -365,7 +365,7 @@ Signing is only possible with addresses of the type 'legacy'. Send coins to a DigiByte address - 向一个比特币地址发币 + 向一个极特币地址发币 Backup wallet to another location @@ -401,11 +401,11 @@ Signing is only possible with addresses of the type 'legacy'. Sign messages with your DigiByte addresses to prove you own them - 用比特币地址关联的私钥为消息签名,以证明您拥有这个比特币地址 + 用极特币地址关联的私钥为消息签名,以证明您拥有这个极特币地址 Verify messages to ensure they were signed with specified DigiByte addresses - 校验消息,确保该消息是由指定的比特币地址所有者签名的 + 校验消息,确保该消息是由指定的极特币地址所有者签名的 &File @@ -441,7 +441,7 @@ Signing is only possible with addresses of the type 'legacy'. %n active connection(s) to DigiByte network - %n 条到比特币网络的活动连接 + %n 条到极特币网络的活动连接 Indexing blocks on disk... @@ -489,7 +489,7 @@ Signing is only possible with addresses of the type 'legacy'. Load Partially Signed DigiByte Transaction - 加载部分签名比特币交易(PSBT) + 加载部分签名极特币交易(PSBT) Load PSBT from clipboard... @@ -497,7 +497,7 @@ Signing is only possible with addresses of the type 'legacy'. Load Partially Signed DigiByte Transaction from clipboard - 从剪贴板中加载部分签名比特币交易(PSBT) + 从剪贴板中加载部分签名极特币交易(PSBT) Node window @@ -921,7 +921,7 @@ Signing is only possible with addresses of the type 'legacy'. The entered address "%1" is not a valid DigiByte address. - 输入的地址 %1 并不是有效的比特币地址。 + 输入的地址 %1 并不是有效的极特币地址。 Address "%1" already exists as a receiving address with label "%2" and so cannot be added as a sending address. @@ -1018,7 +1018,7 @@ Signing is only possible with addresses of the type 'legacy'. DigiByte - 比特币 + 极特币 Discard blocks after verification, except most recent %1 GB (prune) @@ -1034,7 +1034,7 @@ Signing is only possible with addresses of the type 'legacy'. %1 will download and store a copy of the DigiByte block chain. - %1 将会下载并存储比特币区块链。 + %1 将会下载并存储极特币区块链。 The wallet will also be stored in this directory. @@ -1069,7 +1069,7 @@ Signing is only possible with addresses of the type 'legacy'. Recent transactions may not yet be visible, and therefore your wallet's balance might be incorrect. This information will be correct once your wallet has finished synchronizing with the digibyte network, as detailed below. - 近期交易可能尚未显示,因此当前余额可能不准确。以上信息将在与比特币网络完全同步后更正。详情如下 + 近期交易可能尚未显示,因此当前余额可能不准确。以上信息将在与极特币网络完全同步后更正。详情如下 Attempting to spend digibytes that are affected by not-yet-displayed transactions will not be accepted by the network. @@ -1124,7 +1124,7 @@ Signing is only possible with addresses of the type 'legacy'. OpenURIDialog Open digibyte URI - 打开比特币URI + 打开极特币URI URI: @@ -1266,7 +1266,7 @@ Signing is only possible with addresses of the type 'legacy'. Automatically open the DigiByte client port on the router. This only works when your router supports UPnP and it is enabled. - 自动在路由器中为比特币客户端打开端口。只有当您的路由器开启了 UPnP 选项时此功能才会有用。 + 自动在路由器中为极特币客户端打开端口。只有当您的路由器开启了 UPnP 选项时此功能才会有用。 Map port using &UPnP @@ -1282,7 +1282,7 @@ Signing is only possible with addresses of the type 'legacy'. Connect to the DigiByte network through a SOCKS5 proxy. - 通过 SOCKS5 代理连接比特币网络。 + 通过 SOCKS5 代理连接极特币网络。 &Connect through SOCKS5 proxy (default proxy): @@ -1346,11 +1346,11 @@ Signing is only possible with addresses of the type 'legacy'. &Unit to show amounts in: - 比特币金额单位(&U): + 极特币金额单位(&U): Choose the default subdivision unit to show in the interface and when sending coins. - 选择显示及发送比特币时使用的最小单位。 + 选择显示及发送极特币时使用的最小单位。 Whether to show coin control features or not. @@ -1358,7 +1358,7 @@ Signing is only possible with addresses of the type 'legacy'. Connect to the DigiByte network through a separate SOCKS5 proxy for Tor onion services. - 连接比特币网络时专门为Tor onion服务使用另一个 SOCKS5 代理。 + 连接极特币网络时专门为Tor onion服务使用另一个 SOCKS5 代理。 Use separate SOCKS&5 proxy to reach peers via Tor onion services: @@ -1433,7 +1433,7 @@ Signing is only possible with addresses of the type 'legacy'. The displayed information may be out of date. Your wallet automatically synchronizes with the DigiByte network after a connection is established, but this process has not completed yet. - 现在显示的消息可能是过期的。在连接上比特币网络节点后,您的钱包将自动与网络同步,但是这个过程还没有完成。 + 现在显示的消息可能是过期的。在连接上极特币网络节点后,您的钱包将自动与网络同步,但是这个过程还没有完成。 Watch-only: @@ -1663,7 +1663,7 @@ Signing is only possible with addresses of the type 'legacy'. URI cannot be parsed! This can be caused by an invalid DigiByte address or malformed URI parameters. - 无法解析 URI 地址!可能是因为比特币地址无效,或是 URI 参数格式错误。 + 无法解析 URI 地址!可能是因为极特币地址无效,或是 URI 参数格式错误。 Payment request file handling @@ -1705,7 +1705,7 @@ Signing is only possible with addresses of the type 'legacy'. Enter a DigiByte address (e.g. %1) - 请输入一个比特币地址 (例如 %1) + 请输入一个极特币地址 (例如 %1) %1 d @@ -2166,7 +2166,7 @@ Signing is only possible with addresses of the type 'legacy'. An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the DigiByte network. - 可在支付请求上备注一条信息,在打开支付请求时可以看到。注意:该消息不是通过比特币网络传送。 + 可在支付请求上备注一条信息,在打开支付请求时可以看到。注意:该消息不是通过极特币网络传送。 An optional label to associate with the new receiving address. @@ -2451,7 +2451,7 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p When there is less transaction volume than space in the blocks, miners as well as relaying nodes may enforce a minimum fee. Paying only this minimum fee is just fine, but be aware that this can result in a never confirming transaction once there is more demand for digibyte transactions than the network can process. - 当交易量小于可用区块空间时,矿工和中继节点可能会执行最低手续费率限制。按照这个最低费率来支付手续费也是可以的,但请注意,一旦交易需求超出比特币网络能处理的限度,你的交易可能永远也无法确认。 + 当交易量小于可用区块空间时,矿工和中继节点可能会执行最低手续费率限制。按照这个最低费率来支付手续费也是可以的,但请注意,一旦交易需求超出极特币网络能处理的限度,你的交易可能永远也无法确认。 A too low fee might result in a never confirming transaction (read the tooltip) @@ -2523,7 +2523,7 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p Creates a Partially Signed DigiByte Transaction (PSBT) for use with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet. - 创建一个“部分签名比特币交易”(PSBT),以用于诸如离线%1钱包,或是兼容PSBT的硬件钱包这类用途。 + 创建一个“部分签名极特币交易”(PSBT),以用于诸如离线%1钱包,或是兼容PSBT的硬件钱包这类用途。 from wallet '%1' @@ -2571,7 +2571,7 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p Please, review your transaction proposal. This will produce a Partially Signed DigiByte Transaction (PSBT) which you can save or copy and then sign with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet. - 请务必仔细检查您的交易请求。这会产生一个部分签名比特币交易(PSBT),可以把保存下来或复制出去,然后就可以对它进行签名,比如用离线%1钱包,或是用兼容PSBT的硬件钱包。 + 请务必仔细检查您的交易请求。这会产生一个部分签名极特币交易(PSBT),可以把保存下来或复制出去,然后就可以对它进行签名,比如用离线%1钱包,或是用兼容PSBT的硬件钱包。 Please, review your transaction. @@ -2647,7 +2647,7 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p Warning: Invalid DigiByte address - 警告: 比特币地址无效 + 警告: 极特币地址无效 Warning: Unknown change address @@ -2710,7 +2710,7 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p The fee will be deducted from the amount being sent. The recipient will receive less digibytes than you enter in the amount field. If multiple recipients are selected, the fee is split equally. - 交易费将从发送金额中扣除。接收人收到的比特币将会比您在金额框中输入的更少。如果选中了多个收件人,交易费平分。 + 交易费将从发送金额中扣除。接收人收到的极特币将会比您在金额框中输入的更少。如果选中了多个收件人,交易费平分。 S&ubtract fee from amount @@ -2738,7 +2738,7 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p A message that was attached to the digibyte: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the DigiByte network. - digibyte: URI 附带的备注信息,将会和交易一起存储,备查。 注意:该消息不会通过比特币网络传输。 + digibyte: URI 附带的备注信息,将会和交易一起存储,备查。 注意:该消息不会通过极特币网络传输。 Pay To: @@ -2772,7 +2772,7 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p You can sign messages/agreements with your addresses to prove you can receive digibytes sent to them. Be careful not to sign anything vague or random, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - 您可以用你的地址对消息/协议进行签名,以证明您可以接收发送到该地址的比特币。注意不要对任何模棱两可或者随机的消息进行签名,以免遭受钓鱼式攻击。请确保消息内容准确的表达了您的真实意愿。 + 您可以用你的地址对消息/协议进行签名,以证明您可以接收发送到该地址的极特币。注意不要对任何模棱两可或者随机的消息进行签名,以免遭受钓鱼式攻击。请确保消息内容准确的表达了您的真实意愿。 The DigiByte address to sign the message with @@ -2844,7 +2844,7 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p Verify the message to ensure it was signed with the specified DigiByte address - 验证消息,确保消息是由指定的比特币地址签名过的。 + 验证消息,确保消息是由指定的极特币地址签名过的。 Verify &Message @@ -3062,7 +3062,7 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p Generated coins must mature %1 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 个区块确认的成熟过程。当您挖出此区块后,它将被广播到网络中以加入区块链。如果它未成功进入区块链,其状态将变更为“不接受”并且不可使用。这可能偶尔会发生,在另一个节点比你早几秒钟成功挖出一个区块时就会这样。 + 新挖出的极特币在可以使用前必须经过 %1 个区块确认的成熟过程。当您挖出此区块后,它将被广播到网络中以加入区块链。如果它未成功进入区块链,其状态将变更为“不接受”并且不可使用。这可能偶尔会发生,在另一个节点比你早几秒钟成功挖出一个区块时就会这样。 Debug information diff --git a/src/qt/locale/digibyte_zh_TW.ts b/src/qt/locale/digibyte_zh_TW.ts index 1390b1a8dfa..628568aeea0 100644 --- a/src/qt/locale/digibyte_zh_TW.ts +++ b/src/qt/locale/digibyte_zh_TW.ts @@ -67,12 +67,12 @@ These are your DigiByte addresses for sending payments. Always check the amount and the receiving address before sending coins. - 這些是你要發送過去的 比特幣地址。在發送幣之前,務必要檢查金額和接收地址是否正確。 + 這些是你要發送過去的 极特币地址。在發送幣之前,務必要檢查金額和接收地址是否正確。 These are your DigiByte addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses. Signing is only possible with addresses of the type 'legacy'. - 這些是您的比特幣接收地址。使用“接收”標籤中的“產生新的接收地址”按鈕產生新的地址。只能使用“傳統”類型的地址進行簽名。 + 這些是您的极特币接收地址。使用“接收”標籤中的“產生新的接收地址”按鈕產生新的地址。只能使用“傳統”類型的地址進行簽名。 &Copy Address @@ -360,7 +360,7 @@ Signing is only possible with addresses of the type 'legacy'. Send coins to a DigiByte address - 發送幣給一個比特幣地址 + 發送幣給一個极特币地址 Backup wallet to another location @@ -396,11 +396,11 @@ Signing is only possible with addresses of the type 'legacy'. Sign messages with your DigiByte addresses to prove you own them - 用比特幣地址簽名訊息來證明位址是你的 + 用极特币地址簽名訊息來證明位址是你的 Verify messages to ensure they were signed with specified DigiByte addresses - 驗證訊息是用來確定訊息是用指定的比特幣地址簽名的 + 驗證訊息是用來確定訊息是用指定的极特币地址簽名的 &File @@ -484,7 +484,7 @@ Signing is only possible with addresses of the type 'legacy'. Load Partially Signed DigiByte Transaction - 載入部分簽名的比特幣交易 + 載入部分簽名的极特币交易 Load PSBT from clipboard... @@ -492,7 +492,7 @@ Signing is only possible with addresses of the type 'legacy'. Load Partially Signed DigiByte Transaction from clipboard - 從剪貼簿載入部分簽名的比特幣交易 + 從剪貼簿載入部分簽名的极特币交易 Node window @@ -512,7 +512,7 @@ Signing is only possible with addresses of the type 'legacy'. Open a digibyte: URI - 打開一個比特幣:URI + 打開一個极特币:URI Open Wallet @@ -908,7 +908,7 @@ Signing is only possible with addresses of the type 'legacy'. The entered address "%1" is not a valid DigiByte address. - 輸入的地址 %1 並不是有效的比特幣地址。 + 輸入的地址 %1 並不是有效的极特币地址。 The entered address "%1" is already in the address book with label "%2". @@ -1099,7 +1099,7 @@ Signing is only possible with addresses of the type 'legacy'. OpenURIDialog Open digibyte URI - 打開比特幣URI + 打開极特币URI URI: @@ -1333,7 +1333,7 @@ Signing is only possible with addresses of the type 'legacy'. Connect to the DigiByte network through a separate SOCKS5 proxy for Tor onion services. - 通過用於Tor洋蔥服務個別的SOCKS5代理連接到比特幣網路。 + 通過用於Tor洋蔥服務個別的SOCKS5代理連接到极特币網路。 Use separate SOCKS&5 proxy to reach peers via Tor onion services: @@ -1610,7 +1610,7 @@ Signing is only possible with addresses of the type 'legacy'. URI cannot be parsed! This can be caused by an invalid DigiByte address or malformed URI parameters. - 沒辦法解析 URI !可能是因為無效比特幣地址,或是 URI 參數格式錯誤。 + 沒辦法解析 URI !可能是因為無效极特币地址,或是 URI 參數格式錯誤。 Payment request file handling @@ -1652,7 +1652,7 @@ Signing is only possible with addresses of the type 'legacy'. Enter a DigiByte address (e.g. %1) - 輸入 比特幣地址 (比如說 %1) + 輸入 极特币地址 (比如說 %1) %1 d @@ -2390,7 +2390,7 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p When there is less transaction volume than space in the blocks, miners as well as relaying nodes may enforce a minimum fee. Paying only this minimum fee is just fine, but be aware that this can result in a never confirming transaction once there is more demand for digibyte transactions than the network can process. - 当交易量小于可用区块空间时,矿工和中继节点可能会执行最低手续费率限制。按照这个最低费率来支付手续费也是可以的,但请注意,一旦交易需求超出比特币网络能处理的限度,你的交易可能永远也无法确认。 + 当交易量小于可用区块空间时,矿工和中继节点可能会执行最低手续费率限制。按照这个最低费率来支付手续费也是可以的,但请注意,一旦交易需求超出极特币网络能处理的限度,你的交易可能永远也无法确认。 A too low fee might result in a never confirming transaction (read the tooltip) @@ -2578,7 +2578,7 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p Warning: Invalid DigiByte address - 警告: 比特幣地址無效 + 警告: 极特币地址無效 Warning: Unknown change address @@ -2617,7 +2617,7 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p The DigiByte address to send the payment to - 將支付發送到的比特幣地址給 + 將支付發送到的极特币地址給 Alt+A @@ -2703,11 +2703,11 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p You can sign messages/agreements with your addresses to prove you can receive digibytes sent to them. Be careful not to sign anything vague or random, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - 您可以使用您的地址簽名訊息/協議,以證明您可以接收發送給他們的比特幣。但是請小心,不要簽名語意含糊不清,或隨機產生的內容,因為釣魚式詐騙可能會用騙你簽名的手法來冒充是你。只有簽名您同意的詳細內容。 + 您可以使用您的地址簽名訊息/協議,以證明您可以接收發送給他們的极特币。但是請小心,不要簽名語意含糊不清,或隨機產生的內容,因為釣魚式詐騙可能會用騙你簽名的手法來冒充是你。只有簽名您同意的詳細內容。 The DigiByte address to sign the message with - 用來簽名訊息的 比特幣地址 + 用來簽名訊息的 极特币地址 Choose previously used address @@ -2739,7 +2739,7 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p Sign the message to prove you own this DigiByte address - 簽名這個訊息來證明這個比特幣地址是你的 + 簽名這個訊息來證明這個极特币地址是你的 Sign &Message @@ -2763,7 +2763,7 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p The DigiByte address the message was signed with - 簽名這個訊息的 比特幣地址 + 簽名這個訊息的 极特币地址 The signed message to verify @@ -2775,7 +2775,7 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p Verify the message to ensure it was signed with the specified DigiByte address - 驗證這個訊息來確定是用指定的比特幣地址簽名的 + 驗證這個訊息來確定是用指定的极特币地址簽名的 Verify &Message diff --git a/src/qt/res/css/dark.css b/src/qt/res/css/dark.css index 211d26c544e..9bb97e7f609 100644 --- a/src/qt/res/css/dark.css +++ b/src/qt/res/css/dark.css @@ -206,6 +206,10 @@ QWidget#centralWidget { color:#ffffff; } + QMessageBox QLabel { + color:#ffffff !important; + } + /* Options Dialog and other dialog content */ QDialog { background-color:#002352; @@ -526,14 +530,15 @@ background-color:rgba(255, 255, 255, 0.15); border:0px solid #fff; } - QTableView::item { /* Table Item */ - background-color:#fcfcfc; + QTableView::item { /* Table Item - DARK MODE FIX */ + background-color: rgba(255, 255, 255, 0.05); + /* Don't override color here - let the model set red/green for amounts */ font-size:9pt; } QTableView::item:selected { /* Table Item Selected */ - background-color:#f0f0f0; - color:#333; + background-color:#0066CC; + color:#ffffff; } QScrollBar { /* Scroll Bar */ @@ -1868,6 +1873,14 @@ background-color:rgba(255, 255, 255, 0.15); color: #ffffff !important; } + /* Override inline styles from modaloverlay.ui */ + ModalOverlay #infoText, + ModalOverlay #infoTextStrong, + ModalOverlay QLabel#infoText, + ModalOverlay QLabel#infoTextStrong { + color: #ffffff !important; + } + /* SEND DIALOG */ @@ -2865,12 +2878,13 @@ TransactionView { TransactionView QTableView { background-color: rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.1); - color: #ffffff; + /* Don't override color here - let the model set red/green for amounts */ } TransactionView QTableView::item { /* Don't override color here - let the model set red/green for amounts */ - background-color: transparent; + background-color: #003366; + padding: 4px; } TransactionView QTableView::item:selected { @@ -2879,7 +2893,7 @@ TransactionView QTableView::item:selected { } TransactionView QTableView::item:alternate { - background-color: rgba(255, 255, 255, 0.02); + background-color: #002952; } /* Transaction Table Headers */ @@ -2979,7 +2993,6 @@ QDialog#OptionsDialog .QTabWidget QTabBar::tab:selected { background-color: #0066CC; color: #ffffff !important; border: 1px solid #0066CC; -color: #333333 \!important; } /* Modal Overlay Progress */ diff --git a/src/qt/res/css/light.css b/src/qt/res/css/light.css index 586744bd069..27270d11686 100644 --- a/src/qt/res/css/light.css +++ b/src/qt/res/css/light.css @@ -186,6 +186,10 @@ QWidget#centralWidget { color:#003366; } + QMessageBox QLabel { + color:#003366 !important; + } + /* Options Dialog and other dialog content */ QDialog { background-color:#ffffff; @@ -1879,7 +1883,7 @@ background-color:rgba(255, 255, 255, 0.15); } #contentWidget QLabel { - color: #333333 !important; + color: #003366 !important; font-size: 14pt !important; font-weight: normal; } @@ -1905,7 +1909,7 @@ background-color:rgba(255, 255, 255, 0.15); /* Ensure text readability in modal overlay */ ModalOverlay QLabel { - color: #333333 !important; + color: #003366 !important; } ModalOverlay QWidget#bgWidget { @@ -1913,7 +1917,15 @@ background-color:rgba(255, 255, 255, 0.15); } ModalOverlay QWidget#contentWidget QLabel { - color: #333333 !important; + color: #003366 !important; + } + + /* Override inline styles from modaloverlay.ui */ + ModalOverlay #infoText, + ModalOverlay #infoTextStrong, + ModalOverlay QLabel#infoText, + ModalOverlay QLabel#infoTextStrong { + color: #003366 !important; } QWidget#bgWidget .QPushButton#closeButton { @@ -2786,21 +2798,21 @@ QListView::item:selected { color: #003366; } -/* Menu Improvements */ +/* Menu Improvements - LIGHT MODE FIX */ QMenu { color: #003366; - background-color: #002244; + background-color: #ffffff; border: 1px solid #0066cc; } QMenu::item:selected { - background-color: #0066cc; + background-color: #e6f2ff; color: #003366; } QMenu::separator { height: 1px; - background-color: #004488; + background-color: #d0d0d0; margin: 5px 0; } @@ -4297,24 +4309,46 @@ RPCConsole QWidget[objectName="tab_info"] QLabel { } -/* FORCE ALL TRANSACTION TEXT TO BE DARK BLUE IN LIGHT MODE */ -/* This overrides any hardcoded colors from C++ */ -QFrame#frame_2, -QFrame#frame_2 *, -QFrame#frame_2 QWidget, +/* FORCE TRANSACTION TEXT TO BE DARK BLUE IN LIGHT MODE - MAC FIX */ +/* This overrides any hardcoded colors from C++ EXCEPT amount columns */ QFrame#frame_2 QLabel, -QFrame#frame_2 QListView, -QFrame#frame_2 QListView *, QFrame#frame_2 QListView::item, -QFrame#frame_2 QListView::item *, QListView#listTransactions, -QListView#listTransactions *, QListView#listTransactions::item, -QListView#listTransactions::item QLabel, -TransactionOverviewWidget, -TransactionOverviewWidget *, TransactionOverviewWidget QLabel { - color: #003366 \!important; + color: #003366 !important; + font-weight: normal !important; +} + +/* BUT allow specific transaction list amounts to inherit their colors */ +QFrame#frame_2, +QFrame#frame_2 QWidget, +TransactionOverviewWidget { + color: #003366; + font-weight: normal; +} + +/* Set palette for transaction overview to ensure C++ painter gets correct colors */ +TransactionOverviewWidget, +QListView#listTransactions { + color: #003366 !important; + selection-background-color: #0066CC; + selection-color: #ffffff; +} + +/* Ensure QFrame#frame_2 has correct base text color that gets inherited by palette */ +QFrame#frame_2 { + color: #003366 !important; +} + +/* Make sure all labels in transaction list are dark blue (NOT selected state) */ +QFrame#frame_2 QListView::item QLabel, +QFrame#frame_2 QListView QLabel, +QListView#listTransactions QLabel, +QListView#listTransactions::item QLabel, +TransactionOverviewWidget::item QLabel, +TransactionOverviewWidget QListView QLabel { + color: #003366 !important; } /* Selected items should have white text */ @@ -4322,5 +4356,17 @@ QFrame#frame_2 QListView::item:selected, QFrame#frame_2 QListView::item:selected *, QListView#listTransactions::item:selected, QListView#listTransactions::item:selected * { - color: #ffffff \!important; + color: #ffffff !important; +} + +/* Ensure received amounts are green and sent amounts are red */ +TransactionView QTableView { + qproperty-receivedColor: #228B22 !important; + qproperty-sentColor: #DC143C !important; +} + +/* Force overview transaction amounts to also respect colors */ +TransactionOverviewWidget QListView { + qproperty-receivedColor: #228B22 !important; + qproperty-sentColor: #DC143C !important; } diff --git a/src/qt/res/icons/digibyte_wallet.png b/src/qt/res/icons/digibyte_wallet.png index 362188e9642..154d12a6715 100644 Binary files a/src/qt/res/icons/digibyte_wallet.png and b/src/qt/res/icons/digibyte_wallet.png differ diff --git a/src/qt/transactiontablemodel.cpp b/src/qt/transactiontablemodel.cpp index 84aee873bc6..c9d49ac4d0b 100644 --- a/src/qt/transactiontablemodel.cpp +++ b/src/qt/transactiontablemodel.cpp @@ -429,22 +429,23 @@ QVariant TransactionTableModel::addressColor(const TransactionRecord *wtx) const // Check if we're using dark theme QString currentTheme = walletModel->getOptionsModel()->data(walletModel->getOptionsModel()->index(OptionsModel::Theme), Qt::EditRole).toString(); bool isDarkTheme = (currentTheme == "dark"); - - // Show addresses without label in a less visible color + + // Always return the appropriate color for the current theme + // Dark theme: white text, Light theme: dark blue text switch(wtx->type) { case TransactionRecord::RecvWithAddress: case TransactionRecord::SendToAddress: case TransactionRecord::Generated: { - QString label = walletModel->getAddressTableModel()->labelForAddress(QString::fromStdString(wtx->address)); - if(label.isEmpty()) - return isDarkTheme ? QColor(255, 255, 255) : QColor(0, 51, 102); + // Return theme-appropriate color for both labeled and unlabeled addresses + return isDarkTheme ? QColor(255, 255, 255) : QColor(0, 51, 102); } break; default: break; } - return QVariant(); + // For other transaction types, also return theme-appropriate color + return isDarkTheme ? QColor(255, 255, 255) : QColor(0, 51, 102); } QString TransactionTableModel::formatTxAmount(const TransactionRecord *wtx, bool showUnconfirmed, DigiByteUnits::SeparatorStyle separators) const diff --git a/test/functional/test_runner.py b/test/functional/test_runner.py index 225192e61dd..bc6e3877483 100755 --- a/test/functional/test_runner.py +++ b/test/functional/test_runner.py @@ -128,8 +128,7 @@ 'wallet_backup.py --descriptors', 'feature_segwit.py --legacy-wallet', 'feature_segwit.py --descriptors', - # DigiByte: v2transport disabled - # 'feature_segwit.py --descriptors --v2transport', + 'feature_segwit.py --descriptors --v2transport', 'p2p_tx_download.py', 'wallet_avoidreuse.py --legacy-wallet', 'wallet_avoidreuse.py --descriptors', @@ -181,6 +180,7 @@ 'wallet_labels.py --descriptors', 'p2p_compactblocks.py', 'p2p_compactblocks_blocksonly.py', + 'p2p_block_sync.py --v2transport', 'wallet_hd.py --legacy-wallet', 'wallet_hd.py --descriptors', 'wallet_blank.py --legacy-wallet', @@ -239,16 +239,13 @@ 'wallet_transactiontime_rescan.py --legacy-wallet', 'p2p_addrv2_relay.py', 'p2p_compactblocks_hb.py', - # DigiByte: v2transport disabled - # 'p2p_compactblocks_hb.py --v2transport', + 'p2p_compactblocks_hb.py --v2transport', 'p2p_disconnect_ban.py', - # DigiByte: v2transport disabled - # 'p2p_disconnect_ban.py --v2transport', + 'p2p_disconnect_ban.py --v2transport', 'feature_posix_fs_permissions.py', 'rpc_decodescript.py', 'rpc_blockchain.py', - # DigiByte: v2transport disabled - # 'rpc_blockchain.py --v2transport', + 'rpc_blockchain.py --v2transport', 'rpc_deprecated.py', 'wallet_disable.py', 'wallet_change_address.py --legacy-wallet', @@ -271,11 +268,9 @@ 'mining_prioritisetransaction.py', 'p2p_invalid_locator.py', 'p2p_invalid_block.py', - # DigiByte: v2transport disabled - # 'p2p_invalid_block.py --v2transport', + 'p2p_invalid_block.py --v2transport', 'p2p_invalid_tx.py', - # DigiByte: v2transport disabled - # 'p2p_invalid_tx.py --v2transport', + 'p2p_invalid_tx.py --v2transport', 'p2p_v2_transport.py', 'example_test.py', 'wallet_txn_doublespend.py --legacy-wallet', @@ -298,15 +293,12 @@ 'wallet_importprunedfunds.py --legacy-wallet', 'wallet_importprunedfunds.py --descriptors', 'p2p_leak_tx.py', - # DigiByte: v2transport disabled - # 'p2p_leak_tx.py --v2transport', + 'p2p_leak_tx.py --v2transport', 'p2p_eviction.py', 'p2p_ibd_stalling.py', - # DigiByte: v2transport disabled - # 'p2p_ibd_stalling.py --v2transport', + 'p2p_ibd_stalling.py --v2transport', 'p2p_net_deadlock.py', - # DigiByte: v2transport disabled - # 'p2p_net_deadlock.py --v2transport', + 'p2p_net_deadlock.py --v2transport', 'wallet_signmessagewithaddress.py', 'rpc_signmessagewithprivkey.py', 'rpc_generate.py',