diff options
69 files changed, 1188 insertions, 2106 deletions
diff --git a/.cirrus.yml b/.cirrus.yml index 5624c97d56..9b0e2dbd2e 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -176,10 +176,10 @@ task: QEMU_USER_CMD: "" # Disable qemu and run the test natively task: - name: 'Win64 [unit tests, no gui tests, no boost::process, no functional tests] [focal]' + name: 'Win64 [unit tests, no gui tests, no boost::process, no functional tests] [jammy]' << : *GLOBAL_TASK_TEMPLATE container: - image: ubuntu:focal + image: ubuntu:jammy env: << : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV FILE_ENV: "./ci/test/00_setup_env_win64.sh" @@ -236,11 +236,10 @@ task: MAKEJOBS: "-j4" # Avoid excessive memory use task: - name: '[fuzzer,address,undefined,integer, no depends] [focal]' - only_if: $CIRRUS_BRANCH == $CIRRUS_DEFAULT_BRANCH || $CIRRUS_BASE_BRANCH == $CIRRUS_DEFAULT_BRANCH + name: '[fuzzer,address,undefined,integer, no depends] [jammy]' << : *GLOBAL_TASK_TEMPLATE container: - image: ubuntu:focal + image: ubuntu:jammy cpu: 4 # Increase CPU and memory to avoid timeout memory: 16G env: diff --git a/ci/test/00_setup_env_native_fuzz.sh b/ci/test/00_setup_env_native_fuzz.sh index a36063c11f..d7caec8359 100755 --- a/ci/test/00_setup_env_native_fuzz.sh +++ b/ci/test/00_setup_env_native_fuzz.sh @@ -6,7 +6,7 @@ export LC_ALL=C.UTF-8 -export DOCKER_NAME_TAG="ubuntu:20.04" +export DOCKER_NAME_TAG="ubuntu:22.04" export CONTAINER_NAME=ci_native_fuzz export PACKAGES="clang llvm python3 libevent-dev bsdmainutils libboost-dev libsqlite3-dev" export NO_DEPENDS=1 diff --git a/ci/test/00_setup_env_native_fuzz_with_valgrind.sh b/ci/test/00_setup_env_native_fuzz_with_valgrind.sh index 4657259771..a7715a6ded 100755 --- a/ci/test/00_setup_env_native_fuzz_with_valgrind.sh +++ b/ci/test/00_setup_env_native_fuzz_with_valgrind.sh @@ -6,7 +6,7 @@ export LC_ALL=C.UTF-8 -export DOCKER_NAME_TAG="ubuntu:20.04" +export DOCKER_NAME_TAG="ubuntu:22.04" export CONTAINER_NAME=ci_native_fuzz_valgrind export PACKAGES="clang llvm python3 libevent-dev bsdmainutils libboost-dev libsqlite3-dev valgrind" export NO_DEPENDS=1 diff --git a/ci/test/00_setup_env_win64.sh b/ci/test/00_setup_env_win64.sh index 6619852423..25aa682eb0 100755 --- a/ci/test/00_setup_env_win64.sh +++ b/ci/test/00_setup_env_win64.sh @@ -7,7 +7,7 @@ export LC_ALL=C.UTF-8 export CONTAINER_NAME=ci_win64 -export DOCKER_NAME_TAG=ubuntu:20.04 # Check that Focal can cross-compile to win64 +export DOCKER_NAME_TAG=ubuntu:22.04 # Check that Jammy can cross-compile to win64 export HOST=x86_64-w64-mingw32 export DPKG_ADD_ARCH="i386" export PACKAGES="python3 nsis g++-mingw-w64-x86-64 wine-binfmt wine64 wine32 file" diff --git a/configure.ac b/configure.ac index 222fa94946..ae21dd9a7c 100644 --- a/configure.ac +++ b/configure.ac @@ -100,7 +100,7 @@ dnl sets RPATH for any directories in the dynamic linker search path. dnl See more: https://wiki.debian.org/RpathIssue LT_PREREQ([1.5.2]) dnl Libtool init checks. -LT_INIT([pic-only]) +LT_INIT([pic-only win32-dll]) dnl Check/return PATH for base programs. AC_PATH_TOOL([AR], [ar]) diff --git a/contrib/devtools/README.md b/contrib/devtools/README.md index afbad096c4..79b0134adc 100644 --- a/contrib/devtools/README.md +++ b/contrib/devtools/README.md @@ -76,7 +76,7 @@ year rather than two hyphenated years. If the file already has a copyright for `The Bitcoin Core developers`, the script will exit. -gen-manpages.sh +gen-manpages.py =============== A small script to automatically create manpages in ../../doc/man by running the release binaries with the -help option. @@ -87,7 +87,7 @@ repostitory. To use this tool with out-of-tree builds set `BUILDDIR`. For example: ```bash -BUILDDIR=$PWD/build contrib/devtools/gen-manpages.sh +BUILDDIR=$PWD/build contrib/devtools/gen-manpages.py ``` security-check.py and test-security-check.py diff --git a/contrib/devtools/gen-manpages.py b/contrib/devtools/gen-manpages.py new file mode 100755 index 0000000000..26612cc444 --- /dev/null +++ b/contrib/devtools/gen-manpages.py @@ -0,0 +1,71 @@ +#!/usr/bin/env python3 +# Copyright (c) 2022 The Bitcoin Core developers +# Distributed under the MIT software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. +import os +import subprocess +import sys +import tempfile + +BINARIES = [ +'src/bitcoind', +'src/bitcoin-cli', +'src/bitcoin-tx', +'src/bitcoin-wallet', +'src/bitcoin-util', +'src/qt/bitcoin-qt', +] + +# Paths to external utilities. +git = os.getenv('GIT', 'git') +help2man = os.getenv('HELP2MAN', 'help2man') + +# If not otherwise specified, get top directory from git. +topdir = os.getenv('TOPDIR') +if not topdir: + r = subprocess.run([git, 'rev-parse', '--show-toplevel'], stdout=subprocess.PIPE, check=True, universal_newlines=True) + topdir = r.stdout.rstrip() + +# Get input and output directories. +builddir = os.getenv('BUILDDIR', topdir) +mandir = os.getenv('MANDIR', os.path.join(topdir, 'doc/man')) + +# Verify that all the required binaries are usable, and extract copyright +# message in a first pass. +versions = [] +for relpath in BINARIES: + abspath = os.path.join(builddir, relpath) + try: + r = subprocess.run([abspath, '--version'], stdout=subprocess.PIPE, universal_newlines=True) + except IOError: + print(f'{abspath} not found or not an executable', file=sys.stderr) + sys.exit(1) + # take first line (which must contain version) + verstr = r.stdout.splitlines()[0] + # last word of line is the actual version e.g. v22.99.0-5c6b3d5b3508 + verstr = verstr.split()[-1] + assert verstr.startswith('v') + # remaining lines are copyright + copyright = r.stdout.split('\n')[1:] + assert copyright[0].startswith('Copyright (C)') + + versions.append((abspath, verstr, copyright)) + +if any(verstr.endswith('-dirty') for (_, verstr, _) in versions): + print("WARNING: Binaries were built from a dirty tree.") + print('man pages generated from dirty binaries should NOT be committed.') + print('To properly generate man pages, please commit your changes (or discard them), rebuild, then run this script again.') + print() + +with tempfile.NamedTemporaryFile('w', suffix='.h2m') as footer: + # Create copyright footer, and write it to a temporary include file. + # Copyright is the same for all binaries, so just use the first. + footer.write('[COPYRIGHT]\n') + footer.write('\n'.join(versions[0][2]).strip()) + footer.flush() + + # Call the binaries through help2man to produce a manual page for each of them. + for (abspath, verstr, _) in versions: + outname = os.path.join(mandir, os.path.basename(abspath) + '.1') + print(f'Generating {outname}…') + subprocess.run([help2man, '-N', '--version-string=' + verstr, '--include=' + footer.name, '-o', outname, abspath], check=True) diff --git a/contrib/devtools/gen-manpages.sh b/contrib/devtools/gen-manpages.sh deleted file mode 100755 index 8da6ff1204..0000000000 --- a/contrib/devtools/gen-manpages.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env bash -# Copyright (c) 2016-2021 The Bitcoin Core developers -# Distributed under the MIT software license, see the accompanying -# file COPYING or http://www.opensource.org/licenses/mit-license.php. - -export LC_ALL=C -TOPDIR=${TOPDIR:-$(git rev-parse --show-toplevel)} -BUILDDIR=${BUILDDIR:-$TOPDIR} - -BINDIR=${BINDIR:-$BUILDDIR/src} -MANDIR=${MANDIR:-$TOPDIR/doc/man} - -BITCOIND=${BITCOIND:-$BINDIR/bitcoind} -BITCOINCLI=${BITCOINCLI:-$BINDIR/bitcoin-cli} -BITCOINTX=${BITCOINTX:-$BINDIR/bitcoin-tx} -WALLET_TOOL=${WALLET_TOOL:-$BINDIR/bitcoin-wallet} -BITCOINUTIL=${BITCOINQT:-$BINDIR/bitcoin-util} -BITCOINQT=${BITCOINQT:-$BINDIR/qt/bitcoin-qt} - -[ ! -x "$BITCOIND" ] && echo "$BITCOIND not found or not executable." && exit 1 - -# Don't allow man pages to be generated for binaries built from a dirty tree -DIRTY="" -for cmd in $BITCOIND $BITCOINCLI $BITCOINTX $WALLET_TOOL $BITCOINUTIL $BITCOINQT; do - VERSION_OUTPUT=$($cmd --version) - if [[ $VERSION_OUTPUT == *"dirty"* ]]; then - DIRTY="${DIRTY}${cmd}\n" - fi -done -if [ -n "$DIRTY" ] -then - echo -e "WARNING: the following binaries were built from a dirty tree:\n" - echo -e "$DIRTY" - echo "man pages generated from dirty binaries should NOT be committed." - echo "To properly generate man pages, please commit your changes to the above binaries, rebuild them, then run this script again." -fi - -# The autodetected version git tag can screw up manpage output a little bit -read -r -a BTCVER <<< "$($BITCOINCLI --version | head -n1 | awk -F'[ -]' '{ print $6, $7 }')" - -# Create a footer file with copyright content. -# This gets autodetected fine for bitcoind if --version-string is not set, -# but has different outcomes for bitcoin-qt and bitcoin-cli. -echo "[COPYRIGHT]" > footer.h2m -$BITCOIND --version | sed -n '1!p' >> footer.h2m - -for cmd in $BITCOIND $BITCOINCLI $BITCOINTX $WALLET_TOOL $BITCOINUTIL $BITCOINQT; do - cmdname="${cmd##*/}" - help2man -N --version-string="${BTCVER[0]}" --include=footer.h2m -o "${MANDIR}/${cmdname}.1" "${cmd}" - sed -i "s/\\\-${BTCVER[1]}//g" "${MANDIR}/${cmdname}.1" -done - -rm -f footer.h2m diff --git a/contrib/guix/guix-build b/contrib/guix/guix-build index 2d44ad0365..b38f91f3c7 100755 --- a/contrib/guix/guix-build +++ b/contrib/guix/guix-build @@ -192,7 +192,7 @@ fi if ! getent services http https ftp > /dev/null 2>&1; then cat << EOF -ERR: Your system's C library can not find service database entries for at least +ERR: Your system's C library cannot find service database entries for at least one of the following services: http, https, ftp. Hint: Most likely, /etc/services does not exist yet (common for docker images diff --git a/contrib/macdeploy/macdeployqtplus b/contrib/macdeploy/macdeployqtplus index 3b76108034..0455a137f1 100755 --- a/contrib/macdeploy/macdeployqtplus +++ b/contrib/macdeploy/macdeployqtplus @@ -16,7 +16,7 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. # -import sys, re, os, shutil, stat, os.path +import sys, re, os, platform, shutil, stat, subprocess, os.path from argparse import ArgumentParser from ds_store import DSStore from mac_alias import Alias @@ -244,49 +244,47 @@ def copyFramework(framework: FrameworkInfo, path: str, verbose: int) -> Optional fromPath = framework.sourceFilePath toDir = os.path.join(path, framework.destinationDirectory) toPath = os.path.join(toDir, framework.binaryName) - - if not os.path.exists(fromPath): - raise RuntimeError(f"No file at {fromPath}") - - if os.path.exists(toPath): - return None # Already there - - if not os.path.exists(toDir): - os.makedirs(toDir) - - shutil.copy2(fromPath, toPath) - if verbose: - print("Copied:", fromPath) - print(" to:", toPath) + + if framework.isDylib(): + if not os.path.exists(fromPath): + raise RuntimeError(f"No file at {fromPath}") + + if os.path.exists(toPath): + return None # Already there + + if not os.path.exists(toDir): + os.makedirs(toDir) + + shutil.copy2(fromPath, toPath) + if verbose: + print("Copied:", fromPath) + print(" to:", toPath) + else: + to_dir = os.path.join(path, "Contents", "Frameworks", framework.frameworkName) + if os.path.exists(to_dir): + return None # Already there + + from_dir = framework.frameworkPath + if not os.path.exists(from_dir): + raise RuntimeError(f"No directory at {from_dir}") + + shutil.copytree(from_dir, to_dir, symlinks=True) + if verbose: + print("Copied:", from_dir) + print(" to:", to_dir) + + headers_link = os.path.join(to_dir, "Headers") + if os.path.exists(headers_link): + os.unlink(headers_link) + + headers_dir = os.path.join(to_dir, framework.binaryDirectory, "Headers") + if os.path.exists(headers_dir): + shutil.rmtree(headers_dir) permissions = os.stat(toPath) if not permissions.st_mode & stat.S_IWRITE: os.chmod(toPath, permissions.st_mode | stat.S_IWRITE) - if not framework.isDylib(): # Copy resources for real frameworks - - linkfrom = os.path.join(path, "Contents","Frameworks", framework.frameworkName, "Versions", "Current") - linkto = framework.version - if not os.path.exists(linkfrom): - os.symlink(linkto, linkfrom) - print("Linked:", linkfrom, "->", linkto) - fromResourcesDir = framework.sourceResourcesDirectory - if os.path.exists(fromResourcesDir): - toResourcesDir = os.path.join(path, framework.destinationResourcesDirectory) - shutil.copytree(fromResourcesDir, toResourcesDir, symlinks=True) - if verbose: - print("Copied resources:", fromResourcesDir) - print(" to:", toResourcesDir) - fromContentsDir = framework.sourceVersionContentsDirectory - if not os.path.exists(fromContentsDir): - fromContentsDir = framework.sourceContentsDirectory - if os.path.exists(fromContentsDir): - toContentsDir = os.path.join(path, framework.destinationVersionContentsDirectory) - shutil.copytree(fromContentsDir, toContentsDir, symlinks=True) - if verbose: - print("Copied Contents:", fromContentsDir) - print(" to:", toContentsDir) - return toPath def deployFrameworks(frameworks: List[FrameworkInfo], bundlePath: str, binaryPath: str, strip: bool, verbose: int, deploymentInfo: Optional[DeploymentInfo] = None) -> DeploymentInfo: @@ -543,6 +541,9 @@ ds.close() # ------------------------------------------------ +if platform.system() == "Darwin": + subprocess.check_call(f"codesign --deep --force --sign - {target}", shell=True) + if config.dmg is not None: print("+ Preparing .dmg disk image +") diff --git a/depends/packages/boost.mk b/depends/packages/boost.mk index 11fed2ea13..563848c398 100644 --- a/depends/packages/boost.mk +++ b/depends/packages/boost.mk @@ -1,8 +1,8 @@ package=boost -$(package)_version=1.71.0 +$(package)_version=1.77.0 $(package)_download_path=https://boostorg.jfrog.io/artifactory/main/release/$($(package)_version)/source/ $(package)_file_name=boost_$(subst .,_,$($(package)_version)).tar.bz2 -$(package)_sha256_hash=d73a8da01e8bf8c7eda40b4c84915071a8c8a0df4a6734537ddde4a8580524ee +$(package)_sha256_hash=fc9f85fc030e233142908241af7a846e60630aa7388de9a5fafb1f3a26840854 define $(package)_stage_cmds mkdir -p $($(package)_staging_prefix_dir)/include && \ diff --git a/doc/bips.md b/doc/bips.md index 27adcedd31..0f3f61daf1 100644 --- a/doc/bips.md +++ b/doc/bips.md @@ -1,4 +1,4 @@ -BIPs that are implemented by Bitcoin Core (up-to-date up to **v22.0**): +BIPs that are implemented by Bitcoin Core (up-to-date up to **v23.0**): * [`BIP 9`](https://github.com/bitcoin/bips/blob/master/bip-0009.mediawiki): The changes allowing multiple soft-forks to be deployed in parallel have been implemented since **v0.12.1** ([PR #7575](https://github.com/bitcoin/bitcoin/pull/7575)) * [`BIP 11`](https://github.com/bitcoin/bips/blob/master/bip-0011.mediawiki): Multisig outputs are standard since **v0.6.0** ([PR #669](https://github.com/bitcoin/bitcoin/pull/669)). @@ -42,7 +42,8 @@ BIPs that are implemented by Bitcoin Core (up-to-date up to **v22.0**): * [`BIP 147`](https://github.com/bitcoin/bips/blob/master/bip-0147.mediawiki): NULLDUMMY softfork as of **v0.13.1** ([PR 8636](https://github.com/bitcoin/bitcoin/pull/8636) and [PR 8937](https://github.com/bitcoin/bitcoin/pull/8937)), *buried* since **v0.19.0** ([PR #16060](https://github.com/bitcoin/bitcoin/pull/16060)). * [`BIP 152`](https://github.com/bitcoin/bips/blob/master/bip-0152.mediawiki): Compact block transfer and related optimizations are used as of **v0.13.0** ([PR 8068](https://github.com/bitcoin/bitcoin/pull/8068)). * [`BIP 155`](https://github.com/bitcoin/bips/blob/master/bip-0155.mediawiki): The 'addrv2' and 'sendaddrv2' messages which enable relay of Tor V3 addresses (and other networks) are supported as of **v0.21.0** ([PR 19954](https://github.com/bitcoin/bitcoin/pull/19954)). -* [`BIP 158`](https://github.com/bitcoin/bips/blob/master/bip-0158.mediawiki): Compact Block Filters for Light Clients can be indexed as of **v0.19.0** ([PR #14121](https://github.com/bitcoin/bitcoin/pull/14121)). +* [`BIP 157`](https://github.com/bitcoin/bips/blob/master/bip-0157.mediawiki) + [`158`](https://github.com/bitcoin/bips/blob/master/bip-0158.mediawiki): Compact Block Filters for Light Clients can be indexed as of **v0.19.0** ([PR #14121](https://github.com/bitcoin/bitcoin/pull/14121)) and served to peers on the P2P network as of **v0.21.0** ([PR #16442](https://github.com/bitcoin/bitcoin/pull/16442)). * [`BIP 159`](https://github.com/bitcoin/bips/blob/master/bip-0159.mediawiki): The `NODE_NETWORK_LIMITED` service bit is signalled as of **v0.16.0** ([PR 11740](https://github.com/bitcoin/bitcoin/pull/11740)), and such nodes are connected to as of **v0.17.0** ([PR 10387](https://github.com/bitcoin/bitcoin/pull/10387)). * [`BIP 173`](https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki): Bech32 addresses for native Segregated Witness outputs are supported as of **v0.16.0** ([PR 11167](https://github.com/bitcoin/bitcoin/pull/11167)). Bech32 addresses are generated by default as of **v0.20.0** ([PR 16884](https://github.com/bitcoin/bitcoin/pull/16884)). * [`BIP 174`](https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki): RPCs to operate on Partially Signed Bitcoin Transactions (PSBT) are present as of **v0.17.0** ([PR 13557](https://github.com/bitcoin/bitcoin/pull/13557)). diff --git a/doc/dependencies.md b/doc/dependencies.md index 63315cdcc2..99ff26f457 100644 --- a/doc/dependencies.md +++ b/doc/dependencies.md @@ -6,7 +6,7 @@ These are the dependencies currently used by Bitcoin Core. You can find instruct | Dependency | Version used | Minimum required | CVEs | Shared | [Bundled Qt library](https://doc.qt.io/qt-5/configure-options.html#third-party-libraries) | | --- | --- | --- | --- | --- | --- | | Berkeley DB | [4.8.30](https://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html) | 4.8.x | No | | | -| Boost | [1.71.0](https://www.boost.org/users/download/) | [1.64.0](https://github.com/bitcoin/bitcoin/pull/22320) | No | | | +| Boost | [1.77.0](https://www.boost.org/users/download/) | [1.64.0](https://github.com/bitcoin/bitcoin/pull/22320) | No | | | | Clang<sup>[ \* ](#note1)</sup> | | [7.0](https://releases.llvm.org/download.html) (C++17 & std::filesystem support) | | | | | Fontconfig | [2.12.6](https://www.freedesktop.org/software/fontconfig/release/) | | No | Yes | | | FreeType | [2.11.0](https://download.savannah.gnu.org/releases/freetype) | | No | | [Yes](https://github.com/bitcoin/bitcoin/blob/master/depends/packages/qt.mk) (Android only) | diff --git a/doc/developer-notes.md b/doc/developer-notes.md index 1888897856..bfb64093e1 100644 --- a/doc/developer-notes.md +++ b/doc/developer-notes.md @@ -331,7 +331,7 @@ other input. failure, it will throw an exception, which can be caught to recover from the error. - For example, a nullptr dereference or any other logic bug in RPC code - means that the RPC code is faulty and can not be executed. However, the + means that the RPC code is faulty and cannot be executed. However, the logic bug can be shown to the user and the program can continue to run. * `Assume` should be used to document assumptions when program execution can safely continue even if the assumption is violated. In debug builds it @@ -1199,7 +1199,7 @@ A few guidelines for introducing and reviewing new RPC interfaces: - Don't forget to fill in the argument names correctly in the RPC command table. - - *Rationale*: If not, the call can not be used with name-based arguments. + - *Rationale*: If not, the call cannot be used with name-based arguments. - Add every non-string RPC argument `(method, idx, name)` to the table `vRPCConvertParams` in `rpc/client.cpp`. diff --git a/doc/policy/packages.md b/doc/policy/packages.md index 07698f2af2..7f7fbe18cd 100644 --- a/doc/policy/packages.md +++ b/doc/policy/packages.md @@ -57,3 +57,18 @@ test accepts): - Warning: Batched fee-bumping may be unsafe for some use cases. Users and application developers should take caution if utilizing multi-parent packages. + +* Transactions in the package that have the same txid as another transaction already in the mempool + will be removed from the package prior to submission ("deduplication"). + + - *Rationale*: Node operators are free to set their mempool policies however they please, nodes + may receive transactions in different orders, and malicious counterparties may try to take + advantage of policy differences to pin or delay propagation of transactions. As such, it's + possible for some package transaction(s) to already be in the mempool, and there is no need to + repeat validation for those transactions or double-count them in fees. + + - *Rationale*: We want to prevent potential censorship vectors. We should not reject entire + packages because we already have one of the transactions. Also, if an attacker first broadcasts + a competing package or transaction with a mutated witness, even though the two + same-txid-different-witness transactions are conflicting and cannot replace each other, the + honest package should still be considered for acceptance. diff --git a/doc/release-process.md b/doc/release-process.md index c5dba46238..5a74f72b6e 100644 --- a/doc/release-process.md +++ b/doc/release-process.md @@ -6,13 +6,14 @@ Release Process ### Before every release candidate * Update translations see [translation_process.md](https://github.com/bitcoin/bitcoin/blob/master/doc/translation_process.md#synchronising-translations). -* Update manpages, see [gen-manpages.sh](https://github.com/bitcoin/bitcoin/blob/master/contrib/devtools/README.md#gen-manpagessh). * Update release candidate version in `configure.ac` (`CLIENT_VERSION_RC`). +* Update manpages (after rebuilding the binaries), see [gen-manpages.py](https://github.com/bitcoin/bitcoin/blob/master/contrib/devtools/README.md#gen-manpagespy). ### Before every major and minor release * Update [bips.md](bips.md) to account for changes since the last release (don't forget to bump the version number on the first line). * Update version in `configure.ac` (don't forget to set `CLIENT_VERSION_RC` to `0`). +* Update manpages (see previous section) * Write release notes (see "Write the release notes" below). ### Before every major release diff --git a/src/bench/examples.cpp b/src/bench/examples.cpp index dcd615b9da..72a9922e94 100644 --- a/src/bench/examples.cpp +++ b/src/bench/examples.cpp @@ -13,7 +13,7 @@ static void Trig(benchmark::Bench& bench) { double d = 0.01; bench.run([&] { - sum += sin(d); + sum = sum + sin(d); d += 0.000001; }); } diff --git a/src/bitcoin-cli.cpp b/src/bitcoin-cli.cpp index a85a74835d..5523fff3b2 100644 --- a/src/bitcoin-cli.cpp +++ b/src/bitcoin-cli.cpp @@ -69,8 +69,13 @@ static void SetupCliArgs(ArgsManager& argsman) argsman.AddArg("-version", "Print version and exit", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS); argsman.AddArg("-conf=<file>", strprintf("Specify configuration file. Relative paths will be prefixed by datadir location. (default: %s)", BITCOIN_CONF_FILENAME), ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS); argsman.AddArg("-datadir=<dir>", "Specify data directory", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS); - argsman.AddArg("-generate", strprintf("Generate blocks immediately, equivalent to RPC getnewaddress followed by RPC generatetoaddress. Optional positional integer arguments are number of blocks to generate (default: %s) and maximum iterations to try (default: %s), equivalent to RPC generatetoaddress nblocks and maxtries arguments. Example: bitcoin-cli -generate 4 1000", DEFAULT_NBLOCKS, DEFAULT_MAX_TRIES), ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS); - argsman.AddArg("-addrinfo", "Get the number of addresses known to the node, per network and total.", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS); + argsman.AddArg("-generate", + strprintf("Generate blocks, equivalent to RPC getnewaddress followed by RPC generatetoaddress. Optional positional integer " + "arguments are number of blocks to generate (default: %s) and maximum iterations to try (default: %s), equivalent to " + "RPC generatetoaddress nblocks and maxtries arguments. Example: bitcoin-cli -generate 4 1000", + DEFAULT_NBLOCKS, DEFAULT_MAX_TRIES), + ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS); + argsman.AddArg("-addrinfo", "Get the number of addresses known to the node, per network and total, after filtering for quality and recency. The total number of addresses known to the node may be higher.", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS); argsman.AddArg("-getinfo", "Get general information from the remote server. Note that unlike server-side RPC calls, the results of -getinfo is the result of multiple non-atomic requests. Some entries in the result may represent results from different states (e.g. wallet balance may be as of a different block from the chain state reported)", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS); argsman.AddArg("-netinfo", "Get network peer connection information from the remote server. An optional integer argument from 0 to 4 can be passed for different peers listings (default: 0). Pass \"help\" for detailed help documentation.", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS); @@ -128,7 +133,10 @@ static int AppInitRPC(int argc, char* argv[]) } if (argc < 2 || HelpRequested(gArgs) || gArgs.IsArgSet("-version")) { std::string strUsage = PACKAGE_NAME " RPC client version " + FormatFullVersion() + "\n"; - if (!gArgs.IsArgSet("-version")) { + + if (gArgs.IsArgSet("-version")) { + strUsage += FormatParagraph(LicenseInfo()); + } else { strUsage += "\n" "Usage: bitcoin-cli [options] <command> [params] Send command to " PACKAGE_NAME "\n" "or: bitcoin-cli [options] -named <command> [name=value]... Send command to " PACKAGE_NAME " (with named arguments)\n" diff --git a/src/bitcoin-tx.cpp b/src/bitcoin-tx.cpp index ec07114d6e..b297081cab 100644 --- a/src/bitcoin-tx.cpp +++ b/src/bitcoin-tx.cpp @@ -102,7 +102,10 @@ static int AppInitRawTx(int argc, char* argv[]) if (argc < 2 || HelpRequested(gArgs) || gArgs.IsArgSet("-version")) { // First part of help message is specific to this utility std::string strUsage = PACKAGE_NAME " bitcoin-tx utility version " + FormatFullVersion() + "\n"; - if (!gArgs.IsArgSet("-version")) { + + if (gArgs.IsArgSet("-version")) { + strUsage += FormatParagraph(LicenseInfo()); + } else { strUsage += "\n" "Usage: bitcoin-tx [options] <hex-tx> [commands] Update hex-encoded bitcoin transaction\n" "or: bitcoin-tx [options] -create [commands] Create hex-encoded bitcoin transaction\n" diff --git a/src/bitcoin-util.cpp b/src/bitcoin-util.cpp index 973f4f2883..b457e0b354 100644 --- a/src/bitcoin-util.cpp +++ b/src/bitcoin-util.cpp @@ -53,7 +53,10 @@ static int AppInitUtil(ArgsManager& args, int argc, char* argv[]) if (HelpRequested(args) || args.IsArgSet("-version")) { // First part of help message is specific to this utility std::string strUsage = PACKAGE_NAME " bitcoin-util utility version " + FormatFullVersion() + "\n"; - if (!args.IsArgSet("-version")) { + + if (args.IsArgSet("-version")) { + strUsage += FormatParagraph(LicenseInfo()); + } else { strUsage += "\n" "Usage: bitcoin-util [options] [commands] Do stuff\n"; strUsage += "\n" + args.GetHelpMessage(); diff --git a/src/bitcoin-wallet.cpp b/src/bitcoin-wallet.cpp index 65c37f182f..2f3dd45267 100644 --- a/src/bitcoin-wallet.cpp +++ b/src/bitcoin-wallet.cpp @@ -59,11 +59,14 @@ static bool WalletAppInit(ArgsManager& args, int argc, char* argv[]) } if (argc < 2 || HelpRequested(args) || args.IsArgSet("-version")) { std::string strUsage = strprintf("%s bitcoin-wallet version", PACKAGE_NAME) + " " + FormatFullVersion() + "\n"; - if (!args.IsArgSet("-version")) { + + if (args.IsArgSet("-version")) { + strUsage += FormatParagraph(LicenseInfo()); + } else { strUsage += "\n" "bitcoin-wallet is an offline tool for creating and interacting with " PACKAGE_NAME " wallet files.\n" "By default bitcoin-wallet will act on wallets in the default mainnet wallet directory in the datadir.\n" - "To change the target wallet, use the -datadir, -wallet and -testnet/-regtest arguments.\n\n" + "To change the target wallet, use the -datadir, -wallet and -regtest/-signet/-testnet arguments.\n\n" "Usage:\n" " bitcoin-wallet [options] <command>\n"; strUsage += "\n" + args.GetHelpMessage(); diff --git a/src/bitcoind.cpp b/src/bitcoind.cpp index 6432e8849d..9843382682 100644 --- a/src/bitcoind.cpp +++ b/src/bitcoind.cpp @@ -126,9 +126,10 @@ static bool AppInit(NodeContext& node, int argc, char* argv[]) if (HelpRequested(args) || args.IsArgSet("-version")) { std::string strUsage = PACKAGE_NAME " version " + FormatFullVersion() + "\n"; - if (!args.IsArgSet("-version")) { - strUsage += FormatParagraph(LicenseInfo()) + "\n" - "\nUsage: bitcoind [options] Start " PACKAGE_NAME "\n" + if (args.IsArgSet("-version")) { + strUsage += FormatParagraph(LicenseInfo()); + } else { + strUsage += "\nUsage: bitcoind [options] Start " PACKAGE_NAME "\n" "\n"; strUsage += args.GetHelpMessage(); } diff --git a/src/clientversion.cpp b/src/clientversion.cpp index 9b65952b02..192e9c52bc 100644 --- a/src/clientversion.cpp +++ b/src/clientversion.cpp @@ -3,9 +3,13 @@ // file COPYING or http://www.opensource.org/licenses/mit-license.php. #include <clientversion.h> +#include <util/translation.h> #include <tinyformat.h> +#include <sstream> +#include <string> +#include <vector> /** * Name of client reported in the 'version' message. Report the same name @@ -72,3 +76,32 @@ std::string FormatSubVersion(const std::string& name, int nClientVersion, const ss << "/"; return ss.str(); } + +std::string CopyrightHolders(const std::string& strPrefix) +{ + const auto copyright_devs = strprintf(_(COPYRIGHT_HOLDERS).translated, COPYRIGHT_HOLDERS_SUBSTITUTION); + std::string strCopyrightHolders = strPrefix + copyright_devs; + + // Make sure Bitcoin Core copyright is not removed by accident + if (copyright_devs.find("Bitcoin Core") == std::string::npos) { + strCopyrightHolders += "\n" + strPrefix + "The Bitcoin Core developers"; + } + return strCopyrightHolders; +} + +std::string LicenseInfo() +{ + const std::string URL_SOURCE_CODE = "<https://github.com/bitcoin/bitcoin>"; + + return CopyrightHolders(strprintf(_("Copyright (C) %i-%i").translated, 2009, COPYRIGHT_YEAR) + " ") + "\n" + + "\n" + + strprintf(_("Please contribute if you find %s useful. " + "Visit %s for further information about the software.").translated, PACKAGE_NAME, "<" PACKAGE_URL ">") + + "\n" + + strprintf(_("The source code is available from %s.").translated, URL_SOURCE_CODE) + + "\n" + + "\n" + + _("This is experimental software.").translated + "\n" + + strprintf(_("Distributed under the MIT software license, see the accompanying file %s or %s").translated, "COPYING", "<https://opensource.org/licenses/MIT>") + + "\n"; +} diff --git a/src/clientversion.h b/src/clientversion.h index a39d96292d..d2efd7dcab 100644 --- a/src/clientversion.h +++ b/src/clientversion.h @@ -41,6 +41,11 @@ extern const std::string CLIENT_NAME; std::string FormatFullVersion(); std::string FormatSubVersion(const std::string& name, int nClientVersion, const std::vector<std::string>& comments); +std::string CopyrightHolders(const std::string& strPrefix); + +/** Returns licensing information (for -version) */ +std::string LicenseInfo(); + #endif // WINDRES_PREPROC #endif // BITCOIN_CLIENTVERSION_H diff --git a/src/init.cpp b/src/init.cpp index 6aef1f8149..02ea30e28e 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -395,7 +395,7 @@ void SetupServerArgs(ArgsManager& argsman) argsman.AddArg("-version", "Print version and exit", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS); #if HAVE_SYSTEM - argsman.AddArg("-alertnotify=<cmd>", "Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message)", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS); + argsman.AddArg("-alertnotify=<cmd>", "Execute command when an alert is raised (%s in cmd is replaced by message)", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS); #endif argsman.AddArg("-assumevalid=<hex>", strprintf("If this block is in the chain assume that it and its ancestors are valid and potentially skip their script verification (0 to verify all, default: %s, testnet: %s, signet: %s)", defaultChainParams->GetConsensus().defaultAssumeValid.GetHex(), testnetChainParams->GetConsensus().defaultAssumeValid.GetHex(), signetChainParams->GetConsensus().defaultAssumeValid.GetHex()), ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS); argsman.AddArg("-blocksdir=<dir>", "Specify directory to hold blocks subdirectory for *.dat files (default: <datadir>)", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS); @@ -594,25 +594,6 @@ void SetupServerArgs(ArgsManager& argsman) argsman.AddHiddenArgs(hidden_args); } -std::string LicenseInfo() -{ - const std::string URL_SOURCE_CODE = "<https://github.com/bitcoin/bitcoin>"; - - return CopyrightHolders(strprintf(_("Copyright (C) %i-%i").translated, 2009, COPYRIGHT_YEAR) + " ") + "\n" + - "\n" + - strprintf(_("Please contribute if you find %s useful. " - "Visit %s for further information about the software.").translated, - PACKAGE_NAME, "<" PACKAGE_URL ">") + - "\n" + - strprintf(_("The source code is available from %s.").translated, - URL_SOURCE_CODE) + - "\n" + - "\n" + - _("This is experimental software.").translated + "\n" + - strprintf(_("Distributed under the MIT software license, see the accompanying file %s or %s").translated, "COPYING", "<https://opensource.org/licenses/MIT>") + - "\n"; -} - static bool fHaveGenesis = false; static Mutex g_genesis_wait_mutex; static std::condition_variable g_genesis_wait_cv; diff --git a/src/init.h b/src/init.h index 1292cc1a3a..ddd439f619 100644 --- a/src/init.h +++ b/src/init.h @@ -70,7 +70,4 @@ bool AppInitMain(node::NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip */ void SetupServerArgs(ArgsManager& argsman); -/** Returns licensing information (for -version) */ -std::string LicenseInfo(); - #endif // BITCOIN_INIT_H diff --git a/src/net.cpp b/src/net.cpp index bee8710062..d5763ee68b 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -3097,7 +3097,7 @@ void CaptureMessage(const CAddress& addr, const std::string& msg_type, const Spa // layer (processing) perspective. auto now = GetTime<std::chrono::microseconds>(); - // Windows folder names can not include a colon + // Windows folder names cannot include a colon std::string clean_addr = addr.ToString(); std::replace(clean_addr.begin(), clean_addr.end(), ':', '_'); diff --git a/src/policy/feerate.h b/src/policy/feerate.h index 188a44b73d..50fd6fd11b 100644 --- a/src/policy/feerate.h +++ b/src/policy/feerate.h @@ -24,35 +24,40 @@ enum class FeeEstimateMode { }; /** - * Fee rate in satoshis per kilobyte: CAmount / kB + * Fee rate in satoshis per kilovirtualbyte: CAmount / kvB */ class CFeeRate { private: - CAmount nSatoshisPerK; // unit is satoshis-per-1,000-bytes + /** Fee rate in sat/kvB (satoshis per 1000 virtualbytes) */ + CAmount nSatoshisPerK; public: - /** Fee rate of 0 satoshis per kB */ + /** Fee rate of 0 satoshis per kvB */ CFeeRate() : nSatoshisPerK(0) { } template<typename I> explicit CFeeRate(const I _nSatoshisPerK): nSatoshisPerK(_nSatoshisPerK) { // We've previously had bugs creep in from silent double->int conversion... static_assert(std::is_integral<I>::value, "CFeeRate should be used without floats"); } - /** Constructor for a fee rate in satoshis per kvB (sat/kvB). + + /** + * Construct a fee rate from a fee in satoshis and a vsize in vB. * - * Passing a num_bytes value of COIN (1e8) returns a fee rate in satoshis per vB (sat/vB), - * e.g. (nFeePaid * 1e8 / 1e3) == (nFeePaid / 1e5), - * where 1e5 is the ratio to convert from BTC/kvB to sat/vB. + * param@[in] nFeePaid The fee paid by a transaction, in satoshis + * param@[in] num_bytes The vsize of a transaction, in vbytes */ CFeeRate(const CAmount& nFeePaid, uint32_t num_bytes); + /** - * Return the fee in satoshis for the given size in bytes. - * If the calculated fee would have fractional satoshis, then the returned fee will always be rounded up to the nearest satoshi. + * Return the fee in satoshis for the given vsize in vbytes. + * If the calculated fee would have fractional satoshis, then the + * returned fee will always be rounded up to the nearest satoshi. */ CAmount GetFee(uint32_t num_bytes) const; + /** - * Return the fee in satoshis for a size of 1000 bytes + * Return the fee in satoshis for a vsize of 1000 vbytes */ CAmount GetFeePerK() const { return GetFee(1000); } friend bool operator<(const CFeeRate& a, const CFeeRate& b) { return a.nSatoshisPerK < b.nSatoshisPerK; } diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index eb31287c56..d6f80e1558 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -454,6 +454,16 @@ WId BitcoinApplication::getMainWinId() const return window->winId(); } +bool BitcoinApplication::event(QEvent* e) +{ + if (e->type() == QEvent::Quit) { + requestShutdown(); + return true; + } + + return QApplication::event(e); +} + static void SetupUIArgs(ArgsManager& argsman) { argsman.AddArg("-choosedatadir", strprintf("Choose data directory on startup (default: %u)", DEFAULT_CHOOSE_DATADIR), ArgsManager::ALLOW_ANY, OptionsCategory::GUI); @@ -509,7 +519,7 @@ int GuiMain(int argc, char* argv[]) InitError(strprintf(Untranslated("Error parsing command line arguments: %s\n"), error)); // Create a message box, because the gui has neither been created nor has subscribed to core signals QMessageBox::critical(nullptr, PACKAGE_NAME, - // message can not be translated because translations have not been initialized + // message cannot be translated because translations have not been initialized QString::fromStdString("Error parsing command line arguments: %1.").arg(QString::fromStdString(error))); return EXIT_FAILURE; } diff --git a/src/qt/bitcoin.h b/src/qt/bitcoin.h index 0703c6dcb9..7a6aa5cdc9 100644 --- a/src/qt/bitcoin.h +++ b/src/qt/bitcoin.h @@ -92,6 +92,9 @@ Q_SIGNALS: void splashFinished(); void windowShown(BitcoinGUI* window); +protected: + bool event(QEvent* e) override; + private: std::optional<InitExecutor> m_executor; OptionsModel *optionsModel; diff --git a/src/qt/bitcoinstrings.cpp b/src/qt/bitcoinstrings.cpp index 90b15f3898..18d2c5a3a3 100644 --- a/src/qt/bitcoinstrings.cpp +++ b/src/qt/bitcoinstrings.cpp @@ -88,7 +88,7 @@ QT_TRANSLATE_NOOP("bitcoin-core", "" "SQLiteDatabase: Unknown sqlite wallet schema version %d. Only version %d is " "supported"), QT_TRANSLATE_NOOP("bitcoin-core", "" -"The -txindex upgrade started by a previous version can not be completed. " +"The -txindex upgrade started by a previous version cannot be completed. " "Restart with the previous version or run a full -reindex."), QT_TRANSLATE_NOOP("bitcoin-core", "" "The block database contains a block which appears to be from the future. " @@ -146,7 +146,6 @@ QT_TRANSLATE_NOOP("bitcoin-core", "Cannot resolve -%s address: '%s'"), QT_TRANSLATE_NOOP("bitcoin-core", "Cannot set -forcednsseed to true when setting -dnsseed to false."), QT_TRANSLATE_NOOP("bitcoin-core", "Cannot set -peerblockfilters without -blockfilterindex."), QT_TRANSLATE_NOOP("bitcoin-core", "Cannot write to data directory '%s'; check permissions."), -QT_TRANSLATE_NOOP("bitcoin-core", "Change index out of range"), QT_TRANSLATE_NOOP("bitcoin-core", "Config setting for %s only applied on %s network when in [%s] section."), QT_TRANSLATE_NOOP("bitcoin-core", "Copyright (C) %i-%i"), QT_TRANSLATE_NOOP("bitcoin-core", "Corrupted block database detected"), @@ -234,6 +233,7 @@ QT_TRANSLATE_NOOP("bitcoin-core", "This is the minimum transaction fee you pay o QT_TRANSLATE_NOOP("bitcoin-core", "This is the transaction fee you will pay if you send a transaction."), QT_TRANSLATE_NOOP("bitcoin-core", "Transaction amount too small"), QT_TRANSLATE_NOOP("bitcoin-core", "Transaction amounts must not be negative"), +QT_TRANSLATE_NOOP("bitcoin-core", "Transaction change output index out of range"), QT_TRANSLATE_NOOP("bitcoin-core", "Transaction has too long of a mempool chain"), QT_TRANSLATE_NOOP("bitcoin-core", "Transaction must have at least one recipient"), QT_TRANSLATE_NOOP("bitcoin-core", "Transaction needs a change address, but we can't generate it."), diff --git a/src/qt/intro.cpp b/src/qt/intro.cpp index e9a4034e62..dcde7adec4 100644 --- a/src/qt/intro.cpp +++ b/src/qt/intro.cpp @@ -298,7 +298,7 @@ void Intro::setStatus(int status, const QString &message, quint64 bytesAvailable void Intro::UpdateFreeSpaceLabel() { - QString freeString = tr("%1 GB of free space available").arg(m_bytes_available / GB_BYTES); + QString freeString = tr("%1 GB of space available").arg(m_bytes_available / GB_BYTES); if (m_bytes_available < m_required_space_gb * GB_BYTES) { freeString += " " + tr("(of %1 GB needed)").arg(m_required_space_gb); ui->freeSpace->setStyleSheet("QLabel { color: #800000 }"); diff --git a/src/qt/locale/bitcoin_en.ts b/src/qt/locale/bitcoin_en.ts index 93f0aee66c..5e515099dd 100644 --- a/src/qt/locale/bitcoin_en.ts +++ b/src/qt/locale/bitcoin_en.ts @@ -313,7 +313,7 @@ Signing is only possible with addresses of the type 'legacy'.</source> <context> <name>BitcoinApplication</name> <message> - <location filename="../bitcoin.cpp" line="+429"/> + <location filename="../bitcoin.cpp" line="+433"/> <source>Runaway exception</source> <translation type="unfinished"></translation> </message> @@ -346,7 +346,7 @@ Signing is only possible with addresses of the type 'legacy'.</source> <translation>Show general overview of wallet</translation> </message> <message> - <location line="+28"/> + <location line="+20"/> <source>&Transactions</source> <translation>&Transactions</translation> </message> @@ -356,7 +356,7 @@ Signing is only possible with addresses of the type 'legacy'.</source> <translation>Browse transaction history</translation> </message> <message> - <location line="+23"/> + <location line="+19"/> <source>E&xit</source> <translation>E&xit</translation> </message> @@ -391,12 +391,12 @@ Signing is only possible with addresses of the type 'legacy'.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+46"/> + <location line="+44"/> <source>Create a new wallet</source> <translation type="unfinished"></translation> </message> <message> - <location line="+128"/> + <location line="+127"/> <source>&Minimize</source> <translation type="unfinished"></translation> </message> @@ -406,7 +406,7 @@ Signing is only possible with addresses of the type 'legacy'.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+371"/> + <location line="+392"/> <source>Network activity disabled.</source> <extracomment>A substring of the tooltip.</extracomment> <translation type="unfinished"></translation> @@ -417,12 +417,12 @@ Signing is only possible with addresses of the type 'legacy'.</source> <translation type="unfinished"></translation> </message> <message> - <location line="-1103"/> + <location line="-1109"/> <source>Send coins to a Bitcoin address</source> <translation>Send coins to a Bitcoin address</translation> </message> <message> - <location line="+67"/> + <location line="+53"/> <source>Backup wallet to another location</source> <translation>Backup wallet to another location</translation> </message> @@ -432,32 +432,22 @@ Signing is only possible with addresses of the type 'legacy'.</source> <translation>Change the passphrase used for wallet encryption</translation> </message> <message> - <location line="-70"/> + <location line="-56"/> <source>&Send</source> <translation>&Send</translation> </message> <message> - <location line="+11"/> + <location line="+7"/> <source>&Receive</source> <translation>&Receive</translation> </message> <message> - <location line="+46"/> + <location line="+38"/> <source>&Options…</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> - <source>&Show / Hide</source> - <translation>&Show / Hide</translation> - </message> - <message> - <location line="+1"/> - <source>Show or hide the main Window</source> - <translation>Show or hide the main Window</translation> - </message> - <message> - <location line="+2"/> + <location line="+5"/> <source>&Encrypt Wallet…</source> <translation type="unfinished"></translation> </message> @@ -522,7 +512,7 @@ Signing is only possible with addresses of the type 'legacy'.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+95"/> + <location line="+94"/> <source>&File</source> <translation>&File</translation> </message> @@ -542,7 +532,7 @@ Signing is only possible with addresses of the type 'legacy'.</source> <translation>Tabs toolbar</translation> </message> <message> - <location line="+435"/> + <location line="+456"/> <source>Syncing Headers (%1%)…</source> <translation type="unfinished"></translation> </message> @@ -572,12 +562,12 @@ Signing is only possible with addresses of the type 'legacy'.</source> <translation type="unfinished"></translation> </message> <message> - <location line="-778"/> + <location line="-788"/> <source>Request payments (generates QR codes and bitcoin: URIs)</source> <translation type="unfinished"></translation> </message> <message> - <location line="+75"/> + <location line="+65"/> <source>Show the list of used sending addresses and labels</source> <translation type="unfinished"></translation> </message> @@ -592,7 +582,7 @@ Signing is only possible with addresses of the type 'legacy'.</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location line="+690"/> + <location line="+710"/> <source>Processed %n block(s) of transaction history.</source> <translation> <numerusform>Processed %n block of transaction history.</numerusform> @@ -640,7 +630,7 @@ Signing is only possible with addresses of the type 'legacy'.</source> <translation>Up to date</translation> </message> <message> - <location line="-727"/> + <location line="-747"/> <source>Load Partially Signed Bitcoin Transaction</source> <translation type="unfinished"></translation> </message> @@ -715,7 +705,7 @@ Signing is only possible with addresses of the type 'legacy'.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+32"/> + <location line="+31"/> <source>default wallet</source> <translation type="unfinished"></translation> </message> @@ -740,12 +730,22 @@ Signing is only possible with addresses of the type 'legacy'.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+261"/> + <location line="+257"/> <source>%1 client</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+65"/> + <source>&Hide</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>S&how</source> + <translation type="unfinished"></translation> + </message> <message numerus="yes"> - <location line="+158"/> + <location line="+117"/> <source>%n active connection(s) to Bitcoin network.</source> <extracomment>A substring of the tooltip.</extracomment> <translation type="unfinished"> @@ -1355,7 +1355,7 @@ Signing is only possible with addresses of the type 'legacy'.</source> </message> <message> <location line="+162"/> - <source>%1 GB of free space available</source> + <source>%1 GB of space available</source> <translation type="unfinished"></translation> </message> <message> @@ -2137,7 +2137,7 @@ Signing is only possible with addresses of the type 'legacy'.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../psbtoperationsdialog.cpp" line="+58"/> + <location filename="../psbtoperationsdialog.cpp" line="+61"/> <source>Failed to load transaction: %1</source> <translation type="unfinished"></translation> </message> @@ -2389,7 +2389,7 @@ If you are receiving this error you should request the merchant provide a BIP21 <translation type="unfinished">Amount</translation> </message> <message> - <location filename="../guiutil.cpp" line="+122"/> + <location filename="../guiutil.cpp" line="+127"/> <source>Enter a Bitcoin address (e.g. %1)</source> <translation type="unfinished"></translation> </message> @@ -2556,7 +2556,7 @@ If you are receiving this error you should request the merchant provide a BIP21 <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoin.cpp" line="-272"/> + <location filename="../bitcoin.cpp" line="-276"/> <source>Do you want to reset settings to default values, or to abort without making changes?</source> <extracomment>Explanatory text shown on startup when the settings file cannot be read. Prompts user to make a choice between resetting or aborting.</extracomment> <translation type="unfinished"></translation> @@ -2568,7 +2568,7 @@ If you are receiving this error you should request the merchant provide a BIP21 <translation type="unfinished"></translation> </message> <message> - <location line="+359"/> + <location line="+373"/> <source>Error: Specified data directory "%1" does not exist.</source> <translation type="unfinished"></translation> </message> @@ -2791,7 +2791,7 @@ If you are receiving this error you should request the merchant provide a BIP21 </message> <message> <location line="+68"/> - <location filename="../rpcconsole.cpp" line="+1158"/> + <location filename="../rpcconsole.cpp" line="+1160"/> <source>Select a peer to view detailed information.</source> <translation type="unfinished"></translation> </message> @@ -3470,7 +3470,7 @@ For more information on using this console, type %6. <name>SendCoinsDialog</name> <message> <location filename="../forms/sendcoinsdialog.ui" line="+14"/> - <location filename="../sendcoinsdialog.cpp" line="+749"/> + <location filename="../sendcoinsdialog.cpp" line="+752"/> <source>Send Coins</source> <translation>Send Coins</translation> </message> @@ -4266,7 +4266,7 @@ Note: Since the fee is calculated on a per-byte basis, a fee rate of "100 <context> <name>TrafficGraphWidget</name> <message> - <location filename="../trafficgraphwidget.cpp" line="+82"/> + <location filename="../trafficgraphwidget.cpp" line="+79"/> <source>kB/s</source> <translation type="unfinished"></translation> </message> @@ -4872,7 +4872,7 @@ Note: Since the fee is calculated on a per-byte basis, a fee rate of "100 <context> <name>WalletFrame</name> <message> - <location filename="../walletframe.cpp" line="+42"/> + <location filename="../walletframe.cpp" line="+45"/> <source>No wallet has been loaded. Go to File > Open Wallet to load a wallet. - OR -</source> @@ -5042,7 +5042,7 @@ Go to File > Open Wallet to load a wallet. <translation type="unfinished"></translation> </message> <message> - <location line="+35"/> + <location line="+37"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> @@ -5190,12 +5190,7 @@ Go to File > Open Wallet to load a wallet. <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>The -txindex upgrade started by a previous version can not be completed. Restart with the previous version or run a full -reindex.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> + <location line="+6"/> <source>The block database contains a block which appears to be from the future. This may be due to your computer's date and time being set incorrectly. Only rebuild the block database if you are sure that your computer's date and time are correct</source> <translation type="unfinished"></translation> </message> @@ -5310,12 +5305,12 @@ Go to File > Open Wallet to load a wallet. <translation type="unfinished"></translation> </message> <message> - <location line="+1"/> - <source>Change index out of range</source> + <location line="-58"/> + <source>The -txindex upgrade started by a previous version cannot be completed. Restart with the previous version or run a full -reindex.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+1"/> + <location line="+59"/> <source>Config setting for %s only applied on %s network when in [%s] section.</source> <translation type="unfinished"></translation> </message> @@ -5751,6 +5746,11 @@ Go to File > Open Wallet to load a wallet. </message> <message> <location line="+1"/> + <source>Transaction change output index out of range</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> <source>Transaction has too long of a mempool chain</source> <translation type="unfinished"></translation> </message> @@ -5865,7 +5865,7 @@ Go to File > Open Wallet to load a wallet. <translation type="unfinished"></translation> </message> <message> - <location filename="../bitcoin.cpp" line="-482"/> + <location filename="../bitcoin.cpp" line="-496"/> <source>Settings file could not be read</source> <translation type="unfinished"></translation> </message> diff --git a/src/qt/locale/bitcoin_en.xlf b/src/qt/locale/bitcoin_en.xlf index 0acc69b3bc..5b08e984fc 100644 --- a/src/qt/locale/bitcoin_en.xlf +++ b/src/qt/locale/bitcoin_en.xlf @@ -1,271 +1,222 @@ <?xml version="1.0" encoding="utf-8"?> <xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:trolltech="urn:trolltech:names:ts:document:1.0"> - <file original="../forms/addressbookpage.ui" datatype="x-trolltech-designer-ui" source-language="en" target-language="en"><body> + <file original="../forms/addressbookpage.ui" datatype="x-trolltech-designer-ui" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="AddressBookPage"> <trans-unit id="_msg1"> <source xml:space="preserve">Right-click to edit address or label</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">37</context></context-group> </trans-unit> - <trans-unit id="_msg2" approved="yes"> + <trans-unit id="_msg2"> <source xml:space="preserve">Create a new address</source> - <target xml:space="preserve">Create a new address</target> <context-group purpose="location"><context context-type="linenumber">64</context></context-group> </trans-unit> <trans-unit id="_msg3"> <source xml:space="preserve">&New</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">67</context></context-group> </trans-unit> - <trans-unit id="_msg4" approved="yes"> + <trans-unit id="_msg4"> <source xml:space="preserve">Copy the currently selected address to the system clipboard</source> - <target xml:space="preserve">Copy the currently selected address to the system clipboard</target> <context-group purpose="location"><context context-type="linenumber">81</context></context-group> </trans-unit> <trans-unit id="_msg5"> <source xml:space="preserve">&Copy</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">84</context></context-group> </trans-unit> <trans-unit id="_msg6"> <source xml:space="preserve">C&lose</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">151</context></context-group> </trans-unit> - <trans-unit id="_msg7" approved="yes"> + <trans-unit id="_msg7"> <source xml:space="preserve">Delete the currently selected address from the list</source> - <target xml:space="preserve">Delete the currently selected address from the list</target> <context-group purpose="location"><context context-type="linenumber">98</context></context-group> </trans-unit> <trans-unit id="_msg8"> <source xml:space="preserve">Enter address or label to search</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">27</context></context-group> </trans-unit> - <trans-unit id="_msg9" approved="yes"> + <trans-unit id="_msg9"> <source xml:space="preserve">Export the data in the current tab to a file</source> - <target xml:space="preserve">Export the data in the current tab to a file</target> <context-group purpose="location"><context context-type="linenumber">128</context></context-group> </trans-unit> - <trans-unit id="_msg10" approved="yes"> + <trans-unit id="_msg10"> <source xml:space="preserve">&Export</source> - <target xml:space="preserve">&Export</target> <context-group purpose="location"><context context-type="linenumber">131</context></context-group> </trans-unit> - <trans-unit id="_msg11" approved="yes"> + <trans-unit id="_msg11"> <source xml:space="preserve">&Delete</source> - <target xml:space="preserve">&Delete</target> <context-group purpose="location"><context context-type="linenumber">101</context></context-group> <context-group purpose="location"><context context-type="sourcefile">../addressbookpage.cpp</context><context context-type="linenumber">122</context></context-group> </trans-unit> </group> </body></file> - <file original="../addressbookpage.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../addressbookpage.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="AddressBookPage"> <trans-unit id="_msg12"> <source xml:space="preserve">Choose the address to send coins to</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">84</context></context-group> </trans-unit> <trans-unit id="_msg13"> <source xml:space="preserve">Choose the address to receive coins with</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">85</context></context-group> </trans-unit> <trans-unit id="_msg14"> <source xml:space="preserve">C&hoose</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">90</context></context-group> </trans-unit> <trans-unit id="_msg15"> <source xml:space="preserve">Sending addresses</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">96</context></context-group> </trans-unit> <trans-unit id="_msg16"> <source xml:space="preserve">Receiving addresses</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">97</context></context-group> </trans-unit> <trans-unit id="_msg17"> <source xml:space="preserve">These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">104</context></context-group> </trans-unit> <trans-unit id="_msg18"> <source xml:space="preserve">These are your Bitcoin 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'.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">109</context></context-group> </trans-unit> <trans-unit id="_msg19"> <source xml:space="preserve">&Copy Address</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">117</context></context-group> </trans-unit> <trans-unit id="_msg20"> <source xml:space="preserve">Copy &Label</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">118</context></context-group> </trans-unit> <trans-unit id="_msg21"> <source xml:space="preserve">&Edit</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">119</context></context-group> </trans-unit> <trans-unit id="_msg22"> <source xml:space="preserve">Export Address List</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">283</context></context-group> </trans-unit> <trans-unit id="_msg23"> <source xml:space="preserve">Comma separated file</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">286</context></context-group> <note annotates="source" from="developer">Expanded name of the CSV file format. See: https://en.wikipedia.org/wiki/Comma-separated_values.</note> </trans-unit> <trans-unit id="_msg24"> <source xml:space="preserve">There was an error trying to save the address list to %1. Please try again.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">302</context></context-group> <note annotates="source" from="developer">An error message. %1 is a stand-in argument for the name of the file we attempted to save to.</note> </trans-unit> <trans-unit id="_msg25"> <source xml:space="preserve">Exporting Failed</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">299</context></context-group> </trans-unit> </group> </body></file> - <file original="../addresstablemodel.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../addresstablemodel.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="AddressTableModel"> <trans-unit id="_msg26"> <source xml:space="preserve">Label</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">168</context></context-group> </trans-unit> <trans-unit id="_msg27"> <source xml:space="preserve">Address</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">168</context></context-group> </trans-unit> <trans-unit id="_msg28"> <source xml:space="preserve">(no label)</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">206</context></context-group> </trans-unit> </group> </body></file> - <file original="../forms/askpassphrasedialog.ui" datatype="x-trolltech-designer-ui" source-language="en" target-language="en"><body> + <file original="../forms/askpassphrasedialog.ui" datatype="x-trolltech-designer-ui" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="AskPassphraseDialog"> - <trans-unit id="_msg29" approved="yes"> + <trans-unit id="_msg29"> <source xml:space="preserve">Passphrase Dialog</source> - <target xml:space="preserve">Passphrase Dialog</target> <context-group purpose="location"><context context-type="linenumber">26</context></context-group> </trans-unit> - <trans-unit id="_msg30" approved="yes"> + <trans-unit id="_msg30"> <source xml:space="preserve">Enter passphrase</source> - <target xml:space="preserve">Enter passphrase</target> <context-group purpose="location"><context context-type="linenumber">56</context></context-group> </trans-unit> - <trans-unit id="_msg31" approved="yes"> + <trans-unit id="_msg31"> <source xml:space="preserve">New passphrase</source> - <target xml:space="preserve">New passphrase</target> <context-group purpose="location"><context context-type="linenumber">70</context></context-group> </trans-unit> - <trans-unit id="_msg32" approved="yes"> + <trans-unit id="_msg32"> <source xml:space="preserve">Repeat new passphrase</source> - <target xml:space="preserve">Repeat new passphrase</target> <context-group purpose="location"><context context-type="linenumber">84</context></context-group> </trans-unit> <trans-unit id="_msg33"> <source xml:space="preserve">Show passphrase</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">98</context></context-group> </trans-unit> </group> </body></file> - <file original="../askpassphrasedialog.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../askpassphrasedialog.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="AskPassphraseDialog"> <trans-unit id="_msg34"> <source xml:space="preserve">Encrypt wallet</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">51</context></context-group> </trans-unit> <trans-unit id="_msg35"> <source xml:space="preserve">This operation needs your wallet passphrase to unlock the wallet.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">54</context></context-group> </trans-unit> <trans-unit id="_msg36"> <source xml:space="preserve">Unlock wallet</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">59</context></context-group> </trans-unit> <trans-unit id="_msg37"> <source xml:space="preserve">Change passphrase</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">62</context></context-group> </trans-unit> <trans-unit id="_msg38"> <source xml:space="preserve">Confirm wallet encryption</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">110</context></context-group> </trans-unit> <trans-unit id="_msg39"> <source xml:space="preserve">Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>!</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">111</context></context-group> </trans-unit> <trans-unit id="_msg40"> <source xml:space="preserve">Are you sure you wish to encrypt your wallet?</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">111</context></context-group> </trans-unit> <trans-unit id="_msg41"> <source xml:space="preserve">Wallet encrypted</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">129</context></context-group> <context-group purpose="location"><context context-type="linenumber">173</context></context-group> </trans-unit> <trans-unit id="_msg42"> <source xml:space="preserve">Enter the new passphrase for the wallet.<br/>Please use a passphrase of <b>ten or more random characters</b>, or <b>eight or more words</b>.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">48</context></context-group> </trans-unit> <trans-unit id="_msg43"> <source xml:space="preserve">Enter the old passphrase and new passphrase for the wallet.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">63</context></context-group> </trans-unit> <trans-unit id="_msg44"> <source xml:space="preserve">Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">118</context></context-group> </trans-unit> <trans-unit id="_msg45"> <source xml:space="preserve">Wallet to be encrypted</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">122</context></context-group> </trans-unit> <trans-unit id="_msg46"> <source xml:space="preserve">Your wallet is about to be encrypted. </source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">124</context></context-group> </trans-unit> <trans-unit id="_msg47"> <source xml:space="preserve">Your wallet is now encrypted. </source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">131</context></context-group> </trans-unit> <trans-unit id="_msg48"> <source xml:space="preserve">IMPORTANT: Any previous backups you have made of your wallet file should be replaced with the newly generated, encrypted wallet file. For security reasons, previous backups of the unencrypted wallet file will become useless as soon as you start using the new, encrypted wallet.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">133</context></context-group> </trans-unit> <trans-unit id="_msg49"> <source xml:space="preserve">Wallet encryption failed</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">139</context></context-group> <context-group purpose="location"><context context-type="linenumber">147</context></context-group> <context-group purpose="location"><context context-type="linenumber">179</context></context-group> @@ -273,908 +224,738 @@ Signing is only possible with addresses of the type 'legacy'.</source> </trans-unit> <trans-unit id="_msg50"> <source xml:space="preserve">Wallet encryption failed due to an internal error. Your wallet was not encrypted.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">140</context></context-group> </trans-unit> <trans-unit id="_msg51"> <source xml:space="preserve">The supplied passphrases do not match.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">148</context></context-group> <context-group purpose="location"><context context-type="linenumber">186</context></context-group> </trans-unit> <trans-unit id="_msg52"> <source xml:space="preserve">Wallet unlock failed</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">159</context></context-group> <context-group purpose="location"><context context-type="linenumber">165</context></context-group> </trans-unit> <trans-unit id="_msg53"> <source xml:space="preserve">The passphrase entered for the wallet decryption was incorrect.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">160</context></context-group> <context-group purpose="location"><context context-type="linenumber">180</context></context-group> </trans-unit> <trans-unit id="_msg54"> <source xml:space="preserve">Wallet passphrase was successfully changed.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">174</context></context-group> </trans-unit> <trans-unit id="_msg55"> <source xml:space="preserve">Warning: The Caps Lock key is on!</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">220</context></context-group> <context-group purpose="location"><context context-type="linenumber">253</context></context-group> </trans-unit> </group> </body></file> - <file original="../bantablemodel.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../bantablemodel.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="BanTableModel"> <trans-unit id="_msg56"> <source xml:space="preserve">IP/Netmask</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">85</context></context-group> </trans-unit> <trans-unit id="_msg57"> <source xml:space="preserve">Banned Until</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">85</context></context-group> </trans-unit> </group> </body></file> - <file original="../bitcoin.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../bitcoin.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="BitcoinApplication"> <trans-unit id="_msg58"> <source xml:space="preserve">Runaway exception</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">429</context></context-group> + <context-group purpose="location"><context context-type="linenumber">433</context></context-group> </trans-unit> <trans-unit id="_msg59"> <source xml:space="preserve">A fatal error occurred. %1 can no longer continue safely and will quit.</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">430</context></context-group> + <context-group purpose="location"><context context-type="linenumber">434</context></context-group> </trans-unit> <trans-unit id="_msg60"> <source xml:space="preserve">Internal error</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">439</context></context-group> + <context-group purpose="location"><context context-type="linenumber">443</context></context-group> </trans-unit> <trans-unit id="_msg61"> <source xml:space="preserve">An internal error occurred. %1 will attempt to continue safely. This is an unexpected bug which can be reported as described below.</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">440</context></context-group> + <context-group purpose="location"><context context-type="linenumber">444</context></context-group> </trans-unit> </group> <group restype="x-trolltech-linguist-context" resname="QObject"> <trans-unit id="_msg62"> <source xml:space="preserve">Do you want to reset settings to default values, or to abort without making changes?</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">168</context></context-group> <note annotates="source" from="developer">Explanatory text shown on startup when the settings file cannot be read. Prompts user to make a choice between resetting or aborting.</note> </trans-unit> <trans-unit id="_msg63"> <source xml:space="preserve">A fatal error occurred. Check that settings file is writable, or try running with -nosettings.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">192</context></context-group> <note annotates="source" from="developer">Explanatory text shown on startup when the settings file could not be written. Prompts user to check that we have the ability to write to the file. Explains that the user has the option of running without a settings file.</note> </trans-unit> <trans-unit id="_msg64"> <source xml:space="preserve">Error: Specified data directory "%1" does not exist.</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">551</context></context-group> + <context-group purpose="location"><context context-type="linenumber">565</context></context-group> </trans-unit> <trans-unit id="_msg65"> <source xml:space="preserve">Error: Cannot parse configuration file: %1.</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">557</context></context-group> + <context-group purpose="location"><context context-type="linenumber">571</context></context-group> </trans-unit> <trans-unit id="_msg66"> <source xml:space="preserve">Error: %1</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">572</context></context-group> + <context-group purpose="location"><context context-type="linenumber">586</context></context-group> </trans-unit> <trans-unit id="_msg67"> <source xml:space="preserve">%1 didn't yet exit safely…</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">643</context></context-group> + <context-group purpose="location"><context context-type="linenumber">657</context></context-group> </trans-unit> </group> <group restype="x-trolltech-linguist-context" resname="bitcoin-core"> <trans-unit id="_msg68"> <source xml:space="preserve">Settings file could not be read</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">161</context></context-group> </trans-unit> <trans-unit id="_msg69"> <source xml:space="preserve">Settings file could not be written</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">184</context></context-group> </trans-unit> </group> </body></file> - <file original="../bitcoingui.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../bitcoingui.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="BitcoinGUI"> - <trans-unit id="_msg70" approved="yes"> + <trans-unit id="_msg70"> <source xml:space="preserve">&Overview</source> - <target xml:space="preserve">&Overview</target> <context-group purpose="location"><context context-type="linenumber">250</context></context-group> </trans-unit> - <trans-unit id="_msg71" approved="yes"> + <trans-unit id="_msg71"> <source xml:space="preserve">Show general overview of wallet</source> - <target xml:space="preserve">Show general overview of wallet</target> <context-group purpose="location"><context context-type="linenumber">251</context></context-group> </trans-unit> - <trans-unit id="_msg72" approved="yes"> + <trans-unit id="_msg72"> <source xml:space="preserve">&Transactions</source> - <target xml:space="preserve">&Transactions</target> - <context-group purpose="location"><context context-type="linenumber">279</context></context-group> + <context-group purpose="location"><context context-type="linenumber">271</context></context-group> </trans-unit> - <trans-unit id="_msg73" approved="yes"> + <trans-unit id="_msg73"> <source xml:space="preserve">Browse transaction history</source> - <target xml:space="preserve">Browse transaction history</target> - <context-group purpose="location"><context context-type="linenumber">280</context></context-group> + <context-group purpose="location"><context context-type="linenumber">272</context></context-group> </trans-unit> - <trans-unit id="_msg74" approved="yes"> + <trans-unit id="_msg74"> <source xml:space="preserve">E&xit</source> - <target xml:space="preserve">E&xit</target> - <context-group purpose="location"><context context-type="linenumber">303</context></context-group> + <context-group purpose="location"><context context-type="linenumber">291</context></context-group> </trans-unit> - <trans-unit id="_msg75" approved="yes"> + <trans-unit id="_msg75"> <source xml:space="preserve">Quit application</source> - <target xml:space="preserve">Quit application</target> - <context-group purpose="location"><context context-type="linenumber">304</context></context-group> + <context-group purpose="location"><context context-type="linenumber">292</context></context-group> </trans-unit> <trans-unit id="_msg76"> <source xml:space="preserve">&About %1</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">307</context></context-group> + <context-group purpose="location"><context context-type="linenumber">295</context></context-group> </trans-unit> <trans-unit id="_msg77"> <source xml:space="preserve">Show information about %1</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">308</context></context-group> + <context-group purpose="location"><context context-type="linenumber">296</context></context-group> </trans-unit> - <trans-unit id="_msg78" approved="yes"> + <trans-unit id="_msg78"> <source xml:space="preserve">About &Qt</source> - <target xml:space="preserve">About &Qt</target> - <context-group purpose="location"><context context-type="linenumber">311</context></context-group> + <context-group purpose="location"><context context-type="linenumber">299</context></context-group> </trans-unit> - <trans-unit id="_msg79" approved="yes"> + <trans-unit id="_msg79"> <source xml:space="preserve">Show information about Qt</source> - <target xml:space="preserve">Show information about Qt</target> - <context-group purpose="location"><context context-type="linenumber">312</context></context-group> + <context-group purpose="location"><context context-type="linenumber">300</context></context-group> </trans-unit> <trans-unit id="_msg80"> <source xml:space="preserve">Modify configuration options for %1</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">315</context></context-group> + <context-group purpose="location"><context context-type="linenumber">303</context></context-group> </trans-unit> <trans-unit id="_msg81"> <source xml:space="preserve">Create a new wallet</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">361</context></context-group> + <context-group purpose="location"><context context-type="linenumber">347</context></context-group> </trans-unit> <trans-unit id="_msg82"> <source xml:space="preserve">&Minimize</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">489</context></context-group> + <context-group purpose="location"><context context-type="linenumber">474</context></context-group> </trans-unit> <trans-unit id="_msg83"> <source xml:space="preserve">Wallet:</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">568</context></context-group> + <context-group purpose="location"><context context-type="linenumber">553</context></context-group> </trans-unit> <trans-unit id="_msg84"> <source xml:space="preserve">Network activity disabled.</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">939</context></context-group> + <context-group purpose="location"><context context-type="linenumber">945</context></context-group> <note annotates="source" from="developer">A substring of the tooltip.</note> </trans-unit> <trans-unit id="_msg85"> <source xml:space="preserve">Proxy is <b>enabled</b>: %1</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">1361</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1367</context></context-group> </trans-unit> - <trans-unit id="_msg86" approved="yes"> + <trans-unit id="_msg86"> <source xml:space="preserve">Send coins to a Bitcoin address</source> - <target xml:space="preserve">Send coins to a Bitcoin address</target> <context-group purpose="location"><context context-type="linenumber">258</context></context-group> </trans-unit> - <trans-unit id="_msg87" approved="yes"> + <trans-unit id="_msg87"> <source xml:space="preserve">Backup wallet to another location</source> - <target xml:space="preserve">Backup wallet to another location</target> - <context-group purpose="location"><context context-type="linenumber">325</context></context-group> + <context-group purpose="location"><context context-type="linenumber">311</context></context-group> </trans-unit> - <trans-unit id="_msg88" approved="yes"> + <trans-unit id="_msg88"> <source xml:space="preserve">Change the passphrase used for wallet encryption</source> - <target xml:space="preserve">Change the passphrase used for wallet encryption</target> - <context-group purpose="location"><context context-type="linenumber">327</context></context-group> + <context-group purpose="location"><context context-type="linenumber">313</context></context-group> </trans-unit> - <trans-unit id="_msg89" approved="yes"> + <trans-unit id="_msg89"> <source xml:space="preserve">&Send</source> - <target xml:space="preserve">&Send</target> <context-group purpose="location"><context context-type="linenumber">257</context></context-group> </trans-unit> - <trans-unit id="_msg90" approved="yes"> + <trans-unit id="_msg90"> <source xml:space="preserve">&Receive</source> - <target xml:space="preserve">&Receive</target> - <context-group purpose="location"><context context-type="linenumber">268</context></context-group> + <context-group purpose="location"><context context-type="linenumber">264</context></context-group> </trans-unit> <trans-unit id="_msg91"> <source xml:space="preserve">&Options…</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">314</context></context-group> - </trans-unit> - <trans-unit id="_msg92" approved="yes"> - <source xml:space="preserve">&Show / Hide</source> - <target xml:space="preserve">&Show / Hide</target> - <context-group purpose="location"><context context-type="linenumber">318</context></context-group> - </trans-unit> - <trans-unit id="_msg93" approved="yes"> - <source xml:space="preserve">Show or hide the main Window</source> - <target xml:space="preserve">Show or hide the main Window</target> - <context-group purpose="location"><context context-type="linenumber">319</context></context-group> + <context-group purpose="location"><context context-type="linenumber">302</context></context-group> </trans-unit> - <trans-unit id="_msg94"> + <trans-unit id="_msg92"> <source xml:space="preserve">&Encrypt Wallet…</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">321</context></context-group> + <context-group purpose="location"><context context-type="linenumber">307</context></context-group> </trans-unit> - <trans-unit id="_msg95" approved="yes"> + <trans-unit id="_msg93"> <source xml:space="preserve">Encrypt the private keys that belong to your wallet</source> - <target xml:space="preserve">Encrypt the private keys that belong to your wallet</target> - <context-group purpose="location"><context context-type="linenumber">322</context></context-group> + <context-group purpose="location"><context context-type="linenumber">308</context></context-group> </trans-unit> - <trans-unit id="_msg96"> + <trans-unit id="_msg94"> <source xml:space="preserve">&Backup Wallet…</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">324</context></context-group> + <context-group purpose="location"><context context-type="linenumber">310</context></context-group> </trans-unit> - <trans-unit id="_msg97"> + <trans-unit id="_msg95"> <source xml:space="preserve">&Change Passphrase…</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">326</context></context-group> + <context-group purpose="location"><context context-type="linenumber">312</context></context-group> </trans-unit> - <trans-unit id="_msg98"> + <trans-unit id="_msg96"> <source xml:space="preserve">Sign &message…</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">328</context></context-group> + <context-group purpose="location"><context context-type="linenumber">314</context></context-group> </trans-unit> - <trans-unit id="_msg99" approved="yes"> + <trans-unit id="_msg97"> <source xml:space="preserve">Sign messages with your Bitcoin addresses to prove you own them</source> - <target xml:space="preserve">Sign messages with your Bitcoin addresses to prove you own them</target> - <context-group purpose="location"><context context-type="linenumber">329</context></context-group> + <context-group purpose="location"><context context-type="linenumber">315</context></context-group> </trans-unit> - <trans-unit id="_msg100"> + <trans-unit id="_msg98"> <source xml:space="preserve">&Verify message…</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">330</context></context-group> + <context-group purpose="location"><context context-type="linenumber">316</context></context-group> </trans-unit> - <trans-unit id="_msg101" approved="yes"> + <trans-unit id="_msg99"> <source xml:space="preserve">Verify messages to ensure they were signed with specified Bitcoin addresses</source> - <target xml:space="preserve">Verify messages to ensure they were signed with specified Bitcoin addresses</target> - <context-group purpose="location"><context context-type="linenumber">331</context></context-group> + <context-group purpose="location"><context context-type="linenumber">317</context></context-group> </trans-unit> - <trans-unit id="_msg102"> + <trans-unit id="_msg100"> <source xml:space="preserve">&Load PSBT from file…</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">332</context></context-group> + <context-group purpose="location"><context context-type="linenumber">318</context></context-group> </trans-unit> - <trans-unit id="_msg103"> + <trans-unit id="_msg101"> <source xml:space="preserve">Open &URI…</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">348</context></context-group> + <context-group purpose="location"><context context-type="linenumber">334</context></context-group> </trans-unit> - <trans-unit id="_msg104"> + <trans-unit id="_msg102"> <source xml:space="preserve">Close Wallet…</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">356</context></context-group> + <context-group purpose="location"><context context-type="linenumber">342</context></context-group> </trans-unit> - <trans-unit id="_msg105"> + <trans-unit id="_msg103"> <source xml:space="preserve">Create Wallet…</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">359</context></context-group> + <context-group purpose="location"><context context-type="linenumber">345</context></context-group> </trans-unit> - <trans-unit id="_msg106"> + <trans-unit id="_msg104"> <source xml:space="preserve">Close All Wallets…</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">363</context></context-group> + <context-group purpose="location"><context context-type="linenumber">349</context></context-group> </trans-unit> - <trans-unit id="_msg107" approved="yes"> + <trans-unit id="_msg105"> <source xml:space="preserve">&File</source> - <target xml:space="preserve">&File</target> - <context-group purpose="location"><context context-type="linenumber">458</context></context-group> + <context-group purpose="location"><context context-type="linenumber">443</context></context-group> </trans-unit> - <trans-unit id="_msg108" approved="yes"> + <trans-unit id="_msg106"> <source xml:space="preserve">&Settings</source> - <target xml:space="preserve">&Settings</target> - <context-group purpose="location"><context context-type="linenumber">476</context></context-group> + <context-group purpose="location"><context context-type="linenumber">461</context></context-group> </trans-unit> - <trans-unit id="_msg109" approved="yes"> + <trans-unit id="_msg107"> <source xml:space="preserve">&Help</source> - <target xml:space="preserve">&Help</target> - <context-group purpose="location"><context context-type="linenumber">537</context></context-group> + <context-group purpose="location"><context context-type="linenumber">522</context></context-group> </trans-unit> - <trans-unit id="_msg110" approved="yes"> + <trans-unit id="_msg108"> <source xml:space="preserve">Tabs toolbar</source> - <target xml:space="preserve">Tabs toolbar</target> - <context-group purpose="location"><context context-type="linenumber">548</context></context-group> + <context-group purpose="location"><context context-type="linenumber">533</context></context-group> </trans-unit> - <trans-unit id="_msg111"> + <trans-unit id="_msg109"> <source xml:space="preserve">Syncing Headers (%1%)…</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">983</context></context-group> + <context-group purpose="location"><context context-type="linenumber">989</context></context-group> </trans-unit> - <trans-unit id="_msg112"> + <trans-unit id="_msg110"> <source xml:space="preserve">Synchronizing with network…</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">1030</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1036</context></context-group> </trans-unit> - <trans-unit id="_msg113"> + <trans-unit id="_msg111"> <source xml:space="preserve">Indexing blocks on disk…</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">1035</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1041</context></context-group> </trans-unit> - <trans-unit id="_msg114"> + <trans-unit id="_msg112"> <source xml:space="preserve">Processing blocks on disk…</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">1037</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1043</context></context-group> </trans-unit> - <trans-unit id="_msg115"> + <trans-unit id="_msg113"> <source xml:space="preserve">Reindexing blocks on disk…</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">1041</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1047</context></context-group> </trans-unit> - <trans-unit id="_msg116"> + <trans-unit id="_msg114"> <source xml:space="preserve">Connecting to peers…</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">1047</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1053</context></context-group> </trans-unit> - <trans-unit id="_msg117"> + <trans-unit id="_msg115"> <source xml:space="preserve">Request payments (generates QR codes and bitcoin: URIs)</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">269</context></context-group> + <context-group purpose="location"><context context-type="linenumber">265</context></context-group> </trans-unit> - <trans-unit id="_msg118"> + <trans-unit id="_msg116"> <source xml:space="preserve">Show the list of used sending addresses and labels</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">344</context></context-group> + <context-group purpose="location"><context context-type="linenumber">330</context></context-group> </trans-unit> - <trans-unit id="_msg119"> + <trans-unit id="_msg117"> <source xml:space="preserve">Show the list of used receiving addresses and labels</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">346</context></context-group> + <context-group purpose="location"><context context-type="linenumber">332</context></context-group> </trans-unit> - <trans-unit id="_msg120"> + <trans-unit id="_msg118"> <source xml:space="preserve">&Command-line options</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">366</context></context-group> + <context-group purpose="location"><context context-type="linenumber">352</context></context-group> </trans-unit> <group restype="x-gettext-plurals"> - <context-group purpose="location"><context context-type="linenumber">1056</context></context-group> - <trans-unit id="_msg121[0]" approved="yes"> + <context-group purpose="location"><context context-type="linenumber">1062</context></context-group> + <trans-unit id="_msg119[0]"> <source xml:space="preserve">Processed %n block(s) of transaction history.</source> - <target xml:space="preserve">Processed %n block of transaction history.</target> </trans-unit> - <trans-unit id="_msg121[1]" approved="yes"> + <trans-unit id="_msg119[1]"> <source xml:space="preserve">Processed %n block(s) of transaction history.</source> - <target xml:space="preserve">Processed %n blocks of transaction history.</target> </trans-unit> </group> - <trans-unit id="_msg122" approved="yes"> + <trans-unit id="_msg120"> <source xml:space="preserve">%1 behind</source> - <target xml:space="preserve">%1 behind</target> - <context-group purpose="location"><context context-type="linenumber">1079</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1085</context></context-group> </trans-unit> - <trans-unit id="_msg123"> + <trans-unit id="_msg121"> <source xml:space="preserve">Catching up…</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">1084</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1090</context></context-group> </trans-unit> - <trans-unit id="_msg124" approved="yes"> + <trans-unit id="_msg122"> <source xml:space="preserve">Last received block was generated %1 ago.</source> - <target xml:space="preserve">Last received block was generated %1 ago.</target> - <context-group purpose="location"><context context-type="linenumber">1103</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1109</context></context-group> </trans-unit> - <trans-unit id="_msg125" approved="yes"> + <trans-unit id="_msg123"> <source xml:space="preserve">Transactions after this will not yet be visible.</source> - <target xml:space="preserve">Transactions after this will not yet be visible.</target> - <context-group purpose="location"><context context-type="linenumber">1105</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1111</context></context-group> </trans-unit> - <trans-unit id="_msg126" approved="yes"> + <trans-unit id="_msg124"> <source xml:space="preserve">Error</source> - <target xml:space="preserve">Error</target> - <context-group purpose="location"><context context-type="linenumber">1130</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1136</context></context-group> </trans-unit> - <trans-unit id="_msg127" approved="yes"> + <trans-unit id="_msg125"> <source xml:space="preserve">Warning</source> - <target xml:space="preserve">Warning</target> - <context-group purpose="location"><context context-type="linenumber">1134</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1140</context></context-group> </trans-unit> - <trans-unit id="_msg128" approved="yes"> + <trans-unit id="_msg126"> <source xml:space="preserve">Information</source> - <target xml:space="preserve">Information</target> - <context-group purpose="location"><context context-type="linenumber">1138</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1144</context></context-group> </trans-unit> - <trans-unit id="_msg129" approved="yes"> + <trans-unit id="_msg127"> <source xml:space="preserve">Up to date</source> - <target xml:space="preserve">Up to date</target> - <context-group purpose="location"><context context-type="linenumber">1060</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1066</context></context-group> </trans-unit> - <trans-unit id="_msg130"> + <trans-unit id="_msg128"> <source xml:space="preserve">Load Partially Signed Bitcoin Transaction</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">333</context></context-group> + <context-group purpose="location"><context context-type="linenumber">319</context></context-group> </trans-unit> - <trans-unit id="_msg131"> + <trans-unit id="_msg129"> <source xml:space="preserve">Load PSBT from &clipboard…</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">334</context></context-group> + <context-group purpose="location"><context context-type="linenumber">320</context></context-group> </trans-unit> - <trans-unit id="_msg132"> + <trans-unit id="_msg130"> <source xml:space="preserve">Load Partially Signed Bitcoin Transaction from clipboard</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">335</context></context-group> + <context-group purpose="location"><context context-type="linenumber">321</context></context-group> </trans-unit> - <trans-unit id="_msg133"> + <trans-unit id="_msg131"> <source xml:space="preserve">Node window</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">337</context></context-group> + <context-group purpose="location"><context context-type="linenumber">323</context></context-group> </trans-unit> - <trans-unit id="_msg134"> + <trans-unit id="_msg132"> <source xml:space="preserve">Open node debugging and diagnostic console</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">338</context></context-group> + <context-group purpose="location"><context context-type="linenumber">324</context></context-group> </trans-unit> - <trans-unit id="_msg135"> + <trans-unit id="_msg133"> <source xml:space="preserve">&Sending addresses</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">343</context></context-group> + <context-group purpose="location"><context context-type="linenumber">329</context></context-group> </trans-unit> - <trans-unit id="_msg136"> + <trans-unit id="_msg134"> <source xml:space="preserve">&Receiving addresses</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">345</context></context-group> + <context-group purpose="location"><context context-type="linenumber">331</context></context-group> </trans-unit> - <trans-unit id="_msg137"> + <trans-unit id="_msg135"> <source xml:space="preserve">Open a bitcoin: URI</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">349</context></context-group> + <context-group purpose="location"><context context-type="linenumber">335</context></context-group> </trans-unit> - <trans-unit id="_msg138"> + <trans-unit id="_msg136"> <source xml:space="preserve">Open Wallet</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">351</context></context-group> + <context-group purpose="location"><context context-type="linenumber">337</context></context-group> </trans-unit> - <trans-unit id="_msg139"> + <trans-unit id="_msg137"> <source xml:space="preserve">Open a wallet</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">353</context></context-group> + <context-group purpose="location"><context context-type="linenumber">339</context></context-group> </trans-unit> - <trans-unit id="_msg140"> + <trans-unit id="_msg138"> <source xml:space="preserve">Close wallet</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">357</context></context-group> + <context-group purpose="location"><context context-type="linenumber">343</context></context-group> </trans-unit> - <trans-unit id="_msg141"> + <trans-unit id="_msg139"> <source xml:space="preserve">Close all wallets</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">364</context></context-group> + <context-group purpose="location"><context context-type="linenumber">350</context></context-group> </trans-unit> - <trans-unit id="_msg142"> + <trans-unit id="_msg140"> <source xml:space="preserve">Show the %1 help message to get a list with possible Bitcoin command-line options</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">368</context></context-group> + <context-group purpose="location"><context context-type="linenumber">354</context></context-group> </trans-unit> - <trans-unit id="_msg143"> + <trans-unit id="_msg141"> <source xml:space="preserve">&Mask values</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">370</context></context-group> + <context-group purpose="location"><context context-type="linenumber">356</context></context-group> </trans-unit> - <trans-unit id="_msg144"> + <trans-unit id="_msg142"> <source xml:space="preserve">Mask the values in the Overview tab</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">372</context></context-group> + <context-group purpose="location"><context context-type="linenumber">358</context></context-group> </trans-unit> - <trans-unit id="_msg145"> + <trans-unit id="_msg143"> <source xml:space="preserve">default wallet</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">404</context></context-group> + <context-group purpose="location"><context context-type="linenumber">389</context></context-group> </trans-unit> - <trans-unit id="_msg146"> + <trans-unit id="_msg144"> <source xml:space="preserve">No wallets available</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">424</context></context-group> + <context-group purpose="location"><context context-type="linenumber">409</context></context-group> </trans-unit> - <trans-unit id="_msg147"> + <trans-unit id="_msg145"> <source xml:space="preserve">&Window</source> - <target xml:space="preserve" state="needs-review-translation">&Window</target> - <context-group purpose="location"><context context-type="linenumber">487</context></context-group> + <context-group purpose="location"><context context-type="linenumber">472</context></context-group> </trans-unit> - <trans-unit id="_msg148"> + <trans-unit id="_msg146"> <source xml:space="preserve">Zoom</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">499</context></context-group> + <context-group purpose="location"><context context-type="linenumber">484</context></context-group> </trans-unit> - <trans-unit id="_msg149"> + <trans-unit id="_msg147"> <source xml:space="preserve">Main Window</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">517</context></context-group> + <context-group purpose="location"><context context-type="linenumber">502</context></context-group> </trans-unit> - <trans-unit id="_msg150"> + <trans-unit id="_msg148"> <source xml:space="preserve">%1 client</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">778</context></context-group> + <context-group purpose="location"><context context-type="linenumber">759</context></context-group> + </trans-unit> + <trans-unit id="_msg149"> + <source xml:space="preserve">&Hide</source> + <context-group purpose="location"><context context-type="linenumber">824</context></context-group> + </trans-unit> + <trans-unit id="_msg150"> + <source xml:space="preserve">S&how</source> + <context-group purpose="location"><context context-type="linenumber">825</context></context-group> </trans-unit> <group restype="x-gettext-plurals"> - <context-group purpose="location"><context context-type="linenumber">936</context></context-group> + <context-group purpose="location"><context context-type="linenumber">942</context></context-group> <note annotates="source" from="developer">A substring of the tooltip.</note> <trans-unit id="_msg151[0]"> <source xml:space="preserve">%n active connection(s) to Bitcoin network.</source> - <target xml:space="preserve" state="needs-review-translation">%n active connection to Bitcoin network.</target> </trans-unit> <trans-unit id="_msg151[1]"> <source xml:space="preserve">%n active connection(s) to Bitcoin network.</source> - <target xml:space="preserve" state="needs-review-translation">%n active connections to Bitcoin network.</target> </trans-unit> </group> <trans-unit id="_msg152"> <source xml:space="preserve">Click for more actions.</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">946</context></context-group> + <context-group purpose="location"><context context-type="linenumber">952</context></context-group> <note annotates="source" from="developer">A substring of the tooltip. "More actions" are available via the context menu.</note> </trans-unit> <trans-unit id="_msg153"> <source xml:space="preserve">Show Peers tab</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">963</context></context-group> + <context-group purpose="location"><context context-type="linenumber">969</context></context-group> <note annotates="source" from="developer">A context menu item. The "Peers tab" is an element of the "Node window".</note> </trans-unit> <trans-unit id="_msg154"> <source xml:space="preserve">Disable network activity</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">971</context></context-group> + <context-group purpose="location"><context context-type="linenumber">977</context></context-group> <note annotates="source" from="developer">A context menu item.</note> </trans-unit> <trans-unit id="_msg155"> <source xml:space="preserve">Enable network activity</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">973</context></context-group> + <context-group purpose="location"><context context-type="linenumber">979</context></context-group> <note annotates="source" from="developer">A context menu item. The network activity was disabled previously.</note> </trans-unit> <trans-unit id="_msg156"> <source xml:space="preserve">Error: %1</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">1131</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1137</context></context-group> </trans-unit> <trans-unit id="_msg157"> <source xml:space="preserve">Warning: %1</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">1135</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1141</context></context-group> </trans-unit> <trans-unit id="_msg158"> <source xml:space="preserve">Date: %1 </source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">1243</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1249</context></context-group> </trans-unit> <trans-unit id="_msg159"> <source xml:space="preserve">Amount: %1 </source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">1244</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1250</context></context-group> </trans-unit> <trans-unit id="_msg160"> <source xml:space="preserve">Wallet: %1 </source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">1246</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1252</context></context-group> </trans-unit> <trans-unit id="_msg161"> <source xml:space="preserve">Type: %1 </source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">1248</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1254</context></context-group> </trans-unit> <trans-unit id="_msg162"> <source xml:space="preserve">Label: %1 </source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">1250</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1256</context></context-group> </trans-unit> <trans-unit id="_msg163"> <source xml:space="preserve">Address: %1 </source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">1252</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1258</context></context-group> </trans-unit> - <trans-unit id="_msg164" approved="yes"> + <trans-unit id="_msg164"> <source xml:space="preserve">Sent transaction</source> - <target xml:space="preserve">Sent transaction</target> - <context-group purpose="location"><context context-type="linenumber">1253</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1259</context></context-group> </trans-unit> - <trans-unit id="_msg165" approved="yes"> + <trans-unit id="_msg165"> <source xml:space="preserve">Incoming transaction</source> - <target xml:space="preserve">Incoming transaction</target> - <context-group purpose="location"><context context-type="linenumber">1253</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1259</context></context-group> </trans-unit> <trans-unit id="_msg166"> <source xml:space="preserve">HD key generation is <b>enabled</b></source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">1305</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1311</context></context-group> </trans-unit> <trans-unit id="_msg167"> <source xml:space="preserve">HD key generation is <b>disabled</b></source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">1305</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1311</context></context-group> </trans-unit> <trans-unit id="_msg168"> <source xml:space="preserve">Private key <b>disabled</b></source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">1305</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1311</context></context-group> </trans-unit> - <trans-unit id="_msg169" approved="yes"> + <trans-unit id="_msg169"> <source xml:space="preserve">Wallet is <b>encrypted</b> and currently <b>unlocked</b></source> - <target xml:space="preserve">Wallet is <b>encrypted</b> and currently <b>unlocked</b></target> - <context-group purpose="location"><context context-type="linenumber">1322</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1328</context></context-group> </trans-unit> - <trans-unit id="_msg170" approved="yes"> + <trans-unit id="_msg170"> <source xml:space="preserve">Wallet is <b>encrypted</b> and currently <b>locked</b></source> - <target xml:space="preserve">Wallet is <b>encrypted</b> and currently <b>locked</b></target> - <context-group purpose="location"><context context-type="linenumber">1330</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1336</context></context-group> </trans-unit> <trans-unit id="_msg171"> <source xml:space="preserve">Original message:</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">1449</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1455</context></context-group> </trans-unit> </group> <group restype="x-trolltech-linguist-context" resname="UnitDisplayStatusBarControl"> <trans-unit id="_msg172"> <source xml:space="preserve">Unit to show amounts in. Click to select another unit.</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">1490</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1496</context></context-group> </trans-unit> </group> </body></file> - <file original="../forms/coincontroldialog.ui" datatype="x-trolltech-designer-ui" source-language="en" target-language="en"><body> + <file original="../forms/coincontroldialog.ui" datatype="x-trolltech-designer-ui" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="CoinControlDialog"> <trans-unit id="_msg173"> <source xml:space="preserve">Coin Selection</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">14</context></context-group> </trans-unit> <trans-unit id="_msg174"> <source xml:space="preserve">Quantity:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">48</context></context-group> </trans-unit> <trans-unit id="_msg175"> <source xml:space="preserve">Bytes:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">77</context></context-group> </trans-unit> <trans-unit id="_msg176"> <source xml:space="preserve">Amount:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">122</context></context-group> </trans-unit> <trans-unit id="_msg177"> <source xml:space="preserve">Fee:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">202</context></context-group> </trans-unit> <trans-unit id="_msg178"> <source xml:space="preserve">Dust:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">154</context></context-group> </trans-unit> <trans-unit id="_msg179"> <source xml:space="preserve">After Fee:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">247</context></context-group> </trans-unit> <trans-unit id="_msg180"> <source xml:space="preserve">Change:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">279</context></context-group> </trans-unit> <trans-unit id="_msg181"> <source xml:space="preserve">(un)select all</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">335</context></context-group> </trans-unit> <trans-unit id="_msg182"> <source xml:space="preserve">Tree mode</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">351</context></context-group> </trans-unit> <trans-unit id="_msg183"> <source xml:space="preserve">List mode</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">364</context></context-group> </trans-unit> <trans-unit id="_msg184"> <source xml:space="preserve">Amount</source> - <target xml:space="preserve" state="needs-review-translation">Amount</target> <context-group purpose="location"><context context-type="linenumber">420</context></context-group> </trans-unit> <trans-unit id="_msg185"> <source xml:space="preserve">Received with label</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">425</context></context-group> </trans-unit> <trans-unit id="_msg186"> <source xml:space="preserve">Received with address</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">430</context></context-group> </trans-unit> <trans-unit id="_msg187"> <source xml:space="preserve">Date</source> - <target xml:space="preserve" state="needs-review-translation">Date</target> <context-group purpose="location"><context context-type="linenumber">435</context></context-group> </trans-unit> <trans-unit id="_msg188"> <source xml:space="preserve">Confirmations</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">440</context></context-group> </trans-unit> <trans-unit id="_msg189"> <source xml:space="preserve">Confirmed</source> - <target xml:space="preserve" state="needs-review-translation">Confirmed</target> <context-group purpose="location"><context context-type="linenumber">443</context></context-group> </trans-unit> </group> </body></file> - <file original="../coincontroldialog.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../coincontroldialog.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="CoinControlDialog"> <trans-unit id="_msg190"> <source xml:space="preserve">Copy amount</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">69</context></context-group> </trans-unit> <trans-unit id="_msg191"> <source xml:space="preserve">&Copy address</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">58</context></context-group> </trans-unit> <trans-unit id="_msg192"> <source xml:space="preserve">Copy &label</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">59</context></context-group> </trans-unit> <trans-unit id="_msg193"> <source xml:space="preserve">Copy &amount</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">60</context></context-group> </trans-unit> <trans-unit id="_msg194"> <source xml:space="preserve">Copy transaction &ID and output index</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">61</context></context-group> </trans-unit> <trans-unit id="_msg195"> <source xml:space="preserve">L&ock unspent</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">63</context></context-group> </trans-unit> <trans-unit id="_msg196"> <source xml:space="preserve">&Unlock unspent</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">64</context></context-group> </trans-unit> <trans-unit id="_msg197"> <source xml:space="preserve">Copy quantity</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">68</context></context-group> </trans-unit> <trans-unit id="_msg198"> <source xml:space="preserve">Copy fee</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">70</context></context-group> </trans-unit> <trans-unit id="_msg199"> <source xml:space="preserve">Copy after fee</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">71</context></context-group> </trans-unit> <trans-unit id="_msg200"> <source xml:space="preserve">Copy bytes</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">72</context></context-group> </trans-unit> <trans-unit id="_msg201"> <source xml:space="preserve">Copy dust</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">73</context></context-group> </trans-unit> <trans-unit id="_msg202"> <source xml:space="preserve">Copy change</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">74</context></context-group> </trans-unit> <trans-unit id="_msg203"> <source xml:space="preserve">(%1 locked)</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">380</context></context-group> </trans-unit> <trans-unit id="_msg204"> <source xml:space="preserve">yes</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">535</context></context-group> </trans-unit> <trans-unit id="_msg205"> <source xml:space="preserve">no</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">535</context></context-group> </trans-unit> <trans-unit id="_msg206"> <source xml:space="preserve">This label turns red if any recipient receives an amount smaller than the current dust threshold.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">549</context></context-group> </trans-unit> <trans-unit id="_msg207"> <source xml:space="preserve">Can vary +/- %1 satoshi(s) per input.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">554</context></context-group> </trans-unit> <trans-unit id="_msg208"> <source xml:space="preserve">(no label)</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">601</context></context-group> <context-group purpose="location"><context context-type="linenumber">655</context></context-group> </trans-unit> <trans-unit id="_msg209"> <source xml:space="preserve">change from %1 (%2)</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">648</context></context-group> </trans-unit> <trans-unit id="_msg210"> <source xml:space="preserve">(change)</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">649</context></context-group> </trans-unit> </group> </body></file> - <file original="../walletcontroller.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../walletcontroller.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="CreateWalletActivity"> <trans-unit id="_msg211"> <source xml:space="preserve">Create Wallet</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">243</context></context-group> <note annotates="source" from="developer">Title of window indicating the progress of creation of a new wallet.</note> </trans-unit> <trans-unit id="_msg212"> <source xml:space="preserve">Creating Wallet <b>%1</b>…</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">246</context></context-group> <note annotates="source" from="developer">Descriptive text of the create wallet progress window which indicates to the user which wallet is currently being created.</note> </trans-unit> <trans-unit id="_msg213"> <source xml:space="preserve">Create wallet failed</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">275</context></context-group> </trans-unit> <trans-unit id="_msg214"> <source xml:space="preserve">Create wallet warning</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">277</context></context-group> </trans-unit> <trans-unit id="_msg215"> <source xml:space="preserve">Can't list signers</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">293</context></context-group> </trans-unit> </group> <group restype="x-trolltech-linguist-context" resname="LoadWalletsActivity"> <trans-unit id="_msg216"> <source xml:space="preserve">Load Wallets</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">362</context></context-group> <note annotates="source" from="developer">Title of progress window which is displayed when wallets are being loaded.</note> </trans-unit> <trans-unit id="_msg217"> <source xml:space="preserve">Loading wallets…</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">365</context></context-group> <note annotates="source" from="developer">Descriptive text of the load wallets progress window which indicates to the user that wallets are currently being loaded.</note> </trans-unit> @@ -1182,28 +963,23 @@ Signing is only possible with addresses of the type 'legacy'.</source> <group restype="x-trolltech-linguist-context" resname="OpenWalletActivity"> <trans-unit id="_msg218"> <source xml:space="preserve">Open wallet failed</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">323</context></context-group> </trans-unit> <trans-unit id="_msg219"> <source xml:space="preserve">Open wallet warning</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">325</context></context-group> </trans-unit> <trans-unit id="_msg220"> <source xml:space="preserve">default wallet</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">335</context></context-group> </trans-unit> <trans-unit id="_msg221"> <source xml:space="preserve">Open Wallet</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">339</context></context-group> <note annotates="source" from="developer">Title of window indicating the progress of opening of a wallet.</note> </trans-unit> <trans-unit id="_msg222"> <source xml:space="preserve">Opening Wallet <b>%1</b>…</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">342</context></context-group> <note annotates="source" from="developer">Descriptive text of the open wallet progress window which indicates to the user which wallet is currently being opened.</note> </trans-unit> @@ -1211,255 +987,209 @@ Signing is only possible with addresses of the type 'legacy'.</source> <group restype="x-trolltech-linguist-context" resname="WalletController"> <trans-unit id="_msg223"> <source xml:space="preserve">Close wallet</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">83</context></context-group> </trans-unit> <trans-unit id="_msg224"> <source xml:space="preserve">Are you sure you wish to close the wallet <i>%1</i>?</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">84</context></context-group> </trans-unit> <trans-unit id="_msg225"> <source xml:space="preserve">Closing the wallet for too long can result in having to resync the entire chain if pruning is enabled.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">85</context></context-group> </trans-unit> <trans-unit id="_msg226"> <source xml:space="preserve">Close all wallets</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">98</context></context-group> </trans-unit> <trans-unit id="_msg227"> <source xml:space="preserve">Are you sure you wish to close all wallets?</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">99</context></context-group> </trans-unit> </group> </body></file> - <file original="../forms/createwalletdialog.ui" datatype="x-trolltech-designer-ui" source-language="en" target-language="en"><body> + <file original="../forms/createwalletdialog.ui" datatype="x-trolltech-designer-ui" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="CreateWalletDialog"> <trans-unit id="_msg228"> <source xml:space="preserve">Create Wallet</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">14</context></context-group> </trans-unit> <trans-unit id="_msg229"> <source xml:space="preserve">Wallet Name</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">25</context></context-group> </trans-unit> <trans-unit id="_msg230"> <source xml:space="preserve">Wallet</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">38</context></context-group> </trans-unit> <trans-unit id="_msg231"> <source xml:space="preserve">Encrypt the wallet. The wallet will be encrypted with a passphrase of your choice.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">47</context></context-group> </trans-unit> <trans-unit id="_msg232"> <source xml:space="preserve">Encrypt Wallet</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">50</context></context-group> </trans-unit> <trans-unit id="_msg233"> <source xml:space="preserve">Advanced Options</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">76</context></context-group> </trans-unit> <trans-unit id="_msg234"> <source xml:space="preserve">Disable private keys for this wallet. Wallets with private keys disabled will have no private keys and cannot have an HD seed or imported private keys. This is ideal for watch-only wallets.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">85</context></context-group> </trans-unit> <trans-unit id="_msg235"> <source xml:space="preserve">Disable Private Keys</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">88</context></context-group> </trans-unit> <trans-unit id="_msg236"> <source xml:space="preserve">Make a blank wallet. Blank wallets do not initially have private keys or scripts. Private keys and addresses can be imported, or an HD seed can be set, at a later time.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">95</context></context-group> </trans-unit> <trans-unit id="_msg237"> <source xml:space="preserve">Make Blank Wallet</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">98</context></context-group> </trans-unit> <trans-unit id="_msg238"> <source xml:space="preserve">Use descriptors for scriptPubKey management</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">105</context></context-group> </trans-unit> <trans-unit id="_msg239"> <source xml:space="preserve">Descriptor Wallet</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">108</context></context-group> </trans-unit> <trans-unit id="_msg240"> <source xml:space="preserve">Use an external signing device such as a hardware wallet. Configure the external signer script in wallet preferences first.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">118</context></context-group> </trans-unit> <trans-unit id="_msg241"> <source xml:space="preserve">External signer</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">121</context></context-group> </trans-unit> </group> </body></file> - <file original="../createwalletdialog.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../createwalletdialog.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="CreateWalletDialog"> <trans-unit id="_msg242"> <source xml:space="preserve">Create</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">22</context></context-group> </trans-unit> <trans-unit id="_msg243"> <source xml:space="preserve">Compiled without sqlite support (required for descriptor wallets)</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">90</context></context-group> </trans-unit> <trans-unit id="_msg244"> <source xml:space="preserve">Compiled without external signing support (required for external signing)</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">104</context></context-group> <note annotates="source" from="developer">"External signing" means using devices such as hardware wallets.</note> </trans-unit> </group> </body></file> - <file original="../forms/editaddressdialog.ui" datatype="x-trolltech-designer-ui" source-language="en" target-language="en"><body> + <file original="../forms/editaddressdialog.ui" datatype="x-trolltech-designer-ui" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="EditAddressDialog"> - <trans-unit id="_msg245" approved="yes"> + <trans-unit id="_msg245"> <source xml:space="preserve">Edit Address</source> - <target xml:space="preserve">Edit Address</target> <context-group purpose="location"><context context-type="linenumber">14</context></context-group> </trans-unit> - <trans-unit id="_msg246" approved="yes"> + <trans-unit id="_msg246"> <source xml:space="preserve">&Label</source> - <target xml:space="preserve">&Label</target> <context-group purpose="location"><context context-type="linenumber">25</context></context-group> </trans-unit> <trans-unit id="_msg247"> <source xml:space="preserve">The label associated with this address list entry</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">35</context></context-group> </trans-unit> <trans-unit id="_msg248"> <source xml:space="preserve">The address associated with this address list entry. This can only be modified for sending addresses.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">52</context></context-group> </trans-unit> - <trans-unit id="_msg249" approved="yes"> + <trans-unit id="_msg249"> <source xml:space="preserve">&Address</source> - <target xml:space="preserve">&Address</target> <context-group purpose="location"><context context-type="linenumber">42</context></context-group> </trans-unit> </group> </body></file> - <file original="../editaddressdialog.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../editaddressdialog.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="EditAddressDialog"> <trans-unit id="_msg250"> <source xml:space="preserve">New sending address</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">29</context></context-group> </trans-unit> <trans-unit id="_msg251"> <source xml:space="preserve">Edit receiving address</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">32</context></context-group> </trans-unit> <trans-unit id="_msg252"> <source xml:space="preserve">Edit sending address</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">36</context></context-group> </trans-unit> <trans-unit id="_msg253"> <source xml:space="preserve">The entered address "%1" is not a valid Bitcoin address.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">113</context></context-group> </trans-unit> <trans-unit id="_msg254"> <source xml:space="preserve">Address "%1" already exists as a receiving address with label "%2" and so cannot be added as a sending address.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">146</context></context-group> </trans-unit> <trans-unit id="_msg255"> <source xml:space="preserve">The entered address "%1" is already in the address book with label "%2".</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">151</context></context-group> </trans-unit> <trans-unit id="_msg256"> <source xml:space="preserve">Could not unlock wallet.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">123</context></context-group> </trans-unit> <trans-unit id="_msg257"> <source xml:space="preserve">New key generation failed.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">128</context></context-group> </trans-unit> </group> </body></file> - <file original="../intro.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../intro.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="FreespaceChecker"> - <trans-unit id="_msg258" approved="yes"> + <trans-unit id="_msg258"> <source xml:space="preserve">A new data directory will be created.</source> - <target xml:space="preserve">A new data directory will be created.</target> <context-group purpose="location"><context context-type="linenumber">73</context></context-group> </trans-unit> - <trans-unit id="_msg259" approved="yes"> + <trans-unit id="_msg259"> <source xml:space="preserve">name</source> - <target xml:space="preserve">name</target> <context-group purpose="location"><context context-type="linenumber">95</context></context-group> </trans-unit> - <trans-unit id="_msg260" approved="yes"> + <trans-unit id="_msg260"> <source xml:space="preserve">Directory already exists. Add %1 if you intend to create a new directory here.</source> - <target xml:space="preserve">Directory already exists. Add %1 if you intend to create a new directory here.</target> <context-group purpose="location"><context context-type="linenumber">97</context></context-group> </trans-unit> - <trans-unit id="_msg261" approved="yes"> + <trans-unit id="_msg261"> <source xml:space="preserve">Path already exists, and is not a directory.</source> - <target xml:space="preserve">Path already exists, and is not a directory.</target> <context-group purpose="location"><context context-type="linenumber">100</context></context-group> </trans-unit> - <trans-unit id="_msg262" approved="yes"> + <trans-unit id="_msg262"> <source xml:space="preserve">Cannot create data directory here.</source> - <target xml:space="preserve">Cannot create data directory here.</target> <context-group purpose="location"><context context-type="linenumber">107</context></context-group> </trans-unit> </group> <group restype="x-trolltech-linguist-context" resname="Intro"> <trans-unit id="_msg263"> <source xml:space="preserve">Bitcoin</source> - <target xml:space="preserve" state="needs-review-translation">Bitcoin</target> <context-group purpose="location"><context context-type="linenumber">139</context></context-group> </trans-unit> <trans-unit id="_msg264"> - <source xml:space="preserve">%1 GB of free space available</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">%1 GB of space available</source> <context-group purpose="location"><context context-type="linenumber">301</context></context-group> </trans-unit> <trans-unit id="_msg265"> <source xml:space="preserve">(of %1 GB needed)</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">303</context></context-group> </trans-unit> <trans-unit id="_msg266"> <source xml:space="preserve">(%1 GB needed for full chain)</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">306</context></context-group> </trans-unit> <trans-unit id="_msg267"> <source xml:space="preserve">At least %1 GB of data will be stored in this directory, and it will grow over time.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">378</context></context-group> </trans-unit> <trans-unit id="_msg268"> <source xml:space="preserve">Approximately %1 GB of data will be stored in this directory.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">381</context></context-group> </trans-unit> <group restype="x-gettext-plurals"> @@ -1467,983 +1197,802 @@ Signing is only possible with addresses of the type 'legacy'.</source> <note annotates="source" from="developer">Explanatory text on the capability of the current prune target.</note> <trans-unit id="_msg269[0]"> <source xml:space="preserve">(sufficient to restore backups %n day(s) old)</source> - <target xml:space="preserve" state="needs-review-translation">(sufficient to restore backups %n day old)</target> </trans-unit> <trans-unit id="_msg269[1]"> <source xml:space="preserve">(sufficient to restore backups %n day(s) old)</source> - <target xml:space="preserve" state="needs-review-translation">(sufficient to restore backups %n days old)</target> </trans-unit> </group> <trans-unit id="_msg270"> <source xml:space="preserve">%1 will download and store a copy of the Bitcoin block chain.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">392</context></context-group> </trans-unit> <trans-unit id="_msg271"> <source xml:space="preserve">The wallet will also be stored in this directory.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">394</context></context-group> </trans-unit> <trans-unit id="_msg272"> <source xml:space="preserve">Error: Specified data directory "%1" cannot be created.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">250</context></context-group> </trans-unit> - <trans-unit id="_msg273" approved="yes"> + <trans-unit id="_msg273"> <source xml:space="preserve">Error</source> - <target xml:space="preserve">Error</target> <context-group purpose="location"><context context-type="linenumber">280</context></context-group> </trans-unit> </group> </body></file> - <file original="../utilitydialog.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../utilitydialog.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="HelpMessageDialog"> <trans-unit id="_msg274"> <source xml:space="preserve">version</source> - <target xml:space="preserve" state="needs-review-translation">version</target> <context-group purpose="location"><context context-type="linenumber">37</context></context-group> </trans-unit> <trans-unit id="_msg275"> <source xml:space="preserve">About %1</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">41</context></context-group> </trans-unit> <trans-unit id="_msg276"> <source xml:space="preserve">Command-line options</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">60</context></context-group> </trans-unit> </group> <group restype="x-trolltech-linguist-context" resname="ShutdownWindow"> <trans-unit id="_msg277"> <source xml:space="preserve">%1 is shutting down…</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">145</context></context-group> </trans-unit> <trans-unit id="_msg278"> <source xml:space="preserve">Do not shut down the computer until this window disappears.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">146</context></context-group> </trans-unit> </group> </body></file> - <file original="../forms/intro.ui" datatype="x-trolltech-designer-ui" source-language="en" target-language="en"><body> + <file original="../forms/intro.ui" datatype="x-trolltech-designer-ui" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="Intro"> - <trans-unit id="_msg279" approved="yes"> + <trans-unit id="_msg279"> <source xml:space="preserve">Welcome</source> - <target xml:space="preserve">Welcome</target> <context-group purpose="location"><context context-type="linenumber">14</context></context-group> </trans-unit> <trans-unit id="_msg280"> <source xml:space="preserve">Welcome to %1.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">23</context></context-group> </trans-unit> <trans-unit id="_msg281"> <source xml:space="preserve">As this is the first time the program is launched, you can choose where %1 will store its data.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">49</context></context-group> </trans-unit> <trans-unit id="_msg282"> <source xml:space="preserve">When you click OK, %1 will begin to download and process the full %4 block chain (%2GB) starting with the earliest transactions in %3 when %4 initially launched.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">206</context></context-group> </trans-unit> <trans-unit id="_msg283"> <source xml:space="preserve">Limit block chain storage to</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">238</context></context-group> </trans-unit> <trans-unit id="_msg284"> <source xml:space="preserve">Reverting this setting requires re-downloading the entire blockchain. It is faster to download the full chain first and prune it later. Disables some advanced features.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">241</context></context-group> </trans-unit> <trans-unit id="_msg285"> <source xml:space="preserve"> GB</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">248</context></context-group> </trans-unit> <trans-unit id="_msg286"> <source xml:space="preserve">This initial synchronisation is very demanding, and may expose hardware problems with your computer that had previously gone unnoticed. Each time you run %1, it will continue downloading where it left off.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">216</context></context-group> </trans-unit> <trans-unit id="_msg287"> <source xml:space="preserve">If you have chosen to limit block chain storage (pruning), the historical data must still be downloaded and processed, but will be deleted afterward to keep your disk usage low.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">226</context></context-group> </trans-unit> - <trans-unit id="_msg288" approved="yes"> + <trans-unit id="_msg288"> <source xml:space="preserve">Use the default data directory</source> - <target xml:space="preserve">Use the default data directory</target> <context-group purpose="location"><context context-type="linenumber">66</context></context-group> </trans-unit> - <trans-unit id="_msg289" approved="yes"> + <trans-unit id="_msg289"> <source xml:space="preserve">Use a custom data directory:</source> - <target xml:space="preserve">Use a custom data directory:</target> <context-group purpose="location"><context context-type="linenumber">73</context></context-group> </trans-unit> </group> </body></file> - <file original="../forms/modaloverlay.ui" datatype="x-trolltech-designer-ui" source-language="en" target-language="en"><body> + <file original="../forms/modaloverlay.ui" datatype="x-trolltech-designer-ui" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="ModalOverlay"> <trans-unit id="_msg290"> <source xml:space="preserve">Form</source> - <target xml:space="preserve" state="needs-review-translation">Form</target> <context-group purpose="location"><context context-type="linenumber">14</context></context-group> </trans-unit> <trans-unit id="_msg291"> <source xml:space="preserve">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 bitcoin network, as detailed below.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">133</context></context-group> </trans-unit> <trans-unit id="_msg292"> <source xml:space="preserve">Attempting to spend bitcoins that are affected by not-yet-displayed transactions will not be accepted by the network.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">152</context></context-group> </trans-unit> <trans-unit id="_msg293"> <source xml:space="preserve">Number of blocks left</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">215</context></context-group> </trans-unit> <trans-unit id="_msg294"> <source xml:space="preserve">Unknown…</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">222</context></context-group> <context-group purpose="location"><context context-type="linenumber">248</context></context-group> <context-group purpose="location"><context context-type="sourcefile">../modaloverlay.cpp</context><context context-type="linenumber">152</context></context-group> </trans-unit> <trans-unit id="_msg295"> <source xml:space="preserve">calculating…</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">292</context></context-group> <context-group purpose="location"><context context-type="linenumber">312</context></context-group> </trans-unit> <trans-unit id="_msg296"> <source xml:space="preserve">Last block time</source> - <target xml:space="preserve" state="needs-review-translation">Last block time</target> <context-group purpose="location"><context context-type="linenumber">235</context></context-group> </trans-unit> <trans-unit id="_msg297"> <source xml:space="preserve">Progress</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">261</context></context-group> </trans-unit> <trans-unit id="_msg298"> <source xml:space="preserve">Progress increase per hour</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">285</context></context-group> </trans-unit> <trans-unit id="_msg299"> <source xml:space="preserve">Estimated time left until synced</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">305</context></context-group> </trans-unit> <trans-unit id="_msg300"> <source xml:space="preserve">Hide</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">342</context></context-group> </trans-unit> <trans-unit id="_msg301"> <source xml:space="preserve">Esc</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">345</context></context-group> </trans-unit> </group> </body></file> - <file original="../modaloverlay.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../modaloverlay.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="ModalOverlay"> <trans-unit id="_msg302"> <source xml:space="preserve">%1 is currently syncing. It will download headers and blocks from peers and validate them until reaching the tip of the block chain.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">34</context></context-group> </trans-unit> <trans-unit id="_msg303"> <source xml:space="preserve">Unknown. Syncing Headers (%1, %2%)…</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">158</context></context-group> </trans-unit> </group> <group restype="x-trolltech-linguist-context" resname="QObject"> <trans-unit id="_msg304"> <source xml:space="preserve">unknown</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">123</context></context-group> </trans-unit> </group> </body></file> - <file original="../forms/openuridialog.ui" datatype="x-trolltech-designer-ui" source-language="en" target-language="en"><body> + <file original="../forms/openuridialog.ui" datatype="x-trolltech-designer-ui" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="OpenURIDialog"> <trans-unit id="_msg305"> <source xml:space="preserve">Open bitcoin URI</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">14</context></context-group> </trans-unit> <trans-unit id="_msg306"> <source xml:space="preserve">URI:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">22</context></context-group> </trans-unit> <trans-unit id="_msg307"> <source xml:space="preserve">Paste address from clipboard</source> - <target xml:space="preserve" state="needs-review-translation">Paste address from clipboard</target> <context-group purpose="location"><context context-type="linenumber">36</context></context-group> <note annotates="source" from="developer">Tooltip text for button that allows you to paste an address that is in your clipboard.</note> </trans-unit> </group> </body></file> - <file original="../forms/optionsdialog.ui" datatype="x-trolltech-designer-ui" source-language="en" target-language="en"><body> + <file original="../forms/optionsdialog.ui" datatype="x-trolltech-designer-ui" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="OptionsDialog"> - <trans-unit id="_msg308" approved="yes"> + <trans-unit id="_msg308"> <source xml:space="preserve">Options</source> - <target xml:space="preserve">Options</target> <context-group purpose="location"><context context-type="linenumber">14</context></context-group> </trans-unit> - <trans-unit id="_msg309" approved="yes"> + <trans-unit id="_msg309"> <source xml:space="preserve">&Main</source> - <target xml:space="preserve">&Main</target> <context-group purpose="location"><context context-type="linenumber">27</context></context-group> </trans-unit> <trans-unit id="_msg310"> <source xml:space="preserve">Automatically start %1 after logging in to the system.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">33</context></context-group> </trans-unit> <trans-unit id="_msg311"> <source xml:space="preserve">&Start %1 on system login</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">36</context></context-group> </trans-unit> <trans-unit id="_msg312"> <source xml:space="preserve">Enabling pruning significantly reduces the disk space required to store transactions. All blocks are still fully validated. Reverting this setting requires re-downloading the entire blockchain.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">58</context></context-group> </trans-unit> <trans-unit id="_msg313"> <source xml:space="preserve">Size of &database cache</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">111</context></context-group> </trans-unit> <trans-unit id="_msg314"> <source xml:space="preserve">Number of script &verification threads</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">157</context></context-group> </trans-unit> <trans-unit id="_msg315"> <source xml:space="preserve">IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1)</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">388</context></context-group> <context-group purpose="location"><context context-type="linenumber">575</context></context-group> </trans-unit> <trans-unit id="_msg316"> <source xml:space="preserve">Shows if the supplied default SOCKS5 proxy is used to reach peers via this network type.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">457</context></context-group> <context-group purpose="location"><context context-type="linenumber">480</context></context-group> <context-group purpose="location"><context context-type="linenumber">503</context></context-group> </trans-unit> <trans-unit id="_msg317"> <source xml:space="preserve">Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Exit in the menu.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">672</context></context-group> </trans-unit> <trans-unit id="_msg318"> <source xml:space="preserve">Open the %1 configuration file from the working directory.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">944</context></context-group> </trans-unit> <trans-unit id="_msg319"> <source xml:space="preserve">Open Configuration File</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">947</context></context-group> </trans-unit> - <trans-unit id="_msg320" approved="yes"> + <trans-unit id="_msg320"> <source xml:space="preserve">Reset all client options to default.</source> - <target xml:space="preserve">Reset all client options to default.</target> <context-group purpose="location"><context context-type="linenumber">957</context></context-group> </trans-unit> - <trans-unit id="_msg321" approved="yes"> + <trans-unit id="_msg321"> <source xml:space="preserve">&Reset Options</source> - <target xml:space="preserve">&Reset Options</target> <context-group purpose="location"><context context-type="linenumber">960</context></context-group> </trans-unit> - <trans-unit id="_msg322" approved="yes"> + <trans-unit id="_msg322"> <source xml:space="preserve">&Network</source> - <target xml:space="preserve">&Network</target> <context-group purpose="location"><context context-type="linenumber">315</context></context-group> </trans-unit> <trans-unit id="_msg323"> <source xml:space="preserve">Prune &block storage to</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">61</context></context-group> </trans-unit> <trans-unit id="_msg324"> <source xml:space="preserve">GB</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">71</context></context-group> </trans-unit> <trans-unit id="_msg325"> <source xml:space="preserve">Reverting this setting requires re-downloading the entire blockchain.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">96</context></context-group> </trans-unit> <trans-unit id="_msg326"> <source xml:space="preserve">Maximum database cache size. A larger cache can contribute to faster sync, after which the benefit is less pronounced for most use cases. Lowering the cache size will reduce memory usage. Unused mempool memory is shared for this cache.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">108</context></context-group> <note annotates="source" from="developer">Tooltip text for Options window setting that sets the size of the database cache. Explains the corresponding effects of increasing/decreasing this value.</note> </trans-unit> <trans-unit id="_msg327"> <source xml:space="preserve">MiB</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">127</context></context-group> </trans-unit> <trans-unit id="_msg328"> <source xml:space="preserve">Set the number of script verification threads. Negative values correspond to the number of cores you want to leave free to the system.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">154</context></context-group> <note annotates="source" from="developer">Tooltip text for Options window setting that sets the number of script verification threads. Explains that negative values mean to leave these many cores free to the system.</note> </trans-unit> <trans-unit id="_msg329"> <source xml:space="preserve">(0 = auto, <0 = leave that many cores free)</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">170</context></context-group> </trans-unit> <trans-unit id="_msg330"> <source xml:space="preserve">This allows you or a third party tool to communicate with the node through command-line and JSON-RPC commands.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">192</context></context-group> <note annotates="source" from="developer">Tooltip text for Options window setting that enables the RPC server.</note> </trans-unit> <trans-unit id="_msg331"> <source xml:space="preserve">Enable R&PC server</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">195</context></context-group> <note annotates="source" from="developer">An Options window setting to enable the RPC server.</note> </trans-unit> <trans-unit id="_msg332"> <source xml:space="preserve">W&allet</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">216</context></context-group> </trans-unit> <trans-unit id="_msg333"> <source xml:space="preserve">Whether to set subtract fee from amount as default or not.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">222</context></context-group> <note annotates="source" from="developer">Tooltip text for Options window setting that sets subtracting the fee from a sending amount as default.</note> </trans-unit> <trans-unit id="_msg334"> <source xml:space="preserve">Subtract &fee from amount by default</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">225</context></context-group> <note annotates="source" from="developer">An Options window setting to set subtracting the fee from a sending amount as default.</note> </trans-unit> <trans-unit id="_msg335"> <source xml:space="preserve">Expert</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">232</context></context-group> </trans-unit> <trans-unit id="_msg336"> <source xml:space="preserve">Enable coin &control features</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">241</context></context-group> </trans-unit> <trans-unit id="_msg337"> <source xml:space="preserve">If you disable the spending of unconfirmed change, the change from a transaction cannot be used until that transaction has at least one confirmation. This also affects how your balance is computed.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">248</context></context-group> </trans-unit> <trans-unit id="_msg338"> <source xml:space="preserve">&Spend unconfirmed change</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">251</context></context-group> </trans-unit> <trans-unit id="_msg339"> <source xml:space="preserve">Enable &PSBT controls</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">258</context></context-group> <note annotates="source" from="developer">An options window setting to enable PSBT controls.</note> </trans-unit> <trans-unit id="_msg340"> <source xml:space="preserve">Whether to show PSBT controls.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">261</context></context-group> <note annotates="source" from="developer">Tooltip text for options window setting that enables PSBT controls.</note> </trans-unit> <trans-unit id="_msg341"> <source xml:space="preserve">External Signer (e.g. hardware wallet)</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">271</context></context-group> </trans-unit> <trans-unit id="_msg342"> <source xml:space="preserve">&External signer script path</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">279</context></context-group> </trans-unit> <trans-unit id="_msg343"> <source xml:space="preserve">Full path to a Bitcoin Core compatible script (e.g. C:\Downloads\hwi.exe or /Users/you/Downloads/hwi.py). Beware: malware can steal your coins!</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">289</context></context-group> </trans-unit> - <trans-unit id="_msg344" approved="yes"> + <trans-unit id="_msg344"> <source xml:space="preserve">Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled.</source> - <target xml:space="preserve">Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled.</target> <context-group purpose="location"><context context-type="linenumber">321</context></context-group> </trans-unit> - <trans-unit id="_msg345" approved="yes"> + <trans-unit id="_msg345"> <source xml:space="preserve">Map port using &UPnP</source> - <target xml:space="preserve">Map port using &UPnP</target> <context-group purpose="location"><context context-type="linenumber">324</context></context-group> </trans-unit> <trans-unit id="_msg346"> <source xml:space="preserve">Automatically open the Bitcoin client port on the router. This only works when your router supports NAT-PMP and it is enabled. The external port could be random.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">331</context></context-group> </trans-unit> <trans-unit id="_msg347"> <source xml:space="preserve">Map port using NA&T-PMP</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">334</context></context-group> </trans-unit> <trans-unit id="_msg348"> <source xml:space="preserve">Accept connections from outside.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">341</context></context-group> </trans-unit> <trans-unit id="_msg349"> <source xml:space="preserve">Allow incomin&g connections</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">344</context></context-group> </trans-unit> <trans-unit id="_msg350"> <source xml:space="preserve">Connect to the Bitcoin network through a SOCKS5 proxy.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">351</context></context-group> </trans-unit> <trans-unit id="_msg351"> <source xml:space="preserve">&Connect through SOCKS5 proxy (default proxy):</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">354</context></context-group> </trans-unit> - <trans-unit id="_msg352" approved="yes"> + <trans-unit id="_msg352"> <source xml:space="preserve">Proxy &IP:</source> - <target xml:space="preserve">Proxy &IP:</target> <context-group purpose="location"><context context-type="linenumber">363</context></context-group> <context-group purpose="location"><context context-type="linenumber">550</context></context-group> </trans-unit> - <trans-unit id="_msg353" approved="yes"> + <trans-unit id="_msg353"> <source xml:space="preserve">&Port:</source> - <target xml:space="preserve">&Port:</target> <context-group purpose="location"><context context-type="linenumber">395</context></context-group> <context-group purpose="location"><context context-type="linenumber">582</context></context-group> </trans-unit> - <trans-unit id="_msg354" approved="yes"> + <trans-unit id="_msg354"> <source xml:space="preserve">Port of the proxy (e.g. 9050)</source> - <target xml:space="preserve">Port of the proxy (e.g. 9050)</target> <context-group purpose="location"><context context-type="linenumber">420</context></context-group> <context-group purpose="location"><context context-type="linenumber">607</context></context-group> </trans-unit> <trans-unit id="_msg355"> <source xml:space="preserve">Used for reaching peers via:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">444</context></context-group> </trans-unit> <trans-unit id="_msg356"> <source xml:space="preserve">IPv4</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">467</context></context-group> </trans-unit> <trans-unit id="_msg357"> <source xml:space="preserve">IPv6</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">490</context></context-group> </trans-unit> <trans-unit id="_msg358"> <source xml:space="preserve">Tor</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">513</context></context-group> </trans-unit> - <trans-unit id="_msg359" approved="yes"> + <trans-unit id="_msg359"> <source xml:space="preserve">&Window</source> - <target xml:space="preserve">&Window</target> <context-group purpose="location"><context context-type="linenumber">643</context></context-group> </trans-unit> <trans-unit id="_msg360"> <source xml:space="preserve">Show the icon in the system tray.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">649</context></context-group> </trans-unit> <trans-unit id="_msg361"> <source xml:space="preserve">&Show tray icon</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">652</context></context-group> </trans-unit> - <trans-unit id="_msg362" approved="yes"> + <trans-unit id="_msg362"> <source xml:space="preserve">Show only a tray icon after minimizing the window.</source> - <target xml:space="preserve">Show only a tray icon after minimizing the window.</target> <context-group purpose="location"><context context-type="linenumber">662</context></context-group> </trans-unit> - <trans-unit id="_msg363" approved="yes"> + <trans-unit id="_msg363"> <source xml:space="preserve">&Minimize to the tray instead of the taskbar</source> - <target xml:space="preserve">&Minimize to the tray instead of the taskbar</target> <context-group purpose="location"><context context-type="linenumber">665</context></context-group> </trans-unit> - <trans-unit id="_msg364" approved="yes"> + <trans-unit id="_msg364"> <source xml:space="preserve">M&inimize on close</source> - <target xml:space="preserve">M&inimize on close</target> <context-group purpose="location"><context context-type="linenumber">675</context></context-group> </trans-unit> - <trans-unit id="_msg365" approved="yes"> + <trans-unit id="_msg365"> <source xml:space="preserve">&Display</source> - <target xml:space="preserve">&Display</target> <context-group purpose="location"><context context-type="linenumber">696</context></context-group> </trans-unit> - <trans-unit id="_msg366" approved="yes"> + <trans-unit id="_msg366"> <source xml:space="preserve">User Interface &language:</source> - <target xml:space="preserve">User Interface &language:</target> <context-group purpose="location"><context context-type="linenumber">704</context></context-group> </trans-unit> <trans-unit id="_msg367"> <source xml:space="preserve">The user interface language can be set here. This setting will take effect after restarting %1.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">717</context></context-group> </trans-unit> - <trans-unit id="_msg368" approved="yes"> + <trans-unit id="_msg368"> <source xml:space="preserve">&Unit to show amounts in:</source> - <target xml:space="preserve">&Unit to show amounts in:</target> <context-group purpose="location"><context context-type="linenumber">728</context></context-group> </trans-unit> - <trans-unit id="_msg369" approved="yes"> + <trans-unit id="_msg369"> <source xml:space="preserve">Choose the default subdivision unit to show in the interface and when sending coins.</source> - <target xml:space="preserve">Choose the default subdivision unit to show in the interface and when sending coins.</target> <context-group purpose="location"><context context-type="linenumber">741</context></context-group> </trans-unit> <trans-unit id="_msg370"> <source xml:space="preserve">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 |.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">752</context></context-group> <context-group purpose="location"><context context-type="linenumber">765</context></context-group> </trans-unit> <trans-unit id="_msg371"> <source xml:space="preserve">&Third-party transaction URLs</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">755</context></context-group> </trans-unit> <trans-unit id="_msg372"> <source xml:space="preserve">Whether to show coin control features or not.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">238</context></context-group> </trans-unit> <trans-unit id="_msg373"> <source xml:space="preserve">Connect to the Bitcoin network through a separate SOCKS5 proxy for Tor onion services.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">538</context></context-group> </trans-unit> <trans-unit id="_msg374"> <source xml:space="preserve">Use separate SOCKS&5 proxy to reach peers via Tor onion services:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">541</context></context-group> </trans-unit> <trans-unit id="_msg375"> <source xml:space="preserve">Monospaced font in the Overview tab:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">777</context></context-group> </trans-unit> <trans-unit id="_msg376"> <source xml:space="preserve">embedded "%1"</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">785</context></context-group> </trans-unit> <trans-unit id="_msg377"> <source xml:space="preserve">closest matching "%1"</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">834</context></context-group> </trans-unit> <trans-unit id="_msg378"> <source xml:space="preserve">Options set in this dialog are overridden by the command line or in the configuration file:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">899</context></context-group> </trans-unit> - <trans-unit id="_msg379" approved="yes"> + <trans-unit id="_msg379"> <source xml:space="preserve">&OK</source> - <target xml:space="preserve">&OK</target> <context-group purpose="location"><context context-type="linenumber">1040</context></context-group> </trans-unit> - <trans-unit id="_msg380" approved="yes"> + <trans-unit id="_msg380"> <source xml:space="preserve">&Cancel</source> - <target xml:space="preserve">&Cancel</target> <context-group purpose="location"><context context-type="linenumber">1053</context></context-group> </trans-unit> </group> </body></file> - <file original="../optionsdialog.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../optionsdialog.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="OptionsDialog"> <trans-unit id="_msg381"> <source xml:space="preserve">Compiled without external signing support (required for external signing)</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">99</context></context-group> <note annotates="source" from="developer">"External signing" means using devices such as hardware wallets.</note> </trans-unit> - <trans-unit id="_msg382" approved="yes"> + <trans-unit id="_msg382"> <source xml:space="preserve">default</source> - <target xml:space="preserve">default</target> <context-group purpose="location"><context context-type="linenumber">111</context></context-group> </trans-unit> <trans-unit id="_msg383"> <source xml:space="preserve">none</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">192</context></context-group> </trans-unit> - <trans-unit id="_msg384" approved="yes"> + <trans-unit id="_msg384"> <source xml:space="preserve">Confirm options reset</source> - <target xml:space="preserve">Confirm options reset</target> <context-group purpose="location"><context context-type="linenumber">289</context></context-group> </trans-unit> <trans-unit id="_msg385"> <source xml:space="preserve">Client restart required to activate changes.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">290</context></context-group> <context-group purpose="location"><context context-type="linenumber">360</context></context-group> </trans-unit> <trans-unit id="_msg386"> <source xml:space="preserve">Client will be shut down. Do you want to proceed?</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">290</context></context-group> </trans-unit> <trans-unit id="_msg387"> <source xml:space="preserve">Configuration options</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">308</context></context-group> <note annotates="source" from="developer">Window title text of pop-up box that allows opening up of configuration file.</note> </trans-unit> <trans-unit id="_msg388"> <source xml:space="preserve">The configuration file is used to specify advanced user options which override GUI settings. Additionally, any command-line options will override this configuration file.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">311</context></context-group> <note annotates="source" from="developer">Explanatory text about the priority order of instructions considered by client. The order from high to low being: command-line, configuration file, GUI settings.</note> </trans-unit> <trans-unit id="_msg389"> <source xml:space="preserve">Continue</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">314</context></context-group> </trans-unit> <trans-unit id="_msg390"> <source xml:space="preserve">Cancel</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">315</context></context-group> </trans-unit> <trans-unit id="_msg391"> <source xml:space="preserve">Error</source> - <target xml:space="preserve" state="needs-review-translation">Error</target> <context-group purpose="location"><context context-type="linenumber">324</context></context-group> </trans-unit> <trans-unit id="_msg392"> <source xml:space="preserve">The configuration file could not be opened.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">324</context></context-group> </trans-unit> <trans-unit id="_msg393"> <source xml:space="preserve">This change would require a client restart.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">364</context></context-group> </trans-unit> - <trans-unit id="_msg394" approved="yes"> + <trans-unit id="_msg394"> <source xml:space="preserve">The supplied proxy address is invalid.</source> - <target xml:space="preserve">The supplied proxy address is invalid.</target> <context-group purpose="location"><context context-type="linenumber">392</context></context-group> </trans-unit> </group> </body></file> - <file original="../forms/overviewpage.ui" datatype="x-trolltech-designer-ui" source-language="en" target-language="en"><body> + <file original="../forms/overviewpage.ui" datatype="x-trolltech-designer-ui" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="OverviewPage"> - <trans-unit id="_msg395" approved="yes"> + <trans-unit id="_msg395"> <source xml:space="preserve">Form</source> - <target xml:space="preserve">Form</target> <context-group purpose="location"><context context-type="linenumber">14</context></context-group> </trans-unit> - <trans-unit id="_msg396" approved="yes"> + <trans-unit id="_msg396"> <source xml:space="preserve">The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet.</source> - <target xml:space="preserve">The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet.</target> <context-group purpose="location"><context context-type="linenumber">76</context></context-group> <context-group purpose="location"><context context-type="linenumber">411</context></context-group> </trans-unit> <trans-unit id="_msg397"> <source xml:space="preserve">Watch-only:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">284</context></context-group> </trans-unit> <trans-unit id="_msg398"> <source xml:space="preserve">Available:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">294</context></context-group> </trans-unit> - <trans-unit id="_msg399" approved="yes"> + <trans-unit id="_msg399"> <source xml:space="preserve">Your current spendable balance</source> - <target xml:space="preserve">Your current spendable balance</target> <context-group purpose="location"><context context-type="linenumber">304</context></context-group> </trans-unit> <trans-unit id="_msg400"> <source xml:space="preserve">Pending:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">339</context></context-group> </trans-unit> - <trans-unit id="_msg401" approved="yes"> + <trans-unit id="_msg401"> <source xml:space="preserve">Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance</source> - <target xml:space="preserve">Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance</target> <context-group purpose="location"><context context-type="linenumber">139</context></context-group> </trans-unit> - <trans-unit id="_msg402" approved="yes"> + <trans-unit id="_msg402"> <source xml:space="preserve">Immature:</source> - <target xml:space="preserve">Immature:</target> <context-group purpose="location"><context context-type="linenumber">239</context></context-group> </trans-unit> - <trans-unit id="_msg403" approved="yes"> + <trans-unit id="_msg403"> <source xml:space="preserve">Mined balance that has not yet matured</source> - <target xml:space="preserve">Mined balance that has not yet matured</target> <context-group purpose="location"><context context-type="linenumber">210</context></context-group> </trans-unit> <trans-unit id="_msg404"> <source xml:space="preserve">Balances</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">60</context></context-group> </trans-unit> - <trans-unit id="_msg405" approved="yes"> + <trans-unit id="_msg405"> <source xml:space="preserve">Total:</source> - <target xml:space="preserve">Total:</target> <context-group purpose="location"><context context-type="linenumber">200</context></context-group> </trans-unit> - <trans-unit id="_msg406" approved="yes"> + <trans-unit id="_msg406"> <source xml:space="preserve">Your current total balance</source> - <target xml:space="preserve">Your current total balance</target> <context-group purpose="location"><context context-type="linenumber">249</context></context-group> </trans-unit> <trans-unit id="_msg407"> <source xml:space="preserve">Your current balance in watch-only addresses</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">323</context></context-group> </trans-unit> <trans-unit id="_msg408"> <source xml:space="preserve">Spendable:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">346</context></context-group> </trans-unit> <trans-unit id="_msg409"> <source xml:space="preserve">Recent transactions</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">395</context></context-group> </trans-unit> <trans-unit id="_msg410"> <source xml:space="preserve">Unconfirmed transactions to watch-only addresses</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">120</context></context-group> </trans-unit> <trans-unit id="_msg411"> <source xml:space="preserve">Mined balance in watch-only addresses that has not yet matured</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">158</context></context-group> </trans-unit> <trans-unit id="_msg412"> <source xml:space="preserve">Current total balance in watch-only addresses</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">268</context></context-group> </trans-unit> </group> </body></file> - <file original="../overviewpage.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../overviewpage.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="OverviewPage"> <trans-unit id="_msg413"> <source xml:space="preserve">Privacy mode activated for the Overview tab. To unmask the values, uncheck Settings->Mask values.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">187</context></context-group> </trans-unit> </group> </body></file> - <file original="../forms/psbtoperationsdialog.ui" datatype="x-trolltech-designer-ui" source-language="en" target-language="en"><body> + <file original="../forms/psbtoperationsdialog.ui" datatype="x-trolltech-designer-ui" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="PSBTOperationsDialog"> <trans-unit id="_msg414"> <source xml:space="preserve">Dialog</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">14</context></context-group> </trans-unit> <trans-unit id="_msg415"> <source xml:space="preserve">Sign Tx</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">86</context></context-group> </trans-unit> <trans-unit id="_msg416"> <source xml:space="preserve">Broadcast Tx</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">102</context></context-group> </trans-unit> <trans-unit id="_msg417"> <source xml:space="preserve">Copy to Clipboard</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">122</context></context-group> </trans-unit> <trans-unit id="_msg418"> <source xml:space="preserve">Save…</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">129</context></context-group> </trans-unit> <trans-unit id="_msg419"> <source xml:space="preserve">Close</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">136</context></context-group> </trans-unit> </group> </body></file> - <file original="../psbtoperationsdialog.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../psbtoperationsdialog.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="PSBTOperationsDialog"> <trans-unit id="_msg420"> <source xml:space="preserve">Failed to load transaction: %1</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">58</context></context-group> + <context-group purpose="location"><context context-type="linenumber">61</context></context-group> </trans-unit> <trans-unit id="_msg421"> <source xml:space="preserve">Failed to sign transaction: %1</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">83</context></context-group> + <context-group purpose="location"><context context-type="linenumber">86</context></context-group> </trans-unit> <trans-unit id="_msg422"> <source xml:space="preserve">Cannot sign inputs while wallet is locked.</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">91</context></context-group> + <context-group purpose="location"><context context-type="linenumber">94</context></context-group> </trans-unit> <trans-unit id="_msg423"> <source xml:space="preserve">Could not sign any more inputs.</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">93</context></context-group> + <context-group purpose="location"><context context-type="linenumber">96</context></context-group> </trans-unit> <trans-unit id="_msg424"> <source xml:space="preserve">Signed %1 inputs, but more signatures are still required.</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">95</context></context-group> + <context-group purpose="location"><context context-type="linenumber">98</context></context-group> </trans-unit> <trans-unit id="_msg425"> <source xml:space="preserve">Signed transaction successfully. Transaction is ready to broadcast.</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">98</context></context-group> + <context-group purpose="location"><context context-type="linenumber">101</context></context-group> </trans-unit> <trans-unit id="_msg426"> <source xml:space="preserve">Unknown error processing transaction.</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">110</context></context-group> + <context-group purpose="location"><context context-type="linenumber">113</context></context-group> </trans-unit> <trans-unit id="_msg427"> <source xml:space="preserve">Transaction broadcast successfully! Transaction ID: %1</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">120</context></context-group> + <context-group purpose="location"><context context-type="linenumber">123</context></context-group> </trans-unit> <trans-unit id="_msg428"> <source xml:space="preserve">Transaction broadcast failed: %1</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">123</context></context-group> + <context-group purpose="location"><context context-type="linenumber">126</context></context-group> </trans-unit> <trans-unit id="_msg429"> <source xml:space="preserve">PSBT copied to clipboard.</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">132</context></context-group> + <context-group purpose="location"><context context-type="linenumber">135</context></context-group> </trans-unit> <trans-unit id="_msg430"> <source xml:space="preserve">Save Transaction Data</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">155</context></context-group> + <context-group purpose="location"><context context-type="linenumber">158</context></context-group> </trans-unit> <trans-unit id="_msg431"> <source xml:space="preserve">Partially Signed Transaction (Binary)</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">157</context></context-group> + <context-group purpose="location"><context context-type="linenumber">160</context></context-group> <note annotates="source" from="developer">Expanded name of the binary PSBT file format. See: BIP 174.</note> </trans-unit> <trans-unit id="_msg432"> <source xml:space="preserve">PSBT saved to disk.</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">164</context></context-group> + <context-group purpose="location"><context context-type="linenumber">167</context></context-group> </trans-unit> <trans-unit id="_msg433"> <source xml:space="preserve"> * Sends %1 to %2</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">180</context></context-group> + <context-group purpose="location"><context context-type="linenumber">183</context></context-group> </trans-unit> <trans-unit id="_msg434"> <source xml:space="preserve">Unable to calculate transaction fee or total transaction amount.</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">190</context></context-group> + <context-group purpose="location"><context context-type="linenumber">193</context></context-group> </trans-unit> <trans-unit id="_msg435"> <source xml:space="preserve">Pays transaction fee: </source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">192</context></context-group> + <context-group purpose="location"><context context-type="linenumber">195</context></context-group> </trans-unit> <trans-unit id="_msg436"> <source xml:space="preserve">Total Amount</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">204</context></context-group> + <context-group purpose="location"><context context-type="linenumber">207</context></context-group> </trans-unit> <trans-unit id="_msg437"> <source xml:space="preserve">or</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">207</context></context-group> + <context-group purpose="location"><context context-type="linenumber">210</context></context-group> </trans-unit> <trans-unit id="_msg438"> <source xml:space="preserve">Transaction has %1 unsigned inputs.</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">213</context></context-group> + <context-group purpose="location"><context context-type="linenumber">216</context></context-group> </trans-unit> <trans-unit id="_msg439"> <source xml:space="preserve">Transaction is missing some information about inputs.</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">259</context></context-group> + <context-group purpose="location"><context context-type="linenumber">262</context></context-group> </trans-unit> <trans-unit id="_msg440"> <source xml:space="preserve">Transaction still needs signature(s).</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">263</context></context-group> + <context-group purpose="location"><context context-type="linenumber">266</context></context-group> </trans-unit> <trans-unit id="_msg441"> <source xml:space="preserve">(But no wallet is loaded.)</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">266</context></context-group> + <context-group purpose="location"><context context-type="linenumber">269</context></context-group> </trans-unit> <trans-unit id="_msg442"> <source xml:space="preserve">(But this wallet cannot sign transactions.)</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">269</context></context-group> + <context-group purpose="location"><context context-type="linenumber">272</context></context-group> </trans-unit> <trans-unit id="_msg443"> <source xml:space="preserve">(But this wallet does not have the right keys.)</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">272</context></context-group> + <context-group purpose="location"><context context-type="linenumber">275</context></context-group> </trans-unit> <trans-unit id="_msg444"> <source xml:space="preserve">Transaction is fully signed and ready for broadcast.</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">280</context></context-group> + <context-group purpose="location"><context context-type="linenumber">283</context></context-group> </trans-unit> <trans-unit id="_msg445"> <source xml:space="preserve">Transaction status is unknown.</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">284</context></context-group> + <context-group purpose="location"><context context-type="linenumber">287</context></context-group> </trans-unit> </group> </body></file> - <file original="../paymentserver.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../paymentserver.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="PaymentServer"> <trans-unit id="_msg446"> <source xml:space="preserve">Payment request error</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">173</context></context-group> </trans-unit> <trans-unit id="_msg447"> <source xml:space="preserve">Cannot start bitcoin: click-to-pay handler</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">174</context></context-group> </trans-unit> <trans-unit id="_msg448"> <source xml:space="preserve">URI handling</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">224</context></context-group> <context-group purpose="location"><context context-type="linenumber">240</context></context-group> <context-group purpose="location"><context context-type="linenumber">246</context></context-group> @@ -2451,346 +2000,288 @@ Signing is only possible with addresses of the type 'legacy'.</source> </trans-unit> <trans-unit id="_msg449"> <source xml:space="preserve">'bitcoin://' is not a valid URI. Use 'bitcoin:' instead.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">224</context></context-group> </trans-unit> <trans-unit id="_msg450"> <source xml:space="preserve">Cannot process payment request because BIP70 is not supported. Due to widespread security flaws in BIP70 it's strongly recommended that any merchant instructions to switch wallets be ignored. If you are receiving this error you should request the merchant provide a BIP21 compatible URI.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">241</context></context-group> <context-group purpose="location"><context context-type="linenumber">264</context></context-group> </trans-unit> <trans-unit id="_msg451"> <source xml:space="preserve">URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">254</context></context-group> </trans-unit> <trans-unit id="_msg452"> <source xml:space="preserve">Payment request file handling</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">263</context></context-group> </trans-unit> </group> </body></file> - <file original="../peertablemodel.h" datatype="c" source-language="en" target-language="en"><body> + <file original="../peertablemodel.h" datatype="c" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="PeerTableModel"> <trans-unit id="_msg453"> <source xml:space="preserve">User Agent</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">108</context></context-group> <note annotates="source" from="developer">Title of Peers Table column which contains the peer's User Agent string.</note> </trans-unit> <trans-unit id="_msg454"> <source xml:space="preserve">Ping</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">99</context></context-group> <note annotates="source" from="developer">Title of Peers Table column which indicates the current latency of the connection with the peer.</note> </trans-unit> <trans-unit id="_msg455"> <source xml:space="preserve">Peer</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">84</context></context-group> <note annotates="source" from="developer">Title of Peers Table column which contains a unique number used to identify a connection.</note> </trans-unit> <trans-unit id="_msg456"> <source xml:space="preserve">Direction</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">90</context></context-group> <note annotates="source" from="developer">Title of Peers Table column which indicates the direction the peer connection was initiated from.</note> </trans-unit> <trans-unit id="_msg457"> <source xml:space="preserve">Sent</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">102</context></context-group> <note annotates="source" from="developer">Title of Peers Table column which indicates the total amount of network information we have sent to the peer.</note> </trans-unit> <trans-unit id="_msg458"> <source xml:space="preserve">Received</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">105</context></context-group> <note annotates="source" from="developer">Title of Peers Table column which indicates the total amount of network information we have received from the peer.</note> </trans-unit> <trans-unit id="_msg459"> <source xml:space="preserve">Address</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">87</context></context-group> <note annotates="source" from="developer">Title of Peers Table column which contains the IP/Onion/I2P address of the connected peer.</note> </trans-unit> <trans-unit id="_msg460"> <source xml:space="preserve">Type</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">93</context></context-group> <note annotates="source" from="developer">Title of Peers Table column which describes the type of peer connection. The "type" describes why the connection exists.</note> </trans-unit> <trans-unit id="_msg461"> <source xml:space="preserve">Network</source> - <target xml:space="preserve" state="needs-review-translation">Network</target> <context-group purpose="location"><context context-type="linenumber">96</context></context-group> <note annotates="source" from="developer">Title of Peers Table column which states the network the peer connected through.</note> </trans-unit> </group> </body></file> - <file original="../peertablemodel.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../peertablemodel.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="PeerTableModel"> <trans-unit id="_msg462"> <source xml:space="preserve">Inbound</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">79</context></context-group> <note annotates="source" from="developer">An Inbound Connection from a Peer.</note> </trans-unit> <trans-unit id="_msg463"> <source xml:space="preserve">Outbound</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">81</context></context-group> <note annotates="source" from="developer">An Outbound Connection to a Peer.</note> </trans-unit> </group> </body></file> - <file original="../bitcoinunits.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../bitcoinunits.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="QObject"> <trans-unit id="_msg464"> <source xml:space="preserve">Amount</source> - <target xml:space="preserve" state="needs-review-translation">Amount</target> <context-group purpose="location"><context context-type="linenumber">215</context></context-group> </trans-unit> </group> </body></file> - <file original="../guiutil.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../guiutil.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="QObject"> <trans-unit id="_msg465"> <source xml:space="preserve">Enter a Bitcoin address (e.g. %1)</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">122</context></context-group> + <context-group purpose="location"><context context-type="linenumber">127</context></context-group> </trans-unit> <trans-unit id="_msg466"> <source xml:space="preserve">Unroutable</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">668</context></context-group> + <context-group purpose="location"><context context-type="linenumber">673</context></context-group> </trans-unit> <trans-unit id="_msg467"> <source xml:space="preserve">Internal</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">674</context></context-group> + <context-group purpose="location"><context context-type="linenumber">679</context></context-group> </trans-unit> <trans-unit id="_msg468"> <source xml:space="preserve">Inbound</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">687</context></context-group> + <context-group purpose="location"><context context-type="linenumber">692</context></context-group> <note annotates="source" from="developer">An inbound connection from a peer. An inbound connection is a connection initiated by a peer.</note> </trans-unit> <trans-unit id="_msg469"> <source xml:space="preserve">Outbound</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">690</context></context-group> + <context-group purpose="location"><context context-type="linenumber">695</context></context-group> <note annotates="source" from="developer">An outbound connection to a peer. An outbound connection is a connection initiated by us.</note> </trans-unit> <trans-unit id="_msg470"> <source xml:space="preserve">Full Relay</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">695</context></context-group> + <context-group purpose="location"><context context-type="linenumber">700</context></context-group> <note annotates="source" from="developer">Peer connection type that relays all network information.</note> </trans-unit> <trans-unit id="_msg471"> <source xml:space="preserve">Block Relay</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">698</context></context-group> + <context-group purpose="location"><context context-type="linenumber">703</context></context-group> <note annotates="source" from="developer">Peer connection type that relays network information about blocks and not transactions or addresses.</note> </trans-unit> <trans-unit id="_msg472"> <source xml:space="preserve">Manual</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">700</context></context-group> + <context-group purpose="location"><context context-type="linenumber">705</context></context-group> <note annotates="source" from="developer">Peer connection type established manually through one of several methods.</note> </trans-unit> <trans-unit id="_msg473"> <source xml:space="preserve">Feeler</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">702</context></context-group> + <context-group purpose="location"><context context-type="linenumber">707</context></context-group> <note annotates="source" from="developer">Short-lived peer connection type that tests the aliveness of known addresses.</note> </trans-unit> <trans-unit id="_msg474"> <source xml:space="preserve">Address Fetch</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">704</context></context-group> + <context-group purpose="location"><context context-type="linenumber">709</context></context-group> <note annotates="source" from="developer">Short-lived peer connection type that solicits known addresses from a peer.</note> </trans-unit> <trans-unit id="_msg475"> <source xml:space="preserve">%1 d</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">719</context></context-group> + <context-group purpose="location"><context context-type="linenumber">724</context></context-group> </trans-unit> <trans-unit id="_msg476"> <source xml:space="preserve">%1 h</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">721</context></context-group> + <context-group purpose="location"><context context-type="linenumber">726</context></context-group> </trans-unit> <trans-unit id="_msg477"> <source xml:space="preserve">%1 m</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">723</context></context-group> + <context-group purpose="location"><context context-type="linenumber">728</context></context-group> </trans-unit> <trans-unit id="_msg478"> <source xml:space="preserve">%1 s</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">725</context></context-group> - <context-group purpose="location"><context context-type="linenumber">753</context></context-group> + <context-group purpose="location"><context context-type="linenumber">730</context></context-group> + <context-group purpose="location"><context context-type="linenumber">758</context></context-group> </trans-unit> <trans-unit id="_msg479"> <source xml:space="preserve">None</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">741</context></context-group> + <context-group purpose="location"><context context-type="linenumber">746</context></context-group> </trans-unit> <trans-unit id="_msg480"> <source xml:space="preserve">N/A</source> - <target xml:space="preserve" state="needs-review-translation">N/A</target> - <context-group purpose="location"><context context-type="linenumber">747</context></context-group> + <context-group purpose="location"><context context-type="linenumber">752</context></context-group> </trans-unit> <trans-unit id="_msg481"> <source xml:space="preserve">%1 ms</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">748</context></context-group> + <context-group purpose="location"><context context-type="linenumber">753</context></context-group> </trans-unit> <group restype="x-gettext-plurals"> - <context-group purpose="location"><context context-type="linenumber">766</context></context-group> - <trans-unit id="_msg482[0]" approved="yes"> + <context-group purpose="location"><context context-type="linenumber">771</context></context-group> + <trans-unit id="_msg482[0]"> <source xml:space="preserve">%n second(s)</source> - <target xml:space="preserve">%n second</target> </trans-unit> - <trans-unit id="_msg482[1]" approved="yes"> + <trans-unit id="_msg482[1]"> <source xml:space="preserve">%n second(s)</source> - <target xml:space="preserve">%n seconds</target> </trans-unit> </group> <group restype="x-gettext-plurals"> - <context-group purpose="location"><context context-type="linenumber">770</context></context-group> - <trans-unit id="_msg483[0]" approved="yes"> + <context-group purpose="location"><context context-type="linenumber">775</context></context-group> + <trans-unit id="_msg483[0]"> <source xml:space="preserve">%n minute(s)</source> - <target xml:space="preserve">%n minute</target> </trans-unit> - <trans-unit id="_msg483[1]" approved="yes"> + <trans-unit id="_msg483[1]"> <source xml:space="preserve">%n minute(s)</source> - <target xml:space="preserve">%n minutes</target> </trans-unit> </group> <group restype="x-gettext-plurals"> - <context-group purpose="location"><context context-type="linenumber">774</context></context-group> + <context-group purpose="location"><context context-type="linenumber">779</context></context-group> <trans-unit id="_msg484[0]"> <source xml:space="preserve">%n hour(s)</source> - <target xml:space="preserve" state="needs-review-translation">%n hour</target> </trans-unit> <trans-unit id="_msg484[1]"> <source xml:space="preserve">%n hour(s)</source> - <target xml:space="preserve" state="needs-review-translation">%n hours</target> </trans-unit> </group> <group restype="x-gettext-plurals"> - <context-group purpose="location"><context context-type="linenumber">778</context></context-group> + <context-group purpose="location"><context context-type="linenumber">783</context></context-group> <trans-unit id="_msg485[0]"> <source xml:space="preserve">%n day(s)</source> - <target xml:space="preserve" state="needs-review-translation">%n day</target> </trans-unit> <trans-unit id="_msg485[1]"> <source xml:space="preserve">%n day(s)</source> - <target xml:space="preserve" state="needs-review-translation">%n days</target> </trans-unit> </group> <group restype="x-gettext-plurals"> - <context-group purpose="location"><context context-type="linenumber">782</context></context-group> - <context-group purpose="location"><context context-type="linenumber">788</context></context-group> + <context-group purpose="location"><context context-type="linenumber">787</context></context-group> + <context-group purpose="location"><context context-type="linenumber">793</context></context-group> <trans-unit id="_msg486[0]"> <source xml:space="preserve">%n week(s)</source> - <target xml:space="preserve" state="needs-review-translation">%n week</target> </trans-unit> <trans-unit id="_msg486[1]"> <source xml:space="preserve">%n week(s)</source> - <target xml:space="preserve" state="needs-review-translation">%n weeks</target> </trans-unit> </group> <trans-unit id="_msg487"> <source xml:space="preserve">%1 and %2</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">788</context></context-group> + <context-group purpose="location"><context context-type="linenumber">793</context></context-group> </trans-unit> <group restype="x-gettext-plurals"> - <context-group purpose="location"><context context-type="linenumber">788</context></context-group> + <context-group purpose="location"><context context-type="linenumber">793</context></context-group> <trans-unit id="_msg488[0]"> <source xml:space="preserve">%n year(s)</source> - <target xml:space="preserve" state="needs-review-translation">%n year</target> </trans-unit> <trans-unit id="_msg488[1]"> <source xml:space="preserve">%n year(s)</source> - <target xml:space="preserve" state="needs-review-translation">%n years</target> </trans-unit> </group> <trans-unit id="_msg489"> <source xml:space="preserve">%1 B</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">796</context></context-group> + <context-group purpose="location"><context context-type="linenumber">801</context></context-group> </trans-unit> <trans-unit id="_msg490"> <source xml:space="preserve">%1 kB</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">798</context></context-group> + <context-group purpose="location"><context context-type="linenumber">803</context></context-group> </trans-unit> <trans-unit id="_msg491"> <source xml:space="preserve">%1 MB</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">800</context></context-group> + <context-group purpose="location"><context context-type="linenumber">805</context></context-group> </trans-unit> <trans-unit id="_msg492"> <source xml:space="preserve">%1 GB</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">802</context></context-group> + <context-group purpose="location"><context context-type="linenumber">807</context></context-group> </trans-unit> </group> </body></file> - <file original="../qrimagewidget.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../qrimagewidget.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="QRImageWidget"> <trans-unit id="_msg493"> <source xml:space="preserve">&Save Image…</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">30</context></context-group> </trans-unit> <trans-unit id="_msg494"> <source xml:space="preserve">&Copy Image</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">31</context></context-group> </trans-unit> <trans-unit id="_msg495"> <source xml:space="preserve">Resulting URI too long, try to reduce the text for label / message.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">42</context></context-group> </trans-unit> <trans-unit id="_msg496"> <source xml:space="preserve">Error encoding URI into QR Code.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">49</context></context-group> </trans-unit> <trans-unit id="_msg497"> <source xml:space="preserve">QR code support not available.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">90</context></context-group> </trans-unit> <trans-unit id="_msg498"> <source xml:space="preserve">Save QR Code</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">120</context></context-group> </trans-unit> <trans-unit id="_msg499"> <source xml:space="preserve">PNG Image</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">123</context></context-group> <note annotates="source" from="developer">Expanded name of the PNG file format. See: https://en.wikipedia.org/wiki/Portable_Network_Graphics.</note> </trans-unit> </group> </body></file> - <file original="../forms/debugwindow.ui" datatype="x-trolltech-designer-ui" source-language="en" target-language="en"><body> + <file original="../forms/debugwindow.ui" datatype="x-trolltech-designer-ui" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="RPCConsole"> - <trans-unit id="_msg500" approved="yes"> + <trans-unit id="_msg500"> <source xml:space="preserve">N/A</source> - <target xml:space="preserve">N/A</target> <context-group purpose="location"><context context-type="linenumber">75</context></context-group> <context-group purpose="location"><context context-type="linenumber">101</context></context-group> <context-group purpose="location"><context context-type="linenumber">127</context></context-group> @@ -2830,505 +2321,410 @@ If you are receiving this error you should request the merchant provide a BIP21 <context-group purpose="location"><context context-type="linenumber">1662</context></context-group> <context-group purpose="location"><context context-type="sourcefile">../rpcconsole.h</context><context context-type="linenumber">139</context></context-group> </trans-unit> - <trans-unit id="_msg501" approved="yes"> + <trans-unit id="_msg501"> <source xml:space="preserve">Client version</source> - <target xml:space="preserve">Client version</target> <context-group purpose="location"><context context-type="linenumber">65</context></context-group> </trans-unit> - <trans-unit id="_msg502" approved="yes"> + <trans-unit id="_msg502"> <source xml:space="preserve">&Information</source> - <target xml:space="preserve">&Information</target> <context-group purpose="location"><context context-type="linenumber">43</context></context-group> </trans-unit> <trans-unit id="_msg503"> <source xml:space="preserve">General</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">58</context></context-group> </trans-unit> <trans-unit id="_msg504"> <source xml:space="preserve">Datadir</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">114</context></context-group> </trans-unit> <trans-unit id="_msg505"> <source xml:space="preserve">To specify a non-default location of the data directory use the '%1' option.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">124</context></context-group> </trans-unit> <trans-unit id="_msg506"> <source xml:space="preserve">Blocksdir</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">143</context></context-group> </trans-unit> <trans-unit id="_msg507"> <source xml:space="preserve">To specify a non-default location of the blocks directory use the '%1' option.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">153</context></context-group> </trans-unit> - <trans-unit id="_msg508" approved="yes"> + <trans-unit id="_msg508"> <source xml:space="preserve">Startup time</source> - <target xml:space="preserve">Startup time</target> <context-group purpose="location"><context context-type="linenumber">172</context></context-group> </trans-unit> - <trans-unit id="_msg509" approved="yes"> + <trans-unit id="_msg509"> <source xml:space="preserve">Network</source> - <target xml:space="preserve">Network</target> <context-group purpose="location"><context context-type="linenumber">201</context></context-group> <context-group purpose="location"><context context-type="linenumber">1093</context></context-group> </trans-unit> <trans-unit id="_msg510"> <source xml:space="preserve">Name</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">208</context></context-group> </trans-unit> - <trans-unit id="_msg511" approved="yes"> + <trans-unit id="_msg511"> <source xml:space="preserve">Number of connections</source> - <target xml:space="preserve">Number of connections</target> <context-group purpose="location"><context context-type="linenumber">231</context></context-group> </trans-unit> - <trans-unit id="_msg512" approved="yes"> + <trans-unit id="_msg512"> <source xml:space="preserve">Block chain</source> - <target xml:space="preserve">Block chain</target> <context-group purpose="location"><context context-type="linenumber">260</context></context-group> </trans-unit> <trans-unit id="_msg513"> <source xml:space="preserve">Memory Pool</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">319</context></context-group> </trans-unit> <trans-unit id="_msg514"> <source xml:space="preserve">Current number of transactions</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">326</context></context-group> </trans-unit> <trans-unit id="_msg515"> <source xml:space="preserve">Memory usage</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">349</context></context-group> </trans-unit> <trans-unit id="_msg516"> <source xml:space="preserve">Wallet: </source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">443</context></context-group> </trans-unit> <trans-unit id="_msg517"> <source xml:space="preserve">(none)</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">454</context></context-group> </trans-unit> <trans-unit id="_msg518"> <source xml:space="preserve">&Reset</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">665</context></context-group> </trans-unit> <trans-unit id="_msg519"> <source xml:space="preserve">Received</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">745</context></context-group> <context-group purpose="location"><context context-type="linenumber">1453</context></context-group> </trans-unit> <trans-unit id="_msg520"> <source xml:space="preserve">Sent</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">825</context></context-group> <context-group purpose="location"><context context-type="linenumber">1430</context></context-group> </trans-unit> <trans-unit id="_msg521"> <source xml:space="preserve">&Peers</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">866</context></context-group> </trans-unit> <trans-unit id="_msg522"> <source xml:space="preserve">Banned peers</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">942</context></context-group> </trans-unit> <trans-unit id="_msg523"> <source xml:space="preserve">Select a peer to view detailed information.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1010</context></context-group> - <context-group purpose="location"><context context-type="sourcefile">../rpcconsole.cpp</context><context context-type="linenumber">1158</context></context-group> + <context-group purpose="location"><context context-type="sourcefile">../rpcconsole.cpp</context><context context-type="linenumber">1160</context></context-group> </trans-unit> <trans-unit id="_msg524"> <source xml:space="preserve">Version</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1116</context></context-group> </trans-unit> <trans-unit id="_msg525"> <source xml:space="preserve">Starting Block</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1240</context></context-group> </trans-unit> <trans-unit id="_msg526"> <source xml:space="preserve">Synced Headers</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1263</context></context-group> </trans-unit> <trans-unit id="_msg527"> <source xml:space="preserve">Synced Blocks</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1286</context></context-group> </trans-unit> <trans-unit id="_msg528"> <source xml:space="preserve">Last Transaction</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1361</context></context-group> </trans-unit> <trans-unit id="_msg529"> <source xml:space="preserve">The mapped Autonomous System used for diversifying peer selection.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1571</context></context-group> </trans-unit> <trans-unit id="_msg530"> <source xml:space="preserve">Mapped AS</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1574</context></context-group> </trans-unit> <trans-unit id="_msg531"> <source xml:space="preserve">Whether we relay addresses to this peer.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1597</context></context-group> <note annotates="source" from="developer">Tooltip text for the Address Relay field in the peer details area.</note> </trans-unit> <trans-unit id="_msg532"> <source xml:space="preserve">Address Relay</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1600</context></context-group> </trans-unit> <trans-unit id="_msg533"> <source xml:space="preserve">Total number of addresses processed, excluding those dropped due to rate-limiting.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1623</context></context-group> <note annotates="source" from="developer">Tooltip text for the Addresses Processed field in the peer details area.</note> </trans-unit> <trans-unit id="_msg534"> <source xml:space="preserve">Addresses Processed</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1626</context></context-group> </trans-unit> <trans-unit id="_msg535"> <source xml:space="preserve">Total number of addresses dropped due to rate-limiting.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1649</context></context-group> <note annotates="source" from="developer">Tooltip text for the Addresses Rate-Limited field in the peer details area.</note> </trans-unit> <trans-unit id="_msg536"> <source xml:space="preserve">Addresses Rate-Limited</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1652</context></context-group> </trans-unit> <trans-unit id="_msg537"> <source xml:space="preserve">User Agent</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">88</context></context-group> <context-group purpose="location"><context context-type="linenumber">1139</context></context-group> </trans-unit> <trans-unit id="_msg538"> <source xml:space="preserve">Node window</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">14</context></context-group> </trans-unit> <trans-unit id="_msg539"> <source xml:space="preserve">Current block height</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">267</context></context-group> </trans-unit> <trans-unit id="_msg540"> <source xml:space="preserve">Open the %1 debug log file from the current data directory. This can take a few seconds for large log files.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">397</context></context-group> </trans-unit> <trans-unit id="_msg541"> <source xml:space="preserve">Decrease font size</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">475</context></context-group> </trans-unit> <trans-unit id="_msg542"> <source xml:space="preserve">Increase font size</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">495</context></context-group> </trans-unit> <trans-unit id="_msg543"> <source xml:space="preserve">Permissions</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1041</context></context-group> </trans-unit> <trans-unit id="_msg544"> <source xml:space="preserve">The direction and type of peer connection: %1</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1064</context></context-group> </trans-unit> <trans-unit id="_msg545"> <source xml:space="preserve">Direction/Type</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1067</context></context-group> </trans-unit> <trans-unit id="_msg546"> <source xml:space="preserve">The network protocol this peer is connected through: IPv4, IPv6, Onion, I2P, or CJDNS.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1090</context></context-group> </trans-unit> <trans-unit id="_msg547"> <source xml:space="preserve">Services</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1162</context></context-group> </trans-unit> <trans-unit id="_msg548"> <source xml:space="preserve">Whether the peer requested us to relay transactions.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1188</context></context-group> </trans-unit> <trans-unit id="_msg549"> <source xml:space="preserve">Wants Tx Relay</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1191</context></context-group> </trans-unit> <trans-unit id="_msg550"> <source xml:space="preserve">High bandwidth BIP152 compact block relay: %1</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1214</context></context-group> </trans-unit> <trans-unit id="_msg551"> <source xml:space="preserve">High Bandwidth</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1217</context></context-group> </trans-unit> <trans-unit id="_msg552"> <source xml:space="preserve">Connection Time</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1309</context></context-group> </trans-unit> <trans-unit id="_msg553"> <source xml:space="preserve">Elapsed time since a novel block passing initial validity checks was received from this peer.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1332</context></context-group> </trans-unit> <trans-unit id="_msg554"> <source xml:space="preserve">Last Block</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1335</context></context-group> </trans-unit> <trans-unit id="_msg555"> <source xml:space="preserve">Elapsed time since a novel transaction accepted into our mempool was received from this peer.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1358</context></context-group> <note annotates="source" from="developer">Tooltip text for the Last Transaction field in the peer details area.</note> </trans-unit> <trans-unit id="_msg556"> <source xml:space="preserve">Last Send</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1384</context></context-group> </trans-unit> <trans-unit id="_msg557"> <source xml:space="preserve">Last Receive</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1407</context></context-group> </trans-unit> <trans-unit id="_msg558"> <source xml:space="preserve">Ping Time</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1476</context></context-group> </trans-unit> <trans-unit id="_msg559"> <source xml:space="preserve">The duration of a currently outstanding ping.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1499</context></context-group> </trans-unit> <trans-unit id="_msg560"> <source xml:space="preserve">Ping Wait</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1502</context></context-group> </trans-unit> <trans-unit id="_msg561"> <source xml:space="preserve">Min Ping</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1525</context></context-group> </trans-unit> <trans-unit id="_msg562"> <source xml:space="preserve">Time Offset</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1548</context></context-group> </trans-unit> - <trans-unit id="_msg563" approved="yes"> + <trans-unit id="_msg563"> <source xml:space="preserve">Last block time</source> - <target xml:space="preserve">Last block time</target> <context-group purpose="location"><context context-type="linenumber">290</context></context-group> </trans-unit> - <trans-unit id="_msg564" approved="yes"> + <trans-unit id="_msg564"> <source xml:space="preserve">&Open</source> - <target xml:space="preserve">&Open</target> <context-group purpose="location"><context context-type="linenumber">400</context></context-group> </trans-unit> - <trans-unit id="_msg565" approved="yes"> + <trans-unit id="_msg565"> <source xml:space="preserve">&Console</source> - <target xml:space="preserve">&Console</target> <context-group purpose="location"><context context-type="linenumber">426</context></context-group> </trans-unit> <trans-unit id="_msg566"> <source xml:space="preserve">&Network Traffic</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">613</context></context-group> </trans-unit> <trans-unit id="_msg567"> <source xml:space="preserve">Totals</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">681</context></context-group> </trans-unit> - <trans-unit id="_msg568" approved="yes"> + <trans-unit id="_msg568"> <source xml:space="preserve">Debug log file</source> - <target xml:space="preserve">Debug log file</target> <context-group purpose="location"><context context-type="linenumber">390</context></context-group> </trans-unit> - <trans-unit id="_msg569" approved="yes"> + <trans-unit id="_msg569"> <source xml:space="preserve">Clear console</source> - <target xml:space="preserve">Clear console</target> <context-group purpose="location"><context context-type="linenumber">515</context></context-group> </trans-unit> </group> </body></file> - <file original="../rpcconsole.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../rpcconsole.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="RPCConsole"> <trans-unit id="_msg570"> <source xml:space="preserve">In:</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">957</context></context-group> + <context-group purpose="location"><context context-type="linenumber">959</context></context-group> </trans-unit> <trans-unit id="_msg571"> <source xml:space="preserve">Out:</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">958</context></context-group> + <context-group purpose="location"><context context-type="linenumber">960</context></context-group> </trans-unit> <trans-unit id="_msg572"> <source xml:space="preserve">Inbound: initiated by peer</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">501</context></context-group> + <context-group purpose="location"><context context-type="linenumber">503</context></context-group> <note annotates="source" from="developer">Explanatory text for an inbound peer connection.</note> </trans-unit> <trans-unit id="_msg573"> <source xml:space="preserve">Outbound Full Relay: default</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">505</context></context-group> + <context-group purpose="location"><context context-type="linenumber">507</context></context-group> <note annotates="source" from="developer">Explanatory text for an outbound peer connection that relays all network information. This is the default behavior for outbound connections.</note> </trans-unit> <trans-unit id="_msg574"> <source xml:space="preserve">Outbound Block Relay: does not relay transactions or addresses</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">508</context></context-group> + <context-group purpose="location"><context context-type="linenumber">510</context></context-group> <note annotates="source" from="developer">Explanatory text for an outbound peer connection that relays network information about blocks and not transactions or addresses.</note> </trans-unit> <trans-unit id="_msg575"> <source xml:space="preserve">Outbound Manual: added using RPC %1 or %2/%3 configuration options</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">513</context></context-group> + <context-group purpose="location"><context context-type="linenumber">515</context></context-group> <note annotates="source" from="developer">Explanatory text for an outbound peer connection that was established manually through one of several methods. The numbered arguments are stand-ins for the methods available to establish manual connections.</note> </trans-unit> <trans-unit id="_msg576"> <source xml:space="preserve">Outbound Feeler: short-lived, for testing addresses</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">519</context></context-group> + <context-group purpose="location"><context context-type="linenumber">521</context></context-group> <note annotates="source" from="developer">Explanatory text for a short-lived outbound peer connection that is used to test the aliveness of known addresses.</note> </trans-unit> <trans-unit id="_msg577"> <source xml:space="preserve">Outbound Address Fetch: short-lived, for soliciting addresses</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">522</context></context-group> + <context-group purpose="location"><context context-type="linenumber">524</context></context-group> <note annotates="source" from="developer">Explanatory text for a short-lived outbound peer connection that is used to request addresses from a peer.</note> </trans-unit> <trans-unit id="_msg578"> <source xml:space="preserve">we selected the peer for high bandwidth relay</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">526</context></context-group> + <context-group purpose="location"><context context-type="linenumber">528</context></context-group> </trans-unit> <trans-unit id="_msg579"> <source xml:space="preserve">the peer selected us for high bandwidth relay</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">527</context></context-group> + <context-group purpose="location"><context context-type="linenumber">529</context></context-group> </trans-unit> <trans-unit id="_msg580"> <source xml:space="preserve">no high bandwidth relay selected</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">528</context></context-group> + <context-group purpose="location"><context context-type="linenumber">530</context></context-group> </trans-unit> <trans-unit id="_msg581"> <source xml:space="preserve">Ctrl++</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">541</context></context-group> + <context-group purpose="location"><context context-type="linenumber">543</context></context-group> <note annotates="source" from="developer">Main shortcut to increase the RPC console font size.</note> </trans-unit> <trans-unit id="_msg582"> <source xml:space="preserve">Ctrl+=</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">543</context></context-group> + <context-group purpose="location"><context context-type="linenumber">545</context></context-group> <note annotates="source" from="developer">Secondary shortcut to increase the RPC console font size.</note> </trans-unit> <trans-unit id="_msg583"> <source xml:space="preserve">Ctrl+-</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">547</context></context-group> + <context-group purpose="location"><context context-type="linenumber">549</context></context-group> <note annotates="source" from="developer">Main shortcut to decrease the RPC console font size.</note> </trans-unit> <trans-unit id="_msg584"> <source xml:space="preserve">Ctrl+_</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">549</context></context-group> + <context-group purpose="location"><context context-type="linenumber">551</context></context-group> <note annotates="source" from="developer">Secondary shortcut to decrease the RPC console font size.</note> </trans-unit> <trans-unit id="_msg585"> <source xml:space="preserve">&Copy address</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">700</context></context-group> + <context-group purpose="location"><context context-type="linenumber">702</context></context-group> <note annotates="source" from="developer">Context menu action to copy the address of a peer.</note> </trans-unit> <trans-unit id="_msg586"> <source xml:space="preserve">&Disconnect</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">704</context></context-group> + <context-group purpose="location"><context context-type="linenumber">706</context></context-group> </trans-unit> <trans-unit id="_msg587"> <source xml:space="preserve">1 &hour</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">705</context></context-group> + <context-group purpose="location"><context context-type="linenumber">707</context></context-group> </trans-unit> <trans-unit id="_msg588"> <source xml:space="preserve">1 d&ay</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">706</context></context-group> + <context-group purpose="location"><context context-type="linenumber">708</context></context-group> </trans-unit> <trans-unit id="_msg589"> <source xml:space="preserve">1 &week</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">707</context></context-group> + <context-group purpose="location"><context context-type="linenumber">709</context></context-group> </trans-unit> <trans-unit id="_msg590"> <source xml:space="preserve">1 &year</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">708</context></context-group> + <context-group purpose="location"><context context-type="linenumber">710</context></context-group> </trans-unit> <trans-unit id="_msg591"> <source xml:space="preserve">&Copy IP/Netmask</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">733</context></context-group> + <context-group purpose="location"><context context-type="linenumber">735</context></context-group> <note annotates="source" from="developer">Context menu action to copy the IP/Netmask of a banned peer. IP/Netmask is the combination of a peer's IP address and its Netmask. For IP address, see: https://en.wikipedia.org/wiki/IP_address.</note> </trans-unit> <trans-unit id="_msg592"> <source xml:space="preserve">&Unban</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">737</context></context-group> + <context-group purpose="location"><context context-type="linenumber">739</context></context-group> </trans-unit> <trans-unit id="_msg593"> <source xml:space="preserve">Network activity disabled</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">961</context></context-group> + <context-group purpose="location"><context context-type="linenumber">963</context></context-group> </trans-unit> <trans-unit id="_msg594"> <source xml:space="preserve">Executing command without any wallet</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">1038</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1040</context></context-group> </trans-unit> <trans-unit id="_msg595"> <source xml:space="preserve">Executing command using "%1" wallet</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">1036</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1038</context></context-group> </trans-unit> <trans-unit id="_msg596"> <source xml:space="preserve">Welcome to the %1 RPC console. @@ -3338,1030 +2734,840 @@ Type %5 for an overview of available commands. For more information on using this console, type %6. %7WARNING: Scammers have been active, telling users to type commands here, stealing their wallet contents. Do not use this console without fully understanding the ramifications of a command.%8</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">891</context></context-group> + <context-group purpose="location"><context context-type="linenumber">893</context></context-group> <note annotates="source" from="developer">RPC console welcome message. Placeholders %7 and %8 are style tags for the warning content, and they are not space separated from the rest of the text intentionally.</note> </trans-unit> <trans-unit id="_msg597"> <source xml:space="preserve">Executing…</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">1046</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1048</context></context-group> <note annotates="source" from="developer">A console message indicating an entered command is currently being executed.</note> </trans-unit> <trans-unit id="_msg598"> <source xml:space="preserve">(peer: %1)</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">1164</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1166</context></context-group> </trans-unit> <trans-unit id="_msg599"> <source xml:space="preserve">via %1</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">1166</context></context-group> + <context-group purpose="location"><context context-type="linenumber">1168</context></context-group> </trans-unit> </group> </body></file> - <file original="../rpcconsole.h" datatype="c" source-language="en" target-language="en"><body> + <file original="../rpcconsole.h" datatype="c" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="RPCConsole"> <trans-unit id="_msg600"> <source xml:space="preserve">Yes</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">138</context></context-group> </trans-unit> <trans-unit id="_msg601"> <source xml:space="preserve">No</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">138</context></context-group> </trans-unit> <trans-unit id="_msg602"> <source xml:space="preserve">To</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">138</context></context-group> </trans-unit> <trans-unit id="_msg603"> <source xml:space="preserve">From</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">138</context></context-group> </trans-unit> <trans-unit id="_msg604"> <source xml:space="preserve">Ban for</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">139</context></context-group> </trans-unit> <trans-unit id="_msg605"> <source xml:space="preserve">Never</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">180</context></context-group> </trans-unit> <trans-unit id="_msg606"> <source xml:space="preserve">Unknown</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">139</context></context-group> </trans-unit> </group> </body></file> - <file original="../forms/receivecoinsdialog.ui" datatype="x-trolltech-designer-ui" source-language="en" target-language="en"><body> + <file original="../forms/receivecoinsdialog.ui" datatype="x-trolltech-designer-ui" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="ReceiveCoinsDialog"> <trans-unit id="_msg607"> <source xml:space="preserve">&Amount:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">37</context></context-group> </trans-unit> <trans-unit id="_msg608"> <source xml:space="preserve">&Label:</source> - <target xml:space="preserve" state="needs-review-translation">&Label:</target> <context-group purpose="location"><context context-type="linenumber">83</context></context-group> </trans-unit> <trans-unit id="_msg609"> <source xml:space="preserve">&Message:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">53</context></context-group> </trans-unit> <trans-unit id="_msg610"> <source xml:space="preserve">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 Bitcoin network.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">50</context></context-group> </trans-unit> <trans-unit id="_msg611"> <source xml:space="preserve">An optional label to associate with the new receiving address.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">80</context></context-group> </trans-unit> <trans-unit id="_msg612"> <source xml:space="preserve">Use this form to request payments. All fields are <b>optional</b>.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">73</context></context-group> </trans-unit> <trans-unit id="_msg613"> <source xml:space="preserve">An optional amount to request. Leave this empty or zero to not request a specific amount.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">34</context></context-group> <context-group purpose="location"><context context-type="linenumber">193</context></context-group> </trans-unit> <trans-unit id="_msg614"> <source xml:space="preserve">An optional label to associate with the new receiving address (used by you to identify an invoice). It is also attached to the payment request.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">66</context></context-group> </trans-unit> <trans-unit id="_msg615"> <source xml:space="preserve">An optional message that is attached to the payment request and may be displayed to the sender.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">96</context></context-group> </trans-unit> <trans-unit id="_msg616"> <source xml:space="preserve">&Create new receiving address</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">111</context></context-group> </trans-unit> <trans-unit id="_msg617"> <source xml:space="preserve">Clear all fields of the form.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">134</context></context-group> </trans-unit> <trans-unit id="_msg618"> <source xml:space="preserve">Clear</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">137</context></context-group> </trans-unit> <trans-unit id="_msg619"> <source xml:space="preserve">Requested payments history</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">273</context></context-group> </trans-unit> <trans-unit id="_msg620"> <source xml:space="preserve">Show the selected request (does the same as double clicking an entry)</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">298</context></context-group> </trans-unit> <trans-unit id="_msg621"> <source xml:space="preserve">Show</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">301</context></context-group> </trans-unit> <trans-unit id="_msg622"> <source xml:space="preserve">Remove the selected entries from the list</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">318</context></context-group> </trans-unit> <trans-unit id="_msg623"> <source xml:space="preserve">Remove</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">321</context></context-group> </trans-unit> </group> </body></file> - <file original="../receivecoinsdialog.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../receivecoinsdialog.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="ReceiveCoinsDialog"> <trans-unit id="_msg624"> <source xml:space="preserve">Copy &URI</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">47</context></context-group> </trans-unit> <trans-unit id="_msg625"> <source xml:space="preserve">&Copy address</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">48</context></context-group> </trans-unit> <trans-unit id="_msg626"> <source xml:space="preserve">Copy &label</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">49</context></context-group> </trans-unit> <trans-unit id="_msg627"> <source xml:space="preserve">Copy &message</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">50</context></context-group> </trans-unit> <trans-unit id="_msg628"> <source xml:space="preserve">Copy &amount</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">51</context></context-group> </trans-unit> <trans-unit id="_msg629"> <source xml:space="preserve">Could not unlock wallet.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">176</context></context-group> </trans-unit> <trans-unit id="_msg630"> <source xml:space="preserve">Could not generate new %1 address</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">181</context></context-group> </trans-unit> </group> </body></file> - <file original="../forms/receiverequestdialog.ui" datatype="x-trolltech-designer-ui" source-language="en" target-language="en"><body> + <file original="../forms/receiverequestdialog.ui" datatype="x-trolltech-designer-ui" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="ReceiveRequestDialog"> <trans-unit id="_msg631"> <source xml:space="preserve">Request payment to …</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">14</context></context-group> </trans-unit> <trans-unit id="_msg632"> <source xml:space="preserve">Address:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">90</context></context-group> </trans-unit> <trans-unit id="_msg633"> <source xml:space="preserve">Amount:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">119</context></context-group> </trans-unit> <trans-unit id="_msg634"> <source xml:space="preserve">Label:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">148</context></context-group> </trans-unit> <trans-unit id="_msg635"> <source xml:space="preserve">Message:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">180</context></context-group> </trans-unit> <trans-unit id="_msg636"> <source xml:space="preserve">Wallet:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">212</context></context-group> </trans-unit> <trans-unit id="_msg637"> <source xml:space="preserve">Copy &URI</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">240</context></context-group> </trans-unit> <trans-unit id="_msg638"> <source xml:space="preserve">Copy &Address</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">250</context></context-group> </trans-unit> <trans-unit id="_msg639"> <source xml:space="preserve">&Verify</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">260</context></context-group> </trans-unit> <trans-unit id="_msg640"> <source xml:space="preserve">Verify this address on e.g. a hardware wallet screen</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">263</context></context-group> </trans-unit> <trans-unit id="_msg641"> <source xml:space="preserve">&Save Image…</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">273</context></context-group> </trans-unit> <trans-unit id="_msg642"> <source xml:space="preserve">Payment information</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">39</context></context-group> </trans-unit> </group> </body></file> - <file original="../receiverequestdialog.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../receiverequestdialog.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="ReceiveRequestDialog"> <trans-unit id="_msg643"> <source xml:space="preserve">Request payment to %1</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">49</context></context-group> </trans-unit> </group> </body></file> - <file original="../recentrequeststablemodel.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../recentrequeststablemodel.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="RecentRequestsTableModel"> <trans-unit id="_msg644"> <source xml:space="preserve">Date</source> - <target xml:space="preserve" state="needs-review-translation">Date</target> <context-group purpose="location"><context context-type="linenumber">32</context></context-group> </trans-unit> <trans-unit id="_msg645"> <source xml:space="preserve">Label</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">32</context></context-group> </trans-unit> <trans-unit id="_msg646"> <source xml:space="preserve">Message</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">32</context></context-group> </trans-unit> <trans-unit id="_msg647"> <source xml:space="preserve">(no label)</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">73</context></context-group> </trans-unit> <trans-unit id="_msg648"> <source xml:space="preserve">(no message)</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">82</context></context-group> </trans-unit> <trans-unit id="_msg649"> <source xml:space="preserve">(no amount requested)</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">90</context></context-group> </trans-unit> <trans-unit id="_msg650"> <source xml:space="preserve">Requested</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">133</context></context-group> </trans-unit> </group> </body></file> - <file original="../forms/sendcoinsdialog.ui" datatype="x-trolltech-designer-ui" source-language="en" target-language="en"><body> + <file original="../forms/sendcoinsdialog.ui" datatype="x-trolltech-designer-ui" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="SendCoinsDialog"> - <trans-unit id="_msg651" approved="yes"> + <trans-unit id="_msg651"> <source xml:space="preserve">Send Coins</source> - <target xml:space="preserve">Send Coins</target> <context-group purpose="location"><context context-type="linenumber">14</context></context-group> - <context-group purpose="location"><context context-type="sourcefile">../sendcoinsdialog.cpp</context><context context-type="linenumber">749</context></context-group> + <context-group purpose="location"><context context-type="sourcefile">../sendcoinsdialog.cpp</context><context context-type="linenumber">752</context></context-group> </trans-unit> <trans-unit id="_msg652"> <source xml:space="preserve">Coin Control Features</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">90</context></context-group> </trans-unit> <trans-unit id="_msg653"> <source xml:space="preserve">automatically selected</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">120</context></context-group> </trans-unit> <trans-unit id="_msg654"> <source xml:space="preserve">Insufficient funds!</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">139</context></context-group> </trans-unit> <trans-unit id="_msg655"> <source xml:space="preserve">Quantity:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">228</context></context-group> </trans-unit> <trans-unit id="_msg656"> <source xml:space="preserve">Bytes:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">263</context></context-group> </trans-unit> <trans-unit id="_msg657"> <source xml:space="preserve">Amount:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">311</context></context-group> </trans-unit> <trans-unit id="_msg658"> <source xml:space="preserve">Fee:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">391</context></context-group> </trans-unit> <trans-unit id="_msg659"> <source xml:space="preserve">After Fee:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">442</context></context-group> </trans-unit> <trans-unit id="_msg660"> <source xml:space="preserve">Change:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">474</context></context-group> </trans-unit> <trans-unit id="_msg661"> <source xml:space="preserve">If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">518</context></context-group> </trans-unit> <trans-unit id="_msg662"> <source xml:space="preserve">Custom change address</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">521</context></context-group> </trans-unit> <trans-unit id="_msg663"> <source xml:space="preserve">Transaction Fee:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">727</context></context-group> </trans-unit> <trans-unit id="_msg664"> <source xml:space="preserve">Using the fallbackfee can result in sending a transaction that will take several hours or days (or never) to confirm. Consider choosing your fee manually or wait until you have validated the complete chain.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">765</context></context-group> </trans-unit> <trans-unit id="_msg665"> <source xml:space="preserve">Warning: Fee estimation is currently not possible.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">774</context></context-group> </trans-unit> <trans-unit id="_msg666"> <source xml:space="preserve">per kilobyte</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">856</context></context-group> </trans-unit> <trans-unit id="_msg667"> <source xml:space="preserve">Hide</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">803</context></context-group> </trans-unit> <trans-unit id="_msg668"> <source xml:space="preserve">Recommended:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">915</context></context-group> </trans-unit> <trans-unit id="_msg669"> <source xml:space="preserve">Custom:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">945</context></context-group> </trans-unit> - <trans-unit id="_msg670" approved="yes"> + <trans-unit id="_msg670"> <source xml:space="preserve">Send to multiple recipients at once</source> - <target xml:space="preserve">Send to multiple recipients at once</target> <context-group purpose="location"><context context-type="linenumber">1160</context></context-group> </trans-unit> - <trans-unit id="_msg671" approved="yes"> + <trans-unit id="_msg671"> <source xml:space="preserve">Add &Recipient</source> - <target xml:space="preserve">Add &Recipient</target> <context-group purpose="location"><context context-type="linenumber">1163</context></context-group> </trans-unit> <trans-unit id="_msg672"> <source xml:space="preserve">Clear all fields of the form.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1143</context></context-group> </trans-unit> <trans-unit id="_msg673"> <source xml:space="preserve">Inputs…</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">110</context></context-group> </trans-unit> <trans-unit id="_msg674"> <source xml:space="preserve">Dust:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">343</context></context-group> </trans-unit> <trans-unit id="_msg675"> <source xml:space="preserve">Choose…</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">741</context></context-group> </trans-unit> <trans-unit id="_msg676"> <source xml:space="preserve">Hide transaction fee settings</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">800</context></context-group> </trans-unit> <trans-unit id="_msg677"> <source xml:space="preserve">Specify a custom fee per kB (1,000 bytes) of the transaction's virtual size. Note: Since the fee is calculated on a per-byte basis, a fee rate of "100 satoshis per kvB" for a transaction size of 500 virtual bytes (half of 1 kvB) would ultimately yield a fee of only 50 satoshis.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">851</context></context-group> </trans-unit> <trans-unit id="_msg678"> <source xml:space="preserve">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 bitcoin transactions than the network can process.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">886</context></context-group> </trans-unit> <trans-unit id="_msg679"> <source xml:space="preserve">A too low fee might result in a never confirming transaction (read the tooltip)</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">889</context></context-group> </trans-unit> <trans-unit id="_msg680"> <source xml:space="preserve">(Smart fee not initialized yet. This usually takes a few blocks…)</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">994</context></context-group> </trans-unit> <trans-unit id="_msg681"> <source xml:space="preserve">Confirmation time target:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1020</context></context-group> </trans-unit> <trans-unit id="_msg682"> <source xml:space="preserve">Enable Replace-By-Fee</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1078</context></context-group> </trans-unit> <trans-unit id="_msg683"> <source xml:space="preserve">With Replace-By-Fee (BIP-125) you can increase a transaction's fee after it is sent. Without this, a higher fee may be recommended to compensate for increased transaction delay risk.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1081</context></context-group> </trans-unit> - <trans-unit id="_msg684" approved="yes"> + <trans-unit id="_msg684"> <source xml:space="preserve">Clear &All</source> - <target xml:space="preserve">Clear &All</target> <context-group purpose="location"><context context-type="linenumber">1146</context></context-group> </trans-unit> - <trans-unit id="_msg685" approved="yes"> + <trans-unit id="_msg685"> <source xml:space="preserve">Balance:</source> - <target xml:space="preserve">Balance:</target> <context-group purpose="location"><context context-type="linenumber">1201</context></context-group> </trans-unit> - <trans-unit id="_msg686" approved="yes"> + <trans-unit id="_msg686"> <source xml:space="preserve">Confirm the send action</source> - <target xml:space="preserve">Confirm the send action</target> <context-group purpose="location"><context context-type="linenumber">1117</context></context-group> </trans-unit> - <trans-unit id="_msg687" approved="yes"> + <trans-unit id="_msg687"> <source xml:space="preserve">S&end</source> - <target xml:space="preserve">S&end</target> <context-group purpose="location"><context context-type="linenumber">1120</context></context-group> </trans-unit> </group> </body></file> - <file original="../sendcoinsdialog.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../sendcoinsdialog.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="SendCoinsDialog"> <trans-unit id="_msg688"> <source xml:space="preserve">Copy quantity</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">96</context></context-group> + <context-group purpose="location"><context context-type="linenumber">99</context></context-group> </trans-unit> <trans-unit id="_msg689"> <source xml:space="preserve">Copy amount</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">97</context></context-group> + <context-group purpose="location"><context context-type="linenumber">100</context></context-group> </trans-unit> <trans-unit id="_msg690"> <source xml:space="preserve">Copy fee</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">98</context></context-group> + <context-group purpose="location"><context context-type="linenumber">101</context></context-group> </trans-unit> <trans-unit id="_msg691"> <source xml:space="preserve">Copy after fee</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">99</context></context-group> + <context-group purpose="location"><context context-type="linenumber">102</context></context-group> </trans-unit> <trans-unit id="_msg692"> <source xml:space="preserve">Copy bytes</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">100</context></context-group> + <context-group purpose="location"><context context-type="linenumber">103</context></context-group> </trans-unit> <trans-unit id="_msg693"> <source xml:space="preserve">Copy dust</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">101</context></context-group> + <context-group purpose="location"><context context-type="linenumber">104</context></context-group> </trans-unit> <trans-unit id="_msg694"> <source xml:space="preserve">Copy change</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">102</context></context-group> + <context-group purpose="location"><context context-type="linenumber">105</context></context-group> </trans-unit> <trans-unit id="_msg695"> <source xml:space="preserve">%1 (%2 blocks)</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">178</context></context-group> + <context-group purpose="location"><context context-type="linenumber">181</context></context-group> </trans-unit> <trans-unit id="_msg696"> <source xml:space="preserve">Sign on device</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">208</context></context-group> + <context-group purpose="location"><context context-type="linenumber">211</context></context-group> <note annotates="source" from="developer">"device" usually means a hardware wallet.</note> </trans-unit> <trans-unit id="_msg697"> <source xml:space="preserve">Connect your hardware wallet first.</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">211</context></context-group> + <context-group purpose="location"><context context-type="linenumber">214</context></context-group> </trans-unit> <trans-unit id="_msg698"> <source xml:space="preserve">Set external signer script path in Options -> Wallet</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">215</context></context-group> + <context-group purpose="location"><context context-type="linenumber">218</context></context-group> <note annotates="source" from="developer">"External signer" means using devices such as hardware wallets.</note> </trans-unit> <trans-unit id="_msg699"> <source xml:space="preserve">Cr&eate Unsigned</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">218</context></context-group> + <context-group purpose="location"><context context-type="linenumber">221</context></context-group> </trans-unit> <trans-unit id="_msg700"> <source xml:space="preserve">Creates a Partially Signed Bitcoin Transaction (PSBT) for use with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">219</context></context-group> + <context-group purpose="location"><context context-type="linenumber">222</context></context-group> </trans-unit> <trans-unit id="_msg701"> <source xml:space="preserve"> from wallet '%1'</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">309</context></context-group> + <context-group purpose="location"><context context-type="linenumber">312</context></context-group> </trans-unit> <trans-unit id="_msg702"> <source xml:space="preserve">%1 to '%2'</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">320</context></context-group> + <context-group purpose="location"><context context-type="linenumber">323</context></context-group> </trans-unit> <trans-unit id="_msg703"> <source xml:space="preserve">%1 to %2</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">325</context></context-group> + <context-group purpose="location"><context context-type="linenumber">328</context></context-group> </trans-unit> <trans-unit id="_msg704"> <source xml:space="preserve">To review recipient list click "Show Details…"</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">392</context></context-group> + <context-group purpose="location"><context context-type="linenumber">395</context></context-group> </trans-unit> <trans-unit id="_msg705"> <source xml:space="preserve">Sign failed</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">436</context></context-group> + <context-group purpose="location"><context context-type="linenumber">439</context></context-group> </trans-unit> <trans-unit id="_msg706"> <source xml:space="preserve">External signer not found</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">442</context></context-group> + <context-group purpose="location"><context context-type="linenumber">445</context></context-group> <note annotates="source" from="developer">"External signer" means using devices such as hardware wallets.</note> </trans-unit> <trans-unit id="_msg707"> <source xml:space="preserve">External signer failure</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">448</context></context-group> + <context-group purpose="location"><context context-type="linenumber">451</context></context-group> <note annotates="source" from="developer">"External signer" means using devices such as hardware wallets.</note> </trans-unit> <trans-unit id="_msg708"> <source xml:space="preserve">Save Transaction Data</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">506</context></context-group> + <context-group purpose="location"><context context-type="linenumber">509</context></context-group> </trans-unit> <trans-unit id="_msg709"> <source xml:space="preserve">Partially Signed Transaction (Binary)</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">508</context></context-group> + <context-group purpose="location"><context context-type="linenumber">511</context></context-group> <note annotates="source" from="developer">Expanded name of the binary PSBT file format. See: BIP 174.</note> </trans-unit> <trans-unit id="_msg710"> <source xml:space="preserve">PSBT saved</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">515</context></context-group> + <context-group purpose="location"><context context-type="linenumber">518</context></context-group> </trans-unit> <trans-unit id="_msg711"> <source xml:space="preserve">External balance:</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">691</context></context-group> + <context-group purpose="location"><context context-type="linenumber">694</context></context-group> </trans-unit> <trans-unit id="_msg712"> <source xml:space="preserve">or</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">388</context></context-group> + <context-group purpose="location"><context context-type="linenumber">391</context></context-group> </trans-unit> <trans-unit id="_msg713"> <source xml:space="preserve">You can increase the fee later (signals Replace-By-Fee, BIP-125).</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">369</context></context-group> + <context-group purpose="location"><context context-type="linenumber">372</context></context-group> </trans-unit> <trans-unit id="_msg714"> <source xml:space="preserve">Please, review your transaction proposal. This will produce a Partially Signed Bitcoin Transaction (PSBT) which you can save or copy and then sign with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">339</context></context-group> + <context-group purpose="location"><context context-type="linenumber">342</context></context-group> <note annotates="source" from="developer">Text to inform a user attempting to create a transaction of their current options. At this stage, a user can only create a PSBT. This string is displayed when private keys are disabled and an external signer is not available.</note> </trans-unit> <trans-unit id="_msg715"> <source xml:space="preserve">Do you want to create this transaction?</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">333</context></context-group> + <context-group purpose="location"><context context-type="linenumber">336</context></context-group> <note annotates="source" from="developer">Message displayed when attempting to create a transaction. Cautionary text to prompt the user to verify that the displayed transaction details represent the transaction the user intends to create.</note> </trans-unit> <trans-unit id="_msg716"> <source xml:space="preserve">Please, review your transaction. You can create and send this transaction or create a Partially Signed Bitcoin Transaction (PSBT), which you can save or copy and then sign with, e.g., an offline %1 wallet, or a PSBT-compatible hardware wallet.</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">344</context></context-group> + <context-group purpose="location"><context context-type="linenumber">347</context></context-group> <note annotates="source" from="developer">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.</note> </trans-unit> <trans-unit id="_msg717"> <source xml:space="preserve">Please, review your transaction.</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">347</context></context-group> + <context-group purpose="location"><context context-type="linenumber">350</context></context-group> <note annotates="source" from="developer">Text to prompt a user to review the details of the transaction they are attempting to send.</note> </trans-unit> <trans-unit id="_msg718"> <source xml:space="preserve">Transaction fee</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">355</context></context-group> + <context-group purpose="location"><context context-type="linenumber">358</context></context-group> </trans-unit> <trans-unit id="_msg719"> <source xml:space="preserve">Not signalling Replace-By-Fee, BIP-125.</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">371</context></context-group> + <context-group purpose="location"><context context-type="linenumber">374</context></context-group> </trans-unit> <trans-unit id="_msg720"> <source xml:space="preserve">Total Amount</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">385</context></context-group> + <context-group purpose="location"><context context-type="linenumber">388</context></context-group> </trans-unit> <trans-unit id="_msg721"> <source xml:space="preserve">Confirm send coins</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">410</context></context-group> + <context-group purpose="location"><context context-type="linenumber">413</context></context-group> </trans-unit> <trans-unit id="_msg722"> <source xml:space="preserve">Watch-only balance:</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">694</context></context-group> + <context-group purpose="location"><context context-type="linenumber">697</context></context-group> </trans-unit> <trans-unit id="_msg723"> <source xml:space="preserve">The recipient address is not valid. Please recheck.</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">718</context></context-group> + <context-group purpose="location"><context context-type="linenumber">721</context></context-group> </trans-unit> <trans-unit id="_msg724"> <source xml:space="preserve">The amount to pay must be larger than 0.</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">721</context></context-group> + <context-group purpose="location"><context context-type="linenumber">724</context></context-group> </trans-unit> <trans-unit id="_msg725"> <source xml:space="preserve">The amount exceeds your balance.</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">724</context></context-group> + <context-group purpose="location"><context context-type="linenumber">727</context></context-group> </trans-unit> <trans-unit id="_msg726"> <source xml:space="preserve">The total exceeds your balance when the %1 transaction fee is included.</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">727</context></context-group> + <context-group purpose="location"><context context-type="linenumber">730</context></context-group> </trans-unit> <trans-unit id="_msg727"> <source xml:space="preserve">Duplicate address found: addresses should only be used once each.</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">730</context></context-group> + <context-group purpose="location"><context context-type="linenumber">733</context></context-group> </trans-unit> <trans-unit id="_msg728"> <source xml:space="preserve">Transaction creation failed!</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">733</context></context-group> + <context-group purpose="location"><context context-type="linenumber">736</context></context-group> </trans-unit> <trans-unit id="_msg729"> <source xml:space="preserve">A fee higher than %1 is considered an absurdly high fee.</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">737</context></context-group> + <context-group purpose="location"><context context-type="linenumber">740</context></context-group> </trans-unit> <trans-unit id="_msg730"> <source xml:space="preserve">Payment request expired.</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">740</context></context-group> + <context-group purpose="location"><context context-type="linenumber">743</context></context-group> </trans-unit> <group restype="x-gettext-plurals"> - <context-group purpose="location"><context context-type="linenumber">864</context></context-group> - <trans-unit id="_msg731[0]" approved="yes"> + <context-group purpose="location"><context context-type="linenumber">867</context></context-group> + <trans-unit id="_msg731[0]"> <source xml:space="preserve">Estimated to begin confirmation within %n block(s).</source> - <target xml:space="preserve">Estimated to begin confirmation within %n block.</target> </trans-unit> - <trans-unit id="_msg731[1]" approved="yes"> + <trans-unit id="_msg731[1]"> <source xml:space="preserve">Estimated to begin confirmation within %n block(s).</source> - <target xml:space="preserve">Estimated to begin confirmation within %n blocks.</target> </trans-unit> </group> <trans-unit id="_msg732"> <source xml:space="preserve">Warning: Invalid Bitcoin address</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">965</context></context-group> + <context-group purpose="location"><context context-type="linenumber">968</context></context-group> </trans-unit> <trans-unit id="_msg733"> <source xml:space="preserve">Warning: Unknown change address</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">970</context></context-group> + <context-group purpose="location"><context context-type="linenumber">973</context></context-group> </trans-unit> <trans-unit id="_msg734"> <source xml:space="preserve">Confirm custom change address</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">973</context></context-group> + <context-group purpose="location"><context context-type="linenumber">976</context></context-group> </trans-unit> <trans-unit id="_msg735"> <source xml:space="preserve">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?</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">973</context></context-group> + <context-group purpose="location"><context context-type="linenumber">976</context></context-group> </trans-unit> <trans-unit id="_msg736"> <source xml:space="preserve">(no label)</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">994</context></context-group> + <context-group purpose="location"><context context-type="linenumber">997</context></context-group> </trans-unit> </group> </body></file> - <file original="../forms/sendcoinsentry.ui" datatype="x-trolltech-designer-ui" source-language="en" target-language="en"><body> + <file original="../forms/sendcoinsentry.ui" datatype="x-trolltech-designer-ui" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="SendCoinsEntry"> - <trans-unit id="_msg737" approved="yes"> + <trans-unit id="_msg737"> <source xml:space="preserve">A&mount:</source> - <target xml:space="preserve">A&mount:</target> <context-group purpose="location"><context context-type="linenumber">155</context></context-group> <context-group purpose="location"><context context-type="linenumber">705</context></context-group> <context-group purpose="location"><context context-type="linenumber">1238</context></context-group> </trans-unit> - <trans-unit id="_msg738" approved="yes"> + <trans-unit id="_msg738"> <source xml:space="preserve">Pay &To:</source> - <target xml:space="preserve">Pay &To:</target> <context-group purpose="location"><context context-type="linenumber">39</context></context-group> </trans-unit> - <trans-unit id="_msg739" approved="yes"> + <trans-unit id="_msg739"> <source xml:space="preserve">&Label:</source> - <target xml:space="preserve">&Label:</target> <context-group purpose="location"><context context-type="linenumber">132</context></context-group> </trans-unit> <trans-unit id="_msg740"> <source xml:space="preserve">Choose previously used address</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">64</context></context-group> </trans-unit> <trans-unit id="_msg741"> <source xml:space="preserve">The Bitcoin address to send the payment to</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">57</context></context-group> </trans-unit> - <trans-unit id="_msg742" approved="yes"> + <trans-unit id="_msg742"> <source xml:space="preserve">Alt+A</source> - <target xml:space="preserve">Alt+A</target> <context-group purpose="location"><context context-type="linenumber">80</context></context-group> </trans-unit> - <trans-unit id="_msg743" approved="yes"> + <trans-unit id="_msg743"> <source xml:space="preserve">Paste address from clipboard</source> - <target xml:space="preserve">Paste address from clipboard</target> <context-group purpose="location"><context context-type="linenumber">87</context></context-group> </trans-unit> - <trans-unit id="_msg744" approved="yes"> + <trans-unit id="_msg744"> <source xml:space="preserve">Alt+P</source> - <target xml:space="preserve">Alt+P</target> <context-group purpose="location"><context context-type="linenumber">103</context></context-group> </trans-unit> <trans-unit id="_msg745"> <source xml:space="preserve">Remove this entry</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">110</context></context-group> <context-group purpose="location"><context context-type="linenumber">672</context></context-group> <context-group purpose="location"><context context-type="linenumber">1205</context></context-group> </trans-unit> <trans-unit id="_msg746"> <source xml:space="preserve">The amount to send in the selected unit</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">170</context></context-group> </trans-unit> <trans-unit id="_msg747"> <source xml:space="preserve">The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">177</context></context-group> </trans-unit> <trans-unit id="_msg748"> <source xml:space="preserve">S&ubtract fee from amount</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">180</context></context-group> </trans-unit> <trans-unit id="_msg749"> <source xml:space="preserve">Use available balance</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">187</context></context-group> </trans-unit> <trans-unit id="_msg750"> <source xml:space="preserve">Message:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">196</context></context-group> </trans-unit> <trans-unit id="_msg751"> <source xml:space="preserve">This is an unauthenticated payment request.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">639</context></context-group> </trans-unit> <trans-unit id="_msg752"> <source xml:space="preserve">This is an authenticated payment request.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">1168</context></context-group> </trans-unit> <trans-unit id="_msg753"> <source xml:space="preserve">Enter a label for this address to add it to the list of used addresses</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">145</context></context-group> <context-group purpose="location"><context context-type="linenumber">148</context></context-group> </trans-unit> <trans-unit id="_msg754"> <source xml:space="preserve">A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">206</context></context-group> </trans-unit> <trans-unit id="_msg755"> <source xml:space="preserve">Pay To:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">654</context></context-group> <context-group purpose="location"><context context-type="linenumber">1183</context></context-group> </trans-unit> <trans-unit id="_msg756"> <source xml:space="preserve">Memo:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">688</context></context-group> <context-group purpose="location"><context context-type="linenumber">1221</context></context-group> </trans-unit> </group> </body></file> - <file original="../sendcoinsdialog.h" datatype="c" source-language="en" target-language="en"><body> + <file original="../sendcoinsdialog.h" datatype="c" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="SendConfirmationDialog"> <trans-unit id="_msg757"> <source xml:space="preserve">Send</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">131</context></context-group> </trans-unit> <trans-unit id="_msg758"> <source xml:space="preserve">Create Unsigned</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">133</context></context-group> </trans-unit> </group> </body></file> - <file original="../forms/signverifymessagedialog.ui" datatype="x-trolltech-designer-ui" source-language="en" target-language="en"><body> + <file original="../forms/signverifymessagedialog.ui" datatype="x-trolltech-designer-ui" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="SignVerifyMessageDialog"> - <trans-unit id="_msg759" approved="yes"> + <trans-unit id="_msg759"> <source xml:space="preserve">Signatures - Sign / Verify a Message</source> - <target xml:space="preserve">Signatures - Sign / Verify a Message</target> <context-group purpose="location"><context context-type="linenumber">14</context></context-group> </trans-unit> - <trans-unit id="_msg760" approved="yes"> + <trans-unit id="_msg760"> <source xml:space="preserve">&Sign Message</source> - <target xml:space="preserve">&Sign Message</target> <context-group purpose="location"><context context-type="linenumber">27</context></context-group> </trans-unit> <trans-unit id="_msg761"> <source xml:space="preserve">You can sign messages/agreements with your addresses to prove you can receive bitcoins 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.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">33</context></context-group> </trans-unit> <trans-unit id="_msg762"> <source xml:space="preserve">The Bitcoin address to sign the message with</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">51</context></context-group> </trans-unit> <trans-unit id="_msg763"> <source xml:space="preserve">Choose previously used address</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">58</context></context-group> <context-group purpose="location"><context context-type="linenumber">274</context></context-group> </trans-unit> - <trans-unit id="_msg764" approved="yes"> + <trans-unit id="_msg764"> <source xml:space="preserve">Alt+A</source> - <target xml:space="preserve">Alt+A</target> <context-group purpose="location"><context context-type="linenumber">68</context></context-group> <context-group purpose="location"><context context-type="linenumber">284</context></context-group> </trans-unit> - <trans-unit id="_msg765" approved="yes"> + <trans-unit id="_msg765"> <source xml:space="preserve">Paste address from clipboard</source> - <target xml:space="preserve">Paste address from clipboard</target> <context-group purpose="location"><context context-type="linenumber">78</context></context-group> </trans-unit> - <trans-unit id="_msg766" approved="yes"> + <trans-unit id="_msg766"> <source xml:space="preserve">Alt+P</source> - <target xml:space="preserve">Alt+P</target> <context-group purpose="location"><context context-type="linenumber">88</context></context-group> </trans-unit> - <trans-unit id="_msg767" approved="yes"> + <trans-unit id="_msg767"> <source xml:space="preserve">Enter the message you want to sign here</source> - <target xml:space="preserve">Enter the message you want to sign here</target> <context-group purpose="location"><context context-type="linenumber">100</context></context-group> <context-group purpose="location"><context context-type="linenumber">103</context></context-group> </trans-unit> - <trans-unit id="_msg768" approved="yes"> + <trans-unit id="_msg768"> <source xml:space="preserve">Signature</source> - <target xml:space="preserve">Signature</target> <context-group purpose="location"><context context-type="linenumber">110</context></context-group> </trans-unit> - <trans-unit id="_msg769" approved="yes"> + <trans-unit id="_msg769"> <source xml:space="preserve">Copy the current signature to the system clipboard</source> - <target xml:space="preserve">Copy the current signature to the system clipboard</target> <context-group purpose="location"><context context-type="linenumber">140</context></context-group> </trans-unit> - <trans-unit id="_msg770" approved="yes"> + <trans-unit id="_msg770"> <source xml:space="preserve">Sign the message to prove you own this Bitcoin address</source> - <target xml:space="preserve">Sign the message to prove you own this Bitcoin address</target> <context-group purpose="location"><context context-type="linenumber">161</context></context-group> </trans-unit> - <trans-unit id="_msg771" approved="yes"> + <trans-unit id="_msg771"> <source xml:space="preserve">Sign &Message</source> - <target xml:space="preserve">Sign &Message</target> <context-group purpose="location"><context context-type="linenumber">164</context></context-group> </trans-unit> - <trans-unit id="_msg772" approved="yes"> + <trans-unit id="_msg772"> <source xml:space="preserve">Reset all sign message fields</source> - <target xml:space="preserve">Reset all sign message fields</target> <context-group purpose="location"><context context-type="linenumber">178</context></context-group> </trans-unit> - <trans-unit id="_msg773" approved="yes"> + <trans-unit id="_msg773"> <source xml:space="preserve">Clear &All</source> - <target xml:space="preserve">Clear &All</target> <context-group purpose="location"><context context-type="linenumber">181</context></context-group> <context-group purpose="location"><context context-type="linenumber">338</context></context-group> </trans-unit> - <trans-unit id="_msg774" approved="yes"> + <trans-unit id="_msg774"> <source xml:space="preserve">&Verify Message</source> - <target xml:space="preserve">&Verify Message</target> <context-group purpose="location"><context context-type="linenumber">240</context></context-group> </trans-unit> <trans-unit id="_msg775"> <source xml:space="preserve">Enter the receiver's address, message (ensure you copy line breaks, spaces, tabs, etc. exactly) and signature below to verify the message. Be careful not to read more into the signature than what is in the signed message itself, to avoid being tricked by a man-in-the-middle attack. Note that this only proves the signing party receives with the address, it cannot prove sendership of any transaction!</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">246</context></context-group> </trans-unit> <trans-unit id="_msg776"> <source xml:space="preserve">The Bitcoin address the message was signed with</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">267</context></context-group> </trans-unit> <trans-unit id="_msg777"> <source xml:space="preserve">The signed message to verify</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">296</context></context-group> <context-group purpose="location"><context context-type="linenumber">299</context></context-group> </trans-unit> <trans-unit id="_msg778"> <source xml:space="preserve">The signature given when the message was signed</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">306</context></context-group> <context-group purpose="location"><context context-type="linenumber">309</context></context-group> </trans-unit> - <trans-unit id="_msg779" approved="yes"> + <trans-unit id="_msg779"> <source xml:space="preserve">Verify the message to ensure it was signed with the specified Bitcoin address</source> - <target xml:space="preserve">Verify the message to ensure it was signed with the specified Bitcoin address</target> <context-group purpose="location"><context context-type="linenumber">318</context></context-group> </trans-unit> - <trans-unit id="_msg780" approved="yes"> + <trans-unit id="_msg780"> <source xml:space="preserve">Verify &Message</source> - <target xml:space="preserve">Verify &Message</target> <context-group purpose="location"><context context-type="linenumber">321</context></context-group> </trans-unit> - <trans-unit id="_msg781" approved="yes"> + <trans-unit id="_msg781"> <source xml:space="preserve">Reset all verify message fields</source> - <target xml:space="preserve">Reset all verify message fields</target> <context-group purpose="location"><context context-type="linenumber">335</context></context-group> </trans-unit> <trans-unit id="_msg782"> <source xml:space="preserve">Click "Sign Message" to generate signature</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">125</context></context-group> </trans-unit> </group> </body></file> - <file original="../signverifymessagedialog.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../signverifymessagedialog.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="SignVerifyMessageDialog"> <trans-unit id="_msg783"> <source xml:space="preserve">The entered address is invalid.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">120</context></context-group> <context-group purpose="location"><context context-type="linenumber">219</context></context-group> </trans-unit> <trans-unit id="_msg784"> <source xml:space="preserve">Please check the address and try again.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">120</context></context-group> <context-group purpose="location"><context context-type="linenumber">127</context></context-group> <context-group purpose="location"><context context-type="linenumber">220</context></context-group> @@ -4369,181 +3575,149 @@ Note: Since the fee is calculated on a per-byte basis, a fee rate of "100 </trans-unit> <trans-unit id="_msg785"> <source xml:space="preserve">The entered address does not refer to a key.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">127</context></context-group> <context-group purpose="location"><context context-type="linenumber">226</context></context-group> </trans-unit> <trans-unit id="_msg786"> <source xml:space="preserve">Wallet unlock was cancelled.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">135</context></context-group> </trans-unit> <trans-unit id="_msg787"> <source xml:space="preserve">No error</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">146</context></context-group> </trans-unit> <trans-unit id="_msg788"> <source xml:space="preserve">Private key for the entered address is not available.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">149</context></context-group> </trans-unit> <trans-unit id="_msg789"> <source xml:space="preserve">Message signing failed.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">152</context></context-group> </trans-unit> <trans-unit id="_msg790"> <source xml:space="preserve">Message signed.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">164</context></context-group> </trans-unit> <trans-unit id="_msg791"> <source xml:space="preserve">The signature could not be decoded.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">233</context></context-group> </trans-unit> <trans-unit id="_msg792"> <source xml:space="preserve">Please check the signature and try again.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">234</context></context-group> <context-group purpose="location"><context context-type="linenumber">241</context></context-group> </trans-unit> <trans-unit id="_msg793"> <source xml:space="preserve">The signature did not match the message digest.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">240</context></context-group> </trans-unit> <trans-unit id="_msg794"> <source xml:space="preserve">Message verification failed.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">246</context></context-group> </trans-unit> <trans-unit id="_msg795"> <source xml:space="preserve">Message verified.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">214</context></context-group> </trans-unit> </group> </body></file> - <file original="../splashscreen.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../splashscreen.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="SplashScreen"> <trans-unit id="_msg796"> <source xml:space="preserve">(press q to shutdown and continue later)</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">187</context></context-group> </trans-unit> <trans-unit id="_msg797"> <source xml:space="preserve">press q to shutdown</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">188</context></context-group> </trans-unit> </group> </body></file> - <file original="../trafficgraphwidget.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../trafficgraphwidget.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="TrafficGraphWidget"> <trans-unit id="_msg798"> <source xml:space="preserve">kB/s</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">82</context></context-group> + <context-group purpose="location"><context context-type="linenumber">79</context></context-group> </trans-unit> </group> </body></file> - <file original="../transactiondesc.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../transactiondesc.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="TransactionDesc"> <trans-unit id="_msg799"> <source xml:space="preserve">conflicted with a transaction with %1 confirmations</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">40</context></context-group> </trans-unit> <trans-unit id="_msg800"> <source xml:space="preserve">0/unconfirmed, %1</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">43</context></context-group> </trans-unit> <trans-unit id="_msg801"> <source xml:space="preserve">in memory pool</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">43</context></context-group> </trans-unit> <trans-unit id="_msg802"> <source xml:space="preserve">not in memory pool</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">43</context></context-group> </trans-unit> <trans-unit id="_msg803"> <source xml:space="preserve">abandoned</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">42</context></context-group> </trans-unit> <trans-unit id="_msg804"> <source xml:space="preserve">%1/unconfirmed</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">45</context></context-group> </trans-unit> <trans-unit id="_msg805"> <source xml:space="preserve">%1 confirmations</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">47</context></context-group> </trans-unit> <trans-unit id="_msg806"> <source xml:space="preserve">Status</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">98</context></context-group> </trans-unit> <trans-unit id="_msg807"> <source xml:space="preserve">Date</source> - <target xml:space="preserve" state="needs-review-translation">Date</target> <context-group purpose="location"><context context-type="linenumber">101</context></context-group> </trans-unit> <trans-unit id="_msg808"> <source xml:space="preserve">Source</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">108</context></context-group> </trans-unit> <trans-unit id="_msg809"> <source xml:space="preserve">Generated</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">108</context></context-group> </trans-unit> <trans-unit id="_msg810"> <source xml:space="preserve">From</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">113</context></context-group> <context-group purpose="location"><context context-type="linenumber">127</context></context-group> <context-group purpose="location"><context context-type="linenumber">199</context></context-group> </trans-unit> <trans-unit id="_msg811"> <source xml:space="preserve">unknown</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">127</context></context-group> </trans-unit> <trans-unit id="_msg812"> <source xml:space="preserve">To</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">128</context></context-group> <context-group purpose="location"><context context-type="linenumber">148</context></context-group> <context-group purpose="location"><context context-type="linenumber">218</context></context-group> </trans-unit> <trans-unit id="_msg813"> <source xml:space="preserve">own address</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">130</context></context-group> </trans-unit> <trans-unit id="_msg814"> <source xml:space="preserve">watch-only</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">130</context></context-group> <context-group purpose="location"><context context-type="linenumber">199</context></context-group> </trans-unit> <trans-unit id="_msg815"> <source xml:space="preserve">label</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">132</context></context-group> </trans-unit> <trans-unit id="_msg816"> <source xml:space="preserve">Credit</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">168</context></context-group> <context-group purpose="location"><context context-type="linenumber">180</context></context-group> <context-group purpose="location"><context context-type="linenumber">234</context></context-group> @@ -4552,534 +3726,435 @@ Note: Since the fee is calculated on a per-byte basis, a fee rate of "100 </trans-unit> <group restype="x-gettext-plurals"> <context-group purpose="location"><context context-type="linenumber">170</context></context-group> - <trans-unit id="_msg817[0]" approved="yes"> + <trans-unit id="_msg817[0]"> <source xml:space="preserve">matures in %n more block(s)</source> - <target xml:space="preserve">matures in %n more block</target> </trans-unit> - <trans-unit id="_msg817[1]" approved="yes"> + <trans-unit id="_msg817[1]"> <source xml:space="preserve">matures in %n more block(s)</source> - <target xml:space="preserve">matures in %n more blocks</target> </trans-unit> </group> <trans-unit id="_msg818"> <source xml:space="preserve">not accepted</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">172</context></context-group> </trans-unit> <trans-unit id="_msg819"> <source xml:space="preserve">Debit</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">232</context></context-group> <context-group purpose="location"><context context-type="linenumber">258</context></context-group> <context-group purpose="location"><context context-type="linenumber">321</context></context-group> </trans-unit> <trans-unit id="_msg820"> <source xml:space="preserve">Total debit</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">242</context></context-group> </trans-unit> <trans-unit id="_msg821"> <source xml:space="preserve">Total credit</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">243</context></context-group> </trans-unit> <trans-unit id="_msg822"> <source xml:space="preserve">Transaction fee</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">248</context></context-group> </trans-unit> <trans-unit id="_msg823"> <source xml:space="preserve">Net amount</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">270</context></context-group> </trans-unit> <trans-unit id="_msg824"> <source xml:space="preserve">Message</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">276</context></context-group> <context-group purpose="location"><context context-type="linenumber">288</context></context-group> </trans-unit> <trans-unit id="_msg825"> <source xml:space="preserve">Comment</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">278</context></context-group> </trans-unit> <trans-unit id="_msg826"> <source xml:space="preserve">Transaction ID</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">280</context></context-group> </trans-unit> <trans-unit id="_msg827"> <source xml:space="preserve">Transaction total size</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">281</context></context-group> </trans-unit> <trans-unit id="_msg828"> <source xml:space="preserve">Transaction virtual size</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">282</context></context-group> </trans-unit> <trans-unit id="_msg829"> <source xml:space="preserve">Output index</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">283</context></context-group> </trans-unit> <trans-unit id="_msg830"> <source xml:space="preserve"> (Certificate was not verified)</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">299</context></context-group> </trans-unit> <trans-unit id="_msg831"> <source xml:space="preserve">Merchant</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">302</context></context-group> </trans-unit> <trans-unit id="_msg832"> <source xml:space="preserve">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.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">310</context></context-group> </trans-unit> <trans-unit id="_msg833"> <source xml:space="preserve">Debug information</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">318</context></context-group> </trans-unit> <trans-unit id="_msg834"> <source xml:space="preserve">Transaction</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">326</context></context-group> </trans-unit> <trans-unit id="_msg835"> <source xml:space="preserve">Inputs</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">329</context></context-group> </trans-unit> <trans-unit id="_msg836"> <source xml:space="preserve">Amount</source> - <target xml:space="preserve" state="needs-review-translation">Amount</target> <context-group purpose="location"><context context-type="linenumber">350</context></context-group> </trans-unit> <trans-unit id="_msg837"> <source xml:space="preserve">true</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">351</context></context-group> <context-group purpose="location"><context context-type="linenumber">352</context></context-group> </trans-unit> <trans-unit id="_msg838"> <source xml:space="preserve">false</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">351</context></context-group> <context-group purpose="location"><context context-type="linenumber">352</context></context-group> </trans-unit> </group> </body></file> - <file original="../forms/transactiondescdialog.ui" datatype="x-trolltech-designer-ui" source-language="en" target-language="en"><body> + <file original="../forms/transactiondescdialog.ui" datatype="x-trolltech-designer-ui" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="TransactionDescDialog"> - <trans-unit id="_msg839" approved="yes"> + <trans-unit id="_msg839"> <source xml:space="preserve">This pane shows a detailed description of the transaction</source> - <target xml:space="preserve">This pane shows a detailed description of the transaction</target> <context-group purpose="location"><context context-type="linenumber">20</context></context-group> </trans-unit> </group> </body></file> - <file original="../transactiondescdialog.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../transactiondescdialog.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="TransactionDescDialog"> <trans-unit id="_msg840"> <source xml:space="preserve">Details for %1</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">18</context></context-group> </trans-unit> </group> </body></file> - <file original="../transactiontablemodel.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../transactiontablemodel.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="TransactionTableModel"> <trans-unit id="_msg841"> <source xml:space="preserve">Date</source> - <target xml:space="preserve" state="needs-review-translation">Date</target> <context-group purpose="location"><context context-type="linenumber">260</context></context-group> </trans-unit> <trans-unit id="_msg842"> <source xml:space="preserve">Type</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">260</context></context-group> </trans-unit> <trans-unit id="_msg843"> <source xml:space="preserve">Label</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">260</context></context-group> </trans-unit> <trans-unit id="_msg844"> <source xml:space="preserve">Unconfirmed</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">320</context></context-group> </trans-unit> <trans-unit id="_msg845"> <source xml:space="preserve">Abandoned</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">323</context></context-group> </trans-unit> <trans-unit id="_msg846"> <source xml:space="preserve">Confirming (%1 of %2 recommended confirmations)</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">326</context></context-group> </trans-unit> <trans-unit id="_msg847"> <source xml:space="preserve">Confirmed (%1 confirmations)</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">329</context></context-group> </trans-unit> <trans-unit id="_msg848"> <source xml:space="preserve">Conflicted</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">332</context></context-group> </trans-unit> <trans-unit id="_msg849"> <source xml:space="preserve">Immature (%1 confirmations, will be available after %2)</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">335</context></context-group> </trans-unit> <trans-unit id="_msg850"> <source xml:space="preserve">Generated but not accepted</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">338</context></context-group> </trans-unit> <trans-unit id="_msg851"> <source xml:space="preserve">Received with</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">377</context></context-group> </trans-unit> <trans-unit id="_msg852"> <source xml:space="preserve">Received from</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">379</context></context-group> </trans-unit> <trans-unit id="_msg853"> <source xml:space="preserve">Sent to</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">382</context></context-group> </trans-unit> <trans-unit id="_msg854"> <source xml:space="preserve">Payment to yourself</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">384</context></context-group> </trans-unit> <trans-unit id="_msg855"> <source xml:space="preserve">Mined</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">386</context></context-group> </trans-unit> <trans-unit id="_msg856"> <source xml:space="preserve">watch-only</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">414</context></context-group> </trans-unit> <trans-unit id="_msg857"> <source xml:space="preserve">(n/a)</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">430</context></context-group> </trans-unit> <trans-unit id="_msg858"> <source xml:space="preserve">(no label)</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">637</context></context-group> </trans-unit> <trans-unit id="_msg859"> <source xml:space="preserve">Transaction status. Hover over this field to show number of confirmations.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">676</context></context-group> </trans-unit> <trans-unit id="_msg860"> <source xml:space="preserve">Date and time that the transaction was received.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">678</context></context-group> </trans-unit> <trans-unit id="_msg861"> <source xml:space="preserve">Type of transaction.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">680</context></context-group> </trans-unit> <trans-unit id="_msg862"> <source xml:space="preserve">Whether or not a watch-only address is involved in this transaction.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">682</context></context-group> </trans-unit> <trans-unit id="_msg863"> <source xml:space="preserve">User-defined intent/purpose of the transaction.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">684</context></context-group> </trans-unit> <trans-unit id="_msg864"> <source xml:space="preserve">Amount removed from or added to balance.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">686</context></context-group> </trans-unit> </group> </body></file> - <file original="../transactionview.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../transactionview.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="TransactionView"> <trans-unit id="_msg865"> <source xml:space="preserve">All</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">73</context></context-group> <context-group purpose="location"><context context-type="linenumber">89</context></context-group> </trans-unit> <trans-unit id="_msg866"> <source xml:space="preserve">Today</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">74</context></context-group> </trans-unit> <trans-unit id="_msg867"> <source xml:space="preserve">This week</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">75</context></context-group> </trans-unit> <trans-unit id="_msg868"> <source xml:space="preserve">This month</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">76</context></context-group> </trans-unit> <trans-unit id="_msg869"> <source xml:space="preserve">Last month</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">77</context></context-group> </trans-unit> <trans-unit id="_msg870"> <source xml:space="preserve">This year</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">78</context></context-group> </trans-unit> <trans-unit id="_msg871"> <source xml:space="preserve">Received with</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">90</context></context-group> </trans-unit> <trans-unit id="_msg872"> <source xml:space="preserve">Sent to</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">92</context></context-group> </trans-unit> <trans-unit id="_msg873"> <source xml:space="preserve">To yourself</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">94</context></context-group> </trans-unit> <trans-unit id="_msg874"> <source xml:space="preserve">Mined</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">95</context></context-group> </trans-unit> <trans-unit id="_msg875"> <source xml:space="preserve">Other</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">96</context></context-group> </trans-unit> <trans-unit id="_msg876"> <source xml:space="preserve">Enter address, transaction id, or label to search</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">101</context></context-group> </trans-unit> <trans-unit id="_msg877"> <source xml:space="preserve">Min amount</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">105</context></context-group> </trans-unit> <trans-unit id="_msg878"> <source xml:space="preserve">Range…</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">79</context></context-group> </trans-unit> <trans-unit id="_msg879"> <source xml:space="preserve">&Copy address</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">169</context></context-group> </trans-unit> <trans-unit id="_msg880"> <source xml:space="preserve">Copy &label</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">170</context></context-group> </trans-unit> <trans-unit id="_msg881"> <source xml:space="preserve">Copy &amount</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">171</context></context-group> </trans-unit> <trans-unit id="_msg882"> <source xml:space="preserve">Copy transaction &ID</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">172</context></context-group> </trans-unit> <trans-unit id="_msg883"> <source xml:space="preserve">Copy &raw transaction</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">173</context></context-group> </trans-unit> <trans-unit id="_msg884"> <source xml:space="preserve">Copy full transaction &details</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">174</context></context-group> </trans-unit> <trans-unit id="_msg885"> <source xml:space="preserve">&Show transaction details</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">175</context></context-group> </trans-unit> <trans-unit id="_msg886"> <source xml:space="preserve">Increase transaction &fee</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">177</context></context-group> </trans-unit> <trans-unit id="_msg887"> <source xml:space="preserve">A&bandon transaction</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">180</context></context-group> </trans-unit> <trans-unit id="_msg888"> <source xml:space="preserve">&Edit address label</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">181</context></context-group> </trans-unit> <trans-unit id="_msg889"> <source xml:space="preserve">Show in %1</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">240</context></context-group> <note annotates="source" from="developer">Transactions table context menu action to show the selected transaction in a third-party block explorer. %1 is a stand-in argument for the URL of the explorer.</note> </trans-unit> <trans-unit id="_msg890"> <source xml:space="preserve">Export Transaction History</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">359</context></context-group> </trans-unit> <trans-unit id="_msg891"> <source xml:space="preserve">Comma separated file</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">362</context></context-group> <note annotates="source" from="developer">Expanded name of the CSV file format. See: https://en.wikipedia.org/wiki/Comma-separated_values.</note> </trans-unit> <trans-unit id="_msg892"> <source xml:space="preserve">Confirmed</source> - <target xml:space="preserve" state="needs-review-translation">Confirmed</target> <context-group purpose="location"><context context-type="linenumber">371</context></context-group> </trans-unit> <trans-unit id="_msg893"> <source xml:space="preserve">Watch-only</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">373</context></context-group> </trans-unit> <trans-unit id="_msg894"> <source xml:space="preserve">Date</source> - <target xml:space="preserve" state="needs-review-translation">Date</target> <context-group purpose="location"><context context-type="linenumber">374</context></context-group> </trans-unit> <trans-unit id="_msg895"> <source xml:space="preserve">Type</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">375</context></context-group> </trans-unit> <trans-unit id="_msg896"> <source xml:space="preserve">Label</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">376</context></context-group> </trans-unit> <trans-unit id="_msg897"> <source xml:space="preserve">Address</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">377</context></context-group> </trans-unit> <trans-unit id="_msg898"> <source xml:space="preserve">ID</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">379</context></context-group> </trans-unit> <trans-unit id="_msg899"> <source xml:space="preserve">Exporting Failed</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">382</context></context-group> </trans-unit> <trans-unit id="_msg900"> <source xml:space="preserve">There was an error trying to save the transaction history to %1.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">382</context></context-group> </trans-unit> <trans-unit id="_msg901"> <source xml:space="preserve">Exporting Successful</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">386</context></context-group> </trans-unit> <trans-unit id="_msg902"> <source xml:space="preserve">The transaction history was successfully saved to %1.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">386</context></context-group> </trans-unit> <trans-unit id="_msg903"> <source xml:space="preserve">Range:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">558</context></context-group> </trans-unit> <trans-unit id="_msg904"> <source xml:space="preserve">to</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">566</context></context-group> </trans-unit> </group> </body></file> - <file original="../walletframe.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../walletframe.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="WalletFrame"> <trans-unit id="_msg905"> <source xml:space="preserve">No wallet has been loaded. Go to File > Open Wallet to load a wallet. - OR -</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">42</context></context-group> + <context-group purpose="location"><context context-type="linenumber">45</context></context-group> </trans-unit> <trans-unit id="_msg906"> <source xml:space="preserve">Create a new wallet</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">47</context></context-group> + <context-group purpose="location"><context context-type="linenumber">50</context></context-group> </trans-unit> <trans-unit id="_msg907"> <source xml:space="preserve">Error</source> - <target xml:space="preserve" state="needs-review-translation">Error</target> - <context-group purpose="location"><context context-type="linenumber">201</context></context-group> - <context-group purpose="location"><context context-type="linenumber">210</context></context-group> - <context-group purpose="location"><context context-type="linenumber">220</context></context-group> + <context-group purpose="location"><context context-type="linenumber">204</context></context-group> + <context-group purpose="location"><context context-type="linenumber">213</context></context-group> + <context-group purpose="location"><context context-type="linenumber">223</context></context-group> </trans-unit> <trans-unit id="_msg908"> <source xml:space="preserve">Unable to decode PSBT from clipboard (invalid base64)</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">201</context></context-group> + <context-group purpose="location"><context context-type="linenumber">204</context></context-group> </trans-unit> <trans-unit id="_msg909"> <source xml:space="preserve">Load Transaction Data</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">206</context></context-group> + <context-group purpose="location"><context context-type="linenumber">209</context></context-group> </trans-unit> <trans-unit id="_msg910"> <source xml:space="preserve">Partially Signed Transaction (*.psbt)</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">207</context></context-group> + <context-group purpose="location"><context context-type="linenumber">210</context></context-group> </trans-unit> <trans-unit id="_msg911"> <source xml:space="preserve">PSBT file must be smaller than 100 MiB</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">210</context></context-group> + <context-group purpose="location"><context context-type="linenumber">213</context></context-group> </trans-unit> <trans-unit id="_msg912"> <source xml:space="preserve">Unable to decode PSBT</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">220</context></context-group> + <context-group purpose="location"><context context-type="linenumber">223</context></context-group> </trans-unit> </group> </body></file> - <file original="../walletmodel.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../walletmodel.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="WalletModel"> <trans-unit id="_msg913"> <source xml:space="preserve">Send Coins</source> - <target xml:space="preserve" state="needs-review-translation">Send Coins</target> <context-group purpose="location"><context context-type="linenumber">221</context></context-group> </trans-unit> <trans-unit id="_msg914"> <source xml:space="preserve">Fee bump error</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">481</context></context-group> <context-group purpose="location"><context context-type="linenumber">533</context></context-group> <context-group purpose="location"><context context-type="linenumber">548</context></context-group> @@ -5087,937 +4162,752 @@ Go to File > Open Wallet to load a wallet. </trans-unit> <trans-unit id="_msg915"> <source xml:space="preserve">Increasing transaction fee failed</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">481</context></context-group> </trans-unit> <trans-unit id="_msg916"> <source xml:space="preserve">Do you want to increase the fee?</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">488</context></context-group> <note annotates="source" from="developer">Asks a user if they would like to manually increase the fee of a transaction that has already been created.</note> </trans-unit> <trans-unit id="_msg917"> <source xml:space="preserve">Current fee:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">492</context></context-group> </trans-unit> <trans-unit id="_msg918"> <source xml:space="preserve">Increase:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">496</context></context-group> </trans-unit> <trans-unit id="_msg919"> <source xml:space="preserve">New fee:</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">500</context></context-group> </trans-unit> <trans-unit id="_msg920"> <source xml:space="preserve">Warning: This may pay the additional fee by reducing change outputs or adding inputs, when necessary. It may add a new change output if one does not already exist. These changes may potentially leak privacy.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">508</context></context-group> </trans-unit> <trans-unit id="_msg921"> <source xml:space="preserve">Confirm fee bump</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">511</context></context-group> </trans-unit> <trans-unit id="_msg922"> <source xml:space="preserve">Can't draft transaction.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">533</context></context-group> </trans-unit> <trans-unit id="_msg923"> <source xml:space="preserve">PSBT copied</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">540</context></context-group> </trans-unit> <trans-unit id="_msg924"> <source xml:space="preserve">Can't sign transaction.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">548</context></context-group> </trans-unit> <trans-unit id="_msg925"> <source xml:space="preserve">Could not commit transaction</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">553</context></context-group> </trans-unit> <trans-unit id="_msg926"> <source xml:space="preserve">Can't display address</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">567</context></context-group> </trans-unit> <trans-unit id="_msg927"> <source xml:space="preserve">default wallet</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">585</context></context-group> </trans-unit> </group> </body></file> - <file original="../walletview.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../walletview.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="WalletView"> <trans-unit id="_msg928"> <source xml:space="preserve">&Export</source> - <target xml:space="preserve" state="needs-review-translation">&Export</target> <context-group purpose="location"><context context-type="linenumber">52</context></context-group> </trans-unit> <trans-unit id="_msg929"> <source xml:space="preserve">Export the data in the current tab to a file</source> - <target xml:space="preserve" state="needs-review-translation">Export the data in the current tab to a file</target> <context-group purpose="location"><context context-type="linenumber">53</context></context-group> </trans-unit> <trans-unit id="_msg930"> <source xml:space="preserve">Backup Wallet</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">217</context></context-group> </trans-unit> <trans-unit id="_msg931"> <source xml:space="preserve">Wallet Data</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">219</context></context-group> <note annotates="source" from="developer">Name of the wallet data file format.</note> </trans-unit> <trans-unit id="_msg932"> <source xml:space="preserve">Backup Failed</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">225</context></context-group> </trans-unit> <trans-unit id="_msg933"> <source xml:space="preserve">There was an error trying to save the wallet data to %1.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">225</context></context-group> </trans-unit> <trans-unit id="_msg934"> <source xml:space="preserve">Backup Successful</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">229</context></context-group> </trans-unit> <trans-unit id="_msg935"> <source xml:space="preserve">The wallet data was successfully saved to %1.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">229</context></context-group> </trans-unit> <trans-unit id="_msg936"> <source xml:space="preserve">Cancel</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">264</context></context-group> + <context-group purpose="location"><context context-type="linenumber">266</context></context-group> </trans-unit> </group> </body></file> - <file original="../bitcoinstrings.cpp" datatype="cpp" source-language="en" target-language="en"><body> + <file original="../bitcoinstrings.cpp" datatype="cpp" source-language="en"><body> <group restype="x-trolltech-linguist-context" resname="bitcoin-core"> <trans-unit id="_msg937"> <source xml:space="preserve">The %s developers</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">12</context></context-group> </trans-unit> <trans-unit id="_msg938"> <source xml:space="preserve">%s corrupt. Try using the wallet tool bitcoin-wallet to salvage or restoring a backup.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">13</context></context-group> </trans-unit> <trans-unit id="_msg939"> <source xml:space="preserve">-maxtxfee is set very high! Fees this large could be paid on a single transaction.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">16</context></context-group> </trans-unit> <trans-unit id="_msg940"> <source xml:space="preserve">Cannot downgrade wallet from version %i to version %i. Wallet version unchanged.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">19</context></context-group> </trans-unit> <trans-unit id="_msg941"> <source xml:space="preserve">Cannot obtain a lock on data directory %s. %s is probably already running.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">22</context></context-group> </trans-unit> <trans-unit id="_msg942"> <source xml:space="preserve">Cannot provide specific connections and have addrman find outgoing connections at the same.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">24</context></context-group> </trans-unit> <trans-unit id="_msg943"> <source xml:space="preserve">Cannot upgrade a non HD split wallet from version %i to version %i without upgrading to support pre-split keypool. Please use version %i or no version specified.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">27</context></context-group> </trans-unit> <trans-unit id="_msg944"> <source xml:space="preserve">Distributed under the MIT software license, see the accompanying file %s or %s</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">31</context></context-group> </trans-unit> <trans-unit id="_msg945"> <source xml:space="preserve">Error reading %s! All keys read correctly, but transaction data or address book entries might be missing or incorrect.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">34</context></context-group> </trans-unit> <trans-unit id="_msg946"> <source xml:space="preserve">Error reading %s! Transaction data may be missing or incorrect. Rescanning wallet.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">37</context></context-group> </trans-unit> <trans-unit id="_msg947"> <source xml:space="preserve">Error: Dumpfile format record is incorrect. Got "%s", expected "format".</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">40</context></context-group> </trans-unit> <trans-unit id="_msg948"> <source xml:space="preserve">Error: Dumpfile identifier record is incorrect. Got "%s", expected "%s".</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">42</context></context-group> </trans-unit> <trans-unit id="_msg949"> <source xml:space="preserve">Error: Dumpfile version is not supported. This version of bitcoin-wallet only supports version 1 dumpfiles. Got dumpfile with version %s</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">44</context></context-group> </trans-unit> <trans-unit id="_msg950"> <source xml:space="preserve">Error: Legacy wallets only support the "legacy", "p2sh-segwit", and "bech32" address types</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">47</context></context-group> </trans-unit> <trans-unit id="_msg951"> <source xml:space="preserve">Error: Listening for incoming connections failed (listen returned error %s)</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">50</context></context-group> </trans-unit> <trans-unit id="_msg952"> <source xml:space="preserve">Fee estimation failed. Fallbackfee is disabled. Wait a few blocks or enable -fallbackfee.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">52</context></context-group> </trans-unit> <trans-unit id="_msg953"> <source xml:space="preserve">File %s already exists. If you are sure this is what you want, move it out of the way first.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">55</context></context-group> </trans-unit> <trans-unit id="_msg954"> <source xml:space="preserve">Invalid amount for -maxtxfee=<amount>: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions)</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">58</context></context-group> </trans-unit> <trans-unit id="_msg955"> <source xml:space="preserve">Invalid or corrupt peers.dat (%s). If you believe this is a bug, please report it to %s. As a workaround, you can move the file (%s) out of the way (rename, move, or delete) to have a new one created on the next start.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">61</context></context-group> </trans-unit> <trans-unit id="_msg956"> <source xml:space="preserve">More than one onion bind address is provided. Using %s for the automatically created Tor onion service.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">65</context></context-group> </trans-unit> <trans-unit id="_msg957"> <source xml:space="preserve">No dump file provided. To use createfromdump, -dumpfile=<filename> must be provided.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">68</context></context-group> </trans-unit> <trans-unit id="_msg958"> <source xml:space="preserve">No dump file provided. To use dump, -dumpfile=<filename> must be provided.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">71</context></context-group> </trans-unit> <trans-unit id="_msg959"> <source xml:space="preserve">No wallet file format provided. To use createfromdump, -format=<format> must be provided.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">73</context></context-group> </trans-unit> <trans-unit id="_msg960"> <source xml:space="preserve">Please check that your computer's date and time are correct! If your clock is wrong, %s will not work properly.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">76</context></context-group> </trans-unit> <trans-unit id="_msg961"> <source xml:space="preserve">Please contribute if you find %s useful. Visit %s for further information about the software.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">79</context></context-group> </trans-unit> <trans-unit id="_msg962"> <source xml:space="preserve">Prune configured below the minimum of %d MiB. Please use a higher number.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">82</context></context-group> </trans-unit> <trans-unit id="_msg963"> <source xml:space="preserve">Prune: last wallet synchronisation goes beyond pruned data. You need to -reindex (download the whole blockchain again in case of pruned node)</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">84</context></context-group> </trans-unit> <trans-unit id="_msg964"> <source xml:space="preserve">SQLiteDatabase: Unknown sqlite wallet schema version %d. Only version %d is supported</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">87</context></context-group> </trans-unit> <trans-unit id="_msg965"> - <source xml:space="preserve">The -txindex upgrade started by a previous version can not be completed. Restart with the previous version or run a full -reindex.</source> - <target xml:space="preserve"></target> - <context-group purpose="location"><context context-type="linenumber">90</context></context-group> - </trans-unit> - <trans-unit id="_msg966"> <source xml:space="preserve">The block database contains a block which appears to be from the future. This may be due to your computer's date and time being set incorrectly. Only rebuild the block database if you are sure that your computer's date and time are correct</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">93</context></context-group> </trans-unit> - <trans-unit id="_msg967"> + <trans-unit id="_msg966"> <source xml:space="preserve">The block index db contains a legacy 'txindex'. To clear the occupied disk space, run a full -reindex, otherwise ignore this error. This error message will not be displayed again.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">98</context></context-group> </trans-unit> - <trans-unit id="_msg968"> + <trans-unit id="_msg967"> <source xml:space="preserve">The transaction amount is too small to send after the fee has been deducted</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">102</context></context-group> </trans-unit> - <trans-unit id="_msg969"> + <trans-unit id="_msg968"> <source xml:space="preserve">This error could occur if this wallet was not shutdown cleanly and was last loaded using a build with a newer version of Berkeley DB. If so, please use the software that last loaded this wallet</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">104</context></context-group> </trans-unit> - <trans-unit id="_msg970"> + <trans-unit id="_msg969"> <source xml:space="preserve">This is a pre-release test build - use at your own risk - do not use for mining or merchant applications</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">108</context></context-group> </trans-unit> - <trans-unit id="_msg971"> + <trans-unit id="_msg970"> <source xml:space="preserve">This is the maximum transaction fee you pay (in addition to the normal fee) to prioritize partial spend avoidance over regular coin selection.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">111</context></context-group> </trans-unit> - <trans-unit id="_msg972"> + <trans-unit id="_msg971"> <source xml:space="preserve">This is the transaction fee you may discard if change is smaller than dust at this level</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">114</context></context-group> </trans-unit> - <trans-unit id="_msg973"> + <trans-unit id="_msg972"> <source xml:space="preserve">This is the transaction fee you may pay when fee estimates are not available.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">117</context></context-group> </trans-unit> - <trans-unit id="_msg974"> + <trans-unit id="_msg973"> <source xml:space="preserve">Total length of network version string (%i) exceeds maximum length (%i). Reduce the number or size of uacomments.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">119</context></context-group> </trans-unit> - <trans-unit id="_msg975"> + <trans-unit id="_msg974"> <source xml:space="preserve">Unable to replay blocks. You will need to rebuild the database using -reindex-chainstate.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">122</context></context-group> </trans-unit> - <trans-unit id="_msg976"> + <trans-unit id="_msg975"> <source xml:space="preserve">Unknown wallet file format "%s" provided. Please provide one of "bdb" or "sqlite".</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">125</context></context-group> </trans-unit> - <trans-unit id="_msg977"> + <trans-unit id="_msg976"> <source xml:space="preserve">Warning: Dumpfile wallet format "%s" does not match command line specified format "%s".</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">128</context></context-group> </trans-unit> - <trans-unit id="_msg978"> + <trans-unit id="_msg977"> <source xml:space="preserve">Warning: Private keys detected in wallet {%s} with disabled private keys</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">131</context></context-group> </trans-unit> - <trans-unit id="_msg979"> + <trans-unit id="_msg978"> <source xml:space="preserve">Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">133</context></context-group> </trans-unit> - <trans-unit id="_msg980"> + <trans-unit id="_msg979"> <source xml:space="preserve">Witness data for blocks after height %d requires validation. Please restart with -reindex.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">136</context></context-group> </trans-unit> - <trans-unit id="_msg981"> + <trans-unit id="_msg980"> <source xml:space="preserve">You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">139</context></context-group> </trans-unit> - <trans-unit id="_msg982"> + <trans-unit id="_msg981"> <source xml:space="preserve">%s is set very high!</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">142</context></context-group> </trans-unit> - <trans-unit id="_msg983"> + <trans-unit id="_msg982"> <source xml:space="preserve">-maxmempool must be at least %d MB</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">143</context></context-group> </trans-unit> - <trans-unit id="_msg984"> + <trans-unit id="_msg983"> <source xml:space="preserve">A fatal internal error occurred, see debug.log for details</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">144</context></context-group> </trans-unit> - <trans-unit id="_msg985"> + <trans-unit id="_msg984"> <source xml:space="preserve">Cannot resolve -%s address: '%s'</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">145</context></context-group> </trans-unit> - <trans-unit id="_msg986"> + <trans-unit id="_msg985"> <source xml:space="preserve">Cannot set -forcednsseed to true when setting -dnsseed to false.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">146</context></context-group> </trans-unit> - <trans-unit id="_msg987"> + <trans-unit id="_msg986"> <source xml:space="preserve">Cannot set -peerblockfilters without -blockfilterindex.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">147</context></context-group> </trans-unit> - <trans-unit id="_msg988"> + <trans-unit id="_msg987"> <source xml:space="preserve">Cannot write to data directory '%s'; check permissions.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">148</context></context-group> </trans-unit> + <trans-unit id="_msg988"> + <source xml:space="preserve">The -txindex upgrade started by a previous version cannot be completed. Restart with the previous version or run a full -reindex.</source> + <context-group purpose="location"><context context-type="linenumber">90</context></context-group> + </trans-unit> <trans-unit id="_msg989"> - <source xml:space="preserve">Change index out of range</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Config setting for %s only applied on %s network when in [%s] section.</source> <context-group purpose="location"><context context-type="linenumber">149</context></context-group> </trans-unit> <trans-unit id="_msg990"> - <source xml:space="preserve">Config setting for %s only applied on %s network when in [%s] section.</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Copyright (C) %i-%i</source> <context-group purpose="location"><context context-type="linenumber">150</context></context-group> </trans-unit> <trans-unit id="_msg991"> - <source xml:space="preserve">Copyright (C) %i-%i</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Corrupted block database detected</source> <context-group purpose="location"><context context-type="linenumber">151</context></context-group> </trans-unit> <trans-unit id="_msg992"> - <source xml:space="preserve">Corrupted block database detected</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Could not find asmap file %s</source> <context-group purpose="location"><context context-type="linenumber">152</context></context-group> </trans-unit> <trans-unit id="_msg993"> - <source xml:space="preserve">Could not find asmap file %s</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Could not parse asmap file %s</source> <context-group purpose="location"><context context-type="linenumber">153</context></context-group> </trans-unit> <trans-unit id="_msg994"> - <source xml:space="preserve">Could not parse asmap file %s</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Disk space is too low!</source> <context-group purpose="location"><context context-type="linenumber">154</context></context-group> </trans-unit> <trans-unit id="_msg995"> - <source xml:space="preserve">Disk space is too low!</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Do you want to rebuild the block database now?</source> <context-group purpose="location"><context context-type="linenumber">155</context></context-group> </trans-unit> <trans-unit id="_msg996"> - <source xml:space="preserve">Do you want to rebuild the block database now?</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Done loading</source> <context-group purpose="location"><context context-type="linenumber">156</context></context-group> </trans-unit> <trans-unit id="_msg997"> - <source xml:space="preserve">Done loading</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Dump file %s does not exist.</source> <context-group purpose="location"><context context-type="linenumber">157</context></context-group> </trans-unit> <trans-unit id="_msg998"> - <source xml:space="preserve">Dump file %s does not exist.</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Error creating %s</source> <context-group purpose="location"><context context-type="linenumber">158</context></context-group> </trans-unit> <trans-unit id="_msg999"> - <source xml:space="preserve">Error creating %s</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Error initializing block database</source> <context-group purpose="location"><context context-type="linenumber">159</context></context-group> </trans-unit> <trans-unit id="_msg1000"> - <source xml:space="preserve">Error initializing block database</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Error initializing wallet database environment %s!</source> <context-group purpose="location"><context context-type="linenumber">160</context></context-group> </trans-unit> <trans-unit id="_msg1001"> - <source xml:space="preserve">Error initializing wallet database environment %s!</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Error loading %s</source> <context-group purpose="location"><context context-type="linenumber">161</context></context-group> </trans-unit> <trans-unit id="_msg1002"> - <source xml:space="preserve">Error loading %s</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Error loading %s: Private keys can only be disabled during creation</source> <context-group purpose="location"><context context-type="linenumber">162</context></context-group> </trans-unit> <trans-unit id="_msg1003"> - <source xml:space="preserve">Error loading %s: Private keys can only be disabled during creation</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Error loading %s: Wallet corrupted</source> <context-group purpose="location"><context context-type="linenumber">163</context></context-group> </trans-unit> <trans-unit id="_msg1004"> - <source xml:space="preserve">Error loading %s: Wallet corrupted</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Error loading %s: Wallet requires newer version of %s</source> <context-group purpose="location"><context context-type="linenumber">164</context></context-group> </trans-unit> <trans-unit id="_msg1005"> - <source xml:space="preserve">Error loading %s: Wallet requires newer version of %s</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Error loading block database</source> <context-group purpose="location"><context context-type="linenumber">165</context></context-group> </trans-unit> <trans-unit id="_msg1006"> - <source xml:space="preserve">Error loading block database</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Error opening block database</source> <context-group purpose="location"><context context-type="linenumber">166</context></context-group> </trans-unit> <trans-unit id="_msg1007"> - <source xml:space="preserve">Error opening block database</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Error reading from database, shutting down.</source> <context-group purpose="location"><context context-type="linenumber">167</context></context-group> </trans-unit> <trans-unit id="_msg1008"> - <source xml:space="preserve">Error reading from database, shutting down.</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Error reading next record from wallet database</source> <context-group purpose="location"><context context-type="linenumber">168</context></context-group> </trans-unit> <trans-unit id="_msg1009"> - <source xml:space="preserve">Error reading next record from wallet database</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Error upgrading chainstate database</source> <context-group purpose="location"><context context-type="linenumber">169</context></context-group> </trans-unit> <trans-unit id="_msg1010"> - <source xml:space="preserve">Error upgrading chainstate database</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Error: Couldn't create cursor into database</source> <context-group purpose="location"><context context-type="linenumber">170</context></context-group> </trans-unit> <trans-unit id="_msg1011"> - <source xml:space="preserve">Error: Couldn't create cursor into database</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Error: Disk space is low for %s</source> <context-group purpose="location"><context context-type="linenumber">171</context></context-group> </trans-unit> <trans-unit id="_msg1012"> - <source xml:space="preserve">Error: Disk space is low for %s</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Error: Dumpfile checksum does not match. Computed %s, expected %s</source> <context-group purpose="location"><context context-type="linenumber">172</context></context-group> </trans-unit> <trans-unit id="_msg1013"> - <source xml:space="preserve">Error: Dumpfile checksum does not match. Computed %s, expected %s</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Error: Got key that was not hex: %s</source> <context-group purpose="location"><context context-type="linenumber">173</context></context-group> </trans-unit> <trans-unit id="_msg1014"> - <source xml:space="preserve">Error: Got key that was not hex: %s</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Error: Got value that was not hex: %s</source> <context-group purpose="location"><context context-type="linenumber">174</context></context-group> </trans-unit> <trans-unit id="_msg1015"> - <source xml:space="preserve">Error: Got value that was not hex: %s</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Error: Keypool ran out, please call keypoolrefill first</source> <context-group purpose="location"><context context-type="linenumber">175</context></context-group> </trans-unit> <trans-unit id="_msg1016"> - <source xml:space="preserve">Error: Keypool ran out, please call keypoolrefill first</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Error: Missing checksum</source> <context-group purpose="location"><context context-type="linenumber">176</context></context-group> </trans-unit> <trans-unit id="_msg1017"> - <source xml:space="preserve">Error: Missing checksum</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Error: No %s addresses available.</source> <context-group purpose="location"><context context-type="linenumber">177</context></context-group> </trans-unit> <trans-unit id="_msg1018"> - <source xml:space="preserve">Error: No %s addresses available.</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Error: Unable to parse version %u as a uint32_t</source> <context-group purpose="location"><context context-type="linenumber">178</context></context-group> </trans-unit> <trans-unit id="_msg1019"> - <source xml:space="preserve">Error: Unable to parse version %u as a uint32_t</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Error: Unable to write record to new wallet</source> <context-group purpose="location"><context context-type="linenumber">179</context></context-group> </trans-unit> <trans-unit id="_msg1020"> - <source xml:space="preserve">Error: Unable to write record to new wallet</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Failed to listen on any port. Use -listen=0 if you want this.</source> <context-group purpose="location"><context context-type="linenumber">180</context></context-group> </trans-unit> <trans-unit id="_msg1021"> - <source xml:space="preserve">Failed to listen on any port. Use -listen=0 if you want this.</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Failed to rescan the wallet during initialization</source> <context-group purpose="location"><context context-type="linenumber">181</context></context-group> </trans-unit> <trans-unit id="_msg1022"> - <source xml:space="preserve">Failed to rescan the wallet during initialization</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Failed to verify database</source> <context-group purpose="location"><context context-type="linenumber">182</context></context-group> </trans-unit> <trans-unit id="_msg1023"> - <source xml:space="preserve">Failed to verify database</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Fee rate (%s) is lower than the minimum fee rate setting (%s)</source> <context-group purpose="location"><context context-type="linenumber">183</context></context-group> </trans-unit> <trans-unit id="_msg1024"> - <source xml:space="preserve">Fee rate (%s) is lower than the minimum fee rate setting (%s)</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Ignoring duplicate -wallet %s.</source> <context-group purpose="location"><context context-type="linenumber">184</context></context-group> </trans-unit> <trans-unit id="_msg1025"> - <source xml:space="preserve">Ignoring duplicate -wallet %s.</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Importing…</source> <context-group purpose="location"><context context-type="linenumber">185</context></context-group> </trans-unit> <trans-unit id="_msg1026"> - <source xml:space="preserve">Importing…</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Incorrect or no genesis block found. Wrong datadir for network?</source> <context-group purpose="location"><context context-type="linenumber">186</context></context-group> </trans-unit> <trans-unit id="_msg1027"> - <source xml:space="preserve">Incorrect or no genesis block found. Wrong datadir for network?</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Initialization sanity check failed. %s is shutting down.</source> <context-group purpose="location"><context context-type="linenumber">187</context></context-group> </trans-unit> <trans-unit id="_msg1028"> - <source xml:space="preserve">Initialization sanity check failed. %s is shutting down.</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Input not found or already spent</source> <context-group purpose="location"><context context-type="linenumber">188</context></context-group> </trans-unit> <trans-unit id="_msg1029"> - <source xml:space="preserve">Input not found or already spent</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Insufficient funds</source> <context-group purpose="location"><context context-type="linenumber">189</context></context-group> </trans-unit> <trans-unit id="_msg1030"> - <source xml:space="preserve">Insufficient funds</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Invalid -i2psam address or hostname: '%s'</source> <context-group purpose="location"><context context-type="linenumber">190</context></context-group> </trans-unit> <trans-unit id="_msg1031"> - <source xml:space="preserve">Invalid -i2psam address or hostname: '%s'</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Invalid -onion address or hostname: '%s'</source> <context-group purpose="location"><context context-type="linenumber">191</context></context-group> </trans-unit> <trans-unit id="_msg1032"> - <source xml:space="preserve">Invalid -onion address or hostname: '%s'</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Invalid -proxy address or hostname: '%s'</source> <context-group purpose="location"><context context-type="linenumber">192</context></context-group> </trans-unit> <trans-unit id="_msg1033"> - <source xml:space="preserve">Invalid -proxy address or hostname: '%s'</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Invalid P2P permission: '%s'</source> <context-group purpose="location"><context context-type="linenumber">193</context></context-group> </trans-unit> <trans-unit id="_msg1034"> - <source xml:space="preserve">Invalid P2P permission: '%s'</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Invalid amount for -%s=<amount>: '%s'</source> <context-group purpose="location"><context context-type="linenumber">194</context></context-group> </trans-unit> <trans-unit id="_msg1035"> - <source xml:space="preserve">Invalid amount for -%s=<amount>: '%s'</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Invalid amount for -discardfee=<amount>: '%s'</source> <context-group purpose="location"><context context-type="linenumber">195</context></context-group> </trans-unit> <trans-unit id="_msg1036"> - <source xml:space="preserve">Invalid amount for -discardfee=<amount>: '%s'</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Invalid amount for -fallbackfee=<amount>: '%s'</source> <context-group purpose="location"><context context-type="linenumber">196</context></context-group> </trans-unit> <trans-unit id="_msg1037"> - <source xml:space="preserve">Invalid amount for -fallbackfee=<amount>: '%s'</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Invalid amount for -paytxfee=<amount>: '%s' (must be at least %s)</source> <context-group purpose="location"><context context-type="linenumber">197</context></context-group> </trans-unit> <trans-unit id="_msg1038"> - <source xml:space="preserve">Invalid amount for -paytxfee=<amount>: '%s' (must be at least %s)</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Invalid netmask specified in -whitelist: '%s'</source> <context-group purpose="location"><context context-type="linenumber">198</context></context-group> </trans-unit> <trans-unit id="_msg1039"> - <source xml:space="preserve">Invalid netmask specified in -whitelist: '%s'</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Loading P2P addresses…</source> <context-group purpose="location"><context context-type="linenumber">199</context></context-group> </trans-unit> <trans-unit id="_msg1040"> - <source xml:space="preserve">Loading P2P addresses…</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Loading banlist…</source> <context-group purpose="location"><context context-type="linenumber">200</context></context-group> </trans-unit> <trans-unit id="_msg1041"> - <source xml:space="preserve">Loading banlist…</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Loading block index…</source> <context-group purpose="location"><context context-type="linenumber">201</context></context-group> </trans-unit> <trans-unit id="_msg1042"> - <source xml:space="preserve">Loading block index…</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Loading wallet…</source> <context-group purpose="location"><context context-type="linenumber">202</context></context-group> </trans-unit> <trans-unit id="_msg1043"> - <source xml:space="preserve">Loading wallet…</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Missing amount</source> <context-group purpose="location"><context context-type="linenumber">203</context></context-group> </trans-unit> <trans-unit id="_msg1044"> - <source xml:space="preserve">Missing amount</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Missing solving data for estimating transaction size</source> <context-group purpose="location"><context context-type="linenumber">204</context></context-group> </trans-unit> <trans-unit id="_msg1045"> - <source xml:space="preserve">Missing solving data for estimating transaction size</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Need to specify a port with -whitebind: '%s'</source> <context-group purpose="location"><context context-type="linenumber">205</context></context-group> </trans-unit> <trans-unit id="_msg1046"> - <source xml:space="preserve">Need to specify a port with -whitebind: '%s'</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">No addresses available</source> <context-group purpose="location"><context context-type="linenumber">206</context></context-group> </trans-unit> <trans-unit id="_msg1047"> - <source xml:space="preserve">No addresses available</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">No proxy server specified. Use -proxy=<ip> or -proxy=<ip:port>.</source> <context-group purpose="location"><context context-type="linenumber">207</context></context-group> </trans-unit> <trans-unit id="_msg1048"> - <source xml:space="preserve">No proxy server specified. Use -proxy=<ip> or -proxy=<ip:port>.</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Not enough file descriptors available.</source> <context-group purpose="location"><context context-type="linenumber">208</context></context-group> </trans-unit> <trans-unit id="_msg1049"> - <source xml:space="preserve">Not enough file descriptors available.</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Prune cannot be configured with a negative value.</source> <context-group purpose="location"><context context-type="linenumber">209</context></context-group> </trans-unit> <trans-unit id="_msg1050"> - <source xml:space="preserve">Prune cannot be configured with a negative value.</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Prune mode is incompatible with -coinstatsindex.</source> <context-group purpose="location"><context context-type="linenumber">210</context></context-group> </trans-unit> <trans-unit id="_msg1051"> - <source xml:space="preserve">Prune mode is incompatible with -coinstatsindex.</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Prune mode is incompatible with -txindex.</source> <context-group purpose="location"><context context-type="linenumber">211</context></context-group> </trans-unit> <trans-unit id="_msg1052"> - <source xml:space="preserve">Prune mode is incompatible with -txindex.</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Pruning blockstore…</source> <context-group purpose="location"><context context-type="linenumber">212</context></context-group> </trans-unit> <trans-unit id="_msg1053"> - <source xml:space="preserve">Pruning blockstore…</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Reducing -maxconnections from %d to %d, because of system limitations.</source> <context-group purpose="location"><context context-type="linenumber">213</context></context-group> </trans-unit> <trans-unit id="_msg1054"> - <source xml:space="preserve">Reducing -maxconnections from %d to %d, because of system limitations.</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Replaying blocks…</source> <context-group purpose="location"><context context-type="linenumber">214</context></context-group> </trans-unit> <trans-unit id="_msg1055"> - <source xml:space="preserve">Replaying blocks…</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Rescanning…</source> <context-group purpose="location"><context context-type="linenumber">215</context></context-group> </trans-unit> <trans-unit id="_msg1056"> - <source xml:space="preserve">Rescanning…</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">SQLiteDatabase: Failed to execute statement to verify database: %s</source> <context-group purpose="location"><context context-type="linenumber">216</context></context-group> </trans-unit> <trans-unit id="_msg1057"> - <source xml:space="preserve">SQLiteDatabase: Failed to execute statement to verify database: %s</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">SQLiteDatabase: Failed to prepare statement to verify database: %s</source> <context-group purpose="location"><context context-type="linenumber">217</context></context-group> </trans-unit> <trans-unit id="_msg1058"> - <source xml:space="preserve">SQLiteDatabase: Failed to prepare statement to verify database: %s</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">SQLiteDatabase: Failed to read database verification error: %s</source> <context-group purpose="location"><context context-type="linenumber">218</context></context-group> </trans-unit> <trans-unit id="_msg1059"> - <source xml:space="preserve">SQLiteDatabase: Failed to read database verification error: %s</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">SQLiteDatabase: Unexpected application id. Expected %u, got %u</source> <context-group purpose="location"><context context-type="linenumber">219</context></context-group> </trans-unit> <trans-unit id="_msg1060"> - <source xml:space="preserve">SQLiteDatabase: Unexpected application id. Expected %u, got %u</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Section [%s] is not recognized.</source> <context-group purpose="location"><context context-type="linenumber">220</context></context-group> </trans-unit> <trans-unit id="_msg1061"> - <source xml:space="preserve">Section [%s] is not recognized.</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Signing transaction failed</source> <context-group purpose="location"><context context-type="linenumber">221</context></context-group> </trans-unit> <trans-unit id="_msg1062"> - <source xml:space="preserve">Signing transaction failed</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Specified -walletdir "%s" does not exist</source> <context-group purpose="location"><context context-type="linenumber">222</context></context-group> </trans-unit> <trans-unit id="_msg1063"> - <source xml:space="preserve">Specified -walletdir "%s" does not exist</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Specified -walletdir "%s" is a relative path</source> <context-group purpose="location"><context context-type="linenumber">223</context></context-group> </trans-unit> <trans-unit id="_msg1064"> - <source xml:space="preserve">Specified -walletdir "%s" is a relative path</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Specified -walletdir "%s" is not a directory</source> <context-group purpose="location"><context context-type="linenumber">224</context></context-group> </trans-unit> <trans-unit id="_msg1065"> - <source xml:space="preserve">Specified -walletdir "%s" is not a directory</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Specified blocks directory "%s" does not exist.</source> <context-group purpose="location"><context context-type="linenumber">225</context></context-group> </trans-unit> <trans-unit id="_msg1066"> - <source xml:space="preserve">Specified blocks directory "%s" does not exist.</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Starting network threads…</source> <context-group purpose="location"><context context-type="linenumber">226</context></context-group> </trans-unit> <trans-unit id="_msg1067"> - <source xml:space="preserve">Starting network threads…</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">The source code is available from %s.</source> <context-group purpose="location"><context context-type="linenumber">227</context></context-group> </trans-unit> <trans-unit id="_msg1068"> - <source xml:space="preserve">The source code is available from %s.</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">The specified config file %s does not exist</source> <context-group purpose="location"><context context-type="linenumber">228</context></context-group> </trans-unit> <trans-unit id="_msg1069"> - <source xml:space="preserve">The specified config file %s does not exist</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">The transaction amount is too small to pay the fee</source> <context-group purpose="location"><context context-type="linenumber">229</context></context-group> </trans-unit> <trans-unit id="_msg1070"> - <source xml:space="preserve">The transaction amount is too small to pay the fee</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">The wallet will avoid paying less than the minimum relay fee.</source> <context-group purpose="location"><context context-type="linenumber">230</context></context-group> </trans-unit> <trans-unit id="_msg1071"> - <source xml:space="preserve">The wallet will avoid paying less than the minimum relay fee.</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">This is experimental software.</source> <context-group purpose="location"><context context-type="linenumber">231</context></context-group> </trans-unit> <trans-unit id="_msg1072"> - <source xml:space="preserve">This is experimental software.</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">This is the minimum transaction fee you pay on every transaction.</source> <context-group purpose="location"><context context-type="linenumber">232</context></context-group> </trans-unit> <trans-unit id="_msg1073"> - <source xml:space="preserve">This is the minimum transaction fee you pay on every transaction.</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">This is the transaction fee you will pay if you send a transaction.</source> <context-group purpose="location"><context context-type="linenumber">233</context></context-group> </trans-unit> <trans-unit id="_msg1074"> - <source xml:space="preserve">This is the transaction fee you will pay if you send a transaction.</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Transaction amount too small</source> <context-group purpose="location"><context context-type="linenumber">234</context></context-group> </trans-unit> <trans-unit id="_msg1075"> - <source xml:space="preserve">Transaction amount too small</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Transaction amounts must not be negative</source> <context-group purpose="location"><context context-type="linenumber">235</context></context-group> </trans-unit> <trans-unit id="_msg1076"> - <source xml:space="preserve">Transaction amounts must not be negative</source> - <target xml:space="preserve"></target> + <source xml:space="preserve">Transaction change output index out of range</source> <context-group purpose="location"><context context-type="linenumber">236</context></context-group> </trans-unit> <trans-unit id="_msg1077"> <source xml:space="preserve">Transaction has too long of a mempool chain</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">237</context></context-group> </trans-unit> <trans-unit id="_msg1078"> <source xml:space="preserve">Transaction must have at least one recipient</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">238</context></context-group> </trans-unit> <trans-unit id="_msg1079"> <source xml:space="preserve">Transaction needs a change address, but we can't generate it.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">239</context></context-group> </trans-unit> <trans-unit id="_msg1080"> <source xml:space="preserve">Transaction too large</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">240</context></context-group> </trans-unit> <trans-unit id="_msg1081"> <source xml:space="preserve">Unable to bind to %s on this computer (bind returned error %s)</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">241</context></context-group> </trans-unit> <trans-unit id="_msg1082"> <source xml:space="preserve">Unable to bind to %s on this computer. %s is probably already running.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">242</context></context-group> </trans-unit> <trans-unit id="_msg1083"> <source xml:space="preserve">Unable to create the PID file '%s': %s</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">243</context></context-group> </trans-unit> <trans-unit id="_msg1084"> <source xml:space="preserve">Unable to generate initial keys</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">244</context></context-group> </trans-unit> <trans-unit id="_msg1085"> <source xml:space="preserve">Unable to generate keys</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">245</context></context-group> </trans-unit> <trans-unit id="_msg1086"> <source xml:space="preserve">Unable to open %s for writing</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">246</context></context-group> </trans-unit> <trans-unit id="_msg1087"> <source xml:space="preserve">Unable to parse -maxuploadtarget: '%s'</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">247</context></context-group> </trans-unit> <trans-unit id="_msg1088"> <source xml:space="preserve">Unable to start HTTP server. See debug log for details.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">248</context></context-group> </trans-unit> <trans-unit id="_msg1089"> <source xml:space="preserve">Unknown -blockfilterindex value %s.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">249</context></context-group> </trans-unit> <trans-unit id="_msg1090"> <source xml:space="preserve">Unknown address type '%s'</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">250</context></context-group> </trans-unit> <trans-unit id="_msg1091"> <source xml:space="preserve">Unknown change type '%s'</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">251</context></context-group> </trans-unit> <trans-unit id="_msg1092"> <source xml:space="preserve">Unknown network specified in -onlynet: '%s'</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">252</context></context-group> </trans-unit> <trans-unit id="_msg1093"> <source xml:space="preserve">Unknown new rules activated (versionbit %i)</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">253</context></context-group> </trans-unit> <trans-unit id="_msg1094"> <source xml:space="preserve">Unsupported logging category %s=%s.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">254</context></context-group> </trans-unit> <trans-unit id="_msg1095"> <source xml:space="preserve">Upgrading UTXO database</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">255</context></context-group> </trans-unit> <trans-unit id="_msg1096"> <source xml:space="preserve">User Agent comment (%s) contains unsafe characters.</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">256</context></context-group> </trans-unit> <trans-unit id="_msg1097"> <source xml:space="preserve">Verifying blocks…</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">257</context></context-group> </trans-unit> <trans-unit id="_msg1098"> <source xml:space="preserve">Verifying wallet(s)…</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">258</context></context-group> </trans-unit> <trans-unit id="_msg1099"> <source xml:space="preserve">Wallet needed to be rewritten: restart %s to complete</source> - <target xml:space="preserve"></target> <context-group purpose="location"><context context-type="linenumber">259</context></context-group> </trans-unit> </group> diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp index 69204e346a..9817c80cbd 100644 --- a/src/rpc/blockchain.cpp +++ b/src/rpc/blockchain.cpp @@ -1037,7 +1037,7 @@ static RPCHelpMan getblock() {RPCResult::Type::STR, "asm", "The asm"}, {RPCResult::Type::STR, "hex", "The hex"}, {RPCResult::Type::STR, "address", /* optional */ true, "The Bitcoin address (only if a well-defined address exists)"}, - {RPCResult::Type::STR, "type", "The type, eg 'pubkeyhash'"}, + {RPCResult::Type::STR, "type", "The type (one of: " + GetAllOutputTypes() + ")"}, }}, }}, }}, @@ -1417,7 +1417,7 @@ static RPCHelpMan verifychain() }, [&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue { - const int check_level(request.params[0].isNull() ? DEFAULT_CHECKLEVEL : request.params[0].get_int()); + const int check_level{request.params[0].isNull() ? DEFAULT_CHECKLEVEL : request.params[0].get_int()}; const int check_depth{request.params[1].isNull() ? DEFAULT_CHECKBLOCKS : request.params[1].get_int()}; ChainstateManager& chainman = EnsureAnyChainman(request.context); diff --git a/src/rpc/mining.cpp b/src/rpc/mining.cpp index 0554367672..1d1ae92c58 100644 --- a/src/rpc/mining.cpp +++ b/src/rpc/mining.cpp @@ -217,9 +217,9 @@ static RPCHelpMan generatetodescriptor() { return RPCHelpMan{ "generatetodescriptor", - "\nMine blocks immediately to a specified descriptor (before the RPC call returns)\n", + "Mine to a specified descriptor and return the block hashes.", { - {"num_blocks", RPCArg::Type::NUM, RPCArg::Optional::NO, "How many blocks are generated immediately."}, + {"num_blocks", RPCArg::Type::NUM, RPCArg::Optional::NO, "How many blocks are generated."}, {"descriptor", RPCArg::Type::STR, RPCArg::Optional::NO, "The descriptor to send the newly generated bitcoin to."}, {"maxtries", RPCArg::Type::NUM, RPCArg::Default{DEFAULT_MAX_TRIES}, "How many iterations to try."}, }, @@ -261,18 +261,18 @@ static RPCHelpMan generate() static RPCHelpMan generatetoaddress() { return RPCHelpMan{"generatetoaddress", - "\nMine blocks immediately to a specified address (before the RPC call returns)\n", - { - {"nblocks", RPCArg::Type::NUM, RPCArg::Optional::NO, "How many blocks are generated immediately."}, - {"address", RPCArg::Type::STR, RPCArg::Optional::NO, "The address to send the newly generated bitcoin to."}, - {"maxtries", RPCArg::Type::NUM, RPCArg::Default{DEFAULT_MAX_TRIES}, "How many iterations to try."}, - }, - RPCResult{ - RPCResult::Type::ARR, "", "hashes of blocks generated", - { - {RPCResult::Type::STR_HEX, "", "blockhash"}, - }}, - RPCExamples{ + "Mine to a specified address and return the block hashes.", + { + {"nblocks", RPCArg::Type::NUM, RPCArg::Optional::NO, "How many blocks are generated."}, + {"address", RPCArg::Type::STR, RPCArg::Optional::NO, "The address to send the newly generated bitcoin to."}, + {"maxtries", RPCArg::Type::NUM, RPCArg::Default{DEFAULT_MAX_TRIES}, "How many iterations to try."}, + }, + RPCResult{ + RPCResult::Type::ARR, "", "hashes of blocks generated", + { + {RPCResult::Type::STR_HEX, "", "blockhash"}, + }}, + RPCExamples{ "\nGenerate 11 blocks to myaddress\n" + HelpExampleCli("generatetoaddress", "11 \"myaddress\"") + "If you are using the " PACKAGE_NAME " wallet, you can get a new address to send the newly generated bitcoin to with:\n" @@ -302,7 +302,7 @@ static RPCHelpMan generatetoaddress() static RPCHelpMan generateblock() { return RPCHelpMan{"generateblock", - "\nMine a block with a set of ordered transactions immediately to a specified address or descriptor (before the RPC call returns)\n", + "Mine a set of ordered transactions to a specified address or descriptor and return the block hash.", { {"output", RPCArg::Type::STR, RPCArg::Optional::NO, "The address or descriptor to send the newly generated bitcoin to."}, {"transactions", RPCArg::Type::ARR, RPCArg::Optional::NO, "An array of hex strings which are either txids or raw transactions.\n" @@ -1278,9 +1278,9 @@ static const CRPCCommand commands[] = { "mining", &submitheader, }, - { "generating", &generatetoaddress, }, - { "generating", &generatetodescriptor, }, - { "generating", &generateblock, }, + { "hidden", &generatetoaddress, }, + { "hidden", &generatetodescriptor, }, + { "hidden", &generateblock, }, { "util", &estimatesmartfee, }, diff --git a/src/rpc/misc.cpp b/src/rpc/misc.cpp index 8d574e0359..8d7b48d697 100644 --- a/src/rpc/misc.cpp +++ b/src/rpc/misc.cpp @@ -426,7 +426,7 @@ static RPCHelpMan setmocktime() RPCTypeCheck(request.params, {UniValue::VNUM}); const int64_t time{request.params[0].get_int64()}; if (time < 0) { - throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("Mocktime can not be negative: %s.", time)); + throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("Mocktime cannot be negative: %s.", time)); } SetMockTime(time); auto node_context = util::AnyPtr<NodeContext>(request.context); diff --git a/src/rpc/net.cpp b/src/rpc/net.cpp index 3d7c00edfc..4d3e3e81d4 100644 --- a/src/rpc/net.cpp +++ b/src/rpc/net.cpp @@ -847,7 +847,9 @@ static RPCHelpMan setnetworkactive() static RPCHelpMan getnodeaddresses() { return RPCHelpMan{"getnodeaddresses", - "\nReturn known addresses, which can potentially be used to find new nodes in the network.\n", + "Return known addresses, after filtering for quality and recency.\n" + "These can potentially be used to find new peers in the network.\n" + "The total number of addresses known to the node may be higher.", { {"count", RPCArg::Type::NUM, RPCArg::Default{1}, "The maximum number of addresses to return. Specify 0 to return all known addresses."}, {"network", RPCArg::Type::STR, RPCArg::DefaultHint{"all networks"}, "Return only addresses of the specified network. Can be one of: " + Join(GetNetworkNames(), ", ") + "."}, diff --git a/src/rpc/rawtransaction.cpp b/src/rpc/rawtransaction.cpp index ff0d8a4e0f..6272a7c8cf 100644 --- a/src/rpc/rawtransaction.cpp +++ b/src/rpc/rawtransaction.cpp @@ -380,7 +380,7 @@ static RPCHelpMan verifytxoutproof() RPCResult{ RPCResult::Type::ARR, "", "", { - {RPCResult::Type::STR_HEX, "txid", "The txid(s) which the proof commits to, or empty array if the proof can not be validated."}, + {RPCResult::Type::STR_HEX, "txid", "The txid(s) which the proof commits to, or empty array if the proof cannot be validated."}, } }, RPCExamples{""}, @@ -542,16 +542,6 @@ static RPCHelpMan decoderawtransaction() }; } -static std::string GetAllOutputTypes() -{ - std::vector<std::string> ret; - using U = std::underlying_type<TxoutType>::type; - for (U i = (U)TxoutType::NONSTANDARD; i <= (U)TxoutType::WITNESS_UNKNOWN; ++i) { - ret.emplace_back(GetTxnOutputType(static_cast<TxoutType>(i))); - } - return Join(ret, ", "); -} - static RPCHelpMan decodescript() { return RPCHelpMan{ diff --git a/src/rpc/util.cpp b/src/rpc/util.cpp index 5ef7e26ce8..7c859268be 100644 --- a/src/rpc/util.cpp +++ b/src/rpc/util.cpp @@ -21,6 +21,16 @@ const std::string UNIX_EPOCH_TIME = "UNIX epoch time"; const std::string EXAMPLE_ADDRESS[2] = {"bc1q09vm5lfy0j5reeulh4x5752q25uqqvz34hufdl", "bc1q02ad21edsxd23d32dfgqqsz4vv4nmtfzuklhy3"}; +std::string GetAllOutputTypes() +{ + std::vector<std::string> ret; + using U = std::underlying_type<TxoutType>::type; + for (U i = (U)TxoutType::NONSTANDARD; i <= (U)TxoutType::WITNESS_UNKNOWN; ++i) { + ret.emplace_back(GetTxnOutputType(static_cast<TxoutType>(i))); + } + return Join(ret, ", "); +} + void RPCTypeCheck(const UniValue& params, const std::list<UniValueType>& typesExpected, bool fAllowNull) diff --git a/src/rpc/util.h b/src/rpc/util.h index 25ebf78fa1..89d32d4193 100644 --- a/src/rpc/util.h +++ b/src/rpc/util.h @@ -39,6 +39,13 @@ class CPubKey; class CScript; struct Sections; +/** + * Gets all existing output types formatted for RPC help sections. + * + * @return Comma separated string representing output type names. + */ +std::string GetAllOutputTypes(); + /** Wrapper for UniValue::VType, which includes typeAny: * Used to denote don't care type. */ struct UniValueType { diff --git a/src/script/descriptor.cpp b/src/script/descriptor.cpp index 84040bf847..798c4b3ea0 100644 --- a/src/script/descriptor.cpp +++ b/src/script/descriptor.cpp @@ -259,7 +259,15 @@ public: bool ToPrivateString(const SigningProvider& arg, std::string& ret) const override { CKey key; - if (!arg.GetKey(m_pubkey.GetID(), key)) return false; + if (m_xonly) { + for (const auto& keyid : XOnlyPubKey(m_pubkey).GetKeyIDs()) { + arg.GetKey(keyid, key); + if (key.IsValid()) break; + } + } else { + arg.GetKey(m_pubkey.GetID(), key); + } + if (!key.IsValid()) return false; ret = EncodeSecret(key); return true; } @@ -1253,7 +1261,7 @@ std::unique_ptr<DescriptorImpl> InferScript(const CScript& script, ParseScriptCo { if (ctx == ParseScriptContext::P2TR && script.size() == 34 && script[0] == 32 && script[33] == OP_CHECKSIG) { XOnlyPubKey key{Span{script}.subspan(1, 32)}; - return std::make_unique<PKDescriptor>(InferXOnlyPubkey(key, ctx, provider)); + return std::make_unique<PKDescriptor>(InferXOnlyPubkey(key, ctx, provider), true); } std::vector<std::vector<unsigned char>> data; diff --git a/src/streams.h b/src/streams.h index cf8b4eb96f..96b7696f72 100644 --- a/src/streams.h +++ b/src/streams.h @@ -9,6 +9,7 @@ #include <serialize.h> #include <span.h> #include <support/allocators/zeroafterfree.h> +#include <util/overflow.h> #include <algorithm> #include <assert.h> @@ -186,7 +187,7 @@ class CDataStream protected: using vector_type = SerializeData; vector_type vch; - unsigned int nReadPos{0}; + vector_type::size_type m_read_pos{0}; int nType; int nVersion; @@ -229,37 +230,37 @@ public: // // Vector subset // - const_iterator begin() const { return vch.begin() + nReadPos; } - iterator begin() { return vch.begin() + nReadPos; } + const_iterator begin() const { return vch.begin() + m_read_pos; } + iterator begin() { return vch.begin() + m_read_pos; } const_iterator end() const { return vch.end(); } iterator end() { return vch.end(); } - size_type size() const { return vch.size() - nReadPos; } - bool empty() const { return vch.size() == nReadPos; } - void resize(size_type n, value_type c = value_type{}) { 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]; } - reference operator[](size_type pos) { return vch[pos + nReadPos]; } - void clear() { vch.clear(); nReadPos = 0; } - value_type* data() { return vch.data() + nReadPos; } - const value_type* data() const { return vch.data() + nReadPos; } + size_type size() const { return vch.size() - m_read_pos; } + bool empty() const { return vch.size() == m_read_pos; } + void resize(size_type n, value_type c = value_type{}) { vch.resize(n + m_read_pos, c); } + void reserve(size_type n) { vch.reserve(n + m_read_pos); } + const_reference operator[](size_type pos) const { return vch[pos + m_read_pos]; } + reference operator[](size_type pos) { return vch[pos + m_read_pos]; } + void clear() { vch.clear(); m_read_pos = 0; } + value_type* data() { return vch.data() + m_read_pos; } + const value_type* data() const { return vch.data() + m_read_pos; } inline void Compact() { - vch.erase(vch.begin(), vch.begin() + nReadPos); - nReadPos = 0; + vch.erase(vch.begin(), vch.begin() + m_read_pos); + m_read_pos = 0; } bool Rewind(std::optional<size_type> n = std::nullopt) { // Total rewind if no size is passed if (!n) { - nReadPos = 0; + m_read_pos = 0; return true; } // Rewind by n characters if the buffer hasn't been compacted yet - if (*n > nReadPos) + if (*n > m_read_pos) return false; - nReadPos -= *n; + m_read_pos -= *n; return true; } @@ -281,36 +282,32 @@ public: if (dst.size() == 0) return; // Read from the beginning of the buffer - unsigned int nReadPosNext = nReadPos + dst.size(); - if (nReadPosNext > vch.size()) { + auto next_read_pos{CheckedAdd(m_read_pos, dst.size())}; + if (!next_read_pos.has_value() || next_read_pos.value() > vch.size()) { throw std::ios_base::failure("CDataStream::read(): end of data"); } - memcpy(dst.data(), &vch[nReadPos], dst.size()); - if (nReadPosNext == vch.size()) - { - nReadPos = 0; + memcpy(dst.data(), &vch[m_read_pos], dst.size()); + if (next_read_pos.value() == vch.size()) { + m_read_pos = 0; vch.clear(); return; } - nReadPos = nReadPosNext; + m_read_pos = next_read_pos.value(); } - void ignore(int nSize) + void ignore(size_t num_ignore) { // Ignore from the beginning of the buffer - if (nSize < 0) { - throw std::ios_base::failure("CDataStream::ignore(): nSize negative"); + auto next_read_pos{CheckedAdd(m_read_pos, num_ignore)}; + if (!next_read_pos.has_value() || next_read_pos.value() > vch.size()) { + throw std::ios_base::failure("CDataStream::ignore(): end of data"); } - unsigned int nReadPosNext = nReadPos + nSize; - if (nReadPosNext >= vch.size()) - { - if (nReadPosNext > vch.size()) - throw std::ios_base::failure("CDataStream::ignore(): end of data"); - nReadPos = 0; + if (next_read_pos.value() == vch.size()) { + m_read_pos = 0; vch.clear(); return; } - nReadPos = nReadPosNext; + m_read_pos = next_read_pos.value(); } void write(Span<const value_type> src) @@ -594,7 +591,7 @@ private: FILE *src; //!< source file uint64_t nSrcPos; //!< how many bytes have been read from source - uint64_t nReadPos; //!< how many bytes have been read from this + uint64_t m_read_pos; //!< how many bytes have been read from this uint64_t nReadLimit; //!< up to which position we're allowed to read uint64_t nRewind; //!< how many bytes we guarantee to rewind std::vector<std::byte> vchBuf; //!< the buffer @@ -604,7 +601,7 @@ protected: bool Fill() { unsigned int pos = nSrcPos % vchBuf.size(); unsigned int readNow = vchBuf.size() - pos; - unsigned int nAvail = vchBuf.size() - (nSrcPos - nReadPos) - nRewind; + unsigned int nAvail = vchBuf.size() - (nSrcPos - m_read_pos) - nRewind; if (nAvail < readNow) readNow = nAvail; if (readNow == 0) @@ -619,7 +616,7 @@ protected: public: CBufferedFile(FILE* fileIn, uint64_t nBufSize, uint64_t nRewindIn, int nTypeIn, int nVersionIn) - : nType(nTypeIn), nVersion(nVersionIn), nSrcPos(0), nReadPos(0), nReadLimit(std::numeric_limits<uint64_t>::max()), nRewind(nRewindIn), vchBuf(nBufSize, std::byte{0}) + : nType(nTypeIn), nVersion(nVersionIn), nSrcPos(0), m_read_pos(0), nReadLimit(std::numeric_limits<uint64_t>::max()), nRewind(nRewindIn), vchBuf(nBufSize, std::byte{0}) { if (nRewindIn >= nBufSize) throw std::ios_base::failure("Rewind limit must be less than buffer size"); @@ -648,33 +645,33 @@ public: //! check whether we're at the end of the source file bool eof() const { - return nReadPos == nSrcPos && feof(src); + return m_read_pos == nSrcPos && feof(src); } //! read a number of bytes void read(Span<std::byte> dst) { - if (dst.size() + nReadPos > nReadLimit) { + if (dst.size() + m_read_pos > nReadLimit) { throw std::ios_base::failure("Read attempted past buffer limit"); } while (dst.size() > 0) { - if (nReadPos == nSrcPos) + if (m_read_pos == nSrcPos) Fill(); - unsigned int pos = nReadPos % vchBuf.size(); + unsigned int pos = m_read_pos % vchBuf.size(); size_t nNow = dst.size(); if (nNow + pos > vchBuf.size()) nNow = vchBuf.size() - pos; - if (nNow + nReadPos > nSrcPos) - nNow = nSrcPos - nReadPos; + if (nNow + m_read_pos > nSrcPos) + nNow = nSrcPos - m_read_pos; memcpy(dst.data(), &vchBuf[pos], nNow); - nReadPos += nNow; + m_read_pos += nNow; dst = dst.subspan(nNow); } } //! return the current reading position uint64_t GetPos() const { - return nReadPos; + return m_read_pos; } //! rewind to a given reading position @@ -682,22 +679,22 @@ public: size_t bufsize = vchBuf.size(); if (nPos + bufsize < nSrcPos) { // rewinding too far, rewind as far as possible - nReadPos = nSrcPos - bufsize; + m_read_pos = nSrcPos - bufsize; return false; } if (nPos > nSrcPos) { // can't go this far forward, go as far as possible - nReadPos = nSrcPos; + m_read_pos = nSrcPos; return false; } - nReadPos = nPos; + m_read_pos = nPos; return true; } //! prevent reading beyond a certain position //! no argument removes the limit bool SetLimit(uint64_t nPos = std::numeric_limits<uint64_t>::max()) { - if (nPos < nReadPos) + if (nPos < m_read_pos) return false; nReadLimit = nPos; return true; @@ -714,12 +711,12 @@ public: void FindByte(uint8_t ch) { while (true) { - if (nReadPos == nSrcPos) + if (m_read_pos == nSrcPos) Fill(); - if (vchBuf[nReadPos % vchBuf.size()] == std::byte{ch}) { + if (vchBuf[m_read_pos % vchBuf.size()] == std::byte{ch}) { break; } - nReadPos++; + m_read_pos++; } } }; diff --git a/src/test/descriptor_tests.cpp b/src/test/descriptor_tests.cpp index 5a3e382c3f..55a9a78159 100644 --- a/src/test/descriptor_tests.cpp +++ b/src/test/descriptor_tests.cpp @@ -43,6 +43,8 @@ constexpr int UNSOLVABLE = 4; // This descriptor is not expected to be solvable constexpr int SIGNABLE = 8; // We can sign with this descriptor (this is not true when actual BIP32 derivation is used, as that's not integrated in our signing code) constexpr int DERIVE_HARDENED = 16; // The final derivation is hardened, i.e. ends with *' or *h constexpr int MIXED_PUBKEYS = 32; +constexpr int XONLY_KEYS = 64; // X-only pubkeys are in use (and thus inferring/caching may swap parity of pubkeys/keyids) +constexpr int MISSING_PRIVKEYS = 128; // Not all private keys are available, so ToPrivateString will fail. /** Compare two descriptors. If only one of them has a checksum, the checksum is ignored. */ bool EqualDescriptor(std::string a, std::string b) @@ -88,6 +90,42 @@ static size_t CountXpubs(const std::string& desc) const std::set<std::vector<uint32_t>> ONLY_EMPTY{{}}; +std::set<CPubKey> GetKeyData(const FlatSigningProvider& provider, int flags) { + std::set<CPubKey> ret; + for (const auto& [_, pubkey] : provider.pubkeys) { + if (flags & XONLY_KEYS) { + unsigned char bytes[33]; + BOOST_CHECK_EQUAL(pubkey.size(), 33); + std::copy(pubkey.begin(), pubkey.end(), bytes); + bytes[0] = 0x02; + CPubKey norm_pubkey{bytes}; + ret.insert(norm_pubkey); + } else { + ret.insert(pubkey); + } + } + return ret; +} + +std::set<std::pair<CPubKey, KeyOriginInfo>> GetKeyOriginData(const FlatSigningProvider& provider, int flags) { + std::set<std::pair<CPubKey, KeyOriginInfo>> ret; + for (const auto& [_, data] : provider.origins) { + if (flags & XONLY_KEYS) { + unsigned char bytes[33]; + BOOST_CHECK_EQUAL(data.first.size(), 33); + std::copy(data.first.begin(), data.first.end(), bytes); + bytes[0] = 0x02; + CPubKey norm_pubkey{bytes}; + KeyOriginInfo norm_origin = data.second; + std::fill(std::begin(norm_origin.fingerprint), std::end(norm_origin.fingerprint), 0); // fingerprints don't necessarily match. + ret.emplace(norm_pubkey, norm_origin); + } else { + ret.insert(data); + } + } + return ret; +} + void DoCheck(const std::string& prv, const std::string& pub, const std::string& norm_prv, const std::string& norm_pub, int flags, const std::vector<std::vector<std::string>>& scripts, const std::optional<OutputType>& type, const std::set<std::vector<uint32_t>>& paths = ONLY_EMPTY, bool replace_apostrophe_with_h_in_prv=false, bool replace_apostrophe_with_h_in_pub=false) { @@ -127,13 +165,15 @@ void DoCheck(const std::string& prv, const std::string& pub, const std::string& BOOST_CHECK(EqualDescriptor(pub, pub2)); // Check that both can be serialized with private key back to the private version, but not without private key. - std::string prv1; - BOOST_CHECK(parse_priv->ToPrivateString(keys_priv, prv1)); - BOOST_CHECK(EqualDescriptor(prv, prv1)); - BOOST_CHECK(!parse_priv->ToPrivateString(keys_pub, prv1)); - BOOST_CHECK(parse_pub->ToPrivateString(keys_priv, prv1)); - BOOST_CHECK(EqualDescriptor(prv, prv1)); - BOOST_CHECK(!parse_pub->ToPrivateString(keys_pub, prv1)); + if (!(flags & MISSING_PRIVKEYS)) { + std::string prv1; + BOOST_CHECK(parse_priv->ToPrivateString(keys_priv, prv1)); + BOOST_CHECK(EqualDescriptor(prv, prv1)); + BOOST_CHECK(!parse_priv->ToPrivateString(keys_pub, prv1)); + BOOST_CHECK(parse_pub->ToPrivateString(keys_priv, prv1)); + BOOST_CHECK(EqualDescriptor(prv, prv1)); + BOOST_CHECK(!parse_pub->ToPrivateString(keys_pub, prv1)); + } // Check that private can produce the normalized descriptors std::string norm1; @@ -177,9 +217,9 @@ void DoCheck(const std::string& prv, const std::string& pub, const std::string& // Try to expand again using cached data, and compare. BOOST_CHECK(parse_pub->ExpandFromCache(i, desc_cache, spks_cached, script_provider_cached)); BOOST_CHECK(spks == spks_cached); - BOOST_CHECK(script_provider.pubkeys == script_provider_cached.pubkeys); + BOOST_CHECK(GetKeyData(script_provider, flags) == GetKeyData(script_provider_cached, flags)); BOOST_CHECK(script_provider.scripts == script_provider_cached.scripts); - BOOST_CHECK(script_provider.origins == script_provider_cached.origins); + BOOST_CHECK(GetKeyOriginData(script_provider, flags) == GetKeyOriginData(script_provider_cached, flags)); // Check whether keys are in the cache const auto& der_xpub_cache = desc_cache.GetCachedDerivedExtPubKeys(); @@ -255,9 +295,9 @@ void DoCheck(const std::string& prv, const std::string& pub, const std::string& // Try again but use the cache from expanding i. That cache won't have the pubkeys for i + 1, but will have the parent xpub for derivation. BOOST_CHECK(parse_pub->ExpandFromCache(i + 1, desc_cache, spk1_from_cache, script_provider_cached1)); BOOST_CHECK(spks1 == spk1_from_cache); - BOOST_CHECK(script_provider1.pubkeys == script_provider_cached1.pubkeys); + BOOST_CHECK(GetKeyData(script_provider1, flags) == GetKeyData(script_provider_cached1, flags)); BOOST_CHECK(script_provider1.scripts == script_provider_cached1.scripts); - BOOST_CHECK(script_provider1.origins == script_provider_cached1.origins); + BOOST_CHECK(GetKeyOriginData(script_provider1, flags) == GetKeyOriginData(script_provider_cached1, flags)); } // For each of the produced scripts, verify solvability, and when possible, try to sign a transaction spending it. @@ -269,7 +309,12 @@ void DoCheck(const std::string& prv, const std::string& pub, const std::string& CMutableTransaction spend; spend.vin.resize(1); spend.vout.resize(1); - BOOST_CHECK_MESSAGE(SignSignature(Merge(keys_priv, script_provider), spks[n], spend, 0, 1, SIGHASH_ALL), prv); + std::vector<CTxOut> utxos(1); + PrecomputedTransactionData txdata; + txdata.Init(spend, std::move(utxos), /* force */ true); + MutableTransactionSignatureCreator creator(&spend, 0, CAmount{0}, &txdata, SIGHASH_DEFAULT); + SignatureData sigdata; + BOOST_CHECK_MESSAGE(ProduceSignature(Merge(keys_priv, script_provider), creator, spks[n], sigdata), prv); } /* Infer a descriptor from the generated script, and verify its solvability and that it roundtrips. */ @@ -281,7 +326,7 @@ void DoCheck(const std::string& prv, const std::string& pub, const std::string& BOOST_CHECK_EQUAL(spks_inferred.size(), 1U); BOOST_CHECK(spks_inferred[0] == spks[n]); BOOST_CHECK_EQUAL(IsSolvable(provider_inferred, spks_inferred[0]), !(flags & UNSOLVABLE)); - BOOST_CHECK(provider_inferred.origins == script_provider.origins); + BOOST_CHECK(GetKeyOriginData(provider_inferred, flags) == GetKeyOriginData(script_provider, flags)); } // Test whether the observed key path is present in the 'paths' variable (which contains expected, unobserved paths), @@ -335,6 +380,7 @@ BOOST_AUTO_TEST_CASE(descriptor_test) Check("pkh([deadbeef/1/2'/3/4']L4rK1yDtCWekvXuE6oXD9jCYfFNV2cWRpVuPLBcCU2z8TrisoyY1)", "pkh([deadbeef/1/2'/3/4']03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd)", "pkh([deadbeef/1/2'/3/4']L4rK1yDtCWekvXuE6oXD9jCYfFNV2cWRpVuPLBcCU2z8TrisoyY1)", "pkh([deadbeef/1/2'/3/4']03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd)", SIGNABLE, {{"76a9149a1c78a507689f6f54b847ad1cef1e614ee23f1e88ac"}}, OutputType::LEGACY, {{1,0x80000002UL,3,0x80000004UL}}); Check("wpkh(L4rK1yDtCWekvXuE6oXD9jCYfFNV2cWRpVuPLBcCU2z8TrisoyY1)", "wpkh(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd)", "wpkh(L4rK1yDtCWekvXuE6oXD9jCYfFNV2cWRpVuPLBcCU2z8TrisoyY1)", "wpkh(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd)", SIGNABLE, {{"00149a1c78a507689f6f54b847ad1cef1e614ee23f1e"}}, OutputType::BECH32); Check("sh(wpkh(L4rK1yDtCWekvXuE6oXD9jCYfFNV2cWRpVuPLBcCU2z8TrisoyY1))", "sh(wpkh(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd))", "sh(wpkh(L4rK1yDtCWekvXuE6oXD9jCYfFNV2cWRpVuPLBcCU2z8TrisoyY1))", "sh(wpkh(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd))", SIGNABLE, {{"a91484ab21b1b2fd065d4504ff693d832434b6108d7b87"}}, OutputType::P2SH_SEGWIT); + Check("tr(L4rK1yDtCWekvXuE6oXD9jCYfFNV2cWRpVuPLBcCU2z8TrisoyY1)", "tr(a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd)", "tr(L4rK1yDtCWekvXuE6oXD9jCYfFNV2cWRpVuPLBcCU2z8TrisoyY1)", "tr(a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd)", SIGNABLE | XONLY_KEYS, {{"512077aab6e066f8a7419c5ab714c12c67d25007ed55a43cadcacb4d7a970a093f11"}}, OutputType::BECH32M); CheckUnparsable("sh(wpkh(L4rK1yDtCWekvXuE6oXD9jCYfFNV2cWRpVuPLBcCU2z8TrisoyY2))", "sh(wpkh(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5))", "Pubkey '03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5' is invalid"); // Invalid pubkey CheckUnparsable("pkh(deadbeef/1/2'/3/4']L4rK1yDtCWekvXuE6oXD9jCYfFNV2cWRpVuPLBcCU2z8TrisoyY1)", "pkh(deadbeef/1/2'/3/4']03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd)", "Key origin start '[ character expected but not found, got 'd' instead"); // Missing start bracket in key origin CheckUnparsable("pkh([deadbeef]/1/2'/3/4']L4rK1yDtCWekvXuE6oXD9jCYfFNV2cWRpVuPLBcCU2z8TrisoyY1)", "pkh([deadbeef]/1/2'/3/4']03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd)", "Multiple ']' characters found for a single pubkey"); // Multiple end brackets in key origin @@ -354,6 +400,7 @@ BOOST_AUTO_TEST_CASE(descriptor_test) Check("wsh(pkh(L4rK1yDtCWekvXuE6oXD9jCYfFNV2cWRpVuPLBcCU2z8TrisoyY1))", "wsh(pkh(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd))", "wsh(pkh(L4rK1yDtCWekvXuE6oXD9jCYfFNV2cWRpVuPLBcCU2z8TrisoyY1))", "wsh(pkh(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd))", SIGNABLE, {{"0020338e023079b91c58571b20e602d7805fb808c22473cbc391a41b1bd3a192e75b"}}, OutputType::BECH32); Check("sh(wsh(pk(L4rK1yDtCWekvXuE6oXD9jCYfFNV2cWRpVuPLBcCU2z8TrisoyY1)))", "sh(wsh(pk(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd)))", "sh(wsh(pk(L4rK1yDtCWekvXuE6oXD9jCYfFNV2cWRpVuPLBcCU2z8TrisoyY1)))", "sh(wsh(pk(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd)))", SIGNABLE, {{"a91472d0c5a3bfad8c3e7bd5303a72b94240e80b6f1787"}}, OutputType::P2SH_SEGWIT); Check("sh(wsh(pkh(L4rK1yDtCWekvXuE6oXD9jCYfFNV2cWRpVuPLBcCU2z8TrisoyY1)))", "sh(wsh(pkh(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd)))", "sh(wsh(pkh(L4rK1yDtCWekvXuE6oXD9jCYfFNV2cWRpVuPLBcCU2z8TrisoyY1)))", "sh(wsh(pkh(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd)))", SIGNABLE, {{"a914b61b92e2ca21bac1e72a3ab859a742982bea960a87"}}, OutputType::P2SH_SEGWIT); + Check("tr(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5,{pk(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5),{pk(L4rK1yDtCWekvXuE6oXD9jCYfFNV2cWRpVuPLBcCU2z8TrisoyY1),pk(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5)}})", "tr(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5,{pk(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5),{pk(a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd),pk(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5)}})", "tr(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5,{pk(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5),{pk(L4rK1yDtCWekvXuE6oXD9jCYfFNV2cWRpVuPLBcCU2z8TrisoyY1),pk(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5)}})", "tr(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5,{pk(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5),{pk(a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd),pk(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5)}})", XONLY_KEYS | SIGNABLE | MISSING_PRIVKEYS, {{"51201497ae16f30dacb88523ed9301bff17773b609e8a90518a3f96ea328a47d1500"}}, OutputType::BECH32M); // Versions with BIP32 derivations Check("combo([01234567]xprvA1RpRA33e1JQ7ifknakTFpgNXPmW2YvmhqLQYMmrj4xJXXWYpDPS3xz7iAxn8L39njGVyuoseXzU6rcxFLJ8HFsTjSyQbLYnMpCqE2VbFWc)", "combo([01234567]xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL)", "combo([01234567]xprvA1RpRA33e1JQ7ifknakTFpgNXPmW2YvmhqLQYMmrj4xJXXWYpDPS3xz7iAxn8L39njGVyuoseXzU6rcxFLJ8HFsTjSyQbLYnMpCqE2VbFWc)", "combo([01234567]xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL)", SIGNABLE, {{"2102d2b36900396c9282fa14628566582f206a5dd0bcc8d5e892611806cafb0301f0ac","76a91431a507b815593dfc51ffc7245ae7e5aee304246e88ac","001431a507b815593dfc51ffc7245ae7e5aee304246e","a9142aafb926eb247cb18240a7f4c07983ad1f37922687"}}, std::nullopt); @@ -362,6 +409,7 @@ BOOST_AUTO_TEST_CASE(descriptor_test) Check("wpkh([ffffffff/13']xprv9vHkqa6EV4sPZHYqZznhT2NPtPCjKuDKGY38FBWLvgaDx45zo9WQRUT3dKYnjwih2yJD9mkrocEZXo1ex8G81dwSM1fwqWpWkeS3v86pgKt/1/2/*)", "wpkh([ffffffff/13']xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*)", "wpkh([ffffffff/13']xprv9vHkqa6EV4sPZHYqZznhT2NPtPCjKuDKGY38FBWLvgaDx45zo9WQRUT3dKYnjwih2yJD9mkrocEZXo1ex8G81dwSM1fwqWpWkeS3v86pgKt/1/2/*)", "wpkh([ffffffff/13']xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*)", RANGE, {{"0014326b2249e3a25d5dc60935f044ee835d090ba859"},{"0014af0bd98abc2f2cae66e36896a39ffe2d32984fb7"},{"00141fa798efd1cbf95cebf912c031b8a4a6e9fb9f27"}}, OutputType::BECH32, {{0x8000000DUL, 1, 2, 0}, {0x8000000DUL, 1, 2, 1}, {0x8000000DUL, 1, 2, 2}}); Check("sh(wpkh(xprv9s21ZrQH143K3QTDL4LXw2F7HEK3wJUD2nW2nRk4stbPy6cq3jPPqjiChkVvvNKmPGJxWUtg6LnF5kejMRNNU3TGtRBeJgk33yuGBxrMPHi/10/20/30/40/*'))", "sh(wpkh(xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8/10/20/30/40/*'))", "sh(wpkh(xprv9s21ZrQH143K3QTDL4LXw2F7HEK3wJUD2nW2nRk4stbPy6cq3jPPqjiChkVvvNKmPGJxWUtg6LnF5kejMRNNU3TGtRBeJgk33yuGBxrMPHi/10/20/30/40/*'))", "sh(wpkh(xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8/10/20/30/40/*'))", RANGE | HARDENED | DERIVE_HARDENED, {{"a9149a4d9901d6af519b2a23d4a2f51650fcba87ce7b87"},{"a914bed59fc0024fae941d6e20a3b44a109ae740129287"},{"a9148483aa1116eb9c05c482a72bada4b1db24af654387"}}, OutputType::P2SH_SEGWIT, {{10, 20, 30, 40, 0x80000000UL}, {10, 20, 30, 40, 0x80000001UL}, {10, 20, 30, 40, 0x80000002UL}}); Check("combo(xprvA2JDeKCSNNZky6uBCviVfJSKyQ1mDYahRjijr5idH2WwLsEd4Hsb2Tyh8RfQMuPh7f7RtyzTtdrbdqqsunu5Mm3wDvUAKRHSC34sJ7in334/*)", "combo(xpub6FHa3pjLCk84BayeJxFW2SP4XRrFd1JYnxeLeU8EqN3vDfZmbqBqaGJAyiLjTAwm6ZLRQUMv1ZACTj37sR62cfN7fe5JnJ7dh8zL4fiyLHV/*)", "combo(xprvA2JDeKCSNNZky6uBCviVfJSKyQ1mDYahRjijr5idH2WwLsEd4Hsb2Tyh8RfQMuPh7f7RtyzTtdrbdqqsunu5Mm3wDvUAKRHSC34sJ7in334/*)", "combo(xpub6FHa3pjLCk84BayeJxFW2SP4XRrFd1JYnxeLeU8EqN3vDfZmbqBqaGJAyiLjTAwm6ZLRQUMv1ZACTj37sR62cfN7fe5JnJ7dh8zL4fiyLHV/*)", RANGE, {{"2102df12b7035bdac8e3bab862a3a83d06ea6b17b6753d52edecba9be46f5d09e076ac","76a914f90e3178ca25f2c808dc76624032d352fdbdfaf288ac","0014f90e3178ca25f2c808dc76624032d352fdbdfaf2","a91408f3ea8c68d4a7585bf9e8bda226723f70e445f087"},{"21032869a233c9adff9a994e4966e5b821fd5bac066da6c3112488dc52383b4a98ecac","76a914a8409d1b6dfb1ed2a3e8aa5e0ef2ff26b15b75b788ac","0014a8409d1b6dfb1ed2a3e8aa5e0ef2ff26b15b75b7","a91473e39884cb71ae4e5ac9739e9225026c99763e6687"}}, std::nullopt, {{0}, {1}}); + Check("tr(xprvA1RpRA33e1JQ7ifknakTFpgNXPmW2YvmhqLQYMmrj4xJXXWYpDPS3xz7iAxn8L39njGVyuoseXzU6rcxFLJ8HFsTjSyQbLYnMpCqE2VbFWc/0/*,pk(xprvA1RpRA33e1JQ7ifknakTFpgNXPmW2YvmhqLQYMmrj4xJXXWYpDPS3xz7iAxn8L39njGVyuoseXzU6rcxFLJ8HFsTjSyQbLYnMpCqE2VbFWc/1/*))", "tr(xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL/0/*,pk(xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL/1/*))", "tr(xprvA1RpRA33e1JQ7ifknakTFpgNXPmW2YvmhqLQYMmrj4xJXXWYpDPS3xz7iAxn8L39njGVyuoseXzU6rcxFLJ8HFsTjSyQbLYnMpCqE2VbFWc/0/*,pk(xprvA1RpRA33e1JQ7ifknakTFpgNXPmW2YvmhqLQYMmrj4xJXXWYpDPS3xz7iAxn8L39njGVyuoseXzU6rcxFLJ8HFsTjSyQbLYnMpCqE2VbFWc/1/*))", "tr(xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL/0/*,pk(xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL/1/*))", XONLY_KEYS | RANGE, {{"512078bc707124daa551b65af74de2ec128b7525e10f374dc67b64e00ce0ab8b3e12"}, {"512001f0a02a17808c20134b78faab80ef93ffba82261ccef0a2314f5d62b6438f11"}, {"512021024954fcec88237a9386fce80ef2ced5f1e91b422b26c59ccfc174c8d1ad25"}}, OutputType::BECH32M, {{0, 0}, {0, 1}, {0, 2}, {1, 0}, {1, 1}, {1, 2}}); // Mixed xpubs and const pubkeys Check("wsh(multi(1,xprvA2JDeKCSNNZky6uBCviVfJSKyQ1mDYahRjijr5idH2WwLsEd4Hsb2Tyh8RfQMuPh7f7RtyzTtdrbdqqsunu5Mm3wDvUAKRHSC34sJ7in334/0,L4rK1yDtCWekvXuE6oXD9jCYfFNV2cWRpVuPLBcCU2z8TrisoyY1))","wsh(multi(1,xpub6FHa3pjLCk84BayeJxFW2SP4XRrFd1JYnxeLeU8EqN3vDfZmbqBqaGJAyiLjTAwm6ZLRQUMv1ZACTj37sR62cfN7fe5JnJ7dh8zL4fiyLHV/0,03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd))","wsh(multi(1,xprvA2JDeKCSNNZky6uBCviVfJSKyQ1mDYahRjijr5idH2WwLsEd4Hsb2Tyh8RfQMuPh7f7RtyzTtdrbdqqsunu5Mm3wDvUAKRHSC34sJ7in334/0,L4rK1yDtCWekvXuE6oXD9jCYfFNV2cWRpVuPLBcCU2z8TrisoyY1))","wsh(multi(1,xpub6FHa3pjLCk84BayeJxFW2SP4XRrFd1JYnxeLeU8EqN3vDfZmbqBqaGJAyiLjTAwm6ZLRQUMv1ZACTj37sR62cfN7fe5JnJ7dh8zL4fiyLHV/0,03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd))", MIXED_PUBKEYS, {{"0020cb155486048b23a6da976d4c6fe071a2dbc8a7b57aaf225b8955f2e2a27b5f00"}},OutputType::BECH32,{{0},{}}); // Mixed range xpubs and const pubkeys @@ -380,6 +428,7 @@ BOOST_AUTO_TEST_CASE(descriptor_test) Check("sortedmulti(2,xprvA1RpRA33e1JQ7ifknakTFpgNXPmW2YvmhqLQYMmrj4xJXXWYpDPS3xz7iAxn8L39njGVyuoseXzU6rcxFLJ8HFsTjSyQbLYnMpCqE2VbFWc/*,xprv9uPDJpEQgRQfDcW7BkF7eTya6RPxXeJCqCJGHuCJ4GiRVLzkTXBAJMu2qaMWPrS7AANYqdq6vcBcBUdJCVVFceUvJFjaPdGZ2y9WACViL4L/0/0/*)", "sortedmulti(2,xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL/*,xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0/0/*)", "sortedmulti(2,xprvA1RpRA33e1JQ7ifknakTFpgNXPmW2YvmhqLQYMmrj4xJXXWYpDPS3xz7iAxn8L39njGVyuoseXzU6rcxFLJ8HFsTjSyQbLYnMpCqE2VbFWc/*,xprv9uPDJpEQgRQfDcW7BkF7eTya6RPxXeJCqCJGHuCJ4GiRVLzkTXBAJMu2qaMWPrS7AANYqdq6vcBcBUdJCVVFceUvJFjaPdGZ2y9WACViL4L/0/0/*)", "sortedmulti(2,xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL/*,xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y/0/0/*)", RANGE, {{"5221025d5fc65ebb8d44a5274b53bac21ff8307fec2334a32df05553459f8b1f7fe1b62102fbd47cc8034098f0e6a94c6aeee8528abf0a2153a5d8e46d325b7284c046784652ae"}, {"52210264fd4d1f5dea8ded94c61e9641309349b62f27fbffe807291f664e286bfbe6472103f4ece6dfccfa37b211eb3d0af4d0c61dba9ef698622dc17eecdf764beeb005a652ae"}, {"5221022ccabda84c30bad578b13c89eb3b9544ce149787e5b538175b1d1ba259cbb83321024d902e1a2fc7a8755ab5b694c575fce742c48d9ff192e63df5193e4c7afe1f9c52ae"}}, std::nullopt, {{0}, {1}, {2}, {0, 0, 0}, {0, 0, 1}, {0, 0, 2}}); Check("wsh(multi(2,xprv9s21ZrQH143K31xYSDQpPDxsXRTUcvj2iNHm5NUtrGiGG5e2DtALGdso3pGz6ssrdK4PFmM8NSpSBHNqPqm55Qn3LqFtT2emdEXVYsCzC2U/2147483647'/0,xprv9vHkqa6EV4sPZHYqZznhT2NPtPCjKuDKGY38FBWLvgaDx45zo9WQRUT3dKYnjwih2yJD9mkrocEZXo1ex8G81dwSM1fwqWpWkeS3v86pgKt/1/2/*,xprv9s21ZrQH143K3QTDL4LXw2F7HEK3wJUD2nW2nRk4stbPy6cq3jPPqjiChkVvvNKmPGJxWUtg6LnF5kejMRNNU3TGtRBeJgk33yuGBxrMPHi/10/20/30/40/*'))", "wsh(multi(2,xpub661MyMwAqRbcFW31YEwpkMuc5THy2PSt5bDMsktWQcFF8syAmRUapSCGu8ED9W6oDMSgv6Zz8idoc4a6mr8BDzTJY47LJhkJ8UB7WEGuduB/2147483647'/0,xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*,xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8/10/20/30/40/*'))", "wsh(multi(2,[bd16bee5/2147483647']xprv9vHkqa6XAPwKqSKSEJMcAB3yoCZhaSVsGZbSkFY5L3Lfjjk8sjZucbsbvEw5o3QrSA69nPfZDCgFnNnLhQ2ohpZuwummndnPasDw2Qr6dC2/0,xprv9vHkqa6EV4sPZHYqZznhT2NPtPCjKuDKGY38FBWLvgaDx45zo9WQRUT3dKYnjwih2yJD9mkrocEZXo1ex8G81dwSM1fwqWpWkeS3v86pgKt/1/2/*,xprv9s21ZrQH143K3QTDL4LXw2F7HEK3wJUD2nW2nRk4stbPy6cq3jPPqjiChkVvvNKmPGJxWUtg6LnF5kejMRNNU3TGtRBeJgk33yuGBxrMPHi/10/20/30/40/*'))", "wsh(multi(2,[bd16bee5/2147483647']xpub69H7F5dQzmVd3vPuLKtcXJziMEQByuDidnX3YdwgtNsecY5HRGtAAQC5mXTt4dsv9RzyjgDjAQs9VGVV6ydYCHnprc9vvaA5YtqWyL6hyds/0,xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*,xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8/10/20/30/40/*'))", HARDENED | RANGE | DERIVE_HARDENED, {{"0020b92623201f3bb7c3771d45b2ad1d0351ea8fbf8cfe0a0e570264e1075fa1948f"},{"002036a08bbe4923af41cf4316817c93b8d37e2f635dd25cfff06bd50df6ae7ea203"},{"0020a96e7ab4607ca6b261bfe3245ffda9c746b28d3f59e83d34820ec0e2b36c139c"}}, OutputType::BECH32, {{0xFFFFFFFFUL,0}, {1,2,0}, {1,2,1}, {1,2,2}, {10, 20, 30, 40, 0x80000000UL}, {10, 20, 30, 40, 0x80000001UL}, {10, 20, 30, 40, 0x80000002UL}}); Check("sh(wsh(multi(16,KzoAz5CanayRKex3fSLQ2BwJpN7U52gZvxMyk78nDMHuqrUxuSJy,KwGNz6YCCQtYvFzMtrC6D3tKTKdBBboMrLTsjr2NYVBwapCkn7Mr,KxogYhiNfwxuswvXV66eFyKcCpm7dZ7TqHVqujHAVUjJxyivxQ9X,L2BUNduTSyZwZjwNHynQTF14mv2uz2NRq5n5sYWTb4FkkmqgEE9f,L1okJGHGn1kFjdXHKxXjwVVtmCMR2JA5QsbKCSpSb7ReQjezKeoD,KxDCNSST75HFPaW5QKpzHtAyaCQC7p9Vo3FYfi2u4dXD1vgMiboK,L5edQjFtnkcf5UWURn6UuuoFrabgDQUHdheKCziwN42aLwS3KizU,KzF8UWFcEC7BYTq8Go1xVimMkDmyNYVmXV5PV7RuDicvAocoPB8i,L3nHUboKG2w4VSJ5jYZ5CBM97oeK6YuKvfZxrefdShECcjEYKMWZ,KyjHo36dWkYhimKmVVmQTq3gERv3pnqA4xFCpvUgbGDJad7eS8WE,KwsfyHKRUTZPQtysN7M3tZ4GXTnuov5XRgjdF2XCG8faAPmFruRF,KzCUbGhN9LJhdeFfL9zQgTJMjqxdBKEekRGZX24hXdgCNCijkkap,KzgpMBwwsDLwkaC5UrmBgCYaBD2WgZ7PBoGYXR8KT7gCA9UTN5a3,KyBXTPy4T7YG4q9tcAM3LkvfRpD1ybHMvcJ2ehaWXaSqeGUxEdkP,KzJDe9iwJRPtKP2F2AoN6zBgzS7uiuAwhWCfGdNeYJ3PC1HNJ8M8,L1xbHrxynrqLKkoYc4qtoQPx6uy5qYXR5ZDYVYBSRmCV5piU3JG9)))","sh(wsh(multi(16,03669b8afcec803a0d323e9a17f3ea8e68e8abe5a278020a929adbec52421adbd0,0260b2003c386519fc9eadf2b5cf124dd8eea4c4e68d5e154050a9346ea98ce600,0362a74e399c39ed5593852a30147f2959b56bb827dfa3e60e464b02ccf87dc5e8,0261345b53de74a4d721ef877c255429961b7e43714171ac06168d7e08c542a8b8,02da72e8b46901a65d4374fe6315538d8f368557dda3a1dcf9ea903f3afe7314c8,0318c82dd0b53fd3a932d16e0ba9e278fcc937c582d5781be626ff16e201f72286,0297ccef1ef99f9d73dec9ad37476ddb232f1238aff877af19e72ba04493361009,02e502cfd5c3f972fe9a3e2a18827820638f96b6f347e54d63deb839011fd5765d,03e687710f0e3ebe81c1037074da939d409c0025f17eb86adb9427d28f0f7ae0e9,02c04d3a5274952acdbc76987f3184b346a483d43be40874624b29e3692c1df5af,02ed06e0f418b5b43a7ec01d1d7d27290fa15f75771cb69b642a51471c29c84acd,036d46073cbb9ffee90473f3da429abc8de7f8751199da44485682a989a4bebb24,02f5d1ff7c9029a80a4e36b9a5497027ef7f3e73384a4a94fbfe7c4e9164eec8bc,02e41deffd1b7cce11cde209a781adcffdabd1b91c0ba0375857a2bfd9302419f3,02d76625f7956a7fc505ab02556c23ee72d832f1bac391bcd2d3abce5710a13d06,0399eb0a5487515802dc14544cf10b3666623762fbed2ec38a3975716e2c29c232)))", "sh(wsh(multi(16,KzoAz5CanayRKex3fSLQ2BwJpN7U52gZvxMyk78nDMHuqrUxuSJy,KwGNz6YCCQtYvFzMtrC6D3tKTKdBBboMrLTsjr2NYVBwapCkn7Mr,KxogYhiNfwxuswvXV66eFyKcCpm7dZ7TqHVqujHAVUjJxyivxQ9X,L2BUNduTSyZwZjwNHynQTF14mv2uz2NRq5n5sYWTb4FkkmqgEE9f,L1okJGHGn1kFjdXHKxXjwVVtmCMR2JA5QsbKCSpSb7ReQjezKeoD,KxDCNSST75HFPaW5QKpzHtAyaCQC7p9Vo3FYfi2u4dXD1vgMiboK,L5edQjFtnkcf5UWURn6UuuoFrabgDQUHdheKCziwN42aLwS3KizU,KzF8UWFcEC7BYTq8Go1xVimMkDmyNYVmXV5PV7RuDicvAocoPB8i,L3nHUboKG2w4VSJ5jYZ5CBM97oeK6YuKvfZxrefdShECcjEYKMWZ,KyjHo36dWkYhimKmVVmQTq3gERv3pnqA4xFCpvUgbGDJad7eS8WE,KwsfyHKRUTZPQtysN7M3tZ4GXTnuov5XRgjdF2XCG8faAPmFruRF,KzCUbGhN9LJhdeFfL9zQgTJMjqxdBKEekRGZX24hXdgCNCijkkap,KzgpMBwwsDLwkaC5UrmBgCYaBD2WgZ7PBoGYXR8KT7gCA9UTN5a3,KyBXTPy4T7YG4q9tcAM3LkvfRpD1ybHMvcJ2ehaWXaSqeGUxEdkP,KzJDe9iwJRPtKP2F2AoN6zBgzS7uiuAwhWCfGdNeYJ3PC1HNJ8M8,L1xbHrxynrqLKkoYc4qtoQPx6uy5qYXR5ZDYVYBSRmCV5piU3JG9)))","sh(wsh(multi(16,03669b8afcec803a0d323e9a17f3ea8e68e8abe5a278020a929adbec52421adbd0,0260b2003c386519fc9eadf2b5cf124dd8eea4c4e68d5e154050a9346ea98ce600,0362a74e399c39ed5593852a30147f2959b56bb827dfa3e60e464b02ccf87dc5e8,0261345b53de74a4d721ef877c255429961b7e43714171ac06168d7e08c542a8b8,02da72e8b46901a65d4374fe6315538d8f368557dda3a1dcf9ea903f3afe7314c8,0318c82dd0b53fd3a932d16e0ba9e278fcc937c582d5781be626ff16e201f72286,0297ccef1ef99f9d73dec9ad37476ddb232f1238aff877af19e72ba04493361009,02e502cfd5c3f972fe9a3e2a18827820638f96b6f347e54d63deb839011fd5765d,03e687710f0e3ebe81c1037074da939d409c0025f17eb86adb9427d28f0f7ae0e9,02c04d3a5274952acdbc76987f3184b346a483d43be40874624b29e3692c1df5af,02ed06e0f418b5b43a7ec01d1d7d27290fa15f75771cb69b642a51471c29c84acd,036d46073cbb9ffee90473f3da429abc8de7f8751199da44485682a989a4bebb24,02f5d1ff7c9029a80a4e36b9a5497027ef7f3e73384a4a94fbfe7c4e9164eec8bc,02e41deffd1b7cce11cde209a781adcffdabd1b91c0ba0375857a2bfd9302419f3,02d76625f7956a7fc505ab02556c23ee72d832f1bac391bcd2d3abce5710a13d06,0399eb0a5487515802dc14544cf10b3666623762fbed2ec38a3975716e2c29c232)))", SIGNABLE, {{"a9147fc63e13dc25e8a95a3cee3d9a714ac3afd96f1e87"}}, OutputType::P2SH_SEGWIT); + Check("tr(L4rK1yDtCWekvXuE6oXD9jCYfFNV2cWRpVuPLBcCU2z8TrisoyY1,pk(KzoAz5CanayRKex3fSLQ2BwJpN7U52gZvxMyk78nDMHuqrUxuSJy))", "tr(a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd,pk(669b8afcec803a0d323e9a17f3ea8e68e8abe5a278020a929adbec52421adbd0))", "tr(L4rK1yDtCWekvXuE6oXD9jCYfFNV2cWRpVuPLBcCU2z8TrisoyY1,pk(KzoAz5CanayRKex3fSLQ2BwJpN7U52gZvxMyk78nDMHuqrUxuSJy))", "tr(a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd,pk(669b8afcec803a0d323e9a17f3ea8e68e8abe5a278020a929adbec52421adbd0))", SIGNABLE | XONLY_KEYS, {{"512017cf18db381d836d8923b1bdb246cfcd818da1a9f0e6e7907f187f0b2f937754"}}, OutputType::BECH32M); CheckUnparsable("sh(multi(16,KzoAz5CanayRKex3fSLQ2BwJpN7U52gZvxMyk78nDMHuqrUxuSJy,KwGNz6YCCQtYvFzMtrC6D3tKTKdBBboMrLTsjr2NYVBwapCkn7Mr,KxogYhiNfwxuswvXV66eFyKcCpm7dZ7TqHVqujHAVUjJxyivxQ9X,L2BUNduTSyZwZjwNHynQTF14mv2uz2NRq5n5sYWTb4FkkmqgEE9f,L1okJGHGn1kFjdXHKxXjwVVtmCMR2JA5QsbKCSpSb7ReQjezKeoD,KxDCNSST75HFPaW5QKpzHtAyaCQC7p9Vo3FYfi2u4dXD1vgMiboK,L5edQjFtnkcf5UWURn6UuuoFrabgDQUHdheKCziwN42aLwS3KizU,KzF8UWFcEC7BYTq8Go1xVimMkDmyNYVmXV5PV7RuDicvAocoPB8i,L3nHUboKG2w4VSJ5jYZ5CBM97oeK6YuKvfZxrefdShECcjEYKMWZ,KyjHo36dWkYhimKmVVmQTq3gERv3pnqA4xFCpvUgbGDJad7eS8WE,KwsfyHKRUTZPQtysN7M3tZ4GXTnuov5XRgjdF2XCG8faAPmFruRF,KzCUbGhN9LJhdeFfL9zQgTJMjqxdBKEekRGZX24hXdgCNCijkkap,KzgpMBwwsDLwkaC5UrmBgCYaBD2WgZ7PBoGYXR8KT7gCA9UTN5a3,KyBXTPy4T7YG4q9tcAM3LkvfRpD1ybHMvcJ2ehaWXaSqeGUxEdkP,KzJDe9iwJRPtKP2F2AoN6zBgzS7uiuAwhWCfGdNeYJ3PC1HNJ8M8,L1xbHrxynrqLKkoYc4qtoQPx6uy5qYXR5ZDYVYBSRmCV5piU3JG9))","sh(multi(16,03669b8afcec803a0d323e9a17f3ea8e68e8abe5a278020a929adbec52421adbd0,0260b2003c386519fc9eadf2b5cf124dd8eea4c4e68d5e154050a9346ea98ce600,0362a74e399c39ed5593852a30147f2959b56bb827dfa3e60e464b02ccf87dc5e8,0261345b53de74a4d721ef877c255429961b7e43714171ac06168d7e08c542a8b8,02da72e8b46901a65d4374fe6315538d8f368557dda3a1dcf9ea903f3afe7314c8,0318c82dd0b53fd3a932d16e0ba9e278fcc937c582d5781be626ff16e201f72286,0297ccef1ef99f9d73dec9ad37476ddb232f1238aff877af19e72ba04493361009,02e502cfd5c3f972fe9a3e2a18827820638f96b6f347e54d63deb839011fd5765d,03e687710f0e3ebe81c1037074da939d409c0025f17eb86adb9427d28f0f7ae0e9,02c04d3a5274952acdbc76987f3184b346a483d43be40874624b29e3692c1df5af,02ed06e0f418b5b43a7ec01d1d7d27290fa15f75771cb69b642a51471c29c84acd,036d46073cbb9ffee90473f3da429abc8de7f8751199da44485682a989a4bebb24,02f5d1ff7c9029a80a4e36b9a5497027ef7f3e73384a4a94fbfe7c4e9164eec8bc,02e41deffd1b7cce11cde209a781adcffdabd1b91c0ba0375857a2bfd9302419f3,02d76625f7956a7fc505ab02556c23ee72d832f1bac391bcd2d3abce5710a13d06,0399eb0a5487515802dc14544cf10b3666623762fbed2ec38a3975716e2c29c232))", "P2SH script is too large, 547 bytes is larger than 520 bytes"); // P2SH does not fit 16 compressed pubkeys in a redeemscript CheckUnparsable("wsh(multi(2,[aaaaaaaa][aaaaaaaa]xprv9s21ZrQH143K31xYSDQpPDxsXRTUcvj2iNHm5NUtrGiGG5e2DtALGdso3pGz6ssrdK4PFmM8NSpSBHNqPqm55Qn3LqFtT2emdEXVYsCzC2U/2147483647'/0,xprv9vHkqa6EV4sPZHYqZznhT2NPtPCjKuDKGY38FBWLvgaDx45zo9WQRUT3dKYnjwih2yJD9mkrocEZXo1ex8G81dwSM1fwqWpWkeS3v86pgKt/1/2/*,xprv9s21ZrQH143K3QTDL4LXw2F7HEK3wJUD2nW2nRk4stbPy6cq3jPPqjiChkVvvNKmPGJxWUtg6LnF5kejMRNNU3TGtRBeJgk33yuGBxrMPHi/10/20/30/40/*'))", "wsh(multi(2,[aaaaaaaa][aaaaaaaa]xpub661MyMwAqRbcFW31YEwpkMuc5THy2PSt5bDMsktWQcFF8syAmRUapSCGu8ED9W6oDMSgv6Zz8idoc4a6mr8BDzTJY47LJhkJ8UB7WEGuduB/2147483647'/0,xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*,xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8/10/20/30/40/*'))", "Multiple ']' characters found for a single pubkey"); // Double key origin descriptor CheckUnparsable("wsh(multi(2,[aaaagaaa]xprv9s21ZrQH143K31xYSDQpPDxsXRTUcvj2iNHm5NUtrGiGG5e2DtALGdso3pGz6ssrdK4PFmM8NSpSBHNqPqm55Qn3LqFtT2emdEXVYsCzC2U/2147483647'/0,xprv9vHkqa6EV4sPZHYqZznhT2NPtPCjKuDKGY38FBWLvgaDx45zo9WQRUT3dKYnjwih2yJD9mkrocEZXo1ex8G81dwSM1fwqWpWkeS3v86pgKt/1/2/*,xprv9s21ZrQH143K3QTDL4LXw2F7HEK3wJUD2nW2nRk4stbPy6cq3jPPqjiChkVvvNKmPGJxWUtg6LnF5kejMRNNU3TGtRBeJgk33yuGBxrMPHi/10/20/30/40/*'))", "wsh(multi(2,[aaagaaaa]xpub661MyMwAqRbcFW31YEwpkMuc5THy2PSt5bDMsktWQcFF8syAmRUapSCGu8ED9W6oDMSgv6Zz8idoc4a6mr8BDzTJY47LJhkJ8UB7WEGuduB/2147483647'/0,xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/1/2/*,xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8/10/20/30/40/*'))", "Fingerprint 'aaagaaaa' is not hex"); // Non hex fingerprint diff --git a/src/test/fs_tests.cpp b/src/test/fs_tests.cpp index 313064b294..5875f0218f 100644 --- a/src/test/fs_tests.cpp +++ b/src/test/fs_tests.cpp @@ -152,7 +152,7 @@ BOOST_AUTO_TEST_CASE(rename) fs::remove(path2); } -#ifndef WIN32 +#ifndef __MINGW64__ // no symlinks on mingw BOOST_AUTO_TEST_CASE(create_directories) { // Test fs::create_directories workaround. @@ -174,6 +174,6 @@ BOOST_AUTO_TEST_CASE(create_directories) fs::remove(symlink); fs::remove(dir); } -#endif // WIN32 +#endif // __MINGW64__ BOOST_AUTO_TEST_SUITE_END() diff --git a/src/test/fuzz/addition_overflow.cpp b/src/test/fuzz/addition_overflow.cpp index cfad41659e..372c1a370e 100644 --- a/src/test/fuzz/addition_overflow.cpp +++ b/src/test/fuzz/addition_overflow.cpp @@ -26,6 +26,12 @@ void TestAdditionOverflow(FuzzedDataProvider& fuzzed_data_provider) const T i = fuzzed_data_provider.ConsumeIntegral<T>(); const T j = fuzzed_data_provider.ConsumeIntegral<T>(); const bool is_addition_overflow_custom = AdditionOverflow(i, j); + const auto maybe_add{CheckedAdd(i, j)}; + const auto sat_add{SaturatingAdd(i, j)}; + assert(is_addition_overflow_custom == !maybe_add.has_value()); + assert(is_addition_overflow_custom == AdditionOverflow(j, i)); + assert(maybe_add == CheckedAdd(j, i)); + assert(sat_add == SaturatingAdd(j, i)); #if defined(HAVE_BUILTIN_ADD_OVERFLOW) T result_builtin; const bool is_addition_overflow_builtin = __builtin_add_overflow(i, j, &result_builtin); @@ -33,11 +39,14 @@ void TestAdditionOverflow(FuzzedDataProvider& fuzzed_data_provider) if (!is_addition_overflow_custom) { assert(i + j == result_builtin); } -#else - if (!is_addition_overflow_custom) { - (void)(i + j); - } #endif + if (is_addition_overflow_custom) { + assert(sat_add == std::numeric_limits<T>::min() || sat_add == std::numeric_limits<T>::max()); + } else { + const auto add{i + j}; + assert(add == maybe_add.value()); + assert(add == sat_add); + } } } // namespace diff --git a/src/test/fuzz/addrman.cpp b/src/test/fuzz/addrman.cpp index 3699abb597..ba917dec2a 100644 --- a/src/test/fuzz/addrman.cpp +++ b/src/test/fuzz/addrman.cpp @@ -137,7 +137,7 @@ public: * - vvNew entries refer to the same addresses * - vvTried entries refer to the same addresses */ - bool operator==(const AddrManDeterministic& other) + bool operator==(const AddrManDeterministic& other) const { LOCK2(m_impl->cs, other.m_impl->cs); diff --git a/src/test/serialize_tests.cpp b/src/test/serialize_tests.cpp index 2441847f99..8c7c650cb1 100644 --- a/src/test/serialize_tests.cpp +++ b/src/test/serialize_tests.cpp @@ -38,13 +38,13 @@ public: READWRITE(obj.txval); } - bool operator==(const CSerializeMethodsTestSingle& rhs) + bool operator==(const CSerializeMethodsTestSingle& rhs) const { - return intval == rhs.intval && \ - boolval == rhs.boolval && \ - stringval == rhs.stringval && \ - strcmp(charstrval, rhs.charstrval) == 0 && \ - *txval == *rhs.txval; + return intval == rhs.intval && + boolval == rhs.boolval && + stringval == rhs.stringval && + strcmp(charstrval, rhs.charstrval) == 0 && + *txval == *rhs.txval; } }; diff --git a/src/test/txpackage_tests.cpp b/src/test/txpackage_tests.cpp index 560efb6b42..6013080dc6 100644 --- a/src/test/txpackage_tests.cpp +++ b/src/test/txpackage_tests.cpp @@ -413,6 +413,17 @@ BOOST_FIXTURE_TEST_CASE(package_witness_swap_tests, TestChain100Setup) BOOST_CHECK(m_node.mempool->exists(GenTxid::Txid(ptx_child2->GetHash()))); BOOST_CHECK(!m_node.mempool->exists(GenTxid::Wtxid(ptx_child2->GetWitnessHash()))); + + // Deduplication should work when wtxid != txid. Submit package with the already-in-mempool + // transactions again, which should not fail. + const auto submit_segwit_dedup = ProcessNewPackage(m_node.chainman->ActiveChainstate(), *m_node.mempool, + {ptx_parent, ptx_child1}, /*test_accept=*/ false); + BOOST_CHECK_MESSAGE(submit_segwit_dedup.m_state.IsValid(), + "Package validation unexpectedly failed: " << submit_segwit_dedup.m_state.GetRejectReason()); + auto it_parent_dup = submit_segwit_dedup.m_tx_results.find(ptx_parent->GetWitnessHash()); + auto it_child_dup = submit_segwit_dedup.m_tx_results.find(ptx_child1->GetWitnessHash()); + BOOST_CHECK(it_parent_dup->second.m_result_type == MempoolAcceptResult::ResultType::MEMPOOL_ENTRY); + BOOST_CHECK(it_child_dup->second.m_result_type == MempoolAcceptResult::ResultType::MEMPOOL_ENTRY); } // Try submitting Package1{child2, grandchild} where child2 is same-txid-different-witness as diff --git a/src/test/util_tests.cpp b/src/test/util_tests.cpp index 52b24327ec..9f78215de2 100644 --- a/src/test/util_tests.cpp +++ b/src/test/util_tests.cpp @@ -1286,7 +1286,7 @@ BOOST_AUTO_TEST_CASE(util_ParseMoney) BOOST_CHECK_EQUAL(ParseMoney("0.00000001 ").value(), COIN/100000000); BOOST_CHECK_EQUAL(ParseMoney(" 0.00000001").value(), COIN/100000000); - // Parsing amount that can not be represented should fail + // Parsing amount that cannot be represented should fail BOOST_CHECK(!ParseMoney("100000000.00")); BOOST_CHECK(!ParseMoney("0.000000001")); @@ -1474,9 +1474,17 @@ static void TestAddMatrixOverflow() constexpr T MAXI{std::numeric_limits<T>::max()}; BOOST_CHECK(!CheckedAdd(T{1}, MAXI)); BOOST_CHECK(!CheckedAdd(MAXI, MAXI)); + BOOST_CHECK_EQUAL(MAXI, SaturatingAdd(T{1}, MAXI)); + BOOST_CHECK_EQUAL(MAXI, SaturatingAdd(MAXI, MAXI)); + BOOST_CHECK_EQUAL(0, CheckedAdd(T{0}, T{0}).value()); BOOST_CHECK_EQUAL(MAXI, CheckedAdd(T{0}, MAXI).value()); BOOST_CHECK_EQUAL(MAXI, CheckedAdd(T{1}, MAXI - 1).value()); + BOOST_CHECK_EQUAL(MAXI - 1, CheckedAdd(T{1}, MAXI - 2).value()); + BOOST_CHECK_EQUAL(0, SaturatingAdd(T{0}, T{0})); + BOOST_CHECK_EQUAL(MAXI, SaturatingAdd(T{0}, MAXI)); + BOOST_CHECK_EQUAL(MAXI, SaturatingAdd(T{1}, MAXI - 1)); + BOOST_CHECK_EQUAL(MAXI - 1, SaturatingAdd(T{1}, MAXI - 2)); } /* Check for overflow or underflow */ @@ -1488,9 +1496,17 @@ static void TestAddMatrix() constexpr T MAXI{std::numeric_limits<T>::max()}; BOOST_CHECK(!CheckedAdd(T{-1}, MINI)); BOOST_CHECK(!CheckedAdd(MINI, MINI)); + BOOST_CHECK_EQUAL(MINI, SaturatingAdd(T{-1}, MINI)); + BOOST_CHECK_EQUAL(MINI, SaturatingAdd(MINI, MINI)); + BOOST_CHECK_EQUAL(MINI, CheckedAdd(T{0}, MINI).value()); BOOST_CHECK_EQUAL(MINI, CheckedAdd(T{-1}, MINI + 1).value()); BOOST_CHECK_EQUAL(-1, CheckedAdd(MINI, MAXI).value()); + BOOST_CHECK_EQUAL(MINI + 1, CheckedAdd(T{-1}, MINI + 2).value()); + BOOST_CHECK_EQUAL(MINI, SaturatingAdd(T{0}, MINI)); + BOOST_CHECK_EQUAL(MINI, SaturatingAdd(T{-1}, MINI + 1)); + BOOST_CHECK_EQUAL(MINI + 1, SaturatingAdd(T{-1}, MINI + 2)); + BOOST_CHECK_EQUAL(-1, SaturatingAdd(MINI, MAXI)); } BOOST_AUTO_TEST_CASE(util_overflow) diff --git a/src/txdb.cpp b/src/txdb.cpp index 5e4379a60a..9a39e90ccd 100644 --- a/src/txdb.cpp +++ b/src/txdb.cpp @@ -36,7 +36,7 @@ std::optional<bilingual_str> CheckLegacyTxindex(CBlockTreeDB& block_tree_db) { CBlockLocator ignored{}; if (block_tree_db.Read(DB_TXINDEX_BLOCK, ignored)) { - return _("The -txindex upgrade started by a previous version can not be completed. Restart with the previous version or run a full -reindex."); + return _("The -txindex upgrade started by a previous version cannot be completed. Restart with the previous version or run a full -reindex."); } bool txindex_legacy_flag{false}; block_tree_db.ReadFlag("txindex", txindex_legacy_flag); diff --git a/src/util/overflow.h b/src/util/overflow.h index 5982af8d04..6b7dd1e8fd 100644 --- a/src/util/overflow.h +++ b/src/util/overflow.h @@ -6,13 +6,14 @@ #define BITCOIN_UTIL_OVERFLOW_H #include <limits> +#include <optional> #include <type_traits> template <class T> [[nodiscard]] bool AdditionOverflow(const T i, const T j) noexcept { static_assert(std::is_integral<T>::value, "Integral required."); - if (std::numeric_limits<T>::is_signed) { + if constexpr (std::numeric_limits<T>::is_signed) { return (i > 0 && j > std::numeric_limits<T>::max() - i) || (i < 0 && j < std::numeric_limits<T>::min() - i); } @@ -28,4 +29,22 @@ template <class T> return i + j; } +template <class T> +[[nodiscard]] T SaturatingAdd(const T i, const T j) noexcept +{ + if constexpr (std::numeric_limits<T>::is_signed) { + if (i > 0 && j > std::numeric_limits<T>::max() - i) { + return std::numeric_limits<T>::max(); + } + if (i < 0 && j < std::numeric_limits<T>::min() - i) { + return std::numeric_limits<T>::min(); + } + } else { + if (std::numeric_limits<T>::max() - i < j) { + return std::numeric_limits<T>::max(); + } + } + return i + j; +} + #endif // BITCOIN_UTIL_OVERFLOW_H diff --git a/src/util/system.cpp b/src/util/system.cpp index 69811a751b..aa9122106b 100644 --- a/src/util/system.cpp +++ b/src/util/system.cpp @@ -1342,18 +1342,6 @@ int GetNumCores() return std::thread::hardware_concurrency(); } -std::string CopyrightHolders(const std::string& strPrefix) -{ - const auto copyright_devs = strprintf(_(COPYRIGHT_HOLDERS).translated, COPYRIGHT_HOLDERS_SUBSTITUTION); - std::string strCopyrightHolders = strPrefix + copyright_devs; - - // Make sure Bitcoin Core copyright is not removed by accident - if (copyright_devs.find("Bitcoin Core") == std::string::npos) { - strCopyrightHolders += "\n" + strPrefix + "The Bitcoin Core developers"; - } - return strCopyrightHolders; -} - // Obtain the application startup time (used for uptime calculation) int64_t GetStartupTime() { diff --git a/src/util/system.h b/src/util/system.h index a72ba3f3ed..f193c8ac0b 100644 --- a/src/util/system.h +++ b/src/util/system.h @@ -512,8 +512,6 @@ std::string HelpMessageOpt(const std::string& option, const std::string& message */ int GetNumCores(); -std::string CopyrightHolders(const std::string& strPrefix); - /** * On platforms that support it, tell the kernel the calling thread is * CPU-intensive and non-interactive. See SCHED_BATCH in sched(7) for details. diff --git a/src/validation.cpp b/src/validation.cpp index 2813b62462..035b5783c3 100644 --- a/src/validation.cpp +++ b/src/validation.cpp @@ -915,12 +915,15 @@ bool MemPoolAccept::ReplacementChecks(Workspace& ws) TxValidationState& state = ws.m_state; CFeeRate newFeeRate(ws.m_modified_fees, ws.m_vsize); - // It's possible that the replacement pays more fees than its direct conflicts but not more - // than all conflicts (i.e. the direct conflicts have high-fee descendants). However, if the - // replacement doesn't pay more fees than its direct conflicts, then we can be sure it's not - // more economically rational to mine. Before we go digging through the mempool for all - // transactions that would need to be removed (direct conflicts and all descendants), check - // that the replacement transaction pays more than its direct conflicts. + // The replacement transaction must have a higher feerate than its direct conflicts. + // - The motivation for this check is to ensure that the replacement transaction is preferable for + // block-inclusion, compared to what would be removed from the mempool. + // - This logic predates ancestor feerate-based transaction selection, which is why it doesn't + // consider feerates of descendants. + // - Note: Ancestor feerate-based transaction selection has made this comparison insufficient to + // guarantee that this is incentive-compatible for miners, because it is possible for a + // descendant transaction of a direct conflict to pay a higher feerate than the transaction that + // might replace them, under these rules. if (const auto err_string{PaysMoreThanConflicts(ws.m_iters_conflicting, newFeeRate, hash)}) { return state.Invalid(TxValidationResult::TX_MEMPOOL_POLICY, "insufficient fee", *err_string); } @@ -1318,7 +1321,7 @@ PackageMempoolAcceptResult MemPoolAccept::AcceptPackage(const Package& package, // we know is that the inputs aren't available. if (m_pool.exists(GenTxid::Wtxid(wtxid))) { // Exact transaction already exists in the mempool. - auto iter = m_pool.GetIter(wtxid); + auto iter = m_pool.GetIter(txid); assert(iter != std::nullopt); results.emplace(wtxid, MempoolAcceptResult::MempoolTx(iter.value()->GetTxSize(), iter.value()->GetFee())); } else if (m_pool.exists(GenTxid::Txid(txid))) { @@ -2074,7 +2077,7 @@ bool CChainState::ConnectBlock(const CBlock& block, BlockValidationState& state, fEnforceBIP30 = fEnforceBIP30 && (!pindexBIP34height || !(pindexBIP34height->GetBlockHash() == m_params.GetConsensus().BIP34Hash)); // TODO: Remove BIP30 checking from block height 1,983,702 on, once we have a - // consensus change that ensures coinbases at those heights can not + // consensus change that ensures coinbases at those heights cannot // duplicate earlier coinbases. if (fEnforceBIP30 || pindex->nHeight >= BIP34_IMPLIES_BIP30_LIMIT) { for (const auto& tx : block.vtx) { diff --git a/src/validation.h b/src/validation.h index 968f62aa9a..7766d77a88 100644 --- a/src/validation.h +++ b/src/validation.h @@ -90,7 +90,7 @@ static const int DEFAULT_STOPATHEIGHT = 0; /** Block files containing a block-height within MIN_BLOCKS_TO_KEEP of ActiveChain().Tip() will not be pruned. */ static const unsigned int MIN_BLOCKS_TO_KEEP = 288; static const signed int DEFAULT_CHECKBLOCKS = 6; -static const unsigned int DEFAULT_CHECKLEVEL = 3; +static constexpr int DEFAULT_CHECKLEVEL{3}; // Require that user allocate at least 550 MiB for block & undo files (blk???.dat and rev???.dat) // At 1MB per block, 288 blocks = 288MB. // Add 15% for Undo data = 331MB diff --git a/src/wallet/rpc/encrypt.cpp b/src/wallet/rpc/encrypt.cpp index 2b6a2a198d..802cc63d6d 100644 --- a/src/wallet/rpc/encrypt.cpp +++ b/src/wallet/rpc/encrypt.cpp @@ -66,7 +66,7 @@ RPCHelpMan walletpassphrase() } if (strWalletPass.empty()) { - throw JSONRPCError(RPC_INVALID_PARAMETER, "passphrase can not be empty"); + throw JSONRPCError(RPC_INVALID_PARAMETER, "passphrase cannot be empty"); } if (!pwallet->Unlock(strWalletPass)) { @@ -139,7 +139,7 @@ RPCHelpMan walletpassphrasechange() strNewWalletPass = request.params[1].get_str().c_str(); if (strOldWalletPass.empty() || strNewWalletPass.empty()) { - throw JSONRPCError(RPC_INVALID_PARAMETER, "passphrase can not be empty"); + throw JSONRPCError(RPC_INVALID_PARAMETER, "passphrase cannot be empty"); } if (!pwallet->ChangeWalletPassphrase(strOldWalletPass, strNewWalletPass)) { @@ -236,7 +236,7 @@ RPCHelpMan encryptwallet() strWalletPass = request.params[0].get_str().c_str(); if (strWalletPass.empty()) { - throw JSONRPCError(RPC_INVALID_PARAMETER, "passphrase can not be empty"); + throw JSONRPCError(RPC_INVALID_PARAMETER, "passphrase cannot be empty"); } if (!pwallet->EncryptWallet(strWalletPass)) { diff --git a/src/wallet/spend.cpp b/src/wallet/spend.cpp index 3d8ae2da69..83eaececc1 100644 --- a/src/wallet/spend.cpp +++ b/src/wallet/spend.cpp @@ -778,7 +778,7 @@ static bool CreateTransactionInternal( } else if ((unsigned int)nChangePosInOut > txNew.vout.size()) { - error = _("Change index out of range"); + error = _("Transaction change output index out of range"); return false; } diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp index 11379e1cd2..6cf9f9ce74 100644 --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -1027,7 +1027,8 @@ bool CWallet::LoadToWallet(const uint256& hash, const UpdateWalletTxFn& fill_wtx if (!fill_wtx(wtx, ins.second)) { return false; } - // If wallet doesn't have a chain (e.g wallet-tool), don't bother to update txn. + // If wallet doesn't have a chain (e.g when using bitcoin-wallet tool), + // don't bother to update txn. if (HaveChain()) { bool active; auto lookup_block = [&](const uint256& hash, int& height, TxState& state) { diff --git a/test/functional/feature_dirsymlinks.py b/test/functional/feature_dirsymlinks.py index 85c8e27600..288754c04c 100755 --- a/test/functional/feature_dirsymlinks.py +++ b/test/functional/feature_dirsymlinks.py @@ -6,9 +6,8 @@ """ import os -import sys -from test_framework.test_framework import BitcoinTestFramework, SkipTest +from test_framework.test_framework import BitcoinTestFramework def rename_and_link(*, from_name, to_name): @@ -16,24 +15,27 @@ def rename_and_link(*, from_name, to_name): os.symlink(to_name, from_name) assert os.path.islink(from_name) and os.path.isdir(from_name) -class SymlinkTest(BitcoinTestFramework): - def skip_test_if_missing_module(self): - if sys.platform == 'win32': - raise SkipTest("Symlinks test skipped on Windows") +class SymlinkTest(BitcoinTestFramework): def set_test_params(self): self.num_nodes = 1 def run_test(self): + dir_new_blocks = self.nodes[0].chain_path / "new_blocks" + dir_new_chainstate = self.nodes[0].chain_path / "new_chainstate" self.stop_node(0) - rename_and_link(from_name=os.path.join(self.nodes[0].datadir, self.chain, "blocks"), - to_name=os.path.join(self.nodes[0].datadir, self.chain, "newblocks")) - rename_and_link(from_name=os.path.join(self.nodes[0].datadir, self.chain, "chainstate"), - to_name=os.path.join(self.nodes[0].datadir, self.chain, "newchainstate")) + rename_and_link( + from_name=self.nodes[0].chain_path / "blocks", + to_name=dir_new_blocks, + ) + rename_and_link( + from_name=self.nodes[0].chain_path / "chainstate", + to_name=dir_new_chainstate, + ) self.start_node(0) -if __name__ == '__main__': +if __name__ == "__main__": SymlinkTest().main() diff --git a/test/functional/feature_txindex_compatibility.py b/test/functional/feature_txindex_compatibility.py index bbe1d1b537..20b023d82c 100755 --- a/test/functional/feature_txindex_compatibility.py +++ b/test/functional/feature_txindex_compatibility.py @@ -78,7 +78,7 @@ class MempoolCompatibilityTest(BitcoinTestFramework): self.stop_nodes() - self.log.info("Check migrated txindex can not be read by legacy node") + self.log.info("Check migrated txindex cannot be read by legacy node") err_msg = f": You need to rebuild the database using -reindex to change -txindex.{os.linesep}Please restart with -reindex or -reindex-chainstate to recover." shutil.rmtree(legacy_chain_dir) shutil.copytree(migrate_chain_dir, legacy_chain_dir) diff --git a/test/functional/rpc_decodescript.py b/test/functional/rpc_decodescript.py index 56f596d419..343cb73989 100755 --- a/test/functional/rpc_decodescript.py +++ b/test/functional/rpc_decodescript.py @@ -52,7 +52,7 @@ class DecodeScriptTest(BitcoinTestFramework): rpc_result = self.nodes[0].decodescript('5100') assert_equal('1 0', rpc_result['asm']) - # null data scriptSig - no such thing because null data scripts can not be spent. + # null data scriptSig - no such thing because null data scripts cannot be spent. # thus, no test case for that standard transaction type is here. def decodescript_script_pub_key(self): diff --git a/test/functional/rpc_help.py b/test/functional/rpc_help.py index ccb380e25b..3b6413d4a6 100755 --- a/test/functional/rpc_help.py +++ b/test/functional/rpc_help.py @@ -100,7 +100,7 @@ class HelpRpcTest(BitcoinTestFramework): # command titles titles = [line[3:-3] for line in node.help().splitlines() if line.startswith('==')] - components = ['Blockchain', 'Control', 'Generating', 'Mining', 'Network', 'Rawtransactions', 'Util'] + components = ['Blockchain', 'Control', 'Mining', 'Network', 'Rawtransactions', 'Util'] if self.is_wallet_compiled(): components.append('Wallet') diff --git a/test/functional/rpc_uptime.py b/test/functional/rpc_uptime.py index 1a82d1fa41..024e8aec1a 100755 --- a/test/functional/rpc_uptime.py +++ b/test/functional/rpc_uptime.py @@ -23,7 +23,7 @@ class UptimeTest(BitcoinTestFramework): self._test_uptime() def _test_negative_time(self): - assert_raises_rpc_error(-8, "Mocktime can not be negative: -1.", self.nodes[0].setmocktime, -1) + assert_raises_rpc_error(-8, "Mocktime cannot be negative: -1.", self.nodes[0].setmocktime, -1) def _test_uptime(self): wait_time = 10 diff --git a/test/functional/wallet_encryption.py b/test/functional/wallet_encryption.py index 0d702e44f6..0c9106f800 100755 --- a/test/functional/wallet_encryption.py +++ b/test/functional/wallet_encryption.py @@ -35,14 +35,14 @@ class WalletEncryptionTest(BitcoinTestFramework): assert_raises_rpc_error(-15, "Error: running with an unencrypted wallet, but walletpassphrasechange was called.", self.nodes[0].walletpassphrasechange, 'ff', 'ff') # Encrypt the wallet - assert_raises_rpc_error(-8, "passphrase can not be empty", self.nodes[0].encryptwallet, '') + assert_raises_rpc_error(-8, "passphrase cannot be empty", self.nodes[0].encryptwallet, '') self.nodes[0].encryptwallet(passphrase) # Test that the wallet is encrypted assert_raises_rpc_error(-13, "Please enter the wallet passphrase with walletpassphrase first", self.nodes[0].signmessage, address, msg) assert_raises_rpc_error(-15, "Error: running with an encrypted wallet, but encryptwallet was called.", self.nodes[0].encryptwallet, 'ff') - assert_raises_rpc_error(-8, "passphrase can not be empty", self.nodes[0].walletpassphrase, '', 1) - assert_raises_rpc_error(-8, "passphrase can not be empty", self.nodes[0].walletpassphrasechange, '', 'ff') + assert_raises_rpc_error(-8, "passphrase cannot be empty", self.nodes[0].walletpassphrase, '', 1) + assert_raises_rpc_error(-8, "passphrase cannot be empty", self.nodes[0].walletpassphrasechange, '', 'ff') # Check that walletpassphrase works self.nodes[0].walletpassphrase(passphrase, 2) diff --git a/test/functional/wallet_timelock.py b/test/functional/wallet_timelock.py index cf233a00ef..a71cec6607 100755 --- a/test/functional/wallet_timelock.py +++ b/test/functional/wallet_timelock.py @@ -30,7 +30,7 @@ class WalletLocktimeTest(BitcoinTestFramework): ) self.generate(node, 1) - self.log.info("Check that clock can not change finality of confirmed txs") + self.log.info("Check that clock cannot change finality of confirmed txs") amount_before_ad = node.getreceivedbyaddress(address) amount_before_lb = node.getreceivedbylabel(label) list_before_ad = node.listreceivedbyaddress(address_filter=address) diff --git a/test/lint/lint-format-strings.py b/test/lint/lint-format-strings.py index 2870432bff..b814446125 100755 --- a/test/lint/lint-format-strings.py +++ b/test/lint/lint-format-strings.py @@ -16,14 +16,12 @@ FALSE_POSITIVES = [ ("src/dbwrapper.cpp", "vsnprintf(p, limit - p, format, backup_ap)"), ("src/index/base.cpp", "FatalError(const char* fmt, const Args&... args)"), ("src/netbase.cpp", "LogConnectFailure(bool manual_connection, const char* fmt, const Args&... args)"), - ("src/util/system.cpp", "strprintf(_(COPYRIGHT_HOLDERS).translated, COPYRIGHT_HOLDERS_SUBSTITUTION)"), + ("src/clientversion.cpp", "strprintf(_(COPYRIGHT_HOLDERS).translated, COPYRIGHT_HOLDERS_SUBSTITUTION)"), ("src/validationinterface.cpp", "LogPrint(BCLog::VALIDATION, fmt \"\\n\", __VA_ARGS__)"), ("src/wallet/wallet.h", "WalletLogPrintf(std::string fmt, Params... parameters)"), ("src/wallet/wallet.h", "LogPrintf((\"%s \" + fmt).c_str(), GetDisplayName(), parameters...)"), ("src/wallet/scriptpubkeyman.h", "WalletLogPrintf(std::string fmt, Params... parameters)"), ("src/wallet/scriptpubkeyman.h", "LogPrintf((\"%s \" + fmt).c_str(), m_storage.GetDisplayName(), parameters...)"), - ("src/logging.h", "LogPrintf(const char* fmt, const Args&... args)"), - ("src/wallet/scriptpubkeyman.h", "WalletLogPrintf(const std::string& fmt, const Params&... parameters)"), ] diff --git a/test/sanitizer_suppressions/tsan b/test/sanitizer_suppressions/tsan index 26f3fdc7af..3acf575d07 100644 --- a/test/sanitizer_suppressions/tsan +++ b/test/sanitizer_suppressions/tsan @@ -26,9 +26,6 @@ deadlock:src/qt/test/* deadlock:libdb race:libzmq -# Race in headers only Boost Test -race:std::__1::ios_base::flags - # Intermittent issues # ------------------- # @@ -42,4 +39,4 @@ race:CZMQAbstractPublishNotifier::SendZmqMessage race:epoll_ctl # https://github.com/bitcoin/bitcoin/issues/23366 -race:std::__1::ios_base::width +race:std::__1::ios_base::* diff --git a/test/util/test_runner.py b/test/util/test_runner.py index aa8fd6eee5..a7fc3b1dc1 100755 --- a/test/util/test_runner.py +++ b/test/util/test_runner.py @@ -93,7 +93,7 @@ def bctest(testDir, testObj, buildenv): try: outputData = open(os.path.join(testDir, outputFn), encoding="utf8").read() except: - logging.error("Output file " + outputFn + " can not be opened") + logging.error("Output file " + outputFn + " cannot be opened") raise if not outputData: logging.error("Output data missing for " + outputFn) |