aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build_msvc/bitcoin_config.h10
-rw-r--r--configure.ac8
-rw-r--r--depends/packages/qt.mk2
-rw-r--r--depends/patches/qt/fix_qpainter_non_determinism.patch63
-rw-r--r--doc/man/bitcoin-cli.168
-rw-r--r--doc/man/bitcoin-qt.1284
-rw-r--r--doc/man/bitcoin-tx.139
-rw-r--r--doc/man/bitcoin-wallet.148
-rw-r--r--doc/man/bitcoind.1281
-rw-r--r--src/policy/feerate.cpp4
-rw-r--r--src/policy/feerate.h17
-rw-r--r--src/qt/bitcoinstrings.cpp2
-rw-r--r--src/qt/createwalletdialog.cpp27
-rw-r--r--src/qt/forms/createwalletdialog.ui32
-rw-r--r--src/qt/locale/bitcoin_af.ts6
-rw-r--r--src/qt/locale/bitcoin_ar.ts2
-rw-r--r--src/qt/locale/bitcoin_bg.ts32
-rw-r--r--src/qt/locale/bitcoin_bn.ts6
-rw-r--r--src/qt/locale/bitcoin_ca.ts176
-rw-r--r--src/qt/locale/bitcoin_cs.ts23
-rw-r--r--src/qt/locale/bitcoin_da.ts6
-rw-r--r--src/qt/locale/bitcoin_de.ts25
-rw-r--r--src/qt/locale/bitcoin_el.ts64
-rw-r--r--src/qt/locale/bitcoin_en.ts37
-rw-r--r--src/qt/locale/bitcoin_en_GB.ts6
-rw-r--r--src/qt/locale/bitcoin_eo.ts220
-rw-r--r--src/qt/locale/bitcoin_es.ts234
-rw-r--r--src/qt/locale/bitcoin_es_CL.ts4
-rw-r--r--src/qt/locale/bitcoin_es_CO.ts4
-rw-r--r--src/qt/locale/bitcoin_es_MX.ts2186
-rw-r--r--src/qt/locale/bitcoin_es_VE.ts54
-rw-r--r--src/qt/locale/bitcoin_eu.ts2
-rw-r--r--src/qt/locale/bitcoin_fa.ts94
-rw-r--r--src/qt/locale/bitcoin_fi.ts354
-rw-r--r--src/qt/locale/bitcoin_fil.ts159
-rw-r--r--src/qt/locale/bitcoin_fr.ts116
-rw-r--r--src/qt/locale/bitcoin_gl_ES.ts6
-rw-r--r--src/qt/locale/bitcoin_he.ts8
-rw-r--r--src/qt/locale/bitcoin_hi.ts42
-rw-r--r--src/qt/locale/bitcoin_hr.ts6
-rw-r--r--src/qt/locale/bitcoin_hu.ts6
-rw-r--r--src/qt/locale/bitcoin_id.ts18
-rw-r--r--src/qt/locale/bitcoin_it.ts66
-rw-r--r--src/qt/locale/bitcoin_ja.ts76
-rw-r--r--src/qt/locale/bitcoin_ko.ts6
-rw-r--r--src/qt/locale/bitcoin_lt.ts6
-rw-r--r--src/qt/locale/bitcoin_ms.ts3082
-rw-r--r--src/qt/locale/bitcoin_nb.ts6
-rw-r--r--src/qt/locale/bitcoin_nl.ts116
-rw-r--r--src/qt/locale/bitcoin_pl.ts68
-rw-r--r--src/qt/locale/bitcoin_pt.ts62
-rw-r--r--src/qt/locale/bitcoin_pt_BR.ts58
-rw-r--r--src/qt/locale/bitcoin_ro.ts6
-rw-r--r--src/qt/locale/bitcoin_ru.ts283
-rw-r--r--src/qt/locale/bitcoin_sk.ts6
-rw-r--r--src/qt/locale/bitcoin_sl.ts48
-rw-r--r--src/qt/locale/bitcoin_sq.ts28
-rw-r--r--src/qt/locale/bitcoin_sr.ts6
-rw-r--r--src/qt/locale/bitcoin_sv.ts6
-rw-r--r--src/qt/locale/bitcoin_szl.ts4
-rw-r--r--src/qt/locale/bitcoin_ta.ts38
-rw-r--r--src/qt/locale/bitcoin_th.ts2
-rw-r--r--src/qt/locale/bitcoin_tr.ts142
-rw-r--r--src/qt/locale/bitcoin_uk.ts290
-rw-r--r--src/qt/locale/bitcoin_vi.ts6
-rw-r--r--src/qt/locale/bitcoin_zh-Hans.ts42
-rw-r--r--src/qt/locale/bitcoin_zh_CN.ts54
-rw-r--r--src/qt/locale/bitcoin_zh_TW.ts6
-rw-r--r--src/rpc/client.cpp9
-rw-r--r--src/rpc/mining.cpp2
-rw-r--r--src/test/amount_tests.cpp6
-rw-r--r--src/util/fees.cpp7
-rw-r--r--src/util/fees.h1
-rw-r--r--src/wallet/rpcwallet.cpp225
-rw-r--r--src/wallet/wallet.cpp2
-rwxr-xr-xtest/functional/feature_taproot.py14
-rwxr-xr-xtest/functional/mempool_compatibility.py3
-rwxr-xr-xtest/functional/rpc_estimatefee.py2
-rwxr-xr-xtest/functional/rpc_fundrawtransaction.py137
-rwxr-xr-xtest/functional/rpc_psbt.py100
-rwxr-xr-xtest/functional/wallet_basic.py176
-rwxr-xr-xtest/functional/wallet_bumpfee.py89
-rwxr-xr-xtest/functional/wallet_multiwallet.py3
-rwxr-xr-xtest/functional/wallet_send.py95
84 files changed, 9179 insertions, 986 deletions
diff --git a/build_msvc/bitcoin_config.h b/build_msvc/bitcoin_config.h
index 9d0b50a0b4..60661f121a 100644
--- a/build_msvc/bitcoin_config.h
+++ b/build_msvc/bitcoin_config.h
@@ -12,16 +12,16 @@
#define CLIENT_VERSION_BUILD 0
/* Version is release */
-#define CLIENT_VERSION_IS_RELEASE false
+#define CLIENT_VERSION_IS_RELEASE true
/* Major version */
#define CLIENT_VERSION_MAJOR 0
/* Minor version */
-#define CLIENT_VERSION_MINOR 20
+#define CLIENT_VERSION_MINOR 21
/* Build revision */
-#define CLIENT_VERSION_REVISION 99
+#define CLIENT_VERSION_REVISION 0
/* Copyright holder(s) before %s replacement */
#define COPYRIGHT_HOLDERS "The %s developers"
@@ -253,7 +253,7 @@
#define PACKAGE_NAME "Bitcoin Core"
/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "Bitcoin Core 0.19.99"
+#define PACKAGE_STRING "Bitcoin Core 0.21.0"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "bitcoin"
@@ -262,7 +262,7 @@
#define PACKAGE_URL "https://bitcoincore.org/"
/* Define to the version of this package. */
-#define PACKAGE_VERSION "0.19.99"
+#define PACKAGE_VERSION "0.21.0"
/* Define to necessary symbol if this constant uses a non-standard name on
your system. */
diff --git a/configure.ac b/configure.ac
index 9a16b7c880..19056e5a09 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,10 +1,10 @@
AC_PREREQ([2.69])
define(_CLIENT_VERSION_MAJOR, 0)
-define(_CLIENT_VERSION_MINOR, 20)
-define(_CLIENT_VERSION_REVISION, 99)
+define(_CLIENT_VERSION_MINOR, 21)
+define(_CLIENT_VERSION_REVISION, 0)
define(_CLIENT_VERSION_BUILD, 0)
-define(_CLIENT_VERSION_RC, 0)
-define(_CLIENT_VERSION_IS_RELEASE, false)
+define(_CLIENT_VERSION_RC, 2)
+define(_CLIENT_VERSION_IS_RELEASE, true)
define(_COPYRIGHT_YEAR, 2020)
define(_COPYRIGHT_HOLDERS,[The %s developers])
define(_COPYRIGHT_HOLDERS_SUBSTITUTION,[[Bitcoin Core]])
diff --git a/depends/packages/qt.mk b/depends/packages/qt.mk
index 083bc68d66..2a9e066510 100644
--- a/depends/packages/qt.mk
+++ b/depends/packages/qt.mk
@@ -12,6 +12,7 @@ $(package)_patches=fix_qt_pkgconfig.patch mac-qmake.conf fix_configure_mac.patch
$(package)_patches+= fix_rcc_determinism.patch fix_riscv64_arch.patch xkb-default.patch no-xlib.patch
$(package)_patches+= fix_android_qmake_conf.patch fix_android_jni_static.patch dont_hardcode_pwd.patch
$(package)_patches+= freetype_back_compat.patch drop_lrelease_dependency.patch fix_powerpc_libpng.patch
+$(package)_patches+= fix_qpainter_non_determinism.patch
# Update OSX_QT_TRANSLATIONS when this is updated
$(package)_qttranslations_file_name=qttranslations-$($(package)_suffix)
@@ -195,6 +196,7 @@ endef
define $(package)_preprocess_cmds
patch -p1 -i $($(package)_patch_dir)/freetype_back_compat.patch && \
patch -p1 -i $($(package)_patch_dir)/fix_powerpc_libpng.patch && \
+ patch -p1 -i $($(package)_patch_dir)/fix_qpainter_non_determinism.patch &&\
sed -i.old "s|updateqm.commands = \$$$$\$$$$LRELEASE|updateqm.commands = $($(package)_extract_dir)/qttools/bin/lrelease|" qttranslations/translations/translations.pro && \
patch -p1 -i $($(package)_patch_dir)/drop_lrelease_dependency.patch && \
patch -p1 -i $($(package)_patch_dir)/dont_hardcode_pwd.patch &&\
diff --git a/depends/patches/qt/fix_qpainter_non_determinism.patch b/depends/patches/qt/fix_qpainter_non_determinism.patch
new file mode 100644
index 0000000000..3cfcc22f03
--- /dev/null
+++ b/depends/patches/qt/fix_qpainter_non_determinism.patch
@@ -0,0 +1,63 @@
+commit 2a8f7dc6ddfc414a66491522501c1574a1343ee1
+Author: Andrew Chow <achow101-github@achow101.com>
+Date: Sat Nov 21 01:11:04 2020 -0500
+
+ build: Fix determinism issue when building with Clang 8
+
+ When building Qt with LLVM/Clang 8 under -O3 (the default), we run into
+ a determinism issue in `qt_interset_spans`. The issue has been fixed for
+ LLVM/Clang 9, see
+ https://github.com/llvm/llvm-project/commit/db101864bdc938deb1d63fe4f7da761bd38e5cae
+ and https://reviews.llvm.org/D64601, however this fix was not backported
+ to 8.x. Once LLVM/Clang 9 is used, this patch can be dropped.
+
+ The particular issue appears to be an optimization done by -O3 which
+ adds a temporary variable for `spans->y` in `qt_intersect_spans`. When
+ it does this, sometimes it chooses to use a 32-bit movs instruction
+ (movswl), and other times it chooses a 64-bit movs instruction (movswq).
+ By patching `qt_intersect_spans` to always make a temporary variable for
+ `spans->y`, we are able to sidestep this problem.
+
+diff --git a/qtbase/src/gui/painting/qpaintengine_raster.cpp b/qtbase/src/gui/painting/qpaintengine_raster.cpp
+index 92ab6e8375..f018009e0b 100644
+--- a/qtbase/src/gui/painting/qpaintengine_raster.cpp
++++ b/qtbase/src/gui/painting/qpaintengine_raster.cpp
+@@ -3971,22 +3971,23 @@ static const QSpan *qt_intersect_spans(const QClipData *clip, int *currentClip,
+ const QSpan *clipEnd = clip->m_spans + clip->count;
+
+ while (available && spans < end ) {
++ const short spans_y = spans->y;
+ if (clipSpans >= clipEnd) {
+ spans = end;
+ break;
+ }
+- if (clipSpans->y > spans->y) {
++ if (clipSpans->y > spans_y) {
+ ++spans;
+ continue;
+ }
+- if (spans->y != clipSpans->y) {
+- if (spans->y < clip->count && clip->m_clipLines[spans->y].spans)
+- clipSpans = clip->m_clipLines[spans->y].spans;
++ if (spans_y != clipSpans->y) {
++ if (spans_y < clip->count && clip->m_clipLines[spans_y].spans)
++ clipSpans = clip->m_clipLines[spans_y].spans;
+ else
+ ++clipSpans;
+ continue;
+ }
+- Q_ASSERT(spans->y == clipSpans->y);
++ Q_ASSERT(spans_y == clipSpans->y);
+
+ int sx1 = spans->x;
+ int sx2 = sx1 + spans->len;
+@@ -4005,7 +4006,7 @@ static const QSpan *qt_intersect_spans(const QClipData *clip, int *currentClip,
+ if (len) {
+ out->x = qMax(sx1, cx1);
+ out->len = qMin(sx2, cx2) - out->x;
+- out->y = spans->y;
++ out->y = spans_y;
+ out->coverage = qt_div_255(spans->coverage * clipSpans->coverage);
+ ++out;
+ --available;
+
diff --git a/doc/man/bitcoin-cli.1 b/doc/man/bitcoin-cli.1
index 129651d8e9..83f60d52ba 100644
--- a/doc/man/bitcoin-cli.1
+++ b/doc/man/bitcoin-cli.1
@@ -1,7 +1,7 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
-.TH BITCOIN-CLI "1" "February 2019" "bitcoin-cli v0.17.99.0" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
+.TH BITCOIN-CLI "1" "November 2020" "bitcoin-cli v0.21.0.0" "User Commands"
.SH NAME
-bitcoin-cli \- manual page for bitcoin-cli v0.17.99.0
+bitcoin-cli \- manual page for bitcoin-cli v0.21.0.0
.SH SYNOPSIS
.B bitcoin-cli
[\fI\,options\/\fR] \fI\,<command> \/\fR[\fI\,params\/\fR] \fI\,Send command to Bitcoin Core\/\fR
@@ -15,7 +15,7 @@ bitcoin-cli \- manual page for bitcoin-cli v0.17.99.0
.B bitcoin-cli
[\fI\,options\/\fR] \fI\,help <command> Get help for a command\/\fR
.SH DESCRIPTION
-Bitcoin Core RPC client version v0.17.99.0
+Bitcoin Core RPC client version v0.21.0.0
.SH OPTIONS
.HP
\-?
@@ -31,6 +31,15 @@ location. (default: bitcoin.conf)
.IP
Specify data directory
.HP
+\fB\-generate\fR
+.IP
+Generate blocks immediately, equivalent to RPC generatenewaddress
+followed by RPC generatetoaddress. Optional positional integer
+arguments are number of blocks to generate (default: 1) and
+maximum iterations to try (default: 1000000), equivalent to RPC
+generatetoaddress nblocks and maxtries arguments. Example:
+bitcoin\-cli \fB\-generate\fR 4 1000
+.HP
\fB\-getinfo\fR
.IP
Get general information from the remote server. Note that unlike
@@ -43,6 +52,12 @@ be as of a different block from the chain state reported)
.IP
Pass named instead of positional arguments (default: false)
.HP
+\fB\-netinfo\fR
+.IP
+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).
+.HP
\fB\-rpcclienttimeout=\fR<n>
.IP
Timeout in seconds during HTTP requests, or 0 for no timeout. (default:
@@ -63,8 +78,8 @@ Password for JSON\-RPC connections
.HP
\fB\-rpcport=\fR<port>
.IP
-Connect to JSON\-RPC on <port> (default: 8332, testnet: 18332, regtest:
-18443)
+Connect to JSON\-RPC on <port> (default: 8332, testnet: 18332, signet:
+38332, regtest: 18443)
.HP
\fB\-rpcuser=\fR<user>
.IP
@@ -92,22 +107,55 @@ is used for the RPC password.
.IP
Read RPC password from standard input as a single line. When combined
with \fB\-stdin\fR, the first line from standard input is used for the
-RPC password.
+RPC password. When combined with \fB\-stdinwalletpassphrase\fR,
+\fB\-stdinrpcpass\fR consumes the first line, and \fB\-stdinwalletpassphrase\fR
+consumes the second.
+.HP
+\fB\-stdinwalletpassphrase\fR
+.IP
+Read wallet passphrase from standard input as a single line. When
+combined with \fB\-stdin\fR, the first line from standard input is used
+for the wallet passphrase.
.HP
\fB\-version\fR
.IP
Print version and exit
.PP
+Debugging/Testing options:
+.PP
Chain selection options:
.HP
+\fB\-chain=\fR<chain>
+.IP
+Use the chain <chain> (default: main). Allowed values: main, test,
+signet, regtest
+.HP
+\fB\-signet\fR
+.IP
+Use the signet chain. Equivalent to \fB\-chain\fR=\fI\,signet\/\fR. Note that the network
+is defined by the \fB\-signetchallenge\fR parameter
+.HP
+\fB\-signetchallenge\fR
+.IP
+Blocks must satisfy the given script to be considered valid (only for
+signet networks; defaults to the global default signet test
+network challenge)
+.HP
+\fB\-signetseednode\fR
+.IP
+Specify a seed node for the signet network, in the hostname[:port]
+format, e.g. sig.net:1234 (may be used multiple times to specify
+multiple seed nodes; defaults to the global default signet test
+network seed node(s))
+.HP
\fB\-testnet\fR
.IP
-Use the test chain
+Use the test chain. Equivalent to \fB\-chain\fR=\fI\,test\/\fR.
.SH COPYRIGHT
-Copyright (C) 2009-2019 The Bitcoin Core developers
+Copyright (C) 2009-2020 The Bitcoin Core developers
Please contribute if you find Bitcoin Core useful. Visit
-<https://bitcoincore.org> for further information about the software.
+<https://bitcoincore.org/> for further information about the software.
The source code is available from <https://github.com/bitcoin/bitcoin>.
This is experimental software.
diff --git a/doc/man/bitcoin-qt.1 b/doc/man/bitcoin-qt.1
index f68be21e8d..cfa8f795a4 100644
--- a/doc/man/bitcoin-qt.1
+++ b/doc/man/bitcoin-qt.1
@@ -1,12 +1,12 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
-.TH BITCOIN-QT "1" "February 2019" "bitcoin-qt v0.17.99.0" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
+.TH BITCOIN-QT "1" "November 2020" "bitcoin-qt v0.21.0.0" "User Commands"
.SH NAME
-bitcoin-qt \- manual page for bitcoin-qt v0.17.99.0
+bitcoin-qt \- manual page for bitcoin-qt v0.21.0.0
.SH SYNOPSIS
.B bitcoin-qt
[\fI\,command-line options\/\fR]
.SH DESCRIPTION
-Bitcoin Core version v0.17.99.0 (64\-bit)
+Bitcoin Core version v0.21.0.0
.SH OPTIONS
.HP
\-?
@@ -23,9 +23,17 @@ long fork (%s in cmd is replaced by message)
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:
-0000000000000000002e63058c023a9a1de233554f28c7b21380b6c9003f36a8,
+0000000000000000000b9d2ec5a352ecba0592946514a92f14319dc2b367fc72,
testnet:
-0000000000000037a8cd3e06cd5edbfe9dd1dbcc5dacab279376ef7cfc2b4c75)
+000000000000006433d1efec504c53ca332b64963c425395515b01977bd7b3b0,
+signet:
+0000002a1de0f46379358c1fd09906f7ac59adf3712323ed90eb59e4c183c020)
+.HP
+\fB\-blockfilterindex=\fR<type>
+.IP
+Maintain an index of compact filters by block (default: 0, values:
+basic). If <type> is not supplied or if <type> = 1, indexes for
+all known types are enabled.
.HP
\fB\-blocknotify=\fR<cmd>
.IP
@@ -39,12 +47,20 @@ Extra transactions to keep in memory for compact block reconstructions
.HP
\fB\-blocksdir=\fR<dir>
.IP
-Specify blocks directory (default: <datadir>/blocks)
+Specify directory to hold blocks subdirectory for *.dat files (default:
+<datadir>)
+.HP
+\fB\-blocksonly\fR
+.IP
+Whether to reject transactions from network peers. Automatic broadcast
+and rebroadcast of any transactions from inbound peers is
+disabled, unless the peer has the 'forcerelay' permission. RPC
+transactions are not affected. (default: 0)
.HP
\fB\-conf=\fR<file>
.IP
-Specify configuration file. Relative paths will be prefixed by datadir
-location. (default: bitcoin.conf)
+Specify path to read\-only configuration file. Relative paths will be
+prefixed by datadir location. (default: bitcoin.conf)
.HP
\fB\-daemon\fR
.IP
@@ -56,7 +72,9 @@ Specify data directory
.HP
\fB\-dbcache=\fR<n>
.IP
-Set database cache size in MiB (4 to 16384, default: 450)
+Maximum database cache size <n> MiB (4 to 16384, default: 450). In
+addition, unused mempool memory is shared for this cache (see
+\fB\-maxmempool\fR).
.HP
\fB\-debuglogfile=\fR<file>
.IP
@@ -71,7 +89,7 @@ Specify additional configuration file, relative to the \fB\-datadir\fR path
.HP
\fB\-loadblock=\fR<file>
.IP
-Imports blocks from external blk000??.dat file on startup
+Imports blocks from external file on startup
.HP
\fB\-maxmempool=\fR<n>
.IP
@@ -88,7 +106,7 @@ Do not keep transactions in the mempool longer than <n> hours (default:
.HP
\fB\-par=\fR<n>
.IP
-Set the number of script verification threads (\fB\-8\fR to 16, 0 = auto, <0 =
+Set the number of script verification threads (\fB\-6\fR to 15, 0 = auto, <0 =
leave that many cores free, default: 0)
.HP
\fB\-persistmempool\fR
@@ -122,6 +140,18 @@ Rebuild chain state from the currently indexed blocks. When in pruning
mode or if blocks on disk might be corrupted, use full \fB\-reindex\fR
instead.
.HP
+\fB\-settings=\fR<file>
+.IP
+Specify path to dynamic settings data file. Can be disabled with
+\fB\-nosettings\fR. File is written at runtime and not meant to be
+edited by users (use bitcoin.conf instead for custom settings).
+Relative paths will be prefixed by datadir location. (default:
+settings.json)
+.HP
+\fB\-startupnotify=\fR<cmd>
+.IP
+Execute command on startup.
+.HP
\fB\-sysperms\fR
.IP
Create new files with system default permissions, instead of umask 077
@@ -144,19 +174,24 @@ Add a node to connect to and attempt to keep the connection open (see
the `addnode` RPC command help for more info). This option can be
specified multiple times to add multiple nodes.
.HP
-\fB\-banscore=\fR<n>
+\fB\-asmap=\fR<file>
.IP
-Threshold for disconnecting misbehaving peers (default: 100)
+Specify asn mapping used for bucketing of the peers (default:
+ip_asn.map). Relative paths will be prefixed by the net\-specific
+datadir location.
.HP
\fB\-bantime=\fR<n>
.IP
-Number of seconds to keep misbehaving peers from reconnecting (default:
+Default duration (in seconds) of manually configured bans (default:
86400)
.HP
-\fB\-bind=\fR<addr>
+\fB\-bind=\fR<addr>[:<port>][=onion]
.IP
-Bind to given address and always listen on it. Use [host]:port notation
-for IPv6
+Bind to given address and always listen on it (default: 0.0.0.0). Use
+[host]:port notation for IPv6. Append =onion to tag any incoming
+connections to that address and port as incoming Tor connections
+(default: 127.0.0.1:8334=onion, testnet: 127.0.0.1:18334=onion,
+signet: 127.0.0.1:38334=onion, regtest: 127.0.0.1:18445=onion)
.HP
\fB\-connect=\fR<ip>
.IP
@@ -193,7 +228,7 @@ Accept connections from outside (default: 1 if no \fB\-proxy\fR or \fB\-connect\
.HP
\fB\-listenonion\fR
.IP
-Automatically create Tor hidden service (default: 1)
+Automatically create Tor onion service (default: 1)
.HP
\fB\-maxconnections=\fR<n>
.IP
@@ -215,12 +250,18 @@ amount. (default: 4200 seconds)
.HP
\fB\-maxuploadtarget=\fR<n>
.IP
-Tries to keep outbound traffic under the given target (in MiB per 24h),
-0 = no limit (default: 0)
+Tries to keep outbound traffic under the given target (in MiB per 24h).
+Limit does not apply to peers with 'download' permission. 0 = no
+limit (default: 0)
+.HP
+\fB\-networkactive\fR
+.IP
+Enable all P2P network activity (default: 1). Can be changed by the
+setnetworkactive RPC command
.HP
\fB\-onion=\fR<ip:port>
.IP
-Use separate SOCKS5 proxy to reach peers via Tor hidden services, set
+Use separate SOCKS5 proxy to reach peers via Tor onion services, set
\fB\-noonion\fR to disable (default: \fB\-proxy\fR)
.HP
\fB\-onlynet=\fR<net>
@@ -230,10 +271,14 @@ onion). Incoming connections are not affected by this option.
This option can be specified multiple times to allow multiple
networks.
.HP
+\fB\-peerblockfilters\fR
+.IP
+Serve compact block filters to peers per BIP 157 (default: 0)
+.HP
\fB\-peerbloomfilters\fR
.IP
Support filtering of blocks and transaction with bloom filters (default:
-1)
+0)
.HP
\fB\-permitbaremultisig\fR
.IP
@@ -241,8 +286,8 @@ Relay non\-P2SH multisig (default: 1)
.HP
\fB\-port=\fR<port>
.IP
-Listen for connections on <port> (default: 8333, testnet: 18333,
-regtest: 18444)
+Listen for connections on <port> (default: 8333, testnet: 18333 signet:
+38333, regtest: 18444)
.HP
\fB\-proxy=\fR<ip:port>
.IP
@@ -277,25 +322,35 @@ Tor control port password (default: empty)
.IP
Use UPnP to map the listening port (default: 0)
.HP
-\fB\-whitebind=\fR<addr>
-.IP
-Bind to given address and whitelist peers connecting to it. Use
-[host]:port notation for IPv6
-.HP
-\fB\-whitelist=\fR<IP address or network>
-.IP
-Whitelist peers connecting from the given IP address (e.g. 1.2.3.4) or
-CIDR notated network (e.g. 1.2.3.0/24). Can be specified multiple
-times. Whitelisted peers cannot be DoS banned and their
-transactions are always relayed, even if they are already in the
-mempool, useful e.g. for a gateway
+\fB\-whitebind=\fR<[permissions@]addr>
+.IP
+Bind to the given address and add permission flags to the peers
+connecting to it. Use [host]:port notation for IPv6. Allowed
+permissions: bloomfilter (allow requesting BIP37 filtered blocks
+and transactions), noban (do not ban for misbehavior; implies
+download), forcerelay (relay transactions that are already in the
+mempool; implies relay), relay (relay even in \fB\-blocksonly\fR mode,
+and unlimited transaction announcements), mempool (allow
+requesting BIP35 mempool contents), download (allow getheaders
+during IBD, no disconnect after maxuploadtarget limit), addr
+(responses to GETADDR avoid hitting the cache and contain random
+records with the most up\-to\-date info). Specify multiple
+permissions separated by commas (default:
+download,noban,mempool,relay). Can be specified multiple times.
+.HP
+\fB\-whitelist=\fR<[permissions@]IP address or network>
+.IP
+Add permission flags to the peers connecting from the given IP address
+(e.g. 1.2.3.4) or CIDR\-notated network (e.g. 1.2.3.0/24). Uses
+the same permissions as \fB\-whitebind\fR. Can be specified multiple
+times.
.PP
Wallet options:
.HP
\fB\-addresstype\fR
.IP
What type of addresses to use ("legacy", "p2sh\-segwit", or "bech32",
-default: "p2sh\-segwit")
+default: "bech32")
.HP
\fB\-avoidpartialspends\fR
.IP
@@ -303,7 +358,8 @@ Group outputs by address, selecting all or none, instead of selecting on
a per\-output basis. Privacy is improved as an address is only
used once (unless someone sends to it after spending from it),
but may result in slightly higher fees as suboptimal coin
-selection may result due to the added limitation (default: 0)
+selection may result due to the added limitation (default: 0
+(always enabled for wallets with "avoid_reuse" enabled))
.HP
\fB\-changetype\fR
.IP
@@ -327,11 +383,20 @@ limited by the fee estimate for the longest target
\fB\-fallbackfee=\fR<amt>
.IP
A fee rate (in BTC/kB) that will be used when fee estimation has
-insufficient data (default: 0.0002)
+insufficient data. 0 to entirely disable the fallbackfee feature.
+(default: 0.00)
.HP
\fB\-keypool=\fR<n>
.IP
-Set key pool size to <n> (default: 1000)
+Set key pool size to <n> (default: 1000). Warning: Smaller sizes may
+increase the risk of losing funds when restoring from an old
+backup, if none of the addresses in the original keypool have
+been used.
+.HP
+\fB\-maxapsfee=\fR<n>
+.IP
+Spend up to this amount in additional (absolute) fees (in BTC) if it
+allows the use of partial spend avoidance (default: 0.00)
.HP
\fB\-mintxfee=\fR<amt>
.IP
@@ -346,10 +411,6 @@ Fee (in BTC/kB) to add to transactions you send (default: 0.00)
.IP
Rescan the block chain for missing wallet transactions on startup
.HP
-\fB\-salvagewallet\fR
-.IP
-Attempt to recover private keys from a corrupt wallet on startup
-.HP
\fB\-spendzeroconfchange\fR
.IP
Spend unconfirmed change when sending transactions (default: 1)
@@ -359,18 +420,15 @@ Spend unconfirmed change when sending transactions (default: 1)
If paytxfee is not set, include enough fee so transactions begin
confirmation on average within n blocks (default: 6)
.HP
-\fB\-upgradewallet\fR
-.IP
-Upgrade wallet to latest format on startup
-.HP
\fB\-wallet=\fR<path>
.IP
-Specify wallet database path. Can be specified multiple times to load
-multiple wallets. Path is interpreted relative to <walletdir> if
-it is not absolute, and will be created if it does not exist (as
-a directory containing a wallet.dat file and log files). For
-backwards compatibility this will also accept names of existing
-data files in <walletdir>.)
+Specify wallet path to load at startup. Can be used multiple times to
+load multiple wallets. Path is to a directory containing wallet
+data and log files. If the path is not absolute, it is
+interpreted relative to <walletdir>. This only loads existing
+wallets and does not create new ones. For backwards compatibility
+this also accepts names of existing top\-level data files in
+<walletdir>.
.HP
\fB\-walletbroadcast\fR
.IP
@@ -383,18 +441,15 @@ exists, otherwise <datadir>)
.HP
\fB\-walletnotify=\fR<cmd>
.IP
-Execute command when a wallet transaction changes (%s in cmd is replaced
-by TxID)
+Execute command when a wallet transaction changes. %s in cmd is replaced
+by TxID and %w is replaced by wallet name. %w is not currently
+implemented on windows. On systems where %w is supported, it
+should NOT be quoted because this would break shell escaping used
+to invoke the command.
.HP
\fB\-walletrbf\fR
.IP
Send transactions with full\-RBF opt\-in enabled (RPC only, default: 0)
-.HP
-\fB\-zapwallettxes=\fR<mode>
-.IP
-Delete all wallet transactions and only recover those parts of the
-blockchain through \fB\-rescan\fR on startup (1 = keep tx meta data e.g.
-payment request information, 2 = drop tx meta data)
.PP
ZeroMQ notification options:
.HP
@@ -402,17 +457,43 @@ ZeroMQ notification options:
.IP
Enable publish hash block in <address>
.HP
+\fB\-zmqpubhashblockhwm=\fR<n>
+.IP
+Set publish hash block outbound message high water mark (default: 1000)
+.HP
\fB\-zmqpubhashtx=\fR<address>
.IP
Enable publish hash transaction in <address>
.HP
+\fB\-zmqpubhashtxhwm=\fR<n>
+.IP
+Set publish hash transaction outbound message high water mark (default:
+1000)
+.HP
\fB\-zmqpubrawblock=\fR<address>
.IP
Enable publish raw block in <address>
.HP
+\fB\-zmqpubrawblockhwm=\fR<n>
+.IP
+Set publish raw block outbound message high water mark (default: 1000)
+.HP
\fB\-zmqpubrawtx=\fR<address>
.IP
Enable publish raw transaction in <address>
+.HP
+\fB\-zmqpubrawtxhwm=\fR<n>
+.IP
+Set publish raw transaction outbound message high water mark (default:
+1000)
+.HP
+\fB\-zmqpubsequence=\fR<address>
+.IP
+Enable publish hash block and tx sequence in <address>
+.HP
+\fB\-zmqpubsequencehwm=\fR<n>
+.IP
+Set publish hash sequence message high water mark (default: 1000)
.PP
Debugging/Testing options:
.HP
@@ -421,9 +502,9 @@ Debugging/Testing options:
Output debugging information (default: \fB\-nodebug\fR, supplying <category> is
optional). If <category> is not supplied or if <category> = 1,
output all debugging information. <category> can be: net, tor,
-mempool, http, bench, zmq, db, rpc, estimatefee, addrman,
+mempool, http, bench, zmq, walletdb, rpc, estimatefee, addrman,
selectcoins, reindex, cmpctblock, rand, prune, proxy, mempoolrej,
-libevent, coindb, qt, leveldb.
+libevent, coindb, qt, leveldb, validation.
.HP
\fB\-debugexclude=\fR<category>
.IP
@@ -439,15 +520,19 @@ Print help message with debugging options and exit
.IP
Include IP addresses in debug output (default: 0)
.HP
+\fB\-logthreadnames\fR
+.IP
+Prepend debug output with name of the originating thread (only available
+on platforms supporting thread_local) (default: 0)
+.HP
\fB\-logtimestamps\fR
.IP
Prepend debug output with timestamp (default: 1)
.HP
\fB\-maxtxfee=\fR<amt>
.IP
-Maximum total fees (in BTC) to use in a single wallet transaction or raw
-transaction; setting this too low may abort large transactions
-(default: 0.10)
+Maximum total fees (in BTC) to use in a single wallet transaction;
+setting this too low may abort large transactions (default: 0.10)
.HP
\fB\-printtoconsole\fR
.IP
@@ -464,9 +549,32 @@ Append comment to the user agent string
.PP
Chain selection options:
.HP
+\fB\-chain=\fR<chain>
+.IP
+Use the chain <chain> (default: main). Allowed values: main, test,
+signet, regtest
+.HP
+\fB\-signet\fR
+.IP
+Use the signet chain. Equivalent to \fB\-chain\fR=\fI\,signet\/\fR. Note that the network
+is defined by the \fB\-signetchallenge\fR parameter
+.HP
+\fB\-signetchallenge\fR
+.IP
+Blocks must satisfy the given script to be considered valid (only for
+signet networks; defaults to the global default signet test
+network challenge)
+.HP
+\fB\-signetseednode\fR
+.IP
+Specify a seed node for the signet network, in the hostname[:port]
+format, e.g. sig.net:1234 (may be used multiple times to specify
+multiple seed nodes; defaults to the global default signet test
+network seed node(s))
+.HP
\fB\-testnet\fR
.IP
-Use the test chain
+Use the test chain. Equivalent to \fB\-chain\fR=\fI\,test\/\fR.
.PP
Node relay options:
.HP
@@ -484,7 +592,6 @@ Relay and mine data carrier transactions (default: 1)
Maximum size of data in data carrier transactions we relay and mine
(default: 83)
.HP
-.HP
\fB\-minrelaytxfee=\fR<amt>
.IP
Fees (in BTC/kB) smaller than this are considered zero fee for relaying,
@@ -492,13 +599,15 @@ mining and transaction creation (default: 0.00001)
.HP
\fB\-whitelistforcerelay\fR
.IP
-Force relay of transactions from whitelisted peers even if they violate
-local relay policy (default: 0)
+Add 'forcerelay' permission to whitelisted inbound peers with default
+permissions. This will relay transactions even if the
+transactions were already in the mempool. (default: 0)
.HP
\fB\-whitelistrelay\fR
.IP
-Accept relayed transactions received from whitelisted peers even when
-not relaying transactions (default: 1)
+Add 'relay' permission to whitelisted inbound peers with default
+permissions. This will accept relayed transactions even when not
+relaying transactions (default: 1)
.PP
Block creation options:
.HP
@@ -554,7 +663,7 @@ Password for JSON\-RPC connections
\fB\-rpcport=\fR<port>
.IP
Listen for JSON\-RPC connections on <port> (default: 8332, testnet:
-18332, regtest: 18443)
+18332, signet: 38332, regtest: 18443)
.HP
\fB\-rpcserialversion\fR
.IP
@@ -569,6 +678,23 @@ Set the number of threads to service RPC calls (default: 4)
.IP
Username for JSON\-RPC connections
.HP
+\fB\-rpcwhitelist=\fR<whitelist>
+.IP
+Set a whitelist to filter incoming RPC calls for a specific user. The
+field <whitelist> comes in the format: <USERNAME>:<rpc 1>,<rpc
+2>,...,<rpc n>. If multiple whitelists are set for a given user,
+they are set\-intersected. See \fB\-rpcwhitelistdefault\fR documentation
+for information on default whitelist behavior.
+.HP
+\fB\-rpcwhitelistdefault\fR
+.IP
+Sets default behavior for rpc whitelisting. Unless rpcwhitelistdefault
+is set to 0, if any \fB\-rpcwhitelist\fR is set, the rpc server acts as
+if all rpc users are subject to empty\-unless\-otherwise\-specified
+whitelists. If rpcwhitelistdefault is set to 1 and no
+\fB\-rpcwhitelist\fR is set, rpc server acts as if all rpc users are
+subject to empty whitelists.
+.HP
\fB\-server\fR
.IP
Accept command line and JSON\-RPC commands
@@ -591,18 +717,14 @@ Start minimized
.IP
Reset all settings changed in the GUI
.HP
-\fB\-rootcertificates=\fR<file>
-.IP
-Set SSL root certificates for payment request (default: \fB\-system\-\fR)
-.HP
\fB\-splash\fR
.IP
Show splash screen on startup (default: 1)
.SH COPYRIGHT
-Copyright (C) 2009-2019 The Bitcoin Core developers
+Copyright (C) 2009-2020 The Bitcoin Core developers
Please contribute if you find Bitcoin Core useful. Visit
-<https://bitcoincore.org> for further information about the software.
+<https://bitcoincore.org/> for further information about the software.
The source code is available from <https://github.com/bitcoin/bitcoin>.
This is experimental software.
diff --git a/doc/man/bitcoin-tx.1 b/doc/man/bitcoin-tx.1
index b4c7698896..b087bdfc1c 100644
--- a/doc/man/bitcoin-tx.1
+++ b/doc/man/bitcoin-tx.1
@@ -1,7 +1,7 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
-.TH BITCOIN-TX "1" "February 2019" "bitcoin-tx v0.17.99.0" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
+.TH BITCOIN-TX "1" "November 2020" "bitcoin-tx v0.21.0.0" "User Commands"
.SH NAME
-bitcoin-tx \- manual page for bitcoin-tx v0.17.99.0
+bitcoin-tx \- manual page for bitcoin-tx v0.21.0.0
.SH SYNOPSIS
.B bitcoin-tx
[\fI\,options\/\fR] \fI\,<hex-tx> \/\fR[\fI\,commands\/\fR] \fI\,Update hex-encoded bitcoin transaction\/\fR
@@ -9,7 +9,7 @@ bitcoin-tx \- manual page for bitcoin-tx v0.17.99.0
.B bitcoin-tx
[\fI\,options\/\fR] \fI\,-create \/\fR[\fI\,commands\/\fR] \fI\,Create hex-encoded bitcoin transaction\/\fR
.SH DESCRIPTION
-Bitcoin Core bitcoin\-tx utility version v0.17.99.0
+Bitcoin Core bitcoin\-tx utility version v0.21.0.0
.SH OPTIONS
.HP
\-?
@@ -28,11 +28,36 @@ Select JSON output
.IP
Output only the hex\-encoded transaction id of the resultant transaction.
.PP
+Debugging/Testing options:
+.PP
Chain selection options:
.HP
+\fB\-chain=\fR<chain>
+.IP
+Use the chain <chain> (default: main). Allowed values: main, test,
+signet, regtest
+.HP
+\fB\-signet\fR
+.IP
+Use the signet chain. Equivalent to \fB\-chain\fR=\fI\,signet\/\fR. Note that the network
+is defined by the \fB\-signetchallenge\fR parameter
+.HP
+\fB\-signetchallenge\fR
+.IP
+Blocks must satisfy the given script to be considered valid (only for
+signet networks; defaults to the global default signet test
+network challenge)
+.HP
+\fB\-signetseednode\fR
+.IP
+Specify a seed node for the signet network, in the hostname[:port]
+format, e.g. sig.net:1234 (may be used multiple times to specify
+multiple seed nodes; defaults to the global default signet test
+network seed node(s))
+.HP
\fB\-testnet\fR
.IP
-Use the test chain
+Use the test chain. Equivalent to \fB\-chain\fR=\fI\,test\/\fR.
.PP
Commands:
.IP
@@ -105,10 +130,10 @@ set=NAME:JSON\-STRING
.IP
Set register NAME to given JSON\-STRING
.SH COPYRIGHT
-Copyright (C) 2009-2019 The Bitcoin Core developers
+Copyright (C) 2009-2020 The Bitcoin Core developers
Please contribute if you find Bitcoin Core useful. Visit
-<https://bitcoincore.org> for further information about the software.
+<https://bitcoincore.org/> for further information about the software.
The source code is available from <https://github.com/bitcoin/bitcoin>.
This is experimental software.
diff --git a/doc/man/bitcoin-wallet.1 b/doc/man/bitcoin-wallet.1
index aadea09a2b..d358799c27 100644
--- a/doc/man/bitcoin-wallet.1
+++ b/doc/man/bitcoin-wallet.1
@@ -1,12 +1,12 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
-.TH BITCOIN-WALLET "1" "February 2019" "bitcoin-wallet v0.17.99.0" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
+.TH BITCOIN-WALLET "1" "November 2020" "bitcoin-wallet v0.21.0.0" "User Commands"
.SH NAME
-bitcoin-wallet \- manual page for bitcoin-wallet v0.17.99.0
+bitcoin-wallet \- manual page for bitcoin-wallet v0.21.0.0
.SH DESCRIPTION
-Bitcoin Core bitcoin\-wallet version v0.17.99.0
+Bitcoin Core bitcoin\-wallet version v0.21.0.0
.PP
-wallet\-tool is an offline tool for creating and interacting with Bitcoin Core wallet files.
-By default wallet\-tool will act on wallets in the default mainnet wallet directory in the datadir.
+bitcoin\-wallet is an offline tool for creating and interacting with Bitcoin Core wallet files.
+By default bitcoin\-wallet will act on wallets in the default mainnet wallet directory in the datadir.
To change the target wallet, use the \fB\-datadir\fR, \fB\-wallet\fR and \fB\-testnet\fR/\-regtest arguments.
.SS "Usage:"
.IP
@@ -34,13 +34,36 @@ Output debugging information (default: 0).
\fB\-printtoconsole\fR
.IP
Send trace/debug info to console (default: 1 when no \fB\-debug\fR is true, 0
-otherwise.
+otherwise).
.PP
Chain selection options:
.HP
+\fB\-chain=\fR<chain>
+.IP
+Use the chain <chain> (default: main). Allowed values: main, test,
+signet, regtest
+.HP
+\fB\-signet\fR
+.IP
+Use the signet chain. Equivalent to \fB\-chain\fR=\fI\,signet\/\fR. Note that the network
+is defined by the \fB\-signetchallenge\fR parameter
+.HP
+\fB\-signetchallenge\fR
+.IP
+Blocks must satisfy the given script to be considered valid (only for
+signet networks; defaults to the global default signet test
+network challenge)
+.HP
+\fB\-signetseednode\fR
+.IP
+Specify a seed node for the signet network, in the hostname[:port]
+format, e.g. sig.net:1234 (may be used multiple times to specify
+multiple seed nodes; defaults to the global default signet test
+network seed node(s))
+.HP
\fB\-testnet\fR
.IP
-Use the test chain
+Use the test chain. Equivalent to \fB\-chain\fR=\fI\,test\/\fR.
.PP
Commands:
.IP
@@ -51,11 +74,16 @@ Create new wallet file
info
.IP
Get wallet info
+.IP
+salvage
+.IP
+Attempt to recover private keys from a corrupt wallet. Warning:
+\&'salvage' is experimental.
.SH COPYRIGHT
-Copyright (C) 2009-2019 The Bitcoin Core developers
+Copyright (C) 2009-2020 The Bitcoin Core developers
Please contribute if you find Bitcoin Core useful. Visit
-<https://bitcoincore.org> for further information about the software.
+<https://bitcoincore.org/> for further information about the software.
The source code is available from <https://github.com/bitcoin/bitcoin>.
This is experimental software.
diff --git a/doc/man/bitcoind.1 b/doc/man/bitcoind.1
index 211ba10285..8dbd0bdde3 100644
--- a/doc/man/bitcoind.1
+++ b/doc/man/bitcoind.1
@@ -1,12 +1,12 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
-.TH BITCOIND "1" "February 2019" "bitcoind v0.17.99.0" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
+.TH BITCOIND "1" "November 2020" "bitcoind v0.21.0.0" "User Commands"
.SH NAME
-bitcoind \- manual page for bitcoind v0.17.99.0
+bitcoind \- manual page for bitcoind v0.21.0.0
.SH SYNOPSIS
.B bitcoind
-[\fI\,options\/\fR] \fI\,Start Bitcoin Core Daemon\/\fR
+[\fI\,options\/\fR] \fI\,Start Bitcoin Core\/\fR
.SH DESCRIPTION
-Bitcoin Core Daemon version v0.17.99.0
+Bitcoin Core version v0.21.0.0
.SH OPTIONS
.HP
\-?
@@ -23,9 +23,17 @@ long fork (%s in cmd is replaced by message)
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:
-0000000000000000002e63058c023a9a1de233554f28c7b21380b6c9003f36a8,
+0000000000000000000b9d2ec5a352ecba0592946514a92f14319dc2b367fc72,
testnet:
-0000000000000037a8cd3e06cd5edbfe9dd1dbcc5dacab279376ef7cfc2b4c75)
+000000000000006433d1efec504c53ca332b64963c425395515b01977bd7b3b0,
+signet:
+0000002a1de0f46379358c1fd09906f7ac59adf3712323ed90eb59e4c183c020)
+.HP
+\fB\-blockfilterindex=\fR<type>
+.IP
+Maintain an index of compact filters by block (default: 0, values:
+basic). If <type> is not supplied or if <type> = 1, indexes for
+all known types are enabled.
.HP
\fB\-blocknotify=\fR<cmd>
.IP
@@ -39,12 +47,20 @@ Extra transactions to keep in memory for compact block reconstructions
.HP
\fB\-blocksdir=\fR<dir>
.IP
-Specify blocks directory (default: <datadir>/blocks)
+Specify directory to hold blocks subdirectory for *.dat files (default:
+<datadir>)
+.HP
+\fB\-blocksonly\fR
+.IP
+Whether to reject transactions from network peers. Automatic broadcast
+and rebroadcast of any transactions from inbound peers is
+disabled, unless the peer has the 'forcerelay' permission. RPC
+transactions are not affected. (default: 0)
.HP
\fB\-conf=\fR<file>
.IP
-Specify configuration file. Relative paths will be prefixed by datadir
-location. (default: bitcoin.conf)
+Specify path to read\-only configuration file. Relative paths will be
+prefixed by datadir location. (default: bitcoin.conf)
.HP
\fB\-daemon\fR
.IP
@@ -56,7 +72,9 @@ Specify data directory
.HP
\fB\-dbcache=\fR<n>
.IP
-Set database cache size in MiB (4 to 16384, default: 450)
+Maximum database cache size <n> MiB (4 to 16384, default: 450). In
+addition, unused mempool memory is shared for this cache (see
+\fB\-maxmempool\fR).
.HP
\fB\-debuglogfile=\fR<file>
.IP
@@ -71,7 +89,7 @@ Specify additional configuration file, relative to the \fB\-datadir\fR path
.HP
\fB\-loadblock=\fR<file>
.IP
-Imports blocks from external blk000??.dat file on startup
+Imports blocks from external file on startup
.HP
\fB\-maxmempool=\fR<n>
.IP
@@ -88,7 +106,7 @@ Do not keep transactions in the mempool longer than <n> hours (default:
.HP
\fB\-par=\fR<n>
.IP
-Set the number of script verification threads (\fB\-8\fR to 16, 0 = auto, <0 =
+Set the number of script verification threads (\fB\-6\fR to 15, 0 = auto, <0 =
leave that many cores free, default: 0)
.HP
\fB\-persistmempool\fR
@@ -122,6 +140,18 @@ Rebuild chain state from the currently indexed blocks. When in pruning
mode or if blocks on disk might be corrupted, use full \fB\-reindex\fR
instead.
.HP
+\fB\-settings=\fR<file>
+.IP
+Specify path to dynamic settings data file. Can be disabled with
+\fB\-nosettings\fR. File is written at runtime and not meant to be
+edited by users (use bitcoin.conf instead for custom settings).
+Relative paths will be prefixed by datadir location. (default:
+settings.json)
+.HP
+\fB\-startupnotify=\fR<cmd>
+.IP
+Execute command on startup.
+.HP
\fB\-sysperms\fR
.IP
Create new files with system default permissions, instead of umask 077
@@ -144,19 +174,24 @@ Add a node to connect to and attempt to keep the connection open (see
the `addnode` RPC command help for more info). This option can be
specified multiple times to add multiple nodes.
.HP
-\fB\-banscore=\fR<n>
+\fB\-asmap=\fR<file>
.IP
-Threshold for disconnecting misbehaving peers (default: 100)
+Specify asn mapping used for bucketing of the peers (default:
+ip_asn.map). Relative paths will be prefixed by the net\-specific
+datadir location.
.HP
\fB\-bantime=\fR<n>
.IP
-Number of seconds to keep misbehaving peers from reconnecting (default:
+Default duration (in seconds) of manually configured bans (default:
86400)
.HP
-\fB\-bind=\fR<addr>
+\fB\-bind=\fR<addr>[:<port>][=onion]
.IP
-Bind to given address and always listen on it. Use [host]:port notation
-for IPv6
+Bind to given address and always listen on it (default: 0.0.0.0). Use
+[host]:port notation for IPv6. Append =onion to tag any incoming
+connections to that address and port as incoming Tor connections
+(default: 127.0.0.1:8334=onion, testnet: 127.0.0.1:18334=onion,
+signet: 127.0.0.1:38334=onion, regtest: 127.0.0.1:18445=onion)
.HP
\fB\-connect=\fR<ip>
.IP
@@ -193,7 +228,7 @@ Accept connections from outside (default: 1 if no \fB\-proxy\fR or \fB\-connect\
.HP
\fB\-listenonion\fR
.IP
-Automatically create Tor hidden service (default: 1)
+Automatically create Tor onion service (default: 1)
.HP
\fB\-maxconnections=\fR<n>
.IP
@@ -215,12 +250,18 @@ amount. (default: 4200 seconds)
.HP
\fB\-maxuploadtarget=\fR<n>
.IP
-Tries to keep outbound traffic under the given target (in MiB per 24h),
-0 = no limit (default: 0)
+Tries to keep outbound traffic under the given target (in MiB per 24h).
+Limit does not apply to peers with 'download' permission. 0 = no
+limit (default: 0)
+.HP
+\fB\-networkactive\fR
+.IP
+Enable all P2P network activity (default: 1). Can be changed by the
+setnetworkactive RPC command
.HP
\fB\-onion=\fR<ip:port>
.IP
-Use separate SOCKS5 proxy to reach peers via Tor hidden services, set
+Use separate SOCKS5 proxy to reach peers via Tor onion services, set
\fB\-noonion\fR to disable (default: \fB\-proxy\fR)
.HP
\fB\-onlynet=\fR<net>
@@ -230,10 +271,14 @@ onion). Incoming connections are not affected by this option.
This option can be specified multiple times to allow multiple
networks.
.HP
+\fB\-peerblockfilters\fR
+.IP
+Serve compact block filters to peers per BIP 157 (default: 0)
+.HP
\fB\-peerbloomfilters\fR
.IP
Support filtering of blocks and transaction with bloom filters (default:
-1)
+0)
.HP
\fB\-permitbaremultisig\fR
.IP
@@ -241,8 +286,8 @@ Relay non\-P2SH multisig (default: 1)
.HP
\fB\-port=\fR<port>
.IP
-Listen for connections on <port> (default: 8333, testnet: 18333,
-regtest: 18444)
+Listen for connections on <port> (default: 8333, testnet: 18333 signet:
+38333, regtest: 18444)
.HP
\fB\-proxy=\fR<ip:port>
.IP
@@ -277,25 +322,35 @@ Tor control port password (default: empty)
.IP
Use UPnP to map the listening port (default: 0)
.HP
-\fB\-whitebind=\fR<addr>
-.IP
-Bind to given address and whitelist peers connecting to it. Use
-[host]:port notation for IPv6
-.HP
-\fB\-whitelist=\fR<IP address or network>
-.IP
-Whitelist peers connecting from the given IP address (e.g. 1.2.3.4) or
-CIDR notated network (e.g. 1.2.3.0/24). Can be specified multiple
-times. Whitelisted peers cannot be DoS banned and their
-transactions are always relayed, even if they are already in the
-mempool, useful e.g. for a gateway
+\fB\-whitebind=\fR<[permissions@]addr>
+.IP
+Bind to the given address and add permission flags to the peers
+connecting to it. Use [host]:port notation for IPv6. Allowed
+permissions: bloomfilter (allow requesting BIP37 filtered blocks
+and transactions), noban (do not ban for misbehavior; implies
+download), forcerelay (relay transactions that are already in the
+mempool; implies relay), relay (relay even in \fB\-blocksonly\fR mode,
+and unlimited transaction announcements), mempool (allow
+requesting BIP35 mempool contents), download (allow getheaders
+during IBD, no disconnect after maxuploadtarget limit), addr
+(responses to GETADDR avoid hitting the cache and contain random
+records with the most up\-to\-date info). Specify multiple
+permissions separated by commas (default:
+download,noban,mempool,relay). Can be specified multiple times.
+.HP
+\fB\-whitelist=\fR<[permissions@]IP address or network>
+.IP
+Add permission flags to the peers connecting from the given IP address
+(e.g. 1.2.3.4) or CIDR\-notated network (e.g. 1.2.3.0/24). Uses
+the same permissions as \fB\-whitebind\fR. Can be specified multiple
+times.
.PP
Wallet options:
.HP
\fB\-addresstype\fR
.IP
What type of addresses to use ("legacy", "p2sh\-segwit", or "bech32",
-default: "p2sh\-segwit")
+default: "bech32")
.HP
\fB\-avoidpartialspends\fR
.IP
@@ -303,7 +358,8 @@ Group outputs by address, selecting all or none, instead of selecting on
a per\-output basis. Privacy is improved as an address is only
used once (unless someone sends to it after spending from it),
but may result in slightly higher fees as suboptimal coin
-selection may result due to the added limitation (default: 0)
+selection may result due to the added limitation (default: 0
+(always enabled for wallets with "avoid_reuse" enabled))
.HP
\fB\-changetype\fR
.IP
@@ -327,11 +383,20 @@ limited by the fee estimate for the longest target
\fB\-fallbackfee=\fR<amt>
.IP
A fee rate (in BTC/kB) that will be used when fee estimation has
-insufficient data (default: 0.0002)
+insufficient data. 0 to entirely disable the fallbackfee feature.
+(default: 0.00)
.HP
\fB\-keypool=\fR<n>
.IP
-Set key pool size to <n> (default: 1000)
+Set key pool size to <n> (default: 1000). Warning: Smaller sizes may
+increase the risk of losing funds when restoring from an old
+backup, if none of the addresses in the original keypool have
+been used.
+.HP
+\fB\-maxapsfee=\fR<n>
+.IP
+Spend up to this amount in additional (absolute) fees (in BTC) if it
+allows the use of partial spend avoidance (default: 0.00)
.HP
\fB\-mintxfee=\fR<amt>
.IP
@@ -346,10 +411,6 @@ Fee (in BTC/kB) to add to transactions you send (default: 0.00)
.IP
Rescan the block chain for missing wallet transactions on startup
.HP
-\fB\-salvagewallet\fR
-.IP
-Attempt to recover private keys from a corrupt wallet on startup
-.HP
\fB\-spendzeroconfchange\fR
.IP
Spend unconfirmed change when sending transactions (default: 1)
@@ -359,18 +420,15 @@ Spend unconfirmed change when sending transactions (default: 1)
If paytxfee is not set, include enough fee so transactions begin
confirmation on average within n blocks (default: 6)
.HP
-\fB\-upgradewallet\fR
-.IP
-Upgrade wallet to latest format on startup
-.HP
\fB\-wallet=\fR<path>
.IP
-Specify wallet database path. Can be specified multiple times to load
-multiple wallets. Path is interpreted relative to <walletdir> if
-it is not absolute, and will be created if it does not exist (as
-a directory containing a wallet.dat file and log files). For
-backwards compatibility this will also accept names of existing
-data files in <walletdir>.)
+Specify wallet path to load at startup. Can be used multiple times to
+load multiple wallets. Path is to a directory containing wallet
+data and log files. If the path is not absolute, it is
+interpreted relative to <walletdir>. This only loads existing
+wallets and does not create new ones. For backwards compatibility
+this also accepts names of existing top\-level data files in
+<walletdir>.
.HP
\fB\-walletbroadcast\fR
.IP
@@ -383,18 +441,15 @@ exists, otherwise <datadir>)
.HP
\fB\-walletnotify=\fR<cmd>
.IP
-Execute command when a wallet transaction changes (%s in cmd is replaced
-by TxID)
+Execute command when a wallet transaction changes. %s in cmd is replaced
+by TxID and %w is replaced by wallet name. %w is not currently
+implemented on windows. On systems where %w is supported, it
+should NOT be quoted because this would break shell escaping used
+to invoke the command.
.HP
\fB\-walletrbf\fR
.IP
Send transactions with full\-RBF opt\-in enabled (RPC only, default: 0)
-.HP
-\fB\-zapwallettxes=\fR<mode>
-.IP
-Delete all wallet transactions and only recover those parts of the
-blockchain through \fB\-rescan\fR on startup (1 = keep tx meta data e.g.
-payment request information, 2 = drop tx meta data)
.PP
ZeroMQ notification options:
.HP
@@ -402,17 +457,43 @@ ZeroMQ notification options:
.IP
Enable publish hash block in <address>
.HP
+\fB\-zmqpubhashblockhwm=\fR<n>
+.IP
+Set publish hash block outbound message high water mark (default: 1000)
+.HP
\fB\-zmqpubhashtx=\fR<address>
.IP
Enable publish hash transaction in <address>
.HP
+\fB\-zmqpubhashtxhwm=\fR<n>
+.IP
+Set publish hash transaction outbound message high water mark (default:
+1000)
+.HP
\fB\-zmqpubrawblock=\fR<address>
.IP
Enable publish raw block in <address>
.HP
+\fB\-zmqpubrawblockhwm=\fR<n>
+.IP
+Set publish raw block outbound message high water mark (default: 1000)
+.HP
\fB\-zmqpubrawtx=\fR<address>
.IP
Enable publish raw transaction in <address>
+.HP
+\fB\-zmqpubrawtxhwm=\fR<n>
+.IP
+Set publish raw transaction outbound message high water mark (default:
+1000)
+.HP
+\fB\-zmqpubsequence=\fR<address>
+.IP
+Enable publish hash block and tx sequence in <address>
+.HP
+\fB\-zmqpubsequencehwm=\fR<n>
+.IP
+Set publish hash sequence message high water mark (default: 1000)
.PP
Debugging/Testing options:
.HP
@@ -421,9 +502,9 @@ Debugging/Testing options:
Output debugging information (default: \fB\-nodebug\fR, supplying <category> is
optional). If <category> is not supplied or if <category> = 1,
output all debugging information. <category> can be: net, tor,
-mempool, http, bench, zmq, db, rpc, estimatefee, addrman,
+mempool, http, bench, zmq, walletdb, rpc, estimatefee, addrman,
selectcoins, reindex, cmpctblock, rand, prune, proxy, mempoolrej,
-libevent, coindb, qt, leveldb.
+libevent, coindb, qt, leveldb, validation.
.HP
\fB\-debugexclude=\fR<category>
.IP
@@ -439,15 +520,19 @@ Print help message with debugging options and exit
.IP
Include IP addresses in debug output (default: 0)
.HP
+\fB\-logthreadnames\fR
+.IP
+Prepend debug output with name of the originating thread (only available
+on platforms supporting thread_local) (default: 0)
+.HP
\fB\-logtimestamps\fR
.IP
Prepend debug output with timestamp (default: 1)
.HP
\fB\-maxtxfee=\fR<amt>
.IP
-Maximum total fees (in BTC) to use in a single wallet transaction or raw
-transaction; setting this too low may abort large transactions
-(default: 0.10)
+Maximum total fees (in BTC) to use in a single wallet transaction;
+setting this too low may abort large transactions (default: 0.10)
.HP
\fB\-printtoconsole\fR
.IP
@@ -464,9 +549,32 @@ Append comment to the user agent string
.PP
Chain selection options:
.HP
+\fB\-chain=\fR<chain>
+.IP
+Use the chain <chain> (default: main). Allowed values: main, test,
+signet, regtest
+.HP
+\fB\-signet\fR
+.IP
+Use the signet chain. Equivalent to \fB\-chain\fR=\fI\,signet\/\fR. Note that the network
+is defined by the \fB\-signetchallenge\fR parameter
+.HP
+\fB\-signetchallenge\fR
+.IP
+Blocks must satisfy the given script to be considered valid (only for
+signet networks; defaults to the global default signet test
+network challenge)
+.HP
+\fB\-signetseednode\fR
+.IP
+Specify a seed node for the signet network, in the hostname[:port]
+format, e.g. sig.net:1234 (may be used multiple times to specify
+multiple seed nodes; defaults to the global default signet test
+network seed node(s))
+.HP
\fB\-testnet\fR
.IP
-Use the test chain
+Use the test chain. Equivalent to \fB\-chain\fR=\fI\,test\/\fR.
.PP
Node relay options:
.HP
@@ -491,13 +599,15 @@ mining and transaction creation (default: 0.00001)
.HP
\fB\-whitelistforcerelay\fR
.IP
-Force relay of transactions from whitelisted peers even if they violate
-local relay policy (default: 0)
+Add 'forcerelay' permission to whitelisted inbound peers with default
+permissions. This will relay transactions even if the
+transactions were already in the mempool. (default: 0)
.HP
\fB\-whitelistrelay\fR
.IP
-Accept relayed transactions received from whitelisted peers even when
-not relaying transactions (default: 1)
+Add 'relay' permission to whitelisted inbound peers with default
+permissions. This will accept relayed transactions even when not
+relaying transactions (default: 1)
.PP
Block creation options:
.HP
@@ -553,7 +663,7 @@ Password for JSON\-RPC connections
\fB\-rpcport=\fR<port>
.IP
Listen for JSON\-RPC connections on <port> (default: 8332, testnet:
-18332, regtest: 18443)
+18332, signet: 38332, regtest: 18443)
.HP
\fB\-rpcserialversion\fR
.IP
@@ -568,14 +678,31 @@ Set the number of threads to service RPC calls (default: 4)
.IP
Username for JSON\-RPC connections
.HP
+\fB\-rpcwhitelist=\fR<whitelist>
+.IP
+Set a whitelist to filter incoming RPC calls for a specific user. The
+field <whitelist> comes in the format: <USERNAME>:<rpc 1>,<rpc
+2>,...,<rpc n>. If multiple whitelists are set for a given user,
+they are set\-intersected. See \fB\-rpcwhitelistdefault\fR documentation
+for information on default whitelist behavior.
+.HP
+\fB\-rpcwhitelistdefault\fR
+.IP
+Sets default behavior for rpc whitelisting. Unless rpcwhitelistdefault
+is set to 0, if any \fB\-rpcwhitelist\fR is set, the rpc server acts as
+if all rpc users are subject to empty\-unless\-otherwise\-specified
+whitelists. If rpcwhitelistdefault is set to 1 and no
+\fB\-rpcwhitelist\fR is set, rpc server acts as if all rpc users are
+subject to empty whitelists.
+.HP
\fB\-server\fR
.IP
Accept command line and JSON\-RPC commands
.SH COPYRIGHT
-Copyright (C) 2009-2019 The Bitcoin Core developers
+Copyright (C) 2009-2020 The Bitcoin Core developers
Please contribute if you find Bitcoin Core useful. Visit
-<https://bitcoincore.org> for further information about the software.
+<https://bitcoincore.org/> for further information about the software.
The source code is available from <https://github.com/bitcoin/bitcoin>.
This is experimental software.
diff --git a/src/policy/feerate.cpp b/src/policy/feerate.cpp
index a01e259731..04e0e117a5 100644
--- a/src/policy/feerate.cpp
+++ b/src/policy/feerate.cpp
@@ -38,7 +38,7 @@ CAmount CFeeRate::GetFee(size_t nBytes_) const
std::string CFeeRate::ToString(const FeeEstimateMode& fee_estimate_mode) const
{
switch (fee_estimate_mode) {
- case FeeEstimateMode::SAT_B: return strprintf("%d.%03d %s/B", nSatoshisPerK / 1000, nSatoshisPerK % 1000, CURRENCY_ATOM);
- default: return strprintf("%d.%08d %s/kB", nSatoshisPerK / COIN, nSatoshisPerK % COIN, CURRENCY_UNIT);
+ case FeeEstimateMode::SAT_VB: return strprintf("%d.%03d %s/vB", nSatoshisPerK / 1000, nSatoshisPerK % 1000, CURRENCY_ATOM);
+ default: return strprintf("%d.%08d %s/kvB", nSatoshisPerK / COIN, nSatoshisPerK % COIN, CURRENCY_UNIT);
}
}
diff --git a/src/policy/feerate.h b/src/policy/feerate.h
index 883940f73c..7c5660ac8a 100644
--- a/src/policy/feerate.h
+++ b/src/policy/feerate.h
@@ -19,8 +19,8 @@ enum class FeeEstimateMode {
UNSET, //!< Use default settings based on other criteria
ECONOMICAL, //!< Force estimateSmartFee to use non-conservative estimates
CONSERVATIVE, //!< Force estimateSmartFee to use conservative estimates
- BTC_KB, //!< Use explicit BTC/kB fee given in coin control
- SAT_B, //!< Use explicit sat/B fee given in coin control
+ BTC_KVB, //!< Use BTC/kvB fee rate unit
+ SAT_VB, //!< Use sat/vB fee rate unit
};
/**
@@ -39,7 +39,16 @@ public:
// 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 kB. The size in bytes must not exceed (2^63 - 1)*/
+ /** Constructor for a fee rate in satoshis per kvB (sat/kvB). The size in bytes must not exceed (2^63 - 1).
+ *
+ * Passing an nBytes 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 CAmount fee rate to construct with
+ * @param[in] nBytes size_t bytes (units) to construct with
+ * @returns fee rate
+ */
CFeeRate(const CAmount& nFeePaid, size_t nBytes);
/**
* Return the fee in satoshis for the given size in bytes.
@@ -56,7 +65,7 @@ public:
friend bool operator>=(const CFeeRate& a, const CFeeRate& b) { return a.nSatoshisPerK >= b.nSatoshisPerK; }
friend bool operator!=(const CFeeRate& a, const CFeeRate& b) { return a.nSatoshisPerK != b.nSatoshisPerK; }
CFeeRate& operator+=(const CFeeRate& a) { nSatoshisPerK += a.nSatoshisPerK; return *this; }
- std::string ToString(const FeeEstimateMode& fee_estimate_mode = FeeEstimateMode::BTC_KB) const;
+ std::string ToString(const FeeEstimateMode& fee_estimate_mode = FeeEstimateMode::BTC_KVB) const;
SERIALIZE_METHODS(CFeeRate, obj) { READWRITE(obj.nSatoshisPerK); }
};
diff --git a/src/qt/bitcoinstrings.cpp b/src/qt/bitcoinstrings.cpp
index 193098ed82..27e512d075 100644
--- a/src/qt/bitcoinstrings.cpp
+++ b/src/qt/bitcoinstrings.cpp
@@ -129,7 +129,6 @@ QT_TRANSLATE_NOOP("bitcoin-core", "Error loading %s: Private keys can only be di
QT_TRANSLATE_NOOP("bitcoin-core", "Error loading %s: Wallet corrupted"),
QT_TRANSLATE_NOOP("bitcoin-core", "Error loading %s: Wallet requires newer version of %s"),
QT_TRANSLATE_NOOP("bitcoin-core", "Error loading block database"),
-QT_TRANSLATE_NOOP("bitcoin-core", "Error loading wallet %s. Duplicate -wallet filename specified."),
QT_TRANSLATE_NOOP("bitcoin-core", "Error opening block database"),
QT_TRANSLATE_NOOP("bitcoin-core", "Error reading from database, shutting down."),
QT_TRANSLATE_NOOP("bitcoin-core", "Error upgrading chainstate database"),
@@ -139,6 +138,7 @@ QT_TRANSLATE_NOOP("bitcoin-core", "Failed to listen on any port. Use -listen=0 i
QT_TRANSLATE_NOOP("bitcoin-core", "Failed to rescan the wallet during initialization"),
QT_TRANSLATE_NOOP("bitcoin-core", "Failed to verify database"),
QT_TRANSLATE_NOOP("bitcoin-core", "Fee rate (%s) is lower than the minimum fee rate setting (%s)"),
+QT_TRANSLATE_NOOP("bitcoin-core", "Ignoring duplicate -wallet %s."),
QT_TRANSLATE_NOOP("bitcoin-core", "Importing..."),
QT_TRANSLATE_NOOP("bitcoin-core", "Incorrect or no genesis block found. Wrong datadir for network?"),
QT_TRANSLATE_NOOP("bitcoin-core", "Initialization sanity check failed. %s is shutting down."),
diff --git a/src/qt/createwalletdialog.cpp b/src/qt/createwalletdialog.cpp
index 38c6bfe56a..2ded6a1d89 100644
--- a/src/qt/createwalletdialog.cpp
+++ b/src/qt/createwalletdialog.cpp
@@ -35,11 +35,28 @@ CreateWalletDialog::CreateWalletDialog(QWidget* parent) :
}
});
-#ifndef USE_SQLITE
- ui->descriptor_checkbox->setToolTip(tr("Compiled without sqlite support (required for descriptor wallets)"));
- ui->descriptor_checkbox->setEnabled(false);
- ui->descriptor_checkbox->setChecked(false);
-#endif
+ connect(ui->disable_privkeys_checkbox, &QCheckBox::toggled, [this](bool checked) {
+ // Disable the encrypt_wallet_checkbox when isDisablePrivateKeysChecked is
+ // set to true, enable it when isDisablePrivateKeysChecked is false.
+ ui->encrypt_wallet_checkbox->setEnabled(!checked);
+
+ // Wallets without private keys start out blank
+ if (checked) {
+ ui->blank_wallet_checkbox->setChecked(true);
+ }
+
+ // When the encrypt_wallet_checkbox is disabled, uncheck it.
+ if (!ui->encrypt_wallet_checkbox->isEnabled()) {
+ ui->encrypt_wallet_checkbox->setChecked(false);
+ }
+ });
+
+ #ifndef USE_SQLITE
+ ui->descriptor_checkbox->setToolTip(tr("Compiled without sqlite support (required for descriptor wallets)"));
+ ui->descriptor_checkbox->setEnabled(false);
+ ui->descriptor_checkbox->setChecked(false);
+ #endif
+
}
CreateWalletDialog::~CreateWalletDialog()
diff --git a/src/qt/forms/createwalletdialog.ui b/src/qt/forms/createwalletdialog.ui
index b592140dd7..ea713e1abd 100644
--- a/src/qt/forms/createwalletdialog.ui
+++ b/src/qt/forms/createwalletdialog.ui
@@ -38,6 +38,9 @@
<height>24</height>
</rect>
</property>
+ <property name="placeholderText">
+ <string>Wallet</string>
+ </property>
</widget>
<widget class="QLabel" name="label">
<property name="geometry">
@@ -68,17 +71,33 @@
<string>Encrypt Wallet</string>
</property>
<property name="checked">
- <bool>true</bool>
+ <bool>false</bool>
+ </property>
+ </widget>
+ <widget class="QLabel" name="advanced_options_label">
+ <property name="geometry">
+ <rect>
+ <x>20</x>
+ <y>90</y>
+ <width>130</width>
+ <height>21</height>
+ </rect>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">font-weight:bold;</string>
+ </property>
+ <property name="text">
+ <string>Advanced options</string>
</property>
</widget>
<widget class="QCheckBox" name="disable_privkeys_checkbox">
<property name="enabled">
- <bool>false</bool>
+ <bool>true</bool>
</property>
<property name="geometry">
<rect>
<x>20</x>
- <y>80</y>
+ <y>115</y>
<width>171</width>
<height>22</height>
</rect>
@@ -94,8 +113,8 @@
<property name="geometry">
<rect>
<x>20</x>
- <y>110</y>
- <width>171</width>
+ <y>135</y>
+ <width>220</width>
<height>22</height>
</rect>
</property>
@@ -110,7 +129,7 @@
<property name="geometry">
<rect>
<x>20</x>
- <y>140</y>
+ <y>155</y>
<width>171</width>
<height>22</height>
</rect>
@@ -128,6 +147,7 @@
<tabstop>encrypt_wallet_checkbox</tabstop>
<tabstop>disable_privkeys_checkbox</tabstop>
<tabstop>blank_wallet_checkbox</tabstop>
+ <tabstop>descriptor_checkbox</tabstop>
</tabstops>
<resources/>
<connections>
diff --git a/src/qt/locale/bitcoin_af.ts b/src/qt/locale/bitcoin_af.ts
index 908083dfb7..0fb0168506 100644
--- a/src/qt/locale/bitcoin_af.ts
+++ b/src/qt/locale/bitcoin_af.ts
@@ -830,7 +830,7 @@
<source>Create</source>
<translation>Create</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -3668,10 +3668,6 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>%s is set very high!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>Error loading wallet %s. Duplicate -wallet filename specified.</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>Starting network threads...</translation>
</message>
diff --git a/src/qt/locale/bitcoin_ar.ts b/src/qt/locale/bitcoin_ar.ts
index dbe680ad5c..791f62397c 100644
--- a/src/qt/locale/bitcoin_ar.ts
+++ b/src/qt/locale/bitcoin_ar.ts
@@ -877,7 +877,7 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Create</source>
<translation>إنشاء</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
diff --git a/src/qt/locale/bitcoin_bg.ts b/src/qt/locale/bitcoin_bg.ts
index 2a7d68f61d..ed59d98664 100644
--- a/src/qt/locale/bitcoin_bg.ts
+++ b/src/qt/locale/bitcoin_bg.ts
@@ -450,6 +450,22 @@
<translation>Актуално</translation>
</message>
<message>
+ <source>Close Wallet...</source>
+ <translation>Затвори Портфейла</translation>
+ </message>
+ <message>
+ <source>Close wallet</source>
+ <translation>Затвори портфейла</translation>
+ </message>
+ <message>
+ <source>Close All Wallets...</source>
+ <translation>Затвори Всички Портфейли...</translation>
+ </message>
+ <message>
+ <source>Close all wallets</source>
+ <translation>Затвори всички портфейли</translation>
+ </message>
+ <message>
<source>Show the %1 help message to get a list with possible Bitcoin command-line options</source>
<translation>Покажи %1 помощно съобщение за да получиш лист с възможни Биткойн команди</translation>
</message>
@@ -466,6 +482,14 @@
<translation>Минимизирай</translation>
</message>
<message>
+ <source>Zoom</source>
+ <translation>Увеличи</translation>
+ </message>
+ <message>
+ <source>Main Window</source>
+ <translation>Главен Прозорец</translation>
+ </message>
+ <message>
<source>%1 client</source>
<translation>%1 клиент</translation>
</message>
@@ -2191,6 +2215,14 @@
</context>
<context>
<name>WalletController</name>
+ <message>
+ <source>Close wallet</source>
+ <translation>Затвори портфейла</translation>
+ </message>
+ <message>
+ <source>Close all wallets</source>
+ <translation>Затвори всички портфейли</translation>
+ </message>
</context>
<context>
<name>WalletFrame</name>
diff --git a/src/qt/locale/bitcoin_bn.ts b/src/qt/locale/bitcoin_bn.ts
index 10afa566b6..62a3b39b7e 100644
--- a/src/qt/locale/bitcoin_bn.ts
+++ b/src/qt/locale/bitcoin_bn.ts
@@ -830,7 +830,7 @@
<source>Create</source>
<translation>Create</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -3668,10 +3668,6 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>%s is set very high!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>Error loading wallet %s. Duplicate -wallet filename specified.</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>Starting network threads...</translation>
</message>
diff --git a/src/qt/locale/bitcoin_ca.ts b/src/qt/locale/bitcoin_ca.ts
index 2b4a283813..564098c40e 100644
--- a/src/qt/locale/bitcoin_ca.ts
+++ b/src/qt/locale/bitcoin_ca.ts
@@ -23,7 +23,7 @@
</message>
<message>
<source>C&amp;lose</source>
- <translation>&amp;Tanca</translation>
+ <translation>T&amp;anca</translation>
</message>
<message>
<source>Delete the currently selected address from the list</source>
@@ -484,6 +484,22 @@ Només és possible firmar amb adreces del tipus "legacy".</translation>
<translation>Actualitzat</translation>
</message>
<message>
+ <source>&amp;Load PSBT from file...</source>
+ <translation>&amp;Carrega el PSBT des del fitxer ...</translation>
+ </message>
+ <message>
+ <source>Load Partially Signed Bitcoin Transaction</source>
+ <translation>Carrega la transacció Bitcoin signada parcialment</translation>
+ </message>
+ <message>
+ <source>Load PSBT from clipboard...</source>
+ <translation>Carrega PSBT des del porta-retalls ...</translation>
+ </message>
+ <message>
+ <source>Load Partially Signed Bitcoin Transaction from clipboard</source>
+ <translation>Carrega la transacció de Bitcoin signada parcialment des del porta-retalls</translation>
+ </message>
+ <message>
<source>Node window</source>
<translation>Finestra node</translation>
</message>
@@ -520,10 +536,26 @@ Només és possible firmar amb adreces del tipus "legacy".</translation>
<translation>Tanca la cartera</translation>
</message>
<message>
+ <source>Close All Wallets...</source>
+ <translation>Tanca totes les carteres ...</translation>
+ </message>
+ <message>
+ <source>Close all wallets</source>
+ <translation>Tanqueu totes les carteres</translation>
+ </message>
+ <message>
<source>Show the %1 help message to get a list with possible Bitcoin command-line options</source>
<translation>Mostra el missatge d'ajuda del %1 per obtenir una llista amb les possibles opcions de línia d'ordres de Bitcoin</translation>
</message>
<message>
+ <source>&amp;Mask values</source>
+ <translation>&amp;Emmascara els valors</translation>
+ </message>
+ <message>
+ <source>Mask the values in the Overview tab</source>
+ <translation>Emmascara els valors en la pestanya Visió general</translation>
+ </message>
+ <message>
<source>default wallet</source>
<translation>cartera predeterminada</translation>
</message>
@@ -631,7 +663,15 @@ Només és possible firmar amb adreces del tipus "legacy".</translation>
<source>Wallet is &lt;b&gt;encrypted&lt;/b&gt; and currently &lt;b&gt;locked&lt;/b&gt;</source>
<translation>La cartera està &lt;b&gt;encriptada&lt;/b&gt; i actualment &lt;b&gt;blocada&lt;/b&gt;</translation>
</message>
- </context>
+ <message>
+ <source>Original message:</source>
+ <translation>Missatge original:</translation>
+ </message>
+ <message>
+ <source>A fatal error occurred. %1 can no longer continue safely and will quit.</source>
+ <translation>S'ha produït un error fatal. %1 ja no pot continuar amb seguretat i sortirà.</translation>
+ </message>
+</context>
<context>
<name>CoinControlDialog</name>
<message>
@@ -834,10 +874,18 @@ Això és ideal per a carteres de mode només lectura.</translation>
<translation>Fes cartera en blanc</translation>
</message>
<message>
+ <source>Use descriptors for scriptPubKey management</source>
+ <translation>Utilitzeu descriptors per a la gestió de scriptPubKey</translation>
+ </message>
+ <message>
+ <source>Descriptor Wallet</source>
+ <translation>Cartera del descriptor</translation>
+ </message>
+ <message>
<source>Create</source>
<translation>Crear</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -1310,6 +1358,14 @@ Això és ideal per a carteres de mode només lectura.</translation>
<translation>Si voleu mostrar les funcions de control de monedes o no.</translation>
</message>
<message>
+ <source>Connect to the Bitcoin network through a separate SOCKS5 proxy for Tor onion services.</source>
+ <translation>Connecteu-vos a la xarxa Bitcoin mitjançant un servidor intermediari SOCKS5 separat per als serveis de ceba Tor.</translation>
+ </message>
+ <message>
+ <source>Use separate SOCKS&amp;5 proxy to reach peers via Tor onion services:</source>
+ <translation>Utilitzeu el servidor intermediari SOCKS&amp;5 per arribar als peers mitjançant els serveis d'onion de Tor:</translation>
+ </message>
+ <message>
<source>&amp;Third party transaction URLs</source>
<translation>URL de transaccions de tercers</translation>
</message>
@@ -1444,10 +1500,54 @@ Això és ideal per a carteres de mode només lectura.</translation>
<source>Current total balance in watch-only addresses</source>
<translation>Balanç total actual en adreces de només lectura</translation>
</message>
- </context>
+ <message>
+ <source>Privacy mode activated for the Overview tab. To unmask the values, uncheck Settings-&gt;Mask values.</source>
+ <translation>El mode de privadesa està activat a la pestanya d'Overview. Per desenmascarar els valors, desmarqueu Configuració-&gt; Valors de màscara.</translation>
+ </message>
+</context>
<context>
<name>PSBTOperationsDialog</name>
<message>
+ <source>Dialog</source>
+ <translation>Diàleg</translation>
+ </message>
+ <message>
+ <source>Sign Tx</source>
+ <translation>Signa Tx</translation>
+ </message>
+ <message>
+ <source>Broadcast Tx</source>
+ <translation>Emet Tx</translation>
+ </message>
+ <message>
+ <source>Copy to Clipboard</source>
+ <translation>Còpia al Clipboard</translation>
+ </message>
+ <message>
+ <source>Save...</source>
+ <translation>Desa...</translation>
+ </message>
+ <message>
+ <source>Could not sign any more inputs.</source>
+ <translation>No s'han pogut firmar més entrades.</translation>
+ </message>
+ <message>
+ <source>Unknown error processing transaction.</source>
+ <translation>Error desconnegut al processar la transacció.</translation>
+ </message>
+ <message>
+ <source>Save Transaction Data</source>
+ <translation>Guarda Dades de Transacció</translation>
+ </message>
+ <message>
+ <source>Partially Signed Transaction (Binary) (*.psbt)</source>
+ <translation>Transacció Parcialment Firmada (Binari) (*.psbt)</translation>
+ </message>
+ <message>
+ <source>Pays transaction fee: </source>
+ <translation>Paga comissió de transacció:</translation>
+ </message>
+ <message>
<source>Total Amount</source>
<translation>Import total</translation>
</message>
@@ -1455,7 +1555,27 @@ Això és ideal per a carteres de mode només lectura.</translation>
<source>or</source>
<translation>o</translation>
</message>
- </context>
+ <message>
+ <source>Transaction has %1 unsigned inputs.</source>
+ <translation>La transacció té %1 entrades no firmades.</translation>
+ </message>
+ <message>
+ <source>Transaction is missing some information about inputs.</source>
+ <translation>La transacció manca d'informació en algunes entrades.</translation>
+ </message>
+ <message>
+ <source>Transaction still needs signature(s).</source>
+ <translation>La transacció encara necessita una o vàries firmes.</translation>
+ </message>
+ <message>
+ <source>Transaction is fully signed and ready for broadcast.</source>
+ <translation>La transacció està completament firmada i a punt per emetre's.</translation>
+ </message>
+ <message>
+ <source>Transaction status is unknown.</source>
+ <translation>L'estat de la transacció és desconegut.</translation>
+ </message>
+</context>
<context>
<name>PaymentServer</name>
<message>
@@ -1621,6 +1741,10 @@ Això és ideal per a carteres de mode només lectura.</translation>
<translation>Avís: %1</translation>
</message>
<message>
+ <source>Error initializing settings: %1</source>
+ <translation>Error a l'inicialitzar la configuració: %1</translation>
+ </message>
+ <message>
<source>%1 didn't yet exit safely...</source>
<translation>%1 encara no ha finalitzat de manera segura...</translation>
</message>
@@ -1799,6 +1923,10 @@ Això és ideal per a carteres de mode només lectura.</translation>
<translation>Finestra node</translation>
</message>
<message>
+ <source>Current block height</source>
+ <translation>Altura actual de bloc</translation>
+ </message>
+ <message>
<source>Open the %1 debug log file from the current data directory. This can take a few seconds for large log files.</source>
<translation>Obre el fitxer de registre de depuració %1 del directori de dades actual. Això pot trigar uns segons en fitxers de registre grans.</translation>
</message>
@@ -1811,6 +1939,10 @@ Això és ideal per a carteres de mode només lectura.</translation>
<translation>Augmenta la mida de la lletra</translation>
</message>
<message>
+ <source>Permissions</source>
+ <translation>Permisos</translation>
+ </message>
+ <message>
<source>Services</source>
<translation>Serveis</translation>
</message>
@@ -2065,14 +2197,30 @@ Això és ideal per a carteres de mode només lectura.</translation>
<source>Could not unlock wallet.</source>
<translation>No s'ha pogut desblocar la cartera.</translation>
</message>
- </context>
+ <message>
+ <source>Could not generate new %1 address</source>
+ <translation>No s'ha pogut generar una nova %1 direcció</translation>
+ </message>
+</context>
<context>
<name>ReceiveRequestDialog</name>
<message>
+ <source>Request payment to ...</source>
+ <translation>Sol·licita el pagament a ...</translation>
+ </message>
+ <message>
+ <source>Address:</source>
+ <translation>Direcció:</translation>
+ </message>
+ <message>
<source>Amount:</source>
<translation>Import:</translation>
</message>
<message>
+ <source>Label:</source>
+ <translation>Etiqueta:</translation>
+ </message>
+ <message>
<source>Message:</source>
<translation>Missatge:</translation>
</message>
@@ -2347,6 +2495,14 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<translation>Esteu segur que ho voleu enviar?</translation>
</message>
<message>
+ <source>Save Transaction Data</source>
+ <translation>Guarda Dades de Transacció</translation>
+ </message>
+ <message>
+ <source>Partially Signed Transaction (Binary) (*.psbt)</source>
+ <translation>Transacció Parcialment Firmada (Binari) (*.psbt)</translation>
+ </message>
+ <message>
<source>or</source>
<translation>o</translation>
</message>
@@ -3168,6 +3324,10 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>Closing the wallet for too long can result in having to resync the entire chain if pruning is enabled.</source>
<translation>Si tanqueu la cartera durant massa temps, es pot haver de tornar a sincronitzar tota la cadena si teniu el sistema de poda habilitat.</translation>
</message>
+ <message>
+ <source>Close all wallets</source>
+ <translation>Tanqueu totes les carteres</translation>
+ </message>
</context>
<context>
<name>WalletFrame</name>
@@ -3675,10 +3835,6 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<translation>%s està especificat molt alt!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>S'ha produït un error en carregar la cartera %s. S'ha especificat un nom de fitxer duplicat -wallet.</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>S'estan iniciant els fils de la xarxa...</translation>
</message>
diff --git a/src/qt/locale/bitcoin_cs.ts b/src/qt/locale/bitcoin_cs.ts
index 919a62664b..ba012881d5 100644
--- a/src/qt/locale/bitcoin_cs.ts
+++ b/src/qt/locale/bitcoin_cs.ts
@@ -43,7 +43,7 @@
</message>
<message>
<source>&amp;Delete</source>
- <translation>S&amp;maž</translation>
+ <translation>&amp;Smaž</translation>
</message>
<message>
<source>Choose the address to send coins to</source>
@@ -70,6 +70,11 @@
<translation>Tohle jsou tvé bitcoinové adresy pro posílání plateb. Před odesláním mincí si vždy zkontroluj částku a cílovou adresu.</translation>
</message>
<message>
+ <source>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>
+ <translation>Tohle jsou tvé bitcoinové adresy pro přijmaní plateb. Použij "Vytvoř novou přijimací adresu" pro vytvoření nových adres. Přihlašování je povoleno jen s adresami typu "Legacy"</translation>
+ </message>
+ <message>
<source>&amp;Copy Address</source>
<translation>&amp;Kopíruj adresu</translation>
</message>
@@ -271,7 +276,7 @@
</message>
<message>
<source>Browse transaction history</source>
- <translation>Procházej historii transakcí</translation>
+ <translation>Procházet historii transakcí</translation>
</message>
<message>
<source>E&amp;xit</source>
@@ -514,6 +519,10 @@
<translation>Zavřít peněženku</translation>
</message>
<message>
+ <source>Close all wallets</source>
+ <translation>Zavřít všechny peněženky</translation>
+ </message>
+ <message>
<source>Show the %1 help message to get a list with possible Bitcoin command-line options</source>
<translation>Seznam argumentů Bitcoinu pro příkazovou řádku získáš v nápovědě %1</translation>
</message>
@@ -830,7 +839,7 @@
<source>Create</source>
<translation>Vytvořit</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -3169,6 +3178,10 @@ Poznámka: Jelikož je poplatek počítaný za bajt, poplatek o hodnotě "100 sa
<source>Closing the wallet for too long can result in having to resync the entire chain if pruning is enabled.</source>
<translation>Zavření peněženky na příliš dlouhou dobu může vyústit v potřebu resynchronizace celého blockchainu pokud je zapnuté prořezávání.</translation>
</message>
+ <message>
+ <source>Close all wallets</source>
+ <translation>Zavřít všechny peněženky</translation>
+ </message>
</context>
<context>
<name>WalletFrame</name>
@@ -3676,10 +3689,6 @@ Poznámka: Jelikož je poplatek počítaný za bajt, poplatek o hodnotě "100 sa
<translation>%s je nastaveno velmi vysoko!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>Chyba při načítání peněženky %s. Udán duplicitní název souboru -wallet.</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>Spouštím síťová vlákna…</translation>
</message>
diff --git a/src/qt/locale/bitcoin_da.ts b/src/qt/locale/bitcoin_da.ts
index 2fd4955ca8..85baeabb80 100644
--- a/src/qt/locale/bitcoin_da.ts
+++ b/src/qt/locale/bitcoin_da.ts
@@ -830,7 +830,7 @@
<source>Create</source>
<translation>Opret</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -3672,10 +3672,6 @@ Note: Siden gebyret er kalkuleret på en per-byte basis, et gebyr på "100 satos
<translation>%s er meget højt sat!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>Fejl under indlæsning af tegnebog %s. -wallet filnavn angivet mere end én gang.</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>Starter netværkstråde…</translation>
</message>
diff --git a/src/qt/locale/bitcoin_de.ts b/src/qt/locale/bitcoin_de.ts
index a0faa91255..c75c86aa34 100644
--- a/src/qt/locale/bitcoin_de.ts
+++ b/src/qt/locale/bitcoin_de.ts
@@ -884,7 +884,7 @@ Das Signieren ist nur mit Adressen vom Typ 'Legacy' möglich.</translation>
<source>Create</source>
<translation>Erstellen</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -1147,7 +1147,7 @@ Das Signieren ist nur mit Adressen vom Typ 'Legacy' möglich.</translation>
</message>
<message>
<source>Opening Wallet &lt;b&gt;%1&lt;/b&gt;...</source>
- <translation>Öffne Wallet&lt;b&gt;%1&lt;/b&gt; ...</translation>
+ <translation>Öffne Wallet &lt;b&gt;%1&lt;/b&gt; ...</translation>
</message>
</context>
<context>
@@ -3572,6 +3572,10 @@ Gehen Sie zu Datei &gt; Öffnen Sie die Brieftasche, um eine Brieftasche zu lade
<translation>Wenn sie %s nützlich finden, sind Helfer sehr gern gesehen. Besuchen Sie %s um mehr über das Softwareprojekt zu erfahren.</translation>
</message>
<message>
+ <source>SQLiteDatabase: Failed to prepare the statement to fetch the application id: %s</source>
+ <translation>SQLiteDatabase: Konnte das Statement zum Abholen der Anwendungs-ID %s nicht vorbereiten.</translation>
+ </message>
+ <message>
<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>Die Block-Datenbank enthält einen Block, der in der Zukunft auftaucht. Dies kann daran liegen, dass die Systemzeit Ihres Computers falsch eingestellt ist. Stellen Sie die Block-Datenbank nur wieder her, wenn Sie sich sicher sind, dass Ihre Systemzeit korrekt eingestellt ist.</translation>
</message>
@@ -3677,6 +3681,10 @@ Gehen Sie zu Datei &gt; Öffnen Sie die Brieftasche, um eine Brieftasche zu lade
<translation>Fehler: Wallet konnte während der Initialisierung nicht erneut gescannt werden.</translation>
</message>
<message>
+ <source>Failed to verify database</source>
+ <translation>Verifizierung der Datenbank fehlgeschlagen</translation>
+ </message>
+ <message>
<source>Importing...</source>
<translation>Importiere...</translation>
</message>
@@ -3705,6 +3713,15 @@ Gehen Sie zu Datei &gt; Öffnen Sie die Brieftasche, um eine Brieftasche zu lade
<translation>Ungültiger Betrag für -fallbackfee=&lt;amount&gt;: '%s'</translation>
</message>
<message>
+ <source>SQLiteDatabase: Failed to read database verification error: %s</source>
+ <translation>Datenbank konnte nicht gelesen werden
+Verifikations-Error: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Unexpected application id. Expected %u, got %u</source>
+ <translation>SQLiteDatabase: Unerwartete Anwendungs-ID. %u statt %u erhalten.</translation>
+ </message>
+ <message>
<source>Specified blocks directory "%s" does not exist.</source>
<translation>Angegebener Blöcke-Ordner "%s" existiert nicht.</translation>
</message>
@@ -3967,10 +3984,6 @@ Gehen Sie zu Datei &gt; Öffnen Sie die Brieftasche, um eine Brieftasche zu lade
<translation>%s wurde sehr hoch eingestellt!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>Fehler beim Laden der Wallet %s. -wallet Dateiname doppelt angegeben.</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>Netzwerk-Threads werden gestartet...</translation>
</message>
diff --git a/src/qt/locale/bitcoin_el.ts b/src/qt/locale/bitcoin_el.ts
index e9c08feaee..4f493da61d 100644
--- a/src/qt/locale/bitcoin_el.ts
+++ b/src/qt/locale/bitcoin_el.ts
@@ -514,6 +514,14 @@
<translation>Κλείσιμο πορτοφολιού</translation>
</message>
<message>
+ <source>Close All Wallets...</source>
+ <translation>Κλείσιμο όλων των πορτοφολιών...</translation>
+ </message>
+ <message>
+ <source>Close all wallets</source>
+ <translation>Κλείσιμο όλων των πορτοφολιών</translation>
+ </message>
+ <message>
<source>Show the %1 help message to get a list with possible Bitcoin command-line options</source>
<translation>Εμφάνισε το %1 βοηθητικό μήνυμα για λήψη μιας λίστας με διαθέσιμες επιλογές για Bitcoin εντολές </translation>
</message>
@@ -625,6 +633,10 @@
<source>Wallet is &lt;b&gt;encrypted&lt;/b&gt; and currently &lt;b&gt;locked&lt;/b&gt;</source>
<translation>Το πορτοφόλι είναι &lt;b&gt;κρυπτογραφημένο&lt;/b&gt; και &lt;b&gt;κλειδωμένο&lt;/b&gt;</translation>
</message>
+ <message>
+ <source>Original message:</source>
+ <translation>Αρχικό Μήνυμα:</translation>
+ </message>
</context>
<context>
<name>CoinControlDialog</name>
@@ -830,7 +842,7 @@
<source>Create</source>
<translation>Δημιουργία</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -1442,10 +1454,34 @@
<translation>Αποθήκευση...</translation>
</message>
<message>
+ <source>Failed to load transaction: %1</source>
+ <translation>Αποτυχία φόρτωσης μεταφοράς: %1</translation>
+ </message>
+ <message>
+ <source>Unknown error processing transaction.</source>
+ <translation>Άγνωστο λάθος επεξεργασίας μεταφοράς.</translation>
+ </message>
+ <message>
+ <source>PSBT copied to clipboard.</source>
+ <translation>PSBT αντιγράφηκε στο πρόχειρο.</translation>
+ </message>
+ <message>
<source>Save Transaction Data</source>
<translation>Αποθήκευση Δεδομένων Συναλλαγής</translation>
</message>
<message>
+ <source>PSBT saved to disk.</source>
+ <translation>PSBT αποθηκεύτηκε στο δίσκο.</translation>
+ </message>
+ <message>
+ <source> * Sends %1 to %2</source>
+ <translation>* Στέλνει %1 προς %2</translation>
+ </message>
+ <message>
+ <source>Pays transaction fee: </source>
+ <translation>Πληρωμή τέλους συναλλαγής:</translation>
+ </message>
+ <message>
<source>Total Amount</source>
<translation>Συνολικό Ποσό</translation>
</message>
@@ -1453,7 +1489,11 @@
<source>or</source>
<translation>ή</translation>
</message>
- </context>
+ <message>
+ <source>Transaction status is unknown.</source>
+ <translation>Η κατάσταση της συναλλαγής είναι άγνωστη.</translation>
+ </message>
+</context>
<context>
<name>PaymentServer</name>
<message>
@@ -1793,6 +1833,10 @@
<translation>Κόμβος παράθυρο</translation>
</message>
<message>
+ <source>Current block height</source>
+ <translation>Τωρινό ύψος block</translation>
+ </message>
+ <message>
<source>Open the %1 debug log file from the current data directory. This can take a few seconds for large log files.</source>
<translation>Ανοίξτε το αρχείο καταγραφής εντοπισμού σφαλμάτων %1 από τον τρέχοντα κατάλογο δεδομένων. Αυτό μπορεί να διαρκέσει μερικά δευτερόλεπτα για τα μεγάλα αρχεία καταγραφής.</translation>
</message>
@@ -1805,6 +1849,10 @@
<translation>Αύξηση μεγέθους γραμματοσειράς</translation>
</message>
<message>
+ <source>Permissions</source>
+ <translation>Αδειες</translation>
+ </message>
+ <message>
<source>Services</source>
<translation>Υπηρεσίες</translation>
</message>
@@ -2064,6 +2112,14 @@
<context>
<name>ReceiveRequestDialog</name>
<message>
+ <source>Request payment to ...</source>
+ <translation>Αίτημα πληρωμής προς ...</translation>
+ </message>
+ <message>
+ <source>Address:</source>
+ <translation>Διεύθυνση:</translation>
+ </message>
+ <message>
<source>Amount:</source>
<translation>Ποσό:</translation>
</message>
@@ -3161,6 +3217,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>Closing the wallet for too long can result in having to resync the entire chain if pruning is enabled.</source>
<translation>Το κλείσιμο του πορτοφολιού για πολύ μεγάλο χρονικό διάστημα μπορεί να οδηγήσει στην επανασύνδεση ολόκληρης της αλυσίδας αν είναι ενεργοποιημένη η περικοπή.</translation>
</message>
+ <message>
+ <source>Close all wallets</source>
+ <translation>Κλείσιμο όλων των πορτοφολιών</translation>
+ </message>
</context>
<context>
<name>WalletFrame</name>
diff --git a/src/qt/locale/bitcoin_en.ts b/src/qt/locale/bitcoin_en.ts
index ca9df98969..354c4b6c11 100644
--- a/src/qt/locale/bitcoin_en.ts
+++ b/src/qt/locale/bitcoin_en.ts
@@ -1059,7 +1059,12 @@ Signing is only possible with addresses of the type &apos;legacy&apos;.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+38"/>
+ <location line="+28"/>
+ <source>Wallet</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+13"/>
<source>Wallet Name</source>
<translation type="unfinished"></translation>
</message>
@@ -1075,6 +1080,11 @@ Signing is only possible with addresses of the type &apos;legacy&apos;.</source>
</message>
<message>
<location line="+19"/>
+ <source>Advanced options</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+16"/>
<source>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>
<translation type="unfinished"></translation>
</message>
@@ -1108,6 +1118,11 @@ Signing is only possible with addresses of the type &apos;legacy&apos;.</source>
<source>Create</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location line="+36"/>
+ <source>Compiled without sqlite support (required for descriptor wallets)</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>EditAddressDialog</name>
@@ -3991,7 +4006,7 @@ Note: Since the fee is calculated on a per-byte basis, a fee of &quot;100 satos
<context>
<name>TransactionTableModel</name>
<message>
- <location filename="../transactiontablemodel.cpp" line="+221"/>
+ <location filename="../transactiontablemodel.cpp" line="+251"/>
<source>Date</source>
<translation type="unfinished">Date</translation>
</message>
@@ -4723,7 +4738,7 @@ Go to File &gt; Open Wallet to load a wallet.
<translation>Error loading block database</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Error opening block database</source>
<translation>Error opening block database</translation>
</message>
@@ -4744,6 +4759,11 @@ Go to File &gt; Open Wallet to load a wallet.
</message>
<message>
<location line="+2"/>
+ <source>Ignoring duplicate -wallet %s.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
<source>Importing...</source>
<translation type="unfinished"></translation>
</message>
@@ -4968,7 +4988,7 @@ Go to File &gt; Open Wallet to load a wallet.
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+12"/>
+ <location line="+11"/>
<source>Error reading from database, shutting down.</source>
<translation type="unfinished"></translation>
</message>
@@ -4993,7 +5013,7 @@ Go to File &gt; Open Wallet to load a wallet.
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+5"/>
+ <location line="+6"/>
<source>Invalid -onion address or hostname: &apos;%s&apos;</source>
<translation type="unfinished"></translation>
</message>
@@ -5134,12 +5154,7 @@ Go to File &gt; Open Wallet to load a wallet.
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+23"/>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+49"/>
+ <location line="+72"/>
<source>Starting network threads...</source>
<translation type="unfinished"></translation>
</message>
diff --git a/src/qt/locale/bitcoin_en_GB.ts b/src/qt/locale/bitcoin_en_GB.ts
index 3896953215..a64eed4127 100644
--- a/src/qt/locale/bitcoin_en_GB.ts
+++ b/src/qt/locale/bitcoin_en_GB.ts
@@ -884,7 +884,7 @@ Signing is only possible with addresses of the type 'legacy'.</translation>
<source>Create</source>
<translation>Create</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -3974,10 +3974,6 @@ Go to File &gt; Open Wallet to load a wallet.
<translation>%s is set very high!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>Error loading wallet %s. Duplicate -wallet filename specified.</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>Starting network threads...</translation>
</message>
diff --git a/src/qt/locale/bitcoin_eo.ts b/src/qt/locale/bitcoin_eo.ts
index ab0167cf17..74a3791776 100644
--- a/src/qt/locale/bitcoin_eo.ts
+++ b/src/qt/locale/bitcoin_eo.ts
@@ -132,6 +132,10 @@
<translation>Ripetu la novan pasfrazon</translation>
</message>
<message>
+ <source>Show passphrase</source>
+ <translation>Montri pasfrazon</translation>
+ </message>
+ <message>
<source>Encrypt wallet</source>
<translation>Ĉifri la monujon</translation>
</message>
@@ -172,6 +176,26 @@
<translation>La monujo estas ĉifrita</translation>
</message>
<message>
+ <source>Enter the new passphrase for the wallet.&lt;br/&gt;Please use a passphrase of &lt;b&gt;ten or more random characters&lt;/b&gt;, or &lt;b&gt;eight or more words&lt;/b&gt;.</source>
+ <translation>Enigi la novan pasfrazon por la monujo. &lt;br/&gt;Bonvolu uzi pasfrazon de &lt;b&gt;dek aŭ pli hazardaj signoj&lt;/b&gt;, aŭ &lt;b&gt;ok aŭ pli vortoj&lt;/b&gt;.</translation>
+ </message>
+ <message>
+ <source>Enter the old passphrase and new passphrase for the wallet.</source>
+ <translation>Enigi la malnovan pasfrazon kaj la novan pasfrazon por la monujo.</translation>
+ </message>
+ <message>
+ <source>Wallet to be encrypted</source>
+ <translation>Monujo ĉifriĝota</translation>
+ </message>
+ <message>
+ <source>Your wallet is about to be encrypted. </source>
+ <translation>Via monujo estas ĉifriĝota.</translation>
+ </message>
+ <message>
+ <source>Your wallet is now encrypted. </source>
+ <translation>Via monujo ĵus estas ĉifrata.</translation>
+ </message>
+ <message>
<source>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>
<translation>GRAVE: antaŭaj sekur-kopioj de via monujo-dosiero estas forigindaj kiam vi havas nove kreitan ĉifritan monujo-dosieron. Pro sekureco, antaŭaj kopioj de la neĉifrita dosiero ne plu funkcios tuj kiam vi ekuzos la novan ĉifritan dosieron.</translation>
</message>
@@ -250,6 +274,10 @@
<translation>&amp;Pri %1</translation>
</message>
<message>
+ <source>Show information about %1</source>
+ <translation>Montri informojn pri %1</translation>
+ </message>
+ <message>
<source>About &amp;Qt</source>
<translation>Pri &amp;Qt</translation>
</message>
@@ -262,6 +290,10 @@
<translation>&amp;Agordoj...</translation>
</message>
<message>
+ <source>Modify configuration options for %1</source>
+ <translation>Ŝanĝi agordojn por %1</translation>
+ </message>
+ <message>
<source>&amp;Encrypt Wallet...</source>
<translation>Ĉifri &amp;Monujon...</translation>
</message>
@@ -278,6 +310,30 @@
<translation>Malfermi &amp;URI-on...</translation>
</message>
<message>
+ <source>Create Wallet...</source>
+ <translation>Krei Monujon...</translation>
+ </message>
+ <message>
+ <source>Create a new wallet</source>
+ <translation>Krei novan monujon</translation>
+ </message>
+ <message>
+ <source>Wallet:</source>
+ <translation>Monujo:</translation>
+ </message>
+ <message>
+ <source>Click to disable network activity.</source>
+ <translation>Alklaki por malebligi retajn agadojn.</translation>
+ </message>
+ <message>
+ <source>Network activity disabled.</source>
+ <translation>Retaj agadoj malebliĝas.</translation>
+ </message>
+ <message>
+ <source>Click to enable network activity again.</source>
+ <translation>Alklaki por denove ebligi retajn agadojn.</translation>
+ </message>
+ <message>
<source>Reindexing blocks on disk...</source>
<translation>Reindeksado de blokoj sur disko...</translation>
</message>
@@ -386,14 +442,38 @@
<translation>Ĝisdata</translation>
</message>
<message>
+ <source>Close All Wallets...</source>
+ <translation>Fermi Ĉiujn Monujojn...</translation>
+ </message>
+ <message>
+ <source>Close all wallets</source>
+ <translation>Fermi ĉiujn monujojn</translation>
+ </message>
+ <message>
+ <source>default wallet</source>
+ <translation>defaŭlta monujo</translation>
+ </message>
+ <message>
<source>&amp;Window</source>
<translation>&amp;Fenestro</translation>
</message>
<message>
+ <source>Main Window</source>
+ <translation>Ĉefa Fenestro</translation>
+ </message>
+ <message>
<source>Catching up...</source>
<translation>Ĝisdatigante...</translation>
</message>
<message>
+ <source>Error: %1</source>
+ <translation>Eraro: %1</translation>
+ </message>
+ <message>
+ <source>Warning: %1</source>
+ <translation>Averto: %1</translation>
+ </message>
+ <message>
<source>Date: %1
</source>
<translation>Dato: %1
@@ -406,6 +486,12 @@
</translation>
</message>
<message>
+ <source>Wallet: %1
+</source>
+ <translation>Monujo: %1
+</translation>
+ </message>
+ <message>
<source>Type: %1
</source>
<translation>Tipo: %1
@@ -439,10 +525,22 @@
<source>Wallet is &lt;b&gt;encrypted&lt;/b&gt; and currently &lt;b&gt;locked&lt;/b&gt;</source>
<translation>Monujo estas &lt;b&gt;ĉifrita&lt;/b&gt; kaj aktuale &lt;b&gt;ŝlosita&lt;/b&gt;</translation>
</message>
- </context>
+ <message>
+ <source>Original message:</source>
+ <translation>Originala mesaĝo:</translation>
+ </message>
+ <message>
+ <source>A fatal error occurred. %1 can no longer continue safely and will quit.</source>
+ <translation>Neriparebla eraro okazis. %1 ne plu sekure povas daŭri kaj ĝi ĉesiĝos.</translation>
+ </message>
+</context>
<context>
<name>CoinControlDialog</name>
<message>
+ <source>Coin Selection</source>
+ <translation>Monero-Elektaĵo</translation>
+ </message>
+ <message>
<source>Quantity:</source>
<translation>Kvanto:</translation>
</message>
@@ -581,9 +679,37 @@
</context>
<context>
<name>CreateWalletActivity</name>
- </context>
+ <message>
+ <source>Create wallet warning</source>
+ <translation>Averto pro krei monujon</translation>
+ </message>
+</context>
<context>
<name>CreateWalletDialog</name>
+ <message>
+ <source>Create Wallet</source>
+ <translation>Krei Monujon</translation>
+ </message>
+ <message>
+ <source>Wallet Name</source>
+ <translation>Monujo-Nomo</translation>
+ </message>
+ <message>
+ <source>Encrypt Wallet</source>
+ <translation>Ĉifri Monujon</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>Malebligi privatajn ŝlosilojn por ĉi tiu monujo. Monujoj kun malebligitaj privataj ŝlosiloj ne havos privatajn ŝlosilojn, kaj povas havi nek HD-semon nek importatajn privatajn ŝlosilojn. Ĉi tio estas ideale por nurspektaj monujoj.</translation>
+ </message>
+ <message>
+ <source>Disable Private Keys</source>
+ <translation>Malebligi Privatajn Ŝlosilojn</translation>
+ </message>
+ <message>
+ <source>Create</source>
+ <translation>Krei</translation>
+ </message>
</context>
<context>
<name>EditAddressDialog</name>
@@ -703,17 +829,61 @@
<source>Last block time</source>
<translation>Horo de la lasta bloko</translation>
</message>
+ <message>
+ <source>Progress</source>
+ <translation>Progreso</translation>
+ </message>
+ <message>
+ <source>Progress increase per hour</source>
+ <translation>Hora pligrandigo da progreso</translation>
+ </message>
+ <message>
+ <source>calculating...</source>
+ <translation>kalkuladas...</translation>
+ </message>
+ <message>
+ <source>Hide</source>
+ <translation>Kaŝi</translation>
+ </message>
+ <message>
+ <source>Esc</source>
+ <translation>Esk</translation>
+ </message>
+ <message>
+ <source>%1 is currently syncing. It will download headers and blocks from peers and validate them until reaching the tip of the block chain.</source>
+ <translation>%1 sinkronigadas. Ĝi elŝutos kapaĵojn kaj blokojn de samtavolanoj, kaj validigos ilin, ĝis ĝi atingas la pinton de la blokĉeno.</translation>
+ </message>
</context>
<context>
<name>OpenURIDialog</name>
<message>
+ <source>Open bitcoin URI</source>
+ <translation>Malfermi na la URI de bitmono</translation>
+ </message>
+ <message>
<source>URI:</source>
<translation>URI:</translation>
</message>
</context>
<context>
<name>OpenWalletActivity</name>
- </context>
+ <message>
+ <source>Open wallet failed</source>
+ <translation>Malfermi monujon malsukcesis</translation>
+ </message>
+ <message>
+ <source>Open wallet warning</source>
+ <translation>Malfermi monujon averto</translation>
+ </message>
+ <message>
+ <source>default wallet</source>
+ <translation>defaŭlta monujo</translation>
+ </message>
+ <message>
+ <source>Opening Wallet &lt;b&gt;%1&lt;/b&gt;...</source>
+ <translation>Malfermadas Monujon &lt;b&gt;%1&lt;/b&gt;...</translation>
+ </message>
+</context>
<context>
<name>OptionsDialog</name>
<message>
@@ -725,10 +895,26 @@
<translation>Ĉ&amp;efa</translation>
</message>
<message>
+ <source>Automatically start %1 after logging in to the system.</source>
+ <translation>Aŭtomate komenci na %1 post ensalutis en la sistemon.</translation>
+ </message>
+ <message>
+ <source>&amp;Start %1 on system login</source>
+ <translation>&amp;Komenci na %1 kiam ensaluti en la sistemon</translation>
+ </message>
+ <message>
<source>Size of &amp;database cache</source>
<translation>Dosiergrando de &amp;datumbasa kaŝmemoro</translation>
</message>
<message>
+ <source>Number of script &amp;verification threads</source>
+ <translation>Kvanto da skriptaj kaj kontroleraraj fadenoj</translation>
+ </message>
+ <message>
+ <source>IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1)</source>
+ <translation>IP-adreso de prokurilo (ekz. IPv4: 127.0.0.1 / IPv6: ::1)</translation>
+ </message>
+ <message>
<source>Reset all client options to default.</source>
<translation>Reagordi ĉion al defaŭlataj valoroj.</translation>
</message>
@@ -976,6 +1162,10 @@
<translation>Eraro: la elektita dosierujo por datumoj "%1" ne ekzistas.</translation>
</message>
<message>
+ <source>Error: %1</source>
+ <translation>Eraro: %1</translation>
+ </message>
+ <message>
<source>unknown</source>
<translation>nekonata</translation>
</message>
@@ -1172,6 +1362,10 @@
<translation>Mesaĝo:</translation>
</message>
<message>
+ <source>Wallet:</source>
+ <translation>Monujo:</translation>
+ </message>
+ <message>
<source>Copy &amp;URI</source>
<translation>Kopii &amp;URI</translation>
</message>
@@ -1262,6 +1456,10 @@
<translation>Krompago:</translation>
</message>
<message>
+ <source>Hide</source>
+ <translation>Kaŝi</translation>
+ </message>
+ <message>
<source>Send to multiple recipients at once</source>
<translation>Sendi samtempe al pluraj ricevantoj</translation>
</message>
@@ -1875,17 +2073,29 @@
</context>
<context>
<name>WalletController</name>
+ <message>
+ <source>Close all wallets</source>
+ <translation>Fermi ĉiujn monujojn</translation>
+ </message>
</context>
<context>
<name>WalletFrame</name>
- </context>
+ <message>
+ <source>Create a new wallet</source>
+ <translation>Krei novan monujon</translation>
+ </message>
+</context>
<context>
<name>WalletModel</name>
<message>
<source>Send Coins</source>
<translation>Sendi Bitmonon</translation>
</message>
- </context>
+ <message>
+ <source>default wallet</source>
+ <translation>defaŭlta monujo</translation>
+ </message>
+</context>
<context>
<name>WalletView</name>
<message>
diff --git a/src/qt/locale/bitcoin_es.ts b/src/qt/locale/bitcoin_es.ts
index 3a0a8608f6..49022fd8b2 100644
--- a/src/qt/locale/bitcoin_es.ts
+++ b/src/qt/locale/bitcoin_es.ts
@@ -70,6 +70,12 @@
<translation>Estas son sus direcciones Bitcoin para enviar pagos. Compruebe siempre la cantidad y la dirección de recibo antes de transferir monedas.</translation>
</message>
<message>
+ <source>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>
+ <translation>Estas son sus direcciones Bitcoin para la recepción de pagos. Use el botón 'Crear una nueva dirección para recepción' en la pestaña Recibir para crear nuevas direcciones.
+Firmar solo es posible con correos del tipo Legacy.</translation>
+ </message>
+ <message>
<source>&amp;Copy Address</source>
<translation>&amp;Copiar dirección</translation>
</message>
@@ -478,6 +484,22 @@
<translation>Actualizado</translation>
</message>
<message>
+ <source>&amp;Load PSBT from file...</source>
+ <translation>&amp;Cargar PSBT desde el archivo...</translation>
+ </message>
+ <message>
+ <source>Load Partially Signed Bitcoin Transaction</source>
+ <translation>Cargar una transacción de Bitcoin parcialmente firmada</translation>
+ </message>
+ <message>
+ <source>Load PSBT from clipboard...</source>
+ <translation>Cargar PSBT desde el portapapeles...</translation>
+ </message>
+ <message>
+ <source>Load Partially Signed Bitcoin Transaction from clipboard</source>
+ <translation>Cargar una transacción de Bitcoin parcialmente firmada desde el Portapapeles</translation>
+ </message>
+ <message>
<source>Node window</source>
<translation>Ventana de nodo</translation>
</message>
@@ -526,6 +548,14 @@
<translation>Muestra el mensaje de ayuda %1 para obtener una lista con posibles opciones de línea de comandos de Bitcoin.</translation>
</message>
<message>
+ <source>&amp;Mask values</source>
+ <translation>&amp;Esconder valores</translation>
+ </message>
+ <message>
+ <source>Mask the values in the Overview tab</source>
+ <translation>Esconder los valores de la ventana de previsualización</translation>
+ </message>
+ <message>
<source>default wallet</source>
<translation>Cartera predeterminada</translation>
</message>
@@ -637,7 +667,11 @@
<source>Original message:</source>
<translation>Mensaje original:</translation>
</message>
- </context>
+ <message>
+ <source>A fatal error occurred. %1 can no longer continue safely and will quit.</source>
+ <translation>Ha ocurrido un error fatal. %1 no puede seguir seguro y se cerrará.</translation>
+ </message>
+</context>
<context>
<name>CoinControlDialog</name>
<message>
@@ -839,10 +873,18 @@
<translation>Crear monedero vacío</translation>
</message>
<message>
+ <source>Use descriptors for scriptPubKey management</source>
+ <translation>Use descriptores para la gestión de scriptPubKey</translation>
+ </message>
+ <message>
+ <source>Descriptor Wallet</source>
+ <translation>Descriptor del monedero</translation>
+ </message>
+ <message>
<source>Create</source>
<translation>Crear</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -1315,6 +1357,14 @@
<translation>Mostrar o no características de control de moneda</translation>
</message>
<message>
+ <source>Connect to the Bitcoin network through a separate SOCKS5 proxy for Tor onion services.</source>
+ <translation>Conéctese a la red de Bitcoin a través de un proxy SOCKS5 separado para los servicios Tor ocultos.</translation>
+ </message>
+ <message>
+ <source>Use separate SOCKS&amp;5 proxy to reach peers via Tor onion services:</source>
+ <translation>Usar proxy SOCKS&amp;5 para alcanzar nodos via servicios ocultos Tor:</translation>
+ </message>
+ <message>
<source>&amp;Third party transaction URLs</source>
<translation>URLs de transacciones de terceros</translation>
</message>
@@ -1449,7 +1499,11 @@
<source>Current total balance in watch-only addresses</source>
<translation>Saldo total actual en direcciones de solo-ver</translation>
</message>
- </context>
+ <message>
+ <source>Privacy mode activated for the Overview tab. To unmask the values, uncheck Settings-&gt;Mask values.</source>
+ <translation>Modo de privacidad activado para la pestaña de visión general. Para desenmascarar los valores, desmarcar los valores de Configuración-&gt;Máscara.</translation>
+ </message>
+</context>
<context>
<name>PSBTOperationsDialog</name>
<message>
@@ -1477,10 +1531,66 @@
<translation>Cerrar</translation>
</message>
<message>
+ <source>Failed to load transaction: %1</source>
+ <translation>Error en la carga de la transacción: %1</translation>
+ </message>
+ <message>
+ <source>Failed to sign transaction: %1</source>
+ <translation>Error en la firma de la transacción: %1</translation>
+ </message>
+ <message>
+ <source>Could not sign any more inputs.</source>
+ <translation>No se han podido firmar más entradas.</translation>
+ </message>
+ <message>
+ <source>Signed %1 inputs, but more signatures are still required.</source>
+ <translation>Se han firmado %1 entradas, pero aún se requieren más firmas.</translation>
+ </message>
+ <message>
+ <source>Signed transaction successfully. Transaction is ready to broadcast.</source>
+ <translation>Se ha firmado correctamente. La transacción está lista para difundirse.</translation>
+ </message>
+ <message>
+ <source>Unknown error processing transaction.</source>
+ <translation>Error desconocido al procesar la transacción.</translation>
+ </message>
+ <message>
+ <source>Transaction broadcast successfully! Transaction ID: %1</source>
+ <translation>¡La transacción se ha difundido correctamente! Código ID de la transacción: %1</translation>
+ </message>
+ <message>
+ <source>Transaction broadcast failed: %1</source>
+ <translation>Ha habido un error en la difusión de la transacción: %1</translation>
+ </message>
+ <message>
<source>PSBT copied to clipboard.</source>
<translation>PSBT copiado al portapapeles</translation>
</message>
<message>
+ <source>Save Transaction Data</source>
+ <translation>Guardar datos de la transacción</translation>
+ </message>
+ <message>
+ <source>Partially Signed Transaction (Binary) (*.psbt)</source>
+ <translation>Transacción firmada de manera parcial (Binaria) (*.psbt)</translation>
+ </message>
+ <message>
+ <source>PSBT saved to disk.</source>
+ <translation>PSBT guardado en la memoria.</translation>
+ </message>
+ <message>
+ <source> * Sends %1 to %2</source>
+ <translation>* Envia %1 a %2</translation>
+ </message>
+ <message>
+ <source>Unable to calculate transaction fee or total transaction amount.</source>
+ <translation>No se ha podido calcular la comisión por transacción o la totalidad de la cantidad de la transacción.</translation>
+ </message>
+ <message>
+ <source>Pays transaction fee: </source>
+ <translation>Pagar comisión de transacción:</translation>
+ </message>
+ <message>
<source>Total Amount</source>
<translation>Monto total</translation>
</message>
@@ -1488,7 +1598,35 @@
<source>or</source>
<translation>o</translation>
</message>
- </context>
+ <message>
+ <source>Transaction has %1 unsigned inputs.</source>
+ <translation>La transacción tiene %1 entradas no firmadas.</translation>
+ </message>
+ <message>
+ <source>Transaction is missing some information about inputs.</source>
+ <translation>Le falta alguna información sobre entradas a la transacción.</translation>
+ </message>
+ <message>
+ <source>Transaction still needs signature(s).</source>
+ <translation>La transacción aún necesita firma(s).</translation>
+ </message>
+ <message>
+ <source>(But this wallet cannot sign transactions.)</source>
+ <translation>(Este monedero no puede firmar transacciones.)</translation>
+ </message>
+ <message>
+ <source>(But this wallet does not have the right keys.)</source>
+ <translation>(Este monedero no tiene las claves adecuadas.)</translation>
+ </message>
+ <message>
+ <source>Transaction is fully signed and ready for broadcast.</source>
+ <translation>La transacción se ha firmado correctamente y está lista para difundirse.</translation>
+ </message>
+ <message>
+ <source>Transaction status is unknown.</source>
+ <translation>El estatus de la transacción es desconocido.</translation>
+ </message>
+</context>
<context>
<name>PaymentServer</name>
<message>
@@ -1832,6 +1970,10 @@
<translation>Ventana de nodo</translation>
</message>
<message>
+ <source>Current block height</source>
+ <translation>Altura del bloque actual</translation>
+ </message>
+ <message>
<source>Open the %1 debug log file from the current data directory. This can take a few seconds for large log files.</source>
<translation>Abrir el archivo de depuración %1 desde el directorio de datos actual. Puede tardar unos segundos para ficheros de gran tamaño.</translation>
</message>
@@ -1844,6 +1986,10 @@
<translation>Aumentar el tamaño de la fuente</translation>
</message>
<message>
+ <source>Permissions</source>
+ <translation>Permisos</translation>
+ </message>
+ <message>
<source>Services</source>
<translation>Servicios</translation>
</message>
@@ -2098,10 +2244,22 @@
<source>Could not unlock wallet.</source>
<translation>No se pudo desbloquear el monedero.</translation>
</message>
- </context>
+ <message>
+ <source>Could not generate new %1 address</source>
+ <translation>No se ha podido generar una nueva dirección %1</translation>
+ </message>
+</context>
<context>
<name>ReceiveRequestDialog</name>
<message>
+ <source>Request payment to ...</source>
+ <translation>Solicitar pago a...</translation>
+ </message>
+ <message>
+ <source>Address:</source>
+ <translation>Dirección:</translation>
+ </message>
+ <message>
<source>Amount:</source>
<translation>Cantidad:</translation>
</message>
@@ -2380,6 +2538,22 @@ Nota: Dado que la comisión se calcula por byte, una comisión de "100 satoshis
<translation>¿Seguro que quiere enviar?</translation>
</message>
<message>
+ <source>Create Unsigned</source>
+ <translation>Crear sin firmar</translation>
+ </message>
+ <message>
+ <source>Save Transaction Data</source>
+ <translation>Guardar datos de la transacción</translation>
+ </message>
+ <message>
+ <source>Partially Signed Transaction (Binary) (*.psbt)</source>
+ <translation>Transacción firmaa de manera parcial (Binaria) (*.psbt)</translation>
+ </message>
+ <message>
+ <source>PSBT saved</source>
+ <translation>PSBT guardado </translation>
+ </message>
+ <message>
<source>or</source>
<translation>o</translation>
</message>
@@ -3205,10 +3379,22 @@ Nota: Dado que la comisión se calcula por byte, una comisión de "100 satoshis
<source>Close all wallets</source>
<translation>Cerrar todas las carteras</translation>
</message>
- </context>
+ <message>
+ <source>Are you sure you wish to close all wallets?</source>
+ <translation>¿Está seguro de que desea cerrar todos los monederos?</translation>
+ </message>
+</context>
<context>
<name>WalletFrame</name>
<message>
+ <source>No wallet has been loaded.
+Go to File &gt; Open Wallet to load a wallet.
+- OR -</source>
+ <translation>No se ha cargado ningún monedero.
+Vaya a Archivo&gt; Abrir monedero para cargar un monedero.
+- O -</translation>
+ </message>
+ <message>
<source>Create a new wallet</source>
<translation>Crear monedero nuevo</translation>
</message>
@@ -3287,6 +3473,22 @@ Nota: Dado que la comisión se calcula por byte, una comisión de "100 satoshis
<translation>Error</translation>
</message>
<message>
+ <source>Load Transaction Data</source>
+ <translation>Cargar datos de la transacción</translation>
+ </message>
+ <message>
+ <source>Partially Signed Transaction (*.psbt)</source>
+ <translation>Transacción firmada de manera parcial (*.psbt)</translation>
+ </message>
+ <message>
+ <source>PSBT file must be smaller than 100 MiB</source>
+ <translation>El archivo PSBT debe ser más pequeño de 100 MiB</translation>
+ </message>
+ <message>
+ <source>Unable to decode PSBT</source>
+ <translation>Imposible descodificar PSBT</translation>
+ </message>
+ <message>
<source>Backup Wallet</source>
<translation>Respaldar monedero</translation>
</message>
@@ -3466,6 +3668,10 @@ Nota: Dado que la comisión se calcula por byte, una comisión de "100 satoshis
<translation>Fallo al escanear el monedero durante la inicialización</translation>
</message>
<message>
+ <source>Failed to verify database</source>
+ <translation>No se ha podido verificar la base de datos</translation>
+ </message>
+ <message>
<source>Importing...</source>
<translation>Importando...</translation>
</message>
@@ -3590,6 +3796,14 @@ Nota: Dado que la comisión se calcula por byte, una comisión de "100 satoshis
<translation>Necesita reconstruir la base de datos utilizando -reindex para volver al modo sin recorte. Esto volverá a descargar toda la cadena de bloques</translation>
</message>
<message>
+ <source>A fatal internal error occurred, see debug.log for details</source>
+ <translation>Ha ocurrido un error interno grave. Consulte debug.log para más detalles.</translation>
+ </message>
+ <message>
+ <source>Disk space is too low!</source>
+ <translation>¡El espacio en el disco es demasiado bajo!</translation>
+ </message>
+ <message>
<source>Error reading from database, shutting down.</source>
<translation>Error al leer la base de datos, cerrando la aplicación.</translation>
</message>
@@ -3622,6 +3836,10 @@ Nota: Dado que la comisión se calcula por byte, una comisión de "100 satoshis
<translation>Necesita especificar un puerto con -whitebind: '%s'</translation>
</message>
<message>
+ <source>No proxy server specified. Use -proxy=&lt;ip&gt; or -proxy=&lt;ip:port&gt;.</source>
+ <translation>No se ha especificado un servidor de proxy. Use -proxy=&lt;ip&gt;o -proxy=&lt;ip:port&gt;.</translation>
+ </message>
+ <message>
<source>Prune mode is incompatible with -blockfilterindex.</source>
<translation>El modo de poda es incompatible con -blockfilterindex</translation>
</message>
@@ -3712,10 +3930,6 @@ Nota: Dado que la comisión se calcula por byte, una comisión de "100 satoshis
<translation>¡%s está configurado muy alto!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>Error cargando el monedero %s. Se ha especificado un nombre de fichero -wallet duplicado.</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>Iniciando procesos de red...</translation>
</message>
diff --git a/src/qt/locale/bitcoin_es_CL.ts b/src/qt/locale/bitcoin_es_CL.ts
index 3eb03c966e..4e08e5abb0 100644
--- a/src/qt/locale/bitcoin_es_CL.ts
+++ b/src/qt/locale/bitcoin_es_CL.ts
@@ -2993,10 +2993,6 @@ Exportar los datos en la pestaña actual a un archivo</translation>
<translation>¡%s esta configurado muy alto!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>Error cargando el monedero %s. Se ha especificado un nombre de fichero -wallet duplicado.</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>Iniciando procesos de red...</translation>
</message>
diff --git a/src/qt/locale/bitcoin_es_CO.ts b/src/qt/locale/bitcoin_es_CO.ts
index fd47d5103f..485d5ff210 100644
--- a/src/qt/locale/bitcoin_es_CO.ts
+++ b/src/qt/locale/bitcoin_es_CO.ts
@@ -2990,10 +2990,6 @@
<translation>¡%s esta configurado muy alto!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>Error cargando el monedero %s. Se ha especificado un nombre de fichero -wallet duplicado.</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>Iniciando procesos de red...</translation>
</message>
diff --git a/src/qt/locale/bitcoin_es_MX.ts b/src/qt/locale/bitcoin_es_MX.ts
index b1bc8e87cb..4a2b25f53b 100644
--- a/src/qt/locale/bitcoin_es_MX.ts
+++ b/src/qt/locale/bitcoin_es_MX.ts
@@ -70,6 +70,12 @@
<translation>Estas son tus direcciones de Bitcoin para enviar pagos. Siempre revisa el monto y la dirección de envío antes de enviar monedas.</translation>
</message>
<message>
+ <source>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>
+ <translation>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'.</translation>
+ </message>
+ <message>
<source>&amp;Copy Address</source>
<translation>&amp;Copiar dirección</translation>
</message>
@@ -436,6 +442,10 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<source>&amp;Command-line options</source>
<translation>opciones de la &amp;Linea de comandos</translation>
</message>
+ <message numerus="yes">
+ <source>%n active connection(s) to Bitcoin network</source>
+ <translation><numerusform>%n active connection to Bitcoin network</numerusform><numerusform>%n active connections to Bitcoin network</numerusform></translation>
+ </message>
<message>
<source>Indexing blocks on disk...</source>
<translation>Indexando bloques en el disco...</translation>
@@ -444,6 +454,18 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<source>Processing blocks on disk...</source>
<translation>Procesando bloques en el disco...</translation>
</message>
+ <message numerus="yes">
+ <source>Processed %n block(s) of transaction history.</source>
+ <translation><numerusform>Processed %n block of transaction history.</numerusform><numerusform>Processed %n blocks of transaction history.</numerusform></translation>
+ </message>
+ <message>
+ <source>%1 behind</source>
+ <translation>%1 behind</translation>
+ </message>
+ <message>
+ <source>Last received block was generated %1 ago.</source>
+ <translation>Last received block was generated %1 ago.</translation>
+ </message>
<message>
<source>Transactions after this will not yet be visible.</source>
<translation>Las transacciones después de esto todavía no serán visibles.</translation>
@@ -465,6 +487,42 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Actualizado al dia </translation>
</message>
<message>
+ <source>&amp;Load PSBT from file...</source>
+ <translation>&amp;Load PSBT from file...</translation>
+ </message>
+ <message>
+ <source>Load Partially Signed Bitcoin Transaction</source>
+ <translation>Load Partially Signed Bitcoin Transaction</translation>
+ </message>
+ <message>
+ <source>Load PSBT from clipboard...</source>
+ <translation>Load PSBT from clipboard...</translation>
+ </message>
+ <message>
+ <source>Load Partially Signed Bitcoin Transaction from clipboard</source>
+ <translation>Load Partially Signed Bitcoin Transaction from clipboard</translation>
+ </message>
+ <message>
+ <source>Node window</source>
+ <translation>Node window</translation>
+ </message>
+ <message>
+ <source>Open node debugging and diagnostic console</source>
+ <translation>Open node debugging and diagnostic console</translation>
+ </message>
+ <message>
+ <source>&amp;Sending addresses</source>
+ <translation>&amp;Sending addresses</translation>
+ </message>
+ <message>
+ <source>&amp;Receiving addresses</source>
+ <translation>&amp;Receiving addresses</translation>
+ </message>
+ <message>
+ <source>Open a bitcoin: URI</source>
+ <translation>Open a bitcoin: URI</translation>
+ </message>
+ <message>
<source>Open Wallet</source>
<translation>Abrir Cartera</translation>
</message>
@@ -481,6 +539,26 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Cerrar cartera</translation>
</message>
<message>
+ <source>Close All Wallets...</source>
+ <translation>Close All Wallets...</translation>
+ </message>
+ <message>
+ <source>Close all wallets</source>
+ <translation>Close all wallets</translation>
+ </message>
+ <message>
+ <source>Show the %1 help message to get a list with possible Bitcoin command-line options</source>
+ <translation>Show the %1 help message to get a list with possible Bitcoin command-line options</translation>
+ </message>
+ <message>
+ <source>&amp;Mask values</source>
+ <translation>&amp;Mask values</translation>
+ </message>
+ <message>
+ <source>Mask the values in the Overview tab</source>
+ <translation>Mask the values in the Overview tab</translation>
+ </message>
+ <message>
<source>default wallet</source>
<translation>cartera predeterminada</translation>
</message>
@@ -497,10 +575,18 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Minimizar</translation>
</message>
<message>
+ <source>Zoom</source>
+ <translation>Zoom</translation>
+ </message>
+ <message>
<source>Main Window</source>
<translation>Ventana Principal</translation>
</message>
<message>
+ <source>%1 client</source>
+ <translation>%1 client</translation>
+ </message>
+ <message>
<source>Connecting to peers...</source>
<translation>Conectando con los compañeros...</translation>
</message>
@@ -523,6 +609,36 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
</translation>
</message>
<message>
+ <source>Amount: %1
+</source>
+ <translation>Amount: %1
+</translation>
+ </message>
+ <message>
+ <source>Wallet: %1
+</source>
+ <translation>Wallet: %1
+</translation>
+ </message>
+ <message>
+ <source>Type: %1
+</source>
+ <translation>Type: %1
+</translation>
+ </message>
+ <message>
+ <source>Label: %1
+</source>
+ <translation>Label: %1
+</translation>
+ </message>
+ <message>
+ <source>Address: %1
+</source>
+ <translation>Address: %1
+</translation>
+ </message>
+ <message>
<source>Sent transaction</source>
<translation>Enviar Transacción</translation>
</message>
@@ -531,6 +647,18 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Transacción entrante</translation>
</message>
<message>
+ <source>HD key generation is &lt;b&gt;enabled&lt;/b&gt;</source>
+ <translation>HD key generation is &lt;b&gt;enabled&lt;/b&gt;</translation>
+ </message>
+ <message>
+ <source>HD key generation is &lt;b&gt;disabled&lt;/b&gt;</source>
+ <translation>HD key generation is &lt;b&gt;disabled&lt;/b&gt;</translation>
+ </message>
+ <message>
+ <source>Private key &lt;b&gt;disabled&lt;/b&gt;</source>
+ <translation>Private key &lt;b&gt;disabled&lt;/b&gt;</translation>
+ </message>
+ <message>
<source>Wallet is &lt;b&gt;encrypted&lt;/b&gt; and currently &lt;b&gt;unlocked&lt;/b&gt;</source>
<translation>La cartera esta &lt;b&gt;encriptada&lt;/b&gt; y &lt;b&gt;desbloqueada&lt;/b&gt; actualmente </translation>
</message>
@@ -538,7 +666,15 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<source>Wallet is &lt;b&gt;encrypted&lt;/b&gt; and currently &lt;b&gt;locked&lt;/b&gt;</source>
<translation>La cartera esta &lt;b&gt;encriptada&lt;/b&gt; y &lt;b&gt;bloqueada&lt;/b&gt; actualmente </translation>
</message>
- </context>
+ <message>
+ <source>Original message:</source>
+ <translation>Original message:</translation>
+ </message>
+ <message>
+ <source>A fatal error occurred. %1 can no longer continue safely and will quit.</source>
+ <translation>A fatal error occurred. %1 can no longer continue safely and will quit.</translation>
+ </message>
+</context>
<context>
<name>CoinControlDialog</name>
<message>
@@ -626,6 +762,14 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Copiar identificación de la transacción. </translation>
</message>
<message>
+ <source>Lock unspent</source>
+ <translation>Lock unspent</translation>
+ </message>
+ <message>
+ <source>Unlock unspent</source>
+ <translation>Unlock unspent</translation>
+ </message>
+ <message>
<source>Copy quantity</source>
<translation>Copiar cantidad</translation>
</message>
@@ -642,10 +786,18 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Copiar bytes</translation>
</message>
<message>
+ <source>Copy dust</source>
+ <translation>Copy dust</translation>
+ </message>
+ <message>
<source>Copy change</source>
<translation>Copiar cambio</translation>
</message>
<message>
+ <source>(%1 locked)</source>
+ <translation>(%1 locked)</translation>
+ </message>
+ <message>
<source>yes</source>
<translation>si</translation>
</message>
@@ -658,10 +810,18 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Esta capa se vuelve roja si algún destinatario recibe un monto menor al actual limite del remanente monetario </translation>
</message>
<message>
+ <source>Can vary +/- %1 satoshi(s) per input.</source>
+ <translation>Can vary +/- %1 satoshi(s) per input.</translation>
+ </message>
+ <message>
<source>(no label)</source>
<translation>(sin etiqueta)</translation>
</message>
<message>
+ <source>change from %1 (%2)</source>
+ <translation>change from %1 (%2)</translation>
+ </message>
+ <message>
<source>(change)</source>
<translation>cambio</translation>
</message>
@@ -669,6 +829,10 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<context>
<name>CreateWalletActivity</name>
<message>
+ <source>Creating Wallet &lt;b&gt;%1&lt;/b&gt;...</source>
+ <translation>Creating Wallet &lt;b&gt;%1&lt;/b&gt;...</translation>
+ </message>
+ <message>
<source>Create wallet failed</source>
<translation>La creación de la cartera falló</translation>
</message>
@@ -704,10 +868,26 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Desactivar las claves privadas</translation>
</message>
<message>
+ <source>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>
+ <translation>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.</translation>
+ </message>
+ <message>
+ <source>Make Blank Wallet</source>
+ <translation>Make Blank Wallet</translation>
+ </message>
+ <message>
+ <source>Use descriptors for scriptPubKey management</source>
+ <translation>Use descriptors for scriptPubKey management</translation>
+ </message>
+ <message>
+ <source>Descriptor Wallet</source>
+ <translation>Descriptor Wallet</translation>
+ </message>
+ <message>
<source>Create</source>
<translation>Crear</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -743,6 +923,18 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Editar dirección de envío</translation>
</message>
<message>
+ <source>The entered address "%1" is not a valid Bitcoin address.</source>
+ <translation>The entered address "%1" is not a valid Bitcoin address.</translation>
+ </message>
+ <message>
+ <source>Address "%1" already exists as a receiving address with label "%2" and so cannot be added as a sending address.</source>
+ <translation>Address "%1" already exists as a receiving address with label "%2" and so cannot be added as a sending address.</translation>
+ </message>
+ <message>
+ <source>The entered address "%1" is already in the address book with label "%2".</source>
+ <translation>The entered address "%1" is already in the address book with label "%2".</translation>
+ </message>
+ <message>
<source>Could not unlock wallet.</source>
<translation>No se puede desbloquear la cartera</translation>
</message>
@@ -762,6 +954,10 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>nombre</translation>
</message>
<message>
+ <source>Directory already exists. Add %1 if you intend to create a new directory here.</source>
+ <translation>Directory already exists. Add %1 if you intend to create a new directory here.</translation>
+ </message>
+ <message>
<source>Path already exists, and is not a directory.</source>
<translation>El camino ya existe, y no es un directorio.</translation>
</message>
@@ -777,6 +973,10 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>versión</translation>
</message>
<message>
+ <source>About %1</source>
+ <translation>About %1</translation>
+ </message>
+ <message>
<source>Command-line options</source>
<translation>opciones de la Linea de comandos</translation>
</message>
@@ -788,6 +988,18 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Bienvenido</translation>
</message>
<message>
+ <source>Welcome to %1.</source>
+ <translation>Welcome to %1.</translation>
+ </message>
+ <message>
+ <source>As this is the first time the program is launched, you can choose where %1 will store its data.</source>
+ <translation>As this is the first time the program is launched, you can choose where %1 will store its data.</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>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.</translation>
+ </message>
+ <message>
<source>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>
<translation>Revertir esta configuración requiere descargar nuevamente la cadena de bloques en su totalidad. es mas eficaz descargar la cadena de bloques completa y después reducirla. Desabilitará algunas funciones avanzadas.</translation>
</message>
@@ -796,6 +1008,10 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>La sincronización inicial es muy demandante, por lo que algunos problemas en su equipo de computo que no hayan sido detectados pueden verse reflejados. Cada vez que corra al %1, continuará descargando donde se le dejó.</translation>
</message>
<message>
+ <source>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>
+ <translation>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.</translation>
+ </message>
+ <message>
<source>Use the default data directory</source>
<translation>Usar el directorio de datos predeterminado</translation>
</message>
@@ -808,14 +1024,46 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Bitcoin</translation>
</message>
<message>
+ <source>Discard blocks after verification, except most recent %1 GB (prune)</source>
+ <translation>Discard blocks after verification, except most recent %1 GB (prune)</translation>
+ </message>
+ <message>
+ <source>At least %1 GB of data will be stored in this directory, and it will grow over time.</source>
+ <translation>At least %1 GB of data will be stored in this directory, and it will grow over time.</translation>
+ </message>
+ <message>
+ <source>Approximately %1 GB of data will be stored in this directory.</source>
+ <translation>Approximately %1 GB of data will be stored in this directory.</translation>
+ </message>
+ <message>
+ <source>%1 will download and store a copy of the Bitcoin block chain.</source>
+ <translation>%1 will download and store a copy of the Bitcoin block chain.</translation>
+ </message>
+ <message>
<source>The wallet will also be stored in this directory.</source>
<translation>La cartera también se almacenará en este directorio.</translation>
</message>
<message>
+ <source>Error: Specified data directory "%1" cannot be created.</source>
+ <translation>Error: Specified data directory "%1" cannot be created.</translation>
+ </message>
+ <message>
<source>Error</source>
<translation>Error</translation>
</message>
- </context>
+ <message numerus="yes">
+ <source>%n GB of free space available</source>
+ <translation><numerusform>%n GB of free space available</numerusform><numerusform>%n GB of free space available</numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source>(of %n GB needed)</source>
+ <translation><numerusform>(of %n GB needed)</numerusform><numerusform>(of %n GB needed)</numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source>(%n GB needed for full chain)</source>
+ <translation><numerusform>(%n GB needed for full chain)</numerusform><numerusform>(%n GB needed for full chain)</numerusform></translation>
+ </message>
+</context>
<context>
<name>ModalOverlay</name>
<message>
@@ -839,6 +1087,10 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Desconocido...</translation>
</message>
<message>
+ <source>Last block time</source>
+ <translation>Last block time</translation>
+ </message>
+ <message>
<source>Progress</source>
<translation>Progreso </translation>
</message>
@@ -862,7 +1114,15 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<source>Esc</source>
<translation>Esc</translation>
</message>
- </context>
+ <message>
+ <source>%1 is currently syncing. It will download headers and blocks from peers and validate them until reaching the tip of the block chain.</source>
+ <translation>%1 is currently syncing. It will download headers and blocks from peers and validate them until reaching the tip of the block chain.</translation>
+ </message>
+ <message>
+ <source>Unknown. Syncing Headers (%1, %2%)...</source>
+ <translation>Unknown. Syncing Headers (%1, %2%)...</translation>
+ </message>
+</context>
<context>
<name>OpenURIDialog</name>
<message>
@@ -881,10 +1141,18 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Abrir la cartera falló</translation>
</message>
<message>
+ <source>Open wallet warning</source>
+ <translation>Open wallet warning</translation>
+ </message>
+ <message>
<source>default wallet</source>
<translation>cartera predeterminada</translation>
</message>
- </context>
+ <message>
+ <source>Opening Wallet &lt;b&gt;%1&lt;/b&gt;...</source>
+ <translation>Opening Wallet &lt;b&gt;%1&lt;/b&gt;...</translation>
+ </message>
+</context>
<context>
<name>OptionsDialog</name>
<message>
@@ -892,18 +1160,106 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Opciones</translation>
</message>
<message>
+ <source>&amp;Main</source>
+ <translation>&amp;Main</translation>
+ </message>
+ <message>
+ <source>Automatically start %1 after logging in to the system.</source>
+ <translation>Automatically start %1 after logging in to the system.</translation>
+ </message>
+ <message>
+ <source>&amp;Start %1 on system login</source>
+ <translation>&amp;Start %1 on system login</translation>
+ </message>
+ <message>
+ <source>Size of &amp;database cache</source>
+ <translation>Size of &amp;database cache</translation>
+ </message>
+ <message>
+ <source>Number of script &amp;verification threads</source>
+ <translation>Number of script &amp;verification threads</translation>
+ </message>
+ <message>
+ <source>IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1)</source>
+ <translation>IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1)</translation>
+ </message>
+ <message>
+ <source>Shows if the supplied default SOCKS5 proxy is used to reach peers via this network type.</source>
+ <translation>Shows if the supplied default SOCKS5 proxy is used to reach peers via this network type.</translation>
+ </message>
+ <message>
+ <source>Hide the icon from the system tray.</source>
+ <translation>Hide the icon from the system tray.</translation>
+ </message>
+ <message>
+ <source>&amp;Hide tray icon</source>
+ <translation>&amp;Hide tray icon</translation>
+ </message>
+ <message>
<source>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>
<translation>Minimizar en lugar de salir de la aplicación cuando la ventana se cierra. Cuando esta opción está activada, la aplicación se cerrará sólo después de seleccionar Salir en el menú.</translation>
</message>
<message>
+ <source>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>
+ <translation>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 |.</translation>
+ </message>
+ <message>
+ <source>Open the %1 configuration file from the working directory.</source>
+ <translation>Open the %1 configuration file from the working directory.</translation>
+ </message>
+ <message>
<source>Open Configuration File</source>
<translation>Abrir Configuración de Archivo</translation>
</message>
<message>
+ <source>Reset all client options to default.</source>
+ <translation>Reset all client options to default.</translation>
+ </message>
+ <message>
+ <source>&amp;Reset Options</source>
+ <translation>&amp;Reset Options</translation>
+ </message>
+ <message>
+ <source>&amp;Network</source>
+ <translation>&amp;Network</translation>
+ </message>
+ <message>
+ <source>Disables some advanced features but all blocks will still be fully validated. Reverting this setting requires re-downloading the entire blockchain. Actual disk usage may be somewhat higher.</source>
+ <translation>Disables some advanced features but all blocks will still be fully validated. Reverting this setting requires re-downloading the entire blockchain. Actual disk usage may be somewhat higher.</translation>
+ </message>
+ <message>
+ <source>Prune &amp;block storage to</source>
+ <translation>Prune &amp;block storage to</translation>
+ </message>
+ <message>
+ <source>GB</source>
+ <translation>GB</translation>
+ </message>
+ <message>
+ <source>Reverting this setting requires re-downloading the entire blockchain.</source>
+ <translation>Reverting this setting requires re-downloading the entire blockchain.</translation>
+ </message>
+ <message>
+ <source>MiB</source>
+ <translation>MiB</translation>
+ </message>
+ <message>
+ <source>(0 = auto, &lt;0 = leave that many cores free)</source>
+ <translation>(0 = auto, &lt;0 = leave that many cores free)</translation>
+ </message>
+ <message>
<source>W&amp;allet</source>
<translation>Cartera</translation>
</message>
<message>
+ <source>Expert</source>
+ <translation>Expert</translation>
+ </message>
+ <message>
+ <source>Enable coin &amp;control features</source>
+ <translation>Enable coin &amp;control features</translation>
+ </message>
+ <message>
<source>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>
<translation>Si usted desactiva el gasto de cambio no confirmado, el cambio de una transacción no puede ser utilizado hasta que esa transacción tenga al menos una confirmación. Esto también afecta la manera en que se calcula su saldo.</translation>
</message>
@@ -912,30 +1268,166 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>&amp;Gastar el cambio no confirmado</translation>
</message>
<message>
+ <source>Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled.</source>
+ <translation>Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled.</translation>
+ </message>
+ <message>
+ <source>Map port using &amp;UPnP</source>
+ <translation>Map port using &amp;UPnP</translation>
+ </message>
+ <message>
<source>Accept connections from outside.</source>
<translation>Aceptar las conexiones del exterior.</translation>
</message>
<message>
+ <source>Allow incomin&amp;g connections</source>
+ <translation>Allow incomin&amp;g connections</translation>
+ </message>
+ <message>
+ <source>Connect to the Bitcoin network through a SOCKS5 proxy.</source>
+ <translation>Connect to the Bitcoin network through a SOCKS5 proxy.</translation>
+ </message>
+ <message>
+ <source>&amp;Connect through SOCKS5 proxy (default proxy):</source>
+ <translation>&amp;Connect through SOCKS5 proxy (default proxy):</translation>
+ </message>
+ <message>
+ <source>Proxy &amp;IP:</source>
+ <translation>Proxy &amp;IP:</translation>
+ </message>
+ <message>
+ <source>&amp;Port:</source>
+ <translation>&amp;Port:</translation>
+ </message>
+ <message>
+ <source>Port of the proxy (e.g. 9050)</source>
+ <translation>Port of the proxy (e.g. 9050)</translation>
+ </message>
+ <message>
+ <source>Used for reaching peers via:</source>
+ <translation>Used for reaching peers via:</translation>
+ </message>
+ <message>
+ <source>IPv4</source>
+ <translation>IPv4</translation>
+ </message>
+ <message>
+ <source>IPv6</source>
+ <translation>IPv6</translation>
+ </message>
+ <message>
+ <source>Tor</source>
+ <translation>Tor</translation>
+ </message>
+ <message>
<source>&amp;Window</source>
<translation>&amp;Ventana</translation>
</message>
<message>
+ <source>Show only a tray icon after minimizing the window.</source>
+ <translation>Show only a tray icon after minimizing the window.</translation>
+ </message>
+ <message>
+ <source>&amp;Minimize to the tray instead of the taskbar</source>
+ <translation>&amp;Minimize to the tray instead of the taskbar</translation>
+ </message>
+ <message>
+ <source>M&amp;inimize on close</source>
+ <translation>M&amp;inimize on close</translation>
+ </message>
+ <message>
+ <source>&amp;Display</source>
+ <translation>&amp;Display</translation>
+ </message>
+ <message>
<source>User Interface &amp;language:</source>
<translation>Idioma de la interfaz de usuario:</translation>
</message>
<message>
+ <source>The user interface language can be set here. This setting will take effect after restarting %1.</source>
+ <translation>The user interface language can be set here. This setting will take effect after restarting %1.</translation>
+ </message>
+ <message>
+ <source>&amp;Unit to show amounts in:</source>
+ <translation>&amp;Unit to show amounts in:</translation>
+ </message>
+ <message>
+ <source>Choose the default subdivision unit to show in the interface and when sending coins.</source>
+ <translation>Choose the default subdivision unit to show in the interface and when sending coins.</translation>
+ </message>
+ <message>
+ <source>Whether to show coin control features or not.</source>
+ <translation>Whether to show coin control features or not.</translation>
+ </message>
+ <message>
+ <source>Connect to the Bitcoin network through a separate SOCKS5 proxy for Tor onion services.</source>
+ <translation>Connect to the Bitcoin network through a separate SOCKS5 proxy for Tor onion services.</translation>
+ </message>
+ <message>
+ <source>Use separate SOCKS&amp;5 proxy to reach peers via Tor onion services:</source>
+ <translation>Use separate SOCKS&amp;5 proxy to reach peers via Tor onion services:</translation>
+ </message>
+ <message>
+ <source>&amp;Third party transaction URLs</source>
+ <translation>&amp;Third party transaction URLs</translation>
+ </message>
+ <message>
+ <source>Options set in this dialog are overridden by the command line or in the configuration file:</source>
+ <translation>Options set in this dialog are overridden by the command line or in the configuration file:</translation>
+ </message>
+ <message>
+ <source>&amp;OK</source>
+ <translation>&amp;OK</translation>
+ </message>
+ <message>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Cancel</translation>
+ </message>
+ <message>
+ <source>default</source>
+ <translation>default</translation>
+ </message>
+ <message>
<source>none</source>
<translation>Ninguno </translation>
</message>
<message>
+ <source>Confirm options reset</source>
+ <translation>Confirm options reset</translation>
+ </message>
+ <message>
+ <source>Client restart required to activate changes.</source>
+ <translation>Client restart required to activate changes.</translation>
+ </message>
+ <message>
+ <source>Client will be shut down. Do you want to proceed?</source>
+ <translation>Client will be shut down. Do you want to proceed?</translation>
+ </message>
+ <message>
+ <source>Configuration options</source>
+ <translation>Configuration options</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>The configuration file is used to specify advanced user options which override GUI settings. Additionally, any command-line options will override this configuration file.</translation>
+ </message>
+ <message>
<source>Error</source>
<translation>Error</translation>
</message>
<message>
+ <source>The configuration file could not be opened.</source>
+ <translation>The configuration file could not be opened.</translation>
+ </message>
+ <message>
<source>This change would require a client restart.</source>
<translation>Este cambio requeriría un reinicio del cliente.</translation>
</message>
- </context>
+ <message>
+ <source>The supplied proxy address is invalid.</source>
+ <translation>The supplied proxy address is invalid.</translation>
+ </message>
+</context>
<context>
<name>OverviewPage</name>
<message>
@@ -943,13 +1435,165 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Formulario</translation>
</message>
<message>
+ <source>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>
+ <translation>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.</translation>
+ </message>
+ <message>
+ <source>Watch-only:</source>
+ <translation>Watch-only:</translation>
+ </message>
+ <message>
+ <source>Available:</source>
+ <translation>Available:</translation>
+ </message>
+ <message>
+ <source>Your current spendable balance</source>
+ <translation>Your current spendable balance</translation>
+ </message>
+ <message>
+ <source>Pending:</source>
+ <translation>Pending:</translation>
+ </message>
+ <message>
+ <source>Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance</source>
+ <translation>Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance</translation>
+ </message>
+ <message>
+ <source>Immature:</source>
+ <translation>Immature:</translation>
+ </message>
+ <message>
+ <source>Mined balance that has not yet matured</source>
+ <translation>Mined balance that has not yet matured</translation>
+ </message>
+ <message>
+ <source>Balances</source>
+ <translation>Balances</translation>
+ </message>
+ <message>
+ <source>Total:</source>
+ <translation>Total:</translation>
+ </message>
+ <message>
+ <source>Your current total balance</source>
+ <translation>Your current total balance</translation>
+ </message>
+ <message>
+ <source>Your current balance in watch-only addresses</source>
+ <translation>Your current balance in watch-only addresses</translation>
+ </message>
+ <message>
+ <source>Spendable:</source>
+ <translation>Spendable:</translation>
+ </message>
+ <message>
<source>Recent transactions</source>
<translation>&lt;b&gt;Transacciones recientes&lt;/b&gt;</translation>
</message>
- </context>
+ <message>
+ <source>Unconfirmed transactions to watch-only addresses</source>
+ <translation>Unconfirmed transactions to watch-only addresses</translation>
+ </message>
+ <message>
+ <source>Mined balance in watch-only addresses that has not yet matured</source>
+ <translation>Mined balance in watch-only addresses that has not yet matured</translation>
+ </message>
+ <message>
+ <source>Current total balance in watch-only addresses</source>
+ <translation>Current total balance in watch-only addresses</translation>
+ </message>
+ <message>
+ <source>Privacy mode activated for the Overview tab. To unmask the values, uncheck Settings-&gt;Mask values.</source>
+ <translation>Privacy mode activated for the Overview tab. To unmask the values, uncheck Settings-&gt;Mask values.</translation>
+ </message>
+</context>
<context>
<name>PSBTOperationsDialog</name>
<message>
+ <source>Dialog</source>
+ <translation>Dialog</translation>
+ </message>
+ <message>
+ <source>Sign Tx</source>
+ <translation>Sign Tx</translation>
+ </message>
+ <message>
+ <source>Broadcast Tx</source>
+ <translation>Broadcast Tx</translation>
+ </message>
+ <message>
+ <source>Copy to Clipboard</source>
+ <translation>Copy to Clipboard</translation>
+ </message>
+ <message>
+ <source>Save...</source>
+ <translation>Save...</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>Close</translation>
+ </message>
+ <message>
+ <source>Failed to load transaction: %1</source>
+ <translation>Failed to load transaction: %1</translation>
+ </message>
+ <message>
+ <source>Failed to sign transaction: %1</source>
+ <translation>Failed to sign transaction: %1</translation>
+ </message>
+ <message>
+ <source>Could not sign any more inputs.</source>
+ <translation>Could not sign any more inputs.</translation>
+ </message>
+ <message>
+ <source>Signed %1 inputs, but more signatures are still required.</source>
+ <translation>Signed %1 inputs, but more signatures are still required.</translation>
+ </message>
+ <message>
+ <source>Signed transaction successfully. Transaction is ready to broadcast.</source>
+ <translation>Signed transaction successfully. Transaction is ready to broadcast.</translation>
+ </message>
+ <message>
+ <source>Unknown error processing transaction.</source>
+ <translation>Unknown error processing transaction.</translation>
+ </message>
+ <message>
+ <source>Transaction broadcast successfully! Transaction ID: %1</source>
+ <translation>Transaction broadcast successfully! Transaction ID: %1</translation>
+ </message>
+ <message>
+ <source>Transaction broadcast failed: %1</source>
+ <translation>Transaction broadcast failed: %1</translation>
+ </message>
+ <message>
+ <source>PSBT copied to clipboard.</source>
+ <translation>PSBT copied to clipboard.</translation>
+ </message>
+ <message>
+ <source>Save Transaction Data</source>
+ <translation>Save Transaction Data</translation>
+ </message>
+ <message>
+ <source>Partially Signed Transaction (Binary) (*.psbt)</source>
+ <translation>Partially Signed Transaction (Binary) (*.psbt)</translation>
+ </message>
+ <message>
+ <source>PSBT saved to disk.</source>
+ <translation>PSBT saved to disk.</translation>
+ </message>
+ <message>
+ <source> * Sends %1 to %2</source>
+ <translation> * Sends %1 to %2</translation>
+ </message>
+ <message>
+ <source>Unable to calculate transaction fee or total transaction amount.</source>
+ <translation>Unable to calculate transaction fee or total transaction amount.</translation>
+ </message>
+ <message>
+ <source>Pays transaction fee: </source>
+ <translation>Pays transaction fee: </translation>
+ </message>
+ <message>
<source>Total Amount</source>
<translation>Cantidad total</translation>
</message>
@@ -957,13 +1601,97 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<source>or</source>
<translation>o</translation>
</message>
- </context>
+ <message>
+ <source>Transaction has %1 unsigned inputs.</source>
+ <translation>Transaction has %1 unsigned inputs.</translation>
+ </message>
+ <message>
+ <source>Transaction is missing some information about inputs.</source>
+ <translation>Transaction is missing some information about inputs.</translation>
+ </message>
+ <message>
+ <source>Transaction still needs signature(s).</source>
+ <translation>Transaction still needs signature(s).</translation>
+ </message>
+ <message>
+ <source>(But this wallet cannot sign transactions.)</source>
+ <translation>(But this wallet cannot sign transactions.)</translation>
+ </message>
+ <message>
+ <source>(But this wallet does not have the right keys.)</source>
+ <translation>(But this wallet does not have the right keys.)</translation>
+ </message>
+ <message>
+ <source>Transaction is fully signed and ready for broadcast.</source>
+ <translation>Transaction is fully signed and ready for broadcast.</translation>
+ </message>
+ <message>
+ <source>Transaction status is unknown.</source>
+ <translation>Transaction status is unknown.</translation>
+ </message>
+</context>
<context>
<name>PaymentServer</name>
- </context>
+ <message>
+ <source>Payment request error</source>
+ <translation>Payment request error</translation>
+ </message>
+ <message>
+ <source>Cannot start bitcoin: click-to-pay handler</source>
+ <translation>Cannot start bitcoin: click-to-pay handler</translation>
+ </message>
+ <message>
+ <source>URI handling</source>
+ <translation>URI handling</translation>
+ </message>
+ <message>
+ <source>'bitcoin://' is not a valid URI. Use 'bitcoin:' instead.</source>
+ <translation>'bitcoin://' is not a valid URI. Use 'bitcoin:' instead.</translation>
+ </message>
+ <message>
+ <source>Cannot process payment request because BIP70 is not supported.</source>
+ <translation>Cannot process payment request because BIP70 is not supported.</translation>
+ </message>
+ <message>
+ <source>Due to widespread security flaws in BIP70 it's strongly recommended that any merchant instructions to switch wallets be ignored.</source>
+ <translation>Due to widespread security flaws in BIP70 it's strongly recommended that any merchant instructions to switch wallets be ignored.</translation>
+ </message>
+ <message>
+ <source>If you are receiving this error you should request the merchant provide a BIP21 compatible URI.</source>
+ <translation>If you are receiving this error you should request the merchant provide a BIP21 compatible URI.</translation>
+ </message>
+ <message>
+ <source>Invalid payment address %1</source>
+ <translation>Invalid payment address %1</translation>
+ </message>
+ <message>
+ <source>URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters.</source>
+ <translation>URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters.</translation>
+ </message>
+ <message>
+ <source>Payment request file handling</source>
+ <translation>Payment request file handling</translation>
+ </message>
+</context>
<context>
<name>PeerTableModel</name>
<message>
+ <source>User Agent</source>
+ <translation>User Agent</translation>
+ </message>
+ <message>
+ <source>Node/Service</source>
+ <translation>Node/Service</translation>
+ </message>
+ <message>
+ <source>NodeId</source>
+ <translation>NodeId</translation>
+ </message>
+ <message>
+ <source>Ping</source>
+ <translation>Ping</translation>
+ </message>
+ <message>
<source>Sent</source>
<translation>Enviado</translation>
</message>
@@ -979,14 +1707,102 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Monto</translation>
</message>
<message>
+ <source>Enter a Bitcoin address (e.g. %1)</source>
+ <translation>Enter a Bitcoin address (e.g. %1)</translation>
+ </message>
+ <message>
+ <source>%1 d</source>
+ <translation>%1 d</translation>
+ </message>
+ <message>
+ <source>%1 h</source>
+ <translation>%1 h</translation>
+ </message>
+ <message>
+ <source>%1 m</source>
+ <translation>%1 m</translation>
+ </message>
+ <message>
+ <source>%1 s</source>
+ <translation>%1 s</translation>
+ </message>
+ <message>
+ <source>None</source>
+ <translation>None</translation>
+ </message>
+ <message>
<source>N/A</source>
<translation>N/A</translation>
</message>
<message>
+ <source>%1 ms</source>
+ <translation>%1 ms</translation>
+ </message>
+ <message numerus="yes">
+ <source>%n second(s)</source>
+ <translation><numerusform>%n second</numerusform><numerusform>%n seconds</numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source>%n minute(s)</source>
+ <translation><numerusform>%n minute</numerusform><numerusform>%n minutes</numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source>%n hour(s)</source>
+ <translation><numerusform>%n hour</numerusform><numerusform>%n hours</numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source>%n day(s)</source>
+ <translation><numerusform>%n day</numerusform><numerusform>%n days</numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source>%n week(s)</source>
+ <translation><numerusform>%n week</numerusform><numerusform>%n weeks</numerusform></translation>
+ </message>
+ <message>
+ <source>%1 and %2</source>
+ <translation>%1 and %2</translation>
+ </message>
+ <message numerus="yes">
+ <source>%n year(s)</source>
+ <translation><numerusform>%n year</numerusform><numerusform>%n years</numerusform></translation>
+ </message>
+ <message>
+ <source>%1 B</source>
+ <translation>%1 B</translation>
+ </message>
+ <message>
+ <source>%1 KB</source>
+ <translation>%1 KB</translation>
+ </message>
+ <message>
+ <source>%1 MB</source>
+ <translation>%1 MB</translation>
+ </message>
+ <message>
+ <source>%1 GB</source>
+ <translation>%1 GB</translation>
+ </message>
+ <message>
+ <source>Error: Specified data directory "%1" does not exist.</source>
+ <translation>Error: Specified data directory "%1" does not exist.</translation>
+ </message>
+ <message>
+ <source>Error: Cannot parse configuration file: %1.</source>
+ <translation>Error: Cannot parse configuration file: %1.</translation>
+ </message>
+ <message>
<source>Error: %1</source>
<translation>Error: %1</translation>
</message>
<message>
+ <source>Error initializing settings: %1</source>
+ <translation>Error initializing settings: %1</translation>
+ </message>
+ <message>
+ <source>%1 didn't yet exit safely...</source>
+ <translation>%1 didn't yet exit safely...</translation>
+ </message>
+ <message>
<source>unknown</source>
<translation>desconocido</translation>
</message>
@@ -1002,6 +1818,10 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>&amp;Copiar Imagen</translation>
</message>
<message>
+ <source>Resulting URI too long, try to reduce the text for label / message.</source>
+ <translation>Resulting URI too long, try to reduce the text for label / message.</translation>
+ </message>
+ <message>
<source>Error encoding URI into QR Code.</source>
<translation>Error codificando la URI en el Código QR.</translation>
</message>
@@ -1037,6 +1857,30 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>General</translation>
</message>
<message>
+ <source>Using BerkeleyDB version</source>
+ <translation>Using BerkeleyDB version</translation>
+ </message>
+ <message>
+ <source>Datadir</source>
+ <translation>Datadir</translation>
+ </message>
+ <message>
+ <source>To specify a non-default location of the data directory use the '%1' option.</source>
+ <translation>To specify a non-default location of the data directory use the '%1' option.</translation>
+ </message>
+ <message>
+ <source>Blocksdir</source>
+ <translation>Blocksdir</translation>
+ </message>
+ <message>
+ <source>To specify a non-default location of the blocks directory use the '%1' option.</source>
+ <translation>To specify a non-default location of the blocks directory use the '%1' option.</translation>
+ </message>
+ <message>
+ <source>Startup time</source>
+ <translation>Startup time</translation>
+ </message>
+ <message>
<source>Network</source>
<translation>Red</translation>
</message>
@@ -1045,6 +1889,26 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Nombre</translation>
</message>
<message>
+ <source>Number of connections</source>
+ <translation>Number of connections</translation>
+ </message>
+ <message>
+ <source>Block chain</source>
+ <translation>Block chain</translation>
+ </message>
+ <message>
+ <source>Memory Pool</source>
+ <translation>Memory Pool</translation>
+ </message>
+ <message>
+ <source>Current number of transactions</source>
+ <translation>Current number of transactions</translation>
+ </message>
+ <message>
+ <source>Memory usage</source>
+ <translation>Memory usage</translation>
+ </message>
+ <message>
<source>Wallet: </source>
<translation>Cartera:</translation>
</message>
@@ -1053,6 +1917,10 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>(ninguno)</translation>
</message>
<message>
+ <source>&amp;Reset</source>
+ <translation>&amp;Reset</translation>
+ </message>
+ <message>
<source>Received</source>
<translation>Recibido</translation>
</message>
@@ -1061,6 +1929,62 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Enviado</translation>
</message>
<message>
+ <source>&amp;Peers</source>
+ <translation>&amp;Peers</translation>
+ </message>
+ <message>
+ <source>Banned peers</source>
+ <translation>Banned peers</translation>
+ </message>
+ <message>
+ <source>Select a peer to view detailed information.</source>
+ <translation>Select a peer to view detailed information.</translation>
+ </message>
+ <message>
+ <source>Direction</source>
+ <translation>Direction</translation>
+ </message>
+ <message>
+ <source>Version</source>
+ <translation>Version</translation>
+ </message>
+ <message>
+ <source>Starting Block</source>
+ <translation>Starting Block</translation>
+ </message>
+ <message>
+ <source>Synced Headers</source>
+ <translation>Synced Headers</translation>
+ </message>
+ <message>
+ <source>Synced Blocks</source>
+ <translation>Synced Blocks</translation>
+ </message>
+ <message>
+ <source>The mapped Autonomous System used for diversifying peer selection.</source>
+ <translation>The mapped Autonomous System used for diversifying peer selection.</translation>
+ </message>
+ <message>
+ <source>Mapped AS</source>
+ <translation>Mapped AS</translation>
+ </message>
+ <message>
+ <source>User Agent</source>
+ <translation>User Agent</translation>
+ </message>
+ <message>
+ <source>Node window</source>
+ <translation>Node window</translation>
+ </message>
+ <message>
+ <source>Current block height</source>
+ <translation>Current block height</translation>
+ </message>
+ <message>
+ <source>Open the %1 debug log file from the current data directory. This can take a few seconds for large log files.</source>
+ <translation>Open the %1 debug log file from the current data directory. This can take a few seconds for large log files.</translation>
+ </message>
+ <message>
<source>Decrease font size</source>
<translation>Reducir el tamaño de la letra</translation>
</message>
@@ -1069,6 +1993,10 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Aumentar el tamaño de la letra</translation>
</message>
<message>
+ <source>Permissions</source>
+ <translation>Permissions</translation>
+ </message>
+ <message>
<source>Services</source>
<translation>Servicios</translation>
</message>
@@ -1085,6 +2013,110 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Última recepción</translation>
</message>
<message>
+ <source>Ping Time</source>
+ <translation>Ping Time</translation>
+ </message>
+ <message>
+ <source>The duration of a currently outstanding ping.</source>
+ <translation>The duration of a currently outstanding ping.</translation>
+ </message>
+ <message>
+ <source>Ping Wait</source>
+ <translation>Ping Wait</translation>
+ </message>
+ <message>
+ <source>Min Ping</source>
+ <translation>Min Ping</translation>
+ </message>
+ <message>
+ <source>Time Offset</source>
+ <translation>Time Offset</translation>
+ </message>
+ <message>
+ <source>Last block time</source>
+ <translation>Last block time</translation>
+ </message>
+ <message>
+ <source>&amp;Open</source>
+ <translation>&amp;Open</translation>
+ </message>
+ <message>
+ <source>&amp;Console</source>
+ <translation>&amp;Console</translation>
+ </message>
+ <message>
+ <source>&amp;Network Traffic</source>
+ <translation>&amp;Network Traffic</translation>
+ </message>
+ <message>
+ <source>Totals</source>
+ <translation>Totals</translation>
+ </message>
+ <message>
+ <source>In:</source>
+ <translation>In:</translation>
+ </message>
+ <message>
+ <source>Out:</source>
+ <translation>Out:</translation>
+ </message>
+ <message>
+ <source>Debug log file</source>
+ <translation>Debug log file</translation>
+ </message>
+ <message>
+ <source>Clear console</source>
+ <translation>Clear console</translation>
+ </message>
+ <message>
+ <source>1 &amp;hour</source>
+ <translation>1 &amp;hour</translation>
+ </message>
+ <message>
+ <source>1 &amp;day</source>
+ <translation>1 &amp;day</translation>
+ </message>
+ <message>
+ <source>1 &amp;week</source>
+ <translation>1 &amp;week</translation>
+ </message>
+ <message>
+ <source>1 &amp;year</source>
+ <translation>1 &amp;year</translation>
+ </message>
+ <message>
+ <source>&amp;Disconnect</source>
+ <translation>&amp;Disconnect</translation>
+ </message>
+ <message>
+ <source>Ban for</source>
+ <translation>Ban for</translation>
+ </message>
+ <message>
+ <source>&amp;Unban</source>
+ <translation>&amp;Unban</translation>
+ </message>
+ <message>
+ <source>Welcome to the %1 RPC console.</source>
+ <translation>Welcome to the %1 RPC console.</translation>
+ </message>
+ <message>
+ <source>Use up and down arrows to navigate history, and %1 to clear screen.</source>
+ <translation>Use up and down arrows to navigate history, and %1 to clear screen.</translation>
+ </message>
+ <message>
+ <source>Type %1 for an overview of available commands.</source>
+ <translation>Type %1 for an overview of available commands.</translation>
+ </message>
+ <message>
+ <source>For more information on using this console type %1.</source>
+ <translation>For more information on using this console type %1.</translation>
+ </message>
+ <message>
+ <source>WARNING: 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.</source>
+ <translation>WARNING: 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.</translation>
+ </message>
+ <message>
<source>Network activity disabled</source>
<translation>Actividad de la red desactivada</translation>
</message>
@@ -1093,6 +2125,18 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Ejecutando el comando sin ninguna cartera</translation>
</message>
<message>
+ <source>Executing command using "%1" wallet</source>
+ <translation>Executing command using "%1" wallet</translation>
+ </message>
+ <message>
+ <source>(node id: %1)</source>
+ <translation>(node id: %1)</translation>
+ </message>
+ <message>
+ <source>via %1</source>
+ <translation>via %1</translation>
+ </message>
+ <message>
<source>never</source>
<translation>nunca</translation>
</message>
@@ -1160,6 +2204,14 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Borrar </translation>
</message>
<message>
+ <source>Native segwit addresses (aka Bech32 or BIP-173) reduce your transaction fees later on and offer better protection against typos, but old wallets don't support them. When unchecked, an address compatible with older wallets will be created instead.</source>
+ <translation>Native segwit addresses (aka Bech32 or BIP-173) reduce your transaction fees later on and offer better protection against typos, but old wallets don't support them. When unchecked, an address compatible with older wallets will be created instead.</translation>
+ </message>
+ <message>
+ <source>Generate native segwit (Bech32) address</source>
+ <translation>Generate native segwit (Bech32) address</translation>
+ </message>
+ <message>
<source>Requested payments history</source>
<translation>Historial de pagos solicitados</translation>
</message>
@@ -1180,10 +2232,18 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Eliminar </translation>
</message>
<message>
+ <source>Copy URI</source>
+ <translation>Copy URI</translation>
+ </message>
+ <message>
<source>Copy label</source>
<translation>Copiar capa </translation>
</message>
<message>
+ <source>Copy message</source>
+ <translation>Copy message</translation>
+ </message>
+ <message>
<source>Copy amount</source>
<translation>copiar monto</translation>
</message>
@@ -1191,14 +2251,30 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<source>Could not unlock wallet.</source>
<translation>No se puede desbloquear la cartera</translation>
</message>
- </context>
+ <message>
+ <source>Could not generate new %1 address</source>
+ <translation>Could not generate new %1 address</translation>
+ </message>
+</context>
<context>
<name>ReceiveRequestDialog</name>
<message>
+ <source>Request payment to ...</source>
+ <translation>Request payment to ...</translation>
+ </message>
+ <message>
+ <source>Address:</source>
+ <translation>Address:</translation>
+ </message>
+ <message>
<source>Amount:</source>
<translation>Monto:</translation>
</message>
<message>
+ <source>Label:</source>
+ <translation>Label:</translation>
+ </message>
+ <message>
<source>Message:</source>
<translation>Mensaje:</translation>
</message>
@@ -1207,6 +2283,10 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Cartera:</translation>
</message>
<message>
+ <source>Copy &amp;URI</source>
+ <translation>Copy &amp;URI</translation>
+ </message>
+ <message>
<source>Copy &amp;Address</source>
<translation>&amp;Copiar dirección</translation>
</message>
@@ -1214,7 +2294,15 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<source>&amp;Save Image...</source>
<translation>&amp;Guardar imagen...</translation>
</message>
- </context>
+ <message>
+ <source>Request payment to %1</source>
+ <translation>Request payment to %1</translation>
+ </message>
+ <message>
+ <source>Payment information</source>
+ <translation>Payment information</translation>
+ </message>
+</context>
<context>
<name>RecentRequestsTableModel</name>
<message>
@@ -1233,7 +2321,19 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<source>(no label)</source>
<translation>(sin etiqueta)</translation>
</message>
- </context>
+ <message>
+ <source>(no message)</source>
+ <translation>(no message)</translation>
+ </message>
+ <message>
+ <source>(no amount requested)</source>
+ <translation>(no amount requested)</translation>
+ </message>
+ <message>
+ <source>Requested</source>
+ <translation>Requested</translation>
+ </message>
+</context>
<context>
<name>SendCoinsDialog</name>
<message>
@@ -1241,6 +2341,22 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Enviar monedas</translation>
</message>
<message>
+ <source>Coin Control Features</source>
+ <translation>Coin Control Features</translation>
+ </message>
+ <message>
+ <source>Inputs...</source>
+ <translation>Inputs...</translation>
+ </message>
+ <message>
+ <source>automatically selected</source>
+ <translation>automatically selected</translation>
+ </message>
+ <message>
+ <source>Insufficient funds!</source>
+ <translation>Insufficient funds!</translation>
+ </message>
+ <message>
<source>Quantity:</source>
<translation>Cantidad</translation>
</message>
@@ -1265,14 +2381,66 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Cambio</translation>
</message>
<message>
+ <source>If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address.</source>
+ <translation>If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address.</translation>
+ </message>
+ <message>
+ <source>Custom change address</source>
+ <translation>Custom change address</translation>
+ </message>
+ <message>
+ <source>Transaction Fee:</source>
+ <translation>Transaction Fee:</translation>
+ </message>
+ <message>
+ <source>Choose...</source>
+ <translation>Choose...</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>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.</translation>
+ </message>
+ <message>
+ <source>Warning: Fee estimation is currently not possible.</source>
+ <translation>Warning: Fee estimation is currently not possible.</translation>
+ </message>
+ <message>
+ <source>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 of "100 satoshis per kB" for a transaction size of 500 bytes (half of 1 kB) would ultimately yield a fee of only 50 satoshis.</source>
+ <translation>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 of "100 satoshis per kB" for a transaction size of 500 bytes (half of 1 kB) would ultimately yield a fee of only 50 satoshis.</translation>
+ </message>
+ <message>
+ <source>per kilobyte</source>
+ <translation>per kilobyte</translation>
+ </message>
+ <message>
<source>Hide</source>
<translation>Ocultar </translation>
</message>
<message>
+ <source>Recommended:</source>
+ <translation>Recommended:</translation>
+ </message>
+ <message>
+ <source>Custom:</source>
+ <translation>Custom:</translation>
+ </message>
+ <message>
+ <source>(Smart fee not initialized yet. This usually takes a few blocks...)</source>
+ <translation>(Smart fee not initialized yet. This usually takes a few blocks...)</translation>
+ </message>
+ <message>
<source>Send to multiple recipients at once</source>
<translation>Enviar a múltiples receptores a la vez</translation>
</message>
<message>
+ <source>Add &amp;Recipient</source>
+ <translation>Add &amp;Recipient</translation>
+ </message>
+ <message>
<source>Clear all fields of the form.</source>
<translation>Despeja todos los campos del formulario.</translation>
</message>
@@ -1281,6 +2449,34 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Remanente monetario:</translation>
</message>
<message>
+ <source>Hide transaction fee settings</source>
+ <translation>Hide transaction fee settings</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>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.</translation>
+ </message>
+ <message>
+ <source>A too low fee might result in a never confirming transaction (read the tooltip)</source>
+ <translation>A too low fee might result in a never confirming transaction (read the tooltip)</translation>
+ </message>
+ <message>
+ <source>Confirmation time target:</source>
+ <translation>Confirmation time target:</translation>
+ </message>
+ <message>
+ <source>Enable Replace-By-Fee</source>
+ <translation>Enable Replace-By-Fee</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>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.</translation>
+ </message>
+ <message>
+ <source>Clear &amp;All</source>
+ <translation>Clear &amp;All</translation>
+ </message>
+ <message>
<source>Balance:</source>
<translation>Saldo:</translation>
</message>
@@ -1289,6 +2485,10 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Confirme la acción de enviar</translation>
</message>
<message>
+ <source>S&amp;end</source>
+ <translation>S&amp;end</translation>
+ </message>
+ <message>
<source>Copy quantity</source>
<translation>Copiar cantidad</translation>
</message>
@@ -1309,10 +2509,38 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Copiar bytes</translation>
</message>
<message>
+ <source>Copy dust</source>
+ <translation>Copy dust</translation>
+ </message>
+ <message>
<source>Copy change</source>
<translation>Copiar cambio</translation>
</message>
<message>
+ <source>%1 (%2 blocks)</source>
+ <translation>%1 (%2 blocks)</translation>
+ </message>
+ <message>
+ <source>Cr&amp;eate Unsigned</source>
+ <translation>Cr&amp;eate Unsigned</translation>
+ </message>
+ <message>
+ <source>Creates a Partially Signed Bitcoin Transaction (PSBT) for use with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.</source>
+ <translation>Creates a Partially Signed Bitcoin Transaction (PSBT) for use with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.</translation>
+ </message>
+ <message>
+ <source> from wallet '%1'</source>
+ <translation> from wallet '%1'</translation>
+ </message>
+ <message>
+ <source>%1 to '%2'</source>
+ <translation>%1 to '%2'</translation>
+ </message>
+ <message>
+ <source>%1 to %2</source>
+ <translation>%1 to %2</translation>
+ </message>
+ <message>
<source>Do you want to draft this transaction?</source>
<translation>¿Quiere redactar esta transacción?</translation>
</message>
@@ -1321,10 +2549,34 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>¿Está seguro de que quiere enviar?</translation>
</message>
<message>
+ <source>Create Unsigned</source>
+ <translation>Create Unsigned</translation>
+ </message>
+ <message>
+ <source>Save Transaction Data</source>
+ <translation>Save Transaction Data</translation>
+ </message>
+ <message>
+ <source>Partially Signed Transaction (Binary) (*.psbt)</source>
+ <translation>Partially Signed Transaction (Binary) (*.psbt)</translation>
+ </message>
+ <message>
+ <source>PSBT saved</source>
+ <translation>PSBT saved</translation>
+ </message>
+ <message>
<source>or</source>
<translation>o</translation>
</message>
<message>
+ <source>You can increase the fee later (signals Replace-By-Fee, BIP-125).</source>
+ <translation>You can increase the fee later (signals Replace-By-Fee, BIP-125).</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>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.</translation>
+ </message>
+ <message>
<source>Please, review your transaction.</source>
<translation>Por favor, revise su transacción.</translation>
</message>
@@ -1333,6 +2585,10 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Cuota de transacción</translation>
</message>
<message>
+ <source>Not signalling Replace-By-Fee, BIP-125.</source>
+ <translation>Not signalling Replace-By-Fee, BIP-125.</translation>
+ </message>
+ <message>
<source>Total Amount</source>
<translation>Cantidad total</translation>
</message>
@@ -1353,6 +2609,10 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Enviar</translation>
</message>
<message>
+ <source>Watch-only balance:</source>
+ <translation>Watch-only balance:</translation>
+ </message>
+ <message>
<source>The recipient address is not valid. Please recheck.</source>
<translation>La dirección del destinatario no es válida. Por favor, vuelva a verificarla.</translation>
</message>
@@ -1365,6 +2625,10 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>La cantidad excede su saldo.</translation>
</message>
<message>
+ <source>The total exceeds your balance when the %1 transaction fee is included.</source>
+ <translation>The total exceeds your balance when the %1 transaction fee is included.</translation>
+ </message>
+ <message>
<source>Duplicate address found: addresses should only be used once each.</source>
<translation>Duplicado de la dirección encontrada: las direcciones sólo deben ser utilizadas una vez cada una.</translation>
</message>
@@ -1373,9 +2637,17 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>¡La creación de la transación falló!</translation>
</message>
<message>
+ <source>A fee higher than %1 is considered an absurdly high fee.</source>
+ <translation>A fee higher than %1 is considered an absurdly high fee.</translation>
+ </message>
+ <message>
<source>Payment request expired.</source>
<translation>La solicitud de pago expiró.</translation>
</message>
+ <message numerus="yes">
+ <source>Estimated to begin confirmation within %n block(s).</source>
+ <translation><numerusform>Estimated to begin confirmation within %n block.</numerusform><numerusform>Estimated to begin confirmation within %n blocks.</numerusform></translation>
+ </message>
<message>
<source>Warning: Invalid Bitcoin address</source>
<translation>Advertencia: Dirección de Bitcoin invalida</translation>
@@ -1389,6 +2661,10 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Confirmar la dirección de cambio personalizada</translation>
</message>
<message>
+ <source>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>
+ <translation>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?</translation>
+ </message>
+ <message>
<source>(no label)</source>
<translation>(sin etiqueta)</translation>
</message>
@@ -1432,6 +2708,18 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Quitar esta entrada</translation>
</message>
<message>
+ <source>The amount to send in the selected unit</source>
+ <translation>The amount to send in the selected unit</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>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.</translation>
+ </message>
+ <message>
+ <source>S&amp;ubtract fee from amount</source>
+ <translation>S&amp;ubtract fee from amount</translation>
+ </message>
+ <message>
<source>Use available balance</source>
<translation>Usar el saldo disponible</translation>
</message>
@@ -1452,13 +2740,25 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Introducir una etiqueta para esta dirección para añadirla a la lista de direcciones utilizadas</translation>
</message>
<message>
+ <source>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>
+ <translation>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.</translation>
+ </message>
+ <message>
<source>Pay To:</source>
<translation>Pago para:</translation>
</message>
- </context>
+ <message>
+ <source>Memo:</source>
+ <translation>Memo:</translation>
+ </message>
+</context>
<context>
<name>ShutdownWindow</name>
<message>
+ <source>%1 is shutting down...</source>
+ <translation>%1 is shutting down...</translation>
+ </message>
+ <message>
<source>Do not shut down the computer until this window disappears.</source>
<translation>No apague su computadora hasta que esta ventana desaparesca.</translation>
</message>
@@ -1466,6 +2766,22 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<context>
<name>SignVerifyMessageDialog</name>
<message>
+ <source>Signatures - Sign / Verify a Message</source>
+ <translation>Signatures - Sign / Verify a Message</translation>
+ </message>
+ <message>
+ <source>&amp;Sign Message</source>
+ <translation>&amp;Sign Message</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>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.</translation>
+ </message>
+ <message>
+ <source>The Bitcoin address to sign the message with</source>
+ <translation>The Bitcoin address to sign the message with</translation>
+ </message>
+ <message>
<source>Choose previously used address</source>
<translation>Elegir la dirección utilizada anteriormente</translation>
</message>
@@ -1482,20 +2798,160 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Alt+P</translation>
</message>
<message>
+ <source>Enter the message you want to sign here</source>
+ <translation>Enter the message you want to sign here</translation>
+ </message>
+ <message>
<source>Signature</source>
<translation>Firma</translation>
</message>
- </context>
+ <message>
+ <source>Copy the current signature to the system clipboard</source>
+ <translation>Copy the current signature to the system clipboard</translation>
+ </message>
+ <message>
+ <source>Sign the message to prove you own this Bitcoin address</source>
+ <translation>Sign the message to prove you own this Bitcoin address</translation>
+ </message>
+ <message>
+ <source>Sign &amp;Message</source>
+ <translation>Sign &amp;Message</translation>
+ </message>
+ <message>
+ <source>Reset all sign message fields</source>
+ <translation>Reset all sign message fields</translation>
+ </message>
+ <message>
+ <source>Clear &amp;All</source>
+ <translation>Clear &amp;All</translation>
+ </message>
+ <message>
+ <source>&amp;Verify Message</source>
+ <translation>&amp;Verify Message</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>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!</translation>
+ </message>
+ <message>
+ <source>The Bitcoin address the message was signed with</source>
+ <translation>The Bitcoin address the message was signed with</translation>
+ </message>
+ <message>
+ <source>The signed message to verify</source>
+ <translation>The signed message to verify</translation>
+ </message>
+ <message>
+ <source>The signature given when the message was signed</source>
+ <translation>The signature given when the message was signed</translation>
+ </message>
+ <message>
+ <source>Verify the message to ensure it was signed with the specified Bitcoin address</source>
+ <translation>Verify the message to ensure it was signed with the specified Bitcoin address</translation>
+ </message>
+ <message>
+ <source>Verify &amp;Message</source>
+ <translation>Verify &amp;Message</translation>
+ </message>
+ <message>
+ <source>Reset all verify message fields</source>
+ <translation>Reset all verify message fields</translation>
+ </message>
+ <message>
+ <source>Click "Sign Message" to generate signature</source>
+ <translation>Click "Sign Message" to generate signature</translation>
+ </message>
+ <message>
+ <source>The entered address is invalid.</source>
+ <translation>The entered address is invalid.</translation>
+ </message>
+ <message>
+ <source>Please check the address and try again.</source>
+ <translation>Please check the address and try again.</translation>
+ </message>
+ <message>
+ <source>The entered address does not refer to a key.</source>
+ <translation>The entered address does not refer to a key.</translation>
+ </message>
+ <message>
+ <source>Wallet unlock was cancelled.</source>
+ <translation>Wallet unlock was cancelled.</translation>
+ </message>
+ <message>
+ <source>No error</source>
+ <translation>No error</translation>
+ </message>
+ <message>
+ <source>Private key for the entered address is not available.</source>
+ <translation>Private key for the entered address is not available.</translation>
+ </message>
+ <message>
+ <source>Message signing failed.</source>
+ <translation>Message signing failed.</translation>
+ </message>
+ <message>
+ <source>Message signed.</source>
+ <translation>Message signed.</translation>
+ </message>
+ <message>
+ <source>The signature could not be decoded.</source>
+ <translation>The signature could not be decoded.</translation>
+ </message>
+ <message>
+ <source>Please check the signature and try again.</source>
+ <translation>Please check the signature and try again.</translation>
+ </message>
+ <message>
+ <source>The signature did not match the message digest.</source>
+ <translation>The signature did not match the message digest.</translation>
+ </message>
+ <message>
+ <source>Message verification failed.</source>
+ <translation>Message verification failed.</translation>
+ </message>
+ <message>
+ <source>Message verified.</source>
+ <translation>Message verified.</translation>
+ </message>
+</context>
<context>
<name>TrafficGraphWidget</name>
- </context>
+ <message>
+ <source>KB/s</source>
+ <translation>KB/s</translation>
+ </message>
+</context>
<context>
<name>TransactionDesc</name>
+ <message numerus="yes">
+ <source>Open for %n more block(s)</source>
+ <translation><numerusform>Open for %n more block</numerusform><numerusform>Open for %n more blocks</numerusform></translation>
+ </message>
<message>
<source>Open until %1</source>
<translation>Abrir hasta %1</translation>
</message>
<message>
+ <source>conflicted with a transaction with %1 confirmations</source>
+ <translation>conflicted with a transaction with %1 confirmations</translation>
+ </message>
+ <message>
+ <source>0/unconfirmed, %1</source>
+ <translation>0/unconfirmed, %1</translation>
+ </message>
+ <message>
+ <source>in memory pool</source>
+ <translation>in memory pool</translation>
+ </message>
+ <message>
+ <source>not in memory pool</source>
+ <translation>not in memory pool</translation>
+ </message>
+ <message>
+ <source>abandoned</source>
+ <translation>abandoned</translation>
+ </message>
+ <message>
<source>%1/unconfirmed</source>
<translation>%1/No confirmado</translation>
</message>
@@ -1512,6 +2968,14 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Fecha</translation>
</message>
<message>
+ <source>Source</source>
+ <translation>Source</translation>
+ </message>
+ <message>
+ <source>Generated</source>
+ <translation>Generated</translation>
+ </message>
+ <message>
<source>From</source>
<translation>De</translation>
</message>
@@ -1524,14 +2988,50 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Para</translation>
</message>
<message>
+ <source>own address</source>
+ <translation>own address</translation>
+ </message>
+ <message>
+ <source>watch-only</source>
+ <translation>watch-only</translation>
+ </message>
+ <message>
<source>label</source>
<translation>etiqueta</translation>
</message>
<message>
+ <source>Credit</source>
+ <translation>Credit</translation>
+ </message>
+ <message numerus="yes">
+ <source>matures in %n more block(s)</source>
+ <translation><numerusform>matures in %n more block</numerusform><numerusform>matures in %n more blocks</numerusform></translation>
+ </message>
+ <message>
+ <source>not accepted</source>
+ <translation>not accepted</translation>
+ </message>
+ <message>
+ <source>Debit</source>
+ <translation>Debit</translation>
+ </message>
+ <message>
+ <source>Total debit</source>
+ <translation>Total debit</translation>
+ </message>
+ <message>
+ <source>Total credit</source>
+ <translation>Total credit</translation>
+ </message>
+ <message>
<source>Transaction fee</source>
<translation>Cuota de transacción</translation>
</message>
<message>
+ <source>Net amount</source>
+ <translation>Net amount</translation>
+ </message>
+ <message>
<source>Message</source>
<translation>Mensaje</translation>
</message>
@@ -1544,21 +3044,65 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>ID</translation>
</message>
<message>
+ <source>Transaction total size</source>
+ <translation>Transaction total size</translation>
+ </message>
+ <message>
+ <source>Transaction virtual size</source>
+ <translation>Transaction virtual size</translation>
+ </message>
+ <message>
+ <source>Output index</source>
+ <translation>Output index</translation>
+ </message>
+ <message>
+ <source> (Certificate was not verified)</source>
+ <translation> (Certificate was not verified)</translation>
+ </message>
+ <message>
+ <source>Merchant</source>
+ <translation>Merchant</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>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.</translation>
+ </message>
+ <message>
+ <source>Debug information</source>
+ <translation>Debug information</translation>
+ </message>
+ <message>
<source>Transaction</source>
<translation>Transacción</translation>
</message>
<message>
+ <source>Inputs</source>
+ <translation>Inputs</translation>
+ </message>
+ <message>
<source>Amount</source>
<translation>Monto</translation>
</message>
- </context>
+ <message>
+ <source>true</source>
+ <translation>true</translation>
+ </message>
+ <message>
+ <source>false</source>
+ <translation>false</translation>
+ </message>
+</context>
<context>
<name>TransactionDescDialog</name>
<message>
<source>This pane shows a detailed description of the transaction</source>
<translation>Este panel muestras una descripción detallada de la transacción</translation>
</message>
- </context>
+ <message>
+ <source>Details for %1</source>
+ <translation>Details for %1</translation>
+ </message>
+</context>
<context>
<name>TransactionTableModel</name>
<message>
@@ -1573,15 +3117,39 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<source>Label</source>
<translation>Etiqueta</translation>
</message>
+ <message numerus="yes">
+ <source>Open for %n more block(s)</source>
+ <translation><numerusform>Open for %n more block</numerusform><numerusform>Open for %n more blocks</numerusform></translation>
+ </message>
<message>
<source>Open until %1</source>
<translation>Abrir hasta %1</translation>
</message>
<message>
+ <source>Unconfirmed</source>
+ <translation>Unconfirmed</translation>
+ </message>
+ <message>
+ <source>Abandoned</source>
+ <translation>Abandoned</translation>
+ </message>
+ <message>
+ <source>Confirming (%1 of %2 recommended confirmations)</source>
+ <translation>Confirming (%1 of %2 recommended confirmations)</translation>
+ </message>
+ <message>
<source>Confirmed (%1 confirmations)</source>
<translation>Confimado (%1 confirmaciones)</translation>
</message>
<message>
+ <source>Conflicted</source>
+ <translation>Conflicted</translation>
+ </message>
+ <message>
+ <source>Immature (%1 confirmations, will be available after %2)</source>
+ <translation>Immature (%1 confirmations, will be available after %2)</translation>
+ </message>
+ <message>
<source>Generated but not accepted</source>
<translation>Generado pero no aprovado</translation>
</message>
@@ -1590,6 +3158,10 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Recibido con</translation>
</message>
<message>
+ <source>Received from</source>
+ <translation>Received from</translation>
+ </message>
+ <message>
<source>Sent to</source>
<translation>Enviar a</translation>
</message>
@@ -1602,6 +3174,10 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Minado </translation>
</message>
<message>
+ <source>watch-only</source>
+ <translation>watch-only</translation>
+ </message>
+ <message>
<source>(n/a)</source>
<translation>(n/a)</translation>
</message>
@@ -1610,6 +3186,10 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>(sin etiqueta)</translation>
</message>
<message>
+ <source>Transaction status. Hover over this field to show number of confirmations.</source>
+ <translation>Transaction status. Hover over this field to show number of confirmations.</translation>
+ </message>
+ <message>
<source>Date and time that the transaction was received.</source>
<translation>Fecha y hora en que la transacción fue recibida </translation>
</message>
@@ -1618,6 +3198,14 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Escriba una transacción</translation>
</message>
<message>
+ <source>Whether or not a watch-only address is involved in this transaction.</source>
+ <translation>Whether or not a watch-only address is involved in this transaction.</translation>
+ </message>
+ <message>
+ <source>User-defined intent/purpose of the transaction.</source>
+ <translation>User-defined intent/purpose of the transaction.</translation>
+ </message>
+ <message>
<source>Amount removed from or added to balance.</source>
<translation>Cantidad removida del saldo o agregada </translation>
</message>
@@ -1649,6 +3237,10 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Este año</translation>
</message>
<message>
+ <source>Range...</source>
+ <translation>Range...</translation>
+ </message>
+ <message>
<source>Received with</source>
<translation>Recibido con</translation>
</message>
@@ -1669,10 +3261,22 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Otro</translation>
</message>
<message>
+ <source>Enter address, transaction id, or label to search</source>
+ <translation>Enter address, transaction id, or label to search</translation>
+ </message>
+ <message>
<source>Min amount</source>
<translation>Monto minimo </translation>
</message>
<message>
+ <source>Abandon transaction</source>
+ <translation>Abandon transaction</translation>
+ </message>
+ <message>
+ <source>Increase transaction fee</source>
+ <translation>Increase transaction fee</translation>
+ </message>
+ <message>
<source>Copy address</source>
<translation>Copiar dirección </translation>
</message>
@@ -1689,10 +3293,22 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Copiar identificación de la transacción. </translation>
</message>
<message>
+ <source>Copy raw transaction</source>
+ <translation>Copy raw transaction</translation>
+ </message>
+ <message>
+ <source>Copy full transaction details</source>
+ <translation>Copy full transaction details</translation>
+ </message>
+ <message>
<source>Edit label</source>
<translation>Editar capa </translation>
</message>
<message>
+ <source>Show transaction details</source>
+ <translation>Show transaction details</translation>
+ </message>
+ <message>
<source>Export Transaction History</source>
<translation>Exportar el historial de transacción</translation>
</message>
@@ -1705,6 +3321,10 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Confirmado </translation>
</message>
<message>
+ <source>Watch-only</source>
+ <translation>Watch-only</translation>
+ </message>
+ <message>
<source>Date</source>
<translation>Fecha</translation>
</message>
@@ -1741,23 +3361,55 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>el historial de transaciones ha sido guardado exitosamente en %1</translation>
</message>
<message>
+ <source>Range:</source>
+ <translation>Range:</translation>
+ </message>
+ <message>
<source>to</source>
<translation>Para</translation>
</message>
</context>
<context>
<name>UnitDisplayStatusBarControl</name>
- </context>
+ <message>
+ <source>Unit to show amounts in. Click to select another unit.</source>
+ <translation>Unit to show amounts in. Click to select another unit.</translation>
+ </message>
+</context>
<context>
<name>WalletController</name>
<message>
<source>Close wallet</source>
<translation>Cerrar cartera</translation>
</message>
- </context>
+ <message>
+ <source>Are you sure you wish to close the wallet &lt;i&gt;%1&lt;/i&gt;?</source>
+ <translation>Are you sure you wish to close the wallet &lt;i&gt;%1&lt;/i&gt;?</translation>
+ </message>
+ <message>
+ <source>Closing the wallet for too long can result in having to resync the entire chain if pruning is enabled.</source>
+ <translation>Closing the wallet for too long can result in having to resync the entire chain if pruning is enabled.</translation>
+ </message>
+ <message>
+ <source>Close all wallets</source>
+ <translation>Close all wallets</translation>
+ </message>
+ <message>
+ <source>Are you sure you wish to close all wallets?</source>
+ <translation>Are you sure you wish to close all wallets?</translation>
+ </message>
+</context>
<context>
<name>WalletFrame</name>
<message>
+ <source>No wallet has been loaded.
+Go to File &gt; Open Wallet to load a wallet.
+- OR -</source>
+ <translation>No wallet has been loaded.
+Go to File &gt; Open Wallet to load a wallet.
+- OR -</translation>
+ </message>
+ <message>
<source>Create a new wallet</source>
<translation>Crear una nueva cartera</translation>
</message>
@@ -1769,6 +3421,54 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Enviar monedas</translation>
</message>
<message>
+ <source>Fee bump error</source>
+ <translation>Fee bump error</translation>
+ </message>
+ <message>
+ <source>Increasing transaction fee failed</source>
+ <translation>Increasing transaction fee failed</translation>
+ </message>
+ <message>
+ <source>Do you want to increase the fee?</source>
+ <translation>Do you want to increase the fee?</translation>
+ </message>
+ <message>
+ <source>Do you want to draft a transaction with fee increase?</source>
+ <translation>Do you want to draft a transaction with fee increase?</translation>
+ </message>
+ <message>
+ <source>Current fee:</source>
+ <translation>Current fee:</translation>
+ </message>
+ <message>
+ <source>Increase:</source>
+ <translation>Increase:</translation>
+ </message>
+ <message>
+ <source>New fee:</source>
+ <translation>New fee:</translation>
+ </message>
+ <message>
+ <source>Confirm fee bump</source>
+ <translation>Confirm fee bump</translation>
+ </message>
+ <message>
+ <source>Can't draft transaction.</source>
+ <translation>Can't draft transaction.</translation>
+ </message>
+ <message>
+ <source>PSBT copied</source>
+ <translation>PSBT copied</translation>
+ </message>
+ <message>
+ <source>Can't sign transaction.</source>
+ <translation>Can't sign transaction.</translation>
+ </message>
+ <message>
+ <source>Could not commit transaction</source>
+ <translation>Could not commit transaction</translation>
+ </message>
+ <message>
<source>default wallet</source>
<translation>cartera predeterminada</translation>
</message>
@@ -1788,17 +3488,201 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Error</translation>
</message>
<message>
+ <source>Unable to decode PSBT from clipboard (invalid base64)</source>
+ <translation>Unable to decode PSBT from clipboard (invalid base64)</translation>
+ </message>
+ <message>
+ <source>Load Transaction Data</source>
+ <translation>Load Transaction Data</translation>
+ </message>
+ <message>
+ <source>Partially Signed Transaction (*.psbt)</source>
+ <translation>Partially Signed Transaction (*.psbt)</translation>
+ </message>
+ <message>
+ <source>PSBT file must be smaller than 100 MiB</source>
+ <translation>PSBT file must be smaller than 100 MiB</translation>
+ </message>
+ <message>
+ <source>Unable to decode PSBT</source>
+ <translation>Unable to decode PSBT</translation>
+ </message>
+ <message>
+ <source>Backup Wallet</source>
+ <translation>Backup Wallet</translation>
+ </message>
+ <message>
+ <source>Wallet Data (*.dat)</source>
+ <translation>Wallet Data (*.dat)</translation>
+ </message>
+ <message>
+ <source>Backup Failed</source>
+ <translation>Backup Failed</translation>
+ </message>
+ <message>
<source>There was an error trying to save the wallet data to %1.</source>
<translation>Ocurrio un error tratando de guardar la información de la cartera %1</translation>
</message>
<message>
+ <source>Backup Successful</source>
+ <translation>Backup Successful</translation>
+ </message>
+ <message>
<source>The wallet data was successfully saved to %1.</source>
<translation>La información de la cartera fué guardada exitosamente a %1</translation>
</message>
- </context>
+ <message>
+ <source>Cancel</source>
+ <translation>Cancel</translation>
+ </message>
+</context>
<context>
<name>bitcoin-core</name>
<message>
+ <source>Distributed under the MIT software license, see the accompanying file %s or %s</source>
+ <translation>Distributed under the MIT software license, see the accompanying file %s or %s</translation>
+ </message>
+ <message>
+ <source>Prune configured below the minimum of %d MiB. Please use a higher number.</source>
+ <translation>Prune configured below the minimum of %d MiB. Please use a higher number.</translation>
+ </message>
+ <message>
+ <source>Prune: last wallet synchronisation goes beyond pruned data. You need to -reindex (download the whole blockchain again in case of pruned node)</source>
+ <translation>Prune: last wallet synchronisation goes beyond pruned data. You need to -reindex (download the whole blockchain again in case of pruned node)</translation>
+ </message>
+ <message>
+ <source>Pruning blockstore...</source>
+ <translation>Pruning blockstore...</translation>
+ </message>
+ <message>
+ <source>Unable to start HTTP server. See debug log for details.</source>
+ <translation>Unable to start HTTP server. See debug log for details.</translation>
+ </message>
+ <message>
+ <source>The %s developers</source>
+ <translation>The %s developers</translation>
+ </message>
+ <message>
+ <source>Cannot obtain a lock on data directory %s. %s is probably already running.</source>
+ <translation>Cannot obtain a lock on data directory %s. %s is probably already running.</translation>
+ </message>
+ <message>
+ <source>Cannot provide specific connections and have addrman find outgoing connections at the same.</source>
+ <translation>Cannot provide specific connections and have addrman find outgoing connections at the same.</translation>
+ </message>
+ <message>
+ <source>Error reading %s! All keys read correctly, but transaction data or address book entries might be missing or incorrect.</source>
+ <translation>Error reading %s! All keys read correctly, but transaction data or address book entries might be missing or incorrect.</translation>
+ </message>
+ <message>
+ <source>Please check that your computer's date and time are correct! If your clock is wrong, %s will not work properly.</source>
+ <translation>Please check that your computer's date and time are correct! If your clock is wrong, %s will not work properly.</translation>
+ </message>
+ <message>
+ <source>Please contribute if you find %s useful. Visit %s for further information about the software.</source>
+ <translation>Please contribute if you find %s useful. Visit %s for further information about the software.</translation>
+ </message>
+ <message>
+ <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>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</translation>
+ </message>
+ <message>
+ <source>This is a pre-release test build - use at your own risk - do not use for mining or merchant applications</source>
+ <translation>This is a pre-release test build - use at your own risk - do not use for mining or merchant applications</translation>
+ </message>
+ <message>
+ <source>This is the transaction fee you may discard if change is smaller than dust at this level</source>
+ <translation>This is the transaction fee you may discard if change is smaller than dust at this level</translation>
+ </message>
+ <message>
+ <source>Unable to replay blocks. You will need to rebuild the database using -reindex-chainstate.</source>
+ <translation>Unable to replay blocks. You will need to rebuild the database using -reindex-chainstate.</translation>
+ </message>
+ <message>
+ <source>Unable to rewind the database to a pre-fork state. You will need to redownload the blockchain</source>
+ <translation>Unable to rewind the database to a pre-fork state. You will need to redownload the blockchain</translation>
+ </message>
+ <message>
+ <source>Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues.</source>
+ <translation>Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues.</translation>
+ </message>
+ <message>
+ <source>Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade.</source>
+ <translation>Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade.</translation>
+ </message>
+ <message>
+ <source>-maxmempool must be at least %d MB</source>
+ <translation>-maxmempool must be at least %d MB</translation>
+ </message>
+ <message>
+ <source>Cannot resolve -%s address: '%s'</source>
+ <translation>Cannot resolve -%s address: '%s'</translation>
+ </message>
+ <message>
+ <source>Change index out of range</source>
+ <translation>Change index out of range</translation>
+ </message>
+ <message>
+ <source>Config setting for %s only applied on %s network when in [%s] section.</source>
+ <translation>Config setting for %s only applied on %s network when in [%s] section.</translation>
+ </message>
+ <message>
+ <source>Copyright (C) %i-%i</source>
+ <translation>Copyright (C) %i-%i</translation>
+ </message>
+ <message>
+ <source>Corrupted block database detected</source>
+ <translation>Corrupted block database detected</translation>
+ </message>
+ <message>
+ <source>Could not find asmap file %s</source>
+ <translation>Could not find asmap file %s</translation>
+ </message>
+ <message>
+ <source>Could not parse asmap file %s</source>
+ <translation>Could not parse asmap file %s</translation>
+ </message>
+ <message>
+ <source>Do you want to rebuild the block database now?</source>
+ <translation>Do you want to rebuild the block database now?</translation>
+ </message>
+ <message>
+ <source>Error initializing block database</source>
+ <translation>Error initializing block database</translation>
+ </message>
+ <message>
+ <source>Error initializing wallet database environment %s!</source>
+ <translation>Error initializing wallet database environment %s!</translation>
+ </message>
+ <message>
+ <source>Error loading %s</source>
+ <translation>Error loading %s</translation>
+ </message>
+ <message>
+ <source>Error loading %s: Private keys can only be disabled during creation</source>
+ <translation>Error loading %s: Private keys can only be disabled during creation</translation>
+ </message>
+ <message>
+ <source>Error loading %s: Wallet corrupted</source>
+ <translation>Error loading %s: Wallet corrupted</translation>
+ </message>
+ <message>
+ <source>Error loading %s: Wallet requires newer version of %s</source>
+ <translation>Error loading %s: Wallet requires newer version of %s</translation>
+ </message>
+ <message>
+ <source>Error loading block database</source>
+ <translation>Error loading block database</translation>
+ </message>
+ <message>
+ <source>Error opening block database</source>
+ <translation>Error opening block database</translation>
+ </message>
+ <message>
+ <source>Failed to listen on any port. Use -listen=0 if you want this.</source>
+ <translation>Failed to listen on any port. Use -listen=0 if you want this.</translation>
+ </message>
+ <message>
<source>Failed to rescan the wallet during initialization</source>
<translation>Falló al volver a escanear la cartera durante la inicialización</translation>
</message>
@@ -1807,6 +3691,50 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Importando...</translation>
</message>
<message>
+ <source>Incorrect or no genesis block found. Wrong datadir for network?</source>
+ <translation>Incorrect or no genesis block found. Wrong datadir for network?</translation>
+ </message>
+ <message>
+ <source>Initialization sanity check failed. %s is shutting down.</source>
+ <translation>Initialization sanity check failed. %s is shutting down.</translation>
+ </message>
+ <message>
+ <source>Invalid P2P permission: '%s'</source>
+ <translation>Invalid P2P permission: '%s'</translation>
+ </message>
+ <message>
+ <source>Invalid amount for -%s=&lt;amount&gt;: '%s'</source>
+ <translation>Invalid amount for -%s=&lt;amount&gt;: '%s'</translation>
+ </message>
+ <message>
+ <source>Invalid amount for -discardfee=&lt;amount&gt;: '%s'</source>
+ <translation>Invalid amount for -discardfee=&lt;amount&gt;: '%s'</translation>
+ </message>
+ <message>
+ <source>Invalid amount for -fallbackfee=&lt;amount&gt;: '%s'</source>
+ <translation>Invalid amount for -fallbackfee=&lt;amount&gt;: '%s'</translation>
+ </message>
+ <message>
+ <source>Specified blocks directory "%s" does not exist.</source>
+ <translation>Specified blocks directory "%s" does not exist.</translation>
+ </message>
+ <message>
+ <source>Unknown address type '%s'</source>
+ <translation>Unknown address type '%s'</translation>
+ </message>
+ <message>
+ <source>Unknown change type '%s'</source>
+ <translation>Unknown change type '%s'</translation>
+ </message>
+ <message>
+ <source>Upgrading txindex database</source>
+ <translation>Upgrading txindex database</translation>
+ </message>
+ <message>
+ <source>Loading P2P addresses...</source>
+ <translation>Loading P2P addresses...</translation>
+ </message>
+ <message>
<source>Loading banlist...</source>
<translation>Cargando la lista de anuncios...</translation>
</message>
@@ -1815,30 +3743,184 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>No hay suficientes descriptores de archivos disponibles.</translation>
</message>
<message>
+ <source>Prune cannot be configured with a negative value.</source>
+ <translation>Prune cannot be configured with a negative value.</translation>
+ </message>
+ <message>
+ <source>Prune mode is incompatible with -txindex.</source>
+ <translation>Prune mode is incompatible with -txindex.</translation>
+ </message>
+ <message>
+ <source>Replaying blocks...</source>
+ <translation>Replaying blocks...</translation>
+ </message>
+ <message>
+ <source>Rewinding blocks...</source>
+ <translation>Rewinding blocks...</translation>
+ </message>
+ <message>
+ <source>The source code is available from %s.</source>
+ <translation>The source code is available from %s.</translation>
+ </message>
+ <message>
<source>Transaction fee and change calculation failed</source>
<translation>La tarifa de la transacción y el cálculo del cambio fallaron</translation>
</message>
<message>
+ <source>Unable to bind to %s on this computer. %s is probably already running.</source>
+ <translation>Unable to bind to %s on this computer. %s is probably already running.</translation>
+ </message>
+ <message>
<source>Unable to generate keys</source>
<translation>Incapaz de generar claves</translation>
</message>
<message>
+ <source>Unsupported logging category %s=%s.</source>
+ <translation>Unsupported logging category %s=%s.</translation>
+ </message>
+ <message>
+ <source>Upgrading UTXO database</source>
+ <translation>Upgrading UTXO database</translation>
+ </message>
+ <message>
+ <source>User Agent comment (%s) contains unsafe characters.</source>
+ <translation>User Agent comment (%s) contains unsafe characters.</translation>
+ </message>
+ <message>
<source>Verifying blocks...</source>
<translation>Verificando bloques...</translation>
</message>
<message>
+ <source>Wallet needed to be rewritten: restart %s to complete</source>
+ <translation>Wallet needed to be rewritten: restart %s to complete</translation>
+ </message>
+ <message>
+ <source>Error: Listening for incoming connections failed (listen returned error %s)</source>
+ <translation>Error: Listening for incoming connections failed (listen returned error %s)</translation>
+ </message>
+ <message>
+ <source>%s corrupt. Try using the wallet tool bitcoin-wallet to salvage or restoring a backup.</source>
+ <translation>%s corrupt. Try using the wallet tool bitcoin-wallet to salvage or restoring a backup.</translation>
+ </message>
+ <message>
+ <source>Cannot upgrade a non HD split wallet without upgrading to support pre split keypool. Please use version 169900 or no version specified.</source>
+ <translation>Cannot upgrade a non HD split wallet without upgrading to support pre split keypool. Please use version 169900 or no version specified.</translation>
+ </message>
+ <message>
+ <source>Invalid amount for -maxtxfee=&lt;amount&gt;: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions)</source>
+ <translation>Invalid amount for -maxtxfee=&lt;amount&gt;: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions)</translation>
+ </message>
+ <message>
<source>The transaction amount is too small to send after the fee has been deducted</source>
<translation>La cantidad de la transacción es demasiado pequeña para enviarla después de que se haya deducido la tarifa</translation>
</message>
<message>
+ <source>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>
+ <translation>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</translation>
+ </message>
+ <message>
+ <source>This is the maximum transaction fee you pay (in addition to the normal fee) to prioritize partial spend avoidance over regular coin selection.</source>
+ <translation>This is the maximum transaction fee you pay (in addition to the normal fee) to prioritize partial spend avoidance over regular coin selection.</translation>
+ </message>
+ <message>
+ <source>Transaction needs a change address, but we can't generate it. Please call keypoolrefill first.</source>
+ <translation>Transaction needs a change address, but we can't generate it. Please call keypoolrefill first.</translation>
+ </message>
+ <message>
+ <source>You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain</source>
+ <translation>You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain</translation>
+ </message>
+ <message>
+ <source>A fatal internal error occurred, see debug.log for details</source>
+ <translation>A fatal internal error occurred, see debug.log for details</translation>
+ </message>
+ <message>
+ <source>Cannot set -peerblockfilters without -blockfilterindex.</source>
+ <translation>Cannot set -peerblockfilters without -blockfilterindex.</translation>
+ </message>
+ <message>
+ <source>Disk space is too low!</source>
+ <translation>Disk space is too low!</translation>
+ </message>
+ <message>
<source>Error reading from database, shutting down.</source>
<translation>Error de lectura de la base de datos, apagando.</translation>
</message>
<message>
+ <source>Error upgrading chainstate database</source>
+ <translation>Error upgrading chainstate database</translation>
+ </message>
+ <message>
+ <source>Error: Disk space is low for %s</source>
+ <translation>Error: Disk space is low for %s</translation>
+ </message>
+ <message>
+ <source>Error: Keypool ran out, please call keypoolrefill first</source>
+ <translation>Error: Keypool ran out, please call keypoolrefill first</translation>
+ </message>
+ <message>
+ <source>Fee rate (%s) is lower than the minimum fee rate setting (%s)</source>
+ <translation>Fee rate (%s) is lower than the minimum fee rate setting (%s)</translation>
+ </message>
+ <message>
+ <source>Invalid -onion address or hostname: '%s'</source>
+ <translation>Invalid -onion address or hostname: '%s'</translation>
+ </message>
+ <message>
+ <source>Invalid -proxy address or hostname: '%s'</source>
+ <translation>Invalid -proxy address or hostname: '%s'</translation>
+ </message>
+ <message>
+ <source>Invalid amount for -paytxfee=&lt;amount&gt;: '%s' (must be at least %s)</source>
+ <translation>Invalid amount for -paytxfee=&lt;amount&gt;: '%s' (must be at least %s)</translation>
+ </message>
+ <message>
+ <source>Invalid netmask specified in -whitelist: '%s'</source>
+ <translation>Invalid netmask specified in -whitelist: '%s'</translation>
+ </message>
+ <message>
+ <source>Need to specify a port with -whitebind: '%s'</source>
+ <translation>Need to specify a port with -whitebind: '%s'</translation>
+ </message>
+ <message>
+ <source>No proxy server specified. Use -proxy=&lt;ip&gt; or -proxy=&lt;ip:port&gt;.</source>
+ <translation>No proxy server specified. Use -proxy=&lt;ip&gt; or -proxy=&lt;ip:port&gt;.</translation>
+ </message>
+ <message>
+ <source>Prune mode is incompatible with -blockfilterindex.</source>
+ <translation>Prune mode is incompatible with -blockfilterindex.</translation>
+ </message>
+ <message>
+ <source>Reducing -maxconnections from %d to %d, because of system limitations.</source>
+ <translation>Reducing -maxconnections from %d to %d, because of system limitations.</translation>
+ </message>
+ <message>
+ <source>Section [%s] is not recognized.</source>
+ <translation>Section [%s] is not recognized.</translation>
+ </message>
+ <message>
<source>Signing transaction failed</source>
<translation>La transacción de firma falló</translation>
</message>
<message>
+ <source>Specified -walletdir "%s" does not exist</source>
+ <translation>Specified -walletdir "%s" does not exist</translation>
+ </message>
+ <message>
+ <source>Specified -walletdir "%s" is a relative path</source>
+ <translation>Specified -walletdir "%s" is a relative path</translation>
+ </message>
+ <message>
+ <source>Specified -walletdir "%s" is not a directory</source>
+ <translation>Specified -walletdir "%s" is not a directory</translation>
+ </message>
+ <message>
+ <source>The specified config file %s does not exist
+</source>
+ <translation>The specified config file %s does not exist
+</translation>
+ </message>
+ <message>
<source>The transaction amount is too small to pay the fee</source>
<translation>El monto de la transacción es demasiado pequeño para pagar la tarifa</translation>
</message>
@@ -1855,18 +3937,54 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>La transacción es demasiado grande</translation>
</message>
<message>
+ <source>Unable to bind to %s on this computer (bind returned error %s)</source>
+ <translation>Unable to bind to %s on this computer (bind returned error %s)</translation>
+ </message>
+ <message>
+ <source>Unable to create the PID file '%s': %s</source>
+ <translation>Unable to create the PID file '%s': %s</translation>
+ </message>
+ <message>
<source>Unable to generate initial keys</source>
<translation>Incapaz de generar claves iniciales</translation>
</message>
<message>
+ <source>Unknown -blockfilterindex value %s.</source>
+ <translation>Unknown -blockfilterindex value %s.</translation>
+ </message>
+ <message>
<source>Verifying wallet(s)...</source>
<translation>Verificando la(s) cartera(s)...</translation>
</message>
<message>
+ <source>Warning: unknown new rules activated (versionbit %i)</source>
+ <translation>Warning: unknown new rules activated (versionbit %i)</translation>
+ </message>
+ <message>
+ <source>-maxtxfee is set very high! Fees this large could be paid on a single transaction.</source>
+ <translation>-maxtxfee is set very high! Fees this large could be paid on a single transaction.</translation>
+ </message>
+ <message>
<source>This is the transaction fee you may pay when fee estimates are not available.</source>
<translation>Esta es la tarifa de transacción que puede pagar cuando no se dispone de estimaciones de tarifas.</translation>
</message>
<message>
+ <source>Total length of network version string (%i) exceeds maximum length (%i). Reduce the number or size of uacomments.</source>
+ <translation>Total length of network version string (%i) exceeds maximum length (%i). Reduce the number or size of uacomments.</translation>
+ </message>
+ <message>
+ <source>%s is set very high!</source>
+ <translation>%s is set very high!</translation>
+ </message>
+ <message>
+ <source>Starting network threads...</source>
+ <translation>Starting network threads...</translation>
+ </message>
+ <message>
+ <source>The wallet will avoid paying less than the minimum relay fee.</source>
+ <translation>The wallet will avoid paying less than the minimum relay fee.</translation>
+ </message>
+ <message>
<source>This is the minimum transaction fee you pay on every transaction.</source>
<translation>Esta es la tarifa de transacción mínima que se paga en cada transacción.</translation>
</message>
@@ -1879,14 +3997,34 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Los montos de las transacciones no deben ser negativos</translation>
</message>
<message>
+ <source>Transaction has too long of a mempool chain</source>
+ <translation>Transaction has too long of a mempool chain</translation>
+ </message>
+ <message>
<source>Transaction must have at least one recipient</source>
<translation>La transacción debe tener al menos un destinatario</translation>
</message>
<message>
+ <source>Unknown network specified in -onlynet: '%s'</source>
+ <translation>Unknown network specified in -onlynet: '%s'</translation>
+ </message>
+ <message>
<source>Insufficient funds</source>
<translation>Fondos insuficientes</translation>
</message>
<message>
+ <source>Fee estimation failed. Fallbackfee is disabled. Wait a few blocks or enable -fallbackfee.</source>
+ <translation>Fee estimation failed. Fallbackfee is disabled. Wait a few blocks or enable -fallbackfee.</translation>
+ </message>
+ <message>
+ <source>Warning: Private keys detected in wallet {%s} with disabled private keys</source>
+ <translation>Warning: Private keys detected in wallet {%s} with disabled private keys</translation>
+ </message>
+ <message>
+ <source>Cannot write to data directory '%s'; check permissions.</source>
+ <translation>Cannot write to data directory '%s'; check permissions.</translation>
+ </message>
+ <message>
<source>Loading block index...</source>
<translation>Cargando indice de bloques... </translation>
</message>
@@ -1895,6 +4033,14 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<translation>Cargando billetera...</translation>
</message>
<message>
+ <source>Cannot downgrade wallet</source>
+ <translation>Cannot downgrade wallet</translation>
+ </message>
+ <message>
+ <source>Rescanning...</source>
+ <translation>Rescanning...</translation>
+ </message>
+ <message>
<source>Done loading</source>
<translation>Carga completa</translation>
</message>
diff --git a/src/qt/locale/bitcoin_es_VE.ts b/src/qt/locale/bitcoin_es_VE.ts
index c68c72fa4f..a216f0f8e0 100644
--- a/src/qt/locale/bitcoin_es_VE.ts
+++ b/src/qt/locale/bitcoin_es_VE.ts
@@ -132,6 +132,10 @@
<translation>Repita la nueva contraseña</translation>
</message>
<message>
+ <source>Show passphrase</source>
+ <translation>Mostrar la frase de contraseña</translation>
+ </message>
+ <message>
<source>Encrypt wallet</source>
<translation>Cifrar monedero</translation>
</message>
@@ -172,6 +176,14 @@
<translation>Monedero cifrado</translation>
</message>
<message>
+ <source>Wallet to be encrypted</source>
+ <translation>Billetera a ser cifrada</translation>
+ </message>
+ <message>
+ <source>Your wallet is now encrypted. </source>
+ <translation>Su billetera está ahora cifrada</translation>
+ </message>
+ <message>
<source>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>
<translation>IMPORTANTE: Algunas copias de seguridad que hayas hecho de tu archivo de billetera deberían ser reemplazadas con la billetera encriptada generada recientemente. Por razones de seguridad, las copias de seguridad previas del archivo de billetera sin cifrar serán inútiles tan pronto uses la nueva billetera encriptada.</translation>
</message>
@@ -274,6 +286,18 @@
<translation>Abrir URI...</translation>
</message>
<message>
+ <source>Create Wallet...</source>
+ <translation>Crear Billetera...</translation>
+ </message>
+ <message>
+ <source>Create a new wallet</source>
+ <translation>Crear una nueva billetera</translation>
+ </message>
+ <message>
+ <source>Network activity disabled.</source>
+ <translation>Actividad de red deshabilitada.</translation>
+ </message>
+ <message>
<source>Reindexing blocks on disk...</source>
<translation>Reindexando bloques en disco...</translation>
</message>
@@ -386,6 +410,10 @@
<translation>Cerrar monedero</translation>
</message>
<message>
+ <source>default wallet</source>
+ <translation>billetera por defecto</translation>
+ </message>
+ <message>
<source>No wallets available</source>
<translation>Monederos no disponibles</translation>
</message>
@@ -695,6 +723,10 @@
</context>
<context>
<name>OpenWalletActivity</name>
+ <message>
+ <source>default wallet</source>
+ <translation>billetera por defecto</translation>
+ </message>
</context>
<context>
<name>OptionsDialog</name>
@@ -1448,14 +1480,22 @@
</context>
<context>
<name>WalletFrame</name>
- </context>
+ <message>
+ <source>Create a new wallet</source>
+ <translation>Crear una nueva billetera</translation>
+ </message>
+</context>
<context>
<name>WalletModel</name>
<message>
<source>Send Coins</source>
<translation>Enviar monedas</translation>
</message>
- </context>
+ <message>
+ <source>default wallet</source>
+ <translation>billetera por defecto</translation>
+ </message>
+</context>
<context>
<name>WalletView</name>
<message>
@@ -1471,6 +1511,10 @@
<translation>Error</translation>
</message>
<message>
+ <source>Backup Wallet</source>
+ <translation>Billetera de Respaldo</translation>
+ </message>
+ <message>
<source>Backup Failed</source>
<translation>Copia de seguridad fallida</translation>
</message>
@@ -1486,7 +1530,11 @@
<source>The wallet data was successfully saved to %1.</source>
<translation>Los datos de la billetera fueron guardados exitosamente al %1</translation>
</message>
- </context>
+ <message>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+</context>
<context>
<name>bitcoin-core</name>
<message>
diff --git a/src/qt/locale/bitcoin_eu.ts b/src/qt/locale/bitcoin_eu.ts
index 3d717a5686..f76235f274 100644
--- a/src/qt/locale/bitcoin_eu.ts
+++ b/src/qt/locale/bitcoin_eu.ts
@@ -616,7 +616,7 @@
<source>Create</source>
<translation>Sortu</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
diff --git a/src/qt/locale/bitcoin_fa.ts b/src/qt/locale/bitcoin_fa.ts
index e33c63f50e..8b84545395 100644
--- a/src/qt/locale/bitcoin_fa.ts
+++ b/src/qt/locale/bitcoin_fa.ts
@@ -7,7 +7,7 @@
</message>
<message>
<source>Create a new address</source>
- <translation>ساخت یک آدرس جدید</translation>
+ <translation>ایجاد یک آدرس جدید</translation>
</message>
<message>
<source>&amp;New</source>
@@ -515,6 +515,14 @@
<translation>کیف پول را ببندید</translation>
</message>
<message>
+ <source>Close All Wallets...</source>
+ <translation>همه‌ی کیف پول‌ها را ببند...</translation>
+ </message>
+ <message>
+ <source>Close all wallets</source>
+ <translation>همه‌ی کیف پول‌ها را ببند</translation>
+ </message>
+ <message>
<source>default wallet</source>
<translation>کیف پول پیش‌فرض</translation>
</message>
@@ -622,6 +630,10 @@
<source>Wallet is &lt;b&gt;encrypted&lt;/b&gt; and currently &lt;b&gt;locked&lt;/b&gt;</source>
<translation>wallet رمزگذاری شد و در حال حاضر قفل است</translation>
</message>
+ <message>
+ <source>Original message:</source>
+ <translation>پیام اصلی:</translation>
+ </message>
</context>
<context>
<name>CoinControlDialog</name>
@@ -823,7 +835,7 @@
<source>Create</source>
<translation>ایجاد</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -1021,6 +1033,10 @@
<context>
<name>OpenWalletActivity</name>
<message>
+ <source>Open wallet failed</source>
+ <translation>بازکردن کیف پول به مشکل خورده است</translation>
+ </message>
+ <message>
<source>Open wallet warning</source>
<translation>هشدار باز کردن کیف پول</translation>
</message>
@@ -1085,6 +1101,10 @@
<translation>حرفه‌ای</translation>
</message>
<message>
+ <source>Enable coin &amp;control features</source>
+ <translation>فعال کردن قابلیت سکه و کنترل</translation>
+ </message>
+ <message>
<source>Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled.</source>
<translation>باز کردن خودکار درگاه شبکهٔ بیت‌کوین روی روترها. تنها زمانی کار می‌کند که روتر از پروتکل UPnP پشتیبانی کند و این پروتکل فعال باشد.</translation>
</message>
@@ -1291,6 +1311,26 @@
<translation>تگفتگو</translation>
</message>
<message>
+ <source>Copy to Clipboard</source>
+ <translation>کپی کردن</translation>
+ </message>
+ <message>
+ <source>Save...</source>
+ <translation>ذخیره...</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>بستن</translation>
+ </message>
+ <message>
+ <source>Unknown error processing transaction.</source>
+ <translation>مشکل نامشخصی در پردازش عملیات رخ داده.</translation>
+ </message>
+ <message>
+ <source>Save Transaction Data</source>
+ <translation>ذخیره اطلاعات عملیات</translation>
+ </message>
+ <message>
<source>Total Amount</source>
<translation>میزان کل</translation>
</message>
@@ -1298,7 +1338,19 @@
<source>or</source>
<translation>یا</translation>
</message>
- </context>
+ <message>
+ <source>Transaction still needs signature(s).</source>
+ <translation>عملیات هنوز به امضا(ها) نیاز دارد.</translation>
+ </message>
+ <message>
+ <source>(But this wallet cannot sign transactions.)</source>
+ <translation>(اما این کیف‌‌پول نمی‌تواند عملیات‌ها را امضا کند.)</translation>
+ </message>
+ <message>
+ <source>Transaction status is unknown.</source>
+ <translation>وضعیت عملیات نامشخص است.</translation>
+ </message>
+</context>
<context>
<name>PaymentServer</name>
<message>
@@ -1598,6 +1650,10 @@
<translation>پنجره گره</translation>
</message>
<message>
+ <source>Current block height</source>
+ <translation>ارتفاع فعلی بلوک</translation>
+ </message>
+ <message>
<source>Decrease font size</source>
<translation>کاهش دادن اندازه فونت</translation>
</message>
@@ -1784,6 +1840,14 @@
<context>
<name>ReceiveRequestDialog</name>
<message>
+ <source>Request payment to ...</source>
+ <translation>درخواست واریز به ...</translation>
+ </message>
+ <message>
+ <source>Address:</source>
+ <translation>آدرس‌ها:</translation>
+ </message>
+ <message>
<source>Amount:</source>
<translation>میزان وجه:</translation>
</message>
@@ -1958,6 +2022,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>گرد و غبار یا داست:</translation>
</message>
<message>
+ <source>Hide transaction fee settings</source>
+ <translation>تنظیمات مخفی کردن کارمزد عملیات</translation>
+ </message>
+ <message>
<source>Confirmation time target:</source>
<translation>هدف زمانی تایید شدن:</translation>
</message>
@@ -2022,6 +2090,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>آیا برای ارسال کردن یا فرستادن مطمئن هستید؟</translation>
</message>
<message>
+ <source>Save Transaction Data</source>
+ <translation>ذخیره اطلاعات عملیات</translation>
+ </message>
+ <message>
<source>or</source>
<translation>یا</translation>
</message>
@@ -2322,6 +2394,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>باز تا %1</translation>
</message>
<message>
+ <source>abandoned</source>
+ <translation>رها شده</translation>
+ </message>
+ <message>
<source>%1/unconfirmed</source>
<translation>%1/تأیید نشده</translation>
</message>
@@ -2472,6 +2548,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>تایید نشده</translation>
</message>
<message>
+ <source>Abandoned</source>
+ <translation>رهاشده</translation>
+ </message>
+ <message>
<source>Confirmed (%1 confirmations)</source>
<translation>تأیید شده (%1 تأییدیه)</translation>
</message>
@@ -2692,6 +2772,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>Are you sure you wish to close the wallet &lt;i&gt;%1&lt;/i&gt;?</source>
<translation>آیا برای بستن کیف پول مطمئن هستید&lt;i&gt; %1 &lt;/i&gt; ؟</translation>
</message>
+ <message>
+ <source>Close all wallets</source>
+ <translation>همه‌ی کیف پول‌ها را ببند</translation>
+ </message>
</context>
<context>
<name>WalletFrame</name>
@@ -2929,6 +3013,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>این کمترین فی تراکنش است که در هر تراکنش پرداخت می‌نمایید.</translation>
</message>
<message>
+ <source>This is the transaction fee you will pay if you send a transaction.</source>
+ <translation>این میزان کارمزد پرداختی شما در صورت ایجاد تراکنش انتقال میباشد.</translation>
+ </message>
+ <message>
<source>Transaction amounts must not be negative</source>
<translation>مقدار تراکنش نمی‌تواند منفی باشد.</translation>
</message>
diff --git a/src/qt/locale/bitcoin_fi.ts b/src/qt/locale/bitcoin_fi.ts
index 656374b71d..d53658f750 100644
--- a/src/qt/locale/bitcoin_fi.ts
+++ b/src/qt/locale/bitcoin_fi.ts
@@ -70,6 +70,12 @@
<translation>Nämä ovat Bitcoin-osoitteesi maksujen lähettämistä varten. Tarkista aina määrä ja vastaanotto-osoite ennen kolikoiden lähettämistä.</translation>
</message>
<message>
+ <source>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>
+ <translation>Nämä ovat Bitcoin-osoitteesi maksujen vastaanottoa varten. Käytä painiketta "Luo uusi vastaanotto-osoite" vastaanottovälilehdessä luodaksesi uusia osoitteita.
+Allekirjoitus on mahdollista vain 'legacy'-tyyppisillä osoitteilla.</translation>
+ </message>
+ <message>
<source>&amp;Copy Address</source>
<translation>&amp;Kopioi osoite</translation>
</message>
@@ -478,6 +484,22 @@
<translation>Rahansiirtohistoria on ajan tasalla</translation>
</message>
<message>
+ <source>&amp;Load PSBT from file...</source>
+ <translation>&amp;Lataa PSBT (osittain allekirjoitettu bitcoin-siirto) tiedostosta...</translation>
+ </message>
+ <message>
+ <source>Load Partially Signed Bitcoin Transaction</source>
+ <translation>Lataa osittain allekirjoitettu bitcoin-siirtotapahtuma</translation>
+ </message>
+ <message>
+ <source>Load PSBT from clipboard...</source>
+ <translation>Lataa PSBT (osittain allekirjoitettu bitcoin-siirto) leikepöydältä...</translation>
+ </message>
+ <message>
+ <source>Load Partially Signed Bitcoin Transaction from clipboard</source>
+ <translation>Lataa osittain allekirjoitettu bitcoin-siirtotapahtuma leikepöydältä</translation>
+ </message>
+ <message>
<source>Node window</source>
<translation>Solmu ikkuna</translation>
</message>
@@ -514,10 +536,26 @@
<translation>Sulje lompakko</translation>
</message>
<message>
+ <source>Close All Wallets...</source>
+ <translation>Sulje kaikki lompakot...</translation>
+ </message>
+ <message>
+ <source>Close all wallets</source>
+ <translation>Sulje kaikki lompakot</translation>
+ </message>
+ <message>
<source>Show the %1 help message to get a list with possible Bitcoin command-line options</source>
<translation>Näytä %1 ohjeet saadaksesi listan mahdollisista Bitcoinin komentorivivalinnoista</translation>
</message>
<message>
+ <source>&amp;Mask values</source>
+ <translation>&amp;Naamioi arvot</translation>
+ </message>
+ <message>
+ <source>Mask the values in the Overview tab</source>
+ <translation>Naamioi arvot Yhteenveto-välilehdessä</translation>
+ </message>
+ <message>
<source>default wallet</source>
<translation>oletuslompakko</translation>
</message>
@@ -625,7 +663,15 @@
<source>Wallet is &lt;b&gt;encrypted&lt;/b&gt; and currently &lt;b&gt;locked&lt;/b&gt;</source>
<translation>Lompakko on &lt;b&gt;salattu&lt;/b&gt; ja tällä hetkellä &lt;b&gt;lukittuna&lt;/b&gt;</translation>
</message>
- </context>
+ <message>
+ <source>Original message:</source>
+ <translation>Alkuperäinen viesti:</translation>
+ </message>
+ <message>
+ <source>A fatal error occurred. %1 can no longer continue safely and will quit.</source>
+ <translation>Peruuttamaton virhe on tapahtunut. %1 ei voi enää jatkaa turvallisesti ja sammutetaan.</translation>
+ </message>
+</context>
<context>
<name>CoinControlDialog</name>
<message>
@@ -827,10 +873,18 @@
<translation>Luo tyhjä lompakko</translation>
</message>
<message>
+ <source>Use descriptors for scriptPubKey management</source>
+ <translation>Käytä kuvaajia sciptPubKeyn hallinnointiin</translation>
+ </message>
+ <message>
+ <source>Descriptor Wallet</source>
+ <translation>Kuvaajalompakko</translation>
+ </message>
+ <message>
<source>Create</source>
<translation>Luo</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -1303,6 +1357,14 @@
<translation>Näytetäänkö kolikkokontrollin ominaisuuksia vai ei</translation>
</message>
<message>
+ <source>Connect to the Bitcoin network through a separate SOCKS5 proxy for Tor onion services.</source>
+ <translation>Yhdistä Bitcoin-verkkoon erillisen SOCKS5-välityspalvelimen kautta Torin onion-palveluja varten.</translation>
+ </message>
+ <message>
+ <source>Use separate SOCKS&amp;5 proxy to reach peers via Tor onion services:</source>
+ <translation>Käytä erillistä SOCKS&amp;5-välityspalvelinta tavoittaaksesi vertaisia Torin onion-palvelujen kautta:</translation>
+ </message>
+ <message>
<source>&amp;Third party transaction URLs</source>
<translation>&amp;Kolmannen osapuolen rahansiirto URL:t</translation>
</message>
@@ -1437,7 +1499,11 @@
<source>Current total balance in watch-only addresses</source>
<translation>Nykyinen tase seurattavassa osoitetteissa</translation>
</message>
- </context>
+ <message>
+ <source>Privacy mode activated for the Overview tab. To unmask the values, uncheck Settings-&gt;Mask values.</source>
+ <translation>Yksityisyysmoodi aktivoitu Yhteenveto-välilehdestä. Paljastaaksesi arvot raksi pois Asetukset-&gt;Naamioi arvot.</translation>
+ </message>
+</context>
<context>
<name>PSBTOperationsDialog</name>
<message>
@@ -1445,6 +1511,86 @@
<translation>Dialogi</translation>
</message>
<message>
+ <source>Sign Tx</source>
+ <translation>Allekirjoita Tx</translation>
+ </message>
+ <message>
+ <source>Broadcast Tx</source>
+ <translation>Lähetä Tx</translation>
+ </message>
+ <message>
+ <source>Copy to Clipboard</source>
+ <translation>Kopioi leikepöydälle</translation>
+ </message>
+ <message>
+ <source>Save...</source>
+ <translation>Tallenna...</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>Sulje</translation>
+ </message>
+ <message>
+ <source>Failed to load transaction: %1</source>
+ <translation>Siirtoa ei voitu ladata: %1</translation>
+ </message>
+ <message>
+ <source>Failed to sign transaction: %1</source>
+ <translation>Siirtoa ei voitu allekirjoittaa: %1</translation>
+ </message>
+ <message>
+ <source>Could not sign any more inputs.</source>
+ <translation>Syötteitä ei voitu enää allekirjoittaa.</translation>
+ </message>
+ <message>
+ <source>Signed %1 inputs, but more signatures are still required.</source>
+ <translation>%1 syötettä allekirjoitettiin, mutta lisää allekirjoituksia tarvitaan.</translation>
+ </message>
+ <message>
+ <source>Signed transaction successfully. Transaction is ready to broadcast.</source>
+ <translation>Siirto allekirjoitettiin onnistuneesti. Siirto on valmis lähetettäväksi.</translation>
+ </message>
+ <message>
+ <source>Unknown error processing transaction.</source>
+ <translation>Siirron käsittelyssä tapahtui tuntematon virhe.</translation>
+ </message>
+ <message>
+ <source>Transaction broadcast successfully! Transaction ID: %1</source>
+ <translation>Siirto lähetettiin onnistuneesti! Siirtotunniste: %1</translation>
+ </message>
+ <message>
+ <source>Transaction broadcast failed: %1</source>
+ <translation>Siirron lähetys epäonnstui: %1</translation>
+ </message>
+ <message>
+ <source>PSBT copied to clipboard.</source>
+ <translation>PSBT (osittain allekirjoitettu bitcoin-siirto) kopioitiin leikepöydälle.</translation>
+ </message>
+ <message>
+ <source>Save Transaction Data</source>
+ <translation>Tallenna siirtotiedot</translation>
+ </message>
+ <message>
+ <source>Partially Signed Transaction (Binary) (*.psbt)</source>
+ <translation>Osittain tallennettu siirto (binääri) (*.psbt)</translation>
+ </message>
+ <message>
+ <source>PSBT saved to disk.</source>
+ <translation>PSBT (osittain tallennettu bitcoin-siirto) tallennettiin levylle.</translation>
+ </message>
+ <message>
+ <source> * Sends %1 to %2</source>
+ <translation>*Lähettää %1'n kohteeseen %2</translation>
+ </message>
+ <message>
+ <source>Unable to calculate transaction fee or total transaction amount.</source>
+ <translation>Siirtokuluja tai siirron lopullista määrää ei voitu laskea.</translation>
+ </message>
+ <message>
+ <source>Pays transaction fee: </source>
+ <translation>Maksaa siirtokulut:</translation>
+ </message>
+ <message>
<source>Total Amount</source>
<translation>Yhteensä</translation>
</message>
@@ -1452,7 +1598,35 @@
<source>or</source>
<translation>tai</translation>
</message>
- </context>
+ <message>
+ <source>Transaction has %1 unsigned inputs.</source>
+ <translation>Siirrossa on %1 allekirjoittamatonta syötettä.</translation>
+ </message>
+ <message>
+ <source>Transaction is missing some information about inputs.</source>
+ <translation>Siirto kaipaa tietoa syötteistä.</translation>
+ </message>
+ <message>
+ <source>Transaction still needs signature(s).</source>
+ <translation>Siirto tarvitsee vielä allekirjoituksia.</translation>
+ </message>
+ <message>
+ <source>(But this wallet cannot sign transactions.)</source>
+ <translation>(Mutta tämä lompakko ei voi allekirjoittaa siirtoja.)</translation>
+ </message>
+ <message>
+ <source>(But this wallet does not have the right keys.)</source>
+ <translation>(Mutta tällä lompakolla ei ole oikeita avaimia.)</translation>
+ </message>
+ <message>
+ <source>Transaction is fully signed and ready for broadcast.</source>
+ <translation>Siirto on täysin allekirjoitettu ja valmis lähetettäväksi.</translation>
+ </message>
+ <message>
+ <source>Transaction status is unknown.</source>
+ <translation>Siirron tila on tuntematon.</translation>
+ </message>
+</context>
<context>
<name>PaymentServer</name>
<message>
@@ -1618,6 +1792,10 @@
<translation>Virhe: %1</translation>
</message>
<message>
+ <source>Error initializing settings: %1</source>
+ <translation>Virhe alustaessa asetuksia: %1</translation>
+ </message>
+ <message>
<source>%1 didn't yet exit safely...</source>
<translation>%1 ei vielä sulkeutunut turvallisesti...</translation>
</message>
@@ -1796,6 +1974,10 @@
<translation>Solmun näkymä</translation>
</message>
<message>
+ <source>Current block height</source>
+ <translation>Lohkon nykyinen korkeus</translation>
+ </message>
+ <message>
<source>Open the %1 debug log file from the current data directory. This can take a few seconds for large log files.</source>
<translation>Avaa %1 -debug-loki tämänhetkisestä data-hakemistosta. Tämä voi viedä muutaman sekunnin suurille lokitiedostoille.</translation>
</message>
@@ -1808,6 +1990,10 @@
<translation>Suurenna fontin kokoa</translation>
</message>
<message>
+ <source>Permissions</source>
+ <translation>Luvat</translation>
+ </message>
+ <message>
<source>Services</source>
<translation>Palvelut</translation>
</message>
@@ -2062,10 +2248,22 @@
<source>Could not unlock wallet.</source>
<translation>Lompakkoa ei voitu avata.</translation>
</message>
- </context>
+ <message>
+ <source>Could not generate new %1 address</source>
+ <translation>Uutta %1-osoitetta ei voitu luoda</translation>
+ </message>
+</context>
<context>
<name>ReceiveRequestDialog</name>
<message>
+ <source>Request payment to ...</source>
+ <translation>Pyydä maksua osoitteeseen...</translation>
+ </message>
+ <message>
+ <source>Address:</source>
+ <translation>Osoite:</translation>
+ </message>
+ <message>
<source>Amount:</source>
<translation>Määrä:</translation>
</message>
@@ -2344,6 +2542,22 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<translation>Oletko varma, että haluat lähettää?</translation>
</message>
<message>
+ <source>Create Unsigned</source>
+ <translation>Luo allekirjoittamaton</translation>
+ </message>
+ <message>
+ <source>Save Transaction Data</source>
+ <translation>Tallenna siirtotiedot</translation>
+ </message>
+ <message>
+ <source>Partially Signed Transaction (Binary) (*.psbt)</source>
+ <translation>Osittain tallennettu siirtotapahtuma (binääri) (*.psbt)</translation>
+ </message>
+ <message>
+ <source>PSBT saved</source>
+ <translation>PSBT tallennettu</translation>
+ </message>
+ <message>
<source>or</source>
<translation>tai</translation>
</message>
@@ -2352,6 +2566,10 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<translation>Voit korottaa palkkiota myöhemmin (osoittaa Replace-By-Fee:tä, BIP-125).</translation>
</message>
<message>
+ <source>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>
+ <translation>Ole hyvä ja tarkista siirtoehdotuksesi. Tämä luo osittain allekirjoitetun Bitcoin-siirron (PBST), jonka voit tallentaa tai kopioida ja sitten allekirjoittaa esim. verkosta irrannaisella %1-lompakolla tai PBST-yhteensopivalla laitteistolompakolla.</translation>
+ </message>
+ <message>
<source>Please, review your transaction.</source>
<translation>Tarkistathan siirtosi.</translation>
</message>
@@ -3161,10 +3379,26 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<source>Closing the wallet for too long can result in having to resync the entire chain if pruning is enabled.</source>
<translation>Lompakon sulkeminen liian pitkäksi aikaa saattaa johtaa tarpeeseen synkronoida koko ketju uudelleen, mikäli karsinta on käytössä.</translation>
</message>
- </context>
+ <message>
+ <source>Close all wallets</source>
+ <translation>Sulje kaikki lompakot</translation>
+ </message>
+ <message>
+ <source>Are you sure you wish to close all wallets?</source>
+ <translation>Haluatko varmasti sulkea kaikki lompakot?</translation>
+ </message>
+</context>
<context>
<name>WalletFrame</name>
<message>
+ <source>No wallet has been loaded.
+Go to File &gt; Open Wallet to load a wallet.
+- OR -</source>
+ <translation>Lompakkoa ei ladattu.
+Siirry osioon Tiedosto &gt; Avaa lompakko ladataksesi lompakon.
+- TAI -</translation>
+ </message>
+ <message>
<source>Create a new wallet</source>
<translation>Luo uusi lompakko</translation>
</message>
@@ -3243,6 +3477,26 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<translation>Virhe</translation>
</message>
<message>
+ <source>Unable to decode PSBT from clipboard (invalid base64)</source>
+ <translation>PBST-ää ei voitu tulkita leikepöydältä (kelpaamaton base64)</translation>
+ </message>
+ <message>
+ <source>Load Transaction Data</source>
+ <translation>Lataa siirtotiedot</translation>
+ </message>
+ <message>
+ <source>Partially Signed Transaction (*.psbt)</source>
+ <translation>Osittain allekirjoitettu siirto (*.pbst)</translation>
+ </message>
+ <message>
+ <source>PSBT file must be smaller than 100 MiB</source>
+ <translation>PBST-tiedoston tulee olla pienempi kuin 100 mebitavua</translation>
+ </message>
+ <message>
+ <source>Unable to decode PSBT</source>
+ <translation>PSBT-ää ei voitu tulkita</translation>
+ </message>
+ <message>
<source>Backup Wallet</source>
<translation>Varmuuskopioi lompakko</translation>
</message>
@@ -3310,6 +3564,10 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<translation>Virhe luettaessa %s! Avaimet luetttiin oikein, mutta rahansiirtotiedot tai osoitekirjan sisältö saattavat olla puutteellisia tai vääriä.</translation>
</message>
<message>
+ <source>More than one onion bind address is provided. Using %s for the automatically created Tor onion service.</source>
+ <translation>Useampi onion bind -osoite on tarjottu. Automaattisesti luotua Torin onion-palvelua varten käytetään %s.</translation>
+ </message>
+ <message>
<source>Please check that your computer's date and time are correct! If your clock is wrong, %s will not work properly.</source>
<translation>Tarkistathan että tietokoneesi päivämäärä ja kellonaika ovat oikeassa! Jos kellosi on väärässä, %s ei toimi oikein.</translation>
</message>
@@ -3318,6 +3576,14 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<translation>Ole hyvä ja avusta, jos %s on mielestäsi hyödyllinen. Vieraile %s saadaksesi lisää tietoa ohjelmistosta.</translation>
</message>
<message>
+ <source>SQLiteDatabase: Failed to prepare the statement to fetch sqlite wallet schema version: %s</source>
+ <translation>SQLiteDatabase: Lausekkeen valmistelu sqlite-lompakkokaavioversion %s noutamista varten epäonnistui</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to prepare the statement to fetch the application id: %s</source>
+ <translation>SQLiteDatabase: Lausekkeen valmistelu sovellustunnisteen %s noutamista varten epäonnistui</translation>
+ </message>
+ <message>
<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>Lohkotietokanta sisältää lohkon, joka vaikuttaa olevan tulevaisuudesta. Tämä saattaa johtua tietokoneesi virheellisesti asetetuista aika-asetuksista. Rakenna lohkotietokanta uudelleen vain jos olet varma, että tietokoneesi päivämäärä ja aika ovat oikein.</translation>
</message>
@@ -3422,6 +3688,10 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<translation>Lompakkoa ei voitu tarkastaa alustuksen yhteydessä.</translation>
</message>
<message>
+ <source>Failed to verify database</source>
+ <translation>Tietokannan todennus epäonnistui</translation>
+ </message>
+ <message>
<source>Importing...</source>
<translation>Tuodaan...</translation>
</message>
@@ -3446,6 +3716,30 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<translation>Virheellinen määrä -fallbackfee=&lt;amount&gt;: '%s'</translation>
</message>
<message>
+ <source>SQLiteDatabase: Failed to execute statement to verify database: %s</source>
+ <translation>SQLiteDatabase: Lausekkeen suorittaminen tietokannan %s todentamista varten epäonnistui</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to fetch sqlite wallet schema version: %s</source>
+ <translation>SQLiteDatabase: sqlite-lompakkokaavioversion %s nouto epäonnistui</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to fetch the application id: %s</source>
+ <translation>SQLiteDatabase: Sovellustunnisteen %s nouto epäonnistui</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to prepare statement to verify database: %s</source>
+ <translation>SQLiteDatabase: Lausekkeen valmistelu tietokannan %s todentamista varten epäonnistui</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to read database verification error: %s</source>
+ <translation>SQLiteDatabase: Tietokantatodennusvirheen %s luku epäonnistui</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Unexpected application id. Expected %u, got %u</source>
+ <translation>SQLiteDatabase: Odottamaton sovellustunniste. %u odotettu, %u saatu</translation>
+ </message>
+ <message>
<source>Specified blocks directory "%s" does not exist.</source>
<translation>Määrättyä lohkohakemistoa "%s" ei ole olemassa.</translation>
</message>
@@ -3530,6 +3824,14 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<translation>Virhe: Saapuvien yhteyksien kuuntelu epäonnistui (kuuntelu palautti virheen %s)</translation>
</message>
<message>
+ <source>%s corrupt. Try using the wallet tool bitcoin-wallet to salvage or restoring a backup.</source>
+ <translation>%s on vioittunut. Yritä käyttää lompakkotyökalua bitcoin-wallet pelastaaksesi sen tai palauttaa varmuuskopio.</translation>
+ </message>
+ <message>
+ <source>Cannot upgrade a non HD split wallet without upgrading to support pre split keypool. Please use version 169900 or no version specified.</source>
+ <translation>Muuta kuin HD-jaettua lompakkoa ei voi päivittää ilman päivitystä tukemaan esijaettua avainvarastoa. Käytä versiota 169900 tai älä kaytä määritettyä versiota.</translation>
+ </message>
+ <message>
<source>Invalid amount for -maxtxfee=&lt;amount&gt;: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions)</source>
<translation>Virheellinen summa -maxtxfee =: '%s' (täytyy olla vähintään %s minrelay-kulu, jotta estetään jumiutuneet siirtotapahtumat)</translation>
</message>
@@ -3538,10 +3840,34 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<translation>Siirtomäärä on liian pieni lähetettäväksi kulun vähentämisen jälkeen.</translation>
</message>
<message>
+ <source>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>
+ <translation>Tämä virhe voi tapahtua, jos tämä lompakko ei sammutettu siististi ja ladattiin viimeksi uudempaa Berkeley DB -versiota käyttäneellä ohjelmalla. Tässä tapauksessa käytä sitä ohjelmaa, joka viimeksi latasi tämän lompakon.</translation>
+ </message>
+ <message>
+ <source>This is the maximum transaction fee you pay (in addition to the normal fee) to prioritize partial spend avoidance over regular coin selection.</source>
+ <translation>Tämä on maksimimäärä, jonka maksat siirtokuluina (normaalien kulujen lisäksi) pistääksesi osittaiskulutuksen välttämisen tavallisen kolikonvalinnan edelle.</translation>
+ </message>
+ <message>
+ <source>Transaction needs a change address, but we can't generate it. Please call keypoolrefill first.</source>
+ <translation>Siirtoon tarvitaan vaihto-osoite, muttemme voi luoda sitä. Ole hyvä ja kutsu ensin keypoolrefill.</translation>
+ </message>
+ <message>
<source>You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain</source>
<translation>Palataksesi karsimattomaan tilaan joudut uudelleenrakentamaan tietokannan -reindex -valinnalla. Tämä lataa koko lohkoketjun uudestaan.</translation>
</message>
<message>
+ <source>A fatal internal error occurred, see debug.log for details</source>
+ <translation>Kriittinen sisäinen virhe kohdattiin, katso debug.log lisätietoja varten</translation>
+ </message>
+ <message>
+ <source>Cannot set -peerblockfilters without -blockfilterindex.</source>
+ <translation>-peerblockfiltersiä ei voida asettaa ilman -blockfilterindexiä.</translation>
+ </message>
+ <message>
+ <source>Disk space is too low!</source>
+ <translation>Liian vähän levytilaa!</translation>
+ </message>
+ <message>
<source>Error reading from database, shutting down.</source>
<translation>Virheitä tietokantaa luettaessa, ohjelma pysäytetään.</translation>
</message>
@@ -3554,6 +3880,14 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<translation>Virhe: levytila vähissä kohteessa %s</translation>
</message>
<message>
+ <source>Error: Keypool ran out, please call keypoolrefill first</source>
+ <translation>Virhe: Avainallas tyhjentyi, ole hyvä ja kutsu keypoolrefill ensin</translation>
+ </message>
+ <message>
+ <source>Fee rate (%s) is lower than the minimum fee rate setting (%s)</source>
+ <translation>Kulutaso (%s) on alempi, kuin minimikulutasoasetus (%s)</translation>
+ </message>
+ <message>
<source>Invalid -onion address or hostname: '%s'</source>
<translation>Virheellinen -onion osoite tai isäntänimi: '%s'</translation>
</message>
@@ -3574,6 +3908,10 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<translation>Pitää määritellä portti argumentilla -whitebind: '%s'</translation>
</message>
<message>
+ <source>No proxy server specified. Use -proxy=&lt;ip&gt; or -proxy=&lt;ip:port&gt;.</source>
+ <translation>Välityspalvelinta ei ole määritetty. Käytä -proxy=&lt;ip&gt; tai -proxy=&lt;ip:port&gt;.</translation>
+ </message>
+ <message>
<source>Prune mode is incompatible with -blockfilterindex.</source>
<translation>Karsintatila ei ole yhteensopiva -blockfilterindex valinnan kanssa</translation>
</message>
@@ -3660,10 +3998,6 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<translation>%s on asetettu todella korkeaksi!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>Virhe ladattaessa lompakkoa %s. -wallet -tiedostonimi esiintyy useaan kertaan.</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>Käynnistetään verkkoa...</translation>
</message>
diff --git a/src/qt/locale/bitcoin_fil.ts b/src/qt/locale/bitcoin_fil.ts
index bc84d0bc4a..51f5ebb810 100644
--- a/src/qt/locale/bitcoin_fil.ts
+++ b/src/qt/locale/bitcoin_fil.ts
@@ -132,6 +132,10 @@
<translation>Ulitin ang bagong passphrase</translation>
</message>
<message>
+ <source>Show passphrase</source>
+ <translation>Ipakita ang Passphrase</translation>
+ </message>
+ <message>
<source>Encrypt wallet</source>
<translation>I-encrypt ang walet.</translation>
</message>
@@ -172,6 +176,30 @@
<translation>Naka-encrypt ang walet.</translation>
</message>
<message>
+ <source>Enter the new passphrase for the wallet.&lt;br/&gt;Please use a passphrase of &lt;b&gt;ten or more random characters&lt;/b&gt;, or &lt;b&gt;eight or more words&lt;/b&gt;.</source>
+ <translation>Ipasok ang bagong passphrase para sa wallet. (1)Mangyaring gumamit ng isang passphrase na(2) sampu o higit pang mga random na characte‭r(2), o (3)walo o higit pang mga salita(3).</translation>
+ </message>
+ <message>
+ <source>Enter the old passphrase and new passphrase for the wallet.</source>
+ <translation>Ipasok ang lumang passphrase at bagong passphrase para sa pitaka.</translation>
+ </message>
+ <message>
+ <source>Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer.</source>
+ <translation>Tandaan na ang pag-encrypt ng iyong pitaka ay hindi maaaring ganap na maprotektahan ang iyong mga bitcoin mula sa pagnanakaw ng malware na nahahawa sa iyong computer.</translation>
+ </message>
+ <message>
+ <source>Wallet to be encrypted</source>
+ <translation>Ang naka-encrypt na wallet</translation>
+ </message>
+ <message>
+ <source>Your wallet is about to be encrypted. </source>
+ <translation>Malapit na ma-encrypt ang iyong pitaka.</translation>
+ </message>
+ <message>
+ <source>Your wallet is now encrypted. </source>
+ <translation>Ang iyong wallet ay naka-encrypt na ngayon.</translation>
+ </message>
+ <message>
<source>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>
<translation>MAHALAGA: Anumang nakaraang mga backup na ginawa mo sa iyong walet file ay dapat mapalitan ng bagong-buong, naka-encrypt na walet file. Para sa mga kadahilanang pangseguridad, ang mga nakaraang pag-backup ng hindi naka-encrypt na walet file ay mapagwawalang-silbi sa sandaling simulan mong gamitin ang bagong naka-encrypt na walet.</translation>
</message>
@@ -294,6 +322,14 @@
<translation>Buksan ang URI...</translation>
</message>
<message>
+ <source>Create Wallet...</source>
+ <translation>Gumawa ng Pitaka</translation>
+ </message>
+ <message>
+ <source>Create a new wallet</source>
+ <translation>Gumawa ng Bagong Pitaka</translation>
+ </message>
+ <message>
<source>Wallet:</source>
<translation>Walet:</translation>
</message>
@@ -434,6 +470,10 @@
<translation>Napapanahon</translation>
</message>
<message>
+ <source>Node window</source>
+ <translation>Bintana ng Node</translation>
+ </message>
+ <message>
<source>&amp;Sending addresses</source>
<translation>Mga address para sa pagpapadala</translation>
</message>
@@ -719,14 +759,38 @@
</context>
<context>
<name>CreateWalletActivity</name>
- </context>
+ <message>
+ <source>Create wallet failed</source>
+ <translation>Nabigo ang Pag likha ng Pitaka</translation>
+ </message>
+ <message>
+ <source>Create wallet warning</source>
+ <translation>Gumawa ng Babala ng Pitaka</translation>
+ </message>
+</context>
<context>
<name>CreateWalletDialog</name>
<message>
+ <source>Create Wallet</source>
+ <translation>Gumawa ng Pitaka</translation>
+ </message>
+ <message>
+ <source>Wallet Name</source>
+ <translation>Pangalan ng Pitaka</translation>
+ </message>
+ <message>
+ <source>Disable Private Keys</source>
+ <translation>Huwag paganahin ang Privbadong susi</translation>
+ </message>
+ <message>
+ <source>Make Blank Wallet</source>
+ <translation>Gumawa ng Blankong Pitaka</translation>
+ </message>
+ <message>
<source>Create</source>
<translation>Gumawa</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -934,6 +998,10 @@
<translation>Itago</translation>
</message>
<message>
+ <source>Esc</source>
+ <translation>Esc</translation>
+ </message>
+ <message>
<source>Unknown. Syncing Headers (%1, %2%)...</source>
<translation>Hindi alam. S-in-i-sync ang mga Header (%1, %2%)...</translation>
</message>
@@ -948,6 +1016,14 @@
<context>
<name>OpenWalletActivity</name>
<message>
+ <source>Open wallet failed</source>
+ <translation>Nabigo ang bukas na pitaka</translation>
+ </message>
+ <message>
+ <source>Open wallet warning</source>
+ <translation>Buksan ang babala sa pitaka</translation>
+ </message>
+ <message>
<source>default wallet</source>
<translation>walet na default</translation>
</message>
@@ -1485,6 +1561,10 @@
<translation>Kamalian sa pag-e-encode ng URI sa QR Code.</translation>
</message>
<message>
+ <source>QR code support not available.</source>
+ <translation>Hindi magagamit ang suporta ng QR code.</translation>
+ </message>
+ <message>
<source>Save QR Code</source>
<translation>I-save ang QR Code</translation>
</message>
@@ -1616,10 +1696,23 @@
<translation>Mga block na na-sync</translation>
</message>
<message>
+ <source>The mapped Autonomous System used for diversifying peer selection.</source>
+ <translation>Ginamit ang na-map na Autonomous System para sa pag-iba-iba ng pagpipilian ng kapwa.</translation>
+ </message>
+ <message>
+ <source>Mapped AS</source>
+ <translation>Mapa sa AS
+</translation>
+ </message>
+ <message>
<source>User Agent</source>
<translation>Ahente ng User</translation>
</message>
<message>
+ <source>Node window</source>
+ <translation>Bintana ng Node</translation>
+ </message>
+ <message>
<source>Open the %1 debug log file from the current data directory. This can take a few seconds for large log files.</source>
<translation>Buksan ang %1 debug log file mula sa kasalukuyang directoryo ng datos. Maaari itong tumagal ng ilang segundo para sa mga malalaking log file.</translation>
</message>
@@ -1819,6 +1912,18 @@
<translation>Opsyonal na halaga upang humiling. Iwanan itong walang laman o zero upang hindi humiling ng tiyak na halaga.</translation>
</message>
<message>
+ <source>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>
+ <translation>Isang opsyonal na label upang maiugnay sa bagong address ng pagtanggap (ginamit mo upang makilala ang isang invoice). Nakalakip din ito sa kahilingan sa pagbabayad.</translation>
+ </message>
+ <message>
+ <source>An optional message that is attached to the payment request and may be displayed to the sender.</source>
+ <translation>Isang opsyonal na mensahe na naka-attach sa kahilingan sa pagbabayad at maaaring ipakita sa nagpadala.</translation>
+ </message>
+ <message>
+ <source>&amp;Create new receiving address</source>
+ <translation>&amp; Lumikha ng bagong address sa pagtanggap</translation>
+ </message>
+ <message>
<source>Clear all fields of the form.</source>
<translation>Burahin ang laman ng lahat ng patlang ng form.</translation>
</message>
@@ -2056,6 +2161,10 @@ Tandaan: Dahil ang bayad ay kinakalkula sa bawat-byte na batayan, ang bayad ng
<translation>Dust:</translation>
</message>
<message>
+ <source>Hide transaction fee settings</source>
+ <translation>Itago ang mga Setting ng bayad sa Transaksyon</translation>
+ </message>
+ <message>
<source>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>
<translation>Kapag mas kaunti ang dami ng transaksyon kaysa sa puwang sa mga blocks, ang mga minero pati na rin ang mga relaying node ay maaaring magpatupad ng minimum na bayad. Ang pagbabayad lamang ng minimum na bayad na ito ay maayos, ngunit malaman na maaari itong magresulta sa hindi kailanmang nagkukumpirmang transaksyon sa sandaling magkaroon ng higit na pangangailangan para sa mga transaksyon ng bitcoin kaysa sa kayang i-proseso ng network.</translation>
</message>
@@ -2124,10 +2233,18 @@ Tandaan: Dahil ang bayad ay kinakalkula sa bawat-byte na batayan, ang bayad ng
<translation>%1 (%2 mga block)</translation>
</message>
<message>
+ <source>Cr&amp;eate Unsigned</source>
+ <translation>Lumikha ng Unsigned</translation>
+ </message>
+ <message>
<source>%1 to %2</source>
<translation>%1 sa %2</translation>
</message>
<message>
+ <source>Do you want to draft this transaction?</source>
+ <translation>Nais mo bang i-draft ang transaksyong ito?</translation>
+ </message>
+ <message>
<source>Are you sure you want to send?</source>
<translation>Sigurado ka bang nais mong magpadala?</translation>
</message>
@@ -2156,10 +2273,26 @@ Tandaan: Dahil ang bayad ay kinakalkula sa bawat-byte na batayan, ang bayad ng
<translation>Kabuuang Halaga</translation>
</message>
<message>
+ <source>To review recipient list click "Show Details..."</source>
+ <translation>Upang suriin ang listahan ng tatanggap i-click ang "Ipakita ang Mga Detalye ..."</translation>
+ </message>
+ <message>
<source>Confirm send coins</source>
<translation>Kumpirmahin magpadala ng coins</translation>
</message>
<message>
+ <source>Confirm transaction proposal</source>
+ <translation>Kumpirmahin ang panukala sa transaksyon</translation>
+ </message>
+ <message>
+ <source>Send</source>
+ <translation>Ipadala</translation>
+ </message>
+ <message>
+ <source>Watch-only balance:</source>
+ <translation>Balanse lamang sa panonood:</translation>
+ </message>
+ <message>
<source>The recipient address is not valid. Please recheck.</source>
<translation>Ang address ng tatanggap ay hindi wasto. Mangyaring suriin muli.</translation>
</message>
@@ -2413,6 +2546,10 @@ Tandaan: Dahil ang bayad ay kinakalkula sa bawat-byte na batayan, ang bayad ng
<translation>Kinansela ang pag-unlock ng walet.</translation>
</message>
<message>
+ <source>No error</source>
+ <translation>Walang Kamalian</translation>
+ </message>
+ <message>
<source>Private key for the entered address is not available.</source>
<translation>Hindi magagamit ang private key para sa pinasok na address.</translation>
</message>
@@ -2916,7 +3053,11 @@ Tandaan: Dahil ang bayad ay kinakalkula sa bawat-byte na batayan, ang bayad ng
</context>
<context>
<name>WalletFrame</name>
- </context>
+ <message>
+ <source>Create a new wallet</source>
+ <translation>Gumawa ng Bagong Pitaka</translation>
+ </message>
+</context>
<context>
<name>WalletModel</name>
<message>
@@ -2952,6 +3093,14 @@ Tandaan: Dahil ang bayad ay kinakalkula sa bawat-byte na batayan, ang bayad ng
<translation>Kumpirmahin ang fee bump</translation>
</message>
<message>
+ <source>Can't draft transaction.</source>
+ <translation>Hindi ma-draft ang transaksyon</translation>
+ </message>
+ <message>
+ <source>PSBT copied</source>
+ <translation>Kinopya ang PSBT</translation>
+ </message>
+ <message>
<source>Can't sign transaction.</source>
<translation>Hindi mapirmahan ang transaksyon.</translation>
</message>
@@ -3368,10 +3517,6 @@ Tandaan: Dahil ang bayad ay kinakalkula sa bawat-byte na batayan, ang bayad ng
<translation>Ang %s ay nakatakda ng napakataas!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>Kamalian sa paglo-load ng walet %s. Duplicate -wallet filename na tinukoy.</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>Pagsisimula ng mga thread ng network...</translation>
</message>
diff --git a/src/qt/locale/bitcoin_fr.ts b/src/qt/locale/bitcoin_fr.ts
index 3af091b991..aeccb0f071 100644
--- a/src/qt/locale/bitcoin_fr.ts
+++ b/src/qt/locale/bitcoin_fr.ts
@@ -15,7 +15,7 @@
</message>
<message>
<source>Copy the currently selected address to the system clipboard</source>
- <translation>Copier l’adresse sélectionnée actuellement dans le presse-papiers</translation>
+ <translation>Copier dans le presse-papiers l’adresse sélectionnée actuellement</translation>
</message>
<message>
<source>&amp;Copy</source>
@@ -31,7 +31,7 @@
</message>
<message>
<source>Enter address or label to search</source>
- <translation>Saisir une adresse ou une étiquette à rechercher</translation>
+ <translation>Saisissez une adresse ou une étiquette à rechercher</translation>
</message>
<message>
<source>Export the data in the current tab to a file</source>
@@ -127,7 +127,7 @@ Il n’est possible de signer qu’avec les adresses de type « legacy ».</tr
</message>
<message>
<source>Enter passphrase</source>
- <translation>Saisir la phrase de passe</translation>
+ <translation>Saisissez la phrase de passe</translation>
</message>
<message>
<source>New passphrase</source>
@@ -187,7 +187,7 @@ Il n’est possible de signer qu’avec les adresses de type « legacy ».</tr
</message>
<message>
<source>Enter the old passphrase and new passphrase for the wallet.</source>
- <translation>Saisir l’ancienne puis la nouvelle phrase de passe du porte-monnaie.</translation>
+ <translation>Saisissez l’ancienne puis la nouvelle phrase de passe du porte-monnaie.</translation>
</message>
<message>
<source>Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer.</source>
@@ -341,7 +341,7 @@ Il n’est possible de signer qu’avec les adresses de type « legacy ».</tr
</message>
<message>
<source>Click to disable network activity.</source>
- <translation>Cliquer pour désactiver l’activité réseau.</translation>
+ <translation>Cliquez pour désactiver l’activité réseau.</translation>
</message>
<message>
<source>Network activity disabled.</source>
@@ -349,7 +349,7 @@ Il n’est possible de signer qu’avec les adresses de type « legacy ».</tr
</message>
<message>
<source>Click to enable network activity again.</source>
- <translation>Cliquer pour réactiver l’activité réseau.</translation>
+ <translation>Cliquez pour réactiver l’activité réseau.</translation>
</message>
<message>
<source>Syncing Headers (%1%)...</source>
@@ -505,7 +505,7 @@ Il n’est possible de signer qu’avec les adresses de type « legacy ».</tr
</message>
<message>
<source>Open node debugging and diagnostic console</source>
- <translation>Ouvrir une console de débogage de noeuds et de diagnostic</translation>
+ <translation>Ouvrir une console de débogage de nœuds et de diagnostic</translation>
</message>
<message>
<source>&amp;Sending addresses</source>
@@ -521,7 +521,7 @@ Il n’est possible de signer qu’avec les adresses de type « legacy ».</tr
</message>
<message>
<source>Open Wallet</source>
- <translation>Ouvrir le porte-monnaie</translation>
+ <translation>Ouvrir un porte-monnaie</translation>
</message>
<message>
<source>Open a wallet</source>
@@ -553,7 +553,7 @@ Il n’est possible de signer qu’avec les adresses de type « legacy ».</tr
</message>
<message>
<source>Mask the values in the Overview tab</source>
- <translation>Dissimuler les montants sur l'onglet de vue d'ensemble</translation>
+ <translation>Dissimuler les montants dans l’onglet Vue d’ensemble</translation>
</message>
<message>
<source>default wallet</source>
@@ -669,7 +669,7 @@ Il n’est possible de signer qu’avec les adresses de type « legacy ».</tr
</message>
<message>
<source>A fatal error occurred. %1 can no longer continue safely and will quit.</source>
- <translation>Une erreur fatale est survenue. %1 ne peut plus continuer de façon sûre et va s'arrêter.</translation>
+ <translation>Une erreur fatale est survenue. %1 ne peut plus continuer de façon sûre et va s’arrêter.</translation>
</message>
</context>
<context>
@@ -884,6 +884,10 @@ Il n’est possible de signer qu’avec les adresses de type « legacy ».</tr
<source>Create</source>
<translation>Créer</translation>
</message>
+ <message>
+ <source>Compiled without sqlite support (required for descriptor wallets)</source>
+ <translation>Compilé sans prise en charge de sqlite (requis pour les porte-monnaie de descripteurs)</translation>
+ </message>
</context>
<context>
<name>EditAddressDialog</name>
@@ -1705,7 +1709,7 @@ Il n’est possible de signer qu’avec les adresses de type « legacy ».</tr
</message>
<message>
<source>Enter a Bitcoin address (e.g. %1)</source>
- <translation>Saisir une adresse Bitcoin (p. ex. %1)</translation>
+ <translation>Saisissez une adresse Bitcoin (p. ex. %1)</translation>
</message>
<message>
<source>%1 d</source>
@@ -2178,7 +2182,7 @@ Il n’est possible de signer qu’avec les adresses de type « legacy ».</tr
</message>
<message>
<source>An optional amount to request. Leave this empty or zero to not request a specific amount.</source>
- <translation>Un montant facultatif à demander. Ne rien saisir ou un zéro pour ne pas demander de montant précis.</translation>
+ <translation>Un montant facultatif à demander. Ne saisissez rien ou un zéro pour ne pas demander de montant précis.</translation>
</message>
<message>
<source>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>
@@ -2222,11 +2226,11 @@ Il n’est possible de signer qu’avec les adresses de type « legacy ».</tr
</message>
<message>
<source>Remove the selected entries from the list</source>
- <translation>Retirer les entrées sélectionnées de la liste</translation>
+ <translation>Supprimer les entrées sélectionnées de la liste</translation>
</message>
<message>
<source>Remove</source>
- <translation>Retirer</translation>
+ <translation>Supprimer</translation>
</message>
<message>
<source>Copy URI</source>
@@ -2411,7 +2415,7 @@ Note : Les frais étant calculés par octet, des frais de « 100 satoshis par
</message>
<message>
<source>per kilobyte</source>
- <translation>par kilo-octet</translation>
+ <translation>Par kilo-octet</translation>
</message>
<message>
<source>Hide</source>
@@ -2467,7 +2471,7 @@ Note : Les frais étant calculés par octet, des frais de « 100 satoshis par
</message>
<message>
<source>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>
- <translation>Avec Remplacer-par-des-frais (BIP-125), vous pouvez augmenter les frais de transaction après qu’elle est envoyée. Sans cela, des frais plus élevés peuvent être recommandés pour compenser le risque accru de retard transactionnel.</translation>
+ <translation>Avec Remplacer-par-des-frais (BIP-125), vous pouvez augmenter les frais d’une transaction après qu’elle est envoyée. Sans cela, des frais plus élevés peuvent être recommandés pour compenser le risque accru de retard transactionnel.</translation>
</message>
<message>
<source>Clear &amp;All</source>
@@ -2702,7 +2706,7 @@ Note : Les frais étant calculés par octet, des frais de « 100 satoshis par
</message>
<message>
<source>Remove this entry</source>
- <translation>Retirer cette entrée</translation>
+ <translation>Supprimer cette entrée</translation>
</message>
<message>
<source>The amount to send in the selected unit</source>
@@ -2710,7 +2714,7 @@ Note : Les frais étant calculés par octet, des frais de « 100 satoshis par
</message>
<message>
<source>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>
- <translation>Les frais seront déduits du montant envoyé. Le destinataire recevra moins de bitcoins que le montant saisi dans le champ de montant. Si plusieurs destinataires sont sélectionnés, les frais seront partagés également..</translation>
+ <translation>Les frais seront déduits du montant envoyé. Le destinataire recevra moins de bitcoins que le montant saisi dans le champ de montant. Si plusieurs destinataires sont sélectionnés, les frais seront partagés également.</translation>
</message>
<message>
<source>S&amp;ubtract fee from amount</source>
@@ -2734,7 +2738,7 @@ Note : Les frais étant calculés par octet, des frais de « 100 satoshis par
</message>
<message>
<source>Enter a label for this address to add it to the list of used addresses</source>
- <translation>Saisir une étiquette pour cette adresse afin de l’ajouter à la liste d’adresses utilisées</translation>
+ <translation>Saisissez une étiquette pour cette adresse afin de l’ajouter à la liste d’adresses utilisées</translation>
</message>
<message>
<source>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>
@@ -2764,7 +2768,7 @@ Note : Les frais étant calculés par octet, des frais de « 100 satoshis par
<name>SignVerifyMessageDialog</name>
<message>
<source>Signatures - Sign / Verify a Message</source>
- <translation>Signatures - Signer / vérifier un message</translation>
+ <translation>Signatures – Signer/vérifier un message</translation>
</message>
<message>
<source>&amp;Sign Message</source>
@@ -2796,7 +2800,7 @@ Note : Les frais étant calculés par octet, des frais de « 100 satoshis par
</message>
<message>
<source>Enter the message you want to sign here</source>
- <translation>Saisir ici le message que vous désirez signer</translation>
+ <translation>Saisissez ici le message que vous désirez signer</translation>
</message>
<message>
<source>Signature</source>
@@ -2828,7 +2832,7 @@ Note : Les frais étant calculés par octet, des frais de « 100 satoshis par
</message>
<message>
<source>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>
- <translation>Saisir ci-dessous l’adresse du destinataire, le message (s’assurer de copier fidèlement les retours à la ligne, les espaces, les tabulations, etc.) et la signature pour vérifier le message. Faire attention à ne pas déduire davantage de la signature que ce qui est contenu dans le message signé même, pour éviter d’être trompé par une attaque d’homme du milieu. Prendre en compte que cela ne fait que prouver que le signataire reçoit l’adresse et ne peut pas prouver la provenance d’une transaction.</translation>
+ <translation>Saisissez ci-dessous l’adresse du destinataire, le message (assurez-vous de copier fidèlement les retours à la ligne, les espaces, les tabulations, etc.) et la signature pour vérifier le message. Faites attention à ne pas déduire davantage de la signature que ce qui est contenu dans le message signé même, pour éviter d’être trompé par une attaque de l’intercepteur. Notez que cela ne fait que prouver que le signataire reçoit avec l’adresse et ne peut pas prouver la provenance d’une transaction.</translation>
</message>
<message>
<source>The Bitcoin address the message was signed with</source>
@@ -3259,7 +3263,7 @@ Note : Les frais étant calculés par octet, des frais de « 100 satoshis par
</message>
<message>
<source>Enter address, transaction id, or label to search</source>
- <translation>Saisir l’adresse, l’ID de transaction ou l’étiquette à chercher</translation>
+ <translation>Saisissez l’adresse, l’ID de transaction ou l’étiquette à chercher</translation>
</message>
<message>
<source>Min amount</source>
@@ -3370,7 +3374,7 @@ Note : Les frais étant calculés par octet, des frais de « 100 satoshis par
<name>UnitDisplayStatusBarControl</name>
<message>
<source>Unit to show amounts in. Click to select another unit.</source>
- <translation>Unité d’affichage des montants. Cliquer pour choisir une autre unité.</translation>
+ <translation>Unité d’affichage des montants. Cliquez pour choisir une autre unité.</translation>
</message>
</context>
<context>
@@ -3537,7 +3541,7 @@ Accédez à Fichier &gt; Ouvrir un porte-monnaie pour en charger un.
<name>bitcoin-core</name>
<message>
<source>Distributed under the MIT software license, see the accompanying file %s or %s</source>
- <translation>Distribué sous la licence MIT d’utilisation d’un logiciel. Consulter le fichier joint %s ou %s</translation>
+ <translation>Distribué sous la licence MIT d’utilisation d’un logiciel, consultez le fichier joint %s ou %s</translation>
</message>
<message>
<source>Prune configured below the minimum of %d MiB. Please use a higher number.</source>
@@ -3557,7 +3561,7 @@ Accédez à Fichier &gt; Ouvrir un porte-monnaie pour en charger un.
</message>
<message>
<source>The %s developers</source>
- <translation>Les développeurs de %s</translation>
+ <translation>Les développeurs de %s</translation>
</message>
<message>
<source>Cannot obtain a lock on data directory %s. %s is probably already running.</source>
@@ -3572,16 +3576,32 @@ Accédez à Fichier &gt; Ouvrir un porte-monnaie pour en charger un.
<translation>Erreur de lecture de %s. Toutes les clés ont été lues correctement, mais les données de la transaction ou les entrées du carnet d’adresses sont peut-être manquantes ou incorrectes.</translation>
</message>
<message>
+ <source>More than one onion bind address is provided. Using %s for the automatically created Tor onion service.</source>
+ <translation>Plus d’une adresse onion de liaison est indiquée. %s sera utilisée pour le service onion de Tor créé automatiquement.</translation>
+ </message>
+ <message>
<source>Please check that your computer's date and time are correct! If your clock is wrong, %s will not work properly.</source>
<translation>Veuillez vérifier que l’heure et la date de votre ordinateur sont justes. Si votre horloge n’est pas à l’heure, %s ne fonctionnera pas correctement.</translation>
</message>
<message>
<source>Please contribute if you find %s useful. Visit %s for further information about the software.</source>
- <translation>Si vous trouvez %s utile, vous pouvez y contribuer. Vous trouverez plus de renseignements au sujet du logiciel sur %s.</translation>
+ <translation>Si vous trouvez %s utile, veuillez y contribuer. Pour de plus de précisions sur le logiciel, rendez-vous sur %s.</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to prepare the statement to fetch sqlite wallet schema version: %s</source>
+ <translation>SQLiteDatabase : échec de préparation de l’instruction pour récupérer la version du schéma de porte-monnaie sqlite : %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to prepare the statement to fetch the application id: %s</source>
+ <translation>SQLiteDatabase : échec de préparation de l’instruction pour récupérer l’ID de l’application : %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Unknown sqlite wallet schema version %d. Only version %d is supported</source>
+ <translation>SQLiteDatabase : la version %d du schéma de porte-monnaie sqlite est inconnue. Seule la version %d est prise en charge</translation>
</message>
<message>
<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>La base de données de blocs contient un bloc qui semble provenir du futur. Cela pourrait être causé par la date et l’heure erronées de votre ordinateur. Ne reconstruisez la base de données de blocs que si vous êtes certain que la date et l’heure de votre ordinateur sont justes.</translation>
+ <translation>La base de données de blocs comprend un bloc qui semble provenir du futur. Cela pourrait être causé par la date et l’heure erronées de votre ordinateur. Ne reconstruisez la base de données de blocs que si vous êtes certain que la date et l’heure de votre ordinateur sont justes.</translation>
</message>
<message>
<source>This is a pre-release test build - use at your own risk - do not use for mining or merchant applications</source>
@@ -3684,6 +3704,14 @@ Accédez à Fichier &gt; Ouvrir un porte-monnaie pour en charger un.
<translation>Échec de réanalyse du porte-monnaie lors de l’initialisation</translation>
</message>
<message>
+ <source>Failed to verify database</source>
+ <translation>Échec de vérification de la base de données</translation>
+ </message>
+ <message>
+ <source>Ignoring duplicate -wallet %s.</source>
+ <translation>Ignore -wallet %s en double.</translation>
+ </message>
+ <message>
<source>Importing...</source>
<translation>Importation…</translation>
</message>
@@ -3712,6 +3740,30 @@ Accédez à Fichier &gt; Ouvrir un porte-monnaie pour en charger un.
<translation>Le montant est invalide pour -fallbackfee=&lt;amount&gt; : « %s »</translation>
</message>
<message>
+ <source>SQLiteDatabase: Failed to execute statement to verify database: %s</source>
+ <translation>SQLiteDatabase : échec d’exécution de l’instruction pour vérifier la base de données : %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to fetch sqlite wallet schema version: %s</source>
+ <translation>SQLiteDatabase : échec de récupération de la version du schéma de porte-monnaie sqlite : %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to fetch the application id: %s</source>
+ <translation>SQLiteDatabase : échec de récupération de l’ID de l’application : %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to prepare statement to verify database: %s</source>
+ <translation>SQLiteDatabase : échec de préparation de l’instruction pour vérifier la base de données : %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to read database verification error: %s</source>
+ <translation>SQLiteDatabase : échec de lecture de l’erreur de vérification de la base de données : %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Unexpected application id. Expected %u, got %u</source>
+ <translation>SQLiteDatabase : l’ID de l’application est inattendu. %u était attendu, %u été retourné</translation>
+ </message>
+ <message>
<source>Specified blocks directory "%s" does not exist.</source>
<translation>Le répertoire des blocs indiqué « %s » n’existe pas.</translation>
</message>
@@ -3781,7 +3833,7 @@ Accédez à Fichier &gt; Ouvrir un porte-monnaie pour en charger un.
</message>
<message>
<source>User Agent comment (%s) contains unsafe characters.</source>
- <translation>Le commentaire d’agent utilisateur (%s) contient des caractères dangereux.</translation>
+ <translation>Le commentaire de l’agent utilisateur (%s) comporte des caractères dangereux.</translation>
</message>
<message>
<source>Verifying blocks...</source>
@@ -3853,7 +3905,7 @@ Accédez à Fichier &gt; Ouvrir un porte-monnaie pour en charger un.
</message>
<message>
<source>Error: Keypool ran out, please call keypoolrefill first</source>
- <translation>Erreur : La réserve de clés est épuisée, veuillez d'abord appeler « keypoolrefill »</translation>
+ <translation>Erreur : La réserve de clés est épuisée, veuillez d’abord appeler « keypoolrefill »</translation>
</message>
<message>
<source>Fee rate (%s) is lower than the minimum fee rate setting (%s)</source>
@@ -3974,10 +4026,6 @@ Accédez à Fichier &gt; Ouvrir un porte-monnaie pour en charger un.
<translation>La valeur %s est très élevée.</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>Erreur de chargement du porte-monnaie %s. Le nom de fichier -wallet indiqué est un doublon.</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>Démarrage des processus réseau…</translation>
</message>
diff --git a/src/qt/locale/bitcoin_gl_ES.ts b/src/qt/locale/bitcoin_gl_ES.ts
index 2438aff7cd..0e47f26615 100644
--- a/src/qt/locale/bitcoin_gl_ES.ts
+++ b/src/qt/locale/bitcoin_gl_ES.ts
@@ -830,7 +830,7 @@
<source>Create</source>
<translation>Crea</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -3668,10 +3668,6 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>%s is set very high!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>Error loading wallet %s. Duplicate -wallet filename specified.</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>Starting network threads...</translation>
</message>
diff --git a/src/qt/locale/bitcoin_he.ts b/src/qt/locale/bitcoin_he.ts
index 813f444dde..32a099adbf 100644
--- a/src/qt/locale/bitcoin_he.ts
+++ b/src/qt/locale/bitcoin_he.ts
@@ -15,7 +15,7 @@
</message>
<message>
<source>Copy the currently selected address to the system clipboard</source>
- <translation>העתקת הכתובת המסומנת ללוח הגזירים של המערכת</translation>
+ <translation>העתקת את הכתובת המסומנת ללוח</translation>
</message>
<message>
<source>&amp;Copy</source>
@@ -878,7 +878,7 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Create</source>
<translation>יצירה</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -3956,10 +3956,6 @@ Go to File &gt; Open Wallet to load a wallet.
<translation>%s הוגדר מאד גבוה!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>שגיאת טעינת ארנק %s. שם קובץ -wallet כפול הוגדר.</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>תהליכי הרשת מופעלים…</translation>
</message>
diff --git a/src/qt/locale/bitcoin_hi.ts b/src/qt/locale/bitcoin_hi.ts
index 98a60098b5..086a106c3d 100644
--- a/src/qt/locale/bitcoin_hi.ts
+++ b/src/qt/locale/bitcoin_hi.ts
@@ -3,7 +3,7 @@
<name>AddressBookPage</name>
<message>
<source>Right-click to edit address or label</source>
- <translation>एड्रेस या लेबल को बदलने के लिए राइट-क्लिक करें </translation>
+ <translation>पता व नामपत्र बदलने के लिए दायीं कुंजी दबाइए </translation>
</message>
<message>
<source>Create a new address</source>
@@ -319,6 +319,10 @@
<translation>तिजोरी</translation>
</message>
<message>
+ <source>Send coins to a Bitcoin address</source>
+ <translation>इस पते पर बिटकौइन भेजें</translation>
+ </message>
+ <message>
<source>Change the passphrase used for wallet encryption</source>
<translation>पहचान शब्द/अक्षर जो वॉलेट एनक्रिपशन के लिए इस्तेमाल किया है उसे बदलिए!</translation>
</message>
@@ -359,6 +363,22 @@
<translation>नवीनतम</translation>
</message>
<message>
+ <source>Open a wallet</source>
+ <translation>बटुआ खोलें</translation>
+ </message>
+ <message>
+ <source>Close Wallet...</source>
+ <translation>बटुआ बंद करें...</translation>
+ </message>
+ <message>
+ <source>Close wallet</source>
+ <translation>बटुआ बंद करें</translation>
+ </message>
+ <message>
+ <source>Close All Wallets...</source>
+ <translation>सारे बटुएँ बंद करें...</translation>
+ </message>
+ <message>
<source>Sent transaction</source>
<translation>भेजी ट्रांजक्शन</translation>
</message>
@@ -378,6 +398,10 @@
<context>
<name>CoinControlDialog</name>
<message>
+ <source>Quantity:</source>
+ <translation>मात्रा :</translation>
+ </message>
+ <message>
<source>Amount:</source>
<translation>राशि :</translation>
</message>
@@ -394,6 +418,14 @@
<translation>पक्का</translation>
</message>
<message>
+ <source>yes</source>
+ <translation>हाँ</translation>
+ </message>
+ <message>
+ <source>no</source>
+ <translation>नहीं</translation>
+ </message>
+ <message>
<source>(no label)</source>
<translation>(कोई परचा नहीं )</translation>
</message>
@@ -571,6 +603,10 @@
<translation>सिक्के भेजें|</translation>
</message>
<message>
+ <source>Quantity:</source>
+ <translation>मात्रा :</translation>
+ </message>
+ <message>
<source>Amount:</source>
<translation>राशि :</translation>
</message>
@@ -724,6 +760,10 @@
</context>
<context>
<name>WalletController</name>
+ <message>
+ <source>Close wallet</source>
+ <translation>बटुआ बंद करें</translation>
+ </message>
</context>
<context>
<name>WalletFrame</name>
diff --git a/src/qt/locale/bitcoin_hr.ts b/src/qt/locale/bitcoin_hr.ts
index 98c1abaab5..4b3fa8b9e6 100644
--- a/src/qt/locale/bitcoin_hr.ts
+++ b/src/qt/locale/bitcoin_hr.ts
@@ -817,7 +817,7 @@
<source>Create</source>
<translation>Stvorite</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -3584,10 +3584,6 @@ Napomena: Budući da se naknada računa po bajtu, naknada od "100 satošija po k
<translation>%s je postavljen preveliko!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>Greška kod učitavanja novčanika %s. Duplikat imena novčanika zadan.</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>Pokreću se mrežne niti...</translation>
</message>
diff --git a/src/qt/locale/bitcoin_hu.ts b/src/qt/locale/bitcoin_hu.ts
index ccc860b7d2..39af3ee38e 100644
--- a/src/qt/locale/bitcoin_hu.ts
+++ b/src/qt/locale/bitcoin_hu.ts
@@ -882,7 +882,7 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Create</source>
<translation>Létrehozás</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -3968,10 +3968,6 @@ A Fájl &gt; Megnyitás menüben lehet megnyitni.
<translation>%s étéke nagyon magas!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>Hiba történt a %s tárca betöltésekor, mert duplikált tárca-fájlnevet adott meg.</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>Hálózati szálak indítása...</translation>
</message>
diff --git a/src/qt/locale/bitcoin_id.ts b/src/qt/locale/bitcoin_id.ts
index 1dcb97dee7..8a8174b046 100644
--- a/src/qt/locale/bitcoin_id.ts
+++ b/src/qt/locale/bitcoin_id.ts
@@ -830,7 +830,7 @@
<source>Create</source>
<translation>Membuat</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -1776,6 +1776,14 @@
<translation>Block Yang Telah Sinkron</translation>
</message>
<message>
+ <source>The mapped Autonomous System used for diversifying peer selection.</source>
+ <translation>Sistem Otonom yang dipetakan digunakan untuk mendiversifikasi pilihan peer</translation>
+ </message>
+ <message>
+ <source>Mapped AS</source>
+ <translation>AS yang Dipetakan</translation>
+ </message>
+ <message>
<source>User Agent</source>
<translation>Agen Pengguna
@@ -1985,6 +1993,10 @@
<translation>Label fakultatif untuk menghubungkan dengan alamat penerima baru (anda menggunakannya untuk mengindetifikasi faktur). Itu juga dilampirkan pada permintaan pembayaran.</translation>
</message>
<message>
+ <source>An optional message that is attached to the payment request and may be displayed to the sender.</source>
+ <translation>Pesan opsional yang dilampirkan di permintaan pembayaran dan dapat ditampilkan ke pengirim.</translation>
+ </message>
+ <message>
<source>&amp;Create new receiving address</source>
<translation>&amp;Create alamat penerima baru</translation>
</message>
@@ -3438,10 +3450,6 @@ Catatan: Karena biaya dihitung berdasarkan per byte, biaya "100 satoshi per kB"
<translation>%s diset sangat tinggi!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>Terjadi kesalahan saat memuat dompet %s duplikat -wallet nama file yang diterapkan</translation>
- </message>
- <message>
<source>The wallet will avoid paying less than the minimum relay fee.</source>
<translation>Dompet akan menghindari pembayaran kurang dari biaya minimum ongkos relay.</translation>
</message>
diff --git a/src/qt/locale/bitcoin_it.ts b/src/qt/locale/bitcoin_it.ts
index 8a464ace5c..8ccf83e8f5 100644
--- a/src/qt/locale/bitcoin_it.ts
+++ b/src/qt/locale/bitcoin_it.ts
@@ -3,7 +3,7 @@
<name>AddressBookPage</name>
<message>
<source>Right-click to edit address or label</source>
- <translation>Fai clic con il tasto destro del mouse per modificare l'indirizzo o l'etichetta</translation>
+ <translation>Fai clic con il tasto destro del mouse per modificare l'indirizzo oppure l'etichetta</translation>
</message>
<message>
<source>Create a new address</source>
@@ -15,7 +15,7 @@
</message>
<message>
<source>Copy the currently selected address to the system clipboard</source>
- <translation>Copia negli appunti l'indirizzo attualmente selezionato</translation>
+ <translation>Copia negli appunti del sistema l'indirizzo attualmente selezionato</translation>
</message>
<message>
<source>&amp;Copy</source>
@@ -89,11 +89,11 @@ E' possibile firmare solo con indirizzi di tipo "legacy".</translation>
</message>
<message>
<source>Export Address List</source>
- <translation>Esporta elenco indirizzi</translation>
+ <translation>Esporta elenco degli indirizzi</translation>
</message>
<message>
<source>Comma separated file (*.csv)</source>
- <translation>Testo CSV (*.csv)</translation>
+ <translation>File diviso da virgole (*.csv)</translation>
</message>
<message>
<source>Exporting Failed</source>
@@ -171,7 +171,7 @@ E' possibile firmare solo con indirizzi di tipo "legacy".</translation>
</message>
<message>
<source>Warning: If you encrypt your wallet and lose your passphrase, you will &lt;b&gt;LOSE ALL OF YOUR BITCOINS&lt;/b&gt;!</source>
- <translation>Attenzione: Se si cifra il portamonete e si perde la passphrase &lt;b&gt;TUTTI I PROPRI BITCOIN ANDRANNO PERSI&lt;/b&gt;!</translation>
+ <translation>Attenzione: Se si cifra il portafoglio e si perde la passphrase &lt;b&gt;TUTTI I PROPRI BITCOIN ANDRANNO PERSI&lt;/b&gt;!</translation>
</message>
<message>
<source>Are you sure you wish to encrypt your wallet?</source>
@@ -548,6 +548,14 @@ E' possibile firmare solo con indirizzi di tipo "legacy".</translation>
<translation>Mostra il messaggio di aiuto di %1 per ottenere una lista di opzioni di comando per Bitcoin</translation>
</message>
<message>
+ <source>&amp;Mask values</source>
+ <translation>&amp;Valori della maschera</translation>
+ </message>
+ <message>
+ <source>Mask the values in the Overview tab</source>
+ <translation>Maschera i valori nella sezione "Panoramica"</translation>
+ </message>
+ <message>
<source>default wallet</source>
<translation>Portafoglio predefinito:</translation>
</message>
@@ -869,10 +877,14 @@ E' possibile firmare solo con indirizzi di tipo "legacy".</translation>
<translation>Usa descriptors per gestione scriptPubKey</translation>
</message>
<message>
+ <source>Descriptor Wallet</source>
+ <translation>Descrizione del Portafoglio</translation>
+ </message>
+ <message>
<source>Create</source>
<translation>Crea</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -1488,7 +1500,11 @@ Per specificare più URL separarli con una barra verticale "|".</translation>
<source>Current total balance in watch-only addresses</source>
<translation>Saldo corrente totale negli indirizzi di sola lettura</translation>
</message>
- </context>
+ <message>
+ <source>Privacy mode activated for the Overview tab. To unmask the values, uncheck Settings-&gt;Mask values.</source>
+ <translation>Modalità privacy attivata per la scheda "Panoramica". Per smascherare i valori, deseleziona Impostazioni-&gt; Valori maschera.</translation>
+ </message>
+</context>
<context>
<name>PSBTOperationsDialog</name>
<message>
@@ -3557,6 +3573,10 @@ Vai su File &gt; Apri Portafoglio per caricare un portafoglio.
<translation>Errore lettura %s! Tutte le chiavi sono state lette correttamente, ma i dati delle transazioni o della rubrica potrebbero essere mancanti o non corretti.</translation>
</message>
<message>
+ <source>More than one onion bind address is provided. Using %s for the automatically created Tor onion service.</source>
+ <translation>Viene fornito più di un indirizzo di associazione onion. L'utilizzo di %s per il servizio Tor onion viene creato automaticamente.</translation>
+ </message>
+ <message>
<source>Please check that your computer's date and time are correct! If your clock is wrong, %s will not work properly.</source>
<translation>Per favore controllate che la data del computer e l'ora siano corrette! Se il vostro orologio è sbagliato %s non funzionerà correttamente.</translation>
</message>
@@ -3669,6 +3689,10 @@ Vai su File &gt; Apri Portafoglio per caricare un portafoglio.
<translation>Impossibile ripetere la scansione del portafoglio durante l'inizializzazione</translation>
</message>
<message>
+ <source>Failed to verify database</source>
+ <translation>Errore nella verifica del database</translation>
+ </message>
+ <message>
<source>Importing...</source>
<translation>Importazione...</translation>
</message>
@@ -3697,6 +3721,22 @@ Vai su File &gt; Apri Portafoglio per caricare un portafoglio.
<translation>Importo non valido per -fallbackfee=&lt;amount&gt;: '%s'</translation>
</message>
<message>
+ <source>SQLiteDatabase: Failed to execute statement to verify database: %s</source>
+ <translation>SQLiteDatabase: Errore nell'eseguire l'operazione di verifica del database: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to prepare statement to verify database: %s</source>
+ <translation>SQLiteDatabase: Errore nel verificare il database: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to read database verification error: %s</source>
+ <translation>SQLiteDatabase: Errore nella lettura della verifica del database: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Unexpected application id. Expected %u, got %u</source>
+ <translation>SQLiteDatabase: Application id non riconosciuto. Mi aspetto un %u, arriva un %u</translation>
+ </message>
+ <message>
<source>Specified blocks directory "%s" does not exist.</source>
<translation>La cartella specificata "%s" non esiste.</translation>
</message>
@@ -3781,6 +3821,14 @@ Vai su File &gt; Apri Portafoglio per caricare un portafoglio.
<translation>Errore: attesa per connessioni in arrivo fallita (errore riportato %s)</translation>
</message>
<message>
+ <source>%s corrupt. Try using the wallet tool bitcoin-wallet to salvage or restoring a backup.</source>
+ <translation>%s corrotto. Prova a usare la funzione del portafoglio bitcoin-wallet per salvare o recuperare il backup</translation>
+ </message>
+ <message>
+ <source>Cannot upgrade a non HD split wallet without upgrading to support pre split keypool. Please use version 169900 or no version specified.</source>
+ <translation>Impossibile aggiornare un portafoglio diviso non HD senza aggiornamento per supportare il keypool pre-split. Si prega di utilizzare -upgradewallet = 169900 o -upgradewallet senza specificare la versione.</translation>
+ </message>
+ <message>
<source>Invalid amount for -maxtxfee=&lt;amount&gt;: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions)</source>
<translation>Importo non valido per -maxtxfee=&lt;amount&gt;: '%s' (deve essere almeno pari alla commissione 'minrelay fee' di %s per prevenire transazioni bloccate)</translation>
</message>
@@ -3943,10 +3991,6 @@ Vai su File &gt; Apri Portafoglio per caricare un portafoglio.
<translation>%s ha un'impostazione molto alta!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>Errore caricamento portafoglio %s. Il nome file -wallet specificato è duplicato.</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>Inizializzazione dei thread di rete...</translation>
</message>
diff --git a/src/qt/locale/bitcoin_ja.ts b/src/qt/locale/bitcoin_ja.ts
index 5590483f24..c79a57d433 100644
--- a/src/qt/locale/bitcoin_ja.ts
+++ b/src/qt/locale/bitcoin_ja.ts
@@ -479,6 +479,14 @@
<translation>ブロックは最新</translation>
</message>
<message>
+ <source>Load PSBT from clipboard...</source>
+ <translation>PSBTをクリップボードから読み込み</translation>
+ </message>
+ <message>
+ <source>Load Partially Signed Bitcoin Transaction from clipboard</source>
+ <translation>部分的に署名されたビットコインのトランザクションをクリップボードから読み込み</translation>
+ </message>
+ <message>
<source>Node window</source>
<translation>ノードウィンドウ</translation>
</message>
@@ -515,6 +523,14 @@
<translation>ウォレットを閉じる</translation>
</message>
<message>
+ <source>Close All Wallets...</source>
+ <translation>全てのウォレットを閉じる</translation>
+ </message>
+ <message>
+ <source>Close all wallets</source>
+ <translation>全てのウォレットを閉じる</translation>
+ </message>
+ <message>
<source>Show the %1 help message to get a list with possible Bitcoin command-line options</source>
<translation>%1 のヘルプ メッセージを表示し、使用可能な Bitcoin のコマンドラインオプション一覧を見る。</translation>
</message>
@@ -626,6 +642,10 @@
<source>Wallet is &lt;b&gt;encrypted&lt;/b&gt; and currently &lt;b&gt;locked&lt;/b&gt;</source>
<translation>ウォレットは&lt;b&gt;暗号化済み&lt;/b&gt;・&lt;b&gt;ロック状態&lt;/b&gt;</translation>
</message>
+ <message>
+ <source>Original message:</source>
+ <translation>オリジナルメッセージ:</translation>
+ </message>
</context>
<context>
<name>CoinControlDialog</name>
@@ -831,7 +851,7 @@
<source>Create</source>
<translation>作成</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -1442,6 +1462,34 @@
<context>
<name>PSBTOperationsDialog</name>
<message>
+ <source>Dialog</source>
+ <translation>ダイアログ</translation>
+ </message>
+ <message>
+ <source>Copy to Clipboard</source>
+ <translation>クリップボードにコピー</translation>
+ </message>
+ <message>
+ <source>Save...</source>
+ <translation>保存</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>閉じる</translation>
+ </message>
+ <message>
+ <source>Signed transaction successfully. Transaction is ready to broadcast.</source>
+ <translation>トランザクションへの署名が成功しました。トランザクションのブロードキャストの準備ができています。</translation>
+ </message>
+ <message>
+ <source>Save Transaction Data</source>
+ <translation>トランザクションデータの保存</translation>
+ </message>
+ <message>
+ <source>PSBT saved to disk.</source>
+ <translation>PSBTはディスクに保存されました。</translation>
+ </message>
+ <message>
<source>Total Amount</source>
<translation>合計</translation>
</message>
@@ -2063,6 +2111,10 @@
<context>
<name>ReceiveRequestDialog</name>
<message>
+ <source>Address:</source>
+ <translation>アドレス:</translation>
+ </message>
+ <message>
<source>Amount:</source>
<translation>金額:</translation>
</message>
@@ -2345,6 +2397,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>送金してもよろしいですか?</translation>
</message>
<message>
+ <source>Save Transaction Data</source>
+ <translation>トランザクションデータの保存</translation>
+ </message>
+ <message>
<source>or</source>
<translation>または</translation>
</message>
@@ -3166,7 +3222,15 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>Closing the wallet for too long can result in having to resync the entire chain if pruning is enabled.</source>
<translation>ブロックファイル剪定が有効の場合、長期間ウォレットを起動しないと全チェーンを再度同期させる必要があるかもしれません。</translation>
</message>
- </context>
+ <message>
+ <source>Close all wallets</source>
+ <translation>全てのウォレットを閉じる</translation>
+ </message>
+ <message>
+ <source>Are you sure you wish to close all wallets?</source>
+ <translation>本当に全てのウォレットを閉じますか。</translation>
+ </message>
+</context>
<context>
<name>WalletFrame</name>
<message>
@@ -3551,6 +3615,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>非剪定モードに戻るためには -reindex オプションを指定してデータベースを再構築する必要があります。 ブロックチェーン全体の再ダウンロードが必要となります。</translation>
</message>
<message>
+ <source>Disk space is too low!</source>
+ <translation>ディスク容量不足!</translation>
+ </message>
+ <message>
<source>Error reading from database, shutting down.</source>
<translation>データベースの読み込みエラー。シャットダウンします。</translation>
</message>
@@ -3673,10 +3741,6 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>%s の設定値が高すぎです!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>ウォレット %s の読み込み時にエラーが発生しました。重複する -wallet ファイル名が指定されました。</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>ネットワークスレッドの起動中...</translation>
</message>
diff --git a/src/qt/locale/bitcoin_ko.ts b/src/qt/locale/bitcoin_ko.ts
index 00944be3ef..eca335d861 100644
--- a/src/qt/locale/bitcoin_ko.ts
+++ b/src/qt/locale/bitcoin_ko.ts
@@ -822,7 +822,7 @@
<source>Create</source>
<translation>생성하기</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -3592,10 +3592,6 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>%s가 매우 높게 설정되었습니다!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>지갑 %s 로딩 에러, 중복된 -wallet 파일이름을 입력했습니다.</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>네트워크 스레드 시작중...</translation>
</message>
diff --git a/src/qt/locale/bitcoin_lt.ts b/src/qt/locale/bitcoin_lt.ts
index 1c1fc292bf..2abe7274da 100644
--- a/src/qt/locale/bitcoin_lt.ts
+++ b/src/qt/locale/bitcoin_lt.ts
@@ -790,7 +790,7 @@
<source>Create</source>
<translation>Sukurti</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -3218,10 +3218,6 @@ Pastaba: Kadangi mokestis apskaičiuojamas pagal baitą, mokestis už „100 sat
<translation>%s labai aukštas!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>Įkeliant piniginę %s įvyko klaida. Dvigubo -wallet pavadinimas.</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>Pradėti tinklo temas...</translation>
</message>
diff --git a/src/qt/locale/bitcoin_ms.ts b/src/qt/locale/bitcoin_ms.ts
index ee729a3f9e..7d9be93bc4 100644
--- a/src/qt/locale/bitcoin_ms.ts
+++ b/src/qt/locale/bitcoin_ms.ts
@@ -134,6 +134,10 @@ Alihkan fail data ke dalam tab semasa</translation>
<translation>Ulangi frasa laluan baru</translation>
</message>
<message>
+ <source>Show passphrase</source>
+ <translation>Show passphrase</translation>
+ </message>
+ <message>
<source>Encrypt wallet</source>
<translation>Dompet encrypt</translation>
</message>
@@ -174,6 +178,30 @@ Alihkan fail data ke dalam tab semasa</translation>
<translation>Dompet dienkripsi</translation>
</message>
<message>
+ <source>Enter the new passphrase for the wallet.&lt;br/&gt;Please use a passphrase of &lt;b&gt;ten or more random characters&lt;/b&gt;, or &lt;b&gt;eight or more words&lt;/b&gt;.</source>
+ <translation>Enter the new passphrase for the wallet.&lt;br/&gt;Please use a passphrase of &lt;b&gt;ten or more random characters&lt;/b&gt;, or &lt;b&gt;eight or more words&lt;/b&gt;.</translation>
+ </message>
+ <message>
+ <source>Enter the old passphrase and new passphrase for the wallet.</source>
+ <translation>Enter the old passphrase and new passphrase for the wallet.</translation>
+ </message>
+ <message>
+ <source>Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer.</source>
+ <translation>Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer.</translation>
+ </message>
+ <message>
+ <source>Wallet to be encrypted</source>
+ <translation>Wallet to be encrypted</translation>
+ </message>
+ <message>
+ <source>Your wallet is about to be encrypted. </source>
+ <translation>Your wallet is about to be encrypted. </translation>
+ </message>
+ <message>
+ <source>Your wallet is now encrypted. </source>
+ <translation>Your wallet is now encrypted. </translation>
+ </message>
+ <message>
<source>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>
<translation>PENTING: Apa-apa sandaran yang anda buat sebelum ini untuk fail dompet anda hendaklah digantikan dengan fail dompet enkripsi yang dijana baru. Untuk sebab-sebab keselamatan , sandaran fail dompet yang belum dibuat enkripsi sebelum ini akan menjadi tidak berguna secepat anda mula guna dompet enkripsi baru.</translation>
</message>
@@ -296,6 +324,14 @@ Alihkan fail data ke dalam tab semasa</translation>
<translation>Buka &amp;URI...</translation>
</message>
<message>
+ <source>Create Wallet...</source>
+ <translation>Create Wallet...</translation>
+ </message>
+ <message>
+ <source>Create a new wallet</source>
+ <translation>Create a new wallet</translation>
+ </message>
+ <message>
<source>Wallet:</source>
<translation>dompet</translation>
</message>
@@ -320,6 +356,10 @@ Alihkan fail data ke dalam tab semasa</translation>
<translation>Reindexi blok pada cakera...</translation>
</message>
<message>
+ <source>Proxy is &lt;b&gt;enabled&lt;/b&gt;: %1</source>
+ <translation>Proxy is &lt;b&gt;enabled&lt;/b&gt;: %1</translation>
+ </message>
+ <message>
<source>Send coins to a Bitcoin address</source>
<translation>Menghantar koin kepada alamat Bitcoin</translation>
</message>
@@ -391,6 +431,34 @@ Alihkan fail data ke dalam tab semasa</translation>
</translation>
</message>
<message>
+ <source>Show the list of used receiving addresses and labels</source>
+ <translation>Show the list of used receiving addresses and labels</translation>
+ </message>
+ <message>
+ <source>&amp;Command-line options</source>
+ <translation>&amp;Command-line options</translation>
+ </message>
+ <message>
+ <source>Indexing blocks on disk...</source>
+ <translation>Indexing blocks on disk...</translation>
+ </message>
+ <message>
+ <source>Processing blocks on disk...</source>
+ <translation>Processing blocks on disk...</translation>
+ </message>
+ <message>
+ <source>%1 behind</source>
+ <translation>%1 behind</translation>
+ </message>
+ <message>
+ <source>Last received block was generated %1 ago.</source>
+ <translation>Last received block was generated %1 ago.</translation>
+ </message>
+ <message>
+ <source>Transactions after this will not yet be visible.</source>
+ <translation>Transactions after this will not yet be visible.</translation>
+ </message>
+ <message>
<source>Error</source>
<translation>Ralat</translation>
</message>
@@ -407,10 +475,34 @@ Alihkan fail data ke dalam tab semasa</translation>
<translation>Terkini</translation>
</message>
<message>
+ <source>Node window</source>
+ <translation>Node window</translation>
+ </message>
+ <message>
+ <source>Open node debugging and diagnostic console</source>
+ <translation>Open node debugging and diagnostic console</translation>
+ </message>
+ <message>
+ <source>&amp;Sending addresses</source>
+ <translation>&amp;Sending addresses</translation>
+ </message>
+ <message>
+ <source>&amp;Receiving addresses</source>
+ <translation>&amp;Receiving addresses</translation>
+ </message>
+ <message>
+ <source>Open a bitcoin: URI</source>
+ <translation>Open a bitcoin: URI</translation>
+ </message>
+ <message>
<source>Open Wallet</source>
<translation>Buka Wallet</translation>
</message>
<message>
+ <source>Open a wallet</source>
+ <translation>Open a wallet</translation>
+ </message>
+ <message>
<source>Close Wallet...</source>
<translation>Tutup Wallet...</translation>
</message>
@@ -419,27 +511,323 @@ Alihkan fail data ke dalam tab semasa</translation>
<translation>Tutup Wallet</translation>
</message>
<message>
+ <source>Show the %1 help message to get a list with possible Bitcoin command-line options</source>
+ <translation>Show the %1 help message to get a list with possible Bitcoin command-line options</translation>
+ </message>
+ <message>
<source>default wallet</source>
<translation>dompet lalai
</translation>
</message>
+ <message>
+ <source>No wallets available</source>
+ <translation>No wallets available</translation>
+ </message>
+ <message>
+ <source>&amp;Window</source>
+ <translation>&amp;Window</translation>
+ </message>
+ <message>
+ <source>Minimize</source>
+ <translation>Minimize</translation>
+ </message>
+ <message>
+ <source>Zoom</source>
+ <translation>Zoom</translation>
+ </message>
+ <message>
+ <source>Main Window</source>
+ <translation>Main Window</translation>
+ </message>
+ <message>
+ <source>%1 client</source>
+ <translation>%1 client</translation>
+ </message>
+ <message>
+ <source>Connecting to peers...</source>
+ <translation>Connecting to peers...</translation>
+ </message>
+ <message>
+ <source>Catching up...</source>
+ <translation>Catching up...</translation>
+ </message>
+ <message>
+ <source>Error: %1</source>
+ <translation>Error: %1</translation>
+ </message>
+ <message>
+ <source>Warning: %1</source>
+ <translation>Warning: %1</translation>
+ </message>
+ <message>
+ <source>Date: %1
+</source>
+ <translation>Date: %1
+</translation>
+ </message>
+ <message>
+ <source>Amount: %1
+</source>
+ <translation>Amount: %1
+</translation>
+ </message>
+ <message>
+ <source>Wallet: %1
+</source>
+ <translation>Wallet: %1
+</translation>
+ </message>
+ <message>
+ <source>Type: %1
+</source>
+ <translation>Type: %1
+</translation>
+ </message>
+ <message>
+ <source>Label: %1
+</source>
+ <translation>Label: %1
+</translation>
+ </message>
+ <message>
+ <source>Address: %1
+</source>
+ <translation>Address: %1
+</translation>
+ </message>
+ <message>
+ <source>Sent transaction</source>
+ <translation>Sent transaction</translation>
+ </message>
+ <message>
+ <source>Incoming transaction</source>
+ <translation>Incoming transaction</translation>
+ </message>
+ <message>
+ <source>HD key generation is &lt;b&gt;enabled&lt;/b&gt;</source>
+ <translation>HD key generation is &lt;b&gt;enabled&lt;/b&gt;</translation>
+ </message>
+ <message>
+ <source>HD key generation is &lt;b&gt;disabled&lt;/b&gt;</source>
+ <translation>HD key generation is &lt;b&gt;disabled&lt;/b&gt;</translation>
+ </message>
+ <message>
+ <source>Private key &lt;b&gt;disabled&lt;/b&gt;</source>
+ <translation>Private key &lt;b&gt;disabled&lt;/b&gt;</translation>
+ </message>
+ <message>
+ <source>Wallet is &lt;b&gt;encrypted&lt;/b&gt; and currently &lt;b&gt;unlocked&lt;/b&gt;</source>
+ <translation>Wallet is &lt;b&gt;encrypted&lt;/b&gt; and currently &lt;b&gt;unlocked&lt;/b&gt;</translation>
+ </message>
+ <message>
+ <source>Wallet is &lt;b&gt;encrypted&lt;/b&gt; and currently &lt;b&gt;locked&lt;/b&gt;</source>
+ <translation>Wallet is &lt;b&gt;encrypted&lt;/b&gt; and currently &lt;b&gt;locked&lt;/b&gt;</translation>
+ </message>
</context>
<context>
<name>CoinControlDialog</name>
<message>
+ <source>Coin Selection</source>
+ <translation>Coin Selection</translation>
+ </message>
+ <message>
+ <source>Quantity:</source>
+ <translation>Quantity:</translation>
+ </message>
+ <message>
+ <source>Bytes:</source>
+ <translation>Bytes:</translation>
+ </message>
+ <message>
+ <source>Amount:</source>
+ <translation>Amount:</translation>
+ </message>
+ <message>
+ <source>Fee:</source>
+ <translation>Fee:</translation>
+ </message>
+ <message>
+ <source>Dust:</source>
+ <translation>Dust:</translation>
+ </message>
+ <message>
+ <source>After Fee:</source>
+ <translation>After Fee:</translation>
+ </message>
+ <message>
+ <source>Change:</source>
+ <translation>Change:</translation>
+ </message>
+ <message>
+ <source>(un)select all</source>
+ <translation>(un)select all</translation>
+ </message>
+ <message>
+ <source>Tree mode</source>
+ <translation>Tree mode</translation>
+ </message>
+ <message>
+ <source>List mode</source>
+ <translation>List mode</translation>
+ </message>
+ <message>
<source>Amount</source>
<translation>Amount</translation>
</message>
<message>
+ <source>Received with label</source>
+ <translation>Received with label</translation>
+ </message>
+ <message>
+ <source>Received with address</source>
+ <translation>Received with address</translation>
+ </message>
+ <message>
+ <source>Date</source>
+ <translation>Date</translation>
+ </message>
+ <message>
+ <source>Confirmations</source>
+ <translation>Confirmations</translation>
+ </message>
+ <message>
+ <source>Confirmed</source>
+ <translation>Confirmed</translation>
+ </message>
+ <message>
+ <source>Copy address</source>
+ <translation>Copy address</translation>
+ </message>
+ <message>
+ <source>Copy label</source>
+ <translation>Copy label</translation>
+ </message>
+ <message>
+ <source>Copy amount</source>
+ <translation>Copy amount</translation>
+ </message>
+ <message>
+ <source>Copy transaction ID</source>
+ <translation>Copy transaction ID</translation>
+ </message>
+ <message>
+ <source>Lock unspent</source>
+ <translation>Lock unspent</translation>
+ </message>
+ <message>
+ <source>Unlock unspent</source>
+ <translation>Unlock unspent</translation>
+ </message>
+ <message>
+ <source>Copy quantity</source>
+ <translation>Copy quantity</translation>
+ </message>
+ <message>
+ <source>Copy fee</source>
+ <translation>Copy fee</translation>
+ </message>
+ <message>
+ <source>Copy after fee</source>
+ <translation>Copy after fee</translation>
+ </message>
+ <message>
+ <source>Copy bytes</source>
+ <translation>Copy bytes</translation>
+ </message>
+ <message>
+ <source>Copy dust</source>
+ <translation>Copy dust</translation>
+ </message>
+ <message>
+ <source>Copy change</source>
+ <translation>Copy change</translation>
+ </message>
+ <message>
+ <source>(%1 locked)</source>
+ <translation>(%1 locked)</translation>
+ </message>
+ <message>
+ <source>yes</source>
+ <translation>yes</translation>
+ </message>
+ <message>
+ <source>no</source>
+ <translation>no</translation>
+ </message>
+ <message>
+ <source>This label turns red if any recipient receives an amount smaller than the current dust threshold.</source>
+ <translation>This label turns red if any recipient receives an amount smaller than the current dust threshold.</translation>
+ </message>
+ <message>
+ <source>Can vary +/- %1 satoshi(s) per input.</source>
+ <translation>Can vary +/- %1 satoshi(s) per input.</translation>
+ </message>
+ <message>
<source>(no label)</source>
<translation>(tiada label)</translation>
</message>
- </context>
+ <message>
+ <source>change from %1 (%2)</source>
+ <translation>change from %1 (%2)</translation>
+ </message>
+ <message>
+ <source>(change)</source>
+ <translation>(change)</translation>
+ </message>
+</context>
<context>
<name>CreateWalletActivity</name>
- </context>
+ <message>
+ <source>Creating Wallet &lt;b&gt;%1&lt;/b&gt;...</source>
+ <translation>Creating Wallet &lt;b&gt;%1&lt;/b&gt;...</translation>
+ </message>
+ <message>
+ <source>Create wallet failed</source>
+ <translation>Create wallet failed</translation>
+ </message>
+ <message>
+ <source>Create wallet warning</source>
+ <translation>Create wallet warning</translation>
+ </message>
+</context>
<context>
<name>CreateWalletDialog</name>
+ <message>
+ <source>Create Wallet</source>
+ <translation>Create Wallet</translation>
+ </message>
+ <message>
+ <source>Wallet Name</source>
+ <translation>Wallet Name</translation>
+ </message>
+ <message>
+ <source>Encrypt the wallet. The wallet will be encrypted with a passphrase of your choice.</source>
+ <translation>Encrypt the wallet. The wallet will be encrypted with a passphrase of your choice.</translation>
+ </message>
+ <message>
+ <source>Encrypt Wallet</source>
+ <translation>Encrypt Wallet</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>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.</translation>
+ </message>
+ <message>
+ <source>Disable Private Keys</source>
+ <translation>Disable Private Keys</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>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.</translation>
+ </message>
+ <message>
+ <source>Make Blank Wallet</source>
+ <translation>Make Blank Wallet</translation>
+ </message>
+ <message>
+ <source>Create</source>
+ <translation>Create</translation>
+ </message>
</context>
<context>
<name>EditAddressDialog</name>
@@ -448,36 +836,244 @@ Alihkan fail data ke dalam tab semasa</translation>
<translation>Alamat</translation>
</message>
<message>
+ <source>&amp;Label</source>
+ <translation>&amp;Label</translation>
+ </message>
+ <message>
+ <source>The label associated with this address list entry</source>
+ <translation>The label associated with this address list entry</translation>
+ </message>
+ <message>
+ <source>The address associated with this address list entry. This can only be modified for sending addresses.</source>
+ <translation>The address associated with this address list entry. This can only be modified for sending addresses.</translation>
+ </message>
+ <message>
<source>&amp;Address</source>
<translation>Alamat</translation>
</message>
- </context>
+ <message>
+ <source>New sending address</source>
+ <translation>New sending address</translation>
+ </message>
+ <message>
+ <source>Edit receiving address</source>
+ <translation>Edit receiving address</translation>
+ </message>
+ <message>
+ <source>Edit sending address</source>
+ <translation>Edit sending address</translation>
+ </message>
+ <message>
+ <source>The entered address "%1" is not a valid Bitcoin address.</source>
+ <translation>The entered address "%1" is not a valid Bitcoin address.</translation>
+ </message>
+ <message>
+ <source>Address "%1" already exists as a receiving address with label "%2" and so cannot be added as a sending address.</source>
+ <translation>Address "%1" already exists as a receiving address with label "%2" and so cannot be added as a sending address.</translation>
+ </message>
+ <message>
+ <source>The entered address "%1" is already in the address book with label "%2".</source>
+ <translation>The entered address "%1" is already in the address book with label "%2".</translation>
+ </message>
+ <message>
+ <source>Could not unlock wallet.</source>
+ <translation>Could not unlock wallet.</translation>
+ </message>
+ <message>
+ <source>New key generation failed.</source>
+ <translation>New key generation failed.</translation>
+ </message>
+</context>
<context>
<name>FreespaceChecker</name>
- </context>
+ <message>
+ <source>A new data directory will be created.</source>
+ <translation>A new data directory will be created.</translation>
+ </message>
+ <message>
+ <source>name</source>
+ <translation>name</translation>
+ </message>
+ <message>
+ <source>Directory already exists. Add %1 if you intend to create a new directory here.</source>
+ <translation>Directory already exists. Add %1 if you intend to create a new directory here.</translation>
+ </message>
+ <message>
+ <source>Path already exists, and is not a directory.</source>
+ <translation>Path already exists, and is not a directory.</translation>
+ </message>
+ <message>
+ <source>Cannot create data directory here.</source>
+ <translation>Cannot create data directory here.</translation>
+ </message>
+</context>
<context>
<name>HelpMessageDialog</name>
- </context>
+ <message>
+ <source>version</source>
+ <translation>version</translation>
+ </message>
+ <message>
+ <source>About %1</source>
+ <translation>About %1</translation>
+ </message>
+ <message>
+ <source>Command-line options</source>
+ <translation>Command-line options</translation>
+ </message>
+</context>
<context>
<name>Intro</name>
<message>
+ <source>Welcome</source>
+ <translation>Welcome</translation>
+ </message>
+ <message>
+ <source>Welcome to %1.</source>
+ <translation>Welcome to %1.</translation>
+ </message>
+ <message>
+ <source>As this is the first time the program is launched, you can choose where %1 will store its data.</source>
+ <translation>As this is the first time the program is launched, you can choose where %1 will store its data.</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>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.</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>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.</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>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.</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>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.</translation>
+ </message>
+ <message>
+ <source>Use the default data directory</source>
+ <translation>Use the default data directory</translation>
+ </message>
+ <message>
+ <source>Use a custom data directory:</source>
+ <translation>Use a custom data directory:</translation>
+ </message>
+ <message>
<source>Bitcoin</source>
<translation>Bitcoin</translation>
</message>
<message>
+ <source>Discard blocks after verification, except most recent %1 GB (prune)</source>
+ <translation>Discard blocks after verification, except most recent %1 GB (prune)</translation>
+ </message>
+ <message>
+ <source>At least %1 GB of data will be stored in this directory, and it will grow over time.</source>
+ <translation>At least %1 GB of data will be stored in this directory, and it will grow over time.</translation>
+ </message>
+ <message>
+ <source>Approximately %1 GB of data will be stored in this directory.</source>
+ <translation>Approximately %1 GB of data will be stored in this directory.</translation>
+ </message>
+ <message>
+ <source>%1 will download and store a copy of the Bitcoin block chain.</source>
+ <translation>%1 will download and store a copy of the Bitcoin block chain.</translation>
+ </message>
+ <message>
+ <source>The wallet will also be stored in this directory.</source>
+ <translation>The wallet will also be stored in this directory.</translation>
+ </message>
+ <message>
+ <source>Error: Specified data directory "%1" cannot be created.</source>
+ <translation>Error: Specified data directory "%1" cannot be created.</translation>
+ </message>
+ <message>
<source>Error</source>
<translation>Ralat</translation>
</message>
</context>
<context>
<name>ModalOverlay</name>
- </context>
+ <message>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>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.</translation>
+ </message>
+ <message>
+ <source>Attempting to spend bitcoins that are affected by not-yet-displayed transactions will not be accepted by the network.</source>
+ <translation>Attempting to spend bitcoins that are affected by not-yet-displayed transactions will not be accepted by the network.</translation>
+ </message>
+ <message>
+ <source>Number of blocks left</source>
+ <translation>Number of blocks left</translation>
+ </message>
+ <message>
+ <source>Unknown...</source>
+ <translation>Unknown...</translation>
+ </message>
+ <message>
+ <source>Last block time</source>
+ <translation>Last block time</translation>
+ </message>
+ <message>
+ <source>Progress</source>
+ <translation>Progress</translation>
+ </message>
+ <message>
+ <source>Progress increase per hour</source>
+ <translation>Progress increase per hour</translation>
+ </message>
+ <message>
+ <source>calculating...</source>
+ <translation>calculating...</translation>
+ </message>
+ <message>
+ <source>Estimated time left until synced</source>
+ <translation>Estimated time left until synced</translation>
+ </message>
+ <message>
+ <source>Hide</source>
+ <translation>Hide</translation>
+ </message>
+ <message>
+ <source>Esc</source>
+ <translation>Esc</translation>
+ </message>
+ <message>
+ <source>%1 is currently syncing. It will download headers and blocks from peers and validate them until reaching the tip of the block chain.</source>
+ <translation>%1 is currently syncing. It will download headers and blocks from peers and validate them until reaching the tip of the block chain.</translation>
+ </message>
+ <message>
+ <source>Unknown. Syncing Headers (%1, %2%)...</source>
+ <translation>Unknown. Syncing Headers (%1, %2%)...</translation>
+ </message>
+</context>
<context>
<name>OpenURIDialog</name>
- </context>
+ <message>
+ <source>Open bitcoin URI</source>
+ <translation>Open bitcoin URI</translation>
+ </message>
+ <message>
+ <source>URI:</source>
+ <translation>URI:</translation>
+ </message>
+</context>
<context>
<name>OpenWalletActivity</name>
<message>
+ <source>Open wallet failed</source>
+ <translation>Open wallet failed</translation>
+ </message>
+ <message>
+ <source>Open wallet warning</source>
+ <translation>Open wallet warning</translation>
+ </message>
+ <message>
<source>default wallet</source>
<translation>dompet lalai
</translation>
@@ -490,111 +1086,1971 @@ Alihkan fail data ke dalam tab semasa</translation>
<context>
<name>OptionsDialog</name>
<message>
+ <source>Options</source>
+ <translation>Options</translation>
+ </message>
+ <message>
+ <source>&amp;Main</source>
+ <translation>&amp;Main</translation>
+ </message>
+ <message>
+ <source>Automatically start %1 after logging in to the system.</source>
+ <translation>Automatically start %1 after logging in to the system.</translation>
+ </message>
+ <message>
+ <source>&amp;Start %1 on system login</source>
+ <translation>&amp;Start %1 on system login</translation>
+ </message>
+ <message>
+ <source>Size of &amp;database cache</source>
+ <translation>Size of &amp;database cache</translation>
+ </message>
+ <message>
+ <source>Number of script &amp;verification threads</source>
+ <translation>Number of script &amp;verification threads</translation>
+ </message>
+ <message>
+ <source>IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1)</source>
+ <translation>IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1)</translation>
+ </message>
+ <message>
+ <source>Shows if the supplied default SOCKS5 proxy is used to reach peers via this network type.</source>
+ <translation>Shows if the supplied default SOCKS5 proxy is used to reach peers via this network type.</translation>
+ </message>
+ <message>
+ <source>Hide the icon from the system tray.</source>
+ <translation>Hide the icon from the system tray.</translation>
+ </message>
+ <message>
+ <source>&amp;Hide tray icon</source>
+ <translation>&amp;Hide tray icon</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>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.</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>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 |.</translation>
+ </message>
+ <message>
+ <source>Open the %1 configuration file from the working directory.</source>
+ <translation>Open the %1 configuration file from the working directory.</translation>
+ </message>
+ <message>
+ <source>Open Configuration File</source>
+ <translation>Open Configuration File</translation>
+ </message>
+ <message>
+ <source>Reset all client options to default.</source>
+ <translation>Reset all client options to default.</translation>
+ </message>
+ <message>
+ <source>&amp;Reset Options</source>
+ <translation>&amp;Reset Options</translation>
+ </message>
+ <message>
+ <source>&amp;Network</source>
+ <translation>&amp;Network</translation>
+ </message>
+ <message>
+ <source>Disables some advanced features but all blocks will still be fully validated. Reverting this setting requires re-downloading the entire blockchain. Actual disk usage may be somewhat higher.</source>
+ <translation>Disables some advanced features but all blocks will still be fully validated. Reverting this setting requires re-downloading the entire blockchain. Actual disk usage may be somewhat higher.</translation>
+ </message>
+ <message>
+ <source>Prune &amp;block storage to</source>
+ <translation>Prune &amp;block storage to</translation>
+ </message>
+ <message>
+ <source>GB</source>
+ <translation>GB</translation>
+ </message>
+ <message>
+ <source>Reverting this setting requires re-downloading the entire blockchain.</source>
+ <translation>Reverting this setting requires re-downloading the entire blockchain.</translation>
+ </message>
+ <message>
+ <source>MiB</source>
+ <translation>MiB</translation>
+ </message>
+ <message>
+ <source>(0 = auto, &lt;0 = leave that many cores free)</source>
+ <translation>(0 = auto, &lt;0 = leave that many cores free)</translation>
+ </message>
+ <message>
+ <source>W&amp;allet</source>
+ <translation>W&amp;allet</translation>
+ </message>
+ <message>
+ <source>Expert</source>
+ <translation>Expert</translation>
+ </message>
+ <message>
+ <source>Enable coin &amp;control features</source>
+ <translation>Enable coin &amp;control features</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>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.</translation>
+ </message>
+ <message>
+ <source>&amp;Spend unconfirmed change</source>
+ <translation>&amp;Spend unconfirmed change</translation>
+ </message>
+ <message>
+ <source>Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled.</source>
+ <translation>Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled.</translation>
+ </message>
+ <message>
+ <source>Map port using &amp;UPnP</source>
+ <translation>Map port using &amp;UPnP</translation>
+ </message>
+ <message>
+ <source>Accept connections from outside.</source>
+ <translation>Accept connections from outside.</translation>
+ </message>
+ <message>
+ <source>Allow incomin&amp;g connections</source>
+ <translation>Allow incomin&amp;g connections</translation>
+ </message>
+ <message>
+ <source>Connect to the Bitcoin network through a SOCKS5 proxy.</source>
+ <translation>Connect to the Bitcoin network through a SOCKS5 proxy.</translation>
+ </message>
+ <message>
+ <source>&amp;Connect through SOCKS5 proxy (default proxy):</source>
+ <translation>&amp;Connect through SOCKS5 proxy (default proxy):</translation>
+ </message>
+ <message>
+ <source>Proxy &amp;IP:</source>
+ <translation>Proxy &amp;IP:</translation>
+ </message>
+ <message>
+ <source>&amp;Port:</source>
+ <translation>&amp;Port:</translation>
+ </message>
+ <message>
+ <source>Port of the proxy (e.g. 9050)</source>
+ <translation>Port of the proxy (e.g. 9050)</translation>
+ </message>
+ <message>
+ <source>Used for reaching peers via:</source>
+ <translation>Used for reaching peers via:</translation>
+ </message>
+ <message>
+ <source>IPv4</source>
+ <translation>IPv4</translation>
+ </message>
+ <message>
+ <source>IPv6</source>
+ <translation>IPv6</translation>
+ </message>
+ <message>
+ <source>Tor</source>
+ <translation>Tor</translation>
+ </message>
+ <message>
+ <source>&amp;Window</source>
+ <translation>&amp;Window</translation>
+ </message>
+ <message>
+ <source>Show only a tray icon after minimizing the window.</source>
+ <translation>Show only a tray icon after minimizing the window.</translation>
+ </message>
+ <message>
+ <source>&amp;Minimize to the tray instead of the taskbar</source>
+ <translation>&amp;Minimize to the tray instead of the taskbar</translation>
+ </message>
+ <message>
+ <source>M&amp;inimize on close</source>
+ <translation>M&amp;inimize on close</translation>
+ </message>
+ <message>
+ <source>&amp;Display</source>
+ <translation>&amp;Display</translation>
+ </message>
+ <message>
+ <source>User Interface &amp;language:</source>
+ <translation>User Interface &amp;language:</translation>
+ </message>
+ <message>
+ <source>The user interface language can be set here. This setting will take effect after restarting %1.</source>
+ <translation>The user interface language can be set here. This setting will take effect after restarting %1.</translation>
+ </message>
+ <message>
+ <source>&amp;Unit to show amounts in:</source>
+ <translation>&amp;Unit to show amounts in:</translation>
+ </message>
+ <message>
+ <source>Choose the default subdivision unit to show in the interface and when sending coins.</source>
+ <translation>Choose the default subdivision unit to show in the interface and when sending coins.</translation>
+ </message>
+ <message>
+ <source>Whether to show coin control features or not.</source>
+ <translation>Whether to show coin control features or not.</translation>
+ </message>
+ <message>
+ <source>&amp;Third party transaction URLs</source>
+ <translation>&amp;Third party transaction URLs</translation>
+ </message>
+ <message>
+ <source>Options set in this dialog are overridden by the command line or in the configuration file:</source>
+ <translation>Options set in this dialog are overridden by the command line or in the configuration file:</translation>
+ </message>
+ <message>
+ <source>&amp;OK</source>
+ <translation>&amp;OK</translation>
+ </message>
+ <message>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Cancel</translation>
+ </message>
+ <message>
+ <source>default</source>
+ <translation>default</translation>
+ </message>
+ <message>
+ <source>none</source>
+ <translation>none</translation>
+ </message>
+ <message>
+ <source>Confirm options reset</source>
+ <translation>Confirm options reset</translation>
+ </message>
+ <message>
+ <source>Client restart required to activate changes.</source>
+ <translation>Client restart required to activate changes.</translation>
+ </message>
+ <message>
+ <source>Client will be shut down. Do you want to proceed?</source>
+ <translation>Client will be shut down. Do you want to proceed?</translation>
+ </message>
+ <message>
+ <source>Configuration options</source>
+ <translation>Configuration options</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>The configuration file is used to specify advanced user options which override GUI settings. Additionally, any command-line options will override this configuration file.</translation>
+ </message>
+ <message>
<source>Error</source>
<translation>Ralat</translation>
</message>
- </context>
+ <message>
+ <source>The configuration file could not be opened.</source>
+ <translation>The configuration file could not be opened.</translation>
+ </message>
+ <message>
+ <source>This change would require a client restart.</source>
+ <translation>This change would require a client restart.</translation>
+ </message>
+ <message>
+ <source>The supplied proxy address is invalid.</source>
+ <translation>The supplied proxy address is invalid.</translation>
+ </message>
+</context>
<context>
<name>OverviewPage</name>
+ <message>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>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.</translation>
+ </message>
+ <message>
+ <source>Watch-only:</source>
+ <translation>Watch-only:</translation>
+ </message>
+ <message>
+ <source>Available:</source>
+ <translation>Available:</translation>
+ </message>
+ <message>
+ <source>Your current spendable balance</source>
+ <translation>Your current spendable balance</translation>
+ </message>
+ <message>
+ <source>Pending:</source>
+ <translation>Pending:</translation>
+ </message>
+ <message>
+ <source>Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance</source>
+ <translation>Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance</translation>
+ </message>
+ <message>
+ <source>Immature:</source>
+ <translation>Immature:</translation>
+ </message>
+ <message>
+ <source>Mined balance that has not yet matured</source>
+ <translation>Mined balance that has not yet matured</translation>
+ </message>
+ <message>
+ <source>Balances</source>
+ <translation>Balances</translation>
+ </message>
+ <message>
+ <source>Total:</source>
+ <translation>Total:</translation>
+ </message>
+ <message>
+ <source>Your current total balance</source>
+ <translation>Your current total balance</translation>
+ </message>
+ <message>
+ <source>Your current balance in watch-only addresses</source>
+ <translation>Your current balance in watch-only addresses</translation>
+ </message>
+ <message>
+ <source>Spendable:</source>
+ <translation>Spendable:</translation>
+ </message>
+ <message>
+ <source>Recent transactions</source>
+ <translation>Recent transactions</translation>
+ </message>
+ <message>
+ <source>Unconfirmed transactions to watch-only addresses</source>
+ <translation>Unconfirmed transactions to watch-only addresses</translation>
+ </message>
+ <message>
+ <source>Mined balance in watch-only addresses that has not yet matured</source>
+ <translation>Mined balance in watch-only addresses that has not yet matured</translation>
+ </message>
+ <message>
+ <source>Current total balance in watch-only addresses</source>
+ <translation>Current total balance in watch-only addresses</translation>
+ </message>
</context>
<context>
<name>PSBTOperationsDialog</name>
+ <message>
+ <source>Total Amount</source>
+ <translation>Total Amount</translation>
+ </message>
+ <message>
+ <source>or</source>
+ <translation>or</translation>
+ </message>
</context>
<context>
<name>PaymentServer</name>
- </context>
+ <message>
+ <source>Payment request error</source>
+ <translation>Payment request error</translation>
+ </message>
+ <message>
+ <source>Cannot start bitcoin: click-to-pay handler</source>
+ <translation>Cannot start bitcoin: click-to-pay handler</translation>
+ </message>
+ <message>
+ <source>URI handling</source>
+ <translation>URI handling</translation>
+ </message>
+ <message>
+ <source>'bitcoin://' is not a valid URI. Use 'bitcoin:' instead.</source>
+ <translation>'bitcoin://' is not a valid URI. Use 'bitcoin:' instead.</translation>
+ </message>
+ <message>
+ <source>Cannot process payment request because BIP70 is not supported.</source>
+ <translation>Cannot process payment request because BIP70 is not supported.</translation>
+ </message>
+ <message>
+ <source>Due to widespread security flaws in BIP70 it's strongly recommended that any merchant instructions to switch wallets be ignored.</source>
+ <translation>Due to widespread security flaws in BIP70 it's strongly recommended that any merchant instructions to switch wallets be ignored.</translation>
+ </message>
+ <message>
+ <source>If you are receiving this error you should request the merchant provide a BIP21 compatible URI.</source>
+ <translation>If you are receiving this error you should request the merchant provide a BIP21 compatible URI.</translation>
+ </message>
+ <message>
+ <source>Invalid payment address %1</source>
+ <translation>Invalid payment address %1</translation>
+ </message>
+ <message>
+ <source>URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters.</source>
+ <translation>URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters.</translation>
+ </message>
+ <message>
+ <source>Payment request file handling</source>
+ <translation>Payment request file handling</translation>
+ </message>
+</context>
<context>
<name>PeerTableModel</name>
- </context>
+ <message>
+ <source>User Agent</source>
+ <translation>User Agent</translation>
+ </message>
+ <message>
+ <source>Node/Service</source>
+ <translation>Node/Service</translation>
+ </message>
+ <message>
+ <source>NodeId</source>
+ <translation>NodeId</translation>
+ </message>
+ <message>
+ <source>Ping</source>
+ <translation>Ping</translation>
+ </message>
+ <message>
+ <source>Sent</source>
+ <translation>Sent</translation>
+ </message>
+ <message>
+ <source>Received</source>
+ <translation>Received</translation>
+ </message>
+</context>
<context>
<name>QObject</name>
<message>
<source>Amount</source>
<translation>Amount</translation>
</message>
- </context>
+ <message>
+ <source>Enter a Bitcoin address (e.g. %1)</source>
+ <translation>Enter a Bitcoin address (e.g. %1)</translation>
+ </message>
+ <message>
+ <source>%1 d</source>
+ <translation>%1 d</translation>
+ </message>
+ <message>
+ <source>%1 h</source>
+ <translation>%1 h</translation>
+ </message>
+ <message>
+ <source>%1 m</source>
+ <translation>%1 m</translation>
+ </message>
+ <message>
+ <source>%1 s</source>
+ <translation>%1 s</translation>
+ </message>
+ <message>
+ <source>None</source>
+ <translation>None</translation>
+ </message>
+ <message>
+ <source>N/A</source>
+ <translation>N/A</translation>
+ </message>
+ <message>
+ <source>%1 ms</source>
+ <translation>%1 ms</translation>
+ </message>
+ <message>
+ <source>%1 and %2</source>
+ <translation>%1 and %2</translation>
+ </message>
+ <message>
+ <source>%1 B</source>
+ <translation>%1 B</translation>
+ </message>
+ <message>
+ <source>%1 KB</source>
+ <translation>%1 KB</translation>
+ </message>
+ <message>
+ <source>%1 MB</source>
+ <translation>%1 MB</translation>
+ </message>
+ <message>
+ <source>%1 GB</source>
+ <translation>%1 GB</translation>
+ </message>
+ <message>
+ <source>Error: Specified data directory "%1" does not exist.</source>
+ <translation>Error: Specified data directory "%1" does not exist.</translation>
+ </message>
+ <message>
+ <source>Error: Cannot parse configuration file: %1.</source>
+ <translation>Error: Cannot parse configuration file: %1.</translation>
+ </message>
+ <message>
+ <source>Error: %1</source>
+ <translation>Error: %1</translation>
+ </message>
+ <message>
+ <source>%1 didn't yet exit safely...</source>
+ <translation>%1 didn't yet exit safely...</translation>
+ </message>
+ <message>
+ <source>unknown</source>
+ <translation>unknown</translation>
+ </message>
+</context>
<context>
<name>QRImageWidget</name>
- </context>
+ <message>
+ <source>&amp;Save Image...</source>
+ <translation>&amp;Save Image...</translation>
+ </message>
+ <message>
+ <source>&amp;Copy Image</source>
+ <translation>&amp;Copy Image</translation>
+ </message>
+ <message>
+ <source>Resulting URI too long, try to reduce the text for label / message.</source>
+ <translation>Resulting URI too long, try to reduce the text for label / message.</translation>
+ </message>
+ <message>
+ <source>Error encoding URI into QR Code.</source>
+ <translation>Error encoding URI into QR Code.</translation>
+ </message>
+ <message>
+ <source>QR code support not available.</source>
+ <translation>QR code support not available.</translation>
+ </message>
+ <message>
+ <source>Save QR Code</source>
+ <translation>Save QR Code</translation>
+ </message>
+ <message>
+ <source>PNG Image (*.png)</source>
+ <translation>PNG Image (*.png)</translation>
+ </message>
+</context>
<context>
<name>RPCConsole</name>
- </context>
+ <message>
+ <source>N/A</source>
+ <translation>N/A</translation>
+ </message>
+ <message>
+ <source>Client version</source>
+ <translation>Client version</translation>
+ </message>
+ <message>
+ <source>&amp;Information</source>
+ <translation>&amp;Information</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
+ <message>
+ <source>Using BerkeleyDB version</source>
+ <translation>Using BerkeleyDB version</translation>
+ </message>
+ <message>
+ <source>Datadir</source>
+ <translation>Datadir</translation>
+ </message>
+ <message>
+ <source>To specify a non-default location of the data directory use the '%1' option.</source>
+ <translation>To specify a non-default location of the data directory use the '%1' option.</translation>
+ </message>
+ <message>
+ <source>Blocksdir</source>
+ <translation>Blocksdir</translation>
+ </message>
+ <message>
+ <source>To specify a non-default location of the blocks directory use the '%1' option.</source>
+ <translation>To specify a non-default location of the blocks directory use the '%1' option.</translation>
+ </message>
+ <message>
+ <source>Startup time</source>
+ <translation>Startup time</translation>
+ </message>
+ <message>
+ <source>Network</source>
+ <translation>Network</translation>
+ </message>
+ <message>
+ <source>Name</source>
+ <translation>Name</translation>
+ </message>
+ <message>
+ <source>Number of connections</source>
+ <translation>Number of connections</translation>
+ </message>
+ <message>
+ <source>Block chain</source>
+ <translation>Block chain</translation>
+ </message>
+ <message>
+ <source>Memory Pool</source>
+ <translation>Memory Pool</translation>
+ </message>
+ <message>
+ <source>Current number of transactions</source>
+ <translation>Current number of transactions</translation>
+ </message>
+ <message>
+ <source>Memory usage</source>
+ <translation>Memory usage</translation>
+ </message>
+ <message>
+ <source>Wallet: </source>
+ <translation>Wallet: </translation>
+ </message>
+ <message>
+ <source>(none)</source>
+ <translation>(none)</translation>
+ </message>
+ <message>
+ <source>&amp;Reset</source>
+ <translation>&amp;Reset</translation>
+ </message>
+ <message>
+ <source>Received</source>
+ <translation>Received</translation>
+ </message>
+ <message>
+ <source>Sent</source>
+ <translation>Sent</translation>
+ </message>
+ <message>
+ <source>&amp;Peers</source>
+ <translation>&amp;Peers</translation>
+ </message>
+ <message>
+ <source>Banned peers</source>
+ <translation>Banned peers</translation>
+ </message>
+ <message>
+ <source>Select a peer to view detailed information.</source>
+ <translation>Select a peer to view detailed information.</translation>
+ </message>
+ <message>
+ <source>Direction</source>
+ <translation>Direction</translation>
+ </message>
+ <message>
+ <source>Version</source>
+ <translation>Version</translation>
+ </message>
+ <message>
+ <source>Starting Block</source>
+ <translation>Starting Block</translation>
+ </message>
+ <message>
+ <source>Synced Headers</source>
+ <translation>Synced Headers</translation>
+ </message>
+ <message>
+ <source>Synced Blocks</source>
+ <translation>Synced Blocks</translation>
+ </message>
+ <message>
+ <source>The mapped Autonomous System used for diversifying peer selection.</source>
+ <translation>The mapped Autonomous System used for diversifying peer selection.</translation>
+ </message>
+ <message>
+ <source>Mapped AS</source>
+ <translation>Mapped AS</translation>
+ </message>
+ <message>
+ <source>User Agent</source>
+ <translation>User Agent</translation>
+ </message>
+ <message>
+ <source>Node window</source>
+ <translation>Node window</translation>
+ </message>
+ <message>
+ <source>Open the %1 debug log file from the current data directory. This can take a few seconds for large log files.</source>
+ <translation>Open the %1 debug log file from the current data directory. This can take a few seconds for large log files.</translation>
+ </message>
+ <message>
+ <source>Decrease font size</source>
+ <translation>Decrease font size</translation>
+ </message>
+ <message>
+ <source>Increase font size</source>
+ <translation>Increase font size</translation>
+ </message>
+ <message>
+ <source>Services</source>
+ <translation>Services</translation>
+ </message>
+ <message>
+ <source>Connection Time</source>
+ <translation>Connection Time</translation>
+ </message>
+ <message>
+ <source>Last Send</source>
+ <translation>Last Send</translation>
+ </message>
+ <message>
+ <source>Last Receive</source>
+ <translation>Last Receive</translation>
+ </message>
+ <message>
+ <source>Ping Time</source>
+ <translation>Ping Time</translation>
+ </message>
+ <message>
+ <source>The duration of a currently outstanding ping.</source>
+ <translation>The duration of a currently outstanding ping.</translation>
+ </message>
+ <message>
+ <source>Ping Wait</source>
+ <translation>Ping Wait</translation>
+ </message>
+ <message>
+ <source>Min Ping</source>
+ <translation>Min Ping</translation>
+ </message>
+ <message>
+ <source>Time Offset</source>
+ <translation>Time Offset</translation>
+ </message>
+ <message>
+ <source>Last block time</source>
+ <translation>Last block time</translation>
+ </message>
+ <message>
+ <source>&amp;Open</source>
+ <translation>&amp;Open</translation>
+ </message>
+ <message>
+ <source>&amp;Console</source>
+ <translation>&amp;Console</translation>
+ </message>
+ <message>
+ <source>&amp;Network Traffic</source>
+ <translation>&amp;Network Traffic</translation>
+ </message>
+ <message>
+ <source>Totals</source>
+ <translation>Totals</translation>
+ </message>
+ <message>
+ <source>In:</source>
+ <translation>In:</translation>
+ </message>
+ <message>
+ <source>Out:</source>
+ <translation>Out:</translation>
+ </message>
+ <message>
+ <source>Debug log file</source>
+ <translation>Debug log file</translation>
+ </message>
+ <message>
+ <source>Clear console</source>
+ <translation>Clear console</translation>
+ </message>
+ <message>
+ <source>1 &amp;hour</source>
+ <translation>1 &amp;hour</translation>
+ </message>
+ <message>
+ <source>1 &amp;day</source>
+ <translation>1 &amp;day</translation>
+ </message>
+ <message>
+ <source>1 &amp;week</source>
+ <translation>1 &amp;week</translation>
+ </message>
+ <message>
+ <source>1 &amp;year</source>
+ <translation>1 &amp;year</translation>
+ </message>
+ <message>
+ <source>&amp;Disconnect</source>
+ <translation>&amp;Disconnect</translation>
+ </message>
+ <message>
+ <source>Ban for</source>
+ <translation>Ban for</translation>
+ </message>
+ <message>
+ <source>&amp;Unban</source>
+ <translation>&amp;Unban</translation>
+ </message>
+ <message>
+ <source>Welcome to the %1 RPC console.</source>
+ <translation>Welcome to the %1 RPC console.</translation>
+ </message>
+ <message>
+ <source>Use up and down arrows to navigate history, and %1 to clear screen.</source>
+ <translation>Use up and down arrows to navigate history, and %1 to clear screen.</translation>
+ </message>
+ <message>
+ <source>Type %1 for an overview of available commands.</source>
+ <translation>Type %1 for an overview of available commands.</translation>
+ </message>
+ <message>
+ <source>For more information on using this console type %1.</source>
+ <translation>For more information on using this console type %1.</translation>
+ </message>
+ <message>
+ <source>WARNING: 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.</source>
+ <translation>WARNING: 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.</translation>
+ </message>
+ <message>
+ <source>Network activity disabled</source>
+ <translation>Network activity disabled</translation>
+ </message>
+ <message>
+ <source>Executing command without any wallet</source>
+ <translation>Executing command without any wallet</translation>
+ </message>
+ <message>
+ <source>Executing command using "%1" wallet</source>
+ <translation>Executing command using "%1" wallet</translation>
+ </message>
+ <message>
+ <source>(node id: %1)</source>
+ <translation>(node id: %1)</translation>
+ </message>
+ <message>
+ <source>via %1</source>
+ <translation>via %1</translation>
+ </message>
+ <message>
+ <source>never</source>
+ <translation>never</translation>
+ </message>
+ <message>
+ <source>Inbound</source>
+ <translation>Inbound</translation>
+ </message>
+ <message>
+ <source>Outbound</source>
+ <translation>Outbound</translation>
+ </message>
+ <message>
+ <source>Unknown</source>
+ <translation>Unknown</translation>
+ </message>
+</context>
<context>
<name>ReceiveCoinsDialog</name>
+ <message>
+ <source>&amp;Amount:</source>
+ <translation>&amp;Amount:</translation>
+ </message>
+ <message>
+ <source>&amp;Label:</source>
+ <translation>&amp;Label:</translation>
+ </message>
+ <message>
+ <source>&amp;Message:</source>
+ <translation>&amp;Message:</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>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.</translation>
+ </message>
+ <message>
+ <source>An optional label to associate with the new receiving address.</source>
+ <translation>An optional label to associate with the new receiving address.</translation>
+ </message>
+ <message>
+ <source>Use this form to request payments. All fields are &lt;b&gt;optional&lt;/b&gt;.</source>
+ <translation>Use this form to request payments. All fields are &lt;b&gt;optional&lt;/b&gt;.</translation>
+ </message>
+ <message>
+ <source>An optional amount to request. Leave this empty or zero to not request a specific amount.</source>
+ <translation>An optional amount to request. Leave this empty or zero to not request a specific amount.</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>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.</translation>
+ </message>
+ <message>
+ <source>An optional message that is attached to the payment request and may be displayed to the sender.</source>
+ <translation>An optional message that is attached to the payment request and may be displayed to the sender.</translation>
+ </message>
+ <message>
+ <source>&amp;Create new receiving address</source>
+ <translation>&amp;Create new receiving address</translation>
+ </message>
+ <message>
+ <source>Clear all fields of the form.</source>
+ <translation>Clear all fields of the form.</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>Clear</translation>
+ </message>
+ <message>
+ <source>Native segwit addresses (aka Bech32 or BIP-173) reduce your transaction fees later on and offer better protection against typos, but old wallets don't support them. When unchecked, an address compatible with older wallets will be created instead.</source>
+ <translation>Native segwit addresses (aka Bech32 or BIP-173) reduce your transaction fees later on and offer better protection against typos, but old wallets don't support them. When unchecked, an address compatible with older wallets will be created instead.</translation>
+ </message>
+ <message>
+ <source>Generate native segwit (Bech32) address</source>
+ <translation>Generate native segwit (Bech32) address</translation>
+ </message>
+ <message>
+ <source>Requested payments history</source>
+ <translation>Requested payments history</translation>
+ </message>
+ <message>
+ <source>Show the selected request (does the same as double clicking an entry)</source>
+ <translation>Show the selected request (does the same as double clicking an entry)</translation>
+ </message>
+ <message>
+ <source>Show</source>
+ <translation>Show</translation>
+ </message>
+ <message>
+ <source>Remove the selected entries from the list</source>
+ <translation>Remove the selected entries from the list</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Remove</translation>
+ </message>
+ <message>
+ <source>Copy URI</source>
+ <translation>Copy URI</translation>
+ </message>
+ <message>
+ <source>Copy label</source>
+ <translation>Copy label</translation>
+ </message>
+ <message>
+ <source>Copy message</source>
+ <translation>Copy message</translation>
+ </message>
+ <message>
+ <source>Copy amount</source>
+ <translation>Copy amount</translation>
+ </message>
+ <message>
+ <source>Could not unlock wallet.</source>
+ <translation>Could not unlock wallet.</translation>
+ </message>
</context>
<context>
<name>ReceiveRequestDialog</name>
<message>
+ <source>Amount:</source>
+ <translation>Amount:</translation>
+ </message>
+ <message>
+ <source>Message:</source>
+ <translation>Message:</translation>
+ </message>
+ <message>
<source>Wallet:</source>
<translation>dompet</translation>
</message>
<message>
+ <source>Copy &amp;URI</source>
+ <translation>Copy &amp;URI</translation>
+ </message>
+ <message>
<source>Copy &amp;Address</source>
<translation>&amp;Salin Alamat</translation>
</message>
- </context>
+ <message>
+ <source>&amp;Save Image...</source>
+ <translation>&amp;Save Image...</translation>
+ </message>
+ <message>
+ <source>Request payment to %1</source>
+ <translation>Request payment to %1</translation>
+ </message>
+ <message>
+ <source>Payment information</source>
+ <translation>Payment information</translation>
+ </message>
+</context>
<context>
<name>RecentRequestsTableModel</name>
<message>
+ <source>Date</source>
+ <translation>Date</translation>
+ </message>
+ <message>
<source>Label</source>
<translation>Label</translation>
</message>
<message>
+ <source>Message</source>
+ <translation>Message</translation>
+ </message>
+ <message>
<source>(no label)</source>
<translation>(tiada label)</translation>
</message>
- </context>
+ <message>
+ <source>(no message)</source>
+ <translation>(no message)</translation>
+ </message>
+ <message>
+ <source>(no amount requested)</source>
+ <translation>(no amount requested)</translation>
+ </message>
+ <message>
+ <source>Requested</source>
+ <translation>Requested</translation>
+ </message>
+</context>
<context>
<name>SendCoinsDialog</name>
<message>
+ <source>Send Coins</source>
+ <translation>Send Coins</translation>
+ </message>
+ <message>
+ <source>Coin Control Features</source>
+ <translation>Coin Control Features</translation>
+ </message>
+ <message>
+ <source>Inputs...</source>
+ <translation>Inputs...</translation>
+ </message>
+ <message>
+ <source>automatically selected</source>
+ <translation>automatically selected</translation>
+ </message>
+ <message>
+ <source>Insufficient funds!</source>
+ <translation>Insufficient funds!</translation>
+ </message>
+ <message>
+ <source>Quantity:</source>
+ <translation>Quantity:</translation>
+ </message>
+ <message>
+ <source>Bytes:</source>
+ <translation>Bytes:</translation>
+ </message>
+ <message>
+ <source>Amount:</source>
+ <translation>Amount:</translation>
+ </message>
+ <message>
+ <source>Fee:</source>
+ <translation>Fee:</translation>
+ </message>
+ <message>
+ <source>After Fee:</source>
+ <translation>After Fee:</translation>
+ </message>
+ <message>
+ <source>Change:</source>
+ <translation>Change:</translation>
+ </message>
+ <message>
+ <source>If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address.</source>
+ <translation>If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address.</translation>
+ </message>
+ <message>
+ <source>Custom change address</source>
+ <translation>Custom change address</translation>
+ </message>
+ <message>
+ <source>Transaction Fee:</source>
+ <translation>Transaction Fee:</translation>
+ </message>
+ <message>
+ <source>Choose...</source>
+ <translation>Choose...</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>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.</translation>
+ </message>
+ <message>
+ <source>Warning: Fee estimation is currently not possible.</source>
+ <translation>Warning: Fee estimation is currently not possible.</translation>
+ </message>
+ <message>
+ <source>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 of "100 satoshis per kB" for a transaction size of 500 bytes (half of 1 kB) would ultimately yield a fee of only 50 satoshis.</source>
+ <translation>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 of "100 satoshis per kB" for a transaction size of 500 bytes (half of 1 kB) would ultimately yield a fee of only 50 satoshis.</translation>
+ </message>
+ <message>
+ <source>per kilobyte</source>
+ <translation>per kilobyte</translation>
+ </message>
+ <message>
+ <source>Hide</source>
+ <translation>Hide</translation>
+ </message>
+ <message>
+ <source>Recommended:</source>
+ <translation>Recommended:</translation>
+ </message>
+ <message>
+ <source>Custom:</source>
+ <translation>Custom:</translation>
+ </message>
+ <message>
+ <source>(Smart fee not initialized yet. This usually takes a few blocks...)</source>
+ <translation>(Smart fee not initialized yet. This usually takes a few blocks...)</translation>
+ </message>
+ <message>
+ <source>Send to multiple recipients at once</source>
+ <translation>Send to multiple recipients at once</translation>
+ </message>
+ <message>
+ <source>Add &amp;Recipient</source>
+ <translation>Add &amp;Recipient</translation>
+ </message>
+ <message>
+ <source>Clear all fields of the form.</source>
+ <translation>Clear all fields of the form.</translation>
+ </message>
+ <message>
+ <source>Dust:</source>
+ <translation>Dust:</translation>
+ </message>
+ <message>
+ <source>Hide transaction fee settings</source>
+ <translation>Hide transaction fee settings</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>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.</translation>
+ </message>
+ <message>
+ <source>A too low fee might result in a never confirming transaction (read the tooltip)</source>
+ <translation>A too low fee might result in a never confirming transaction (read the tooltip)</translation>
+ </message>
+ <message>
+ <source>Confirmation time target:</source>
+ <translation>Confirmation time target:</translation>
+ </message>
+ <message>
+ <source>Enable Replace-By-Fee</source>
+ <translation>Enable Replace-By-Fee</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>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.</translation>
+ </message>
+ <message>
+ <source>Clear &amp;All</source>
+ <translation>Clear &amp;All</translation>
+ </message>
+ <message>
<source>Balance:</source>
<translation>Baki</translation>
</message>
<message>
+ <source>Confirm the send action</source>
+ <translation>Confirm the send action</translation>
+ </message>
+ <message>
+ <source>S&amp;end</source>
+ <translation>S&amp;end</translation>
+ </message>
+ <message>
+ <source>Copy quantity</source>
+ <translation>Copy quantity</translation>
+ </message>
+ <message>
+ <source>Copy amount</source>
+ <translation>Copy amount</translation>
+ </message>
+ <message>
+ <source>Copy fee</source>
+ <translation>Copy fee</translation>
+ </message>
+ <message>
+ <source>Copy after fee</source>
+ <translation>Copy after fee</translation>
+ </message>
+ <message>
+ <source>Copy bytes</source>
+ <translation>Copy bytes</translation>
+ </message>
+ <message>
+ <source>Copy dust</source>
+ <translation>Copy dust</translation>
+ </message>
+ <message>
+ <source>Copy change</source>
+ <translation>Copy change</translation>
+ </message>
+ <message>
+ <source>%1 (%2 blocks)</source>
+ <translation>%1 (%2 blocks)</translation>
+ </message>
+ <message>
+ <source>Cr&amp;eate Unsigned</source>
+ <translation>Cr&amp;eate Unsigned</translation>
+ </message>
+ <message>
+ <source>Creates a Partially Signed Bitcoin Transaction (PSBT) for use with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.</source>
+ <translation>Creates a Partially Signed Bitcoin Transaction (PSBT) for use with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.</translation>
+ </message>
+ <message>
+ <source> from wallet '%1'</source>
+ <translation> from wallet '%1'</translation>
+ </message>
+ <message>
+ <source>%1 to '%2'</source>
+ <translation>%1 to '%2'</translation>
+ </message>
+ <message>
+ <source>%1 to %2</source>
+ <translation>%1 to %2</translation>
+ </message>
+ <message>
+ <source>Do you want to draft this transaction?</source>
+ <translation>Do you want to draft this transaction?</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to send?</source>
+ <translation>Are you sure you want to send?</translation>
+ </message>
+ <message>
+ <source>or</source>
+ <translation>or</translation>
+ </message>
+ <message>
+ <source>You can increase the fee later (signals Replace-By-Fee, BIP-125).</source>
+ <translation>You can increase the fee later (signals Replace-By-Fee, BIP-125).</translation>
+ </message>
+ <message>
+ <source>Please, review your transaction.</source>
+ <translation>Please, review your transaction.</translation>
+ </message>
+ <message>
+ <source>Transaction fee</source>
+ <translation>Transaction fee</translation>
+ </message>
+ <message>
+ <source>Not signalling Replace-By-Fee, BIP-125.</source>
+ <translation>Not signalling Replace-By-Fee, BIP-125.</translation>
+ </message>
+ <message>
+ <source>Total Amount</source>
+ <translation>Total Amount</translation>
+ </message>
+ <message>
+ <source>To review recipient list click "Show Details..."</source>
+ <translation>To review recipient list click "Show Details..."</translation>
+ </message>
+ <message>
+ <source>Confirm send coins</source>
+ <translation>Confirm send coins</translation>
+ </message>
+ <message>
+ <source>Confirm transaction proposal</source>
+ <translation>Confirm transaction proposal</translation>
+ </message>
+ <message>
+ <source>Send</source>
+ <translation>Send</translation>
+ </message>
+ <message>
+ <source>Watch-only balance:</source>
+ <translation>Watch-only balance:</translation>
+ </message>
+ <message>
+ <source>The recipient address is not valid. Please recheck.</source>
+ <translation>The recipient address is not valid. Please recheck.</translation>
+ </message>
+ <message>
+ <source>The amount to pay must be larger than 0.</source>
+ <translation>The amount to pay must be larger than 0.</translation>
+ </message>
+ <message>
+ <source>The amount exceeds your balance.</source>
+ <translation>The amount exceeds your balance.</translation>
+ </message>
+ <message>
+ <source>The total exceeds your balance when the %1 transaction fee is included.</source>
+ <translation>The total exceeds your balance when the %1 transaction fee is included.</translation>
+ </message>
+ <message>
+ <source>Duplicate address found: addresses should only be used once each.</source>
+ <translation>Duplicate address found: addresses should only be used once each.</translation>
+ </message>
+ <message>
+ <source>Transaction creation failed!</source>
+ <translation>Transaction creation failed!</translation>
+ </message>
+ <message>
+ <source>A fee higher than %1 is considered an absurdly high fee.</source>
+ <translation>A fee higher than %1 is considered an absurdly high fee.</translation>
+ </message>
+ <message>
+ <source>Payment request expired.</source>
+ <translation>Payment request expired.</translation>
+ </message>
+ <message>
+ <source>Warning: Invalid Bitcoin address</source>
+ <translation>Warning: Invalid Bitcoin address</translation>
+ </message>
+ <message>
+ <source>Warning: Unknown change address</source>
+ <translation>Warning: Unknown change address</translation>
+ </message>
+ <message>
+ <source>Confirm custom change address</source>
+ <translation>Confirm custom change address</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>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?</translation>
+ </message>
+ <message>
<source>(no label)</source>
<translation>(tiada label)</translation>
</message>
</context>
<context>
<name>SendCoinsEntry</name>
- </context>
+ <message>
+ <source>A&amp;mount:</source>
+ <translation>A&amp;mount:</translation>
+ </message>
+ <message>
+ <source>Pay &amp;To:</source>
+ <translation>Pay &amp;To:</translation>
+ </message>
+ <message>
+ <source>&amp;Label:</source>
+ <translation>&amp;Label:</translation>
+ </message>
+ <message>
+ <source>Choose previously used address</source>
+ <translation>Choose previously used address</translation>
+ </message>
+ <message>
+ <source>The Bitcoin address to send the payment to</source>
+ <translation>The Bitcoin address to send the payment to</translation>
+ </message>
+ <message>
+ <source>Alt+A</source>
+ <translation>Alt+A</translation>
+ </message>
+ <message>
+ <source>Paste address from clipboard</source>
+ <translation>Paste address from clipboard</translation>
+ </message>
+ <message>
+ <source>Alt+P</source>
+ <translation>Alt+P</translation>
+ </message>
+ <message>
+ <source>Remove this entry</source>
+ <translation>Remove this entry</translation>
+ </message>
+ <message>
+ <source>The amount to send in the selected unit</source>
+ <translation>The amount to send in the selected unit</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>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.</translation>
+ </message>
+ <message>
+ <source>S&amp;ubtract fee from amount</source>
+ <translation>S&amp;ubtract fee from amount</translation>
+ </message>
+ <message>
+ <source>Use available balance</source>
+ <translation>Use available balance</translation>
+ </message>
+ <message>
+ <source>Message:</source>
+ <translation>Message:</translation>
+ </message>
+ <message>
+ <source>This is an unauthenticated payment request.</source>
+ <translation>This is an unauthenticated payment request.</translation>
+ </message>
+ <message>
+ <source>This is an authenticated payment request.</source>
+ <translation>This is an authenticated payment request.</translation>
+ </message>
+ <message>
+ <source>Enter a label for this address to add it to the list of used addresses</source>
+ <translation>Enter a label for this address to add it to the list of used addresses</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>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.</translation>
+ </message>
+ <message>
+ <source>Pay To:</source>
+ <translation>Pay To:</translation>
+ </message>
+ <message>
+ <source>Memo:</source>
+ <translation>Memo:</translation>
+ </message>
+</context>
<context>
<name>ShutdownWindow</name>
- </context>
+ <message>
+ <source>%1 is shutting down...</source>
+ <translation>%1 is shutting down...</translation>
+ </message>
+ <message>
+ <source>Do not shut down the computer until this window disappears.</source>
+ <translation>Do not shut down the computer until this window disappears.</translation>
+ </message>
+</context>
<context>
<name>SignVerifyMessageDialog</name>
- </context>
+ <message>
+ <source>Signatures - Sign / Verify a Message</source>
+ <translation>Signatures - Sign / Verify a Message</translation>
+ </message>
+ <message>
+ <source>&amp;Sign Message</source>
+ <translation>&amp;Sign Message</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>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.</translation>
+ </message>
+ <message>
+ <source>The Bitcoin address to sign the message with</source>
+ <translation>The Bitcoin address to sign the message with</translation>
+ </message>
+ <message>
+ <source>Choose previously used address</source>
+ <translation>Choose previously used address</translation>
+ </message>
+ <message>
+ <source>Alt+A</source>
+ <translation>Alt+A</translation>
+ </message>
+ <message>
+ <source>Paste address from clipboard</source>
+ <translation>Paste address from clipboard</translation>
+ </message>
+ <message>
+ <source>Alt+P</source>
+ <translation>Alt+P</translation>
+ </message>
+ <message>
+ <source>Enter the message you want to sign here</source>
+ <translation>Enter the message you want to sign here</translation>
+ </message>
+ <message>
+ <source>Signature</source>
+ <translation>Signature</translation>
+ </message>
+ <message>
+ <source>Copy the current signature to the system clipboard</source>
+ <translation>Copy the current signature to the system clipboard</translation>
+ </message>
+ <message>
+ <source>Sign the message to prove you own this Bitcoin address</source>
+ <translation>Sign the message to prove you own this Bitcoin address</translation>
+ </message>
+ <message>
+ <source>Sign &amp;Message</source>
+ <translation>Sign &amp;Message</translation>
+ </message>
+ <message>
+ <source>Reset all sign message fields</source>
+ <translation>Reset all sign message fields</translation>
+ </message>
+ <message>
+ <source>Clear &amp;All</source>
+ <translation>Clear &amp;All</translation>
+ </message>
+ <message>
+ <source>&amp;Verify Message</source>
+ <translation>&amp;Verify Message</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>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!</translation>
+ </message>
+ <message>
+ <source>The Bitcoin address the message was signed with</source>
+ <translation>The Bitcoin address the message was signed with</translation>
+ </message>
+ <message>
+ <source>The signed message to verify</source>
+ <translation>The signed message to verify</translation>
+ </message>
+ <message>
+ <source>The signature given when the message was signed</source>
+ <translation>The signature given when the message was signed</translation>
+ </message>
+ <message>
+ <source>Verify the message to ensure it was signed with the specified Bitcoin address</source>
+ <translation>Verify the message to ensure it was signed with the specified Bitcoin address</translation>
+ </message>
+ <message>
+ <source>Verify &amp;Message</source>
+ <translation>Verify &amp;Message</translation>
+ </message>
+ <message>
+ <source>Reset all verify message fields</source>
+ <translation>Reset all verify message fields</translation>
+ </message>
+ <message>
+ <source>Click "Sign Message" to generate signature</source>
+ <translation>Click "Sign Message" to generate signature</translation>
+ </message>
+ <message>
+ <source>The entered address is invalid.</source>
+ <translation>The entered address is invalid.</translation>
+ </message>
+ <message>
+ <source>Please check the address and try again.</source>
+ <translation>Please check the address and try again.</translation>
+ </message>
+ <message>
+ <source>The entered address does not refer to a key.</source>
+ <translation>The entered address does not refer to a key.</translation>
+ </message>
+ <message>
+ <source>Wallet unlock was cancelled.</source>
+ <translation>Wallet unlock was cancelled.</translation>
+ </message>
+ <message>
+ <source>No error</source>
+ <translation>No error</translation>
+ </message>
+ <message>
+ <source>Private key for the entered address is not available.</source>
+ <translation>Private key for the entered address is not available.</translation>
+ </message>
+ <message>
+ <source>Message signing failed.</source>
+ <translation>Message signing failed.</translation>
+ </message>
+ <message>
+ <source>Message signed.</source>
+ <translation>Message signed.</translation>
+ </message>
+ <message>
+ <source>The signature could not be decoded.</source>
+ <translation>The signature could not be decoded.</translation>
+ </message>
+ <message>
+ <source>Please check the signature and try again.</source>
+ <translation>Please check the signature and try again.</translation>
+ </message>
+ <message>
+ <source>The signature did not match the message digest.</source>
+ <translation>The signature did not match the message digest.</translation>
+ </message>
+ <message>
+ <source>Message verification failed.</source>
+ <translation>Message verification failed.</translation>
+ </message>
+ <message>
+ <source>Message verified.</source>
+ <translation>Message verified.</translation>
+ </message>
+</context>
<context>
<name>TrafficGraphWidget</name>
- </context>
+ <message>
+ <source>KB/s</source>
+ <translation>KB/s</translation>
+ </message>
+</context>
<context>
<name>TransactionDesc</name>
<message>
+ <source>Open until %1</source>
+ <translation>Open until %1</translation>
+ </message>
+ <message>
+ <source>conflicted with a transaction with %1 confirmations</source>
+ <translation>conflicted with a transaction with %1 confirmations</translation>
+ </message>
+ <message>
+ <source>0/unconfirmed, %1</source>
+ <translation>0/unconfirmed, %1</translation>
+ </message>
+ <message>
+ <source>in memory pool</source>
+ <translation>in memory pool</translation>
+ </message>
+ <message>
+ <source>not in memory pool</source>
+ <translation>not in memory pool</translation>
+ </message>
+ <message>
+ <source>abandoned</source>
+ <translation>abandoned</translation>
+ </message>
+ <message>
+ <source>%1/unconfirmed</source>
+ <translation>%1/unconfirmed</translation>
+ </message>
+ <message>
+ <source>%1 confirmations</source>
+ <translation>%1 confirmations</translation>
+ </message>
+ <message>
+ <source>Status</source>
+ <translation>Status</translation>
+ </message>
+ <message>
+ <source>Date</source>
+ <translation>Date</translation>
+ </message>
+ <message>
+ <source>Source</source>
+ <translation>Source</translation>
+ </message>
+ <message>
+ <source>Generated</source>
+ <translation>Generated</translation>
+ </message>
+ <message>
+ <source>From</source>
+ <translation>From</translation>
+ </message>
+ <message>
+ <source>unknown</source>
+ <translation>unknown</translation>
+ </message>
+ <message>
+ <source>To</source>
+ <translation>To</translation>
+ </message>
+ <message>
+ <source>own address</source>
+ <translation>own address</translation>
+ </message>
+ <message>
+ <source>watch-only</source>
+ <translation>watch-only</translation>
+ </message>
+ <message>
+ <source>label</source>
+ <translation>label</translation>
+ </message>
+ <message>
+ <source>Credit</source>
+ <translation>Credit</translation>
+ </message>
+ <message>
+ <source>not accepted</source>
+ <translation>not accepted</translation>
+ </message>
+ <message>
+ <source>Debit</source>
+ <translation>Debit</translation>
+ </message>
+ <message>
+ <source>Total debit</source>
+ <translation>Total debit</translation>
+ </message>
+ <message>
+ <source>Total credit</source>
+ <translation>Total credit</translation>
+ </message>
+ <message>
+ <source>Transaction fee</source>
+ <translation>Transaction fee</translation>
+ </message>
+ <message>
+ <source>Net amount</source>
+ <translation>Net amount</translation>
+ </message>
+ <message>
+ <source>Message</source>
+ <translation>Message</translation>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation>Comment</translation>
+ </message>
+ <message>
+ <source>Transaction ID</source>
+ <translation>Transaction ID</translation>
+ </message>
+ <message>
+ <source>Transaction total size</source>
+ <translation>Transaction total size</translation>
+ </message>
+ <message>
+ <source>Transaction virtual size</source>
+ <translation>Transaction virtual size</translation>
+ </message>
+ <message>
+ <source>Output index</source>
+ <translation>Output index</translation>
+ </message>
+ <message>
+ <source> (Certificate was not verified)</source>
+ <translation> (Certificate was not verified)</translation>
+ </message>
+ <message>
+ <source>Merchant</source>
+ <translation>Merchant</translation>
+ </message>
+ <message>
+ <source>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>
+ <translation>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.</translation>
+ </message>
+ <message>
+ <source>Debug information</source>
+ <translation>Debug information</translation>
+ </message>
+ <message>
+ <source>Transaction</source>
+ <translation>Transaction</translation>
+ </message>
+ <message>
+ <source>Inputs</source>
+ <translation>Inputs</translation>
+ </message>
+ <message>
<source>Amount</source>
<translation>Amount</translation>
</message>
- </context>
+ <message>
+ <source>true</source>
+ <translation>true</translation>
+ </message>
+ <message>
+ <source>false</source>
+ <translation>false</translation>
+ </message>
+</context>
<context>
<name>TransactionDescDialog</name>
- </context>
+ <message>
+ <source>This pane shows a detailed description of the transaction</source>
+ <translation>This pane shows a detailed description of the transaction</translation>
+ </message>
+ <message>
+ <source>Details for %1</source>
+ <translation>Details for %1</translation>
+ </message>
+</context>
<context>
<name>TransactionTableModel</name>
<message>
+ <source>Date</source>
+ <translation>Date</translation>
+ </message>
+ <message>
+ <source>Type</source>
+ <translation>Type</translation>
+ </message>
+ <message>
<source>Label</source>
<translation>Label</translation>
</message>
<message>
+ <source>Open until %1</source>
+ <translation>Open until %1</translation>
+ </message>
+ <message>
+ <source>Unconfirmed</source>
+ <translation>Unconfirmed</translation>
+ </message>
+ <message>
+ <source>Abandoned</source>
+ <translation>Abandoned</translation>
+ </message>
+ <message>
+ <source>Confirming (%1 of %2 recommended confirmations)</source>
+ <translation>Confirming (%1 of %2 recommended confirmations)</translation>
+ </message>
+ <message>
+ <source>Confirmed (%1 confirmations)</source>
+ <translation>Confirmed (%1 confirmations)</translation>
+ </message>
+ <message>
+ <source>Conflicted</source>
+ <translation>Conflicted</translation>
+ </message>
+ <message>
+ <source>Immature (%1 confirmations, will be available after %2)</source>
+ <translation>Immature (%1 confirmations, will be available after %2)</translation>
+ </message>
+ <message>
+ <source>Generated but not accepted</source>
+ <translation>Generated but not accepted</translation>
+ </message>
+ <message>
+ <source>Received with</source>
+ <translation>Received with</translation>
+ </message>
+ <message>
+ <source>Received from</source>
+ <translation>Received from</translation>
+ </message>
+ <message>
+ <source>Sent to</source>
+ <translation>Sent to</translation>
+ </message>
+ <message>
+ <source>Payment to yourself</source>
+ <translation>Payment to yourself</translation>
+ </message>
+ <message>
+ <source>Mined</source>
+ <translation>Mined</translation>
+ </message>
+ <message>
+ <source>watch-only</source>
+ <translation>watch-only</translation>
+ </message>
+ <message>
+ <source>(n/a)</source>
+ <translation>(n/a)</translation>
+ </message>
+ <message>
<source>(no label)</source>
<translation>(tiada label)</translation>
</message>
- </context>
+ <message>
+ <source>Transaction status. Hover over this field to show number of confirmations.</source>
+ <translation>Transaction status. Hover over this field to show number of confirmations.</translation>
+ </message>
+ <message>
+ <source>Date and time that the transaction was received.</source>
+ <translation>Date and time that the transaction was received.</translation>
+ </message>
+ <message>
+ <source>Type of transaction.</source>
+ <translation>Type of transaction.</translation>
+ </message>
+ <message>
+ <source>Whether or not a watch-only address is involved in this transaction.</source>
+ <translation>Whether or not a watch-only address is involved in this transaction.</translation>
+ </message>
+ <message>
+ <source>User-defined intent/purpose of the transaction.</source>
+ <translation>User-defined intent/purpose of the transaction.</translation>
+ </message>
+ <message>
+ <source>Amount removed from or added to balance.</source>
+ <translation>Amount removed from or added to balance.</translation>
+ </message>
+</context>
<context>
<name>TransactionView</name>
<message>
+ <source>All</source>
+ <translation>All</translation>
+ </message>
+ <message>
+ <source>Today</source>
+ <translation>Today</translation>
+ </message>
+ <message>
+ <source>This week</source>
+ <translation>This week</translation>
+ </message>
+ <message>
+ <source>This month</source>
+ <translation>This month</translation>
+ </message>
+ <message>
+ <source>Last month</source>
+ <translation>Last month</translation>
+ </message>
+ <message>
+ <source>This year</source>
+ <translation>This year</translation>
+ </message>
+ <message>
+ <source>Range...</source>
+ <translation>Range...</translation>
+ </message>
+ <message>
+ <source>Received with</source>
+ <translation>Received with</translation>
+ </message>
+ <message>
+ <source>Sent to</source>
+ <translation>Sent to</translation>
+ </message>
+ <message>
+ <source>To yourself</source>
+ <translation>To yourself</translation>
+ </message>
+ <message>
+ <source>Mined</source>
+ <translation>Mined</translation>
+ </message>
+ <message>
+ <source>Other</source>
+ <translation>Other</translation>
+ </message>
+ <message>
+ <source>Enter address, transaction id, or label to search</source>
+ <translation>Enter address, transaction id, or label to search</translation>
+ </message>
+ <message>
+ <source>Min amount</source>
+ <translation>Min amount</translation>
+ </message>
+ <message>
+ <source>Abandon transaction</source>
+ <translation>Abandon transaction</translation>
+ </message>
+ <message>
+ <source>Increase transaction fee</source>
+ <translation>Increase transaction fee</translation>
+ </message>
+ <message>
+ <source>Copy address</source>
+ <translation>Copy address</translation>
+ </message>
+ <message>
+ <source>Copy label</source>
+ <translation>Copy label</translation>
+ </message>
+ <message>
+ <source>Copy amount</source>
+ <translation>Copy amount</translation>
+ </message>
+ <message>
+ <source>Copy transaction ID</source>
+ <translation>Copy transaction ID</translation>
+ </message>
+ <message>
+ <source>Copy raw transaction</source>
+ <translation>Copy raw transaction</translation>
+ </message>
+ <message>
+ <source>Copy full transaction details</source>
+ <translation>Copy full transaction details</translation>
+ </message>
+ <message>
+ <source>Edit label</source>
+ <translation>Edit label</translation>
+ </message>
+ <message>
+ <source>Show transaction details</source>
+ <translation>Show transaction details</translation>
+ </message>
+ <message>
+ <source>Export Transaction History</source>
+ <translation>Export Transaction History</translation>
+ </message>
+ <message>
<source>Comma separated file (*.csv)</source>
<translation>Fail dibahagi oleh koma(*.csv)</translation>
</message>
<message>
+ <source>Confirmed</source>
+ <translation>Confirmed</translation>
+ </message>
+ <message>
+ <source>Watch-only</source>
+ <translation>Watch-only</translation>
+ </message>
+ <message>
+ <source>Date</source>
+ <translation>Date</translation>
+ </message>
+ <message>
+ <source>Type</source>
+ <translation>Type</translation>
+ </message>
+ <message>
<source>Label</source>
<translation>Label</translation>
</message>
@@ -603,26 +3059,118 @@ Alihkan fail data ke dalam tab semasa</translation>
<translation>Alamat</translation>
</message>
<message>
+ <source>ID</source>
+ <translation>ID</translation>
+ </message>
+ <message>
<source>Exporting Failed</source>
<translation>Mengeksport Gagal</translation>
</message>
- </context>
+ <message>
+ <source>There was an error trying to save the transaction history to %1.</source>
+ <translation>There was an error trying to save the transaction history to %1.</translation>
+ </message>
+ <message>
+ <source>Exporting Successful</source>
+ <translation>Exporting Successful</translation>
+ </message>
+ <message>
+ <source>The transaction history was successfully saved to %1.</source>
+ <translation>The transaction history was successfully saved to %1.</translation>
+ </message>
+ <message>
+ <source>Range:</source>
+ <translation>Range:</translation>
+ </message>
+ <message>
+ <source>to</source>
+ <translation>to</translation>
+ </message>
+</context>
<context>
<name>UnitDisplayStatusBarControl</name>
- </context>
+ <message>
+ <source>Unit to show amounts in. Click to select another unit.</source>
+ <translation>Unit to show amounts in. Click to select another unit.</translation>
+ </message>
+</context>
<context>
<name>WalletController</name>
<message>
<source>Close wallet</source>
<translation>Tutup Wallet</translation>
</message>
+ <message>
+ <source>Are you sure you wish to close the wallet &lt;i&gt;%1&lt;/i&gt;?</source>
+ <translation>Are you sure you wish to close the wallet &lt;i&gt;%1&lt;/i&gt;?</translation>
+ </message>
+ <message>
+ <source>Closing the wallet for too long can result in having to resync the entire chain if pruning is enabled.</source>
+ <translation>Closing the wallet for too long can result in having to resync the entire chain if pruning is enabled.</translation>
+ </message>
</context>
<context>
<name>WalletFrame</name>
- </context>
+ <message>
+ <source>Create a new wallet</source>
+ <translation>Create a new wallet</translation>
+ </message>
+</context>
<context>
<name>WalletModel</name>
<message>
+ <source>Send Coins</source>
+ <translation>Send Coins</translation>
+ </message>
+ <message>
+ <source>Fee bump error</source>
+ <translation>Fee bump error</translation>
+ </message>
+ <message>
+ <source>Increasing transaction fee failed</source>
+ <translation>Increasing transaction fee failed</translation>
+ </message>
+ <message>
+ <source>Do you want to increase the fee?</source>
+ <translation>Do you want to increase the fee?</translation>
+ </message>
+ <message>
+ <source>Do you want to draft a transaction with fee increase?</source>
+ <translation>Do you want to draft a transaction with fee increase?</translation>
+ </message>
+ <message>
+ <source>Current fee:</source>
+ <translation>Current fee:</translation>
+ </message>
+ <message>
+ <source>Increase:</source>
+ <translation>Increase:</translation>
+ </message>
+ <message>
+ <source>New fee:</source>
+ <translation>New fee:</translation>
+ </message>
+ <message>
+ <source>Confirm fee bump</source>
+ <translation>Confirm fee bump</translation>
+ </message>
+ <message>
+ <source>Can't draft transaction.</source>
+ <translation>Can't draft transaction.</translation>
+ </message>
+ <message>
+ <source>PSBT copied</source>
+ <translation>PSBT copied</translation>
+ </message>
+ <message>
+ <source>Can't sign transaction.</source>
+ <translation>Can't sign transaction.</translation>
+ </message>
+ <message>
+ <source>Could not commit transaction</source>
+ <translation>Could not commit transaction</translation>
+ </message>
+ <message>
<source>default wallet</source>
<translation>dompet lalai
</translation>
@@ -643,14 +3191,496 @@ Alihkan fail data ke dalam tab semasa</translation>
<source>Error</source>
<translation>Ralat</translation>
</message>
- </context>
+ <message>
+ <source>Backup Wallet</source>
+ <translation>Backup Wallet</translation>
+ </message>
+ <message>
+ <source>Wallet Data (*.dat)</source>
+ <translation>Wallet Data (*.dat)</translation>
+ </message>
+ <message>
+ <source>Backup Failed</source>
+ <translation>Backup Failed</translation>
+ </message>
+ <message>
+ <source>There was an error trying to save the wallet data to %1.</source>
+ <translation>There was an error trying to save the wallet data to %1.</translation>
+ </message>
+ <message>
+ <source>Backup Successful</source>
+ <translation>Backup Successful</translation>
+ </message>
+ <message>
+ <source>The wallet data was successfully saved to %1.</source>
+ <translation>The wallet data was successfully saved to %1.</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation>Cancel</translation>
+ </message>
+</context>
<context>
<name>bitcoin-core</name>
<message>
+ <source>Distributed under the MIT software license, see the accompanying file %s or %s</source>
+ <translation>Distributed under the MIT software license, see the accompanying file %s or %s</translation>
+ </message>
+ <message>
+ <source>Prune configured below the minimum of %d MiB. Please use a higher number.</source>
+ <translation>Prune configured below the minimum of %d MiB. Please use a higher number.</translation>
+ </message>
+ <message>
+ <source>Prune: last wallet synchronisation goes beyond pruned data. You need to -reindex (download the whole blockchain again in case of pruned node)</source>
+ <translation>Prune: last wallet synchronisation goes beyond pruned data. You need to -reindex (download the whole blockchain again in case of pruned node)</translation>
+ </message>
+ <message>
+ <source>Pruning blockstore...</source>
+ <translation>Pruning blockstore...</translation>
+ </message>
+ <message>
+ <source>Unable to start HTTP server. See debug log for details.</source>
+ <translation>Unable to start HTTP server. See debug log for details.</translation>
+ </message>
+ <message>
+ <source>The %s developers</source>
+ <translation>The %s developers</translation>
+ </message>
+ <message>
+ <source>Cannot obtain a lock on data directory %s. %s is probably already running.</source>
+ <translation>Cannot obtain a lock on data directory %s. %s is probably already running.</translation>
+ </message>
+ <message>
+ <source>Cannot provide specific connections and have addrman find outgoing connections at the same.</source>
+ <translation>Cannot provide specific connections and have addrman find outgoing connections at the same.</translation>
+ </message>
+ <message>
+ <source>Error reading %s! All keys read correctly, but transaction data or address book entries might be missing or incorrect.</source>
+ <translation>Error reading %s! All keys read correctly, but transaction data or address book entries might be missing or incorrect.</translation>
+ </message>
+ <message>
+ <source>Please check that your computer's date and time are correct! If your clock is wrong, %s will not work properly.</source>
+ <translation>Please check that your computer's date and time are correct! If your clock is wrong, %s will not work properly.</translation>
+ </message>
+ <message>
+ <source>Please contribute if you find %s useful. Visit %s for further information about the software.</source>
+ <translation>Please contribute if you find %s useful. Visit %s for further information about the software.</translation>
+ </message>
+ <message>
+ <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>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</translation>
+ </message>
+ <message>
+ <source>This is a pre-release test build - use at your own risk - do not use for mining or merchant applications</source>
+ <translation>This is a pre-release test build - use at your own risk - do not use for mining or merchant applications</translation>
+ </message>
+ <message>
+ <source>This is the transaction fee you may discard if change is smaller than dust at this level</source>
+ <translation>This is the transaction fee you may discard if change is smaller than dust at this level</translation>
+ </message>
+ <message>
+ <source>Unable to replay blocks. You will need to rebuild the database using -reindex-chainstate.</source>
+ <translation>Unable to replay blocks. You will need to rebuild the database using -reindex-chainstate.</translation>
+ </message>
+ <message>
+ <source>Unable to rewind the database to a pre-fork state. You will need to redownload the blockchain</source>
+ <translation>Unable to rewind the database to a pre-fork state. You will need to redownload the blockchain</translation>
+ </message>
+ <message>
+ <source>Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues.</source>
+ <translation>Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues.</translation>
+ </message>
+ <message>
+ <source>Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade.</source>
+ <translation>Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade.</translation>
+ </message>
+ <message>
+ <source>-maxmempool must be at least %d MB</source>
+ <translation>-maxmempool must be at least %d MB</translation>
+ </message>
+ <message>
+ <source>Cannot resolve -%s address: '%s'</source>
+ <translation>Cannot resolve -%s address: '%s'</translation>
+ </message>
+ <message>
+ <source>Change index out of range</source>
+ <translation>Change index out of range</translation>
+ </message>
+ <message>
+ <source>Config setting for %s only applied on %s network when in [%s] section.</source>
+ <translation>Config setting for %s only applied on %s network when in [%s] section.</translation>
+ </message>
+ <message>
+ <source>Copyright (C) %i-%i</source>
+ <translation>Copyright (C) %i-%i</translation>
+ </message>
+ <message>
+ <source>Corrupted block database detected</source>
+ <translation>Corrupted block database detected</translation>
+ </message>
+ <message>
+ <source>Could not find asmap file %s</source>
+ <translation>Could not find asmap file %s</translation>
+ </message>
+ <message>
+ <source>Could not parse asmap file %s</source>
+ <translation>Could not parse asmap file %s</translation>
+ </message>
+ <message>
+ <source>Do you want to rebuild the block database now?</source>
+ <translation>Do you want to rebuild the block database now?</translation>
+ </message>
+ <message>
+ <source>Error initializing block database</source>
+ <translation>Error initializing block database</translation>
+ </message>
+ <message>
+ <source>Error initializing wallet database environment %s!</source>
+ <translation>Error initializing wallet database environment %s!</translation>
+ </message>
+ <message>
+ <source>Error loading %s</source>
+ <translation>Error loading %s</translation>
+ </message>
+ <message>
+ <source>Error loading %s: Private keys can only be disabled during creation</source>
+ <translation>Error loading %s: Private keys can only be disabled during creation</translation>
+ </message>
+ <message>
+ <source>Error loading %s: Wallet corrupted</source>
+ <translation>Error loading %s: Wallet corrupted</translation>
+ </message>
+ <message>
+ <source>Error loading %s: Wallet requires newer version of %s</source>
+ <translation>Error loading %s: Wallet requires newer version of %s</translation>
+ </message>
+ <message>
+ <source>Error loading block database</source>
+ <translation>Error loading block database</translation>
+ </message>
+ <message>
+ <source>Error opening block database</source>
+ <translation>Error opening block database</translation>
+ </message>
+ <message>
+ <source>Failed to listen on any port. Use -listen=0 if you want this.</source>
+ <translation>Failed to listen on any port. Use -listen=0 if you want this.</translation>
+ </message>
+ <message>
+ <source>Failed to rescan the wallet during initialization</source>
+ <translation>Failed to rescan the wallet during initialization</translation>
+ </message>
+ <message>
+ <source>Importing...</source>
+ <translation>Importing...</translation>
+ </message>
+ <message>
+ <source>Incorrect or no genesis block found. Wrong datadir for network?</source>
+ <translation>Incorrect or no genesis block found. Wrong datadir for network?</translation>
+ </message>
+ <message>
+ <source>Initialization sanity check failed. %s is shutting down.</source>
+ <translation>Initialization sanity check failed. %s is shutting down.</translation>
+ </message>
+ <message>
+ <source>Invalid P2P permission: '%s'</source>
+ <translation>Invalid P2P permission: '%s'</translation>
+ </message>
+ <message>
+ <source>Invalid amount for -%s=&lt;amount&gt;: '%s'</source>
+ <translation>Invalid amount for -%s=&lt;amount&gt;: '%s'</translation>
+ </message>
+ <message>
+ <source>Invalid amount for -discardfee=&lt;amount&gt;: '%s'</source>
+ <translation>Invalid amount for -discardfee=&lt;amount&gt;: '%s'</translation>
+ </message>
+ <message>
+ <source>Invalid amount for -fallbackfee=&lt;amount&gt;: '%s'</source>
+ <translation>Invalid amount for -fallbackfee=&lt;amount&gt;: '%s'</translation>
+ </message>
+ <message>
+ <source>Specified blocks directory "%s" does not exist.</source>
+ <translation>Specified blocks directory "%s" does not exist.</translation>
+ </message>
+ <message>
+ <source>Unknown address type '%s'</source>
+ <translation>Unknown address type '%s'</translation>
+ </message>
+ <message>
+ <source>Unknown change type '%s'</source>
+ <translation>Unknown change type '%s'</translation>
+ </message>
+ <message>
+ <source>Upgrading txindex database</source>
+ <translation>Upgrading txindex database</translation>
+ </message>
+ <message>
+ <source>Loading P2P addresses...</source>
+ <translation>Loading P2P addresses...</translation>
+ </message>
+ <message>
+ <source>Loading banlist...</source>
+ <translation>Loading banlist...</translation>
+ </message>
+ <message>
+ <source>Not enough file descriptors available.</source>
+ <translation>Not enough file descriptors available.</translation>
+ </message>
+ <message>
+ <source>Prune cannot be configured with a negative value.</source>
+ <translation>Prune cannot be configured with a negative value.</translation>
+ </message>
+ <message>
+ <source>Prune mode is incompatible with -txindex.</source>
+ <translation>Prune mode is incompatible with -txindex.</translation>
+ </message>
+ <message>
+ <source>Replaying blocks...</source>
+ <translation>Replaying blocks...</translation>
+ </message>
+ <message>
+ <source>Rewinding blocks...</source>
+ <translation>Rewinding blocks...</translation>
+ </message>
+ <message>
+ <source>The source code is available from %s.</source>
+ <translation>The source code is available from %s.</translation>
+ </message>
+ <message>
+ <source>Transaction fee and change calculation failed</source>
+ <translation>Transaction fee and change calculation failed</translation>
+ </message>
+ <message>
+ <source>Unable to bind to %s on this computer. %s is probably already running.</source>
+ <translation>Unable to bind to %s on this computer. %s is probably already running.</translation>
+ </message>
+ <message>
+ <source>Unable to generate keys</source>
+ <translation>Unable to generate keys</translation>
+ </message>
+ <message>
+ <source>Unsupported logging category %s=%s.</source>
+ <translation>Unsupported logging category %s=%s.</translation>
+ </message>
+ <message>
+ <source>Upgrading UTXO database</source>
+ <translation>Upgrading UTXO database</translation>
+ </message>
+ <message>
+ <source>User Agent comment (%s) contains unsafe characters.</source>
+ <translation>User Agent comment (%s) contains unsafe characters.</translation>
+ </message>
+ <message>
+ <source>Verifying blocks...</source>
+ <translation>Verifying blocks...</translation>
+ </message>
+ <message>
+ <source>Wallet needed to be rewritten: restart %s to complete</source>
+ <translation>Wallet needed to be rewritten: restart %s to complete</translation>
+ </message>
+ <message>
+ <source>Error: Listening for incoming connections failed (listen returned error %s)</source>
+ <translation>Error: Listening for incoming connections failed (listen returned error %s)</translation>
+ </message>
+ <message>
+ <source>Invalid amount for -maxtxfee=&lt;amount&gt;: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions)</source>
+ <translation>Invalid amount for -maxtxfee=&lt;amount&gt;: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions)</translation>
+ </message>
+ <message>
+ <source>The transaction amount is too small to send after the fee has been deducted</source>
+ <translation>The transaction amount is too small to send after the fee has been deducted</translation>
+ </message>
+ <message>
+ <source>You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain</source>
+ <translation>You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain</translation>
+ </message>
+ <message>
+ <source>Error reading from database, shutting down.</source>
+ <translation>Error reading from database, shutting down.</translation>
+ </message>
+ <message>
+ <source>Error upgrading chainstate database</source>
+ <translation>Error upgrading chainstate database</translation>
+ </message>
+ <message>
+ <source>Error: Disk space is low for %s</source>
+ <translation>Error: Disk space is low for %s</translation>
+ </message>
+ <message>
+ <source>Invalid -onion address or hostname: '%s'</source>
+ <translation>Invalid -onion address or hostname: '%s'</translation>
+ </message>
+ <message>
+ <source>Invalid -proxy address or hostname: '%s'</source>
+ <translation>Invalid -proxy address or hostname: '%s'</translation>
+ </message>
+ <message>
+ <source>Invalid amount for -paytxfee=&lt;amount&gt;: '%s' (must be at least %s)</source>
+ <translation>Invalid amount for -paytxfee=&lt;amount&gt;: '%s' (must be at least %s)</translation>
+ </message>
+ <message>
+ <source>Invalid netmask specified in -whitelist: '%s'</source>
+ <translation>Invalid netmask specified in -whitelist: '%s'</translation>
+ </message>
+ <message>
+ <source>Need to specify a port with -whitebind: '%s'</source>
+ <translation>Need to specify a port with -whitebind: '%s'</translation>
+ </message>
+ <message>
+ <source>Prune mode is incompatible with -blockfilterindex.</source>
+ <translation>Prune mode is incompatible with -blockfilterindex.</translation>
+ </message>
+ <message>
+ <source>Reducing -maxconnections from %d to %d, because of system limitations.</source>
+ <translation>Reducing -maxconnections from %d to %d, because of system limitations.</translation>
+ </message>
+ <message>
+ <source>Section [%s] is not recognized.</source>
+ <translation>Section [%s] is not recognized.</translation>
+ </message>
+ <message>
+ <source>Signing transaction failed</source>
+ <translation>Signing transaction failed</translation>
+ </message>
+ <message>
+ <source>Specified -walletdir "%s" does not exist</source>
+ <translation>Specified -walletdir "%s" does not exist</translation>
+ </message>
+ <message>
+ <source>Specified -walletdir "%s" is a relative path</source>
+ <translation>Specified -walletdir "%s" is a relative path</translation>
+ </message>
+ <message>
+ <source>Specified -walletdir "%s" is not a directory</source>
+ <translation>Specified -walletdir "%s" is not a directory</translation>
+ </message>
+ <message>
+ <source>The specified config file %s does not exist
+</source>
+ <translation>The specified config file %s does not exist
+</translation>
+ </message>
+ <message>
+ <source>The transaction amount is too small to pay the fee</source>
+ <translation>The transaction amount is too small to pay the fee</translation>
+ </message>
+ <message>
+ <source>This is experimental software.</source>
+ <translation>This is experimental software.</translation>
+ </message>
+ <message>
+ <source>Transaction amount too small</source>
+ <translation>Transaction amount too small</translation>
+ </message>
+ <message>
+ <source>Transaction too large</source>
+ <translation>Transaction too large</translation>
+ </message>
+ <message>
+ <source>Unable to bind to %s on this computer (bind returned error %s)</source>
+ <translation>Unable to bind to %s on this computer (bind returned error %s)</translation>
+ </message>
+ <message>
+ <source>Unable to create the PID file '%s': %s</source>
+ <translation>Unable to create the PID file '%s': %s</translation>
+ </message>
+ <message>
+ <source>Unable to generate initial keys</source>
+ <translation>Unable to generate initial keys</translation>
+ </message>
+ <message>
+ <source>Unknown -blockfilterindex value %s.</source>
+ <translation>Unknown -blockfilterindex value %s.</translation>
+ </message>
+ <message>
+ <source>Verifying wallet(s)...</source>
+ <translation>Verifying wallet(s)...</translation>
+ </message>
+ <message>
+ <source>Warning: unknown new rules activated (versionbit %i)</source>
+ <translation>Warning: unknown new rules activated (versionbit %i)</translation>
+ </message>
+ <message>
+ <source>-maxtxfee is set very high! Fees this large could be paid on a single transaction.</source>
+ <translation>-maxtxfee is set very high! Fees this large could be paid on a single transaction.</translation>
+ </message>
+ <message>
+ <source>This is the transaction fee you may pay when fee estimates are not available.</source>
+ <translation>This is the transaction fee you may pay when fee estimates are not available.</translation>
+ </message>
+ <message>
+ <source>Total length of network version string (%i) exceeds maximum length (%i). Reduce the number or size of uacomments.</source>
+ <translation>Total length of network version string (%i) exceeds maximum length (%i). Reduce the number or size of uacomments.</translation>
+ </message>
+ <message>
+ <source>%s is set very high!</source>
+ <translation>%s is set very high!</translation>
+ </message>
+ <message>
+ <source>Starting network threads...</source>
+ <translation>Starting network threads...</translation>
+ </message>
+ <message>
+ <source>The wallet will avoid paying less than the minimum relay fee.</source>
+ <translation>The wallet will avoid paying less than the minimum relay fee.</translation>
+ </message>
+ <message>
+ <source>This is the minimum transaction fee you pay on every transaction.</source>
+ <translation>This is the minimum transaction fee you pay on every transaction.</translation>
+ </message>
+ <message>
+ <source>This is the transaction fee you will pay if you send a transaction.</source>
+ <translation>This is the transaction fee you will pay if you send a transaction.</translation>
+ </message>
+ <message>
+ <source>Transaction amounts must not be negative</source>
+ <translation>Transaction amounts must not be negative</translation>
+ </message>
+ <message>
+ <source>Transaction has too long of a mempool chain</source>
+ <translation>Transaction has too long of a mempool chain</translation>
+ </message>
+ <message>
+ <source>Transaction must have at least one recipient</source>
+ <translation>Transaction must have at least one recipient</translation>
+ </message>
+ <message>
+ <source>Unknown network specified in -onlynet: '%s'</source>
+ <translation>Unknown network specified in -onlynet: '%s'</translation>
+ </message>
+ <message>
+ <source>Insufficient funds</source>
+ <translation>Insufficient funds</translation>
+ </message>
+ <message>
+ <source>Fee estimation failed. Fallbackfee is disabled. Wait a few blocks or enable -fallbackfee.</source>
+ <translation>Fee estimation failed. Fallbackfee is disabled. Wait a few blocks or enable -fallbackfee.</translation>
+ </message>
+ <message>
+ <source>Warning: Private keys detected in wallet {%s} with disabled private keys</source>
+ <translation>Warning: Private keys detected in wallet {%s} with disabled private keys</translation>
+ </message>
+ <message>
+ <source>Cannot write to data directory '%s'; check permissions.</source>
+ <translation>Cannot write to data directory '%s'; check permissions.</translation>
+ </message>
+ <message>
+ <source>Loading block index...</source>
+ <translation>Loading block index...</translation>
+ </message>
+ <message>
<source>Loading wallet...</source>
<translation>Sedang baca wallet...</translation>
</message>
<message>
+ <source>Cannot downgrade wallet</source>
+ <translation>Cannot downgrade wallet</translation>
+ </message>
+ <message>
+ <source>Rescanning...</source>
+ <translation>Rescanning...</translation>
+ </message>
+ <message>
<source>Done loading</source>
<translation>Baca Selesai</translation>
</message>
diff --git a/src/qt/locale/bitcoin_nb.ts b/src/qt/locale/bitcoin_nb.ts
index 82c74c3107..5cdcfc3fcb 100644
--- a/src/qt/locale/bitcoin_nb.ts
+++ b/src/qt/locale/bitcoin_nb.ts
@@ -830,7 +830,7 @@
<source>Create</source>
<translation>Opprett</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -3608,10 +3608,6 @@ Merk: Siden avgiften er beregnet per byte-basis, vil et gebyr på "100 satoshis
<translation>%s er satt veldig høyt!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>Feil ved innlasting av lommeboka %s. Duplisert -wallet -filnavn angitt.</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>Starter nettverkstråder…</translation>
</message>
diff --git a/src/qt/locale/bitcoin_nl.ts b/src/qt/locale/bitcoin_nl.ts
index 6f672821e3..10cb757c28 100644
--- a/src/qt/locale/bitcoin_nl.ts
+++ b/src/qt/locale/bitcoin_nl.ts
@@ -15,7 +15,7 @@
</message>
<message>
<source>Copy the currently selected address to the system clipboard</source>
- <translation>Kopieer het geselecteerde adres naar het klembord</translation>
+ <translation>Kopieer het momenteel geselecteerde adres naar het systeem klembord</translation>
</message>
<message>
<source>&amp;Copy</source>
@@ -47,7 +47,7 @@
</message>
<message>
<source>Choose the address to send coins to</source>
- <translation>Kies het adres om munten naar te versturen</translation>
+ <translation>Kies het adres om de munten naar te versturen</translation>
</message>
<message>
<source>Choose the address to receive coins with</source>
@@ -70,6 +70,12 @@
<translation>Dit zijn uw Bitcoinadressen om betalingen mee te verzenden. Controleer altijd het bedrag en het ontvangstadres voordat u uw bitcoins verzendt.</translation>
</message>
<message>
+ <source>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>
+ <translation>Dit zijn uw Bitcoin adressen voor het ontvangen van betalingen. Gebruik de 'Nieuw ontvangst adres maken' knop in de ontvangst tab om een nieuwe adres te maken.
+Ondertekenen is alleen mogelijk met adressen van het type 'legacy'.</translation>
+ </message>
+ <message>
<source>&amp;Copy Address</source>
<translation>&amp;Kopiëer adres</translation>
</message>
@@ -478,6 +484,22 @@
<translation>Bijgewerkt</translation>
</message>
<message>
+ <source>&amp;Load PSBT from file...</source>
+ <translation>&amp;Laad PSBT van bestand...</translation>
+ </message>
+ <message>
+ <source>Load Partially Signed Bitcoin Transaction</source>
+ <translation>Laad gedeeltelijk ondertekende Bitcoin-transactie</translation>
+ </message>
+ <message>
+ <source>Load PSBT from clipboard...</source>
+ <translation>Laad PSBT van klembord</translation>
+ </message>
+ <message>
+ <source>Load Partially Signed Bitcoin Transaction from clipboard</source>
+ <translation>Laad gedeeltelijk ondertekende Bitcoin-transactie vanaf het klembord</translation>
+ </message>
+ <message>
<source>Node window</source>
<translation>Nodevenster</translation>
</message>
@@ -514,10 +536,26 @@
<translation>Portemonnee Sluiten</translation>
</message>
<message>
+ <source>Close All Wallets...</source>
+ <translation>Sluit Alle Portemonnees...</translation>
+ </message>
+ <message>
+ <source>Close all wallets</source>
+ <translation>Sluit alle portemonnees</translation>
+ </message>
+ <message>
<source>Show the %1 help message to get a list with possible Bitcoin command-line options</source>
<translation>Toon het %1 hulpbericht om een lijst te krijgen met mogelijke Bitcoin commandoregelopties</translation>
</message>
<message>
+ <source>&amp;Mask values</source>
+ <translation>&amp;Maskeer waarden</translation>
+ </message>
+ <message>
+ <source>Mask the values in the Overview tab</source>
+ <translation>Maskeer de waarden op het tabblad Overzicht</translation>
+ </message>
+ <message>
<source>default wallet</source>
<translation>standaard portemonnee</translation>
</message>
@@ -625,7 +663,15 @@
<source>Wallet is &lt;b&gt;encrypted&lt;/b&gt; and currently &lt;b&gt;locked&lt;/b&gt;</source>
<translation>Portemonnee is &lt;b&gt;versleuteld&lt;/b&gt; en momenteel &lt;b&gt;gesloten&lt;/b&gt;</translation>
</message>
- </context>
+ <message>
+ <source>Original message:</source>
+ <translation>Origineel bericht:</translation>
+ </message>
+ <message>
+ <source>A fatal error occurred. %1 can no longer continue safely and will quit.</source>
+ <translation>Er is een fatale fout opgetreden. %1 kan niet langer veilig doorgaan en wordt afgesloten.</translation>
+ </message>
+</context>
<context>
<name>CoinControlDialog</name>
<message>
@@ -828,10 +874,18 @@ Dit is ideaal voor alleen-lezen portommonees.</translation>
<translation>Maak een lege portemonnee</translation>
</message>
<message>
+ <source>Use descriptors for scriptPubKey management</source>
+ <translation>Gebruik descriptors voor scriptPubKey-beheer</translation>
+ </message>
+ <message>
+ <source>Descriptor Wallet</source>
+ <translation>Descriptor Portemonnee</translation>
+ </message>
+ <message>
<source>Create</source>
<translation>Creëer</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -1304,6 +1358,14 @@ Dit is ideaal voor alleen-lezen portommonees.</translation>
<translation>Munt controle functies weergeven of niet.</translation>
</message>
<message>
+ <source>Connect to the Bitcoin network through a separate SOCKS5 proxy for Tor onion services.</source>
+ <translation>Maak verbinding met het Bitcoin-netwerk via een aparte SOCKS5-proxy voor Tor Onion-services.</translation>
+ </message>
+ <message>
+ <source>Use separate SOCKS&amp;5 proxy to reach peers via Tor onion services:</source>
+ <translation>Gebruik afzonderlijke SOCKS &amp; 5-proxy om peers te bereiken via Tor Onion-services:</translation>
+ </message>
+ <message>
<source>&amp;Third party transaction URLs</source>
<translation>Transactie-URL's van &amp;derden</translation>
</message>
@@ -1438,7 +1500,11 @@ Dit is ideaal voor alleen-lezen portommonees.</translation>
<source>Current total balance in watch-only addresses</source>
<translation>Huidige balans in alleen-bekijkbare adressen.</translation>
</message>
- </context>
+ <message>
+ <source>Privacy mode activated for the Overview tab. To unmask the values, uncheck Settings-&gt;Mask values.</source>
+ <translation>Privacymodus geactiveerd voor het tabblad Overzicht. Om de waarden te ontmaskeren, schakelt u Instellingen -&gt; Maskeer waarden uit.</translation>
+ </message>
+</context>
<context>
<name>PSBTOperationsDialog</name>
<message>
@@ -1446,6 +1512,38 @@ Dit is ideaal voor alleen-lezen portommonees.</translation>
<translation>Dialoog</translation>
</message>
<message>
+ <source>Sign Tx</source>
+ <translation>Signeer Tx</translation>
+ </message>
+ <message>
+ <source>Broadcast Tx</source>
+ <translation>Zend Tx uit</translation>
+ </message>
+ <message>
+ <source>Copy to Clipboard</source>
+ <translation>Kopieer naar klembord</translation>
+ </message>
+ <message>
+ <source>Save...</source>
+ <translation>Opslaan...</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>Sluiten</translation>
+ </message>
+ <message>
+ <source>Failed to load transaction: %1</source>
+ <translation>Laden transactie niet gelukt: %1</translation>
+ </message>
+ <message>
+ <source>Failed to sign transaction: %1</source>
+ <translation>Tekenen transactie niet gelukt: %1</translation>
+ </message>
+ <message>
+ <source>Could not sign any more inputs.</source>
+ <translation>Kon geen inputs meer ondertekenen.</translation>
+ </message>
+ <message>
<source>Total Amount</source>
<translation>Totaalbedrag</translation>
</message>
@@ -3170,6 +3268,10 @@ Notitie: Omdat de vergoeding per byte wordt gerekend, zal een vergoeding van "10
<source>Closing the wallet for too long can result in having to resync the entire chain if pruning is enabled.</source>
<translation>De portemonee te lang gesloten houden kan leiden tot het moeten hersynchroniseren van de hele keten als snoeien aktief is.</translation>
</message>
+ <message>
+ <source>Close all wallets</source>
+ <translation>Sluit alle portemonnees</translation>
+ </message>
</context>
<context>
<name>WalletFrame</name>
@@ -3677,10 +3779,6 @@ Notitie: Omdat de vergoeding per byte wordt gerekend, zal een vergoeding van "10
<translation>%s is zeer hoog ingesteld!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>Fout bij laden van portemonnee %s. Duplicaat -wallet bestandsnaam opgegeven.</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>Netwerkthread starten...</translation>
</message>
diff --git a/src/qt/locale/bitcoin_pl.ts b/src/qt/locale/bitcoin_pl.ts
index dbb325decd..98a799bb50 100644
--- a/src/qt/locale/bitcoin_pl.ts
+++ b/src/qt/locale/bitcoin_pl.ts
@@ -3,7 +3,7 @@
<name>AddressBookPage</name>
<message>
<source>Right-click to edit address or label</source>
- <translation>Right-click to edit address or label</translation>
+ <translation>Kliknij prawym przyciskiem myszy, aby edytować adres lub etykietę</translation>
</message>
<message>
<source>Create a new address</source>
@@ -67,13 +67,13 @@
</message>
<message>
<source>These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.</source>
- <translation>These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.</translation>
+ <translation>To są twoje adresy Bitcoin do wysyłania płatności. Zawsze sprawdź kwotę i adres odbiorcy przed wysłaniem monet.</translation>
</message>
<message>
<source>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>
- <translation>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'.</translation>
+ <translation>To są twoje adresy Bitcoin do otrzymywania płatności. Użyj przycisku „Utwórz nowy adres odbiorcy” na karcie odbioru, aby utworzyć nowe adresy.
+Podpisywanie jest możliwe tylko z adresami typu „legacy”.</translation>
</message>
<message>
<source>&amp;Copy Address</source>
@@ -89,7 +89,7 @@ Signing is only possible with addresses of the type 'legacy'.</translation>
</message>
<message>
<source>Export Address List</source>
- <translation>Export Address List</translation>
+ <translation>Eksportuj listę adresów</translation>
</message>
<message>
<source>Comma separated file (*.csv)</source>
@@ -151,7 +151,7 @@ Signing is only possible with addresses of the type 'legacy'.</translation>
</message>
<message>
<source>Unlock wallet</source>
- <translation>Unlock wallet</translation>
+ <translation>Odblokuj portfel</translation>
</message>
<message>
<source>This operation needs your wallet passphrase to decrypt the wallet.</source>
@@ -325,15 +325,15 @@ Signing is only possible with addresses of the type 'legacy'.</translation>
</message>
<message>
<source>Open &amp;URI...</source>
- <translation>Otwórz URI...</translation>
+ <translation>Otwórz &amp;URI...</translation>
</message>
<message>
<source>Create Wallet...</source>
- <translation>Stwórz portfel...</translation>
+ <translation>Utwórz portfel...</translation>
</message>
<message>
<source>Create a new wallet</source>
- <translation>Stwórz nowy portfel</translation>
+ <translation>Utwórz nowy portfel</translation>
</message>
<message>
<source>Wallet:</source>
@@ -449,7 +449,7 @@ Signing is only possible with addresses of the type 'legacy'.</translation>
</message>
<message>
<source>Processing blocks on disk...</source>
- <translation>Przetwarzanie blocks on disk...</translation>
+ <translation>Przetwarzanie bloków na dysku...</translation>
</message>
<message numerus="yes">
<source>Processed %n block(s) of transaction history.</source>
@@ -488,10 +488,18 @@ Signing is only possible with addresses of the type 'legacy'.</translation>
<translation>Wczytaj PSBT z p&amp;liku ..</translation>
</message>
<message>
+ <source>Load Partially Signed Bitcoin Transaction</source>
+ <translation>Załaduj częściowo podpisaną transakcję Bitcoin</translation>
+ </message>
+ <message>
<source>Load PSBT from clipboard...</source>
<translation>Wczytaj PSBT do schowka</translation>
</message>
<message>
+ <source>Load Partially Signed Bitcoin Transaction from clipboard</source>
+ <translation>Załaduj częściowo podpisaną transakcję Bitcoin ze schowka</translation>
+ </message>
+ <message>
<source>Node window</source>
<translation>Okno węzła</translation>
</message>
@@ -853,10 +861,14 @@ Signing is only possible with addresses of the type 'legacy'.</translation>
<translation>Stwórz czysty portfel</translation>
</message>
<message>
+ <source>Descriptor Wallet</source>
+ <translation>Portfel deskryptora</translation>
+ </message>
+ <message>
<source>Create</source>
<translation>Stwórz</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -3275,7 +3287,7 @@ Zwróć uwagę, że poprawnie zweryfikowana wiadomość potwierdza to, że nadaw
</message>
<message>
<source>Closing the wallet for too long can result in having to resync the entire chain if pruning is enabled.</source>
- <translation>Zamknięcie portfela na zbyt długo może skutkować konieczność ponownego załadowania całego łańcucha, jeżeli jest włączony pruning.</translation>
+ <translation>Zamknięcie portfela na zbyt długo może skutkować koniecznością ponownego załadowania całego łańcucha, jeżeli jest włączony pruning.</translation>
</message>
<message>
<source>Close all wallets</source>
@@ -3558,6 +3570,10 @@ Zwróć uwagę, że poprawnie zweryfikowana wiadomość potwierdza to, że nadaw
<translation>Nie udało się ponownie przeskanować portfela podczas inicjalizacji.</translation>
</message>
<message>
+ <source>Failed to verify database</source>
+ <translation>Nie udało się zweryfikować bazy danych</translation>
+ </message>
+ <message>
<source>Importing...</source>
<translation>Importowanie…</translation>
</message>
@@ -3586,6 +3602,30 @@ Zwróć uwagę, że poprawnie zweryfikowana wiadomość potwierdza to, że nadaw
<translation>Nieprawidłowa kwota dla -fallbackfee=&lt;amount&gt;: '%s'</translation>
</message>
<message>
+ <source>SQLiteDatabase: Failed to execute statement to verify database: %s</source>
+ <translation>SQLiteDatabase: nie powiodło się wykonanie instrukcji weryfikującej bazę danych: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to fetch sqlite wallet schema version: %s</source>
+ <translation>SQLiteDatabase: nie udało się pobrać wersji schematu portfela sqlite: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to fetch the application id: %s</source>
+ <translation>SQLiteDatabase: nie udało się pobrać identyfikatora aplikacji: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to prepare statement to verify database: %s</source>
+ <translation>SQLiteDatabase: nie udało się przygotować instrukcji do weryfikacji bazy danych: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to read database verification error: %s</source>
+ <translation>SQLiteDatabase: nie udało się odczytać błędu weryfikacji bazy danych: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Unexpected application id. Expected %u, got %u</source>
+ <translation>SQLiteDatabase: nieoczekiwany identyfikator aplikacji. Oczekiwano %u, otrzymano %u</translation>
+ </message>
+ <message>
<source>Specified blocks directory "%s" does not exist.</source>
<translation>Podany folder bloków "%s" nie istnieje.
</translation>
@@ -3813,10 +3853,6 @@ Zwróć uwagę, że poprawnie zweryfikowana wiadomość potwierdza to, że nadaw
<translation>%s jest ustawione bardzo wysoko!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>Błąd wczytywania portfela %s. Podana powtórnie ta sama nazwa pliku w -wallet</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>Uruchamianie wątków sieciowych...</translation>
</message>
diff --git a/src/qt/locale/bitcoin_pt.ts b/src/qt/locale/bitcoin_pt.ts
index 4fbdadd059..82604fb0cf 100644
--- a/src/qt/locale/bitcoin_pt.ts
+++ b/src/qt/locale/bitcoin_pt.ts
@@ -70,6 +70,12 @@
<translation>Estes são os seus endereços Bitcoin para enviar pagamentos. Verifique sempre o valor e o endereço de receção antes de enviar moedas.</translation>
</message>
<message>
+ <source>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>
+ <translation>Estes são seus novos endereços Bitcoin para o recebimento de pagamentos. Use o botão "Criar novo endereço de recebimento" na aba "Receber" para criar novos endereços.
+Assinar só é possível com endereços do tipo "legado".</translation>
+ </message>
+ <message>
<source>&amp;Copy Address</source>
<translation>&amp;Copiar Endereço</translation>
</message>
@@ -478,6 +484,10 @@
<translation>Atualizado</translation>
</message>
<message>
+ <source>&amp;Load PSBT from file...</source>
+ <translation>&amp;Carregar Transação Bitcoin Parcialmente Assinada (TBPA/PSBT) do arquivo...</translation>
+ </message>
+ <message>
<source>Load Partially Signed Bitcoin Transaction</source>
<translation>Carregar transação de Bitcoin parcialmente assinada</translation>
</message>
@@ -538,6 +548,14 @@
<translation>Mostrar a mensagem de ajuda %1 para obter uma lista com possíveis opções a usar na linha de comandos.</translation>
</message>
<message>
+ <source>&amp;Mask values</source>
+ <translation>&amp;Valores de Máscara</translation>
+ </message>
+ <message>
+ <source>Mask the values in the Overview tab</source>
+ <translation>Mascare os valores na aba de visão geral</translation>
+ </message>
+ <message>
<source>default wallet</source>
<translation>carteira predefinida</translation>
</message>
@@ -649,7 +667,11 @@
<source>Original message:</source>
<translation>Mensagem original:</translation>
</message>
- </context>
+ <message>
+ <source>A fatal error occurred. %1 can no longer continue safely and will quit.</source>
+ <translation>Um erro fatal ocorreu. %1 não pode mais continuar de maneira segura e será terminada.</translation>
+ </message>
+</context>
<context>
<name>CoinControlDialog</name>
<message>
@@ -851,9 +873,21 @@
<translation>Fazer Carteira em Branco</translation>
</message>
<message>
+ <source>Use descriptors for scriptPubKey management</source>
+ <translation>Use descritores para o gerenciamento de chaves públicas de script</translation>
+ </message>
+ <message>
+ <source>Descriptor Wallet</source>
+ <translation>Carteira de descritor</translation>
+ </message>
+ <message>
<source>Create</source>
<translation>Criar</translation>
</message>
+ <message>
+ <source>Compiled without sqlite support (required for descriptor wallets)</source>
+ <translation>Compilado sem suporte para sqlite (requerido para carteiras de descritor)</translation>
+ </message>
</context>
<context>
<name>EditAddressDialog</name>
@@ -1328,6 +1362,10 @@
<translation>Escolha se deve mostrar as funcionalidades de controlo de moedas ou não.</translation>
</message>
<message>
+ <source>Connect to the Bitcoin network through a separate SOCKS5 proxy for Tor onion services.</source>
+ <translation>Conecte-se a rede Bitcoin através de um proxy SOCKS5 separado para serviços Tor Onion</translation>
+ </message>
+ <message>
<source>&amp;Third party transaction URLs</source>
<translation>URLs de transação de &amp;terceiros</translation>
</message>
@@ -1462,7 +1500,11 @@
<source>Current total balance in watch-only addresses</source>
<translation>Saldo disponível em endereços de apenas vigiar</translation>
</message>
- </context>
+ <message>
+ <source>Privacy mode activated for the Overview tab. To unmask the values, uncheck Settings-&gt;Mask values.</source>
+ <translation>Modo de privacidade ativado para a aba de visão geral. para desmascarar os valores, desmarque nas Configurações -&gt; Valores de máscara</translation>
+ </message>
+</context>
<context>
<name>PSBTOperationsDialog</name>
<message>
@@ -1934,6 +1976,10 @@ ID transação: %1</translation>
<translation>Janela do nó</translation>
</message>
<message>
+ <source>Current block height</source>
+ <translation>Altura atual do bloco</translation>
+ </message>
+ <message>
<source>Open the %1 debug log file from the current data directory. This can take a few seconds for large log files.</source>
<translation>Abrir o ficheiro de registo de depuração %1 da pasta de dados atual. Isto pode demorar alguns segundos para ficheiros de registo maiores.</translation>
</message>
@@ -3640,6 +3686,10 @@ Ir para o arquivo &gt; Abrir carteira para carregar a carteira
<translation>Reexaminação da carteira falhou durante a inicialização</translation>
</message>
<message>
+ <source>Failed to verify database</source>
+ <translation>Falha ao verificar base de dados</translation>
+ </message>
+ <message>
<source>Importing...</source>
<translation>A importar...</translation>
</message>
@@ -3668,6 +3718,10 @@ Ir para o arquivo &gt; Abrir carteira para carregar a carteira
<translation>Valor inválido para -fallbackfee=&lt;amount&gt;: '%s'</translation>
</message>
<message>
+ <source>SQLiteDatabase: Failed to read database verification error: %s</source>
+ <translation>SQLiteDatabase: Falha ao ler base de dados erro de verificação %s</translation>
+ </message>
+ <message>
<source>Specified blocks directory "%s" does not exist.</source>
<translation>
A pasta de blocos especificados "%s" não existe.</translation>
@@ -3931,10 +3985,6 @@ A pasta de blocos especificados "%s" não existe.</translation>
<translation>%s está demasiado elevado!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>Erro ao carregar a carteira %s. Especificado nome de fichero -wallet em duplicado.</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>A iniciar threads de rede...</translation>
</message>
diff --git a/src/qt/locale/bitcoin_pt_BR.ts b/src/qt/locale/bitcoin_pt_BR.ts
index ca98c94a35..aadbcc6a89 100644
--- a/src/qt/locale/bitcoin_pt_BR.ts
+++ b/src/qt/locale/bitcoin_pt_BR.ts
@@ -3,7 +3,7 @@
<name>AddressBookPage</name>
<message>
<source>Right-click to edit address or label</source>
- <translation>Right-click to edit address or label</translation>
+ <translation>Clique com o botão direito para editar endereço ou rótulo</translation>
</message>
<message>
<source>Create a new address</source>
@@ -884,6 +884,10 @@ Somente é possível assinar com endereços do tipo 'legado'.</translation>
<source>Create</source>
<translation>Criar</translation>
</message>
+ <message>
+ <source>Compiled without sqlite support (required for descriptor wallets)</source>
+ <translation>Compilado sem suporte a sqlite (requerido para carteiras descritoras)</translation>
+ </message>
</context>
<context>
<name>EditAddressDialog</name>
@@ -3570,6 +3574,10 @@ Go to File &gt; Open Wallet to load a wallet.
<translation>Erro ao ler arquivo %s! Todas as chaves privadas foram lidas corretamente, mas os dados de transação ou o livro de endereços podem estar faltando ou incorretos.</translation>
</message>
<message>
+ <source>More than one onion bind address is provided. Using %s for the automatically created Tor onion service.</source>
+ <translation>Mais de um endereço onion associado é fornecido. Usando %s para automaticamento criar serviço onion Tor.</translation>
+ </message>
+ <message>
<source>Please check that your computer's date and time are correct! If your clock is wrong, %s will not work properly.</source>
<translation>Por favor verifique se a data e o horário de seu computador estão corretos. Se o relógio de seu computador estiver incorreto, %s não funcionará corretamente.</translation>
</message>
@@ -3578,6 +3586,18 @@ Go to File &gt; Open Wallet to load a wallet.
<translation>Por favor contribua se você entender que %s é útil. Visite %s para mais informações sobre o software.</translation>
</message>
<message>
+ <source>SQLiteDatabase: Failed to prepare the statement to fetch sqlite wallet schema version: %s</source>
+ <translation>SQLiteDatabase: Falha ao preparar a confirmação para buscar a versão do programa da carteira sqlite: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to prepare the statement to fetch the application id: %s</source>
+ <translation>SQLiteDatabase: Falhou em preparar confirmação para buscar a id da aplicação: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Unknown sqlite wallet schema version %d. Only version %d is supported</source>
+ <translation>SQLiteDatabase: Desconhecida a versão %d do programa da carteira sqlite. Apenas a versão %d é suportada</translation>
+ </message>
+ <message>
<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>O banco de dados de blocos contém um bloco que parece ser do futuro. Isso pode ser devido à data e hora do seu computador estarem configuradas incorretamente. Apenas reconstrua o banco de dados de blocos se você estiver certo de que a data e hora de seu computador estão corretas.</translation>
</message>
@@ -3682,6 +3702,14 @@ Go to File &gt; Open Wallet to load a wallet.
<translation>Falha ao escanear novamente a carteira durante a inicialização</translation>
</message>
<message>
+ <source>Failed to verify database</source>
+ <translation>Falha ao verificar a base de dados</translation>
+ </message>
+ <message>
+ <source>Ignoring duplicate -wallet %s.</source>
+ <translation>Ignorando -carteira %s duplicada.</translation>
+ </message>
+ <message>
<source>Importing...</source>
<translation>Importando...</translation>
</message>
@@ -3710,6 +3738,30 @@ Go to File &gt; Open Wallet to load a wallet.
<translation>Quantidade inválida para -fallbackfee=&lt;amount&gt;: '%s'</translation>
</message>
<message>
+ <source>SQLiteDatabase: Failed to execute statement to verify database: %s</source>
+ <translation>SQLiteDatabase: Falhou em executar a confirmação para verificar a base de dados: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to fetch sqlite wallet schema version: %s</source>
+ <translation>SQLiteDatabase: Falha ao burscar a versão do programa da carteira sqlite: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to fetch the application id: %s</source>
+ <translation>SQLiteDatabase: Falha ao procurar a id da aplicação: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to prepare statement to verify database: %s</source>
+ <translation>SQLiteDatabase: Falhou em preparar confirmação para verificar a base de dados: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to read database verification error: %s</source>
+ <translation>SQLiteDatabase: Falha ao ler o erro de verificação da base de dados: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Unexpected application id. Expected %u, got %u</source>
+ <translation>SQLiteDatabase: Id da aplicação inesperada. Esperada %u, got %u</translation>
+ </message>
+ <message>
<source>Specified blocks directory "%s" does not exist.</source>
<translation>
Diretório de blocos especificados "%s" não existe.</translation>
@@ -3973,10 +4025,6 @@ Diretório de blocos especificados "%s" não existe.</translation>
<translation>%s está muito alto!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>Erro ao carregar carteira %s. Duplicado o nome do arquivo de -wallet.</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>Iniciando threads de rede...</translation>
</message>
diff --git a/src/qt/locale/bitcoin_ro.ts b/src/qt/locale/bitcoin_ro.ts
index 6adb5cacc1..b75b857f6e 100644
--- a/src/qt/locale/bitcoin_ro.ts
+++ b/src/qt/locale/bitcoin_ro.ts
@@ -802,7 +802,7 @@
<source>Create</source>
<translation>Creează</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -3414,10 +3414,6 @@ Nota: Cum taxa este calculata per byte, o taxa de "100 satoshi per kB" pentru o
<translation>%s este setata foarte sus!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>Eroare la incarcarea portofelului %s. Este specificat un fisier -wallet duplicat.</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>Se pornesc threadurile retelei...</translation>
</message>
diff --git a/src/qt/locale/bitcoin_ru.ts b/src/qt/locale/bitcoin_ru.ts
index db4e095ccf..2b7cb995aa 100644
--- a/src/qt/locale/bitcoin_ru.ts
+++ b/src/qt/locale/bitcoin_ru.ts
@@ -667,7 +667,12 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Original message:</source>
<translation>Исходное сообщение:</translation>
</message>
- </context>
+ <message>
+ <source>A fatal error occurred. %1 can no longer continue safely and will quit.</source>
+ <translation>Произошла критическая ошибка. %1 больше не может продолжать безопасную работу и будет закрыт.
+ </translation>
+ </message>
+</context>
<context>
<name>CoinControlDialog</name>
<message>
@@ -869,6 +874,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation>Создать пустой кошелёк</translation>
</message>
<message>
+ <source>Use descriptors for scriptPubKey management</source>
+ <translation>Использовать дескриптор для управления scriptPubKey</translation>
+ </message>
+ <message>
<source>Descriptor Wallet</source>
<translation>Дескриптор кошелька</translation>
</message>
@@ -876,6 +885,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Create</source>
<translation>Создать</translation>
</message>
+ <message>
+ <source>Compiled without sqlite support (required for descriptor wallets)</source>
+ <translation>Скомпилирован без поддержки sqlite (необходимо для кошельков с дескриптором)</translation>
+ </message>
</context>
<context>
<name>EditAddressDialog</name>
@@ -1349,6 +1362,14 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation>Показывать ли опцию управления монетами.</translation>
</message>
<message>
+ <source>Connect to the Bitcoin network through a separate SOCKS5 proxy for Tor onion services.</source>
+ <translation>Подключаться к Биткойн-сети через отдельный прокси SOCKS5 для скрытых сервисов Tor.</translation>
+ </message>
+ <message>
+ <source>Use separate SOCKS&amp;5 proxy to reach peers via Tor onion services:</source>
+ <translation>Использовать отдельный прокси SOCKS&amp;5 для соединения с узлами через скрытые сервисы Tor:</translation>
+ </message>
+ <message>
<source>&amp;Third party transaction URLs</source>
<translation>&amp;Ссылки на транзакции сторонних сервисов</translation>
</message>
@@ -1483,7 +1504,11 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Current total balance in watch-only addresses</source>
<translation>Текущий общий баланс на адресах наблюдения</translation>
</message>
- </context>
+ <message>
+ <source>Privacy mode activated for the Overview tab. To unmask the values, uncheck Settings-&gt;Mask values.</source>
+ <translation>Режим приватности включен для вкладки обзора. Чтобы показать данные, отключите настройку Скрыть Значения.</translation>
+ </message>
+</context>
<context>
<name>PSBTOperationsDialog</name>
<message>
@@ -1495,6 +1520,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation>Подписать транзакцию</translation>
</message>
<message>
+ <source>Broadcast Tx</source>
+ <translation>Отправить Tx</translation>
+ </message>
+ <message>
<source>Copy to Clipboard</source>
<translation>Скопировать в буфер обмена</translation>
</message>
@@ -1507,14 +1536,66 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation>Закрыть</translation>
</message>
<message>
+ <source>Failed to load transaction: %1</source>
+ <translation>Не удалось загрузить транзакцию: %1</translation>
+ </message>
+ <message>
+ <source>Failed to sign transaction: %1</source>
+ <translation>Не удалось подписать транзакцию: %1</translation>
+ </message>
+ <message>
+ <source>Could not sign any more inputs.</source>
+ <translation>Не удалось подписать оставшиеся входы.</translation>
+ </message>
+ <message>
+ <source>Signed %1 inputs, but more signatures are still required.</source>
+ <translation>Подписано %1 входов, но требуется больше подписей.</translation>
+ </message>
+ <message>
+ <source>Signed transaction successfully. Transaction is ready to broadcast.</source>
+ <translation>Транзакция успешно подписана. Транзакция готова к отправке.</translation>
+ </message>
+ <message>
+ <source>Unknown error processing transaction.</source>
+ <translation>Неизвестная ошибка во время обработки транзакции.</translation>
+ </message>
+ <message>
+ <source>Transaction broadcast successfully! Transaction ID: %1</source>
+ <translation>Транзакция успешно отправлена! ID транзакции: %1</translation>
+ </message>
+ <message>
+ <source>Transaction broadcast failed: %1</source>
+ <translation>Отправка транзакции не удалась: %1</translation>
+ </message>
+ <message>
<source>PSBT copied to clipboard.</source>
<translation>PSBT скопирован в буфер обмена</translation>
</message>
<message>
+ <source>Save Transaction Data</source>
+ <translation>Сохранить данные о транзакции</translation>
+ </message>
+ <message>
<source>Partially Signed Transaction (Binary) (*.psbt)</source>
<translation>Частично Подписанная Транзакция (Бинарный файл) (*.psbt)</translation>
</message>
<message>
+ <source>PSBT saved to disk.</source>
+ <translation>PSBT сохранён на диск.</translation>
+ </message>
+ <message>
+ <source> * Sends %1 to %2</source>
+ <translation>* Отправляет %1 к %2</translation>
+ </message>
+ <message>
+ <source>Unable to calculate transaction fee or total transaction amount.</source>
+ <translation>Не удалось сосчитать сумму комиссии или общую сумму транзакции.</translation>
+ </message>
+ <message>
+ <source>Pays transaction fee: </source>
+ <translation>Платит комиссию:</translation>
+ </message>
+ <message>
<source>Total Amount</source>
<translation>Общая сумма</translation>
</message>
@@ -1522,7 +1603,35 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>or</source>
<translation>или</translation>
</message>
- </context>
+ <message>
+ <source>Transaction has %1 unsigned inputs.</source>
+ <translation>Транзакция имеет %1 неподписанных входов.</translation>
+ </message>
+ <message>
+ <source>Transaction is missing some information about inputs.</source>
+ <translation>Транзакция имеет недостаточно информации о некоторых входах.</translation>
+ </message>
+ <message>
+ <source>Transaction still needs signature(s).</source>
+ <translation>Транзакция требует по крайней мере одну подпись.</translation>
+ </message>
+ <message>
+ <source>(But this wallet cannot sign transactions.)</source>
+ <translation>(Но этот кошелёк не может подписывать транзакции.)</translation>
+ </message>
+ <message>
+ <source>(But this wallet does not have the right keys.)</source>
+ <translation>(Но этот кошелёк не имеет необходимые ключи.)</translation>
+ </message>
+ <message>
+ <source>Transaction is fully signed and ready for broadcast.</source>
+ <translation>Транзакция полностью подписана, и готова к отправке.</translation>
+ </message>
+ <message>
+ <source>Transaction status is unknown.</source>
+ <translation>Статус транзакции неизвестен.</translation>
+ </message>
+</context>
<context>
<name>PaymentServer</name>
<message>
@@ -1688,6 +1797,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation>Ошибка: %1</translation>
</message>
<message>
+ <source>Error initializing settings: %1</source>
+ <translation>Ошибка инициализации настроек: %1</translation>
+ </message>
+ <message>
<source>%1 didn't yet exit safely...</source>
<translation>%1 ещё не завершился безопасно...</translation>
</message>
@@ -1882,6 +1995,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation>Увеличить размер шрифта</translation>
</message>
<message>
+ <source>Permissions</source>
+ <translation>Права</translation>
+ </message>
+ <message>
<source>Services</source>
<translation>Сервисы</translation>
</message>
@@ -2136,10 +2253,22 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Could not unlock wallet.</source>
<translation>Невозможно разблокировать кошелёк.</translation>
</message>
- </context>
+ <message>
+ <source>Could not generate new %1 address</source>
+ <translation>Не удалось сгенерировать новый %1 адрес</translation>
+ </message>
+</context>
<context>
<name>ReceiveRequestDialog</name>
<message>
+ <source>Request payment to ...</source>
+ <translation>Запросить платёж на ...</translation>
+ </message>
+ <message>
+ <source>Address:</source>
+ <translation>Адрес:</translation>
+ </message>
+ <message>
<source>Amount:</source>
<translation>Количество:</translation>
</message>
@@ -2422,10 +2551,22 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>Вы действительно хотите выполнить отправку?</translation>
</message>
<message>
+ <source>Create Unsigned</source>
+ <translation>Создать Без Подписи</translation>
+ </message>
+ <message>
+ <source>Save Transaction Data</source>
+ <translation>Сохранить данные о транзакции</translation>
+ </message>
+ <message>
<source>Partially Signed Transaction (Binary) (*.psbt)</source>
<translation>Частично Подписанная Транзакция (Бинарный файл) (*.psbt)</translation>
</message>
<message>
+ <source>PSBT saved</source>
+ <translation>PSBT сохранён</translation>
+ </message>
+ <message>
<source>or</source>
<translation>или</translation>
</message>
@@ -2434,6 +2575,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>Вы можете увеличить комиссию позже (Replace-By-Fee, BIP-125).</translation>
</message>
<message>
+ <source>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>
+ <translation>Пожалуйста, пересмотрите ваше транзакционное предложение. Это создаст Частично Подписанную Биткойн Транзакцию (PSBT), которую можно сохранить или копировать и использовать для подписи, например, с оффлайн %1 кошельком, или PSBT-совместимым аппаратным кошельком.</translation>
+ </message>
+ <message>
<source>Please, review your transaction.</source>
<translation>Пожалуйста, ознакомьтесь с вашей транзакцией.</translation>
</message>
@@ -3251,10 +3396,22 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>Close all wallets</source>
<translation>Закрыть все кошельки</translation>
</message>
- </context>
+ <message>
+ <source>Are you sure you wish to close all wallets?</source>
+ <translation>Вы уверенны, что хотите закрыть все кошельки?</translation>
+ </message>
+</context>
<context>
<name>WalletFrame</name>
<message>
+ <source>No wallet has been loaded.
+Go to File &gt; Open Wallet to load a wallet.
+- OR -</source>
+ <translation>Кошелёк не был загружен.
+Откройте вкладку Файл &gt; Открыть Кошелёк чтобы загрузить кошелёк.
+- ИЛИ -</translation>
+ </message>
+ <message>
<source>Create a new wallet</source>
<translation>Создать новый кошелёк</translation>
</message>
@@ -3333,6 +3490,26 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>Ошибка</translation>
</message>
<message>
+ <source>Unable to decode PSBT from clipboard (invalid base64)</source>
+ <translation>Не удалось декодировать PSBT из буфера обмена (неверный base64)</translation>
+ </message>
+ <message>
+ <source>Load Transaction Data</source>
+ <translation>Загрузить данные о транзакции</translation>
+ </message>
+ <message>
+ <source>Partially Signed Transaction (*.psbt)</source>
+ <translation>Частично Подписанная Транзакция (*.psbt)</translation>
+ </message>
+ <message>
+ <source>PSBT file must be smaller than 100 MiB</source>
+ <translation>Файл PSBT должен быть меньше 100 мегабит.</translation>
+ </message>
+ <message>
+ <source>Unable to decode PSBT</source>
+ <translation>Не удалось декодировать PSBT</translation>
+ </message>
+ <message>
<source>Backup Wallet</source>
<translation>Создать резервную копию кошелька</translation>
</message>
@@ -3400,6 +3577,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>Ошибка чтения %s! Все ключи прочитаны верно, но данные транзакций или записи адресной книги могут отсутствовать или быть неправильными.</translation>
</message>
<message>
+ <source>More than one onion bind address is provided. Using %s for the automatically created Tor onion service.</source>
+ <translation>Предоставлен более чем один адрес подключения к скрытым сервисам. %s используется для подключения к автоматически созданному сервису Tor.</translation>
+ </message>
+ <message>
<source>Please check that your computer's date and time are correct! If your clock is wrong, %s will not work properly.</source>
<translation>Пожалуйста, убедитесь в корректности установки времени и даты на вашем компьютере! Если время установлено неверно, %s не будет работать правильно.</translation>
</message>
@@ -3408,6 +3589,18 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>Пожалуйста, внесите свой вклад, если вы найдете %s полезными. Посетите %s для получения дополнительной информации о программном обеспечении.</translation>
</message>
<message>
+ <source>SQLiteDatabase: Failed to prepare the statement to fetch sqlite wallet schema version: %s</source>
+ <translation>SQLiteDatabase: Не удалось приготовить утверждение чтобы загрузить sqlite кошелёк версии: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to prepare the statement to fetch the application id: %s</source>
+ <translation>SQLiteDatabase: Не удалось приготовить утверждение чтобы загрузить id приложения: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Unknown sqlite wallet schema version %d. Only version %d is supported</source>
+ <translation>SQLiteDatabase: Кошелёк sqlite имеет неизвестную версию %d. Поддерживается только версия %d</translation>
+ </message>
+ <message>
<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>База данных блоков содержит блок, который появляется из будущего. Это может произойти из-за некорректно установленных даты и времени на вашем компьютере. Остается только перестраивать базу блоков, если вы уверены, что дата и время корректны.</translation>
</message>
@@ -3512,6 +3705,14 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>Не удалось повторно сканировать кошелёк во время инициализации</translation>
</message>
<message>
+ <source>Failed to verify database</source>
+ <translation>Не удалось проверить базу данных</translation>
+ </message>
+ <message>
+ <source>Ignoring duplicate -wallet %s.</source>
+ <translation>Игнорировать повторы -wallet %s.</translation>
+ </message>
+ <message>
<source>Importing...</source>
<translation>Выполняется импорт...</translation>
</message>
@@ -3540,6 +3741,30 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>Недопустимая сумма для -fallbackfee=&lt;amount&gt;: '%s'</translation>
</message>
<message>
+ <source>SQLiteDatabase: Failed to execute statement to verify database: %s</source>
+ <translation>SQLiteDatabase: Не удалось произвести проверку базы данных: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to fetch sqlite wallet schema version: %s</source>
+ <translation>SQLiteDatabase: Не удалось загрузить sqlite кошелёк версии: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to fetch the application id: %s</source>
+ <translation>SQLiteDatabase: Не удалось загрузить id приложения: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to prepare statement to verify database: %s</source>
+ <translation>SQLiteDatabase: Не удалось приготовить утверждение для проверки базы данных: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to read database verification error: %s</source>
+ <translation>SQLiteDatabase: Ошибка при проверке базы данных: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Unexpected application id. Expected %u, got %u</source>
+ <translation>SQLiteDatabase: Неожиданный id приложения. Ожидалось %u, а получено %u</translation>
+ </message>
+ <message>
<source>Specified blocks directory "%s" does not exist.</source>
<translation>Указанная директория с блоками "%s" не существует.</translation>
</message>
@@ -3624,6 +3849,14 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>Ошибка: Не удалось начать прослушивание входящих подключений (прослушивание вернуло ошибку %s)</translation>
</message>
<message>
+ <source>%s corrupt. Try using the wallet tool bitcoin-wallet to salvage or restoring a backup.</source>
+ <translation>%s испорчен. Попробуйте восстановить с помощью инструмента bitcoin-wallet, или используйте резервную копию.</translation>
+ </message>
+ <message>
+ <source>Cannot upgrade a non HD split wallet without upgrading to support pre split keypool. Please use version 169900 or no version specified.</source>
+ <translation>Невозможно обновить не разделенный HD кошелёк без обновления для поддержки предварительно разделенного пула ключей. Пожалуйста, используйте версию 169900 или повторите без указания версии.</translation>
+ </message>
+ <message>
<source>Invalid amount for -maxtxfee=&lt;amount&gt;: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions)</source>
<translation>Неверное значение для -maxtxfee=&lt;amount&gt;: '%s' (минимальная комиссия трансляции %s для предотвращения зависания транзакций)</translation>
</message>
@@ -3632,10 +3865,34 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>Сумма транзакции за вычетом комиссии слишком мала</translation>
</message>
<message>
+ <source>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>
+ <translation>Данная ошибка может произойти в том случае, если этот кошелёк не был правильно закрыт и в последний раз был загружен используя версию с более новой версией Berkley DB. Если это так, воспользуйтесь той программой, в которой этот кошелёк открывался в последний раз.</translation>
+ </message>
+ <message>
+ <source>This is the maximum transaction fee you pay (in addition to the normal fee) to prioritize partial spend avoidance over regular coin selection.</source>
+ <translation>Это максимальная транзакция, которую вы заплатите (в добавок к обычной плате) для избежания затрат по причине отбора монет.</translation>
+ </message>
+ <message>
+ <source>Transaction needs a change address, but we can't generate it. Please call keypoolrefill first.</source>
+ <translation>Для транзакции требуется адрес сдачи, но сгенерировать его не удалось. Пожалуйста, сначала выполните keypoolrefill.</translation>
+ </message>
+ <message>
<source>You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain</source>
<translation>Вам необходимо пересобрать базу данных с помощью -reindex, чтобы вернуться к полному режиму. Это приведёт к перезагрузке всей цепи блоков</translation>
</message>
<message>
+ <source>A fatal internal error occurred, see debug.log for details</source>
+ <translation>Ошибка: произошла критическая внутренняя ошибка, для получения деталей см. debug.log</translation>
+ </message>
+ <message>
+ <source>Cannot set -peerblockfilters without -blockfilterindex.</source>
+ <translation>Не удалось поставить -peerblockfilters без использования -blockfilterindex.</translation>
+ </message>
+ <message>
+ <source>Disk space is too low!</source>
+ <translation>Мало места на диске!</translation>
+ </message>
+ <message>
<source>Error reading from database, shutting down.</source>
<translation>Ошибка чтения с базы данных, выполняется закрытие.</translation>
</message>
@@ -3648,6 +3905,14 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>Ошибка: На диске недостаточно места для %s</translation>
</message>
<message>
+ <source>Error: Keypool ran out, please call keypoolrefill first</source>
+ <translation>Пул ключей опустел, пожалуйста сначала выполните keypoolrefill</translation>
+ </message>
+ <message>
+ <source>Fee rate (%s) is lower than the minimum fee rate setting (%s)</source>
+ <translation>Количество комисии (%s) меньше чем настроенное минимальное количество комисии (%s).</translation>
+ </message>
+ <message>
<source>Invalid -onion address or hostname: '%s'</source>
<translation>Неверный -onion адрес или имя хоста: '%s'</translation>
</message>
@@ -3668,6 +3933,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>Необходимо указать порт с -whitebind: '%s'</translation>
</message>
<message>
+ <source>No proxy server specified. Use -proxy=&lt;ip&gt; or -proxy=&lt;ip:port&gt;.</source>
+ <translation>Не указан прокси сервер. Используйте -proxy=&lt;ip&gt; или -proxy=&lt;ip:port&gt;</translation>
+ </message>
+ <message>
<source>Prune mode is incompatible with -blockfilterindex.</source>
<translation>Режим удаления блоков несовместим с -blockfilterindex.</translation>
</message>
@@ -3758,10 +4027,6 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>%s задан слишком высоким!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>Ошибка загрузки кошелька %s. Задано повторяющееся имя файла.</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>Запуск сетевых потоков...</translation>
</message>
diff --git a/src/qt/locale/bitcoin_sk.ts b/src/qt/locale/bitcoin_sk.ts
index 6550da8232..6fe8859a8f 100644
--- a/src/qt/locale/bitcoin_sk.ts
+++ b/src/qt/locale/bitcoin_sk.ts
@@ -830,7 +830,7 @@
<source>Create</source>
<translation>Vytvoriť</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -3681,10 +3681,6 @@ Poznámka: Keďže poplatok je počítaný za bajt, poplatok o hodnote "100 sato
<translation>Hodnota %s je nastavená veľmi vysoko!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>Chyba pri načítaní peňaženky %s. Zadaný duplicitný názov súboru -wallet.</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>Spúšťajú sa sieťové vlákna...</translation>
</message>
diff --git a/src/qt/locale/bitcoin_sl.ts b/src/qt/locale/bitcoin_sl.ts
index f2cd56aab5..9f1d2bba74 100644
--- a/src/qt/locale/bitcoin_sl.ts
+++ b/src/qt/locale/bitcoin_sl.ts
@@ -884,6 +884,10 @@ Podpisovanje je možno le s podedovanimi ("legacy") naslovi.</translation>
<source>Create</source>
<translation>Ustvari</translation>
</message>
+ <message>
+ <source>Compiled without sqlite support (required for descriptor wallets)</source>
+ <translation>Prevedeno brez podpore za SQLite (potrebna za deskriptorske denarnice)</translation>
+ </message>
</context>
<context>
<name>EditAddressDialog</name>
@@ -3580,6 +3584,18 @@ Za odpiranje denarnice kliknite Datoteka &gt; Odpri denarnico
<translation>Prosimo, prispevajte, če se vam zdi %s uporaben. Za dodatne informacije o programski opremi obiščite %s.</translation>
</message>
<message>
+ <source>SQLiteDatabase: Failed to prepare the statement to fetch sqlite wallet schema version: %s</source>
+ <translation>Baza SQLite: priprava stavka za poizvedbo verzije sheme SQLite denarnice je spodletela: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to prepare the statement to fetch the application id: %s</source>
+ <translation>Baza SQLite: priprava stavka za poizvedbo identifikatorja aplikacije je spodletela: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Unknown sqlite wallet schema version %d. Only version %d is supported</source>
+ <translation>Baza SQLite: Neznana verzija sheme SQLite denarnice %d. Podprta je le verzija %d.</translation>
+ </message>
+ <message>
<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>Baza podatkov blokov vsebuje blok, za katerega se zdi, da je iz prihodnosti. To je lahko posledica napačnega nastavitve datuma in časa vašega računalnika. Znova zgradite bazo podatkov samo, če ste prepričani, da sta datum in čas računalnika pravilna.</translation>
</message>
@@ -3684,6 +3700,10 @@ Za odpiranje denarnice kliknite Datoteka &gt; Odpri denarnico
<translation>Med inicializacijo denarnice ni bilo mogoče preveriti zgodovine (rescan failed).</translation>
</message>
<message>
+ <source>Failed to verify database</source>
+ <translation>Preverba podatkovne baze je spodletela.</translation>
+ </message>
+ <message>
<source>Importing...</source>
<translation>Uvažam ...</translation>
</message>
@@ -3712,6 +3732,30 @@ Za odpiranje denarnice kliknite Datoteka &gt; Odpri denarnico
<translation>Neveljavna količina za -fallbackfee=&lt;amount&gt;: '%s'</translation>
</message>
<message>
+ <source>SQLiteDatabase: Failed to execute statement to verify database: %s</source>
+ <translation>Baza SQLite: Izvršitev stavka za preverbo baze je spodletela: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to fetch sqlite wallet schema version: %s</source>
+ <translation>Baza SQLite: pridobitev verzije sheme SQLite denarnice je spodletela: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to fetch the application id: %s</source>
+ <translation>Baza SQLite: pridobitev identifikatorja aplikacije je spodletela: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to prepare statement to verify database: %s</source>
+ <translation>Baza SQLite: priprava stavka za preverbo baze je spodletela: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to read database verification error: %s</source>
+ <translation>Baza SQLite: branje napake pri preverjanje baze je spodletelo: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Unexpected application id. Expected %u, got %u</source>
+ <translation>Baza SQLite: nepričakovan identifikator aplikacije. Pričakovana vrednost je %u, dobljena vrednost je %u.</translation>
+ </message>
+ <message>
<source>Specified blocks directory "%s" does not exist.</source>
<translation>Vnešena podatkovna mapa za bloke "%s" ne obstaja.</translation>
</message>
@@ -3962,10 +4006,6 @@ Za odpiranje denarnice kliknite Datoteka &gt; Odpri denarnico
<translation>%s je postavljen zelo visoko!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>Napaka pri nalaganju denarnice %s. Ime denarnice (parameter -wallet) je podvojeno.</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>Začenjam omrežne niti ...</translation>
</message>
diff --git a/src/qt/locale/bitcoin_sq.ts b/src/qt/locale/bitcoin_sq.ts
index feece83f0c..4fae82128d 100644
--- a/src/qt/locale/bitcoin_sq.ts
+++ b/src/qt/locale/bitcoin_sq.ts
@@ -26,10 +26,18 @@
<translation>Fshi adresen e selektuar nga lista</translation>
</message>
<message>
+ <source>Enter address or label to search</source>
+ <translation>Vendos adresën ose etiketën për të kërkuar</translation>
+ </message>
+ <message>
<source>Export the data in the current tab to a file</source>
<translation>Eksporto të dhënat e skedës korrente në një skedar</translation>
</message>
<message>
+ <source>&amp;Export</source>
+ <translation>&amp;Eksporto</translation>
+ </message>
+ <message>
<source>&amp;Delete</source>
<translation>&amp;Fshi</translation>
</message>
@@ -164,6 +172,18 @@
<translation>Jepe fjalëkalimin e vjetër dhe fjalkalimin e ri për portofolin.</translation>
</message>
<message>
+ <source>Wallet to be encrypted</source>
+ <translation>Portofoli që duhet të enkriptohet</translation>
+ </message>
+ <message>
+ <source>Your wallet is about to be encrypted. </source>
+ <translation>Portofoli juaj do të enkriptohet</translation>
+ </message>
+ <message>
+ <source>Your wallet is now encrypted. </source>
+ <translation>Portofoli juaj është i enkriptuar.</translation>
+ </message>
+ <message>
<source>Wallet encryption failed</source>
<translation>Enkriptimi i portofolit dështoi</translation>
</message>
@@ -218,6 +238,10 @@
<translation>Mbyllni aplikacionin</translation>
</message>
<message>
+ <source>Show information about Qt</source>
+ <translation>Shfaq informacion rreth Qt</translation>
+ </message>
+ <message>
<source>&amp;Options...</source>
<translation>&amp;Opsione</translation>
</message>
@@ -763,6 +787,10 @@
<context>
<name>WalletView</name>
<message>
+ <source>&amp;Export</source>
+ <translation>&amp;Eksporto</translation>
+ </message>
+ <message>
<source>Export the data in the current tab to a file</source>
<translation>Eksporto të dhënat e skedës korrente në një skedar</translation>
</message>
diff --git a/src/qt/locale/bitcoin_sr.ts b/src/qt/locale/bitcoin_sr.ts
index 81741a5c60..ecdcceb0c2 100644
--- a/src/qt/locale/bitcoin_sr.ts
+++ b/src/qt/locale/bitcoin_sr.ts
@@ -836,7 +836,7 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Create</source>
<translation>Направи</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -3742,10 +3742,6 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>%s је постављен врло високо!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>Грешка приликом учитавања новчаника %s. Наведено је дуплирано име датотеке -wallet.</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>Покретање мрежних тема...</translation>
</message>
diff --git a/src/qt/locale/bitcoin_sv.ts b/src/qt/locale/bitcoin_sv.ts
index 3aa4cb9ce9..251c268b55 100644
--- a/src/qt/locale/bitcoin_sv.ts
+++ b/src/qt/locale/bitcoin_sv.ts
@@ -831,7 +831,7 @@ Försök igen.</translation>
<source>Create</source>
<translation>Skapa</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -3633,10 +3633,6 @@ Notera: Då avgiften beräknas per byte kommer en avgift på 50 satoshi tas ut f
<translation>%s är satt väldigt högt!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>Fel vid inläsningen av plånbok %s. Dublett -wallet filnamn angavs.</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>Startar nätverkstrådar...</translation>
</message>
diff --git a/src/qt/locale/bitcoin_szl.ts b/src/qt/locale/bitcoin_szl.ts
index 489a873ceb..9b00ac58d2 100644
--- a/src/qt/locale/bitcoin_szl.ts
+++ b/src/qt/locale/bitcoin_szl.ts
@@ -1934,10 +1934,6 @@
<translation>Imyntnŏ dugość kety wersyje (%i) przekrŏczŏ maksymalnõ dopuszczalnõ dugość (%i). Zmyńsz wielość abo miara parametra uacomment.</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>Feler w czasie wgrŏwaniŏ portmanyja %s. Podanŏ tuplowane miano zbioru w -wallet.</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>Sztartowanie wōntkōw necowych...</translation>
</message>
diff --git a/src/qt/locale/bitcoin_ta.ts b/src/qt/locale/bitcoin_ta.ts
index 9bbd853c9d..41aa7e94eb 100644
--- a/src/qt/locale/bitcoin_ta.ts
+++ b/src/qt/locale/bitcoin_ta.ts
@@ -478,6 +478,14 @@
<translation>தேதி வரை</translation>
</message>
<message>
+ <source>Node window</source>
+ <translation>நோட் விண்டோ</translation>
+ </message>
+ <message>
+ <source>Open node debugging and diagnostic console</source>
+ <translation>திற நோட் பிழைத்திருத்தம் மற்றும் கண்டறியும் பணியகம்</translation>
+ </message>
+ <message>
<source>&amp;Sending addresses</source>
<translation>முகவரிகள் அனுப்புகிறது</translation>
</message>
@@ -486,6 +494,10 @@
<translation>முகவரிகள் பெறுதல்</translation>
</message>
<message>
+ <source>Open a bitcoin: URI</source>
+ <translation>திற பிட்காயின்: URI</translation>
+ </message>
+ <message>
<source>Open Wallet</source>
<translation>வாலட்டை திற</translation>
</message>
@@ -818,7 +830,7 @@
<source>Create</source>
<translation>உருவாக்கு</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -1440,6 +1452,10 @@
<translation>'bitcoin: //' சரியான URI அல்ல. அதற்கு பதிலாக 'பிட்கின்:' பயன்படுத்தவும்.</translation>
</message>
<message>
+ <source>Cannot process payment request because BIP70 is not supported.</source>
+ <translation>பரிவர்த்தனை வேண்டுதலை ஏற்க இயலாது ஏனென்றால் BIP70 ஆதரவு தரவில்லை</translation>
+ </message>
+ <message>
<source>Due to widespread security flaws in BIP70 it's strongly recommended that any merchant instructions to switch wallets be ignored.</source>
<translation>பிப்70 இல் உள்ள பரவலான பாதுகாப்பு குறைபாடுகள் காரணமாக, வாலட்டை மாற்றுவதற்கான எந்தவொரு வணிக அறிவுறுத்தல்களும் புறக்கணிக்கப்பட வேண்டும் என்று கடுமையாக பரிந்துரைக்கப்படுகிறது.</translation>
</message>
@@ -1724,6 +1740,10 @@
<translation>பயனர் முகவர்</translation>
</message>
<message>
+ <source>Node window</source>
+ <translation>நோட் விண்டோ</translation>
+ </message>
+ <message>
<source>Open the %1 debug log file from the current data directory. This can take a few seconds for large log files.</source>
<translation>தற்போதைய தரவு அடைவில் இருந்து %1 பிழைத்திருத்த பதிவு கோப்பைத் திறக்கவும். இது பெரிய பதிவு கோப்புகளை சில விநாடிகள் எடுக்கலாம்.</translation>
</message>
@@ -2280,6 +2300,14 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>அனுப்பும் பிட்காயின்களை உறுதிப்படுத்தவும்</translation>
</message>
<message>
+ <source>Confirm transaction proposal</source>
+ <translation>பரிவர்த்தனை வரைவு உறுதி செய்</translation>
+ </message>
+ <message>
+ <source>Send</source>
+ <translation>அனுப்புவும்</translation>
+ </message>
+ <message>
<source>The recipient address is not valid. Please recheck.</source>
<translation>பெறுநரின் முகவரி தவறானது. மீண்டும் சரிபார்க்கவும்.</translation>
</message>
@@ -2521,6 +2549,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>வாலட் திறத்தல் ரத்து செய்யப்பட்டது.</translation>
</message>
<message>
+ <source>No error</source>
+ <translation>தவறு எதுவுமில்லை</translation>
+ </message>
+ <message>
<source>Private key for the entered address is not available.</source>
<translation>உள்ளிட்ட முகவரிக்கான ப்ரைவேட் கீ கிடைக்கவில்லை.</translation>
</message>
@@ -3048,6 +3080,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>கட்டண ஏற்றத்தை உறுதிப்படுத்தவும்</translation>
</message>
<message>
+ <source>Can't draft transaction.</source>
+ <translation>பரிவர்த்தனை செய்ய இயலாது</translation>
+ </message>
+ <message>
<source>Can't sign transaction.</source>
<translation>பரிவர்த்தனையில் கையொப்பமிட முடியவில்லை.</translation>
</message>
diff --git a/src/qt/locale/bitcoin_th.ts b/src/qt/locale/bitcoin_th.ts
index 3da787dfb4..7d006a6488 100644
--- a/src/qt/locale/bitcoin_th.ts
+++ b/src/qt/locale/bitcoin_th.ts
@@ -552,7 +552,7 @@
<source>Create</source>
<translation>สร้าง</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
diff --git a/src/qt/locale/bitcoin_tr.ts b/src/qt/locale/bitcoin_tr.ts
index ee8608e4f8..dc7c2b83d4 100644
--- a/src/qt/locale/bitcoin_tr.ts
+++ b/src/qt/locale/bitcoin_tr.ts
@@ -3,7 +3,7 @@
<name>AddressBookPage</name>
<message>
<source>Right-click to edit address or label</source>
- <translation>Adres veya etiketi düzenlemek için sağ tıklayın</translation>
+ <translation>Adres veya etiketi düzenlemek için sağ tıklayınız.</translation>
</message>
<message>
<source>Create a new address</source>
@@ -50,6 +50,10 @@
<translation>Coin gönderilecek adresi seçiniz</translation>
</message>
<message>
+ <source>C&amp;hoose</source>
+ <translation>S&amp;ç</translation>
+ </message>
+ <message>
<source>Sending addresses</source>
<translation>Gönderici adresler</translation>
</message>
@@ -86,7 +90,11 @@ Gönderim yapmadan önce her zaman tutarı ve alıcı adresi kontrol ediniz.</tr
<source>Exporting Failed</source>
<translation>Dışa Aktarım Başarısız Oldu</translation>
</message>
- </context>
+ <message>
+ <source>There was an error trying to save the address list to %1. Please try again.</source>
+ <translation>Adres listesinin %1 konumuna kaydedilmesi sırasında bir hata meydana geldi. Lütfen tekrar deneyin.</translation>
+ </message>
+</context>
<context>
<name>AddressTableModel</name>
<message>
@@ -134,6 +142,10 @@ Cüzdan kilidini aç.</translation>
<translation>Cüzdan kilidini aç</translation>
</message>
<message>
+ <source>Decrypt wallet</source>
+ <translation>cüzdan şifresini çöz</translation>
+ </message>
+ <message>
<source>Change passphrase</source>
<translation>Parola değiştir</translation>
</message>
@@ -176,10 +188,26 @@ Cüzdan kilidini aç.</translation>
</context>
<context>
<name>BanTableModel</name>
- </context>
+ <message>
+ <source>IP/Netmask</source>
+ <translation>İP/Ağ maskesi</translation>
+ </message>
+ <message>
+ <source>Banned Until</source>
+ <translation>Kadar Yasaklı</translation>
+ </message>
+</context>
<context>
<name>BitcoinGUI</name>
<message>
+ <source>Sign &amp;message...</source>
+ <translation>&amp;Mesajı imzala ...</translation>
+ </message>
+ <message>
+ <source>Synchronizing with network...</source>
+ <translation>Ağ ile senkronize ediliyor...</translation>
+ </message>
+ <message>
<source>&amp;Overview</source>
<translation>Genel durum</translation>
</message>
@@ -204,10 +232,42 @@ Cüzdan kilidini aç.</translation>
<translation>Uygulamayı kapat</translation>
</message>
<message>
+ <source>Show information about %1</source>
+ <translation>%1 hakkındaki bilgileri göster</translation>
+ </message>
+ <message>
+ <source>About &amp;Qt</source>
+ <translation>&amp;Qt hakkında</translation>
+ </message>
+ <message>
+ <source>Show information about Qt</source>
+ <translation>Qt hakkındaki bilgileri göster</translation>
+ </message>
+ <message>
<source>&amp;Options...</source>
<translation>Seçenekler</translation>
</message>
<message>
+ <source>Modify configuration options for %1</source>
+ <translation>%1 için yapılandırma seçeneklerini değiştirin</translation>
+ </message>
+ <message>
+ <source>&amp;Encrypt Wallet...</source>
+ <translation>Cüzdan &amp;Şifrelemek...</translation>
+ </message>
+ <message>
+ <source>&amp;Backup Wallet...</source>
+ <translation>Cüzdanı &amp;Yedekle</translation>
+ </message>
+ <message>
+ <source>&amp;Change Passphrase...</source>
+ <translation>Parola &amp;Değiştir...</translation>
+ </message>
+ <message>
+ <source>Open &amp;URI...</source>
+ <translation>&amp;URI aç...</translation>
+ </message>
+ <message>
<source>Create Wallet...</source>
<translation>Cüzdan oluştur</translation>
</message>
@@ -220,6 +280,10 @@ Cüzdan kilidini aç.</translation>
<translation>Cüzdan</translation>
</message>
<message>
+ <source>Click to disable network activity.</source>
+ <translation>Ağ etkinliğini devre dışı bırakmak için tıklayın.</translation>
+ </message>
+ <message>
<source>Network activity disabled.</source>
<translation>Network aktivitesi devre dışı bırakıldı</translation>
</message>
@@ -228,6 +292,14 @@ Cüzdan kilidini aç.</translation>
<translation>Network activitesini serbest bırakmak için tıklayınız</translation>
</message>
<message>
+ <source>Syncing Headers (%1%)...</source>
+ <translation>Bağlantılar senkronize ediliyor (%1%)...</translation>
+ </message>
+ <message>
+ <source>Reindexing blocks on disk...</source>
+ <translation>Diskteki blokları yeniden indeksleme ...</translation>
+ </message>
+ <message>
<source>&amp;Verify message...</source>
<translation>Mesajı doğrula</translation>
</message>
@@ -236,6 +308,10 @@ Cüzdan kilidini aç.</translation>
<translation>Gönder</translation>
</message>
<message>
+ <source>&amp;Receive</source>
+ <translation>&amp;Teslim alınan</translation>
+ </message>
+ <message>
<source>&amp;Show / Hide</source>
<translation>Göster / Gizle</translation>
</message>
@@ -256,6 +332,10 @@ Cüzdan kilidini aç.</translation>
<translation>Yardım</translation>
</message>
<message>
+ <source>Tabs toolbar</source>
+ <translation>Araç çubuğu sekmeleri</translation>
+ </message>
+ <message>
<source>&amp;Command-line options</source>
<translation>Komut-satırı seçenekleri</translation>
</message>
@@ -272,6 +352,10 @@ Cüzdan kilidini aç.</translation>
<translation>Bilgi</translation>
</message>
<message>
+ <source>Up to date</source>
+ <translation>Güncel</translation>
+ </message>
+ <message>
<source>Open Wallet</source>
<translation>Cüzdanı aç</translation>
</message>
@@ -404,7 +488,7 @@ Cüzdan kilidini aç.</translation>
<source>Create</source>
<translation>Oluştur</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -835,5 +919,53 @@ Cüzdan kilidini aç.</translation>
</context>
<context>
<name>bitcoin-core</name>
- </context>
+ <message>
+ <source>Verifying wallet(s)...</source>
+ <translation>Cüzdan(lar) kontrol ediliyor...</translation>
+ </message>
+ <message>
+ <source>%s is set very high!</source>
+ <translation>%s çok yüksek ayarlanmış!</translation>
+ </message>
+ <message>
+ <source>Starting network threads...</source>
+ <translation>Ağ dizisi başlatılıyor...</translation>
+ </message>
+ <message>
+ <source>The wallet will avoid paying less than the minimum relay fee.</source>
+ <translation>Cüzdan en az aktarma ücretinden daha az ödeme yapmaktan sakınacaktır.</translation>
+ </message>
+ <message>
+ <source>This is the minimum transaction fee you pay on every transaction.</source>
+ <translation>Bu her işlemde ödeceğiniz en düşük işlem ücretidir.</translation>
+ </message>
+ <message>
+ <source>This is the transaction fee you will pay if you send a transaction.</source>
+ <translation>Eğer bir gönderme işlemi yaparsanız ödeyeceğiniz işlem ücreti budur.</translation>
+ </message>
+ <message>
+ <source>Transaction amounts must not be negative</source>
+ <translation>İşlem tutarı negatif olmamalıdır.</translation>
+ </message>
+ <message>
+ <source>Transaction must have at least one recipient</source>
+ <translation>İşlem en az bir adet alıcıya sahip olmalı.</translation>
+ </message>
+ <message>
+ <source>Insufficient funds</source>
+ <translation>Yetersiz bakiye</translation>
+ </message>
+ <message>
+ <source>Loading wallet...</source>
+ <translation>Cüzdan yükleniyor...</translation>
+ </message>
+ <message>
+ <source>Rescanning...</source>
+ <translation>Yeniden taranıyor...</translation>
+ </message>
+ <message>
+ <source>Done loading</source>
+ <translation>Yükleme tamamlandı.</translation>
+ </message>
+</context>
</TS> \ No newline at end of file
diff --git a/src/qt/locale/bitcoin_uk.ts b/src/qt/locale/bitcoin_uk.ts
index 6675185cb7..88d7924040 100644
--- a/src/qt/locale/bitcoin_uk.ts
+++ b/src/qt/locale/bitcoin_uk.ts
@@ -488,10 +488,18 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation>&amp;Завантажити PSBT з файлу...</translation>
</message>
<message>
+ <source>Load Partially Signed Bitcoin Transaction</source>
+ <translation>Завантажте Частково Підписану Транзакцію Біткойн</translation>
+ </message>
+ <message>
<source>Load PSBT from clipboard...</source>
<translation>Скопіювати PSBT у буфер обміну</translation>
</message>
<message>
+ <source>Load Partially Signed Bitcoin Transaction from clipboard</source>
+ <translation>Завантажте Частково Підписану Біткойн Транзакцію з буфера обміну</translation>
+ </message>
+ <message>
<source>Node window</source>
<translation>Вікно вузлів</translation>
</message>
@@ -540,6 +548,14 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation>Показати довідку %1 для отримання переліку можливих параметрів командного рядка.</translation>
</message>
<message>
+ <source>&amp;Mask values</source>
+ <translation>&amp;Значення маски</translation>
+ </message>
+ <message>
+ <source>Mask the values in the Overview tab</source>
+ <translation>Маскуйте значення на вкладці Огляд</translation>
+ </message>
+ <message>
<source>default wallet</source>
<translation>типовий гаманець</translation>
</message>
@@ -651,7 +667,11 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Original message:</source>
<translation>Первинне повідомлення:</translation>
</message>
- </context>
+ <message>
+ <source>A fatal error occurred. %1 can no longer continue safely and will quit.</source>
+ <translation>Сталася фатальна помилка. %1 більше не може продовжувати безпечно і вийде.</translation>
+ </message>
+</context>
<context>
<name>CoinControlDialog</name>
<message>
@@ -853,10 +873,18 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation>Створити пустий гаманець</translation>
</message>
<message>
+ <source>Use descriptors for scriptPubKey management</source>
+ <translation>Використовуйте дескриптори для управління scriptPubKey</translation>
+ </message>
+ <message>
+ <source>Descriptor Wallet</source>
+ <translation>Дешифрування гаманця</translation>
+ </message>
+ <message>
<source>Create</source>
<translation>Створити</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -1325,6 +1353,14 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation>Показати або сховати керування входами.</translation>
</message>
<message>
+ <source>Connect to the Bitcoin network through a separate SOCKS5 proxy for Tor onion services.</source>
+ <translation>Підключіться до мережі Біткойн через окремий проксі-сервер SOCKS5 для сервісів Tor.</translation>
+ </message>
+ <message>
+ <source>Use separate SOCKS&amp;5 proxy to reach peers via Tor onion services:</source>
+ <translation>Використовуйте окремий проксі-сервер SOCKS&amp;5, щоб дістатися до вузлів через послуги Tor:</translation>
+ </message>
+ <message>
<source>&amp;Third party transaction URLs</source>
<translation>&amp;URL-адреси транзакцій сторонніх розробників</translation>
</message>
@@ -1459,7 +1495,11 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Current total balance in watch-only addresses</source>
<translation>Поточний сукупний баланс в адресах для спостереження</translation>
</message>
- </context>
+ <message>
+ <source>Privacy mode activated for the Overview tab. To unmask the values, uncheck Settings-&gt;Mask values.</source>
+ <translation>Режим конфіденційності активований для вкладки Огляд. Щоб демаскувати значення, зніміть прапорець Параметри-&gt; Маскувати значення.</translation>
+ </message>
+</context>
<context>
<name>PSBTOperationsDialog</name>
<message>
@@ -1467,6 +1507,14 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation>Діалог</translation>
</message>
<message>
+ <source>Sign Tx</source>
+ <translation>Знак Tx</translation>
+ </message>
+ <message>
+ <source>Broadcast Tx</source>
+ <translation>Трансляція Tx</translation>
+ </message>
+ <message>
<source>Copy to Clipboard</source>
<translation>Копіювати у буфер обміну</translation>
</message>
@@ -1479,6 +1527,66 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation>Завершити</translation>
</message>
<message>
+ <source>Failed to load transaction: %1</source>
+ <translation>Не вдалося завантажити транзакцію: %1</translation>
+ </message>
+ <message>
+ <source>Failed to sign transaction: %1</source>
+ <translation>Не вдалося підписати транзакцію: %1</translation>
+ </message>
+ <message>
+ <source>Could not sign any more inputs.</source>
+ <translation>Не вдалося підписати більше входів.</translation>
+ </message>
+ <message>
+ <source>Signed %1 inputs, but more signatures are still required.</source>
+ <translation>Підписано %1 введення, але все одно потрібно більше підписів.</translation>
+ </message>
+ <message>
+ <source>Signed transaction successfully. Transaction is ready to broadcast.</source>
+ <translation>Угода успішно підписана. Транзакція готова до трансляції.</translation>
+ </message>
+ <message>
+ <source>Unknown error processing transaction.</source>
+ <translation>Невідома помилка обробки транзакції.</translation>
+ </message>
+ <message>
+ <source>Transaction broadcast successfully! Transaction ID: %1</source>
+ <translation>Трансакція успішно транслюється! Ідентифікатор транзакції: %1</translation>
+ </message>
+ <message>
+ <source>Transaction broadcast failed: %1</source>
+ <translation>Помилка трансляції транзакції: %1</translation>
+ </message>
+ <message>
+ <source>PSBT copied to clipboard.</source>
+ <translation>PSBT скопійовано в буфер обміну.</translation>
+ </message>
+ <message>
+ <source>Save Transaction Data</source>
+ <translation>Зберегти дані транзакції</translation>
+ </message>
+ <message>
+ <source>Partially Signed Transaction (Binary) (*.psbt)</source>
+ <translation>Частково підписана транзакція (Binary) (* .psbt)</translation>
+ </message>
+ <message>
+ <source>PSBT saved to disk.</source>
+ <translation>PSBT збережено на диск.</translation>
+ </message>
+ <message>
+ <source> * Sends %1 to %2</source>
+ <translation>* Надсилає від %1 до %2</translation>
+ </message>
+ <message>
+ <source>Unable to calculate transaction fee or total transaction amount.</source>
+ <translation>Неможливо розрахувати комісію за транзакцію або загальну суму транзакції.</translation>
+ </message>
+ <message>
+ <source>Pays transaction fee: </source>
+ <translation>Оплачує комісію за транзакцію:</translation>
+ </message>
+ <message>
<source>Total Amount</source>
<translation>Всього</translation>
</message>
@@ -1486,7 +1594,35 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>or</source>
<translation>або</translation>
</message>
- </context>
+ <message>
+ <source>Transaction has %1 unsigned inputs.</source>
+ <translation>Транзакція містить %1 непідписаних входів.</translation>
+ </message>
+ <message>
+ <source>Transaction is missing some information about inputs.</source>
+ <translation>У транзакції бракує певної інформації про вхідні дані.</translation>
+ </message>
+ <message>
+ <source>Transaction still needs signature(s).</source>
+ <translation>Для транзакції все ще потрібні підпис(и).</translation>
+ </message>
+ <message>
+ <source>(But this wallet cannot sign transactions.)</source>
+ <translation>(Але цей гаманець не може підписувати транзакції.)</translation>
+ </message>
+ <message>
+ <source>(But this wallet does not have the right keys.)</source>
+ <translation>(Але цей гаманець не має правильних ключів.)</translation>
+ </message>
+ <message>
+ <source>Transaction is fully signed and ready for broadcast.</source>
+ <translation>Транзакція повністю підписана і готова до трансляції.</translation>
+ </message>
+ <message>
+ <source>Transaction status is unknown.</source>
+ <translation>Статус транзакції невідомий.</translation>
+ </message>
+</context>
<context>
<name>PaymentServer</name>
<message>
@@ -1652,6 +1788,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation>Помилка: %1</translation>
</message>
<message>
+ <source>Error initializing settings: %1</source>
+ <translation>Помилка ініціалізації налаштувань: %1</translation>
+ </message>
+ <message>
<source>%1 didn't yet exit safely...</source>
<translation>%1 безпечний вихід ще не виконано...</translation>
</message>
@@ -1830,6 +1970,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation>Вікно вузлів</translation>
</message>
<message>
+ <source>Current block height</source>
+ <translation>Поточна висота блоку</translation>
+ </message>
+ <message>
<source>Open the %1 debug log file from the current data directory. This can take a few seconds for large log files.</source>
<translation>Відкрийте файл журналу налагодження %1 з поточного каталогу даних. Це може зайняти кілька секунд для файлів великого розміру.</translation>
</message>
@@ -2108,6 +2252,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<context>
<name>ReceiveRequestDialog</name>
<message>
+ <source>Request payment to ...</source>
+ <translation>Запит на оплату до ...</translation>
+ </message>
+ <message>
<source>Address:</source>
<translation>Адреса:</translation>
</message>
@@ -2394,6 +2542,22 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>Ви впевнені, що хочете відправити?</translation>
</message>
<message>
+ <source>Create Unsigned</source>
+ <translation>Створити без підпису</translation>
+ </message>
+ <message>
+ <source>Save Transaction Data</source>
+ <translation>Зберегти дані транзакції</translation>
+ </message>
+ <message>
+ <source>Partially Signed Transaction (Binary) (*.psbt)</source>
+ <translation>Частково підписана транзакція (Binary) (* .psbt)</translation>
+ </message>
+ <message>
+ <source>PSBT saved</source>
+ <translation>PSBT збережено</translation>
+ </message>
+ <message>
<source>or</source>
<translation>або</translation>
</message>
@@ -2402,6 +2566,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>Ви можете збільшити комісію пізніше (сигналізує Заміна-Через-Комісію, BIP-125).</translation>
</message>
<message>
+ <source>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>
+ <translation>Перегляньте свою пропозицію щодо транзакції. Це призведе до частково Підписаної Транзакції Біткойна (PSBT), яку ви можете зберегти або скопіювати, а потім підписати, наприклад, офлайн-гаманцем %1 або апаратним гаманецем, сумісний з PSBT.</translation>
+ </message>
+ <message>
<source>Please, review your transaction.</source>
<translation>Будь-ласка, перевірте вашу транзакцію.</translation>
</message>
@@ -3227,6 +3395,12 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<context>
<name>WalletFrame</name>
<message>
+ <source>No wallet has been loaded.
+Go to File &gt; Open Wallet to load a wallet.
+- OR -</source>
+ <translation>Жоден гаманець не завантажений. Перейдіть у меню Файл&gt; Відкрити гаманець, щоб завантажити гаманець. - АБО -</translation>
+ </message>
+ <message>
<source>Create a new wallet</source>
<translation>Створити новий гаманець</translation>
</message>
@@ -3305,6 +3479,26 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>Помилка</translation>
</message>
<message>
+ <source>Unable to decode PSBT from clipboard (invalid base64)</source>
+ <translation>Не вдається декодувати PSBT з буфера обміну (недійсний base64)</translation>
+ </message>
+ <message>
+ <source>Load Transaction Data</source>
+ <translation>Завантажити дані транзакції</translation>
+ </message>
+ <message>
+ <source>Partially Signed Transaction (*.psbt)</source>
+ <translation>Частково підписана транзакція (* .psbt)</translation>
+ </message>
+ <message>
+ <source>PSBT file must be smaller than 100 MiB</source>
+ <translation>Файл PSBT повинен бути менше 100 Мб</translation>
+ </message>
+ <message>
+ <source>Unable to decode PSBT</source>
+ <translation>Не вдається декодувати PSBT</translation>
+ </message>
+ <message>
<source>Backup Wallet</source>
<translation>Зробити резервне копіювання гаманця</translation>
</message>
@@ -3372,6 +3566,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>Помилка читання %s! Всі ключі зчитано правильно, але записи в адресній книзі, або дані транзакцій можуть бути відсутніми чи невірними.</translation>
</message>
<message>
+ <source>More than one onion bind address is provided. Using %s for the automatically created Tor onion service.</source>
+ <translation>Надано більше однієї адреси прив'язки служби Tor. Використання %s для автоматично створеної служби Tor.</translation>
+ </message>
+ <message>
<source>Please check that your computer's date and time are correct! If your clock is wrong, %s will not work properly.</source>
<translation>Перевірте правильність дати та часу комп'ютера. Якщо ваш годинник налаштовано невірно, %s не буде працювати належним чином.</translation>
</message>
@@ -3380,6 +3578,18 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>Будь ласка, зробіть внесок, якщо ви знаходите %s корисним. Відвідайте %s для отримання додаткової інформації про програмне забезпечення.</translation>
</message>
<message>
+ <source>SQLiteDatabase: Failed to prepare the statement to fetch sqlite wallet schema version: %s</source>
+ <translation>SQLiteDatabase: Не вдалося підготувати оператор для отримання версії схеми гаманця: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to prepare the statement to fetch the application id: %s</source>
+ <translation>SQLiteDatabase: Не вдалося підготувати оператор для отримання ідентифікатора програми: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Unknown sqlite wallet schema version %d. Only version %d is supported</source>
+ <translation>SQLiteDatabase: Невідома версія схеми гаманця %d. Підтримується лише версія %d</translation>
+ </message>
+ <message>
<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>Схоже, що база даних блоків містить блок з майбутнього. Це може статися із-за некоректно встановленої дати та/або часу. Перебудовуйте базу даних блоків лише тоді, коли ви переконані, що встановлено правильну дату і час</translation>
</message>
@@ -3484,6 +3694,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>Помилка пересканування гаманця під час ініціалізації</translation>
</message>
<message>
+ <source>Failed to verify database</source>
+ <translation>Не вдалося перевірити базу даних</translation>
+ </message>
+ <message>
<source>Importing...</source>
<translation>Імпорт...</translation>
</message>
@@ -3512,6 +3726,30 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>Невірна сума для зарезервованої комісії -fallbackfee=&lt;amount&gt;: '%s'</translation>
</message>
<message>
+ <source>SQLiteDatabase: Failed to execute statement to verify database: %s</source>
+ <translation>SQLiteDatabase: Не вдалося виконати оператор для перевірки бази даних: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to fetch sqlite wallet schema version: %s</source>
+ <translation>QLiteDatabase: Не вдалося отримати версію схеми гаманця: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to fetch the application id: %s</source>
+ <translation>SQLiteDatabase: Не вдалося отримати ідентифікатор програми: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to prepare statement to verify database: %s</source>
+ <translation>SQLiteDatabase: Не вдалося підготувати оператор для перевірки бази даних: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to read database verification error: %s</source>
+ <translation>SQLiteDatabase: Не вдалося прочитати помилку перевірки бази даних: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Unexpected application id. Expected %u, got %u</source>
+ <translation>SQLiteDatabase: Несподіваний ідентифікатор програми. Очікується %u, отримано %u</translation>
+ </message>
+ <message>
<source>Specified blocks directory "%s" does not exist.</source>
<translation>Зазначений каталог блоків "%s" не існує.</translation>
</message>
@@ -3596,6 +3834,14 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>Помилка: Не вдалося налаштувати прослуховування вхідних підключень (listen повернув помилку: %s)</translation>
</message>
<message>
+ <source>%s corrupt. Try using the wallet tool bitcoin-wallet to salvage or restoring a backup.</source>
+ <translation>%s пошкоджено. Спробуйте скористатися інструментом гаманця bitcoin-wallet для відновлення або відновлення резервної копії.</translation>
+ </message>
+ <message>
+ <source>Cannot upgrade a non HD split wallet without upgrading to support pre split keypool. Please use version 169900 or no version specified.</source>
+ <translation>Неможливо оновити спліт-гаманець, що не є HD, без оновлення, щоб підтримати попередньо розділений пул ключів. Будь ласка, використовуйте версію 169900 або не вказану версію.</translation>
+ </message>
+ <message>
<source>Invalid amount for -maxtxfee=&lt;amount&gt;: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions)</source>
<translation>Неприпустима сума для -maxtxfee = &lt;amount&gt;: «%s» ( плата повинна бути, принаймні %s, щоб запобігти зависанню транзакцій)</translation>
</message>
@@ -3604,6 +3850,14 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>Залишок від суми транзакції зі сплатою комісії занадто малий</translation>
</message>
<message>
+ <source>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>
+ <translation>Ця помилка може статися, якщо цей гаманець не було чисто вимкнено і востаннє завантажений за допомогою збірки з новою версією Berkeley DB. Якщо так, будь ласка, використовуйте програмне забезпечення, яке востаннє завантажувало цей гаманець</translation>
+ </message>
+ <message>
+ <source>This is the maximum transaction fee you pay (in addition to the normal fee) to prioritize partial spend avoidance over regular coin selection.</source>
+ <translation>Це максимальна комісія за транзакцію, яку ви сплачуєте (на додаток до звичайної комісії), щоб надавати пріоритет частковому уникненню витрат перед регулярним вибором монет.</translation>
+ </message>
+ <message>
<source>Transaction needs a change address, but we can't generate it. Please call keypoolrefill first.</source>
<translation>Транзакція потребує наявності адреси для отримання решти, але ми не змогли її згенерувати. Будь ласка, спочатку виконайте регенерацію пулу ключів.</translation>
</message>
@@ -3612,6 +3866,18 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>Вам необхідно перебудувати базу даних з використанням -reindex для завантаження повного ланцюжка блоків.</translation>
</message>
<message>
+ <source>A fatal internal error occurred, see debug.log for details</source>
+ <translation>Виникла фатальна внутрішня помилка, див. debug.log для деталей</translation>
+ </message>
+ <message>
+ <source>Cannot set -peerblockfilters without -blockfilterindex.</source>
+ <translation>Неможливо встановити -peerblockfilters без -blockfilterindex.</translation>
+ </message>
+ <message>
+ <source>Disk space is too low!</source>
+ <translation>Місця на диску занадто мало!</translation>
+ </message>
+ <message>
<source>Error reading from database, shutting down.</source>
<translation>Помилка читання бази даних, припиняю роботу.</translation>
</message>
@@ -3624,6 +3890,14 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>Помилка: для %s бракує місця на диску</translation>
</message>
<message>
+ <source>Error: Keypool ran out, please call keypoolrefill first</source>
+ <translation>Помилка: Пул ключів закінчився, потрібно викликати keypoolrefill вдруге</translation>
+ </message>
+ <message>
+ <source>Fee rate (%s) is lower than the minimum fee rate setting (%s)</source>
+ <translation>Ставка комісії (%s) нижча за встановлену мінімальну ставку комісії (%s)</translation>
+ </message>
+ <message>
<source>Invalid -onion address or hostname: '%s'</source>
<translation>Невірна -onion адреса або ім'я хоста: '%s'</translation>
</message>
@@ -3644,6 +3918,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>Необхідно вказати порт для -whitebind: «%s»</translation>
</message>
<message>
+ <source>No proxy server specified. Use -proxy=&lt;ip&gt; or -proxy=&lt;ip:port&gt;.</source>
+ <translation>Не вказано проксі-сервер. Використовуйте -проксі=&lt;ip&gt; або -проксі=&lt;ip:port&gt;.</translation>
+ </message>
+ <message>
<source>Prune mode is incompatible with -blockfilterindex.</source>
<translation>Використання скороченого ланцюжка блоків несумісне з параметром -blockfilterindex.</translation>
</message>
@@ -3733,10 +4011,6 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<translation>%s встановлено дуже високо!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>Помилка завантаження гаманця %s. Значення параметра -wallet дублюється.</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>Запуск мережевих потоків...</translation>
</message>
diff --git a/src/qt/locale/bitcoin_vi.ts b/src/qt/locale/bitcoin_vi.ts
index 192442d6b9..e19df90394 100644
--- a/src/qt/locale/bitcoin_vi.ts
+++ b/src/qt/locale/bitcoin_vi.ts
@@ -830,7 +830,7 @@
<source>Create</source>
<translation>Tạo</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -3664,10 +3664,6 @@ Lưu ý: Vì phí được tính trên cơ sở mỗi byte, nên phí "100 satos
<translation>%s is set very high!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>Error loading wallet %s. Duplicate -wallet filename specified.</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>Starting network threads...</translation>
</message>
diff --git a/src/qt/locale/bitcoin_zh-Hans.ts b/src/qt/locale/bitcoin_zh-Hans.ts
index efa3982fb2..93335756f2 100644
--- a/src/qt/locale/bitcoin_zh-Hans.ts
+++ b/src/qt/locale/bitcoin_zh-Hans.ts
@@ -30,6 +30,10 @@
<translation>从列表删除选定的地址</translation>
</message>
<message>
+ <source>Enter address or label to search</source>
+ <translation>输入地址或者标签进行搜索</translation>
+ </message>
+ <message>
<source>Export the data in the current tab to a file</source>
<translation>导出当前数据到文件</translation>
</message>
@@ -66,6 +70,12 @@
<translation>这是你的比特币发币地址。发送前请确认发送数量和接收地址</translation>
</message>
<message>
+ <source>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>
+ <translation>这是你的比特币接收地址。点击接收选项卡中“创建新的接收地址”按钮来创建新的地址。
+签名只能使用“传统”类型的地址。</translation>
+ </message>
+ <message>
<source>&amp;Copy Address</source>
<translation>复制地址</translation>
</message>
@@ -112,9 +122,41 @@
<context>
<name>AskPassphraseDialog</name>
<message>
+ <source>Passphrase Dialog</source>
+ <translation>密码对话框</translation>
+ </message>
+ <message>
+ <source>Enter passphrase</source>
+ <translation>输入密码</translation>
+ </message>
+ <message>
+ <source>New passphrase</source>
+ <translation>新密码</translation>
+ </message>
+ <message>
+ <source>Repeat new passphrase</source>
+ <translation>重复输入新密码</translation>
+ </message>
+ <message>
+ <source>Show passphrase</source>
+ <translation>显示密码</translation>
+ </message>
+ <message>
<source>Encrypt wallet</source>
<translation>加密钱包</translation>
</message>
+ <message>
+ <source>This operation needs your wallet passphrase to unlock the wallet.</source>
+ <translation>此操作需要您的钱包密码用来解锁钱包。</translation>
+ </message>
+ <message>
+ <source>Unlock wallet</source>
+ <translation>解锁钱包</translation>
+ </message>
+ <message>
+ <source>This operation needs your wallet passphrase to decrypt the wallet.</source>
+ <translation>此操作需要您的钱包密码用来解密钱包。</translation>
+ </message>
</context>
<context>
<name>BanTableModel</name>
diff --git a/src/qt/locale/bitcoin_zh_CN.ts b/src/qt/locale/bitcoin_zh_CN.ts
index 5a3808820d..e469490201 100644
--- a/src/qt/locale/bitcoin_zh_CN.ts
+++ b/src/qt/locale/bitcoin_zh_CN.ts
@@ -884,6 +884,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Create</source>
<translation>创建</translation>
</message>
+ <message>
+ <source>Compiled without sqlite support (required for descriptor wallets)</source>
+ <translation>编译时未启用SQLite支持(输出描述符钱包需要它)</translation>
+ </message>
</context>
<context>
<name>EditAddressDialog</name>
@@ -2599,7 +2603,7 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
</message>
<message>
<source>Confirm transaction proposal</source>
- <translation>确认交易提案</translation>
+ <translation>确认交易请求</translation>
</message>
<message>
<source>Send</source>
@@ -3572,6 +3576,10 @@ Go to File &gt; Open Wallet to load a wallet.
<translation>读取 %s 时发生错误!所有的密钥都可以正确读取,但是交易记录或地址簿数据可能已经丢失或出错。</translation>
</message>
<message>
+ <source>More than one onion bind address is provided. Using %s for the automatically created Tor onion service.</source>
+ <translation>提供多个洋葱路由绑定地址。对自动创建的洋葱服务用%s</translation>
+ </message>
+ <message>
<source>Please check that your computer's date and time are correct! If your clock is wrong, %s will not work properly.</source>
<translation>请检查电脑的日期时间设置是否正确!时间错误可能会导致 %s 运行异常。</translation>
</message>
@@ -3580,6 +3588,18 @@ Go to File &gt; Open Wallet to load a wallet.
<translation>如果你认为%s对你比较有用的话,请对我们进行一些自愿贡献。请访问%s网站来获取有关这个软件的更多信息。</translation>
</message>
<message>
+ <source>SQLiteDatabase: Failed to prepare the statement to fetch sqlite wallet schema version: %s</source>
+ <translation>SQLiteDatabase: 预处理用于获取SQLite钱包schema版本的语句时失败: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to prepare the statement to fetch the application id: %s</source>
+ <translation>SQLiteDatabase: 预处理用于获取应用ID的语句时失败: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Unknown sqlite wallet schema version %d. Only version %d is supported</source>
+ <translation>SQLiteDatabase: SQLite钱包schema版本%d未知。只支持%d版本</translation>
+ </message>
+ <message>
<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>区块数据库包含未来的交易,这可能是由本机错误的日期时间引起。若确认本机日期时间正确,请重新建立区块数据库。</translation>
</message>
@@ -3684,6 +3704,14 @@ Go to File &gt; Open Wallet to load a wallet.
<translation>初始化时重扫描钱包失败</translation>
</message>
<message>
+ <source>Failed to verify database</source>
+ <translation>校验数据库失败</translation>
+ </message>
+ <message>
+ <source>Ignoring duplicate -wallet %s.</source>
+ <translation>忽略重复的 -wallet %s。</translation>
+ </message>
+ <message>
<source>Importing...</source>
<translation>导入中...</translation>
</message>
@@ -3712,6 +3740,26 @@ Go to File &gt; Open Wallet to load a wallet.
<translation>参数 -fallbackfee=&lt;amount&gt;: '%s' 指定了无效的金额</translation>
</message>
<message>
+ <source>SQLiteDatabase: Failed to execute statement to verify database: %s</source>
+ <translation>SQLiteDatabase: 执行校验数据库语句时失败: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to fetch sqlite wallet schema version: %s</source>
+ <translation>SQLiteDatabase: 获取SQLite钱包schema版本时失败: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to prepare statement to verify database: %s</source>
+ <translation>SQLiteDatabase: 预处理用于校验数据库的语句时失败: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Failed to read database verification error: %s</source>
+ <translation>SQLiteDatabase: 读取数据库失败校验错误: %s</translation>
+ </message>
+ <message>
+ <source>SQLiteDatabase: Unexpected application id. Expected %u, got %u</source>
+ <translation>SQLiteDatabase: 意料之外的应用ID。预期为%u,实际为%u</translation>
+ </message>
+ <message>
<source>Specified blocks directory "%s" does not exist.</source>
<translation>指定的区块目录"%s"不存在。</translation>
</message>
@@ -3974,10 +4022,6 @@ Go to File &gt; Open Wallet to load a wallet.
<translation>%s非常高!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>加载钱包 %s 出错。 重复指定了 -wallet 文件名。</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>正在启动网络线程...</translation>
</message>
diff --git a/src/qt/locale/bitcoin_zh_TW.ts b/src/qt/locale/bitcoin_zh_TW.ts
index 2b71aed2f9..f31297785e 100644
--- a/src/qt/locale/bitcoin_zh_TW.ts
+++ b/src/qt/locale/bitcoin_zh_TW.ts
@@ -871,7 +871,7 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Create</source>
<translation>產生</translation>
</message>
-</context>
+ </context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -3885,10 +3885,6 @@ Go to File &gt; Open Wallet to load a wallet.
<translation>%s 的設定值異常大!</translation>
</message>
<message>
- <source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
- <translation>載入錢包檔 %s 失敗。-wallet 參數指定了重複的檔名。</translation>
- </message>
- <message>
<source>Starting network threads...</source>
<translation>正在啟動網路執行緒...</translation>
</message>
diff --git a/src/rpc/client.cpp b/src/rpc/client.cpp
index 88c8ebe1f6..042005b9a6 100644
--- a/src/rpc/client.cpp
+++ b/src/rpc/client.cpp
@@ -41,7 +41,8 @@ static const CRPCConvertParam vRPCConvertParams[] =
{ "sendtoaddress", 5 , "replaceable" },
{ "sendtoaddress", 6 , "conf_target" },
{ "sendtoaddress", 8, "avoid_reuse" },
- { "sendtoaddress", 9, "verbose"},
+ { "sendtoaddress", 9, "fee_rate"},
+ { "sendtoaddress", 10, "verbose"},
{ "settxfee", 0, "amount" },
{ "sethdseed", 0, "newkeypool" },
{ "getreceivedbyaddress", 1, "minconf" },
@@ -73,7 +74,8 @@ static const CRPCConvertParam vRPCConvertParams[] =
{ "sendmany", 4, "subtractfeefrom" },
{ "sendmany", 5 , "replaceable" },
{ "sendmany", 6 , "conf_target" },
- { "sendmany", 8, "verbose" },
+ { "sendmany", 8, "fee_rate"},
+ { "sendmany", 9, "verbose" },
{ "deriveaddresses", 1, "range" },
{ "scantxoutset", 1, "scanobjects" },
{ "addmultisigaddress", 0, "nrequired" },
@@ -129,7 +131,8 @@ static const CRPCConvertParam vRPCConvertParams[] =
{ "lockunspent", 1, "transactions" },
{ "send", 0, "outputs" },
{ "send", 1, "conf_target" },
- { "send", 3, "options" },
+ { "send", 3, "fee_rate"},
+ { "send", 4, "options" },
{ "importprivkey", 2, "rescan" },
{ "importaddress", 2, "rescan" },
{ "importaddress", 3, "p2sh" },
diff --git a/src/rpc/mining.cpp b/src/rpc/mining.cpp
index a561b7e93c..6522c0d73e 100644
--- a/src/rpc/mining.cpp
+++ b/src/rpc/mining.cpp
@@ -1070,7 +1070,7 @@ static RPCHelpMan estimatesmartfee()
if (!request.params[1].isNull()) {
FeeEstimateMode fee_mode;
if (!FeeModeFromString(request.params[1].get_str(), fee_mode)) {
- throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid estimate_mode parameter");
+ throw JSONRPCError(RPC_INVALID_PARAMETER, InvalidEstimateModeErrorMessage());
}
if (fee_mode == FeeEstimateMode::ECONOMICAL) conservative = false;
}
diff --git a/src/test/amount_tests.cpp b/src/test/amount_tests.cpp
index e20900ed13..c16519a6b1 100644
--- a/src/test/amount_tests.cpp
+++ b/src/test/amount_tests.cpp
@@ -98,7 +98,7 @@ BOOST_AUTO_TEST_CASE(BinaryOperatorTest)
BOOST_CHECK(a <= a);
BOOST_CHECK(b >= a);
BOOST_CHECK(b >= b);
- // a should be 0.00000002 BTC/kB now
+ // a should be 0.00000002 BTC/kvB now
a += a;
BOOST_CHECK(a == b);
}
@@ -107,7 +107,9 @@ BOOST_AUTO_TEST_CASE(ToStringTest)
{
CFeeRate feeRate;
feeRate = CFeeRate(1);
- BOOST_CHECK_EQUAL(feeRate.ToString(), "0.00000001 BTC/kB");
+ BOOST_CHECK_EQUAL(feeRate.ToString(), "0.00000001 BTC/kvB");
+ BOOST_CHECK_EQUAL(feeRate.ToString(FeeEstimateMode::BTC_KVB), "0.00000001 BTC/kvB");
+ BOOST_CHECK_EQUAL(feeRate.ToString(FeeEstimateMode::SAT_VB), "0.001 sat/vB");
}
BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/util/fees.cpp b/src/util/fees.cpp
index 6208a20a97..1855c0bc90 100644
--- a/src/util/fees.cpp
+++ b/src/util/fees.cpp
@@ -40,8 +40,6 @@ const std::vector<std::pair<std::string, FeeEstimateMode>>& FeeModeMap()
{"unset", FeeEstimateMode::UNSET},
{"economical", FeeEstimateMode::ECONOMICAL},
{"conservative", FeeEstimateMode::CONSERVATIVE},
- {(CURRENCY_UNIT + "/kB"), FeeEstimateMode::BTC_KB},
- {(CURRENCY_ATOM + "/B"), FeeEstimateMode::SAT_B},
};
return FEE_MODES;
}
@@ -51,6 +49,11 @@ std::string FeeModes(const std::string& delimiter)
return Join(FeeModeMap(), delimiter, [&](const std::pair<std::string, FeeEstimateMode>& i) { return i.first; });
}
+const std::string InvalidEstimateModeErrorMessage()
+{
+ return "Invalid estimate_mode parameter, must be one of: \"" + FeeModes("\", \"") + "\"";
+}
+
bool FeeModeFromString(const std::string& mode_string, FeeEstimateMode& fee_estimate_mode)
{
auto searchkey = ToUpper(mode_string);
diff --git a/src/util/fees.h b/src/util/fees.h
index d52046a44c..3f1c33ad9c 100644
--- a/src/util/fees.h
+++ b/src/util/fees.h
@@ -13,5 +13,6 @@ enum class FeeReason;
bool FeeModeFromString(const std::string& mode_string, FeeEstimateMode& fee_estimate_mode);
std::string StringForFeeReason(FeeReason reason);
std::string FeeModes(const std::string& delimiter);
+const std::string InvalidEstimateModeErrorMessage();
#endif // BITCOIN_UTIL_FEES_H
diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp
index 2e3b34cbe3..5cbdd1021a 100644
--- a/src/wallet/rpcwallet.cpp
+++ b/src/wallet/rpcwallet.cpp
@@ -29,6 +29,7 @@
#include <util/translation.h>
#include <util/url.h>
#include <util/vector.h>
+#include <validation.h>
#include <wallet/coincontrol.h>
#include <wallet/context.h>
#include <wallet/feebumper.h>
@@ -48,8 +49,6 @@ using interfaces::FoundBlock;
static const std::string WALLET_ENDPOINT_BASE = "/wallet/";
static const std::string HELP_REQUIRING_PASSPHRASE{"\nRequires wallet passphrase to be set with walletpassphrase call if wallet is encrypted.\n"};
-static const uint32_t WALLET_BTC_KB_TO_SAT_B = COIN / 1000; // 1 sat / B = 0.00001 BTC / kB
-
static inline bool GetAvoidReuseFlag(const CWallet* const pwallet, const UniValue& param) {
bool can_avoid_reuse = pwallet->IsWalletFlagSet(WALLET_FLAG_AVOID_REUSE);
bool avoid_reuse = param.isNull() ? can_avoid_reuse : param.get_bool();
@@ -199,36 +198,42 @@ static std::string LabelFromValue(const UniValue& value)
/**
* Update coin control with fee estimation based on the given parameters
*
- * @param[in] pwallet Wallet pointer
- * @param[in,out] cc Coin control which is to be updated
- * @param[in] estimate_mode String value (e.g. "ECONOMICAL")
- * @param[in] estimate_param Parameter (blocks to confirm, explicit fee rate, etc)
- * @throws a JSONRPCError if estimate_mode is unknown, or if estimate_param is missing when required
+ * @param[in] wallet Wallet reference
+ * @param[in,out] cc Coin control to be updated
+ * @param[in] conf_target UniValue integer; confirmation target in blocks, values between 1 and 1008 are valid per policy/fees.h;
+ * @param[in] estimate_mode UniValue string; fee estimation mode, valid values are "unset", "economical" or "conservative";
+ * @param[in] fee_rate UniValue real; fee rate in sat/vB;
+ * if present, both conf_target and estimate_mode must either be null, or "unset"
+ * @param[in] override_min_fee bool; whether to set fOverrideFeeRate to true to disable minimum fee rate checks and instead
+ * verify only that fee_rate is greater than 0
+ * @throws a JSONRPCError if conf_target, estimate_mode, or fee_rate contain invalid values or are in conflict
*/
-static void SetFeeEstimateMode(const CWallet* pwallet, CCoinControl& cc, const UniValue& estimate_mode, const UniValue& estimate_param)
+static void SetFeeEstimateMode(const CWallet& wallet, CCoinControl& cc, const UniValue& conf_target, const UniValue& estimate_mode, const UniValue& fee_rate, bool override_min_fee)
{
- if (!estimate_mode.isNull()) {
- if (!FeeModeFromString(estimate_mode.get_str(), cc.m_fee_mode)) {
- throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid estimate_mode parameter");
+ if (!fee_rate.isNull()) {
+ if (!conf_target.isNull()) {
+ throw JSONRPCError(RPC_INVALID_PARAMETER, "Cannot specify both conf_target and fee_rate. Please provide either a confirmation target in blocks for automatic fee estimation, or an explicit fee rate.");
}
- }
-
- if (cc.m_fee_mode == FeeEstimateMode::BTC_KB || cc.m_fee_mode == FeeEstimateMode::SAT_B) {
- if (estimate_param.isNull()) {
- throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("Selected estimate_mode %s requires a fee rate to be specified in conf_target", estimate_mode.get_str()));
+ if (!estimate_mode.isNull() && estimate_mode.get_str() != "unset") {
+ throw JSONRPCError(RPC_INVALID_PARAMETER, "Cannot specify both estimate_mode and fee_rate");
}
-
- CAmount fee_rate = AmountFromValue(estimate_param);
- if (cc.m_fee_mode == FeeEstimateMode::SAT_B) {
- fee_rate /= WALLET_BTC_KB_TO_SAT_B;
+ CFeeRate fee_rate_in_sat_vb{CFeeRate(AmountFromValue(fee_rate), COIN)};
+ if (override_min_fee) {
+ if (fee_rate_in_sat_vb <= CFeeRate(0)) {
+ throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("Invalid fee_rate %s (must be greater than 0)", fee_rate_in_sat_vb.ToString(FeeEstimateMode::SAT_VB)));
+ }
+ cc.fOverrideFeeRate = true;
}
-
- cc.m_feerate = CFeeRate(fee_rate);
-
- // default RBF to true for explicit fee rate modes
+ cc.m_feerate = fee_rate_in_sat_vb;
+ // Default RBF to true for explicit fee_rate, if unset.
if (cc.m_signal_bip125_rbf == nullopt) cc.m_signal_bip125_rbf = true;
- } else if (!estimate_param.isNull()) {
- cc.m_confirm_target = ParseConfirmTarget(estimate_param, pwallet->chain().estimateMaxBlocks());
+ return;
+ }
+ if (!estimate_mode.isNull() && !FeeModeFromString(estimate_mode.get_str(), cc.m_fee_mode)) {
+ throw JSONRPCError(RPC_INVALID_PARAMETER, InvalidEstimateModeErrorMessage());
+ }
+ if (!conf_target.isNull()) {
+ cc.m_confirm_target = ParseConfirmTarget(conf_target, wallet.chain().estimateMaxBlocks());
}
}
@@ -441,12 +446,12 @@ static RPCHelpMan sendtoaddress()
{"subtractfeefromamount", RPCArg::Type::BOOL, /* default */ "false", "The fee will be deducted from the amount being sent.\n"
"The recipient will receive less bitcoins than you enter in the amount field."},
{"replaceable", RPCArg::Type::BOOL, /* default */ "wallet default", "Allow this transaction to be replaced by a transaction with higher fees via BIP 125"},
- {"conf_target", RPCArg::Type::NUM, /* default */ "wallet -txconfirmtarget", "Confirmation target (in blocks)\n"
- "or fee rate (for " + CURRENCY_UNIT + "/kB and " + CURRENCY_ATOM + "/B estimate modes)"},
+ {"conf_target", RPCArg::Type::NUM, /* default */ "wallet -txconfirmtarget", "Confirmation target in blocks"},
{"estimate_mode", RPCArg::Type::STR, /* default */ "unset", std::string() + "The fee estimate mode, must be one of (case insensitive):\n"
" \"" + FeeModes("\"\n\"") + "\""},
{"avoid_reuse", RPCArg::Type::BOOL, /* default */ "true", "(only available if avoid_reuse wallet flag is set) Avoid spending from dirty addresses; addresses are considered\n"
"dirty if they have previously been used in a transaction."},
+ {"fee_rate", RPCArg::Type::AMOUNT, /* default */ "not set, fall back to wallet fee estimation", "Specify a fee rate in " + CURRENCY_ATOM + "/vB."},
{"verbose", RPCArg::Type::BOOL, /* default */ "false", "If true, return extra information about the transaction."},
},
{
@@ -462,12 +467,17 @@ static RPCHelpMan sendtoaddress()
},
},
RPCExamples{
- HelpExampleCli("sendtoaddress", "\"" + EXAMPLE_ADDRESS[0] + "\" 0.1")
- + HelpExampleCli("sendtoaddress", "\"" + EXAMPLE_ADDRESS[0] + "\" 0.1 \"donation\" \"seans outpost\"")
- + HelpExampleCli("sendtoaddress", "\"" + EXAMPLE_ADDRESS[0] + "\" 0.1 \"\" \"\" true")
- + HelpExampleCli("sendtoaddress", "\"" + EXAMPLE_ADDRESS[0] + "\" 0.1 \"\" \"\" false true 0.00002 " + (CURRENCY_UNIT + "/kB"))
- + HelpExampleCli("sendtoaddress", "\"" + EXAMPLE_ADDRESS[0] + "\" 0.1 \"\" \"\" false true 2 " + (CURRENCY_ATOM + "/B"))
- + HelpExampleRpc("sendtoaddress", "\"" + EXAMPLE_ADDRESS[0] + "\", 0.1, \"donation\", \"seans outpost\"")
+ "\nSend 0.1 BTC\n"
+ + HelpExampleCli("sendtoaddress", "\"" + EXAMPLE_ADDRESS[0] + "\" 0.1") +
+ "\nSend 0.1 BTC with a confirmation target of 6 blocks in economical fee estimate mode using positional arguments\n"
+ + HelpExampleCli("sendtoaddress", "\"" + EXAMPLE_ADDRESS[0] + "\" 0.1 \"donation\" \"sean's outpost\" false true 6 economical") +
+ "\nSend 0.1 BTC with a fee rate of 1.1 " + CURRENCY_ATOM + "/vB, subtract fee from amount, BIP125-replaceable, using positional arguments\n"
+ + HelpExampleCli("sendtoaddress", "\"" + EXAMPLE_ADDRESS[0] + "\" 0.1 \"drinks\" \"room77\" true true null \"unset\" null 1.1") +
+ "\nSend 0.2 BTC with a confirmation target of 6 blocks in economical fee estimate mode using named arguments\n"
+ + HelpExampleCli("-named sendtoaddress", "address=\"" + EXAMPLE_ADDRESS[0] + "\" amount=0.2 conf_target=6 estimate_mode=\"economical\"") +
+ "\nSend 0.5 BTC with a fee rate of 25 " + CURRENCY_ATOM + "/vB using named arguments\n"
+ + HelpExampleCli("-named sendtoaddress", "address=\"" + EXAMPLE_ADDRESS[0] + "\" amount=0.5 fee_rate=25")
+ + HelpExampleCli("-named sendtoaddress", "address=\"" + EXAMPLE_ADDRESS[0] + "\" amount=0.5 fee_rate=25 subtractfeefromamount=false replaceable=true avoid_reuse=true comment=\"2 pizzas\" comment_to=\"jeremy\" verbose=true")
},
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
{
@@ -502,7 +512,7 @@ static RPCHelpMan sendtoaddress()
// We also enable partial spend avoidance if reuse avoidance is set.
coin_control.m_avoid_partial_spends |= coin_control.m_avoid_address_reuse;
- SetFeeEstimateMode(pwallet, coin_control, request.params[7], request.params[6]);
+ SetFeeEstimateMode(*pwallet, coin_control, /* conf_target */ request.params[6], /* estimate_mode */ request.params[7], /* fee_rate */ request.params[9], /* override_min_fee */ false);
EnsureWalletIsUnlocked(pwallet);
@@ -516,7 +526,7 @@ static RPCHelpMan sendtoaddress()
std::vector<CRecipient> recipients;
ParseRecipients(address_amounts, subtractFeeFromAmount, recipients);
- bool verbose = request.params[9].isNull() ? false: request.params[9].get_bool();
+ const bool verbose{request.params[10].isNull() ? false : request.params[10].get_bool()};
return SendMoney(pwallet, coin_control, recipients, mapValue, verbose);
},
@@ -870,10 +880,10 @@ static RPCHelpMan sendmany()
},
},
{"replaceable", RPCArg::Type::BOOL, /* default */ "wallet default", "Allow this transaction to be replaced by a transaction with higher fees via BIP 125"},
- {"conf_target", RPCArg::Type::NUM, /* default */ "wallet -txconfirmtarget", "Confirmation target (in blocks)\n"
- "or fee rate (for " + CURRENCY_UNIT + "/kB and " + CURRENCY_ATOM + "/B estimate modes)"},
+ {"conf_target", RPCArg::Type::NUM, /* default */ "wallet -txconfirmtarget", "Confirmation target in blocks"},
{"estimate_mode", RPCArg::Type::STR, /* default */ "unset", std::string() + "The fee estimate mode, must be one of (case insensitive):\n"
" \"" + FeeModes("\"\n\"") + "\""},
+ {"fee_rate", RPCArg::Type::AMOUNT, /* default */ "not set, fall back to wallet fee estimation", "Specify a fee rate in " + CURRENCY_ATOM + "/vB."},
{"verbose", RPCArg::Type::BOOL, /* default */ "false", "If true, return extra infomration about the transaction."},
},
{
@@ -930,11 +940,11 @@ static RPCHelpMan sendmany()
coin_control.m_signal_bip125_rbf = request.params[5].get_bool();
}
- SetFeeEstimateMode(pwallet, coin_control, request.params[7], request.params[6]);
+ SetFeeEstimateMode(*pwallet, coin_control, /* conf_target */ request.params[6], /* estimate_mode */ request.params[7], /* fee_rate */ request.params[8], /* override_min_fee */ false);
std::vector<CRecipient> recipients;
ParseRecipients(sendTo, subtractFeeFromAmount, recipients);
- bool verbose = request.params[8].isNull() ? false : request.params[8].get_bool();
+ const bool verbose{request.params[9].isNull() ? false : request.params[9].get_bool()};
return SendMoney(pwallet, coin_control, recipients, std::move(mapValue), verbose);
},
@@ -2311,7 +2321,7 @@ static RPCHelpMan settxfee()
"\nSet the transaction fee per kB for this wallet. Overrides the global -paytxfee command line parameter.\n"
"Can be deactivated by passing 0 as the fee. In that case automatic fee selection will be used by default.\n",
{
- {"amount", RPCArg::Type::AMOUNT, RPCArg::Optional::NO, "The transaction fee in " + CURRENCY_UNIT + "/kB"},
+ {"amount", RPCArg::Type::AMOUNT, RPCArg::Optional::NO, "The transaction fee in " + CURRENCY_UNIT + "/kvB"},
},
RPCResult{
RPCResult::Type::BOOL, "", "Returns true if successful"
@@ -2434,7 +2444,7 @@ static RPCHelpMan getwalletinfo()
{RPCResult::Type::NUM, "keypoolsize", "how many new keys are pre-generated (only counts external keys)"},
{RPCResult::Type::NUM, "keypoolsize_hd_internal", "how many new keys are pre-generated for internal use (used for change outputs, only appears if the wallet is using this feature, otherwise external keys are used)"},
{RPCResult::Type::NUM_TIME, "unlocked_until", /* optional */ true, "the " + UNIX_EPOCH_TIME + " until which the wallet is unlocked for transfers, or 0 if the wallet is locked (only present for passphrase-encrypted wallets)"},
- {RPCResult::Type::STR_AMOUNT, "paytxfee", "the transaction fee configuration, set in " + CURRENCY_UNIT + "/kB"},
+ {RPCResult::Type::STR_AMOUNT, "paytxfee", "the transaction fee configuration, set in " + CURRENCY_UNIT + "/kvB"},
{RPCResult::Type::STR_HEX, "hdseedid", /* optional */ true, "the Hash160 of the HD seed (only present when HD is enabled)"},
{RPCResult::Type::BOOL, "private_keys_enabled", "false if privatekeys are disabled for this wallet (enforced watch-only wallet)"},
{RPCResult::Type::BOOL, "avoid_reuse", "whether this wallet tracks clean/dirty coins in terms of reuse"},
@@ -2780,7 +2790,7 @@ static RPCHelpMan unloadwallet()
"Unloads the wallet referenced by the request endpoint otherwise unloads the wallet specified in the argument.\n"
"Specifying the wallet name on a wallet endpoint is invalid.",
{
- {"wallet_name", RPCArg::Type::STR, /* default */ "the wallet name from the RPC request", "The name of the wallet to unload."},
+ {"wallet_name", RPCArg::Type::STR, /* default */ "the wallet name from the RPC endpoint", "The name of the wallet to unload. Must be provided in the RPC endpoint or this parameter (but not both)."},
{"load_on_startup", RPCArg::Type::BOOL, /* default */ "null", "Save wallet name to persistent settings and load on startup. True to add wallet to startup list, false to remove, null to leave unchanged."},
},
RPCResult{RPCResult::Type::OBJ, "", "", {
@@ -2795,7 +2805,7 @@ static RPCHelpMan unloadwallet()
std::string wallet_name;
if (GetWalletNameFromJSONRPCRequest(request, wallet_name)) {
if (!request.params[0].isNull()) {
- throw JSONRPCError(RPC_INVALID_PARAMETER, "Cannot unload the requested wallet");
+ throw JSONRPCError(RPC_INVALID_PARAMETER, "Both the RPC endpoint wallet and wallet_name parameter were provided (only one allowed)");
}
} else {
wallet_name = request.params[0].get_str();
@@ -3047,7 +3057,7 @@ static RPCHelpMan listunspent()
};
}
-void FundTransaction(CWallet* const pwallet, CMutableTransaction& tx, CAmount& fee_out, int& change_position, const UniValue& options, CCoinControl& coinControl)
+void FundTransaction(CWallet* const pwallet, CMutableTransaction& tx, CAmount& fee_out, int& change_position, const UniValue& options, CCoinControl& coinControl, bool override_min_fee)
{
// Make sure the results are valid at least up to the most recent block
// the user could have gotten from another RPC command prior to now
@@ -3080,7 +3090,8 @@ void FundTransaction(CWallet* const pwallet, CMutableTransaction& tx, CAmount& f
{"lockUnspents", UniValueType(UniValue::VBOOL)},
{"lock_unspents", UniValueType(UniValue::VBOOL)},
{"locktime", UniValueType(UniValue::VNUM)},
- {"feeRate", UniValueType()}, // will be checked below
+ {"fee_rate", UniValueType()}, // will be checked by AmountFromValue() in SetFeeEstimateMode()
+ {"feeRate", UniValueType()}, // will be checked by AmountFromValue() below
{"psbt", UniValueType(UniValue::VBOOL)},
{"subtractFeeFromOutputs", UniValueType(UniValue::VARR)},
{"subtract_fee_from_outputs", UniValueType(UniValue::VARR)},
@@ -3127,15 +3138,21 @@ void FundTransaction(CWallet* const pwallet, CMutableTransaction& tx, CAmount& f
lockUnspents = (options.exists("lock_unspents") ? options["lock_unspents"] : options["lockUnspents"]).get_bool();
}
- if (options.exists("feeRate"))
- {
+ if (options.exists("feeRate")) {
+ if (options.exists("fee_rate")) {
+ throw JSONRPCError(RPC_INVALID_PARAMETER, "Cannot specify both fee_rate (" + CURRENCY_ATOM + "/vB) and feeRate (" + CURRENCY_UNIT + "/kvB)");
+ }
if (options.exists("conf_target")) {
- throw JSONRPCError(RPC_INVALID_PARAMETER, "Cannot specify both conf_target and feeRate");
+ throw JSONRPCError(RPC_INVALID_PARAMETER, "Cannot specify both conf_target and feeRate. Please provide either a confirmation target in blocks for automatic fee estimation, or an explicit fee rate.");
}
if (options.exists("estimate_mode")) {
throw JSONRPCError(RPC_INVALID_PARAMETER, "Cannot specify both estimate_mode and feeRate");
}
- coinControl.m_feerate = CFeeRate(AmountFromValue(options["feeRate"]));
+ CFeeRate fee_rate(AmountFromValue(options["feeRate"]));
+ if (fee_rate <= CFeeRate(0)) {
+ throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("Invalid feeRate %s (must be greater than 0)", fee_rate.ToString(FeeEstimateMode::BTC_KVB)));
+ }
+ coinControl.m_feerate = fee_rate;
coinControl.fOverrideFeeRate = true;
}
@@ -3145,7 +3162,7 @@ void FundTransaction(CWallet* const pwallet, CMutableTransaction& tx, CAmount& f
if (options.exists("replaceable")) {
coinControl.m_signal_bip125_rbf = options["replaceable"].get_bool();
}
- SetFeeEstimateMode(pwallet, coinControl, options["estimate_mode"], options["conf_target"]);
+ SetFeeEstimateMode(*pwallet, coinControl, options["conf_target"], options["estimate_mode"], options["fee_rate"], override_min_fee);
}
} else {
// if options is null and not a bool
@@ -3202,7 +3219,8 @@ static RPCHelpMan fundrawtransaction()
"Only solvable inputs can be used. Watch-only destinations are solvable if the public key and/or output script was imported,\n"
"e.g. with 'importpubkey' or 'importmulti' with the 'pubkeys' or 'desc' field."},
{"lockUnspents", RPCArg::Type::BOOL, /* default */ "false", "Lock selected unspent outputs"},
- {"feeRate", RPCArg::Type::AMOUNT, /* default */ "not set: makes wallet determine the fee", "Set a specific fee rate in " + CURRENCY_UNIT + "/kB"},
+ {"fee_rate", RPCArg::Type::AMOUNT, /* default */ "not set, fall back to wallet fee estimation", "Specify a fee rate in " + CURRENCY_ATOM + "/vB."},
+ {"feeRate", RPCArg::Type::AMOUNT, /* default */ "not set, fall back to wallet fee estimation", "Specify a fee rate in " + CURRENCY_UNIT + "/kvB."},
{"subtractFeeFromOutputs", RPCArg::Type::ARR, /* default */ "empty array", "The integers.\n"
"The fee will be equally deducted from the amount of each specified output.\n"
"Those recipients will receive less bitcoins than you enter in their corresponding amount field.\n"
@@ -3213,8 +3231,7 @@ static RPCHelpMan fundrawtransaction()
},
{"replaceable", RPCArg::Type::BOOL, /* default */ "wallet default", "Marks this transaction as BIP125 replaceable.\n"
"Allows this transaction to be replaced by a transaction with higher fees"},
- {"conf_target", RPCArg::Type::NUM, /* default */ "wallet -txconfirmtarget", "Confirmation target (in blocks)\n"
- "or fee rate (for " + CURRENCY_UNIT + "/kB and " + CURRENCY_ATOM + "/B estimate modes)"},
+ {"conf_target", RPCArg::Type::NUM, /* default */ "wallet -txconfirmtarget", "Confirmation target in blocks"},
{"estimate_mode", RPCArg::Type::STR, /* default */ "unset", std::string() + "The fee estimate mode, must be one of (case insensitive):\n"
" \"" + FeeModes("\"\n\"") + "\""},
},
@@ -3266,7 +3283,7 @@ static RPCHelpMan fundrawtransaction()
CCoinControl coin_control;
// Automatically select (additional) coins. Can be overridden by options.add_inputs.
coin_control.m_add_inputs = true;
- FundTransaction(pwallet, tx, fee, change_position, request.params[1], coin_control);
+ FundTransaction(pwallet, tx, fee, change_position, request.params[1], coin_control, /* override_min_fee */ true);
UniValue result(UniValue::VOBJ);
result.pushKV("hex", EncodeHexTx(CTransaction(tx)));
@@ -3374,35 +3391,38 @@ RPCHelpMan signrawtransactionwithwallet()
static RPCHelpMan bumpfee_helper(std::string method_name)
{
bool want_psbt = method_name == "psbtbumpfee";
+ const std::string incremental_fee{CFeeRate(DEFAULT_MIN_RELAY_TX_FEE).ToString(FeeEstimateMode::SAT_VB)};
return RPCHelpMan{method_name,
"\nBumps the fee of an opt-in-RBF transaction T, replacing it with a new transaction B.\n"
+ std::string(want_psbt ? "Returns a PSBT instead of creating and signing a new transaction.\n" : "") +
"An opt-in RBF transaction with the given txid must be in the wallet.\n"
- "The command will 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.\n"
+ "The command will pay the additional fee by reducing change outputs or adding inputs when necessary.\n"
+ "It may add a new change output if one does not already exist.\n"
"All inputs in the original transaction will be included in the replacement transaction.\n"
"The command will fail if the wallet or mempool contains a transaction that spends one of T's outputs.\n"
"By default, the new fee will be calculated automatically using the estimatesmartfee RPC.\n"
"The user can specify a confirmation target for estimatesmartfee.\n"
- "Alternatively, the user can specify a fee_rate (" + CURRENCY_UNIT + " per kB) for the new transaction.\n"
+ "Alternatively, the user can specify a fee rate in " + CURRENCY_ATOM + "/vB for the new transaction.\n"
"At a minimum, the new fee rate must be high enough to pay an additional new relay fee (incrementalfee\n"
- "returned by getnetworkinfo) to enter the node's mempool.\n",
+ "returned by getnetworkinfo) to enter the node's mempool.\n"
+ "* WARNING: before version 0.21, fee_rate was in " + CURRENCY_UNIT + "/kvB. As of 0.21, fee_rate is in " + CURRENCY_ATOM + "/vB. *\n",
{
{"txid", RPCArg::Type::STR_HEX, RPCArg::Optional::NO, "The txid to be bumped"},
{"options", RPCArg::Type::OBJ, RPCArg::Optional::OMITTED_NAMED_ARG, "",
{
- {"conf_target", RPCArg::Type::NUM, /* default */ "wallet -txconfirmtarget", "Confirmation target (in blocks)\n"
- "or fee rate (for " + CURRENCY_UNIT + "/kB and " + CURRENCY_ATOM + "/B estimate modes)"},
- {"fee_rate", RPCArg::Type::NUM, /* default */ "fall back to 'conf_target'", "fee rate (NOT total fee) to pay, in " + CURRENCY_UNIT + "/kB.\n"
- "Specify a fee rate instead of relying on the built-in fee estimator.\n"
- "Must be at least 0.0001 " + CURRENCY_UNIT + "/kB higher than the current transaction fee rate.\n"},
+ {"conf_target", RPCArg::Type::NUM, /* default */ "wallet -txconfirmtarget", "Confirmation target in blocks\n"},
+ {"fee_rate", RPCArg::Type::AMOUNT, /* default */ "not set, fall back to wallet fee estimation",
+ "\nSpecify a fee rate in " + CURRENCY_ATOM + "/vB instead of relying on the built-in fee estimator.\n"
+ "Must be at least " + incremental_fee + " " + CURRENCY_ATOM + "/vB higher than the current transaction fee rate.\n"
+ "WARNING: before version 0.21, fee_rate was in " + CURRENCY_UNIT + "/kvB. As of 0.21, fee_rate is in " + CURRENCY_ATOM + "/vB.\n"},
{"replaceable", RPCArg::Type::BOOL, /* default */ "true", "Whether the new transaction should still be\n"
"marked bip-125 replaceable. If true, the sequence numbers in the transaction will\n"
"be left unchanged from the original. If false, any input sequence numbers in the\n"
"original transaction that were less than 0xfffffffe will be increased to 0xfffffffe\n"
"so the new transaction will not be explicitly bip-125 replaceable (though it may\n"
"still be replaceable in practice, for example if it has unconfirmed ancestors which\n"
- "are replaceable)."},
+ "are replaceable).\n"},
{"estimate_mode", RPCArg::Type::STR, /* default */ "unset", std::string() + "The fee estimate mode, must be one of (case insensitive):\n"
" \"" + FeeModes("\"\n\"") + "\""},
},
@@ -3455,7 +3475,7 @@ static RPCHelpMan bumpfee_helper(std::string method_name)
{
{"confTarget", UniValueType(UniValue::VNUM)},
{"conf_target", UniValueType(UniValue::VNUM)},
- {"fee_rate", UniValueType(UniValue::VNUM)},
+ {"fee_rate", UniValueType()}, // will be checked by AmountFromValue() in SetFeeEstimateMode()
{"replaceable", UniValueType(UniValue::VBOOL)},
{"estimate_mode", UniValueType(UniValue::VSTR)},
},
@@ -3467,22 +3487,10 @@ static RPCHelpMan bumpfee_helper(std::string method_name)
auto conf_target = options.exists("confTarget") ? options["confTarget"] : options["conf_target"];
- if (!conf_target.isNull()) {
- if (options.exists("fee_rate")) {
- throw JSONRPCError(RPC_INVALID_PARAMETER, "Cannot specify both conf_target and fee_rate. Please provide either a confirmation target in blocks for automatic fee estimation, or an explicit fee rate.");
- }
- } else if (options.exists("fee_rate")) {
- CFeeRate fee_rate(AmountFromValue(options["fee_rate"]));
- if (fee_rate <= CFeeRate(0)) {
- throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("Invalid fee_rate %s (must be greater than 0)", fee_rate.ToString()));
- }
- coin_control.m_feerate = fee_rate;
- }
-
if (options.exists("replaceable")) {
coin_control.m_signal_bip125_rbf = options["replaceable"].get_bool();
}
- SetFeeEstimateMode(pwallet, coin_control, options["estimate_mode"], conf_target);
+ SetFeeEstimateMode(*pwallet, coin_control, conf_target, options["estimate_mode"], options["fee_rate"], /* override_min_fee */ false);
}
// Make sure the results are valid at least up to the most recent block
@@ -4018,10 +4026,10 @@ static RPCHelpMan send()
},
},
},
- {"conf_target", RPCArg::Type::NUM, /* default */ "wallet -txconfirmtarget", "Confirmation target (in blocks)\n"
- "or fee rate (for " + CURRENCY_UNIT + "/kB and " + CURRENCY_ATOM + "/B estimate modes)"},
+ {"conf_target", RPCArg::Type::NUM, /* default */ "wallet -txconfirmtarget", "Confirmation target in blocks"},
{"estimate_mode", RPCArg::Type::STR, /* default */ "unset", std::string() + "The fee estimate mode, must be one of (case insensitive):\n"
" \"" + FeeModes("\"\n\"") + "\""},
+ {"fee_rate", RPCArg::Type::AMOUNT, /* default */ "not set, fall back to wallet fee estimation", "Specify a fee rate in " + CURRENCY_ATOM + "/vB."},
{"options", RPCArg::Type::OBJ, RPCArg::Optional::OMITTED_NAMED_ARG, "",
{
{"add_inputs", RPCArg::Type::BOOL, /* default */ "false", "If inputs are specified, automatically include more if they are not enough."},
@@ -4029,10 +4037,10 @@ static RPCHelpMan send()
{"change_address", RPCArg::Type::STR_HEX, /* default */ "pool address", "The bitcoin address to receive the change"},
{"change_position", RPCArg::Type::NUM, /* default */ "random", "The index of the change output"},
{"change_type", RPCArg::Type::STR, /* default */ "set by -changetype", "The output type to use. Only valid if change_address is not specified. Options are \"legacy\", \"p2sh-segwit\", and \"bech32\"."},
- {"conf_target", RPCArg::Type::NUM, /* default */ "wallet -txconfirmtarget", "Confirmation target (in blocks)\n"
- "or fee rate (for " + CURRENCY_UNIT + "/kB and " + CURRENCY_ATOM + "/B estimate modes)"},
+ {"conf_target", RPCArg::Type::NUM, /* default */ "wallet -txconfirmtarget", "Confirmation target in blocks"},
{"estimate_mode", RPCArg::Type::STR, /* default */ "unset", std::string() + "The fee estimate mode, must be one of (case insensitive):\n"
" \"" + FeeModes("\"\n\"") + "\""},
+ {"fee_rate", RPCArg::Type::AMOUNT, /* default */ "not set, fall back to wallet fee estimation", "Specify a fee rate in " + CURRENCY_ATOM + "/vB."},
{"include_watching", RPCArg::Type::BOOL, /* default */ "true for watch-only wallets, otherwise false", "Also select inputs which are watch only.\n"
"Only solvable inputs can be used. Watch-only destinations are solvable if the public key and/or output script was imported,\n"
"e.g. with 'importpubkey' or 'importmulti' with the 'pubkeys' or 'desc' field."},
@@ -4069,18 +4077,25 @@ static RPCHelpMan send()
}
},
RPCExamples{""
- "\nSend with a fee rate of 1 satoshi per byte\n"
- + HelpExampleCli("send", "'{\"" + EXAMPLE_ADDRESS[0] + "\": 0.1}' 1 sat/b\n") +
- "\nCreate a transaction that should confirm the next block, with a specific input, and return result without adding to wallet or broadcasting to the network\n"
+ "\nSend 0.1 BTC with a confirmation target of 6 blocks in economical fee estimate mode\n"
+ + HelpExampleCli("send", "'{\"" + EXAMPLE_ADDRESS[0] + "\": 0.1}' 6 economical\n") +
+ "Send 0.2 BTC with a fee rate of 1.1 " + CURRENCY_ATOM + "/vB using positional arguments\n"
+ + HelpExampleCli("send", "'{\"" + EXAMPLE_ADDRESS[0] + "\": 0.2}' null \"unset\" 1.1\n") +
+ "Send 0.2 BTC with a fee rate of 1 " + CURRENCY_ATOM + "/vB using the options argument\n"
+ + HelpExampleCli("send", "'{\"" + EXAMPLE_ADDRESS[0] + "\": 0.2}' null \"unset\" null '{\"fee_rate\": 1}'\n") +
+ "Send 0.3 BTC with a fee rate of 25 " + CURRENCY_ATOM + "/vB using named arguments\n"
+ + HelpExampleCli("-named send", "outputs='{\"" + EXAMPLE_ADDRESS[0] + "\": 0.3}' fee_rate=25\n") +
+ "Create a transaction that should confirm the next block, with a specific input, and return result without adding to wallet or broadcasting to the network\n"
+ HelpExampleCli("send", "'{\"" + EXAMPLE_ADDRESS[0] + "\": 0.1}' 1 economical '{\"add_to_wallet\": false, \"inputs\": [{\"txid\":\"a08e6907dbbd3d809776dbfc5d82e371b764ed838b5655e72f463568df1aadf0\", \"vout\":1}]}'")
},
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
{
RPCTypeCheck(request.params, {
- UniValueType(), // ARR or OBJ, checked later
- UniValue::VNUM,
- UniValue::VSTR,
- UniValue::VOBJ
+ UniValueType(), // outputs (ARR or OBJ, checked later)
+ UniValue::VNUM, // conf_target
+ UniValue::VSTR, // estimate_mode
+ UniValue::VNUM, // fee_rate
+ UniValue::VOBJ, // options
}, true
);
@@ -4088,18 +4103,28 @@ static RPCHelpMan send()
if (!wallet) return NullUniValue;
CWallet* const pwallet = wallet.get();
- UniValue options = request.params[3];
- if (options.exists("feeRate") || options.exists("fee_rate") || options.exists("estimate_mode") || options.exists("conf_target")) {
+ UniValue options{request.params[4].isNull() ? UniValue::VOBJ : request.params[4]};
+ if (options.exists("conf_target") || options.exists("estimate_mode")) {
if (!request.params[1].isNull() || !request.params[2].isNull()) {
- throw JSONRPCError(RPC_INVALID_PARAMETER, "Use either conf_target and estimate_mode or the options dictionary to control fee rate");
+ throw JSONRPCError(RPC_INVALID_PARAMETER, "Pass conf_target and estimate_mode either as arguments or in the options object, but not both");
}
} else {
options.pushKV("conf_target", request.params[1]);
options.pushKV("estimate_mode", request.params[2]);
}
+ if (options.exists("fee_rate")) {
+ if (!request.params[3].isNull()) {
+ throw JSONRPCError(RPC_INVALID_PARAMETER, "Pass the fee_rate either as an argument, or in the options object, but not both");
+ }
+ } else {
+ options.pushKV("fee_rate", request.params[3]);
+ }
if (!options["conf_target"].isNull() && (options["estimate_mode"].isNull() || (options["estimate_mode"].get_str() == "unset"))) {
throw JSONRPCError(RPC_INVALID_PARAMETER, "Specify estimate_mode");
}
+ if (options.exists("feeRate")) {
+ throw JSONRPCError(RPC_INVALID_PARAMETER, "Use fee_rate (" + CURRENCY_ATOM + "/vB) instead of feeRate");
+ }
if (options.exists("changeAddress")) {
throw JSONRPCError(RPC_INVALID_PARAMETER, "Use change_address");
}
@@ -4129,7 +4154,7 @@ static RPCHelpMan send()
// Automatically select coins, unless at least one is manually selected. Can
// be overridden by options.add_inputs.
coin_control.m_add_inputs = rawTx.vin.size() == 0;
- FundTransaction(pwallet, rawTx, fee, change_position, options, coin_control);
+ FundTransaction(pwallet, rawTx, fee, change_position, options, coin_control, /* override_min_fee */ false);
bool add_to_wallet = true;
if (options.exists("add_to_wallet")) {
@@ -4357,7 +4382,8 @@ static RPCHelpMan walletcreatefundedpsbt()
{"change_type", RPCArg::Type::STR, /* default */ "set by -changetype", "The output type to use. Only valid if changeAddress is not specified. Options are \"legacy\", \"p2sh-segwit\", and \"bech32\"."},
{"includeWatching", RPCArg::Type::BOOL, /* default */ "true for watch-only wallets, otherwise false", "Also select inputs which are watch only"},
{"lockUnspents", RPCArg::Type::BOOL, /* default */ "false", "Lock selected unspent outputs"},
- {"feeRate", RPCArg::Type::AMOUNT, /* default */ "not set: makes wallet determine the fee", "Set a specific fee rate in " + CURRENCY_UNIT + "/kB"},
+ {"fee_rate", RPCArg::Type::AMOUNT, /* default */ "not set, fall back to wallet fee estimation", "Specify a fee rate in " + CURRENCY_ATOM + "/vB."},
+ {"feeRate", RPCArg::Type::AMOUNT, /* default */ "not set, fall back to wallet fee estimation", "Specify a fee rate in " + CURRENCY_UNIT + "/kvB."},
{"subtractFeeFromOutputs", RPCArg::Type::ARR, /* default */ "empty array", "The outputs to subtract the fee from.\n"
"The fee will be equally deducted from the amount of each specified output.\n"
"Those recipients will receive less bitcoins than you enter in their corresponding amount field.\n"
@@ -4368,8 +4394,7 @@ static RPCHelpMan walletcreatefundedpsbt()
},
{"replaceable", RPCArg::Type::BOOL, /* default */ "wallet default", "Marks this transaction as BIP125 replaceable.\n"
"Allows this transaction to be replaced by a transaction with higher fees"},
- {"conf_target", RPCArg::Type::NUM, /* default */ "wallet -txconfirmtarget", "Confirmation target (in blocks)\n"
- "or fee rate (for " + CURRENCY_UNIT + "/kB and " + CURRENCY_ATOM + "/B estimate modes)"},
+ {"conf_target", RPCArg::Type::NUM, /* default */ "wallet -txconfirmtarget", "Confirmation target in blocks"},
{"estimate_mode", RPCArg::Type::STR, /* default */ "unset", std::string() + "The fee estimate mode, must be one of (case insensitive):\n"
" \"" + FeeModes("\"\n\"") + "\""},
},
@@ -4416,7 +4441,7 @@ static RPCHelpMan walletcreatefundedpsbt()
// Automatically select coins, unless at least one is manually selected. Can
// be overridden by options.add_inputs.
coin_control.m_add_inputs = rawTx.vin.size() == 0;
- FundTransaction(pwallet, rawTx, fee, change_position, request.params[3], coin_control);
+ FundTransaction(pwallet, rawTx, fee, change_position, request.params[3], coin_control, /* override_min_fee */ true);
// Make a blank psbt
PartiallySignedTransaction psbtx(rawTx);
@@ -4569,9 +4594,9 @@ static const CRPCCommand commands[] =
{ "wallet", "lockunspent", &lockunspent, {"unlock","transactions"} },
{ "wallet", "removeprunedfunds", &removeprunedfunds, {"txid"} },
{ "wallet", "rescanblockchain", &rescanblockchain, {"start_height", "stop_height"} },
- { "wallet", "send", &send, {"outputs","conf_target","estimate_mode","options"} },
- { "wallet", "sendmany", &sendmany, {"dummy","amounts","minconf","comment","subtractfeefrom","replaceable","conf_target","estimate_mode","verbose"} },
- { "wallet", "sendtoaddress", &sendtoaddress, {"address","amount","comment","comment_to","subtractfeefromamount","replaceable","conf_target","estimate_mode","avoid_reuse","verbose"} },
+ { "wallet", "send", &send, {"outputs","conf_target","estimate_mode","fee_rate","options"} },
+ { "wallet", "sendmany", &sendmany, {"dummy","amounts","minconf","comment","subtractfeefrom","replaceable","conf_target","estimate_mode","fee_rate","verbose"} },
+ { "wallet", "sendtoaddress", &sendtoaddress, {"address","amount","comment","comment_to","subtractfeefromamount","replaceable","conf_target","estimate_mode","avoid_reuse","fee_rate","verbose"} },
{ "wallet", "sethdseed", &sethdseed, {"newkeypool","seed"} },
{ "wallet", "setlabel", &setlabel, {"address","label"} },
{ "wallet", "settxfee", &settxfee, {"amount"} },
diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp
index 3ce8272fb9..ff8bfff872 100644
--- a/src/wallet/wallet.cpp
+++ b/src/wallet/wallet.cpp
@@ -2818,7 +2818,7 @@ bool CWallet::CreateTransactionInternal(
// Do not, ever, assume that it's fine to change the fee rate if the user has explicitly
// provided one
if (coin_control.m_feerate && nFeeRateNeeded > *coin_control.m_feerate) {
- error = strprintf(_("Fee rate (%s) is lower than the minimum fee rate setting (%s)"), coin_control.m_feerate->ToString(), nFeeRateNeeded.ToString());
+ error = strprintf(_("Fee rate (%s) is lower than the minimum fee rate setting (%s)"), coin_control.m_feerate->ToString(FeeEstimateMode::SAT_VB), nFeeRateNeeded.ToString(FeeEstimateMode::SAT_VB));
return false;
}
diff --git a/test/functional/feature_taproot.py b/test/functional/feature_taproot.py
index 6e28cfb265..0f0fe8a34a 100755
--- a/test/functional/feature_taproot.py
+++ b/test/functional/feature_taproot.py
@@ -1442,17 +1442,23 @@ class TaprootTest(BitcoinTestFramework):
self.nodes[1].generate(101)
self.test_spenders(self.nodes[1], spenders_taproot_active(), input_counts=[1, 2, 2, 2, 2, 3])
- # Transfer funds to pre-taproot node.
+ # Transfer value of the largest 500 coins to pre-taproot node.
addr = self.nodes[0].getnewaddress()
+
+ unsp = self.nodes[1].listunspent()
+ unsp = sorted(unsp, key=lambda i: i['amount'], reverse=True)
+ unsp = unsp[:500]
+
rawtx = self.nodes[1].createrawtransaction(
inputs=[{
'txid': i['txid'],
'vout': i['vout']
- } for i in self.nodes[1].listunspent()],
- outputs={addr: self.nodes[1].getbalance()},
+ } for i in unsp],
+ outputs={addr: sum(i['amount'] for i in unsp)}
)
rawtx = self.nodes[1].signrawtransactionwithwallet(rawtx)['hex']
- # Transaction is too large to fit into the mempool, so put it into a block
+
+ # Mine a block with the transaction
block = create_block(tmpl=self.nodes[1].getblocktemplate(NORMAL_GBT_REQUEST_PARAMS), txlist=[rawtx])
add_witness_commitment(block)
block.rehash()
diff --git a/test/functional/mempool_compatibility.py b/test/functional/mempool_compatibility.py
index 7168cb4ab2..8ac91bd008 100755
--- a/test/functional/mempool_compatibility.py
+++ b/test/functional/mempool_compatibility.py
@@ -29,7 +29,7 @@ class MempoolCompatibilityTest(BitcoinTestFramework):
def setup_network(self):
self.add_nodes(self.num_nodes, versions=[
- 150200, # oldest version supported by the test framework
+ 190100, # oldest version with getmempoolinfo.loaded (used to avoid intermittent issues)
None,
])
self.start_nodes()
@@ -72,5 +72,6 @@ class MempoolCompatibilityTest(BitcoinTestFramework):
assert old_tx_hash in old_node.getrawmempool()
assert unbroadcasted_tx_hash in old_node.getrawmempool()
+
if __name__ == "__main__":
MempoolCompatibilityTest().main()
diff --git a/test/functional/rpc_estimatefee.py b/test/functional/rpc_estimatefee.py
index 1fff9e1512..3b76c7dd1e 100755
--- a/test/functional/rpc_estimatefee.py
+++ b/test/functional/rpc_estimatefee.py
@@ -28,7 +28,7 @@ class EstimateFeeTest(BitcoinTestFramework):
# wrong type for estimatesmartfee(estimate_mode)
assert_raises_rpc_error(-3, "Expected type string, got number", self.nodes[0].estimatesmartfee, 1, 1)
- assert_raises_rpc_error(-8, "Invalid estimate_mode parameter", self.nodes[0].estimatesmartfee, 1, 'foo')
+ assert_raises_rpc_error(-8, 'Invalid estimate_mode parameter, must be one of: "unset", "economical", "conservative"', self.nodes[0].estimatesmartfee, 1, 'foo')
# wrong type for estimaterawfee(threshold)
assert_raises_rpc_error(-3, "Expected type number, got string", self.nodes[0].estimaterawfee, 1, 'foo')
diff --git a/test/functional/rpc_fundrawtransaction.py b/test/functional/rpc_fundrawtransaction.py
index 503993162b..f987867e61 100755
--- a/test/functional/rpc_fundrawtransaction.py
+++ b/test/functional/rpc_fundrawtransaction.py
@@ -90,7 +90,6 @@ class RawTransactionsTest(BitcoinTestFramework):
self.test_op_return()
self.test_watchonly()
self.test_all_watched_funds()
- self.test_feerate_with_conf_target_and_estimate_mode()
self.test_option_feerate()
self.test_address_reuse()
self.test_option_subtract_fee_from_outputs()
@@ -708,74 +707,86 @@ class RawTransactionsTest(BitcoinTestFramework):
wwatch.unloadwallet()
def test_option_feerate(self):
- self.log.info("Test fundrawtxn feeRate option")
-
- # Make sure there is exactly one input so coin selection can't skew the result.
- assert_equal(len(self.nodes[3].listunspent(1)), 1)
-
- inputs = []
- outputs = {self.nodes[3].getnewaddress() : 1}
- rawtx = self.nodes[3].createrawtransaction(inputs, outputs)
- result = self.nodes[3].fundrawtransaction(rawtx) # uses self.min_relay_tx_fee (set by settxfee)
- result2 = self.nodes[3].fundrawtransaction(rawtx, {"feeRate": 2 * self.min_relay_tx_fee})
- result3 = self.nodes[3].fundrawtransaction(rawtx, {"feeRate": 10 * self.min_relay_tx_fee})
- assert_raises_rpc_error(-4, "Fee exceeds maximum configured by user (e.g. -maxtxfee, maxfeerate)", self.nodes[3].fundrawtransaction, rawtx, {"feeRate": 1})
- result_fee_rate = result['fee'] * 1000 / count_bytes(result['hex'])
- assert_fee_amount(result2['fee'], count_bytes(result2['hex']), 2 * result_fee_rate)
- assert_fee_amount(result3['fee'], count_bytes(result3['hex']), 10 * result_fee_rate)
-
- def test_feerate_with_conf_target_and_estimate_mode(self):
- self.log.info("Test fundrawtxn passing an explicit fee rate using conf_target and estimate_mode")
+ self.log.info("Test fundrawtxn with explicit fee rates (fee_rate sat/vB and feeRate BTC/kvB)")
node = self.nodes[3]
# Make sure there is exactly one input so coin selection can't skew the result.
- assert_equal(len(node.listunspent(1)), 1)
+ assert_equal(len(self.nodes[3].listunspent(1)), 1)
inputs = []
outputs = {node.getnewaddress() : 1}
rawtx = node.createrawtransaction(inputs, outputs)
- for unit, fee_rate in {"btc/kb": 0.1, "sat/b": 10000}.items():
- self.log.info("Test fundrawtxn with conf_target {} estimate_mode {} produces expected fee".format(fee_rate, unit))
- # With no arguments passed, expect fee of 141 sats/b.
- assert_approx(node.fundrawtransaction(rawtx)["fee"], vexp=0.00000141, vspan=0.00000001)
- # Expect fee to be 10,000x higher when explicit fee 10,000x greater is specified.
- result = node.fundrawtransaction(rawtx, {"conf_target": fee_rate, "estimate_mode": unit})
- assert_approx(result["fee"], vexp=0.0141, vspan=0.0001)
+ result = node.fundrawtransaction(rawtx) # uses self.min_relay_tx_fee (set by settxfee)
+ btc_kvb_to_sat_vb = 100000 # (1e5)
+ result1 = node.fundrawtransaction(rawtx, {"fee_rate": 2 * btc_kvb_to_sat_vb * self.min_relay_tx_fee})
+ result2 = node.fundrawtransaction(rawtx, {"feeRate": 2 * self.min_relay_tx_fee})
+ result3 = node.fundrawtransaction(rawtx, {"fee_rate": 10 * btc_kvb_to_sat_vb * self.min_relay_tx_fee})
+ result4 = node.fundrawtransaction(rawtx, {"feeRate": 10 * self.min_relay_tx_fee})
+ result_fee_rate = result['fee'] * 1000 / count_bytes(result['hex'])
+ assert_fee_amount(result1['fee'], count_bytes(result2['hex']), 2 * result_fee_rate)
+ assert_fee_amount(result2['fee'], count_bytes(result2['hex']), 2 * result_fee_rate)
+ assert_fee_amount(result3['fee'], count_bytes(result3['hex']), 10 * result_fee_rate)
+ assert_fee_amount(result4['fee'], count_bytes(result3['hex']), 10 * result_fee_rate)
- for field, fee_rate in {"conf_target": 0.1, "estimate_mode": "sat/b"}.items():
- self.log.info("Test fundrawtxn raises RPC error if both feeRate and {} are passed".format(field))
- assert_raises_rpc_error(
- -8, "Cannot specify both {} and feeRate".format(field),
- lambda: node.fundrawtransaction(rawtx, {"feeRate": 0.1, field: fee_rate}))
+ # With no arguments passed, expect fee of 141 satoshis.
+ assert_approx(node.fundrawtransaction(rawtx)["fee"], vexp=0.00000141, vspan=0.00000001)
+ # Expect fee to be 10,000x higher when an explicit fee rate 10,000x greater is specified.
+ result = node.fundrawtransaction(rawtx, {"fee_rate": 10000})
+ assert_approx(result["fee"], vexp=0.0141, vspan=0.0001)
self.log.info("Test fundrawtxn with invalid estimate_mode settings")
for k, v in {"number": 42, "object": {"foo": "bar"}}.items():
assert_raises_rpc_error(-3, "Expected type string for estimate_mode, got {}".format(k),
- lambda: self.nodes[1].fundrawtransaction(rawtx, {"estimate_mode": v, "conf_target": 0.1}))
- for mode in ["foo", Decimal("3.141592")]:
- assert_raises_rpc_error(-8, "Invalid estimate_mode parameter",
- lambda: self.nodes[1].fundrawtransaction(rawtx, {"estimate_mode": mode, "conf_target": 0.1}))
+ node.fundrawtransaction, rawtx, {"estimate_mode": v, "conf_target": 0.1, "add_inputs": True})
+ for mode in ["", "foo", Decimal("3.141592")]:
+ assert_raises_rpc_error(-8, 'Invalid estimate_mode parameter, must be one of: "unset", "economical", "conservative"',
+ node.fundrawtransaction, rawtx, {"estimate_mode": mode, "conf_target": 0.1, "add_inputs": True})
self.log.info("Test fundrawtxn with invalid conf_target settings")
- for mode in ["unset", "economical", "conservative", "btc/kb", "sat/b"]:
+ for mode in ["unset", "economical", "conservative"]:
self.log.debug("{}".format(mode))
for k, v in {"string": "", "object": {"foo": "bar"}}.items():
assert_raises_rpc_error(-3, "Expected type number for conf_target, got {}".format(k),
- lambda: self.nodes[1].fundrawtransaction(rawtx, {"estimate_mode": mode, "conf_target": v}))
- if mode in ["btc/kb", "sat/b"]:
- assert_raises_rpc_error(-3, "Amount out of range",
- lambda: self.nodes[1].fundrawtransaction(rawtx, {"estimate_mode": mode, "conf_target": -1}))
- assert_raises_rpc_error(-4, "Fee rate (0.00000000 BTC/kB) is lower than the minimum fee rate setting (0.00001000 BTC/kB)",
- lambda: self.nodes[1].fundrawtransaction(rawtx, {"estimate_mode": mode, "conf_target": 0}))
- else:
- for n in [-1, 0, 1009]:
- assert_raises_rpc_error(-8, "Invalid conf_target, must be between 1 and 1008",
- lambda: self.nodes[1].fundrawtransaction(rawtx, {"estimate_mode": mode, "conf_target": n}))
-
- for unit, fee_rate in {"sat/B": 0.99999999, "BTC/kB": 0.00000999}.items():
- self.log.info("- raises RPC error 'fee rate too low' if conf_target {} and estimate_mode {} are passed".format(fee_rate, unit))
- assert_raises_rpc_error(-4, "Fee rate (0.00000999 BTC/kB) is lower than the minimum fee rate setting (0.00001000 BTC/kB)",
- lambda: self.nodes[1].fundrawtransaction(rawtx, {"estimate_mode": unit, "conf_target": fee_rate, "add_inputs": True}))
-
+ node.fundrawtransaction, rawtx, {"estimate_mode": mode, "conf_target": v, "add_inputs": True})
+ for n in [-1, 0, 1009]:
+ assert_raises_rpc_error(-8, "Invalid conf_target, must be between 1 and 1008", # max value of 1008 per src/policy/fees.h
+ node.fundrawtransaction, rawtx, {"estimate_mode": mode, "conf_target": n, "add_inputs": True})
+
+ self.log.info("Test invalid fee rate settings")
+ assert_raises_rpc_error(-8, "Invalid fee_rate 0.000 sat/vB (must be greater than 0)",
+ node.fundrawtransaction, rawtx, {"fee_rate": 0, "add_inputs": True})
+ assert_raises_rpc_error(-8, "Invalid feeRate 0.00000000 BTC/kvB (must be greater than 0)",
+ node.fundrawtransaction, rawtx, {"feeRate": 0, "add_inputs": True})
+ for param, value in {("fee_rate", 100000), ("feeRate", 1.000)}:
+ assert_raises_rpc_error(-4, "Fee exceeds maximum configured by user (e.g. -maxtxfee, maxfeerate)",
+ node.fundrawtransaction, rawtx, {param: value, "add_inputs": True})
+ assert_raises_rpc_error(-3, "Amount out of range",
+ node.fundrawtransaction, rawtx, {"fee_rate": -1, "add_inputs": True})
+ assert_raises_rpc_error(-3, "Amount is not a number or string",
+ node.fundrawtransaction, rawtx, {"fee_rate": {"foo": "bar"}, "add_inputs": True})
+ assert_raises_rpc_error(-3, "Invalid amount",
+ node.fundrawtransaction, rawtx, {"fee_rate": "", "add_inputs": True})
+
+ self.log.info("Test min fee rate checks are bypassed with fundrawtxn, e.g. a fee_rate under 1 sat/vB is allowed")
+ node.fundrawtransaction(rawtx, {"fee_rate": 0.99999999, "add_inputs": True})
+ node.fundrawtransaction(rawtx, {"feeRate": 0.00000999, "add_inputs": True})
+
+ self.log.info("- raises RPC error if both feeRate and fee_rate are passed")
+ assert_raises_rpc_error(-8, "Cannot specify both fee_rate (sat/vB) and feeRate (BTC/kvB)",
+ node.fundrawtransaction, rawtx, {"fee_rate": 0.1, "feeRate": 0.1, "add_inputs": True})
+
+ self.log.info("- raises RPC error if both feeRate and estimate_mode passed")
+ assert_raises_rpc_error(-8, "Cannot specify both estimate_mode and feeRate",
+ node.fundrawtransaction, rawtx, {"estimate_mode": "economical", "feeRate": 0.1, "add_inputs": True})
+
+ for param in ["feeRate", "fee_rate"]:
+ self.log.info("- raises RPC error if both {} and conf_target are passed".format(param))
+ assert_raises_rpc_error(-8, "Cannot specify both conf_target and {}. Please provide either a confirmation "
+ "target in blocks for automatic fee estimation, or an explicit fee rate.".format(param),
+ node.fundrawtransaction, rawtx, {param: 1, "conf_target": 1, "add_inputs": True})
+
+ self.log.info("- raises RPC error if both fee_rate and estimate_mode are passed")
+ assert_raises_rpc_error(-8, "Cannot specify both estimate_mode and fee_rate",
+ node.fundrawtransaction, rawtx, {"fee_rate": 1, "estimate_mode": "economical", "add_inputs": True})
def test_address_reuse(self):
"""Test no address reuse occurs."""
@@ -803,12 +814,32 @@ class RawTransactionsTest(BitcoinTestFramework):
outputs = {self.nodes[2].getnewaddress(): 1}
rawtx = self.nodes[3].createrawtransaction(inputs, outputs)
+ # Test subtract fee from outputs with feeRate (BTC/kvB)
result = [self.nodes[3].fundrawtransaction(rawtx), # uses self.min_relay_tx_fee (set by settxfee)
self.nodes[3].fundrawtransaction(rawtx, {"subtractFeeFromOutputs": []}), # empty subtraction list
self.nodes[3].fundrawtransaction(rawtx, {"subtractFeeFromOutputs": [0]}), # uses self.min_relay_tx_fee (set by settxfee)
self.nodes[3].fundrawtransaction(rawtx, {"feeRate": 2 * self.min_relay_tx_fee}),
self.nodes[3].fundrawtransaction(rawtx, {"feeRate": 2 * self.min_relay_tx_fee, "subtractFeeFromOutputs": [0]}),]
+ dec_tx = [self.nodes[3].decoderawtransaction(tx_['hex']) for tx_ in result]
+ output = [d['vout'][1 - r['changepos']]['value'] for d, r in zip(dec_tx, result)]
+ change = [d['vout'][r['changepos']]['value'] for d, r in zip(dec_tx, result)]
+
+ assert_equal(result[0]['fee'], result[1]['fee'], result[2]['fee'])
+ assert_equal(result[3]['fee'], result[4]['fee'])
+ assert_equal(change[0], change[1])
+ assert_equal(output[0], output[1])
+ assert_equal(output[0], output[2] + result[2]['fee'])
+ assert_equal(change[0] + result[0]['fee'], change[2])
+ assert_equal(output[3], output[4] + result[4]['fee'])
+ assert_equal(change[3] + result[3]['fee'], change[4])
+ # Test subtract fee from outputs with fee_rate (sat/vB)
+ btc_kvb_to_sat_vb = 100000 # (1e5)
+ result = [self.nodes[3].fundrawtransaction(rawtx), # uses self.min_relay_tx_fee (set by settxfee)
+ self.nodes[3].fundrawtransaction(rawtx, {"subtractFeeFromOutputs": []}), # empty subtraction list
+ self.nodes[3].fundrawtransaction(rawtx, {"subtractFeeFromOutputs": [0]}), # uses self.min_relay_tx_fee (set by settxfee)
+ self.nodes[3].fundrawtransaction(rawtx, {"fee_rate": 2 * btc_kvb_to_sat_vb * self.min_relay_tx_fee}),
+ self.nodes[3].fundrawtransaction(rawtx, {"fee_rate": 2 * btc_kvb_to_sat_vb * self.min_relay_tx_fee, "subtractFeeFromOutputs": [0]}),]
dec_tx = [self.nodes[3].decoderawtransaction(tx_['hex']) for tx_ in result]
output = [d['vout'][1 - r['changepos']]['value'] for d, r in zip(dec_tx, result)]
change = [d['vout'][r['changepos']]['value'] for d, r in zip(dec_tx, result)]
diff --git a/test/functional/rpc_psbt.py b/test/functional/rpc_psbt.py
index ca75bcb9bb..498197b5e5 100755
--- a/test/functional/rpc_psbt.py
+++ b/test/functional/rpc_psbt.py
@@ -187,60 +187,74 @@ class PSBTTest(BitcoinTestFramework):
assert_equal(walletprocesspsbt_out['complete'], True)
self.nodes[1].sendrawtransaction(self.nodes[1].finalizepsbt(walletprocesspsbt_out['psbt'])['hex'])
- self.log.info("Test walletcreatefundedpsbt feeRate of 0.1 BTC/kB produces a total fee at or slightly below -maxtxfee (~0.05290000)")
- res = self.nodes[1].walletcreatefundedpsbt(inputs, outputs, 0, {"feeRate": 0.1, "add_inputs": True})
- assert_approx(res["fee"], 0.055, 0.005)
-
- self.log.info("Test walletcreatefundedpsbt explicit fee rate with conf_target and estimate_mode")
- for unit, fee_rate in {"btc/kb": 0.1, "sat/b": 10000}.items():
- fee = self.nodes[1].walletcreatefundedpsbt(inputs, outputs, 0, {"conf_target": fee_rate, "estimate_mode": unit, "add_inputs": True})["fee"]
- self.log.info("- conf_target {}, estimate_mode {} produces fee {} at or slightly below -maxtxfee (~0.05290000)".format(fee_rate, unit, fee))
- assert_approx(fee, vexp=0.055, vspan=0.005)
-
- for field, fee_rate in {"conf_target": 0.1, "estimate_mode": "sat/b"}.items():
- self.log.info("- raises RPC error if both feeRate and {} are passed".format(field))
- assert_raises_rpc_error(-8, "Cannot specify both {} and feeRate".format(field),
- lambda: self.nodes[1].walletcreatefundedpsbt(inputs, outputs, 0, {"feeRate": 0.1, field: fee_rate, "add_inputs": True}))
+ self.log.info("Test walletcreatefundedpsbt fee rate of 10000 sat/vB and 0.1 BTC/kvB produces a total fee at or slightly below -maxtxfee (~0.05290000)")
+ res1 = self.nodes[1].walletcreatefundedpsbt(inputs, outputs, 0, {"fee_rate": 10000, "add_inputs": True})
+ assert_approx(res1["fee"], 0.055, 0.005)
+ res2 = self.nodes[1].walletcreatefundedpsbt(inputs, outputs, 0, {"feeRate": 0.1, "add_inputs": True})
+ assert_approx(res2["fee"], 0.055, 0.005)
+ self.log.info("Test min fee rate checks with walletcreatefundedpsbt are bypassed, e.g. a fee_rate under 1 sat/vB is allowed")
+ res3 = self.nodes[1].walletcreatefundedpsbt(inputs, outputs, 0, {"fee_rate": 0.99999999, "add_inputs": True})
+ assert_approx(res3["fee"], 0.00000381, 0.0000001)
+ res4 = self.nodes[1].walletcreatefundedpsbt(inputs, outputs, 0, {"feeRate": 0.00000999, "add_inputs": True})
+ assert_approx(res4["fee"], 0.00000381, 0.0000001)
+
+ self.log.info("Test invalid fee rate settings")
+ assert_raises_rpc_error(-8, "Invalid fee_rate 0.000 sat/vB (must be greater than 0)",
+ self.nodes[1].walletcreatefundedpsbt, inputs, outputs, 0, {"fee_rate": 0, "add_inputs": True})
+ assert_raises_rpc_error(-8, "Invalid feeRate 0.00000000 BTC/kvB (must be greater than 0)",
+ self.nodes[1].walletcreatefundedpsbt, inputs, outputs, 0, {"feeRate": 0, "add_inputs": True})
+ for param, value in {("fee_rate", 100000), ("feeRate", 1)}:
+ assert_raises_rpc_error(-4, "Fee exceeds maximum configured by user (e.g. -maxtxfee, maxfeerate)",
+ self.nodes[1].walletcreatefundedpsbt, inputs, outputs, 0, {param: value, "add_inputs": True})
+ assert_raises_rpc_error(-3, "Amount out of range",
+ self.nodes[1].walletcreatefundedpsbt, inputs, outputs, 0, {"fee_rate": -1, "add_inputs": True})
+ assert_raises_rpc_error(-3, "Amount is not a number or string",
+ self.nodes[1].walletcreatefundedpsbt, inputs, outputs, 0, {"fee_rate": {"foo": "bar"}, "add_inputs": True})
+ assert_raises_rpc_error(-3, "Invalid amount",
+ self.nodes[1].walletcreatefundedpsbt, inputs, outputs, 0, {"fee_rate": "", "add_inputs": True})
+
+ self.log.info("- raises RPC error if both feeRate and fee_rate are passed")
+ assert_raises_rpc_error(-8, "Cannot specify both fee_rate (sat/vB) and feeRate (BTC/kvB)",
+ self.nodes[1].walletcreatefundedpsbt, inputs, outputs, 0, {"fee_rate": 0.1, "feeRate": 0.1, "add_inputs": True})
+
+ self.log.info("- raises RPC error if both feeRate and estimate_mode passed")
+ assert_raises_rpc_error(-8, "Cannot specify both estimate_mode and feeRate",
+ self.nodes[1].walletcreatefundedpsbt, inputs, outputs, 0, {"estimate_mode": "economical", "feeRate": 0.1, "add_inputs": True})
+
+ for param in ["feeRate", "fee_rate"]:
+ self.log.info("- raises RPC error if both {} and conf_target are passed".format(param))
+ assert_raises_rpc_error(-8, "Cannot specify both conf_target and {}. Please provide either a confirmation "
+ "target in blocks for automatic fee estimation, or an explicit fee rate.".format(param),
+ self.nodes[1].walletcreatefundedpsbt ,inputs, outputs, 0, {param: 1, "conf_target": 1, "add_inputs": True})
+
+ self.log.info("- raises RPC error if both fee_rate and estimate_mode are passed")
+ assert_raises_rpc_error(-8, "Cannot specify both estimate_mode and fee_rate",
+ self.nodes[1].walletcreatefundedpsbt ,inputs, outputs, 0, {"fee_rate": 1, "estimate_mode": "economical", "add_inputs": True})
self.log.info("- raises RPC error with invalid estimate_mode settings")
for k, v in {"number": 42, "object": {"foo": "bar"}}.items():
assert_raises_rpc_error(-3, "Expected type string for estimate_mode, got {}".format(k),
- lambda: self.nodes[1].walletcreatefundedpsbt(inputs, outputs, 0, {"estimate_mode": v, "conf_target": 0.1, "add_inputs": True}))
- for mode in ["foo", Decimal("3.141592")]:
- assert_raises_rpc_error(-8, "Invalid estimate_mode parameter",
- lambda: self.nodes[1].walletcreatefundedpsbt(inputs, outputs, 0, {"estimate_mode": mode, "conf_target": 0.1, "add_inputs": True}))
-
- self.log.info("- raises RPC error if estimate_mode is passed without a conf_target")
- for unit in ["SAT/B", "BTC/KB"]:
- assert_raises_rpc_error(-8, "Selected estimate_mode {} requires a fee rate to be specified in conf_target".format(unit),
- lambda: self.nodes[1].walletcreatefundedpsbt(inputs, outputs, 0, {"estimate_mode": unit}))
+ self.nodes[1].walletcreatefundedpsbt, inputs, outputs, 0, {"estimate_mode": v, "conf_target": 0.1, "add_inputs": True})
+ for mode in ["", "foo", Decimal("3.141592")]:
+ assert_raises_rpc_error(-8, 'Invalid estimate_mode parameter, must be one of: "unset", "economical", "conservative"',
+ self.nodes[1].walletcreatefundedpsbt, inputs, outputs, 0, {"estimate_mode": mode, "conf_target": 0.1, "add_inputs": True})
self.log.info("- raises RPC error with invalid conf_target settings")
- for mode in ["unset", "economical", "conservative", "btc/kb", "sat/b"]:
+ for mode in ["unset", "economical", "conservative"]:
self.log.debug("{}".format(mode))
for k, v in {"string": "", "object": {"foo": "bar"}}.items():
assert_raises_rpc_error(-3, "Expected type number for conf_target, got {}".format(k),
- lambda: self.nodes[1].walletcreatefundedpsbt(inputs, outputs, 0, {"estimate_mode": mode, "conf_target": v, "add_inputs": True}))
- if mode in ["btc/kb", "sat/b"]:
- assert_raises_rpc_error(-3, "Amount out of range",
- lambda: self.nodes[1].walletcreatefundedpsbt(inputs, outputs, 0, {"estimate_mode": mode, "conf_target": -1, "add_inputs": True}))
- assert_raises_rpc_error(-4, "Fee rate (0.00000000 BTC/kB) is lower than the minimum fee rate setting (0.00001000 BTC/kB)",
- lambda: self.nodes[1].walletcreatefundedpsbt(inputs, outputs, 0, {"estimate_mode": mode, "conf_target": 0, "add_inputs": True}))
- else:
- for n in [-1, 0, 1009]:
- assert_raises_rpc_error(-8, "Invalid conf_target, must be between 1 and 1008",
- lambda: self.nodes[1].walletcreatefundedpsbt(inputs, outputs, 0, {"estimate_mode": mode, "conf_target": n, "add_inputs": True}))
-
- for unit, fee_rate in {"SAT/B": 0.99999999, "BTC/KB": 0.00000999}.items():
- self.log.info("- raises RPC error 'fee rate too low' if conf_target {} and estimate_mode {} are passed".format(fee_rate, unit))
- assert_raises_rpc_error(-4, "Fee rate (0.00000999 BTC/kB) is lower than the minimum fee rate setting (0.00001000 BTC/kB)",
- lambda: self.nodes[1].walletcreatefundedpsbt(inputs, outputs, 0, {"estimate_mode": unit, "conf_target": fee_rate, "add_inputs": True}))
-
- self.log.info("Test walletcreatefundedpsbt feeRate of 10 BTC/kB produces total fee well above -maxtxfee and raises RPC error")
+ self.nodes[1].walletcreatefundedpsbt, inputs, outputs, 0, {"estimate_mode": mode, "conf_target": v, "add_inputs": True})
+ for n in [-1, 0, 1009]:
+ assert_raises_rpc_error(-8, "Invalid conf_target, must be between 1 and 1008", # max value of 1008 per src/policy/fees.h
+ self.nodes[1].walletcreatefundedpsbt, inputs, outputs, 0, {"estimate_mode": mode, "conf_target": n, "add_inputs": True})
+
+ self.log.info("Test walletcreatefundedpsbt with too-high fee rate produces total fee well above -maxtxfee and raises RPC error")
# previously this was silently capped at -maxtxfee
for bool_add, outputs_array in {True: outputs, False: [{self.nodes[1].getnewaddress(): 1}]}.items():
- assert_raises_rpc_error(-4, "Fee exceeds maximum configured by user (e.g. -maxtxfee, maxfeerate)",
- self.nodes[1].walletcreatefundedpsbt, inputs, outputs_array, 0, {"feeRate": 10, "add_inputs": bool_add})
+ msg = "Fee exceeds maximum configured by user (e.g. -maxtxfee, maxfeerate)"
+ assert_raises_rpc_error(-4, msg, self.nodes[1].walletcreatefundedpsbt, inputs, outputs_array, 0, {"fee_rate": 1000000, "add_inputs": bool_add})
+ assert_raises_rpc_error(-4, msg, self.nodes[1].walletcreatefundedpsbt, inputs, outputs_array, 0, {"feeRate": 1, "add_inputs": bool_add})
self.log.info("Test various PSBT operations")
# partially sign multisig things with node 1
diff --git a/test/functional/wallet_basic.py b/test/functional/wallet_basic.py
index 40daffd2c2..ac4a6e4948 100755
--- a/test/functional/wallet_basic.py
+++ b/test/functional/wallet_basic.py
@@ -4,6 +4,7 @@
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
"""Test the wallet."""
from decimal import Decimal
+from itertools import product
from test_framework.test_framework import BitcoinTestFramework
from test_framework.util import (
@@ -14,6 +15,8 @@ from test_framework.util import (
)
from test_framework.wallet_util import test_address
+OUT_OF_RANGE = "Amount out of range"
+
class WalletTest(BitcoinTestFramework):
def set_test_params(self):
@@ -74,7 +77,7 @@ class WalletTest(BitcoinTestFramework):
assert_equal(len(self.nodes[1].listunspent()), 1)
assert_equal(len(self.nodes[2].listunspent()), 0)
- self.log.info("test gettxout")
+ self.log.info("Test gettxout")
confirmed_txid, confirmed_index = utxos[0]["txid"], utxos[0]["vout"]
# First, outputs that are unspent both in the chain and in the
# mempool should appear with or without include_mempool
@@ -87,7 +90,7 @@ class WalletTest(BitcoinTestFramework):
self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), 11)
mempool_txid = self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), 10)
- self.log.info("test gettxout (second part)")
+ self.log.info("Test gettxout (second part)")
# utxo spent in mempool should be visible if you exclude mempool
# but invisible if you include mempool
txout = self.nodes[0].gettxout(confirmed_txid, confirmed_index, False)
@@ -227,65 +230,40 @@ class WalletTest(BitcoinTestFramework):
assert_equal(self.nodes[2].getbalance(), node_2_bal)
node_0_bal = self.check_fee_amount(self.nodes[0].getbalance(), node_0_bal + Decimal('10'), fee_per_byte, self.get_vsize(self.nodes[2].gettransaction(txid)['hex']))
- self.log.info("Test case-insensitive explicit fee rate (sendmany as BTC/kB)")
- # Throw if no conf_target provided
- assert_raises_rpc_error(-8, "Selected estimate_mode bTc/kB requires a fee rate to be specified in conf_target",
- self.nodes[2].sendmany,
- amounts={ address: 10 },
- estimate_mode='bTc/kB')
- # Throw if negative feerate
- assert_raises_rpc_error(-3, "Amount out of range",
- self.nodes[2].sendmany,
- amounts={ address: 10 },
- conf_target=-1,
- estimate_mode='bTc/kB')
- fee_per_kb = 0.0002500
- explicit_fee_per_byte = Decimal(fee_per_kb) / 1000
- txid = self.nodes[2].sendmany(
- amounts={ address: 10 },
- conf_target=fee_per_kb,
- estimate_mode='bTc/kB',
- )
- self.nodes[2].generate(1)
- self.sync_all(self.nodes[0:3])
- node_2_bal = self.check_fee_amount(self.nodes[2].getbalance(), node_2_bal - Decimal('10'), explicit_fee_per_byte, self.get_vsize(self.nodes[2].gettransaction(txid)['hex']))
- assert_equal(self.nodes[2].getbalance(), node_2_bal)
- node_0_bal += Decimal('10')
- assert_equal(self.nodes[0].getbalance(), node_0_bal)
+ self.log.info("Test sendmany with fee_rate param (explicit fee rate in sat/vB)")
+ fee_rate_sat_vb = 2
+ fee_rate_btc_kvb = fee_rate_sat_vb * 1e3 / 1e8
+ explicit_fee_rate_btc_kvb = Decimal(fee_rate_btc_kvb) / 1000
- self.log.info("Test case-insensitive explicit fee rate (sendmany as sat/B)")
- # Throw if no conf_target provided
- assert_raises_rpc_error(-8, "Selected estimate_mode sat/b requires a fee rate to be specified in conf_target",
- self.nodes[2].sendmany,
- amounts={ address: 10 },
- estimate_mode='sat/b')
- # Throw if negative feerate
- assert_raises_rpc_error(-3, "Amount out of range",
- self.nodes[2].sendmany,
- amounts={ address: 10 },
- conf_target=-1,
- estimate_mode='sat/b')
- fee_sat_per_b = 2
- fee_per_kb = fee_sat_per_b / 100000.0
- explicit_fee_per_byte = Decimal(fee_per_kb) / 1000
- txid = self.nodes[2].sendmany(
- amounts={ address: 10 },
- conf_target=fee_sat_per_b,
- estimate_mode='sAT/b',
- )
+ txid = self.nodes[2].sendmany(amounts={address: 10}, fee_rate=fee_rate_sat_vb)
self.nodes[2].generate(1)
self.sync_all(self.nodes[0:3])
balance = self.nodes[2].getbalance()
- node_2_bal = self.check_fee_amount(balance, node_2_bal - Decimal('10'), explicit_fee_per_byte, self.get_vsize(self.nodes[2].gettransaction(txid)['hex']))
+ node_2_bal = self.check_fee_amount(balance, node_2_bal - Decimal('10'), explicit_fee_rate_btc_kvb, self.get_vsize(self.nodes[2].gettransaction(txid)['hex']))
assert_equal(balance, node_2_bal)
node_0_bal += Decimal('10')
assert_equal(self.nodes[0].getbalance(), node_0_bal)
+ for key in ["totalFee", "feeRate"]:
+ assert_raises_rpc_error(-8, "Unknown named parameter key", self.nodes[2].sendtoaddress, address=address, amount=1, fee_rate=1, key=1)
+
# Test setting explicit fee rate just below the minimum.
- for unit, fee_rate in {"BTC/kB": 0.00000999, "sat/B": 0.99999999}.items():
- self.log.info("Test sendmany raises 'fee rate too low' if conf_target {} and estimate_mode {} are passed".format(fee_rate, unit))
- assert_raises_rpc_error(-6, "Fee rate (0.00000999 BTC/kB) is lower than the minimum fee rate setting (0.00001000 BTC/kB)",
- self.nodes[2].sendmany, amounts={address: 10}, estimate_mode=unit, conf_target=fee_rate)
+ self.log.info("Test sendmany raises 'fee rate too low' if fee_rate of 0.99999999 is passed")
+ assert_raises_rpc_error(-6, "Fee rate (0.999 sat/vB) is lower than the minimum fee rate setting (1.000 sat/vB)",
+ self.nodes[2].sendmany, amounts={address: 10}, fee_rate=0.99999999)
+
+ self.log.info("Test sendmany raises if fee_rate of 0 or -1 is passed")
+ assert_raises_rpc_error(-6, "Fee rate (0.000 sat/vB) is lower than the minimum fee rate setting (1.000 sat/vB)",
+ self.nodes[2].sendmany, amounts={address: 10}, fee_rate=0)
+ assert_raises_rpc_error(-3, OUT_OF_RANGE, self.nodes[2].sendmany, amounts={address: 10}, fee_rate=-1)
+
+ self.log.info("Test sendmany raises if an invalid conf_target or estimate_mode is passed")
+ for target, mode in product([-1, 0, 1009], ["economical", "conservative"]):
+ assert_raises_rpc_error(-8, "Invalid conf_target, must be between 1 and 1008", # max value of 1008 per src/policy/fees.h
+ self.nodes[2].sendmany, amounts={address: 1}, conf_target=target, estimate_mode=mode)
+ for target, mode in product([-1, 0], ["btc/kb", "sat/b"]):
+ assert_raises_rpc_error(-8, 'Invalid estimate_mode parameter, must be one of: "unset", "economical", "conservative"',
+ self.nodes[2].sendmany, amounts={address: 1}, conf_target=target, estimate_mode=mode)
self.start_node(3, self.nodes[3].extra_args)
self.connect_nodes(0, 3)
@@ -318,7 +296,7 @@ class WalletTest(BitcoinTestFramework):
assert_equal(uTx['amount'], Decimal('0'))
assert found
- # do some -walletbroadcast tests
+ self.log.info("Test -walletbroadcast")
self.stop_nodes()
self.start_node(0, ["-walletbroadcast=0"])
self.start_node(1, ["-walletbroadcast=0"])
@@ -378,7 +356,7 @@ class WalletTest(BitcoinTestFramework):
# General checks for errors from incorrect inputs
# This will raise an exception because the amount is negative
- assert_raises_rpc_error(-3, "Amount out of range", self.nodes[0].sendtoaddress, self.nodes[2].getnewaddress(), "-1")
+ assert_raises_rpc_error(-3, OUT_OF_RANGE, self.nodes[0].sendtoaddress, self.nodes[2].getnewaddress(), "-1")
# This will raise an exception because the amount type is wrong
assert_raises_rpc_error(-3, "Invalid amount", self.nodes[0].sendtoaddress, self.nodes[2].getnewaddress(), "1f-4")
@@ -420,78 +398,42 @@ class WalletTest(BitcoinTestFramework):
self.nodes[0].generate(1)
self.sync_all(self.nodes[0:3])
- self.log.info("Test case-insensitive explicit fee rate (sendtoaddress as BTC/kB)")
- self.nodes[0].generate(1)
- self.sync_all(self.nodes[0:3])
+ self.log.info("Test sendtoaddress with fee_rate param (explicit fee rate in sat/vB)")
prebalance = self.nodes[2].getbalance()
assert prebalance > 2
address = self.nodes[1].getnewaddress()
- # Throw if no conf_target provided
- assert_raises_rpc_error(-8, "Selected estimate_mode BTc/Kb requires a fee rate to be specified in conf_target",
- self.nodes[2].sendtoaddress,
- address=address,
- amount=1.0,
- estimate_mode='BTc/Kb')
- # Throw if negative feerate
- assert_raises_rpc_error(-3, "Amount out of range",
- self.nodes[2].sendtoaddress,
- address=address,
- amount=1.0,
- conf_target=-1,
- estimate_mode='btc/kb')
- txid = self.nodes[2].sendtoaddress(
- address=address,
- amount=1.0,
- conf_target=0.00002500,
- estimate_mode='btc/kb',
- )
- tx_size = self.get_vsize(self.nodes[2].gettransaction(txid)['hex'])
- self.sync_all(self.nodes[0:3])
- self.nodes[0].generate(1)
- self.sync_all(self.nodes[0:3])
- postbalance = self.nodes[2].getbalance()
- fee = prebalance - postbalance - Decimal('1')
- assert_fee_amount(fee, tx_size, Decimal('0.00002500'))
+ amount = 3
+ fee_rate_sat_vb = 2
+ fee_rate_btc_kvb = fee_rate_sat_vb * 1e3 / 1e8
- self.sync_all(self.nodes[0:3])
-
- self.log.info("Test case-insensitive explicit fee rate (sendtoaddress as sat/B)")
- self.nodes[0].generate(1)
- prebalance = self.nodes[2].getbalance()
- assert prebalance > 2
- address = self.nodes[1].getnewaddress()
- # Throw if no conf_target provided
- assert_raises_rpc_error(-8, "Selected estimate_mode SAT/b requires a fee rate to be specified in conf_target",
- self.nodes[2].sendtoaddress,
- address=address,
- amount=1.0,
- estimate_mode='SAT/b')
- # Throw if negative feerate
- assert_raises_rpc_error(-3, "Amount out of range",
- self.nodes[2].sendtoaddress,
- address=address,
- amount=1.0,
- conf_target=-1,
- estimate_mode='SAT/b')
- txid = self.nodes[2].sendtoaddress(
- address=address,
- amount=1.0,
- conf_target=2,
- estimate_mode='SAT/B',
- )
+ txid = self.nodes[2].sendtoaddress(address=address, amount=amount, fee_rate=fee_rate_sat_vb)
tx_size = self.get_vsize(self.nodes[2].gettransaction(txid)['hex'])
- self.sync_all(self.nodes[0:3])
self.nodes[0].generate(1)
self.sync_all(self.nodes[0:3])
postbalance = self.nodes[2].getbalance()
- fee = prebalance - postbalance - Decimal('1')
- assert_fee_amount(fee, tx_size, Decimal('0.00002000'))
+ fee = prebalance - postbalance - Decimal(amount)
+ assert_fee_amount(fee, tx_size, Decimal(fee_rate_btc_kvb))
+
+ for key in ["totalFee", "feeRate"]:
+ assert_raises_rpc_error(-8, "Unknown named parameter key", self.nodes[2].sendtoaddress, address=address, amount=1, fee_rate=1, key=1)
# Test setting explicit fee rate just below the minimum.
- for unit, fee_rate in {"BTC/kB": 0.00000999, "sat/B": 0.99999999}.items():
- self.log.info("Test sendtoaddress raises 'fee rate too low' if conf_target {} and estimate_mode {} are passed".format(fee_rate, unit))
- assert_raises_rpc_error(-6, "Fee rate (0.00000999 BTC/kB) is lower than the minimum fee rate setting (0.00001000 BTC/kB)",
- self.nodes[2].sendtoaddress, address=address, amount=1, estimate_mode=unit, conf_target=fee_rate)
+ self.log.info("Test sendtoaddress raises 'fee rate too low' if fee_rate of 0.99999999 is passed")
+ assert_raises_rpc_error(-6, "Fee rate (0.999 sat/vB) is lower than the minimum fee rate setting (1.000 sat/vB)",
+ self.nodes[2].sendtoaddress, address=address, amount=1, fee_rate=0.99999999)
+
+ self.log.info("Test sendtoaddress raises if fee_rate of 0 or -1 is passed")
+ assert_raises_rpc_error(-6, "Fee rate (0.000 sat/vB) is lower than the minimum fee rate setting (1.000 sat/vB)",
+ self.nodes[2].sendtoaddress, address=address, amount=10, fee_rate=0)
+ assert_raises_rpc_error(-3, OUT_OF_RANGE, self.nodes[2].sendtoaddress, address=address, amount=1.0, fee_rate=-1)
+
+ self.log.info("Test sendtoaddress raises if an invalid conf_target or estimate_mode is passed")
+ for target, mode in product([-1, 0, 1009], ["economical", "conservative"]):
+ assert_raises_rpc_error(-8, "Invalid conf_target, must be between 1 and 1008", # max value of 1008 per src/policy/fees.h
+ self.nodes[2].sendtoaddress, address=address, amount=1, conf_target=target, estimate_mode=mode)
+ for target, mode in product([-1, 0], ["btc/kb", "sat/b"]):
+ assert_raises_rpc_error(-8, 'Invalid estimate_mode parameter, must be one of: "unset", "economical", "conservative"',
+ self.nodes[2].sendtoaddress, address=address, amount=1, conf_target=target, estimate_mode=mode)
# 2. Import address from node2 to node1
self.nodes[1].importaddress(address_to_import)
@@ -549,7 +491,7 @@ class WalletTest(BitcoinTestFramework):
]
chainlimit = 6
for m in maintenance:
- self.log.info("check " + m)
+ self.log.info("Test " + m)
self.stop_nodes()
# set lower ancestor limit for later
self.start_node(0, [m, "-limitancestorcount=" + str(chainlimit)])
diff --git a/test/functional/wallet_bumpfee.py b/test/functional/wallet_bumpfee.py
index 88a7778e19..c323aac3cc 100755
--- a/test/functional/wallet_bumpfee.py
+++ b/test/functional/wallet_bumpfee.py
@@ -17,7 +17,7 @@ from decimal import Decimal
import io
from test_framework.blocktools import add_witness_commitment, create_block, create_coinbase, send_to_witness
-from test_framework.messages import BIP125_SEQUENCE_NUMBER, COIN, CTransaction
+from test_framework.messages import BIP125_SEQUENCE_NUMBER, CTransaction
from test_framework.test_framework import BitcoinTestFramework
from test_framework.util import (
assert_equal,
@@ -29,15 +29,13 @@ from test_framework.util import (
WALLET_PASSPHRASE = "test"
WALLET_PASSPHRASE_TIMEOUT = 3600
-# Fee rates (in BTC per 1000 vbytes)
-INSUFFICIENT = 0.00001000
-ECONOMICAL = 0.00050000
-NORMAL = 0.00100000
-HIGH = 0.00500000
-TOO_HIGH = 1.00000000
+# Fee rates (sat/vB)
+INSUFFICIENT = 1
+ECONOMICAL = 50
+NORMAL = 100
+HIGH = 500
+TOO_HIGH = 100000
-BTC_MODE = "BTC/kB"
-SAT_MODE = "sat/B"
class BumpFeeTest(BitcoinTestFramework):
def set_test_params(self):
@@ -78,7 +76,7 @@ class BumpFeeTest(BitcoinTestFramework):
self.log.info("Running tests")
dest_address = peer_node.getnewaddress()
- for mode in ["default", "fee_rate", BTC_MODE, SAT_MODE]:
+ for mode in ["default", "fee_rate"]:
test_simple_bumpfee_succeeds(self, mode, rbf_node, peer_node, dest_address)
self.test_invalid_parameters(rbf_node, peer_node, dest_address)
test_segwit_bumpfee_succeeds(self, rbf_node, dest_address)
@@ -105,50 +103,44 @@ class BumpFeeTest(BitcoinTestFramework):
self.sync_mempools((rbf_node, peer_node))
assert rbfid in rbf_node.getrawmempool() and rbfid in peer_node.getrawmempool()
- assert_raises_rpc_error(-3, "Unexpected key totalFee", rbf_node.bumpfee, rbfid, {"totalFee": NORMAL})
- assert_raises_rpc_error(-4, "is too high (cannot be higher than", rbf_node.bumpfee, rbfid, {"fee_rate": TOO_HIGH})
+ for key in ["totalFee", "feeRate"]:
+ assert_raises_rpc_error(-3, "Unexpected key {}".format(key), rbf_node.bumpfee, rbfid, {key: NORMAL})
- # For each fee mode, bumping to just above minrelay should fail to increase the total fee enough.
- for options in [{"fee_rate": INSUFFICIENT}, {"conf_target": INSUFFICIENT, "estimate_mode": BTC_MODE}, {"conf_target": 1, "estimate_mode": SAT_MODE}]:
- assert_raises_rpc_error(-8, "Insufficient total fee", rbf_node.bumpfee, rbfid, options)
+ # Bumping to just above minrelay should fail to increase the total fee enough.
+ assert_raises_rpc_error(-8, "Insufficient total fee 0.00000141, must be at least 0.00001704 (oldFee 0.00000999 + incrementalFee 0.00000705)",
+ rbf_node.bumpfee, rbfid, {"fee_rate": INSUFFICIENT})
- self.log.info("Test explicit fee rate raises RPC error if estimate_mode is passed without a conf_target")
- for unit, fee_rate in {"SAT/B": 100, "BTC/KB": NORMAL}.items():
- assert_raises_rpc_error(-8, "Selected estimate_mode {} requires a fee rate to be specified in conf_target".format(unit),
- rbf_node.bumpfee, rbfid, {"fee_rate": fee_rate, "estimate_mode": unit})
+ self.log.info("Test invalid fee rate settings")
+ assert_raises_rpc_error(-8, "Insufficient total fee 0.00, must be at least 0.00001704 (oldFee 0.00000999 + incrementalFee 0.00000705)",
+ rbf_node.bumpfee, rbfid, {"fee_rate": 0})
+ assert_raises_rpc_error(-4, "Specified or calculated fee 0.141 is too high (cannot be higher than -maxtxfee 0.10",
+ rbf_node.bumpfee, rbfid, {"fee_rate": TOO_HIGH})
+ assert_raises_rpc_error(-3, "Amount out of range", rbf_node.bumpfee, rbfid, {"fee_rate": -1})
+ for value in [{"foo": "bar"}, True]:
+ assert_raises_rpc_error(-3, "Amount is not a number or string", rbf_node.bumpfee, rbfid, {"fee_rate": value})
+ assert_raises_rpc_error(-3, "Invalid amount", rbf_node.bumpfee, rbfid, {"fee_rate": ""})
self.log.info("Test explicit fee rate raises RPC error if both fee_rate and conf_target are passed")
- error_both = "Cannot specify both conf_target and fee_rate. Please provide either a confirmation " \
- "target in blocks for automatic fee estimation, or an explicit fee rate."
- assert_raises_rpc_error(-8, error_both, rbf_node.bumpfee, rbfid, {"conf_target": NORMAL, "fee_rate": NORMAL})
+ assert_raises_rpc_error(-8, "Cannot specify both conf_target and fee_rate. Please provide either a confirmation "
+ "target in blocks for automatic fee estimation, or an explicit fee rate.",
+ rbf_node.bumpfee, rbfid, {"conf_target": NORMAL, "fee_rate": NORMAL})
+
+ self.log.info("Test explicit fee rate raises RPC error if both fee_rate and estimate_mode are passed")
+ assert_raises_rpc_error(-8, "Cannot specify both estimate_mode and fee_rate",
+ rbf_node.bumpfee, rbfid, {"estimate_mode": "economical", "fee_rate": NORMAL})
self.log.info("Test invalid conf_target settings")
assert_raises_rpc_error(-8, "confTarget and conf_target options should not both be set",
- rbf_node.bumpfee, rbfid, {"confTarget": 123, "conf_target": 456})
- for field in ["confTarget", "conf_target"]:
- assert_raises_rpc_error(-4, "is too high (cannot be higher than -maxtxfee",
- lambda: rbf_node.bumpfee(rbfid, {"estimate_mode": BTC_MODE, "conf_target": 2009}))
- assert_raises_rpc_error(-4, "is too high (cannot be higher than -maxtxfee",
- lambda: rbf_node.bumpfee(rbfid, {"estimate_mode": SAT_MODE, "conf_target": 2009 * 10000}))
+ rbf_node.bumpfee, rbfid, {"confTarget": 123, "conf_target": 456})
self.log.info("Test invalid estimate_mode settings")
for k, v in {"number": 42, "object": {"foo": "bar"}}.items():
assert_raises_rpc_error(-3, "Expected type string for estimate_mode, got {}".format(k),
- lambda: rbf_node.bumpfee(rbfid, {"estimate_mode": v, "fee_rate": NORMAL}))
- for mode in ["foo", Decimal("3.141592")]:
- assert_raises_rpc_error(-8, "Invalid estimate_mode parameter",
- lambda: rbf_node.bumpfee(rbfid, {"estimate_mode": mode, "fee_rate": NORMAL}))
-
- self.log.info("Test invalid fee_rate settings")
- for mode in ["unset", "economical", "conservative", BTC_MODE, SAT_MODE]:
- self.log.debug("{}".format(mode))
- for k, v in {"string": "", "object": {"foo": "bar"}}.items():
- assert_raises_rpc_error(-3, "Expected type number for fee_rate, got {}".format(k),
- lambda: rbf_node.bumpfee(rbfid, {"estimate_mode": mode, "fee_rate": v}))
- assert_raises_rpc_error(-3, "Amount out of range",
- lambda: rbf_node.bumpfee(rbfid, {"estimate_mode": mode, "fee_rate": -1}))
- assert_raises_rpc_error(-8, "Invalid fee_rate 0.00000000 BTC/kB (must be greater than 0)",
- lambda: rbf_node.bumpfee(rbfid, {"estimate_mode": mode, "fee_rate": 0}))
+ rbf_node.bumpfee, rbfid, {"estimate_mode": v})
+ for mode in ["foo", Decimal("3.1415"), "sat/B", "BTC/kB"]:
+ assert_raises_rpc_error(-8, 'Invalid estimate_mode parameter, must be one of: "unset", "economical", "conservative"',
+ rbf_node.bumpfee, rbfid, {"estimate_mode": mode})
+
self.clear_mempool()
@@ -161,13 +153,6 @@ def test_simple_bumpfee_succeeds(self, mode, rbf_node, peer_node, dest_address):
if mode == "fee_rate":
bumped_psbt = rbf_node.psbtbumpfee(rbfid, {"fee_rate": NORMAL})
bumped_tx = rbf_node.bumpfee(rbfid, {"fee_rate": NORMAL})
- elif mode == BTC_MODE:
- bumped_psbt = rbf_node.psbtbumpfee(rbfid, {"conf_target": NORMAL, "estimate_mode": BTC_MODE})
- bumped_tx = rbf_node.bumpfee(rbfid, {"conf_target": NORMAL, "estimate_mode": BTC_MODE})
- elif mode == SAT_MODE:
- sat_fee = NORMAL * COIN / 1000 # convert NORMAL from BTC/kB to sat/B
- bumped_psbt = rbf_node.psbtbumpfee(rbfid, {"conf_target": sat_fee, "estimate_mode": SAT_MODE})
- bumped_tx = rbf_node.bumpfee(rbfid, {"conf_target": sat_fee, "estimate_mode": SAT_MODE})
else:
bumped_psbt = rbf_node.psbtbumpfee(rbfid)
bumped_tx = rbf_node.bumpfee(rbfid)
@@ -319,11 +304,11 @@ def test_dust_to_fee(self, rbf_node, dest_address):
# boundary. Thus expected transaction size (p2wpkh, 1 input, 2 outputs) is 140-141 vbytes, usually 141.
if not 140 <= fulltx["vsize"] <= 141:
raise AssertionError("Invalid tx vsize of {} (140-141 expected), full tx: {}".format(fulltx["vsize"], fulltx))
- # Bump with fee_rate of 0.00350250 BTC per 1000 vbytes to create dust.
+ # Bump with fee_rate of 350.25 sat/vB vbytes to create dust.
# Expected fee is 141 vbytes * fee_rate 0.00350250 BTC / 1000 vbytes = 0.00049385 BTC.
# or occasionally 140 vbytes * fee_rate 0.00350250 BTC / 1000 vbytes = 0.00049035 BTC.
# Dust should be dropped to the fee, so actual bump fee is 0.00050000 BTC.
- bumped_tx = rbf_node.bumpfee(rbfid, {"fee_rate": 0.00350250})
+ bumped_tx = rbf_node.bumpfee(rbfid, {"fee_rate": 350.25})
full_bumped_tx = rbf_node.getrawtransaction(bumped_tx["txid"], 1)
assert_equal(bumped_tx["fee"], Decimal("0.00050000"))
assert_equal(len(fulltx["vout"]), 2)
diff --git a/test/functional/wallet_multiwallet.py b/test/functional/wallet_multiwallet.py
index df16ec741f..0d715b3130 100755
--- a/test/functional/wallet_multiwallet.py
+++ b/test/functional/wallet_multiwallet.py
@@ -355,7 +355,8 @@ class MultiWalletTest(BitcoinTestFramework):
assert_raises_rpc_error(-1, "JSON value is not a string as expected", self.nodes[0].unloadwallet)
assert_raises_rpc_error(-18, "Requested wallet does not exist or is not loaded", self.nodes[0].unloadwallet, "dummy")
assert_raises_rpc_error(-18, "Requested wallet does not exist or is not loaded", node.get_wallet_rpc("dummy").unloadwallet)
- assert_raises_rpc_error(-8, "Cannot unload the requested wallet", w1.unloadwallet, "w2"),
+ assert_raises_rpc_error(-8, "Both the RPC endpoint wallet and wallet_name parameter were provided (only one allowed)", w1.unloadwallet, "w2"),
+ assert_raises_rpc_error(-8, "Both the RPC endpoint wallet and wallet_name parameter were provided (only one allowed)", w1.unloadwallet, "w1"),
# Successfully unload the specified wallet name
self.nodes[0].unloadwallet("w1")
diff --git a/test/functional/wallet_send.py b/test/functional/wallet_send.py
index 921a726d4b..376cfdec6c 100755
--- a/test/functional/wallet_send.py
+++ b/test/functional/wallet_send.py
@@ -5,13 +5,15 @@
"""Test the send RPC command."""
from decimal import Decimal, getcontext
+from itertools import product
+
from test_framework.authproxy import JSONRPCException
from test_framework.test_framework import BitcoinTestFramework
from test_framework.util import (
assert_equal,
assert_fee_amount,
assert_greater_than,
- assert_raises_rpc_error
+ assert_raises_rpc_error,
)
class WalletSendTest(BitcoinTestFramework):
@@ -28,8 +30,8 @@ class WalletSendTest(BitcoinTestFramework):
self.skip_if_no_wallet()
def test_send(self, from_wallet, to_wallet=None, amount=None, data=None,
- arg_conf_target=None, arg_estimate_mode=None,
- conf_target=None, estimate_mode=None, add_to_wallet=None, psbt=None,
+ arg_conf_target=None, arg_estimate_mode=None, arg_fee_rate=None,
+ conf_target=None, estimate_mode=None, fee_rate=None, add_to_wallet=None, psbt=None,
inputs=None, add_inputs=None, change_address=None, change_position=None, change_type=None,
include_watching=None, locktime=None, lock_unspents=None, replaceable=None, subtract_fee_from_outputs=None,
expect_error=None):
@@ -62,6 +64,8 @@ class WalletSendTest(BitcoinTestFramework):
options["conf_target"] = conf_target
if estimate_mode is not None:
options["estimate_mode"] = estimate_mode
+ if fee_rate is not None:
+ options["fee_rate"] = fee_rate
if inputs is not None:
options["inputs"] = inputs
if add_inputs is not None:
@@ -89,18 +93,19 @@ class WalletSendTest(BitcoinTestFramework):
options = None
if expect_error is None:
- res = from_wallet.send(outputs=outputs, conf_target=arg_conf_target, estimate_mode=arg_estimate_mode, options=options)
+ res = from_wallet.send(outputs=outputs, conf_target=arg_conf_target, estimate_mode=arg_estimate_mode, fee_rate=arg_fee_rate, options=options)
else:
try:
assert_raises_rpc_error(expect_error[0], expect_error[1], from_wallet.send,
- outputs=outputs, conf_target=arg_conf_target, estimate_mode=arg_estimate_mode, options=options)
+ outputs=outputs, conf_target=arg_conf_target, estimate_mode=arg_estimate_mode, fee_rate=arg_fee_rate, options=options)
except AssertionError:
# Provide debug info if the test fails
self.log.error("Unexpected successful result:")
self.log.error(arg_conf_target)
self.log.error(arg_estimate_mode)
+ self.log.error(arg_fee_rate)
self.log.error(options)
- res = from_wallet.send(outputs=outputs, conf_target=arg_conf_target, estimate_mode=arg_estimate_mode, options=options)
+ res = from_wallet.send(outputs=outputs, conf_target=arg_conf_target, estimate_mode=arg_estimate_mode, fee_rate=arg_fee_rate, options=options)
self.log.error(res)
if "txid" in res and add_to_wallet:
self.log.error("Transaction details:")
@@ -226,10 +231,10 @@ class WalletSendTest(BitcoinTestFramework):
assert_equal(self.nodes[1].decodepsbt(res1["psbt"])["fee"],
self.nodes[1].decodepsbt(res2["psbt"])["fee"])
# but not at the same time
- for mode in ["unset", "economical", "conservative", "btc/kb", "sat/b"]:
+ for mode in ["unset", "economical", "conservative"]:
self.test_send(from_wallet=w0, to_wallet=w1, amount=1, arg_conf_target=1, arg_estimate_mode="economical",
conf_target=1, estimate_mode=mode, add_to_wallet=False,
- expect_error=(-8, "Use either conf_target and estimate_mode or the options dictionary to control fee rate"))
+ expect_error=(-8, "Pass conf_target and estimate_mode either as arguments or in the options object, but not both"))
self.log.info("Create PSBT from watch-only wallet w3, sign with w2...")
res = self.test_send(from_wallet=w3, to_wallet=w1, amount=1)
@@ -251,60 +256,56 @@ class WalletSendTest(BitcoinTestFramework):
assert res["complete"]
self.log.info("Test setting explicit fee rate")
- res1 = self.test_send(from_wallet=w0, to_wallet=w1, amount=1, arg_conf_target=1, arg_estimate_mode="economical", add_to_wallet=False)
- res2 = self.test_send(from_wallet=w0, to_wallet=w1, amount=1, conf_target=1, estimate_mode="economical", add_to_wallet=False)
+ res1 = self.test_send(from_wallet=w0, to_wallet=w1, amount=1, arg_fee_rate=1, add_to_wallet=False)
+ res2 = self.test_send(from_wallet=w0, to_wallet=w1, amount=1, fee_rate=1, add_to_wallet=False)
assert_equal(self.nodes[1].decodepsbt(res1["psbt"])["fee"], self.nodes[1].decodepsbt(res2["psbt"])["fee"])
- res = self.test_send(from_wallet=w0, to_wallet=w1, amount=1, conf_target=0.00007, estimate_mode="btc/kb", add_to_wallet=False)
+ res = self.test_send(from_wallet=w0, to_wallet=w1, amount=1, fee_rate=7, add_to_wallet=False)
fee = self.nodes[1].decodepsbt(res["psbt"])["fee"]
assert_fee_amount(fee, Decimal(len(res["hex"]) / 2), Decimal("0.00007"))
- res = self.test_send(from_wallet=w0, to_wallet=w1, amount=1, conf_target=2, estimate_mode="sat/b", add_to_wallet=False)
+ # "unset" and None are treated the same for estimate_mode
+ res = self.test_send(from_wallet=w0, to_wallet=w1, amount=1, fee_rate=2, estimate_mode="unset", add_to_wallet=False)
fee = self.nodes[1].decodepsbt(res["psbt"])["fee"]
assert_fee_amount(fee, Decimal(len(res["hex"]) / 2), Decimal("0.00002"))
- res = self.test_send(from_wallet=w0, to_wallet=w1, amount=1, arg_conf_target=0.00004531, arg_estimate_mode="btc/kb", add_to_wallet=False)
+ res = self.test_send(from_wallet=w0, to_wallet=w1, amount=1, arg_fee_rate=4.531, add_to_wallet=False)
fee = self.nodes[1].decodepsbt(res["psbt"])["fee"]
assert_fee_amount(fee, Decimal(len(res["hex"]) / 2), Decimal("0.00004531"))
- res = self.test_send(from_wallet=w0, to_wallet=w1, amount=1, arg_conf_target=3, arg_estimate_mode="sat/b", add_to_wallet=False)
+ res = self.test_send(from_wallet=w0, to_wallet=w1, amount=1, arg_fee_rate=3, add_to_wallet=False)
fee = self.nodes[1].decodepsbt(res["psbt"])["fee"]
assert_fee_amount(fee, Decimal(len(res["hex"]) / 2), Decimal("0.00003"))
- # TODO: This test should pass with all modes, e.g. with the next line uncommented, for consistency with the other explicit feerate RPCs.
- # for mode in ["unset", "economical", "conservative", "btc/kb", "sat/b"]:
- for mode in ["btc/kb", "sat/b"]:
- self.test_send(from_wallet=w0, to_wallet=w1, amount=1, conf_target=-1, estimate_mode=mode,
- expect_error=(-3, "Amount out of range"))
- self.test_send(from_wallet=w0, to_wallet=w1, amount=1, conf_target=0, estimate_mode=mode,
- expect_error=(-4, "Fee rate (0.00000000 BTC/kB) is lower than the minimum fee rate setting (0.00001000 BTC/kB)"))
-
- for mode in ["foo", Decimal("3.141592")]:
- self.test_send(from_wallet=w0, to_wallet=w1, amount=1, conf_target=0.1, estimate_mode=mode,
- expect_error=(-8, "Invalid estimate_mode parameter"))
- # TODO: these 2 equivalent sends with an invalid estimate_mode arg should both fail, but they do not...why?
- # self.test_send(from_wallet=w0, to_wallet=w1, amount=1, arg_conf_target=0.1, arg_estimate_mode=mode,
- # expect_error=(-8, "Invalid estimate_mode parameter"))
- # assert_raises_rpc_error(-8, "Invalid estimate_mode parameter", lambda: w0.send({w1.getnewaddress(): 1}, 0.1, mode))
-
- # TODO: These tests should pass for consistency with the other explicit feerate RPCs, but they do not.
- # for mode in ["unset", "economical", "conservative", "btc/kb", "sat/b"]:
- # self.log.debug("{}".format(mode))
- # for k, v in {"string": "", "object": {"foo": "bar"}}.items():
- # self.test_send(from_wallet=w0, to_wallet=w1, amount=1, conf_target=v, estimate_mode=mode,
- # expect_error=(-3, "Expected type number for conf_target, got {}".format(k)))
-
- # TODO: error should use sat/B instead of BTC/kB if sat/B is selected.
+ # Test that passing fee_rate as both an argument and an option raises.
+ self.test_send(from_wallet=w0, to_wallet=w1, amount=1, arg_fee_rate=1, fee_rate=1, add_to_wallet=False,
+ expect_error=(-8, "Pass the fee_rate either as an argument, or in the options object, but not both"))
+
+ assert_raises_rpc_error(-8, "Use fee_rate (sat/vB) instead of feeRate", w0.send, {w1.getnewaddress(): 1}, 6, "conservative", 1, {"feeRate": 0.01})
+
+ assert_raises_rpc_error(-3, "Unexpected key totalFee", w0.send, {w1.getnewaddress(): 1}, 6, "conservative", 1, {"totalFee": 0.01})
+
+ for target, mode in product([-1, 0, 1009], ["economical", "conservative"]):
+ self.test_send(from_wallet=w0, to_wallet=w1, amount=1, conf_target=target, estimate_mode=mode,
+ expect_error=(-8, "Invalid conf_target, must be between 1 and 1008")) # max value of 1008 per src/policy/fees.h
+ msg = 'Invalid estimate_mode parameter, must be one of: "unset", "economical", "conservative"'
+ for target, mode in product([-1, 0], ["btc/kb", "sat/b"]):
+ self.test_send(from_wallet=w0, to_wallet=w1, amount=1, conf_target=target, estimate_mode=mode, expect_error=(-8, msg))
+ for mode in ["", "foo", Decimal("3.141592")]:
+ self.test_send(from_wallet=w0, to_wallet=w1, amount=1, conf_target=0.1, estimate_mode=mode, expect_error=(-8, msg))
+ self.test_send(from_wallet=w0, to_wallet=w1, amount=1, arg_conf_target=0.1, arg_estimate_mode=mode, expect_error=(-8, msg))
+ assert_raises_rpc_error(-8, msg, w0.send, {w1.getnewaddress(): 1}, 0.1, mode)
+
+ for mode in ["economical", "conservative", "btc/kb", "sat/b"]:
+ self.log.debug("{}".format(mode))
+ for k, v in {"string": "true", "object": {"foo": "bar"}}.items():
+ self.test_send(from_wallet=w0, to_wallet=w1, amount=1, conf_target=v, estimate_mode=mode,
+ expect_error=(-3, "Expected type number for conf_target, got {}".format(k)))
+
# Test setting explicit fee rate just below the minimum.
- for unit, fee_rate in {"sat/B": 0.99999999, "BTC/kB": 0.00000999}.items():
- self.log.info("Explicit fee rate raises RPC error 'fee rate too low' if conf_target {} and estimate_mode {} are passed".format(fee_rate, unit))
- self.test_send(from_wallet=w0, to_wallet=w1, amount=1, conf_target=fee_rate, estimate_mode=unit,
- expect_error=(-4, "Fee rate (0.00000999 BTC/kB) is lower than the minimum fee rate setting (0.00001000 BTC/kB)"))
-
- self.log.info("Explicit fee rate raises RPC error if estimate_mode is passed without a conf_target")
- for unit, fee_rate in {"sat/B": 100, "BTC/kB": 0.001}.items():
- self.test_send(from_wallet=w0, to_wallet=w1, amount=1, estimate_mode=unit,
- expect_error=(-8, "Selected estimate_mode {} requires a fee rate to be specified in conf_target".format(unit)))
+ self.log.info("Explicit fee rate raises RPC error 'fee rate too low' if fee_rate of 0.99999999 is passed")
+ self.test_send(from_wallet=w0, to_wallet=w1, amount=1, fee_rate=0.99999999,
+ expect_error=(-4, "Fee rate (0.999 sat/vB) is lower than the minimum fee rate setting (1.000 sat/vB)"))
# TODO: Return hex if fee rate is below -maxmempool
# res = self.test_send(from_wallet=w0, to_wallet=w1, amount=1, conf_target=0.1, estimate_mode="sat/b", add_to_wallet=False)