Compare commits

...

22 Commits

Author SHA1 Message Date
Wladimir J. van der Laan
a5e3d44cc8 doc: Update release notes from wiki (for rc3 PRs)
Tree-SHA512: 34fa3ae23c0857fe7a0972b7c5dee802dc66b1eb85d6f70dc50257c4b61a10bab3d481cae6288d5a5da3230505d12e861373988a16a888a3198fbddd36a919bb
2018-02-08 10:50:08 +01:00
Wladimir J. van der Laan
4f63a43f6b qt: Pre-rc3 translations update
Tree-SHA512: e91c44f19b4a6b18736e664e9f446f3e6b457a1b239999ed0171965cfb2af2702b0083340a789d26c293ebf71e52d4a87af0e44d4e6a83a920bbf98c1c3dffa9
2018-02-08 10:31:04 +01:00
fivepiece
758a41e100 Bech32 addresses in dumpwallet
Output bech32 addresses in dumpwallet if address type is not as legacy

Github-Pull: #12315
Rebased-From: 45eea40aa8
Tree-SHA512: 3426292ddaeaafebc25fe84802011f5569a0cbb47fcc3209e7f00f64fc6eb1e637732722bbd02dce8d46be87d0f3687ce8370e71e9286bf7d00afc0a895faecb
2018-02-08 10:07:45 +01:00
Matt Corallo
3f5012beb6 Add braces to meet code style on line-after-the-one-changed.
Github-Pull: #12368
Rebased-From: 02fc886363
Tree-SHA512: 8e159541f5270801fd3c70540ad3c55e93f0ba37039e651d21f65ba9b271bbbb2f1389b13a0f40fea337e88bb1711f498bb3ee1230ec2c40b6530846ff241a8b
2018-02-08 10:07:43 +01:00
Matt Corallo
b8947554dd Hold mempool.cs for the duration of ATMP.
This resolves an issue where getrawmempool() can race mempool
notification signals. Intuitively we use mempool.cs as a "read
lock" on the mempool with cs_main being the write lock, so holding
the read lock intermittently while doing write operations is
somewhat strange.
This also avoids the introduction of cs_main in getrawmempool()
which reviewers objected to in the previous fix in #12273

Github-Pull: #12368
Rebased-From: 85aa8398f5
Tree-SHA512: 90a505a96cecc065e8575d816f3bb35040df8672efc315f45eb3f2ea086e8ea6ee2c99eed03d0fe2215c8d3ee947a7b120e3c57a25185d03550c9075573ab032
2018-02-08 10:07:41 +01:00
Wladimir J. van der Laan
4cd7edba47 http: Remove numThreads and ThreadCounter
The HTTP worker thread counter, as well as the RAII object that was used
to maintain it, is unused now, so can be removed.

Signed-off-by: Wladimir J. van der Laan <laanwj@gmail.com>
Github-Pull: #12366
Rebased-From: 11e01515fe
Tree-SHA512: 87055c4c14986973f4c1604db264fb5a9de21bb481e9d39b201774e2d17ed92a7d1617449471c13f56e0f1f09a8aebdf1254a71d6c7b856c880a5b71e0c3ba9d
2018-02-08 10:07:39 +01:00
Wladimir J. van der Laan
93de37a12b http: Remove WaitExit from WorkQueue
This function, which waits for all threads to exit, is no longer needed
now that threads are joined instead.

Signed-off-by: Wladimir J. van der Laan <laanwj@gmail.com>
Github-Pull: #12366
Rebased-From: f94665466e
Tree-SHA512: 5cda90b4c081424d637031c0bbf168f177667733ff20b6f77eac84e503f7fad6fab3eb897f191edd819f18b270e3ecea78974978abd102d323f42d9d06216e53
2018-02-08 10:07:37 +01:00
Wladimir J. van der Laan
dd346cb262 http: Join worker threads before deleting work queue
This prevents a potential race condition if control flow ends up in
`ShutdownHTTPServer` before the thread gets to `queue->Run()`,
deleting the work queue while workers are still going to use it.

Meant to fix #12362.

Signed-off-by: Wladimir J. van der Laan <laanwj@gmail.com>
Github-Pull: #12366
Rebased-From: b1c2370dde
Tree-SHA512: 7fbe8e562ba0e1138f95deb42e84cda734bef0d7058349728b3e1602b9f65777c5b1be0f6bd5a7e513ac38487dc82e62fd0a6ee4ed985cbf36c90a7eec18eced
2018-02-08 10:07:35 +01:00
Wladimir J. van der Laan
dafd0078a2 qt: Clarify some comments
Signed-off-by: Wladimir J. van der Laan <laanwj@gmail.com>
Github-Pull: #12374
Rebased-From: 1e5d14b3f7
Tree-SHA512: 367be993e298cb822618c2c64f83163c65d93ca588f183584d032fa1391ddac292e7a2882118037913d192ba77e1b2d5ab518ad029e0b05230be45da2d0c047c
2018-02-08 10:07:34 +01:00
Wladimir J. van der Laan
daaae36e15 qt: Make sure splash screen is freed on AppInitMain fail
The `splashFinished` event was never sent if AppInitMain fails,
causing the splash screen to stick around, causing problems
later.

This bug has existed for a while but is now trigging potential crashed
because the splash screen subscribes to wallet events.

Meant to fix #12372.

Signed-off-by: Wladimir J. van der Laan <laanwj@gmail.com>
Github-Pull: #12374
Rebased-From: f5a4c3ddf4
Tree-SHA512: 1c59633f0caec6344dce7f7d69d2e98242601fa906b1845c372a59c8ba015c3ac76389dd5d4e60b2fdb52d2878d566a0325679470075a680418cade7204069ef
2018-02-08 10:07:32 +01:00
MarcoFalke
604f289f71 qt: Poll ShutdownTimer after init is done
Github-Pull: #12377
Rebased-From: 2222bf02c9
Tree-SHA512: 575c10d9f043e2843616b989daaecfb357482445bc44b9f3af2fe0d891bb36b5ccb572f326703ea85291d56b9f6e8f4828496099b05889daea2277ad38aa0d0e
2018-02-08 10:07:30 +01:00
Matt Corallo
0f207c488a Fix fast-shutdown crash if genesis block was not loaded
If the ShutdownRequested() check at the top of ActivateBestChain()
returns false during initial genesis block load we will fail an
assertion in UTXO DB flush as the best block hash IsNull(). To work
around this, we move the check until after one round of
ActivateBestChainStep(), ensuring the genesis block gets connected.

Github-Pull: #12367
Rebased-From: dd2de47c62
Tree-SHA512: c2465be25aee327d16d460c9b58d25a5aeedec309f539898e78419bea76dbbe9cde9cc88ec393af38a82e6013d71cce85f4223c9bf04e7244ed619f20f734aa4
2018-02-08 10:07:28 +01:00
Matt Corallo
09fc859ef0 Fix fast-shutdown hang on ThreadImport+GenesisWait
If the user somehow manages to get into ShutdownRequested before
ThreadImport gets to ActivateBestChain() we may hang waiting on
condvar_GenesisWait forever. A simple wait_for and
ShutdownRequested resolves this case.

Github-Pull: #12367
Rebased-From: 1c9394ad47
Tree-SHA512: fb0751ef32d2005520738bf3b0a0f41ae3f9314d700d2a85eb50f023e87e109ce806cdcdf4a08f49a4d9c1001e27df7f461d3fd52b1f5a57885260ce9375260f
2018-02-08 10:07:24 +01:00
Wladimir J. van der Laan
da84760701 Merge #12380: 0.16: Check in current release notes draft
d56355a 0.16: Check in current release notes draft (MarcoFalke)

Pull request description:

  Gives people a chance to look at for rc3

Tree-SHA512: e00d5e5390da7c20c85a7edc88693e048109b12a0e2a8a022ecf4a7fbbfc29081a1eb1d4e7f212c22b49411a5e0527f7259ab4c178d5b72749b5dcb7731c51e3
2018-02-08 09:25:03 +01:00
MarcoFalke
d56355ad37 0.16: Check in current release notes draft 2018-02-07 14:55:56 -05:00
Wladimir J. van der Laan
f17942a3bc qt: Pre-rc2 translations update
Tree-SHA512: 09551113babe41bcc33e58c4467a17405f411ef4bc4cceeab937d35d115f946d3105d0540960456785843d59571410bf58dd9b5262d085b8a13a4d367b0e1c3b
2018-02-02 10:03:10 +01:00
Cory Fields
5303970c26 net: don't retry failed oneshot connections forever
Github-Pull: #12329
Rebased-From: 660f5f19ae
Tree-SHA512: 7e7401b0ade3a2482dd246cc92c795230b37001a13fd7d050847ea532b619106dfdfc113e95c2891c689d421b3dd775d1833789061cd90dc094f13c4f5f6b278
2018-02-02 09:51:25 +01:00
João Barbosa
0dc6a30ef3 [gui] Defer coin control instancing
Defer the GUI coin control instancing so that argument processing
is taken into account for the default coin control values.

Github-Pull: #12327
Rebased-From: 6558f8acc3
Tree-SHA512: 213b350fdb334e409ce01f7f6d6de30cada752201d9ff96a6f93f96e9f80f8baa6e6b251087c01b04d6317bcb805201d6667de27e174612a39b4982bb4793375
2018-02-02 09:51:21 +01:00
Cory Fields
e54c1ac110 net: initialize socket to avoid closing random fd's
Github-Pull: #12326
Rebased-From: 96dbd381cf
Tree-SHA512: 8b4a09974060e6d0992e7b9ec06c5de3ad2daf970c4484077fda803f37d3ed874dcb6fec226107b2aa0fa64cfe4116604ca4f90599430fcc622bbb805be55e1b
2018-02-01 19:22:19 +01:00
Wladimir J. van der Laan
6c2788c7c8 test: Make ua_comment test pass on 0.16.0
The specific length of the uacomment is one shorter on `0.16.0` than on
`0.15.99` causing the (stupid) test to fail.
Just match the latter part of the message only.

Github-Pull: #12302
Rebased-From: aac6bce112
Tree-SHA512: 9edecbe2529584d6d01296ec153330bb44add8445fef139d7b7a667b86fef8ee3aafea55d95ac109c9fef079133709f69798477e3eba92744ea2f6c8f5acbb7d
2018-01-30 23:05:01 +01:00
Wladimir J. van der Laan
66bc647e8c doc: Update manpages to 0.16.0
Tree-SHA512: 83b02b26dff5c7962b9c800e7f156f7d83573b8e8ed329b99ae2c63ce0eb5f713f9d3623906e3c598fcee45e660bae907b1d861cf22af49f3e947f70da73f956
2018-01-30 14:05:07 +01:00
Wladimir J. van der Laan
5c242b211e build: bump version to 0.16.0
Update version after branching off.

Tree-SHA512: 0ed503c6d299b25eccdc3f450d83c7fe24b851acbf89382397d5d7ad591c2106b78f8c826cefb034f62e6e233f773cd6fd7fcc05c4b09bbda5091a6ce5c37ee8
2018-01-30 13:46:30 +01:00
36 changed files with 1571 additions and 269 deletions

View File

@@ -1,10 +1,10 @@
dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N)
AC_PREREQ([2.60])
define(_CLIENT_VERSION_MAJOR, 0)
define(_CLIENT_VERSION_MINOR, 15)
define(_CLIENT_VERSION_REVISION, 99)
define(_CLIENT_VERSION_MINOR, 16)
define(_CLIENT_VERSION_REVISION, 0)
define(_CLIENT_VERSION_BUILD, 0)
define(_CLIENT_VERSION_IS_RELEASE, false)
define(_CLIENT_VERSION_IS_RELEASE, true)
define(_COPYRIGHT_YEAR, 2018)
define(_COPYRIGHT_HOLDERS,[The %s developers])
define(_COPYRIGHT_HOLDERS_SUBSTITUTION,[[Bitcoin Core]])

View File

@@ -1,9 +1,9 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.4.
.TH BITCOIN-CLI "1" "September 2017" "bitcoin-cli v0.15.99.0" "User Commands"
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3.
.TH BITCOIN-CLI "1" "January 2018" "bitcoin-cli v0.16.0.0" "User Commands"
.SH NAME
bitcoin-cli \- manual page for bitcoin-cli v0.15.99.0
bitcoin-cli \- manual page for bitcoin-cli v0.16.0.0
.SH DESCRIPTION
Bitcoin Core RPC client version v0.15.99.0
Bitcoin Core RPC client version v0.16.0.0
.SS "Usage:"
.TP
bitcoin\-cli [options] <command> [params]
@@ -25,6 +25,14 @@ Specify configuration file (default: bitcoin.conf)
\fB\-datadir=\fR<dir>
.IP
Specify data directory
.HP
\fB\-getinfo\fR
.IP
Get general information from the remote server. Note that unlike
server\-side RPC calls, the results of \fB\-getinfo\fR is the result of
multiple non\-atomic requests. Some entries in the result may
represent results from different states (e.g. wallet balance may
be as of a different block from the chain state reported)
.PP
Chain selection options:
.HP
@@ -88,7 +96,7 @@ Send RPC for non\-default wallet on RPC server (argument is wallet
filename in bitcoind directory, required if bitcoind/\-Qt runs
with multiple wallets)
.SH COPYRIGHT
Copyright (C) 2009-2017 The Bitcoin Core developers
Copyright (C) 2009-2018 The Bitcoin Core developers
Please contribute if you find Bitcoin Core useful. Visit
<https://bitcoincore.org> for further information about the software.

View File

@@ -1,9 +1,9 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.4.
.TH BITCOIN-QT "1" "September 2017" "bitcoin-qt v0.15.99.0" "User Commands"
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3.
.TH BITCOIN-QT "1" "January 2018" "bitcoin-qt v0.16.0.0" "User Commands"
.SH NAME
bitcoin-qt \- manual page for bitcoin-qt v0.15.99.0
bitcoin-qt \- manual page for bitcoin-qt v0.16.0.0
.SH DESCRIPTION
Bitcoin Core version v0.15.99.0 (64\-bit)
Bitcoin Core version v0.16.0.0 (64\-bit)
Usage:
.IP
bitcoin\-qt [command\-line options]
@@ -32,7 +32,7 @@ block hash)
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:
0000000000000000003b9ce759c2a087d52abc4266f8f4ebd6d768b89defa50a,
0000000000000000005214481d2d96f898e3d5416e43359c145944a909d242e0,
testnet:
0000000002e9e7b00e1f6dc5123a04aad68dd0f0968d8c7aa45f6640795c37b1)
.HP
@@ -52,6 +52,11 @@ Set database cache size in megabytes (4 to 16384, default: 450)
.IP
Imports blocks from external blk000??.dat file on startup
.HP
\fB\-debuglogfile=\fR<file>
.IP
Specify location of debug log file: this can be an absolute path or a
path relative to the data directory (default: debug.log)
.HP
\fB\-maxorphantx=\fR<n>
.IP
Keep at most <n> unconnectable transactions in memory (default: 100)
@@ -76,7 +81,7 @@ Extra transactions to keep in memory for compact block reconstructions
.HP
\fB\-par=\fR<n>
.IP
Set the number of script verification threads (\fB\-2\fR to 16, 0 = auto, <0 =
Set the number of script verification threads (\fB\-6\fR to 16, 0 = auto, <0 =
leave that many cores free, default: 0)
.HP
\fB\-pid=\fR<file>
@@ -117,7 +122,8 @@ Connection options:
.HP
\fB\-addnode=\fR<ip>
.IP
Add a node to connect to and attempt to keep the connection open
Add a node to connect to and attempt to keep the connection open (see
the `addnode` RPC command help for more info)
.HP
\fB\-banscore=\fR<n>
.IP
@@ -136,7 +142,8 @@ for IPv6
\fB\-connect=\fR<ip>
.IP
Connect only to the specified node(s); \fB\-connect\fR=\fI\,0\/\fR disables automatic
connections
connections (the rules for this peer are the same as for
\fB\-addnode\fR)
.HP
\fB\-discover\fR
.IP
@@ -258,6 +265,18 @@ Tries to keep outbound traffic under the given target (in MiB per 24h),
.PP
Wallet options:
.HP
\fB\-addresstype\fR
.IP
What type of addresses to use ("legacy", "p2sh\-segwit", or "bech32",
default: "p2sh\-segwit")
.HP
\fB\-changetype\fR
.IP
What type of change to use ("legacy", "p2sh\-segwit", or "bech32").
Default is same as \fB\-addresstype\fR, except when
\fB\-addresstype\fR=\fI\,p2sh\-segwit\/\fR a native segwit output is used when
sending to a native segwit address)
.HP
\fB\-disablewallet\fR
.IP
Do not load the wallet and disable wallet RPC calls
@@ -307,7 +326,7 @@ confirmation on average within n blocks (default: 6)
.HP
\fB\-walletrbf\fR
.IP
Send transactions with full\-RBF opt\-in enabled (default: 0)
Send transactions with full\-RBF opt\-in enabled (RPC only, default: 0)
.HP
\fB\-upgradewallet\fR
.IP
@@ -321,6 +340,11 @@ Specify wallet file (within data directory) (default: wallet.dat)
.IP
Make the wallet broadcast transactions (default: 1)
.HP
\fB\-walletdir=\fR<dir>
.IP
Specify directory to hold wallets (default: <datadir>/wallets if it
exists, otherwise <datadir>)
.HP
\fB\-walletnotify=\fR<cmd>
.IP
Execute command when a wallet transaction changes (%s in cmd is replaced
@@ -542,7 +566,7 @@ Show splash screen on startup (default: 1)
.IP
Reset all settings changed in the GUI
.SH COPYRIGHT
Copyright (C) 2009-2017 The Bitcoin Core developers
Copyright (C) 2009-2018 The Bitcoin Core developers
Please contribute if you find Bitcoin Core useful. Visit
<https://bitcoincore.org> for further information about the software.

View File

@@ -1,9 +1,9 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.4.
.TH BITCOIN-TX "1" "September 2017" "bitcoin-tx v0.15.99.0" "User Commands"
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3.
.TH BITCOIN-TX "1" "January 2018" "bitcoin-tx v0.16.0.0" "User Commands"
.SH NAME
bitcoin-tx \- manual page for bitcoin-tx v0.15.99.0
bitcoin-tx \- manual page for bitcoin-tx v0.16.0.0
.SH DESCRIPTION
Bitcoin Core bitcoin\-tx utility version v0.15.99.0
Bitcoin Core bitcoin\-tx utility version v0.16.0.0
.SS "Usage:"
.TP
bitcoin\-tx [options] <hex\-tx> [commands]
@@ -112,7 +112,7 @@ set=NAME:JSON\-STRING
.IP
Set register NAME to given JSON\-STRING
.SH COPYRIGHT
Copyright (C) 2009-2017 The Bitcoin Core developers
Copyright (C) 2009-2018 The Bitcoin Core developers
Please contribute if you find Bitcoin Core useful. Visit
<https://bitcoincore.org> for further information about the software.

View File

@@ -1,9 +1,9 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.4.
.TH BITCOIND "1" "September 2017" "bitcoind v0.15.99.0" "User Commands"
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3.
.TH BITCOIND "1" "January 2018" "bitcoind v0.16.0.0" "User Commands"
.SH NAME
bitcoind \- manual page for bitcoind v0.15.99.0
bitcoind \- manual page for bitcoind v0.16.0.0
.SH DESCRIPTION
Bitcoin Core Daemon version v0.15.99.0
Bitcoin Core Daemon version v0.16.0.0
.SS "Usage:"
.TP
bitcoind [options]
@@ -33,7 +33,7 @@ block hash)
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:
0000000000000000003b9ce759c2a087d52abc4266f8f4ebd6d768b89defa50a,
0000000000000000005214481d2d96f898e3d5416e43359c145944a909d242e0,
testnet:
0000000002e9e7b00e1f6dc5123a04aad68dd0f0968d8c7aa45f6640795c37b1)
.HP
@@ -57,6 +57,11 @@ Set database cache size in megabytes (4 to 16384, default: 450)
.IP
Imports blocks from external blk000??.dat file on startup
.HP
\fB\-debuglogfile=\fR<file>
.IP
Specify location of debug log file: this can be an absolute path or a
path relative to the data directory (default: debug.log)
.HP
\fB\-maxorphantx=\fR<n>
.IP
Keep at most <n> unconnectable transactions in memory (default: 100)
@@ -81,7 +86,7 @@ Extra transactions to keep in memory for compact block reconstructions
.HP
\fB\-par=\fR<n>
.IP
Set the number of script verification threads (\fB\-2\fR to 16, 0 = auto, <0 =
Set the number of script verification threads (\fB\-6\fR to 16, 0 = auto, <0 =
leave that many cores free, default: 0)
.HP
\fB\-pid=\fR<file>
@@ -122,7 +127,8 @@ Connection options:
.HP
\fB\-addnode=\fR<ip>
.IP
Add a node to connect to and attempt to keep the connection open
Add a node to connect to and attempt to keep the connection open (see
the `addnode` RPC command help for more info)
.HP
\fB\-banscore=\fR<n>
.IP
@@ -141,7 +147,8 @@ for IPv6
\fB\-connect=\fR<ip>
.IP
Connect only to the specified node(s); \fB\-connect\fR=\fI\,0\/\fR disables automatic
connections
connections (the rules for this peer are the same as for
\fB\-addnode\fR)
.HP
\fB\-discover\fR
.IP
@@ -263,6 +270,18 @@ Tries to keep outbound traffic under the given target (in MiB per 24h),
.PP
Wallet options:
.HP
\fB\-addresstype\fR
.IP
What type of addresses to use ("legacy", "p2sh\-segwit", or "bech32",
default: "p2sh\-segwit")
.HP
\fB\-changetype\fR
.IP
What type of change to use ("legacy", "p2sh\-segwit", or "bech32").
Default is same as \fB\-addresstype\fR, except when
\fB\-addresstype\fR=\fI\,p2sh\-segwit\/\fR a native segwit output is used when
sending to a native segwit address)
.HP
\fB\-disablewallet\fR
.IP
Do not load the wallet and disable wallet RPC calls
@@ -312,7 +331,7 @@ confirmation on average within n blocks (default: 6)
.HP
\fB\-walletrbf\fR
.IP
Send transactions with full\-RBF opt\-in enabled (default: 0)
Send transactions with full\-RBF opt\-in enabled (RPC only, default: 0)
.HP
\fB\-upgradewallet\fR
.IP
@@ -326,6 +345,11 @@ Specify wallet file (within data directory) (default: wallet.dat)
.IP
Make the wallet broadcast transactions (default: 1)
.HP
\fB\-walletdir=\fR<dir>
.IP
Specify directory to hold wallets (default: <datadir>/wallets if it
exists, otherwise <datadir>)
.HP
\fB\-walletnotify=\fR<cmd>
.IP
Execute command when a wallet transaction changes (%s in cmd is replaced
@@ -521,7 +545,7 @@ non\-verbose mode, non\-segwit(0) or segwit(1) (default: 1)
.IP
Set the number of threads to service RPC calls (default: 4)
.SH COPYRIGHT
Copyright (C) 2009-2017 The Bitcoin Core developers
Copyright (C) 2009-2018 The Bitcoin Core developers
Please contribute if you find Bitcoin Core useful. Visit
<https://bitcoincore.org> for further information about the software.

View File

@@ -1,9 +1,8 @@
(note: this is a temporary file, to be added-to by anybody, and moved to
release-notes at release time)
## (note: this is a temporary file, to be added-to by anybody, and moved to release-notes at release time)
Bitcoin Core version *version* is now available from:
Bitcoin Core version 0.16.0 is now available from:
<https://bitcoin.org/bin/bitcoin-core-*version*/>
<https://bitcoincore.org/bin/bitcoin-core-0.16.0/>
This is a new major version release, including new features, various bugfixes
and performance improvements, as well as updated translations.
@@ -24,25 +23,21 @@ shut down (which might take a few minutes for older versions), then run the
installer (on Windows) or just copy over `/Applications/Bitcoin-Qt` (on Mac)
or `bitcoind`/`bitcoin-qt` (on Linux).
The first time you run version 0.15.0, your chainstate database will be converted to a
The first time you run a version newer than 0.15.0, your chainstate database will be converted to a
new format, which will take anywhere from a few minutes to half an hour,
depending on the speed of your machine.
Note that the block database format also changed in version 0.8.0 and there is no
automatic upgrade code from before version 0.8 to version 0.15.0. Upgrading
directly from 0.7.x and earlier without redownloading the blockchain is not supported.
automatic upgrade code from before version 0.8 to versions higher than 0.15.0. Upgrading
directly from 0.7.x and earlier without re-downloading the blockchain is not supported.
However, as usual, old wallet versions are still supported.
Downgrading warning
-------------------
The chainstate database for this release is not compatible with previous
releases, so if you run 0.15 and then decide to switch back to any
older version, you will need to run the old release with the `-reindex-chainstate`
option to rebuild the chainstate data structures in the old format.
If your node has pruning enabled, this will entail re-downloading and
processing the entire blockchain.
Wallets created in 0.16 and later are not compatible with versions prior to 0.16
and will not work if you try to use newly created wallets in older versions. Existing
wallets that were created with older versions are not affected by this.
Compatibility
==============
@@ -56,27 +51,47 @@ frequently tested on them.
Notable changes
===============
GCC 4.8.x
--------------
The minimum version of GCC required to compile Bitcoin Core is now 4.8. No effort will be
made to support older versions of GCC. See discussion in issue #11732 for more information.
Wallet changes
---------------
### Segwit Wallet
Bitcoin Core 0.16.0 introduces full support for segwit in the wallet and user interfaces. A new `-addresstype` argument has been added, which supports `legacy`, `p2sh-segwit` (default), and `bech32` addresses. It controls what kind of addresses are produced by `getnewaddress`, `getaccountaddress`, and `createmultisigaddress`. A `-changetype` argument has also been added, with the same options, and by default equal to `-addresstype`, to control which kind of change is used.
A new `address_type` parameter has been added to the `getnewaddress` and `addmultisigaddress` RPCs to specify which type of address to generate.
A `change_type` argument has been added to the `fundrawtransaction` RPC to override the `-changetype` argument for specific transactions.
- All segwit addresses created through `getnewaddress` or `*multisig` RPCs explicitly get their redeemscripts added to the wallet file. This means that downgrading after creating a segwit address will work, as long as the wallet file is up to date.
- All segwit keys in the wallet get an implicit redeemscript added, without it being written to the file. This means recovery of an old backup will work, as long as you use new software.
- All keypool keys that are seen used in transactions explicitly get their redeemscripts added to the wallet files. This means that downgrading after recovering from a backup that includes a segwit address will work
Note that some RPCs do not yet support segwit addresses. Notably, `signmessage`/`verifymessage` doesn't support segwit addresses, nor does `importmulti` at this time. `dumpwallet`/`importwallet` work, but will (in comments) list the corresponding P2PKH addresses for all keys, even those only used in segwit addresses. Support for segwit in those RPCs will continue to be added in future versions.
P2WPKH change outputs are now used by default if any destination in the transaction is a P2WPKH or P2WSH output. This is done to ensure the change output is as indistinguishable from the other outputs as possible in either case.
### BIP173 (Bech32) Address support ("bc1..." addresses)
Full support for native segwit addresses (BIP173 / Bech32) has now been added.
This includes the ability to send to BIP173 addresses (including non-v0 ones), and generating these
addresses (including as default new addresses, see above).
A checkbox has been added to the GUI to select whether a Bech32 address or P2SH-wrapped address should be generated when using segwit addresses. When launched with `-addresstype=bech32` it is checked by default. When launched with `-addresstype=legacy` it is unchecked and disabled.
### HD-wallets by default
HD-wallets by default
---------------------
Due to a backward-incompatible change in the wallet database, wallets created
with version 0.16.0 will be rejected by previous versions. Also, version 0.16.0
will only create hierarchical deterministic (HD) wallets.
Replace-By-Fee by default in GUI
--------------------------------
The send screen now uses BIP-125 RBF by default, regardless of `-walletrbf`.
### Replace-By-Fee by default in GUI
The send screen now uses BIP125 RBF by default, regardless of `-walletrbf`.
There is a checkbox to mark the transaction as final.
The RPC default remains unchanged: to use RBF, launch with `-walletrbf=1` or
use the `replaceable` argument for individual transactions.
Wallets directory configuration (`-walletdir`)
----------------------------------------------
### Wallets directory configuration (`-walletdir`)
Bitcoin Core now has more flexibility in where the wallets directory can be
located. Previously wallet database files were stored at the top level of the
@@ -96,8 +111,62 @@ bitcoin data directory. The behavior is now:
Care should be taken when choosing the wallets directory location, as if it
becomes unavailable during operation, funds may be lost.
Low-level RPC changes
----------------------
Build: Minimum GCC bumped to 4.8.x
------------------------------------
The minimum version of the GCC compiler required to compile Bitcoin Core is now 4.8. No effort will be
made to support older versions of GCC. See discussion in issue #11732 for more information.
The minimum version for the Clang compiler is still 3.3. Other minimum dependency versions can be found in `doc/dependencies.md` in the repository.
Support for signalling pruned nodes (BIP159)
---------------------------------------------
Pruned nodes can now signal BIP159's NODE_NETWORK_LIMITED using service bits, in preparation for
full BIP159 support in later versions. This would allow pruned nodes to serve the most recent blocks. However, the current change does not yet include support for connecting to these pruned peers.
Performance: SHA256 assembly enabled by default
-------------------------------------------------
The SHA256 hashing optimizations for architectures supporting SSE4, which lead to ~50% speedups in SHA256 on supported hardware (~5% faster synchronization and block validation), have now been enabled by default. In previous versions they were enabled using the `--enable-experimental-asm` flag when building, but are now the default and no longer deemed experimental.
GUI changes
-----------
- Uses of "µBTC" in the GUI now also show the more colloquial term "bits", specified in BIP176.
- The option to reuse a previous address has now been removed. This was justified by the need to "resend" an invoice, but now that we have the request history, that need should be gone.
- Support for searching by TXID has been added, rather than just address and label.
- A "Use available balance" option has been added to the send coins dialog, to add the remaining available wallet balance to a transaction output.
- A toggle for unblinding the password fields on the password dialog has been added.
RPC changes
------------
### New `rescanblockchain` RPC
A new RPC `rescanblockchain` has been added to manually invoke a blockchain rescan.
The RPC supports start and end-height arguments for the rescan, and can be used in a
multiwallet environment to rescan the blockchain at runtime.
### New `savemempool` RPC
A new `savemempool` RPC has been added which allows the current mempool to be saved to
disk at any time to avoid it being lost due to crashes / power loss.
### Safe mode disabled by default
Safe mode is now disabled by default and must be manually enabled (with `-disablesafemode=0`) if you wish to use it. Safe mode is a feature that disables a subset of RPC calls - mostly related to the wallet and sending - automatically in case certain problem conditions with the network are detected. However, developers have come to regard these checks as not reliable enough to act on automatically. Even with safe mode disabled, they will still cause warnings in the `warnings` field of the `getneworkinfo` RPC and launch the `-alertnotify` command.
### Renamed script for creating JSON-RPC credentials
The `share/rpcuser/rpcuser.py` script was renamed to `share/rpcauth/rpcauth.py`. This script can be
used to create `rpcauth` credentials for a JSON-RPC user.
### Validateaddress improvements
The `validateaddress` RPC output has been extended with a few new fields, and support for segwit addresses (both P2SH and Bech32). Specifically:
* A new field `iswitness` is True for P2WPKH and P2WSH addresses ("bc1..." addresses), but not for P2SH-wrapped segwit addresses (see below).
* The existing field `isscript` will now also report True for P2WSH addresses.
* A new field `embedded` is present for all script addresses where the script is known and matches something that can be interpreted as a known address. This is particularly true for P2SH-P2WPKH and P2SH-P2WSH addresses. The value for `embedded` includes much of the information `validateaddress` would report if invoked directly on the embedded address.
* For multisig scripts a new `pubkeys` field was added that reports the full public keys involved in the script (if known). This is a replacement for the existing `addresses` field (which reports the same information but encoded as P2PKH addresses), represented in a more useful and less confusing way. The `addresses` field remains present for non-segwit addresses for backward compatibility.
* For all single-key addresses with known key (even when wrapped in P2SH or P2WSH), the `pubkey` field will be present. In particular, this means that invoking `validateaddress` on the output of `getnewaddress` will always report the `pubkey`, even when the address type is P2SH-P2WPKH.
### Low-level changes
- The deprecated RPC `getinfo` was removed. It is recommended that the more specific RPCs are used:
* `getblockchaininfo`
* `getnetworkinfo`
@@ -106,25 +175,544 @@ Low-level RPC changes
- The wallet RPC `getreceivedbyaddress` will return an error if called with an address not in the wallet.
- The wallet RPC `addwitnessaddress` was deprecated and will be removed in version 0.17,
set the `address_type` argument of `getnewaddress`, or option `-addresstype=[bech32|p2sh-segwit]` instead.
Changed command-line options
-----------------------------
- `-debuglogfile=<file>` can be used to specify an alternative debug logging file.
Renamed script for creating JSON-RPC credentials
-----------------------------
The `share/rpcuser/rpcuser.py` script was renamed to `share/rpcauth/rpcauth.py`. This script can be
used to create `rpcauth` credentials for a JSON-RPC user.
- `dumpwallet` now includes hex-encoded scripts from the wallet in the dumpfile, and
`importwallet` now imports these scripts, but corresponding addresses may not be added
correctly or a manual rescan may be required to find relevant transactions.
- The RPC `getblockchaininfo` now includes an `errors` field.
- A new `blockhash` parameter has been added to the `getrawtransaction` RPC which allows for a raw transaction to be fetched from a specific block if known, even without `-txindex` enabled.
- The `decoderawtransaction` and `fundrawtransaction` RPCs now have optional `iswitness` parameters to override the
heuristic witness checks if necessary.
- The `walletpassphrase` timeout is now clamped to 2^30 seconds.
- Using addresses with the `createmultisig` RPC is now deprecated, and will be removed in a later version. Public keys should be used instead.
- Blockchain rescans now no longer lock the wallet for the entire rescan process, so other RPCs can now be used at the same time (although results of balances / transactions may be incorrect or incomplete until the rescan is complete).
- The `logging` RPC has now been made public rather than hidden.
- An `initialblockdownload` boolean has been added to the `getblockchaininfo` RPC to indicate whether the node is currently in IDB or not.
- `minrelaytxfee` is now included in the output of `getmempoolinfo`
Other changed command-line options
----------------------------------
- `-debuglogfile=<file>` can be used to specify an alternative debug logging file.
- bitcoin-cli now has an `-stdinrpcpass` option to allow the RPC password to be read from standard input.
- The `-usehd` option has been removed.
- bitcoin-cli now supports a new `-getinfo` flag which returns an output like that of the now-removed `getinfo` RPC.
Testing changes
----------------
- The default regtest JSON-RPC port has been changed to 18443 to avoid conflict with testnet's default of 18332.
- Segwit is now always active in regtest mode by default.
Known Issues
------------
- Occasionally shutting down the Bitcoin Core GUI during the startup and loading phase will cause an assertion error.
0.16.0 change log
------------------
### Block and transaction handling
- #10953 `aeed345` Combine scriptPubKey and amount as CTxOut in CScriptCheck (jl2012)
- #11309 `93d20a7` Minor cleanups for AcceptToMemoryPool (morcos)
- #11418 `38c201f` Add error string for CLEANSTACK script violation (maaku)
- #11411 `339da9c` Change SignatureHash input index check to an assert (jimpo)
- #11406 `e12522d` Add state message print to AcceptBlock failure message (TheBlueMatt)
- #11062 `26fee4f` Mark mempool import fails that were found in mempool as 'already there' (kallewoof)
- #11269 `61fb806` CTxMemPoolEntry::UpdateAncestorState: modifySiagOps param type (donaloconnor)
- #11747 `e970396` Fix: Open files read only if requested (Elbandi)
- #11737 `46d1ebf` Document partial validation in ConnectBlock() (sdaftuar)
- #10699 `c090262` Make all script validation flags backward compatible (sipa)
- #10279 `214046f` Add a CChainState class to validation.cpp to take another step towards clarifying internal interfaces (TheBlueMatt)
- #11824 `d9fdac1` Block ActivateBestChain to empty validationinterface queue (TheBlueMatt)
- #12127 `9501dc2` Remove unused mempool index (sdaftuar)
- #12118 `44080a9` Sort mempool by min(feerate, ancestor_feerate) (sdaftuar)
- #8498 `0e3a411` Minimize the number of times it is checked that no money... (jtimon)
- #12368 `3f5012b` Hold mempool.cs for the duration of ATMP (TheBlueMatt)
### P2P protocol and network code
- #10596 `6866b49` Add vConnect to CConnman::Options (benma)
- #10663 `9d31ed2` Split resolve out of connect (theuni)
- #11113 `fef65c4` Ignore getheaders requests for very old side blocks (jimpo)
- #11585 `5aeaa9c` addrman: Add missing lock in Clear() (CAddrMan) (practicalswift)
- #11524 `5ef3b69` De-duplicate connection eviction logic (tjps)
- #11580 `1f4375f` Do not send (potentially) invalid headers in response to getheaders (TheBlueMatt)
- #11655 `aca77a4` Assert state.m_chain_sync.m_work_header in ConsiderEviction (practicalswift)
- #11744 `3ff6ff5` Add missing locks in net.{cpp,h} (practicalswift)
- #11740 `59d3dc8` Implement BIP159 NODE_NETWORK_LIMITED (pruned peers) *signaling only* (jonasschnelli)
- #11583 `37ffa16` Do not make it trivial for inbound peers to generate log entries (TheBlueMatt)
- #11363 `ba2f195` Split socket create/connect (theuni)
- #11917 `bc66765` Add testnet DNS seed: seed.testnet.bitcoin.sprovoost.nl (Sjors)
- #11512 `6e89de5` Use GetDesireableServiceFlags in seeds, dnsseeds, fixing static seed adding (TheBlueMatt)
- #12262 `16bac24` Hardcoded seed update (laanwj)
- #12270 `9cf6393` Update chainTxData for 0.16 (laanwj)
### Wallet
- #11039 `fc51565` Avoid second mapWallet lookup (promag)
- #10952 `2621673` Remove vchDefaultKey and have better first run detection (achow101)
- #11007 `fc5c237` Fix potential memory leak when loading a corrupted wallet file (practicalswift)
- #10976 `07c92b9` Move some static functions out of wallet.h/cpp (ryanofsky)
- #11117 `961901f` Prepare for non-Base58 addresses (sipa)
- #10916 `e6ab88a` add missing lock to crypter GetKeys() (benma)
- #10767 `791a0e6` Clarify wallet initialization / destruction interface (jnewbery)
- #11250 `c22a53c` Bump wallet version to 159900 and remove the `usehd` option (achow101)
- #11307 `4f7e37e` Display non-HD error on first run (MarcoFalke)
- #11408 `69c7ece` Fix parameter name typo in ErasePurpose walletdb method (PierreRochard)
- #11167 `aa624b6` Full BIP173 (Bech32) support (sipa)
- #11594 `0ecc630` Improve -disablewallet parameter interaction (promag)
- #10368 `77ba4bf` Remove helper conversion operator from wallet (kallewoof)
- #11074 `99ec126` Assert that CWallet::SyncMetaData finds oldest transaction (BitonicEelis)
- #11272 `e6e3fc3` CKeystore/CCrypter: move relevant implementation out of the header (jonasschnelli)
- #10286 `927a1d7` Call wallet notify callbacks in scheduler thread (without cs_main) (TheBlueMatt)
- #10600 `4ed8180` Make feebumper class stateless (ryanofsky)
- #11466 `d080a7d` Specify custom wallet directory with -walletdir param (MeshCollider)
- #11839 `8ab6c0b` Don't attempt mempool entry for wallet transactions on startup (instagibbs)
- #11854 `2214954` Split up key and script metadata for better type safety (ryanofsky)
- #11870 `ef8ba7d` Remove unnecessary mempool lock in ReacceptWalletTransactions (promag)
- #11864 `2ae58d5` Make CWallet::FundTransaction atomic (promag)
- #11886 `df71819` Clarify getbalance meaning a tiny bit in response to questions (TheBlueMatt)
- #11923 `81c89e9` Remove unused fNoncriticalErrors variable from CWalletDB::FindWalletTx (PierreRochard)
- #11726 `604e08c` Cleanups + nit fixes for walletdir PR (MeshCollider)
- #11403 `d889c03` Segwit wallet support (sipa)
- #11970 `b7450cd` Add test coverage for bitcoin-cli multiwallet calls (ryanofsky)
- #11904 `66e3af7` Add a lock to the wallet directory (MeshCollider)
- #12101 `c7978be` Clamp walletpassphrase timeout to 2^30 seconds and check its bounds (achow101)
- #12210 `17180fa` Deprecate addwitnessaddress (laanwj)
- #12220 `f4c942e` Error if relative -walletdir is specified (ryanofsky)
- #11281 `8470e64` Avoid permanent cs_main/cs_wallet lock during RescanFromTime (jonasschnelli)
- #12119 `9594139` Use P2WPKH change output if any destination is P2WPKH or P2WSH (Sjors)
- #12213 `eadb2da` Add address type option to addmultisigaddress (promag)
- #12276 `7936446` Remove duplicate mapWallet lookups (promag)
### RPC and other APIs
- #11008 `3841aaf` Enable disablesafemode by default (gmaxwell)
- #11050 `7ed57d3` Avoid treating null RPC arguments different from missing arguments (ryanofsky)
- #10997 `affe927` Add option -stdinrpcpass to bitcoin-cli to allow RPC password to be read from standard input (jharvell)
- #11179 `e0e3cbb` Push down safe mode checks (laanwj)
- #11203 `d745b4c` add wtxid to mempool entry output (sdaftuar)
- #11099 `bc561b4` Add savemempool RPC (greenaddress)
- #10838 `66a5b41` (finally) remove getinfo (TheBlueMatt)
- #10753 `7fcd61b` test: Check RPC argument mapping (laanwj)
- #11288 `0f8e095` More user-friendly error message when partially signing (MeshCollider)
- #11031 `ef8340d` deprecate estimatefee (jnewbery)
- #10858 `9a8e916` Add "errors" field to getblockchaininfo and unify "errors" field in get*info RPCs (achow101)
- #11021 `90926db` Fix getchaintxstats() (AkioNak)
- #11367 `3a93270` getblockchaininfo: Add disk_size, prune_target_size (esotericnonsense)
- #11006 `a1d78b5` Improve shutdown process (promag)
- #11529 `ff92fbf` Avoid slow transaction search with txindex enabled (promag)
- #11618 `87d90ef` Lock cs_main in blockToJSON/blockheaderToJSON (practicalswift)
- #11626 `998c304` Make `logging` RPC public (laanwj)
- #11258 `033c786` Add initialblockdownload to getblockchaininfo (jnewbery)
- #11087 `99bc0b4` Diagnose unsuitable outputs in lockunspent() (BitonicEelis)
- #11710 `9388639` cli: Reject arguments to -getinfo (laanwj)
- #11738 `d4267a3` Fix sendrawtransaction hang when sending a tx already in mempool (TheBlueMatt)
- #11753 `32c9b57` clarify abortrescan rpc use (instagibbs)
- #11191 `ef14f2e` Improve help text and behavior of RPC-logging (AkioNak)
- #10874 `9e38d35` getblockchaininfo: Loop through the bip9 soft fork deployments instead of hard coding (achow101)
- #10275 `497d0e0` Allow fetching tx directly from specified block in getrawtransaction (kallewoof)
- #11178 `fee0370` Add iswitness parameter to decode- and fundrawtransaction RPCs (MeshCollider)
- #11667 `711d16c` Add scripts to dumpwallet RPC (MeshCollider)
- #11475 `9bad8d6` mempoolinfo should take ::minRelayTxFee into account (mess110)
- #12001 `a9a49e6` Adding ::minRelayTxFee amount to getmempoolinfo and updating help (jeffrade)
- #12198 `adce1de` Add deprecation error for `getinfo` (laanwj)
- #11415 `69ec021` Disallow using addresses in createmultisig (achow101)
- #12278 `288deac` Add special error for genesis coinbase to getrawtransaction (MeshCollider)
- #11362 `c6223b3` Remove nBlockMaxSize from miner opt struct as it is no longer used (gmaxwell)
- #10825 `28485c7` Set regtest JSON-RPC port to 18443 to avoid conflict with testnet 18332 (fametrano)
- #11303 `e542728` Fix estimatesmartfee rounding display issue (TheBlueMatt)
- #7061 `8c2de82` Add RPC call "rescanblockchain <startheight> <stopheight>" (jonasschnelli)
- #11055 `95e14dc` RPC getreceivedbyaddress should return error if called with address not owned by the wallet (jnewbery)
- #12366 `93de37a` http: Join worker threads before deleting work queue (laanwj)
- #12315 `758a41e` Bech32 addresses in dumpwallet (fivepiece)
### GUI
- #10964 `64e66bb` Pass SendCoinsRecipient (208 bytes) by reference (practicalswift)
- #11169 `5b8af7b` Make tabs toolbar no longer have a context menu (achow101)
- #10911 `9c8f365` Fix typo and access key in optionsdialog.ui (keystrike)
- #10770 `ea729d5` Drop upgrade-cancel callback registration for a generic "cancelable" (TheBlueMatt)
- #11156 `a3624dd` Fix memory leaks in qt/guiutil.cpp (danra)
- #11268 `31e72b2` [macOS] remove Growl support, remove unused code (jonasschnelli)
- #11193 `c5c77bd` Terminate string *pszExePath after readlink and without using memset (practicalswift)
- #11508 `ffa5159` Fix crash via division by zero assertion (jonasschnelli)
- #11499 `6157e8c` Add upload and download info to the peerlist (debug menu) (aarongolliver)
- #11480 `ffc0b11` Add toggle for unblinding password fields (tjps)
- #11316 `22cdf93` Add use available balance in send coins dialog (CryptAxe, promag)
- #3716 `13e352d` Receive: Remove option to reuse a previous address (luke-jr)
- #11690 `f0c1f8a` Fix the StartupWMClass for bitoin-qt, so gnome-shell can recognize it (eklitzke)
- #10920 `f6f8d54` Fix potential memory leak in newPossibleKey(ChangeCWallet *wallet) (practicalswift)
- #11698 `7293d06` RPC-Console nested commands documentation (lmlsna)
- #11395 `38d31f9` Enable searching by transaction id (luke-jr)
- #11556 `91eeaa0` Improved copy for RBF checkbox and tooltip (Sjors)
- #11809 `80f9dad` Fix proxy setting options dialog crash (laanwj)
- #11616 `8585bb8` Update ban-state in case of dirty-state during periodic sweep (jonasschnelli)
- #11605 `f19ca12` Enable RBF by default in QT (Sjors)
- #12074 `a1136f0` Optimizes boolean expression model && model->haveWatchOnly() (251Labs)
- #12035 `eeb6d52` Change µBTC to bits (jb55)
- #12092 `fd4ca17` Replaces numbered place marker %2 with %1 (251Labs)
- #12173 `bbc91b7` Use flexible font size for QRCode image address (jonasschnelli)
- #12211 `10d10d7` Avoid potential null dereference in ReceiveCoinsDialog constructor (ryanofsky)
- #12261 `f359afc` Bump BLOCK_CHAIN_SIZE to 200GB (laanwj)
- #11991 `062c8b6` Receive: checkbox for bech32 address (Sjors)
- #11644 `045a809` Fix qt build broken by 5a5e4e9 (TheBlueMatt)
- #11448 `d473e6d` reset addrProxy/addrSeparateProxyTor if colon char missing (mess110)
- #12377 `604f289` qt: Poll ShutdownTimer after init is done (MarcoFalke)
- #12374 `daaae36` qt: Make sure splash screen is freed on AppInitMain fail (laanwj)
### Build system
- #10923 `2c9f5ec` travis: Build with --enable-werror under OS X (practicalswift)
- #11176 `df8c722` build: Rename --enable-experimental-asm to --enable-asm and enable by default (laanwj)
- #11286 `11dacc6` [depends] Don't build libevent sample code (fanquake)
- #7142 `801dd40` Travis: Test build against system libs (& Qt4) (luke-jr)
- #11380 `390771b` Remove outdated share/certs/ directory (MeshCollider)
- #11391 `7632310` Remove lxcbr0 lines from gitian-build.sh (MeshCollider)
- #11435 `167cef8` build: Make "make clean" remove all files created when running "make check" (practicalswift)
- #11460 `e022463` [depends] mac_alias 2.0.6, ds_store 1.1.2 (fanquake)
- #11541 `bb9ab0f` Build: Fix Automake warnings when running autogen.sh (fanquake)
- #11611 `0e70791` [build] Don't fail when passed --disable-lcov and lcov isn't available (fanquake)
- #11651 `3c098a8` refactor: Make all #includes relative to project root (laanwj, MeshCollider, ryanofsky)
- #11621 `1f7695b` [build] Add temp_bitcoin_locale_qrc to CLEAN_QT to fix make distcheck (fanquake)
- #11755 `84fa645` [Docs] Bump minimum required version of GCC to 4.8 (fanquake)
- #9254 `6d3dc52` [depends] ZeroMQ 4.2.2 (fanquake)
- #11842 `3c8f0a3` [build] Add missing stuff to clean-local (kallewoof)
- #11936 `483bb67` [build] Warn that only libconsensus can be built without Boost (fanquake)
- #11945 `7a11ba7` Improve BSD compatibility of contrib/install_db4.sh (laanwj)
- #11981 `180a255` Fix gitian build after libzmq bump (theuni)
- #11903 `8f68fd2` [trivial] Add required package dependencies for depends cross compilation (jonasschnelli)
- #12168 `45cf8a0` #include sys/fcntl.h to just fcntl.h (without sys/) (jsarenik)
- #12095 `3fa1ab4` Use BDB_LIBS/CFLAGS and pass --disable-replication (fanquake)
- #11711 `6378e5c` bitcoin_qt.m4: Minor fixes and clean-ups (fanquake)
- #11989 `90d4104` .gitignore: add QT Creator artifacts (Sjors)
- #11577 `c0ae864` Fix warnings (-Wsign-compare) when building with DEBUG_ADDRMAN (practicalswift)
### Tests and QA
- #11024 `3e55f13` Remove OldSetKeyFromPassphrase/OldEncrypt/OldDecrypt (practicalswift)
- #10679 `31b2612` Document the non-DER-conformance of one test in tx_valid.json (schildbach)
- #11160 `ede386c` Improve versionbits_computeblockversion test code consistency (danra)
- #10303 `f088a1b` Include ms/blk stats in Connect* benchmarks (kallewoof)
- #10777 `d81dccf` Avoid redundant assignments. Remove unused variables (practicalswift)
- #11260 `52f8877` travis: Assert default datadir isn't created, Run scripted diff only once (MarcoFalke)
- #11271 `638e6c5` travis: filter out pyenv (theuni)
- #11285 `3255d63` Add -usehd to excluded args in check-doc.py (MeshCollider)
- #11297 `16e4184` Make sure ~/.bitcoin doesn't exist before build (MeshCollider)
- #11311 `cce94c5` travis: Revert default datadir check (MarcoFalke)
- #11300 `f4ed44a` Add a lint check for trailing whitespace (MeshCollider)
- #11323 `4ce2f3d` mininode: add an optimistic write and disable nagle (theuni)
- #11370 `2d85899` Add getblockchaininfo functional test (promag)
- #11365 `f199b8a` Add Qt GUI tests to Overview and ReceiveCoin Page (anditto)
- #11293 `dbc4ae0` Deduplicate CMerkleBlock construction code, add test coverage (jamesob)
- #10440 `9e8ef9d` Add libFuzzer support (practicalswift)
- #10941 `364da2c` Add blocknotify and walletnotify functional tests (promag)
- #11420 `8928093` Bump univalue subtree and fix json formatting in tests (MarcoFalke)
- #10099 `424be03` Slightly Improve Unit Tests for Checkqueue (JeremyRubin)
- #11513 `14b860b` A few Python3 tidy ups (jnewbery)
- #11486 `2ca518d` Add uacomment tests (mess110)
- #11452 `02ac8c8` Improve ZMQ functional test (promag)
- #10409 `b5545d8` Add fuzz testing for BlockTransactions and BlockTransactionsRequest (practicalswift)
- #11389 `dd56166` Support having segwit always active in regtest (sipa, ajtowns, jnewbery)
- #11562 `5776582` bench: use std::chrono rather than gettimeofday (theuni)
- #11182 `f7388e9` Add P2P interface to TestNode (jnewbery)
- #11552 `b5f9f02` Improve wallet-accounts test (ryanofsky)
- #11638 `5e3f5e4` Dead mininode code (jnewbery)
- #11646 `fe503e1` Require a steady clock for bench with at least micro precision (TheBlueMatt)
- #11468 `76b3349` Make comp test framework more debuggable (jnewbery)
- #11623 `ee92243` Add missing locks to tests (practicalswift)
- #11035 `927e528` [contrib] Add Valgrind suppressions file (practicalswift)
- #11641 `7adeea3` Only allow disconnecting all NodeConns (MarcoFalke)
- #11677 `3bdf242` Remove unused NodeConn members (MarcoFalke)
- #11699 `66d46c7` [travis-ci] Only run linters on Pull Requests (jnewbery)
- #11654 `084f52f` Initialize recently introduced non-static class member lastCycles to zero in constructor (practicalswift)
- #11648 `ccc70a2` Add messages.py (jnewbery)
- #11713 `49667a7` Fix for mismatched extern definition in wallet tests (sipsorcery)
- #11707 `0d89fa0` Fix sendheaders (jnewbery)
- #11718 `9cdd2bc` Move pwalletMain to wallet test fixture (laanwj)
- #11714 `901ba3e` Test that mempool rejects coinbase transactions (jamesob)
- #11743 `3d6ad40` Add multiwallet prefix test (MarcoFalke)
- #11683 `a892218` Remove unused mininode functions {ser,deser}_int_vector(...). Remove unused imports (practicalswift)
- #11712 `9f2c2db` Split NodeConn from NodeConnCB (jnewbery)
- #11791 `13e31dd` Rename NodeConn and NodeConnCB (jnewbery)
- #11835 `f60b4ad` Add Travis check for unused Python imports (practicalswift)
- #11849 `ad1820c` Assert that only one NetworkThread exists (jnewbery)
- #11877 `d4991c0` Improve createrawtransaction functional tests (promag)
- #11220 `2971fd0` Check specific validation error in miner tests (Sjors)
- #11947 `797441e` Fix rawtransactions test (laanwj)
- #11946 `8049241` Remove unused variable (firstAddrnServices) (practicalswift)
- #11867 `18a1bba` Improve node network test (jnewbery)
- #11883 `cfd99dd` Add configuration file/argument testing (MeshCollider)
- #11879 `d4e404a` Remove redundant univalue_tests.cpp (jnewbery)
- #11748 `20166f8` Adding unit tests for GetDifficulty in blockchain.cpp (merehap)
- #11517 `5180a86` Improve benchmark precision (martinus)
- #11291 `a332a7d` Fix string concatenation to os.path.join and add exception case (dongsam)
- #11965 `d38d1a3` Note on test order in test_runner (MarcoFalke)
- #11997 `ddff344` util_tests.cpp: actually check ignored args (ajtowns)
- #12079 `45173fa` Improve prioritisetransaction test coverage (promag)
- #12150 `92a810d` Fix ListCoins test failure due to unset g_address_type, g_change_type (ryanofsky)
- #12133 `1d2eaba` Fix rare failure in p2p-segwit.py (sdaftuar)
- #12082 `0910cbe` Adding test case for SINGLE|ANYONECANPAY hash type in tx_valid.json (Christewart)
- #11796 `4db16ec` Functional test naming convention (ajtowns)
- #12227 `b987ca4` test_runner: Readable output if create_cache.py fails (ryanofsky)
- #12089 `126000b` Make TestNodeCLI command optional in send_cli (MarcoFalke)
- #11774 `6970b30` Rename functional tests (ajtowns)
- #12264 `598a9c4` Fix versionbits warning test (jnewbery)
- #12217 `1213be6` Add missing syncwithvalidationinterfacequeue to tests (MarcoFalke)
- #12292 `eebe458` Fix names of excluded extended tests for travis (ajtowns)
- #11789 `60d739e` [travis-ci] Combine logs on failure (jnewbery)
- #11838 `3e50024` Add getrawtransaction in_active_chain=False test (MarcoFalke)
- #12206 `898f560` Sync with validationinterface queue in sync_mempools (MarcoFalke)
### Documentation
- #10680 `6366941` Fix inconsistencies and grammar in various files (MeshCollider)
- #11011 `7db65c3` Add a comment on the use of prevector in script (gmaxwell)
- #10878 `c58128f` Fix Markdown formatting issues in init.md (dongcarl)
- #11066 `9e00a62` Document the preference of nullptr over NULL or (void*)0 (practicalswift)
- #11094 `271e40a` Hash in ZMQ hash is raw bytes, not hex (runn1ng)
- #11026 `ea3ac59` Bugfix: Use testnet RequireStandard for -acceptnonstdtxn default (luke-jr)
- #11058 `4b65fa5` Comments: More comments on functions/globals in standard.h (jimpo)
- #11112 `3f726c9` [developer-notes] By default, declare single-argument constructors "explicit" (practicalswift)
- #11155 `a084767` Trivial: Documentation fixes for CVectorWriter ctors (danra)
- #11136 `108222b` Docs: Add python3 to list of dependencies on some platforms (danra)
- #11216 `81f8c03` Update hmac_sha256.h (utsavgupta)
- #11236 `ba05971` Add note on translations to CONTRIBUTING.md (MeshCollider)
- #11173 `4eb1f39` RPC: Fix currency unit string in the help text (AkioNak)
- #11135 `21e2f2f` Update developer notes with RPC response guidelines (promag)
- #11219 `bcc8a62` explain how to recompile a modified unit test (Sjors)
- #10779 `f656147` Create dependencies.md (flack)
- #10682 `2a56baf` Move the AreInputsStandard documentation next to its implementation (esneider)
- #11276 `ee50c9e` Update CONTRIBUTING.md to reduce unnecessary review workload (jonasschnelli)
- #11264 `b148803` Fix broken Markdown table in dependencies.md (practicalswift)
- #10691 `ce82985` Properly comment about shutdown process in init.cpp file (wraith7)
- #11330 `ae233c4` Fix comments for DEFAULT_WHITELIST[FORCE]RELAY (danra)
- #11340 `d6d2c85` Fix validation comments (danra)
- #11305 `2847480` Update release notes and manpages for 0.16 (MarcoFalke)
- #11132 `551d7bf` Document assumptions that are being made to avoid NULL pointer dereferences (practicalswift)
- #11390 `12ed800` Document scripted-diff (jnewbery)
- #11392 `a3b4c59` Fix stale link in gitian-building.md (shooterman)
- #11401 `4202273` Move gitian building to external repo (MarcoFalke)
- #11414 `bbc901d` Remove partial gitian build instructions from descriptors dir (fanquake)
- #11571 `c95832d` Fixed a couple small grammatical errors (BitsInMyBlood)
- #11624 `f9b74ef` Change formatting for sequence of steps (vivganes)
- #11597 `6f01dcf` Fix error messages in CFeeBumper (kallewoof)
- #11438 `7fbf3c6` Updated Windows build doc for WSL/Xenial workaround (sipsorcery)
- #11663 `41aa9c4` Add getreceivedbyaddress release notes (MarcoFalke)
- #11533 `cbb54e7` Update WSL installation notes for Fall Creators update (Thoragh)
- #11680 `4db82b7` Add instructions for lcov report generation (jamesob)
- #11686 `54aedc0` Make ISSUE_TEMPLATE a bit shorter, mention hardware tests (TheBlueMatt)
- #11704 `ea68190` Windows build doc update (sipsorcery)
- #11706 `5197100` Make default issue text all comments to make issues more readable (TheBlueMatt)
- #11140 `1429132` Improve #endif comments (danra)
- #11729 `7a43fbb` links to code style guides (Sjors)
- #11793 `8879d50` Bump OS X version to 10.13 (Varunram)
- #11783 `16fff80` Fix shutdown in case of errors during initialization (laanwj)
- #11804 `00d25e9` Fixed outdated link with archive.is (TimothyShimmin)
- #11960 `4307062` Fix link to installation script (laudaa)
- #12027 `63a4dc1` Remove boost --c++ flag from osx build instructions (fernandezpablo85)
- #12062 `5961b23` Increment MIT Licence copyright header year on files modified in 2017 (akx20000a)
- #12063 `36a5a44` Update license year range to 2018 (akx20000a)
- #12093 `5691028` Fix incorrect Markdown link (practicalswift)
- #12143 `b0d626d` Fix link for BIP159 pull request (azuchi)
- #12112 `3c62868` Remove the ending slashes from RPC URI format (jackycjh)
- #12166 `e839d65` Clarify -walletdir usage (jnewbery)
- #12241 `b030133` Fix incorrect link in /test/ README.md (fanquake)
- #12187 `b5e4b9b` Updating benchmarkmarking.md with an updated sample output (jeffrade)
- #12294 `7cf1aea` Create NetBSD build instructions and fix compilation (fanquake)
- #12251 `cc5870a` initwallet: Do not translate highly technical addresstype help (MarcoFalke)
- #11984 `efae366` Update OpenBSD build instructions for 6.2 (cont'd) (laanwj)
- #12293 `9d9c418` Mention that HD is enabled if hdmasterkeyid is present in getwalletinfo RPC help (fanquake)
- #12077 `c04cb48` Correct `sendmany` curl example (251Labs)
- #10677 `b3ecb7b` Document that addmultisigaddress is intended for non-watchonly addresses (instagibbs)
- #12177 `cad504b` Fix address_type help text of getnewaddress and getrawchangeaddress (mruddy)
### Refactoring
- #9964 `b6a4891` Add const to methods that do not modify the object for which it is called (practicalswift)
- #10965 `655970d` Replace deprecated throw() with noexcept specifier (C++11) (practicalswift)
- #10645 `c484ec6` Use nullptr (C++11) instead of zero (0) as the null pointer constant (practicalswift)
- #10901 `22e301a` Fix constness of ArgsManager methods (promag)
- #10969 `4afb5aa` Declare single-argument (non-converting) constructors "explicit" (practicalswift)
- #11071 `dbf6bd6` Use static_assert(…, …) (C++11) instead of assert(…) where appropriate (practicalswift)
- #10809 `c559884` optim: mark a few classes final (theuni)
- #10843 `2ab7c63` Add attribute [[noreturn]] (C++11) to functions that will not return (practicalswift)
- #11151 `7fd49d0` Fix header guards using reserved identifiers (danra)
- #11138 `2982511` Compat: Simplify bswap_16 implementation (danra)
- #11161 `745bbdc` Remove redundant explicitly defined copy ctors (danra)
- #11144 `cee4fe1` Move local include to before system includes (danra)
- #10781 `60dd9cc` Python cleanups (practicalswift)
- #10701 `50fae68` Remove the virtual specifier for functions with the override specifier (practicalswift)
- #11164 `38a54a5` Fix boost headers included as user instead of system headers (danra)
- #11143 `3aa60b7` Fix include path for bitcoin-config.h (danra)
- #8330 `59e1789` Structure Packing Optimizations in C{,Mutable}Transaction (JeremyRubin)
- #10845 `39ae413` Remove unreachable code (practicalswift)
- #11238 `6acdb1f` Add assertions before potential null deferences (MeshCollider)
- #11259 `089b742` Remove duplicate destination decoding (promag)
- #11232 `2f0d3e6` Ensure that data types are consistent (jjz)
- #10793 `efb4383` Changing &var[0] to var.data() (MeshCollider)
- #11196 `e278f86` Switch memory_cleanse implementation to BoringSSL's to ensure memory clearing even with -lto (maaku)
- #10888 `9821274` range-based loops and const qualifications in net.cpp (benma)
- #11351 `6c4fecf` Refactor: Modernize disallowed copy constructors/assignment (danra)
- #11385 `94c9015` Remove some unused functions and methods (sipa)
- #11301 `8776787` add m_added_nodes to connman options (benma)
- #11432 `058c0f9` Remove unused fTry from push_lock (promag)
- #11107 `e93fff1` Fix races in AppInitMain and others with lock and atomic bools (MeshCollider)
- #9572 `17f2ace` Skip witness sighash cache for non-segwit transactions (jl2012)
- #10961 `da0478e` Improve readability of DecodeBase58Check(...) (practicalswift)
- #11133 `a865b38` Document assumptions that are being made to avoid division by zero (practicalswift)
- #11073 `3bb77eb` Remove dead store in ecdsa_signature_parse_der_lax (BitonicEelis)
- #10898 `470c730` Fix invalid checks (NULL checks after dereference, redundant checks, etc.) (practicalswift)
- #11495 `50d72b3` [trivial] Make namespace explicit for is_regular_file (jnewbery)
- #11511 `db2f83e` [Init] Remove redundant exit(EXIT_FAILURE) instances and replace with return false (donaloconnor)
- #10866 `ef8a634` Fix -Wthread-safety-analysis warnings. Compile with -Wthread-safety-analysis if available (practicalswift)
- #11221 `0dec4cc` Refactor: simpler read (gnuser)
- #10696 `ef3758d` Remove redundant nullptr checks before deallocation (practicalswift)
- #11043 `5e9be16` Use std::unique_ptr (C++11) where possible (practicalswift)
- #11353 `05a7619` Small refactor of CCoinsViewCache::BatchWrite() (danra)
- #10749 `2adbddb` Use compile-time constants instead of unnamed enumerations (remove "enum hack") (practicalswift)
- #11603 `a933cb1` Move RPC registration out of AppInitParameterInteraction (ryanofsky)
- #11722 `26efc22` Switched sync.{cpp,h} to std threading primitives (tjps)
- #10493 `fbce66a` Use range-based for loops (C++11) when looping over map elements (practicalswift)
- #11337 `0d7e0a3` Fix code constness in CBlockIndex::GetAncestor() overloads (danra)
- #11516 `0e722e8` crypto: Add test cases covering the relevant HMAC-SHA{256,512} key length boundaries (practicalswift)
- #10574 `5d132e8` Remove includes in .cpp files for things the corresponding .h file already included (practicalswift)
- #11884 `66479c0` Remove unused include in hash.cpp (kallewoof)
- #10839 `c66adb2` Don't use pass by reference to const for cheaply-copied types (bool, char, etc.) (practicalswift)
- #10657 `79399c8` Utils: Improvements to ECDSA key-handling code (str4d)
- #12250 `e37ca2b` Make CKey::Load references const (ryanofsky)
- #12108 `9220426` Remove unused fQuit var from checkqueue.h (donaloconnor)
- #12159 `f3c7062` Use the character based overload for std::string::find (kekimusmaximus)
- #12266 `3448907` Move scheduler/threadGroup into common-init instead of per-app (TheBlueMatt)
### Miscellaneous
- #11246 `777519b` github-merge: Coalesce git fetches (laanwj)
- #10871 `c9a4aa8` Handle getinfo in bitcoin-cli w/ -getinfo (revival of #8843) (achow101)
- #11419 `093074b` Utils: Fix launchctl not being able to stop bitcoind (OmeGak)
- #11394 `6e4e98e` Perform a weaker subtree check in Travis (sipa)
- #11702 `4122112` [build] Add a script for installing db4 (jamesob)
- #11794 `dd49862` Prefix leveldb debug logging (laanwj)
- #11781 `24df9af` Add `-debuglogfile` option (laanwj)
- #10773 `c17f11f` Shell script cleanups (practicalswift)
- #11829 `7630a1f` Test datadir specified in conf file exists (MeshCollider)
- #11836 `d44535d` Rename rpcuser.py to rpcauth.py (hkjn)
- #11831 `d48ab83` Always return true if AppInitMain got to the end (TheBlueMatt)
- #11943 `1808660` contrib: fix typo in install_db4.sh help message (laanwj)
- #12075 `c991b30` [scripts] Add missing univalue file to copyright_header.py (fanquake)
- #12197 `000ac4f` Log debug build status and warn when running benchmarks (laanwj)
- #10672 `6ab0e4c` Avoid division by zero in the case of a corrupt estimates file (practicalswift)
- #11273 `cdd6bbf` Ignore old format estimation file (Xekyo)
- #11951 `1fb34e0` Remove dead feeest-file read code for old versions (TheBlueMatt)
- #11421 `9ccafb1` Merge current secp256k1 subtree (MarcoFalke)
- #11573 `2631d55` [Util] Update tinyformat.h (fanquake)
- #10529 `331352f` Improve bitcoind systemd service file (Flowdalic)
- #11620 `70fec9e` [build] .gitignore: add background.tiff (Sjors)
- #11558 `68e021e` Minimal code changes to allow msvc compilation (sipsorcery)
- #11284 `10bee0d` Fix invalid memory access in CScript::operator+= (guidovranken, ajtowns)
- #10939 `a1f7f18` [init] Check non-emptiness of -blocknotify command prior to executing (practicalswift)
- #11467 `937613d` Fix typos. Use nullptr instead of NULL (practicalswift)
- #11834 `5bea05b` [verify-commits] Fix gpg.sh's echoing for commits with '\n' (TheBlueMatt)
- #11830 `a13e443` rpcuser.py: Use 'python' not 'python2' (hkjn)
- #12194 `7abb0f0` Add change type option to fundrawtransaction (promag)
- #12269 `2ae7cf8` Update defaultAssumeValid to block 506067 (gmaxwell)
- #11952 `9ab9963` univalue: Bump subtree (MarcoFalke)
- #12367 `09fc859` Fix two fast-shutdown bugs (TheBlueMatt)
Credits
=======
Thanks to everyone who directly contributed to this release:
- 251
- Aaron Clauson
- Aaron Golliver
- aaron-hanson
- Adam Langley
- Akio Nakamura
- Akira Takizawa
- Alejandro Avilés
- Alex Morcos
- Alin Rus
- Anditto Heristyo
- Andras Elso
- Andreas Schildbach
- Andrew Chow
- Anthony Towns
- azuchi
- Carl Dong
- Chris Moore
- Chris Stewart
- Christian Gentry
- Cory Fields
- Cristian Mircea Messel
- CryptAxe
- Dan Raviv
- Daniel Edgecumbe
- danra
- david60
- Donal O'Connor
- dongsamb
- Dusty Williams
- Eelis
- esneider
- Evan Klitzke
- fanquake
- Ferdinando M. Ametrano
- fivepiece
- flack
- Florian Schmaus
- gnuser
- Gregory Maxwell
- Gregory Sanders
- Henrik Jonsson
- Jack Grigg
- Jacky C
- James Evans
- James O'Beirne
- Jan Sarenik
- Jeff Rade
- Jeremiah Buddenhagen
- Jeremy Rubin
- Jim Posen
- jjz
- Joe Harvell
- Johannes Kanig
- John Newbery
- Johnson Lau
- Jonas Nick
- Jonas Schnelli
- João Barbosa
- Jorge Timón
- Karel Bílek
- Karl-Johan Alm
- klemens
- Kyuntae Ethan Kim
- laudaa
- Lawrence Nahum
- Lucas Betschart
- Luke Dashjr
- Luke Mlsna
- MarcoFalke
- Mark Friedenbach
- Marko Bencun
- Martin Ankerl
- Matt Corallo
- mruddy
- Murch
- NicolasDorier
- Pablo Fernandez
- Paul Berg
- Pedro Branco
- Pierre Rochard
- Pieter Wuille
- practicalswift
- Randolf Richardson
- Russell Yanofsky
- Samuel Dobson
- Sean Erle Johnson
- Shooter
- Sjors Provoost
- Suhas Daftuar
- Thomas Snider
- Thoragh
- Tim Shimmin
- Tomas van der Wansem
- Utsav Gupta
- Varunram Ganesh
- Vivek Ganesan
- Werner Lemberg
- William Casarin
- Willy Ko
- Wladimir J. van der Laan
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/).

View File

@@ -73,34 +73,13 @@ private:
std::deque<std::unique_ptr<WorkItem>> queue;
bool running;
size_t maxDepth;
int numThreads;
/** RAII object to keep track of number of running worker threads */
class ThreadCounter
{
public:
WorkQueue &wq;
explicit ThreadCounter(WorkQueue &w): wq(w)
{
std::lock_guard<std::mutex> lock(wq.cs);
wq.numThreads += 1;
}
~ThreadCounter()
{
std::lock_guard<std::mutex> lock(wq.cs);
wq.numThreads -= 1;
wq.cond.notify_all();
}
};
public:
explicit WorkQueue(size_t _maxDepth) : running(true),
maxDepth(_maxDepth),
numThreads(0)
maxDepth(_maxDepth)
{
}
/** Precondition: worker threads have all stopped
* (call WaitExit)
/** Precondition: worker threads have all stopped (they have been joined).
*/
~WorkQueue()
{
@@ -119,7 +98,6 @@ public:
/** Thread function */
void Run()
{
ThreadCounter count(*this);
while (true) {
std::unique_ptr<WorkItem> i;
{
@@ -141,13 +119,6 @@ public:
running = false;
cond.notify_all();
}
/** Wait for worker threads to exit */
void WaitExit()
{
std::unique_lock<std::mutex> lock(cs);
while (numThreads > 0)
cond.wait(lock);
}
};
struct HTTPPathHandler
@@ -449,6 +420,7 @@ bool UpdateHTTPServerLogging(bool enable) {
std::thread threadHTTP;
std::future<bool> threadResult;
static std::vector<std::thread> g_thread_http_workers;
bool StartHTTPServer()
{
@@ -460,8 +432,7 @@ bool StartHTTPServer()
threadHTTP = std::thread(std::move(task), eventBase, eventHTTP);
for (int i = 0; i < rpcThreads; i++) {
std::thread rpc_worker(HTTPWorkQueueRun, workQueue);
rpc_worker.detach();
g_thread_http_workers.emplace_back(HTTPWorkQueueRun, workQueue);
}
return true;
}
@@ -486,7 +457,10 @@ void StopHTTPServer()
LogPrint(BCLog::HTTP, "Stopping HTTP server\n");
if (workQueue) {
LogPrint(BCLog::HTTP, "Waiting for HTTP worker threads to exit\n");
workQueue->WaitExit();
for (auto& thread: g_thread_http_workers) {
thread.join();
}
g_thread_http_workers.clear();
delete workQueue;
workQueue = nullptr;
}

View File

@@ -1645,12 +1645,19 @@ bool AppInitMain()
// Wait for genesis block to be processed
{
WaitableLock lock(cs_GenesisWait);
while (!fHaveGenesis) {
condvar_GenesisWait.wait(lock);
// We previously could hang here if StartShutdown() is called prior to
// ThreadImport getting started, so instead we just wait on a timer to
// check ShutdownRequested() regularly.
while (!fHaveGenesis && !ShutdownRequested()) {
condvar_GenesisWait.wait_for(lock, std::chrono::milliseconds(500));
}
uiInterface.NotifyBlockTip.disconnect(BlockNotifyGenesisWait);
}
if (ShutdownRequested()) {
return false;
}
// ********************************************************* Step 11: start node
int chain_active_height;

View File

@@ -410,7 +410,7 @@ CNode* CConnman::ConnectNode(CAddress addrConnect, const char *pszDest, bool fCo
// Connect
bool connected = false;
SOCKET hSocket;
SOCKET hSocket = INVALID_SOCKET;
proxyType proxy;
if (addrConnect.IsValid()) {
bool proxyConnectionFailed = false;
@@ -1682,8 +1682,7 @@ void CConnman::ProcessOneShot()
CAddress addr;
CSemaphoreGrant grant(*semOutbound, true);
if (grant) {
if (!OpenNetworkConnection(addr, false, &grant, strDest.c_str(), true))
AddOneShot(strDest);
OpenNetworkConnection(addr, false, &grant, strDest.c_str(), true);
}
}
@@ -1953,29 +1952,29 @@ void CConnman::ThreadOpenAddedConnections()
}
// if successful, this moves the passed grant to the constructed node
bool CConnman::OpenNetworkConnection(const CAddress& addrConnect, bool fCountFailure, CSemaphoreGrant *grantOutbound, const char *pszDest, bool fOneShot, bool fFeeler, bool manual_connection)
void CConnman::OpenNetworkConnection(const CAddress& addrConnect, bool fCountFailure, CSemaphoreGrant *grantOutbound, const char *pszDest, bool fOneShot, bool fFeeler, bool manual_connection)
{
//
// Initiate outbound network connection
//
if (interruptNet) {
return false;
return;
}
if (!fNetworkActive) {
return false;
return;
}
if (!pszDest) {
if (IsLocal(addrConnect) ||
FindNode((CNetAddr)addrConnect) || IsBanned(addrConnect) ||
FindNode(addrConnect.ToStringIPPort()))
return false;
return;
} else if (FindNode(std::string(pszDest)))
return false;
return;
CNode* pnode = ConnectNode(addrConnect, pszDest, fCountFailure);
if (!pnode)
return false;
return;
if (grantOutbound)
grantOutbound->MoveTo(pnode->grantOutbound);
if (fOneShot)
@@ -1990,8 +1989,6 @@ bool CConnman::OpenNetworkConnection(const CAddress& addrConnect, bool fCountFai
LOCK(cs_vNodes);
vNodes.push_back(pnode);
}
return true;
}
void CConnman::ThreadMessageHandler()

View File

@@ -177,7 +177,7 @@ public:
void Interrupt();
bool GetNetworkActive() const { return fNetworkActive; };
void SetNetworkActive(bool active);
bool OpenNetworkConnection(const CAddress& addrConnect, bool fCountFailure, CSemaphoreGrant *grantOutbound = nullptr, const char *strDest = nullptr, bool fOneShot = false, bool fFeeler = false, bool manual_connection = false);
void OpenNetworkConnection(const CAddress& addrConnect, bool fCountFailure, CSemaphoreGrant *grantOutbound = nullptr, const char *strDest = nullptr, bool fOneShot = false, bool fFeeler = false, bool manual_connection = false);
bool CheckIncomingNonce(uint64_t nonce);
bool ForNode(NodeId id, std::function<bool(CNode* pnode)> func);

View File

@@ -682,6 +682,9 @@ bool CloseSocket(SOCKET& hSocket)
#else
int ret = close(hSocket);
#endif
if (ret) {
LogPrintf("Socket close failed: %d. Error: %s\n", hSocket, NetworkErrorString(WSAGetLastError()));
}
hSocket = INVALID_SOCKET;
return ret != SOCKET_ERROR;
}

View File

@@ -388,7 +388,6 @@ void BitcoinApplication::createWindow(const NetworkStyle *networkStyle)
pollShutdownTimer = new QTimer(window);
connect(pollShutdownTimer, SIGNAL(timeout()), window, SLOT(detectShutdown()));
pollShutdownTimer->start(200);
}
void BitcoinApplication::createSplashScreen(const NetworkStyle *networkStyle)
@@ -515,14 +514,16 @@ void BitcoinApplication::initializeResult(bool success)
window, SLOT(message(QString,QString,unsigned int)));
QTimer::singleShot(100, paymentServer, SLOT(uiReady()));
#endif
pollShutdownTimer->start(200);
} else {
quit(); // Exit main loop
Q_EMIT splashFinished(window); // Make sure splash screen doesn't stick around during shutdown
quit(); // Exit first main loop invocation
}
}
void BitcoinApplication::shutdownResult()
{
quit(); // Exit main loop after shutdown finished
quit(); // Exit second main loop invocation after shutdown finished
}
void BitcoinApplication::handleRunawayException(const QString &message)

View File

@@ -31,7 +31,6 @@
#include <QTreeWidget>
QList<CAmount> CoinControlDialog::payAmounts;
CCoinControl* CoinControlDialog::coinControl = new CCoinControl();
bool CoinControlDialog::fSubtractFeeFromAmount = false;
bool CCoinControlWidgetItem::operator<(const QTreeWidgetItem &other) const {
@@ -193,7 +192,7 @@ void CoinControlDialog::buttonSelectAllClicked()
ui->treeWidget->topLevelItem(i)->setCheckState(COLUMN_CHECKBOX, state);
ui->treeWidget->setEnabled(true);
if (state == Qt::Unchecked)
coinControl->UnSelectAll(); // just to be sure
coinControl()->UnSelectAll(); // just to be sure
CoinControlDialog::updateLabels(model, this);
}
@@ -379,11 +378,11 @@ void CoinControlDialog::viewItemChanged(QTreeWidgetItem* item, int column)
COutPoint outpt(uint256S(item->text(COLUMN_TXHASH).toStdString()), item->text(COLUMN_VOUT_INDEX).toUInt());
if (item->checkState(COLUMN_CHECKBOX) == Qt::Unchecked)
coinControl->UnSelect(outpt);
coinControl()->UnSelect(outpt);
else if (item->isDisabled()) // locked (this happens if "check all" through parent node)
item->setCheckState(COLUMN_CHECKBOX, Qt::Unchecked);
else
coinControl->Select(outpt);
coinControl()->Select(outpt);
// selection changed -> update labels
if (ui->treeWidget->isEnabled()) // do not update on every click for (un)select all
@@ -446,7 +445,7 @@ void CoinControlDialog::updateLabels(WalletModel *model, QDialog* dialog)
std::vector<COutPoint> vCoinControl;
std::vector<COutput> vOutputs;
coinControl->ListSelected(vCoinControl);
coinControl()->ListSelected(vCoinControl);
model->getOutputs(vCoinControl, vOutputs);
for (const COutput& out : vOutputs) {
@@ -456,7 +455,7 @@ void CoinControlDialog::updateLabels(WalletModel *model, QDialog* dialog)
COutPoint outpt(txhash, out.i);
if (model->isSpent(outpt))
{
coinControl->UnSelect(outpt);
coinControl()->UnSelect(outpt);
continue;
}
@@ -509,7 +508,7 @@ void CoinControlDialog::updateLabels(WalletModel *model, QDialog* dialog)
nBytes -= 34;
// Fee
nPayFee = GetMinimumFee(nBytes, *coinControl, ::mempool, ::feeEstimator, nullptr /* FeeCalculation */);
nPayFee = GetMinimumFee(nBytes, *coinControl(), ::mempool, ::feeEstimator, nullptr /* FeeCalculation */);
if (nPayAmount > 0)
{
@@ -600,6 +599,12 @@ void CoinControlDialog::updateLabels(WalletModel *model, QDialog* dialog)
label->setVisible(nChange < 0);
}
CCoinControl* CoinControlDialog::coinControl()
{
static CCoinControl coin_control;
return &coin_control;
}
void CoinControlDialog::updateView()
{
if (!model || !model->getOptionsModel() || !model->getAddressTableModel())
@@ -703,13 +708,13 @@ void CoinControlDialog::updateView()
if (model->isLockedCoin(txhash, out.i))
{
COutPoint outpt(txhash, out.i);
coinControl->UnSelect(outpt); // just to be sure
coinControl()->UnSelect(outpt); // just to be sure
itemOutput->setDisabled(true);
itemOutput->setIcon(COLUMN_CHECKBOX, platformStyle->SingleColorIcon(":/icons/lock_closed"));
}
// set checkbox
if (coinControl->IsSelected(COutPoint(txhash, out.i)))
if (coinControl()->IsSelected(COutPoint(txhash, out.i)))
itemOutput->setCheckState(COLUMN_CHECKBOX, Qt::Checked);
}

View File

@@ -52,7 +52,7 @@ public:
static void updateLabels(WalletModel*, QDialog*);
static QList<CAmount> payAmounts;
static CCoinControl *coinControl;
static CCoinControl *coinControl();
static bool fSubtractFeeFromAmount;
private:

View File

@@ -3,11 +3,11 @@
<name>AddressBookPage</name>
<message>
<source>Right-click to edit address or label</source>
<translation>Regs-kliek om die adres of etiket te verander</translation>
<translation>Regsklik om adres of etiket te verander</translation>
</message>
<message>
<source>Create a new address</source>
<translation>Skep 'n nuwe adres</translation>
<translation>Skep n nuwe adres</translation>
</message>
<message>
<source>&amp;New</source>
@@ -131,6 +131,10 @@
<source>Repeat new passphrase</source>
<translation>Herhaal nuwe wagwoord</translation>
</message>
<message>
<source>Show password</source>
<translation>Wys wagwoord</translation>
</message>
<message>
<source>Enter the new passphrase to 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>Tik die nuwe wagwoord vir u beursie.&lt;br/&gt;Gerbuik asseblief 'n wagwoord met &lt;b&gt;tien of meer lukrake karakters&lt;/b&gt;, of &lt;b&gt;agt of meer woorde&lt;/b&gt;.</translation>
@@ -2079,7 +2083,7 @@
</message>
<message>
<source>Done loading</source>
<translation>Klaar met laai</translation>
<translation>Klaar gelaai</translation>
</message>
<message>
<source>Error</source>

View File

@@ -135,6 +135,10 @@
<source>Show password</source>
<translation>Wys wagwoord</translation>
</message>
<message>
<source>Enter the new passphrase to 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>Tik die nuwe wagwoord vir die beursie in.&lt;br/&gt;Gebruik asseblief 'n wagwoord van &lt;b&gt;ten minste 10 ewekansige karakters&lt;/b&gt;, of &lt;b&gt;agt (8) of meer woorde.&lt;/b&gt;</translation>
</message>
<message>
<source>Encrypt wallet</source>
<translation>Enkripteer beursie</translation>
@@ -167,10 +171,22 @@
<source>Confirm wallet encryption</source>
<translation>Bevestig beursie enkripsie.</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>Waarskuwing: As jy jou beursie enkripteer en jou wagwoord verloor, sal jy &lt;b&gt;AL JOU BITCOINS VERLOOR&lt;/b&gt;!</translation>
</message>
<message>
<source>Are you sure you wish to encrypt your wallet?</source>
<translation>Is jy seker jy wil jou beursie enkripteer?</translation>
</message>
<message>
<source>Wallet encrypted</source>
<translation>Beursie Enkripteer</translation>
</message>
<message>
<source>%1 will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer.</source>
<translation>%1 gaan nou toe maak om die enkripsie proses klaar te maak. Onthou dat jou bitcoins nie ten volle beskerm kan word deur die beursie te enkrip teen "malware" wat jou rekenaar besmet.</translation>
</message>
<message>
<source>Wallet encryption failed</source>
<translation>Die beursie kon nie bewaak word nie</translation>
@@ -199,12 +215,24 @@
<source>Wallet passphrase was successfully changed.</source>
<translation>Die beursie se wagfrase verandering was suksesvol.</translation>
</message>
</context>
<message>
<source>Warning: The Caps Lock key is on!</source>
<translation>Waarskuwing: Die Caps Lock is aan!</translation>
</message>
</context>
<context>
<name>BanTableModel</name>
</context>
<message>
<source>Banned Until</source>
<translation>Verban Tot</translation>
</message>
</context>
<context>
<name>BitcoinGUI</name>
<message>
<source>Sign &amp;message...</source>
<translation>Teken &amp;Boodskap</translation>
</message>
<message>
<source>Synchronizing with network...</source>
<translation>Sinchroniseer met die netwerk ...</translation>
@@ -237,6 +265,14 @@
<source>Quit application</source>
<translation>Sluit af</translation>
</message>
<message>
<source>Show information about %1</source>
<translation>Wys inligting oor %1</translation>
</message>
<message>
<source>About &amp;Qt</source>
<translation>Oor &amp;Qt</translation>
</message>
<message>
<source>Show information about Qt</source>
<translation>Wys inligting oor Qt</translation>
@@ -245,6 +281,34 @@
<source>&amp;Options...</source>
<translation>&amp;Opsies</translation>
</message>
<message>
<source>Modify configuration options for %1</source>
<translation>Verander konfigurasie opsies vir %1</translation>
</message>
<message>
<source>&amp;Encrypt Wallet...</source>
<translation>&amp;Enkripteer Beursie...</translation>
</message>
<message>
<source>&amp;Change Passphrase...</source>
<translation>Verander wagwoord frase...</translation>
</message>
<message>
<source>&amp;Sending addresses...</source>
<translation>Uitstuur adresse...</translation>
</message>
<message>
<source>Open &amp;URI...</source>
<translation>Maak &amp;URI oop...</translation>
</message>
<message>
<source>Network activity disabled.</source>
<translation>Netwerk aktiwiteid afgeskakel.</translation>
</message>
<message>
<source>&amp;Verify message...</source>
<translation>&amp;Verifieer boodskap...</translation>
</message>
<message>
<source>Bitcoin</source>
<translation>Bitcoin</translation>
@@ -305,23 +369,65 @@
<source>Up to date</source>
<translation>Op datum</translation>
</message>
<message>
<source>%1 client</source>
<translation>%1 klient</translation>
</message>
<message>
<source>Catching up...</source>
<translation>Besig om op te vang...</translation>
</message>
<message>
<source>Date: %1
</source>
<translation>Datum: %1
</translation>
</message>
<message>
<source>Amount: %1
</source>
<translation>Bedrag: %1
</translation>
</message>
<message>
<source>Type: %1
</source>
<translation>Tipe: %1
</translation>
</message>
<message>
<source>Address: %1
</source>
<translation>Adres: %1
</translation>
</message>
<message>
<source>Incoming transaction</source>
<translation>Inkomende transaksie</translation>
</message>
<message>
<source>HD key generation is &lt;b&gt;enabled&lt;/b&gt;</source>
<translation>HD sleutel generasie is &lt;b&gt;aangesit&lt;/b&gt;</translation>
</message>
<message>
<source>HD key generation is &lt;b&gt;disabled&lt;/b&gt;</source>
<translation>HD sleutel generasie is &lt;b&gt;afgesit&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>Beursie is &lt;b&gt;versleutel&lt;/b&gt; en is tans &lt;b&gt;oopgesluit&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>Beursie is &lt;b&gt;versleutel&lt;/b&gt; en is tans &lt;b&gt;gesluit&lt;/b&gt;</translation>
</message>
</context>
<context>
<name>CoinControlDialog</name>
<message>
<source>Coin Selection</source>
<translation>Munt Keuse</translation>
</message>
<message>
<source>Quantity:</source>
<translation>Hoeveelheid:</translation>
@@ -334,6 +440,14 @@
<source>Amount:</source>
<translation>Bedrag:</translation>
</message>
<message>
<source>Fee:</source>
<translation>Fooi:</translation>
</message>
<message>
<source>Dust:</source>
<translation>Stof:</translation>
</message>
<message>
<source>Change:</source>
<translation>Verander:</translation>
@@ -477,13 +591,25 @@
<source>Could not unlock wallet.</source>
<translation>Kon nie die beursie oopsluit nie.</translation>
</message>
</context>
<message>
<source>New key generation failed.</source>
<translation>Nuwe sleutel genereering het misluk.</translation>
</message>
</context>
<context>
<name>FreespaceChecker</name>
<message>
<source>A new data directory will be created.</source>
<translation>n Nuwe data lêer sal geskep word.</translation>
</message>
<message>
<source>name</source>
<translation>naam</translation>
</message>
<message>
<source>Directory already exists. Add %1 if you intend to create a new directory here.</source>
<translation>Lêer bestaan reeds. Voeg %1 indien u van plan is om n nuwe lêer hier te skep.</translation>
</message>
<message>
<source>Cannot create data directory here.</source>
<translation>Kan nie data gids hier skep nie.</translation>
@@ -542,6 +668,10 @@
<source>Bitcoin</source>
<translation>Bitcoin</translation>
</message>
<message>
<source>The wallet will also be stored in this directory.</source>
<translation>Die beursie sal ook gestoor word in hierdie lêer.</translation>
</message>
<message>
<source>Error</source>
<translation>Fout</translation>
@@ -553,6 +683,10 @@
<source>Form</source>
<translation>Vorm</translation>
</message>
<message>
<source>Progress</source>
<translation>Vorderering</translation>
</message>
<message>
<source>Hide</source>
<translation>Steek weg</translation>
@@ -642,6 +776,10 @@
<source>Balances</source>
<translation>Balans</translation>
</message>
<message>
<source>Total:</source>
<translation>Totaal:</translation>
</message>
</context>
<context>
<name>PaymentServer</name>
@@ -655,6 +793,30 @@
<source>Amount</source>
<translation>Bedrag</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>Geen</translation>
</message>
<message>
<source>%1 ms</source>
<translation>%1 ms</translation>
</message>
<message>
<source>unknown</source>
<translation>onbekend</translation>
@@ -752,6 +914,10 @@
<source>Amount:</source>
<translation>Bedrag:</translation>
</message>
<message>
<source>Fee:</source>
<translation>Fooi:</translation>
</message>
<message>
<source>Change:</source>
<translation>Verander:</translation>
@@ -768,6 +934,10 @@
<source>Send to multiple recipients at once</source>
<translation>Stuur aan vele ontvangers op eens</translation>
</message>
<message>
<source>Dust:</source>
<translation>Stof:</translation>
</message>
<message>
<source>Balance:</source>
<translation>Balans:</translation>
@@ -1125,6 +1295,10 @@
<source>Error: Disk space is low!</source>
<translation>Fout: Hardeskyf spasie is baie laag!</translation>
</message>
<message>
<source>Importing...</source>
<translation>Invoer proses tans besig..</translation>
</message>
<message>
<source>Information</source>
<translation>Informasie</translation>

View File

@@ -3185,6 +3185,10 @@
<source>Accept relayed transactions received from whitelisted peers even when not relaying transactions (default: %d)</source>
<translation>Acceptér videresendte transaktioner, der modtages fra hvidlistede knuder, selv når transaktioner ikke videresendes (standard: %d)</translation>
</message>
<message>
<source>Add a node to connect to and attempt to keep the connection open (see the `addnode` RPC command help for more info)</source>
<translation>Tilføj en knude at forbinde til og forsøg at holde forbindelsen åben (se hjælp for RPC-kommandoen “addnode” for mere info)</translation>
</message>
<message>
<source>Bind to given address and always listen on it. Use [host]:port notation for IPv6</source>
<translation>Tildel til den givne adresse og lyt altid på den. Brug [vært]:port-notation for IPv6</translation>

View File

@@ -1810,7 +1810,7 @@
</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>WARNUNG: Betrüger sind aktiv gewesen und erklären den Benutzern, hier Befehle einzugeben und ihre Brieftascheninhalte zu stehlen. Verwenden Sie diese Konsole nicht, ohne die Verzweigungen eines Befehls vollständig zu verstehen.</translation>
<translation>WARNUNG: Betrüger sind aktiv gewesen, die Benutzer auffordern, hier Befehle einzugeben, um Brieftascheninhalte zu stehlen. Verwenden Sie diese Konsole nicht, ohne die Auswirkungen eines Befehls vollständig zu verstehen.</translation>
</message>
<message>
<source>Network activity disabled</source>
@@ -1897,11 +1897,11 @@
</message>
<message>
<source>Bech32 addresses (BIP-173) are cheaper to spend from and offer better protection against typos. When unchecked a P2SH wrapped SegWit address will be created, compatible with older wallets.</source>
<translation>Bech32 Adressen (BIP-173) sind günstiger zum senden und besser geschützt gegen Tippfehler. Wenn nicht gewählt wird eine P2SH verpackte SegWit Adresse generiert, kompatibel mit älteren Wallets.</translation>
<translation>Bech32-Adressen (BIP-173) sind günstiger zum Senden, und besser geschützt gegen Tippfehler. Wenn nicht gewählt, wird eine P2SH-verpackte SegWit-Adresse generiert, kompatibel mit älteren Wallets.</translation>
</message>
<message>
<source>Generate Bech32 address</source>
<translation>Erzeuge Bech32 Adresse</translation>
<translation>Erzeuge Bech32-Adresse</translation>
</message>
<message>
<source>Show the selected request (does the same as double clicking an entry)</source>
@@ -2154,7 +2154,7 @@
</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>Mit Replace-By-Fee (BIP-125) kann die Transaktionsgebühr nach dem senden erhöht werden. Ohne dies wird eine höhere Gebühr empfoohlen um das Risiko einer hohen Transaktionszeit zu reduzieren.</translation>
<translation>Mit Replace-By-Fee (BIP-125) kann die Transaktionsgebühr nach dem Senden erhöht werden. Ohne dies wird eine höhere Gebühr empfohlen, um das Risiko einer hohen Transaktionszeit zu reduzieren.</translation>
</message>
<message>
<source>Clear &amp;All</source>

View File

@@ -326,6 +326,10 @@ Kérem a kulcsmondatban használjon &lt;b&gt; tíz vagy több véletlenszerű ka
<source>Click to enable network activity again.</source>
<translation>Kattintson a hálózati tevékenység újbóli engedélyezéséhez.</translation>
</message>
<message>
<source>Syncing Headers (%1%)...</source>
<translation>Fejlécek Szinkronizálása (%1%)...</translation>
</message>
<message>
<source>Reindexing blocks on disk...</source>
<translation>Lemezen lévő blokkok újraindexelése...</translation>

View File

@@ -127,6 +127,10 @@
<source>Repeat new passphrase</source>
<translation>Ulangi kata kunci baru</translation>
</message>
<message>
<source>Show password</source>
<translation>Tampilkan password</translation>
</message>
<message>
<source>Enter the new passphrase to 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>Masukan kata sandi baru ke dompet.&lt;br/&gt;Mohon gunakan kata sandi &lt;b&gt;sepuluh karakter acak atau lebih&lt;/b&gt;, atau &lt;b&gt; delapan atau lebih beberapa kata &lt;/b&gt;.</translation>
@@ -678,6 +682,10 @@
<source>no</source>
<translation>Tidak</translation>
</message>
<message>
<source>Can vary +/- %1 satoshi(s) per input.</source>
<translation>Dapat bervariasi +/- %1 satoshi per input.</translation>
</message>
<message>
<source>(no label)</source>
<translation>(tidak ada label)</translation>

View File

@@ -1023,6 +1023,18 @@
<source>Shows if the supplied default SOCKS5 proxy is used to reach peers via this network type.</source>
<translation>Mostra se il proxy SOCK5 di default che p stato fornito è usato per raggiungere i contatti attraverso questo tipo di rete.</translation>
</message>
<message>
<source>Use separate SOCKS&amp;5 proxy to reach peers via Tor hidden services:</source>
<translation>Usa una SOCKS&amp;5 proxy differente per raggiungere peers usando servizi Tor hidden</translation>
</message>
<message>
<source>Hide the icon from the system tray.</source>
<translation>Nascondi l'icona nella barra delle applicazioni.</translation>
</message>
<message>
<source>&amp;Hide tray icon</source>
<translation>&amp;Nascondi l'icona della barra delle applicazioni</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>Riduci ad icona invece di uscire dall'applicazione quando la finestra viene chiusa. Attivando questa opzione l'applicazione terminerà solo dopo aver selezionato Esci dal menu File.</translation>
@@ -1088,6 +1100,14 @@ Per specificare più URL separarli con una barra verticale "|".</translation>
<source>Map port using &amp;UPnP</source>
<translation>Mappa le porte tramite &amp;UPnP</translation>
</message>
<message>
<source>Accept connections from outside.</source>
<translation>Accetta connessione esterne.</translation>
</message>
<message>
<source>Allow incomin&amp;g connections</source>
<translation>Accetta connessioni in entrata</translation>
</message>
<message>
<source>Connect to the Bitcoin network through a SOCKS5 proxy.</source>
<translation>Connessione alla rete Bitcoin attraverso un proxy SOCKS5.</translation>
@@ -1168,6 +1188,10 @@ Per specificare più URL separarli con una barra verticale "|".</translation>
<source>Whether to show coin control features or not.</source>
<translation>Specifica se le funzionalita di coin control saranno visualizzate.</translation>
</message>
<message>
<source>&amp;Third party transaction URLs</source>
<translation>&amp;URLs per transazioni terzi </translation>
</message>
<message>
<source>&amp;OK</source>
<translation>&amp;OK</translation>
@@ -1781,6 +1805,14 @@ Per specificare più URL separarli con una barra verticale "|".</translation>
<source>Use up and down arrows to navigate history, and %1 to clear screen.</source>
<translation>Usa le flecce su e giú per navigare nella storia, e %1 per pulire lo schermo</translation>
</message>
<message>
<source>Type %1 for an overview of available commands.</source>
<translation>Digita %1 per una descrizione di comandi disponibili</translation>
</message>
<message>
<source>For more information on using this console type %1.</source>
<translation>Per maggiori informazioni su come usare questa console digita %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>ATTENZIONE: I truffatori sono stati attivi in quest'area, cercando di convincere gli utenti a digitare linee di comando e rubando i contenuti dei loro portafogli. Non usare questa console senza la piena consapevolezza delle ramificazioni di un comando.</translation>
@@ -1868,6 +1900,14 @@ Per specificare più URL separarli con una barra verticale "|".</translation>
<source>&amp;Request payment</source>
<translation>&amp;Richiedi pagamento</translation>
</message>
<message>
<source>Bech32 addresses (BIP-173) are cheaper to spend from and offer better protection against typos. When unchecked a P2SH wrapped SegWit address will be created, compatible with older wallets.</source>
<translation>Indirizzi Bech32 (BIP-173) sono piu' economici per spendere e offrono maggior protezione contro errori di battitura. Quando non selezionati, un indirizzo di tipo P2SH wrapped SegWit sara' creato, compatibile con i portafogli precedenti. </translation>
</message>
<message>
<source>Generate Bech32 address</source>
<translation>Genera un indirizzo Bech32</translation>
</message>
<message>
<source>Show the selected request (does the same as double clicking an entry)</source>
<translation>Mostra la richiesta selezionata (produce lo stesso effetto di un doppio click su una voce)</translation>
@@ -2113,6 +2153,14 @@ Per specificare più URL separarli con una barra verticale "|".</translation>
<source>Confirmation time target:</source>
<translation>Obiettivo del tempo di conferma:</translation>
</message>
<message>
<source>Enable Replace-By-Fee</source>
<translation>Attiva 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>Con Replace-By-Fee (BIP-125) si puo' aumentare la commissione sulla transazione dopo averla inviata. Senza questa, una commissione piu' alta e' consigliabile per compensare l'aumento del rischio dovuto al ritardo della transazione.</translation>
</message>
<message>
<source>Clear &amp;All</source>
<translation>Cancella &amp;tutto</translation>
@@ -2181,6 +2229,14 @@ Per specificare più URL separarli con una barra verticale "|".</translation>
<source>or</source>
<translation>o</translation>
</message>
<message>
<source>You can increase the fee later (signals Replace-By-Fee, BIP-125).</source>
<translation>Si puo' aumentare la commissione successivamente (segnalando Replace-By-Fee, BIP-125).</translation>
</message>
<message>
<source>Not signalling Replace-By-Fee, BIP-125.</source>
<translation>Senza segnalare Replace-By-Fee, BIP-125.</translation>
</message>
<message>
<source>Confirm send coins</source>
<translation>Conferma invio coins</translation>
@@ -3130,6 +3186,10 @@ Per specificare più URL separarli con una barra verticale "|".</translation>
<source>Accept relayed transactions received from whitelisted peers even when not relaying transactions (default: %d)</source>
<translation>Accetta le transazioni trasmesse ricevute da peers in whitelist anche se non si stanno trasmettendo transazioni (default: %d)</translation>
</message>
<message>
<source>Add a node to connect to and attempt to keep the connection open (see the `addnode` RPC command help for more info)</source>
<translation>Aggiungi un nodo al quale connettersi e prova a tenere la connessione aperta (fare riferimento al comando di aiuto `addnode` RPC per maggiori informazioni) </translation>
</message>
<message>
<source>Bind to given address and always listen on it. Use [host]:port notation for IPv6</source>
<translation>Associa all'indirizzo indicato e resta permanentemente in ascolto su di esso. Usa la notazione [host]:porta per l'IPv6</translation>
@@ -3138,6 +3198,14 @@ Per specificare più URL separarli con una barra verticale "|".</translation>
<source>Cannot obtain a lock on data directory %s. %s is probably already running.</source>
<translation>Non è possibile ottenere i dati sulla cartella %s. Probabilmente %s è già in esecuzione.</translation>
</message>
<message>
<source>Cannot provide specific connections and have addrman find outgoing connections at the same.</source>
<translation>Non e' possibile fornire connessioni specifiche e contemporaneamente usare addrman per trovare connessioni uscenti. </translation>
</message>
<message>
<source>Connect only to the specified node(s); -connect=0 disables automatic connections (the rules for this peer are the same as for -addnode)</source>
<translation>Connettersi solamente a nodo(i) specificati; -connect=0 disattiva connessioni automatiche (le regole per questo peer sono le stesse di quelle per l' -addnode)</translation>
</message>
<message>
<source>Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup</source>
<translation>Elimina tutte le transazioni dal portamonete e recupera solo quelle che fanno parte della blockchain attraverso il comando -rescan all'avvio.</translation>
@@ -3326,6 +3394,10 @@ Per specificare più URL separarli con una barra verticale "|".</translation>
<source>Enable transaction replacement in the memory pool (default: %u)</source>
<translation>Abilita la sostituzione della transazione nel pool della memoria (default: %u)</translation>
</message>
<message>
<source>Error creating %s: You can't create non-HD wallets with this version.</source>
<translation>Errore durante la creazione %s: non e' possibile creare portafogli non-HD con questa versione.</translation>
</message>
<message>
<source>Error initializing block database</source>
<translation>Errore durante l'inizializzazione del database dei blocchi</translation>
@@ -3362,6 +3434,10 @@ Per specificare più URL separarli con una barra verticale "|".</translation>
<source>Failed to listen on any port. Use -listen=0 if you want this.</source>
<translation>Nessuna porta disponibile per l'ascolto. Usa -listen=0 se vuoi procedere comunque.</translation>
</message>
<message>
<source>Failed to rescan the wallet during initialization</source>
<translation>Impossibile ripetere la scansione del portafoglio durante l'inizializzazione</translation>
</message>
<message>
<source>Importing...</source>
<translation>Importazione...</translation>
@@ -3442,6 +3518,10 @@ Per specificare più URL separarli con una barra verticale "|".</translation>
<source>Rewinding blocks...</source>
<translation>Verifica blocchi...</translation>
</message>
<message>
<source>Send transactions with full-RBF opt-in enabled (RPC only, default: %u)</source>
<translation>Invia transazioni con full-RBF opt-in attivo (solo RPC, default: %u)</translation>
</message>
<message>
<source>Set database cache size in megabytes (%d to %d, default: %d)</source>
<translation>Imposta la dimensione della cache del database in megabyte (%d a %d, predefinito: %d)</translation>
@@ -3658,6 +3738,18 @@ Per specificare più URL separarli con una barra verticale "|".</translation>
<source>Signing transaction failed</source>
<translation>Firma transazione fallita</translation>
</message>
<message>
<source>Specified -walletdir "%s" does not exist</source>
<translation>-walletdir "%s" specificata non esiste</translation>
</message>
<message>
<source>Specified -walletdir "%s" is a relative path</source>
<translation>-walletdir "%s" specificata e' un path relativo</translation>
</message>
<message>
<source>Specified -walletdir "%s" is not a directory</source>
<translation>-walletdir "%s" specificata non e' una directory</translation>
</message>
<message>
<source>The transaction amount is too small to pay the fee</source>
<translation>L'importo della transazione è troppo basso per pagare la commissione</translation>
@@ -3690,6 +3782,10 @@ Per specificare più URL separarli con una barra verticale "|".</translation>
<source>Unable to bind to %s on this computer (bind returned error %s)</source>
<translation>Impossibile associarsi a %s su questo computer (l'associazione ha restituito l'errore %s)</translation>
</message>
<message>
<source>Unable to generate initial keys</source>
<translation>Impossibile generare chiave iniziale</translation>
</message>
<message>
<source>Upgrade wallet to latest format on startup</source>
<translation>Aggiorna il wallet all'ultimo formato all'avvio</translation>
@@ -3702,6 +3798,10 @@ Per specificare più URL separarli con una barra verticale "|".</translation>
<source>Verifying wallet(s)...</source>
<translation>Verifica portafoglio/i...</translation>
</message>
<message>
<source>Wallet %s resides outside wallet directory %s</source>
<translation>Il portafoglio %s e' situato fuori dalla directory del portafoglio %s </translation>
</message>
<message>
<source>Warning</source>
<translation>Attenzione</translation>
@@ -3790,10 +3890,22 @@ Per specificare più URL separarli con una barra verticale "|".</translation>
<source>Output debugging information (default: %u, supplying &lt;category&gt; is optional)</source>
<translation>Emette informazioni di debug (predefinito: %u, fornire &lt;category&gt; è opzionale)</translation>
</message>
<message>
<source>Set maximum BIP141 block weight to this * 4. Deprecated, use blockmaxweight</source>
<translation>Impostare massimo per il peso del blocco BIP141 a * 4. Obsoleto, usare blockmaxweight</translation>
</message>
<message>
<source>Sets the serialization of raw transaction or block hex returned in non-verbose mode, non-segwit(0) or segwit(1) (default: %d)</source>
<translation>Imposta che la serializzazione degli hex di transazioni o blocchi grezzi sia riportata in maniere non-verbose, non-segwit(0) o segwit(1) (predefinito: %d)</translation>
</message>
<message>
<source>Specify directory to hold wallets (default: &lt;datadir&gt;/wallets if it exists, otherwise &lt;datadir&gt;)</source>
<translation>Specificare la directory dove i portafogli saranno conservati (default: 1/portafogli se esiste, altrimenti 2)</translation>
</message>
<message>
<source>Specify location of debug log file: this can be an absolute path or a path relative to the data directory (default: %s)</source>
<translation>Specificare la posizione del debug log file: questo puo' essere un percorso assoluto o un percorso relativo alla directory dei dati (default: %s)</translation>
</message>
<message>
<source>Support filtering of blocks and transaction with bloom filters (default: %u)</source>
<translation>Supporta filtraggio di blocchi e transazioni con filtri bloom (default: %u)</translation>

View File

@@ -766,6 +766,10 @@
<source>Bitcoin</source>
<translation>Bitcoin</translation>
</message>
<message>
<source>The wallet will also be stored in this directory.</source>
<translation>Il portafoglio sara' </translation>
</message>
<message>
<source>Error</source>
<translation>Errore</translation>
@@ -787,19 +791,51 @@
<source>Options</source>
<translation>Opzioni</translation>
</message>
<message>
<source>Configuration options</source>
<translation>Opzioni di configurazione</translation>
</message>
<message>
<source>Error</source>
<translation>Errore</translation>
</message>
<message>
<source>This change would require a client restart.</source>
<translation>Questa modifica richiede un riavvio del client</translation>
</message>
</context>
<context>
<name>OverviewPage</name>
<message>
<source>Available:</source>
<translation>Disponibile:</translation>
</message>
<message>
<source>Your current spendable balance</source>
<translation>Saldo disponibile</translation>
</message>
<message>
<source>Recent transactions</source>
<translation>Transazioni recenti</translation>
</message>
</context>
<context>
<name>PaymentServer</name>
<message>
<source>Payment request rejected</source>
<translation>Richiesta di pagamento rifiutata</translation>
</message>
<message>
<source>Refund from %1</source>
<translation>Rimborso da %1</translation>
</message>
</context>
<context>
<name>PeerTableModel</name>
<message>
<source>Sent</source>
<translation>Inviato</translation>
</message>
</context>
<context>
<name>QObject</name>
@@ -816,6 +852,10 @@
</context>
<context>
<name>RPCConsole</name>
<message>
<source>Sent</source>
<translation>Inviato</translation>
</message>
</context>
<context>
<name>ReceiveCoinsDialog</name>

View File

@@ -1023,6 +1023,10 @@
<source>Shows if the supplied default SOCKS5 proxy is used to reach peers via this network type.</source>
<translation>このネットワークタイプ経由で、与えられたデフォルトのSOCKS5プロキシを使用してピアに到達した場合に表示する。</translation>
</message>
<message>
<source>Use separate SOCKS&amp;5 proxy to reach peers via Tor hidden services:</source>
<translation>Tor秘匿サービス経由でピアに接続するために専用のSOCKS5プロキシを利用する:</translation>
</message>
<message>
<source>Hide the icon from the system tray.</source>
<translation>システムトレイのアイコンを隠す</translation>
@@ -1895,6 +1899,10 @@
<source>&amp;Request payment</source>
<translation>支払をリクエストする (&amp;R)</translation>
</message>
<message>
<source>Bech32 addresses (BIP-173) are cheaper to spend from and offer better protection against typos. When unchecked a P2SH wrapped SegWit address will be created, compatible with older wallets.</source>
<translation>Bech32形式(BIP-173を参照)のアドレスを利用するとアドレスからの出金時に安い手数料で済み、また誤入力の可能性を減らすことができます。チェックを外すと、古いウォレットと互換性を保つことができるP2SH形式のセグウィットアドレスが作られます。</translation>
</message>
<message>
<source>Generate Bech32 address</source>
<translation>Bech32形式のアドレスを生成</translation>
@@ -2148,6 +2156,10 @@
<source>Enable Replace-By-Fee</source>
<translation>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>(Replace-By-Fee: BIP-125)</translation>
</message>
<message>
<source>Clear &amp;All</source>
<translation> (&amp;A)</translation>
@@ -2216,6 +2228,14 @@
<source>or</source>
<translation></translation>
</message>
<message>
<source>You can increase the fee later (signals Replace-By-Fee, BIP-125).</source>
<translation>(Replace-By-Feeのシグナル: BIP-125)</translation>
</message>
<message>
<source>Not signalling Replace-By-Fee, BIP-125.</source>
<translation>BIP-125</translation>
</message>
<message>
<source>Confirm send coins</source>
<translation></translation>
@@ -2335,6 +2355,10 @@
<source>S&amp;ubtract fee from amount</source>
<translation> (&amp;U)</translation>
</message>
<message>
<source>Use available balance</source>
<translation>使</translation>
</message>
<message>
<source>Message:</source>
<translation>:</translation>
@@ -2890,6 +2914,10 @@
<source>Other</source>
<translation></translation>
</message>
<message>
<source>Enter address, transaction id, or label to search</source>
<translation>ID</translation>
</message>
<message>
<source>Min amount</source>
<translation></translation>
@@ -3165,6 +3193,10 @@
<source>Accept relayed transactions received from whitelisted peers even when not relaying transactions (default: %d)</source>
<translation>トランザクションの中継を行っていない場合でも、ホワイトリストのピアから受け取った中継トランザクションは受け取るようにする (デフォルト: %d)</translation>
</message>
<message>
<source>Add a node to connect to and attempt to keep the connection open (see the `addnode` RPC command help for more info)</source>
<translation>ネットワークとの接続を開始・維持するためにノードを手動で追加する(addnodeのRPCコマンドヘルプを参照)</translation>
</message>
<message>
<source>Bind to given address and always listen on it. Use [host]:port notation for IPv6</source>
<translation>指定のアドレスへバインドし、その上で常にリッスンします。IPv6 は [ホスト名]:ポート番号 と表記します</translation>
@@ -3173,6 +3205,14 @@
<source>Cannot obtain a lock on data directory %s. %s is probably already running.</source>
<translation>データ ディレクトリ %s のロックを取得することができません。おそらく %s は実行中です。</translation>
</message>
<message>
<source>Cannot provide specific connections and have addrman find outgoing connections at the same.</source>
<translation>特定の接続が利用できず、またaddrmanは外向き接続を見つけられませんでした。</translation>
</message>
<message>
<source>Connect only to the specified node(s); -connect=0 disables automatic connections (the rules for this peer are the same as for -addnode)</source>
<translation>特定のノードにのみ接続します: -connect=0オプションで自動接続を無効化します(このノードに対する接続ルールは-addnodeオプションで指定されるものと同様です)。</translation>
</message>
<message>
<source>Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup</source>
<translation>ウォレットの全トランザクションを削除し、これらを-rescanオプションを用いることで起動時にブロックチェインのデータのみからリカバリします。</translation>
@@ -3362,6 +3402,10 @@
<source>Enable transaction replacement in the memory pool (default: %u)</source>
<translation> (: %u)</translation>
</message>
<message>
<source>Error creating %s: You can't create non-HD wallets with this version.</source>
<translation>%sの作成に失敗しました。このバージョンではHDウォレット以外を作成することはできません。</translation>
</message>
<message>
<source>Error initializing block database</source>
<translation>ブロック データベースの初期化中にエラー</translation>
@@ -3398,6 +3442,10 @@
<source>Failed to listen on any port. Use -listen=0 if you want this.</source>
<translation>ポートのリッスンに失敗しました。必要であれば -listen=0 を使用してください。</translation>
</message>
<message>
<source>Failed to rescan the wallet during initialization</source>
<translation>初期化の途中でウォレットの再スキャンに失敗しました</translation>
</message>
<message>
<source>Importing...</source>
<translation>インポートしています……</translation>
@@ -3478,6 +3526,10 @@
<source>Rewinding blocks...</source>
<translation>ブロックを巻き戻しています...</translation>
</message>
<message>
<source>Send transactions with full-RBF opt-in enabled (RPC only, default: %u)</source>
<translation>手数料上乗せ(RBF)がオプトイン形式で有効化されているときRBFを利用してトランザクションを送信する (RPCコマンドのみ。初期値: %u)</translation>
</message>
<message>
<source>Set database cache size in megabytes (%d to %d, default: %d)</source>
<translation>データベースのキャッシュサイズをメガバイトで設定 (%dから%d。初期値: %d)</translation>
@@ -3726,6 +3778,10 @@
<source>Unable to bind to %s on this computer (bind returned error %s)</source>
<translation> %s ( %s)</translation>
</message>
<message>
<source>Unable to generate initial keys</source>
<translation></translation>
</message>
<message>
<source>Upgrade wallet to latest format on startup</source>
<translation></translation>
@@ -3738,6 +3794,10 @@
<source>Verifying wallet(s)...</source>
<translation>...</translation>
</message>
<message>
<source>Wallet %s resides outside wallet directory %s</source>
<translation>%s%s</translation>
</message>
<message>
<source>Warning</source>
<translation></translation>
@@ -3826,6 +3886,10 @@
<source>Output debugging information (default: %u, supplying &lt;category&gt; is optional)</source>
<translation>デバッグ情報を出力する (初期値: %u, &lt;category&gt; の指定は任意です)</translation>
</message>
<message>
<source>Set maximum BIP141 block weight to this * 4. Deprecated, use blockmaxweight</source>
<translation>BIP141:SegWitの最大ブロックサイズはこれを4倍したものとします。注意: 非推奨です。代わりにblockmaxweightを使用してください。</translation>
</message>
<message>
<source>Sets the serialization of raw transaction or block hex returned in non-verbose mode, non-segwit(0) or segwit(1) (default: %d)</source>
<translation>非冗長モードで返却する生トランザクションやブロックの16進数表現のシリアライゼーションフォーマットを非 segwit (0) または segwit (1) のものに設定する (デフォルト: %d)</translation>

View File

@@ -3206,6 +3206,14 @@
<source>Cannot obtain a lock on data directory %s. %s is probably already running.</source>
<translation>%s 데이터 디렉토리에 락을 걸 수 없었습니다. %s가 이미 실행 중인 것으로 보입니다.</translation>
</message>
<message>
<source>Cannot provide specific connections and have addrman find outgoing connections at the same.</source>
<translation>특정 연결을 제공 할 수없고 addrman이 나가는 연결을 찾을 수 없습니다.</translation>
</message>
<message>
<source>Connect only to the specified node(s); -connect=0 disables automatic connections (the rules for this peer are the same as for -addnode)</source>
<translation>지정된 노드에만 연결하십시오. -connect = 0은 자동 연결을 비활성화합니다 (이 피어의 규칙은 -addnode의 규칙과 동일합니다)</translation>
</message>
<message>
<source>Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup</source>
<translation>시작시 모든 지갑 거래를 삭제하고 -rescan을 통하여 블록체인만 복구합니다.</translation>
@@ -3214,6 +3222,10 @@
<source>Error reading %s! All keys read correctly, but transaction data or address book entries might be missing or incorrect.</source>
<translation>%s 불러오기 오류: 주소 키는 모두 정확하게 로드되었으나 거래 데이터와 주소록 필드에서 누락이나 오류가 존재할 수 있습니다.</translation>
</message>
<message>
<source>Exclude debugging information for a category. Can be used in conjunction with -debug=1 to output debug logs for all categories except one or more specified categories.</source>
<translation>카테고리에 대한 디버깅 정보를 제외하십시오. -debug = 1과 함께 사용하여 하나 이상의 지정된 범주를 제외한 모든 범주의 디버그 로그를 출력 할 수 있습니다.</translation>
</message>
<message>
<source>Execute command when a wallet transaction changes (%s in cmd is replaced by TxID)</source>
<translation>지갑 거래가 바뀌면 명령을 실행합니다.(%s 안의 명령어가 TxID로 바뀝니다)</translation>
@@ -3238,6 +3250,10 @@
<source>Please contribute if you find %s useful. Visit %s for further information about the software.</source>
<translation>%s가 . %s를 .</translation>
</message>
<message>
<source>Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect used)</source>
<translation>DNS lookup를 (기본값: 1 -connect )</translation>
</message>
<message>
<source>Set lowest fee rate (in %s/kB) for transactions to be included in block creation. (default: %s)</source>
<translation> (%s/kB ). (: %s)</translation>
@@ -3254,6 +3270,10 @@
<source>This is a pre-release test build - use at your own risk - do not use for mining or merchant applications</source>
<translation> . - - </translation>
</message>
<message>
<source>This is the transaction fee you may discard if change is smaller than dust at this level</source>
<translation> .</translation>
</message>
<message>
<source>Unable to replay blocks. You will need to rebuild the database using -reindex-chainstate.</source>
<translation> . -reindex-chainstate를 .</translation>
@@ -3410,6 +3430,10 @@
<source>Failed to listen on any port. Use -listen=0 if you want this.</source>
<translation> . =0 </translation>
</message>
<message>
<source>Failed to rescan the wallet during initialization</source>
<translation> </translation>
</message>
<message>
<source>Importing...</source>
<translation> ...</translation>
@@ -3490,6 +3514,10 @@
<source>Rewinding blocks...</source>
<translation> ...</translation>
</message>
<message>
<source>Send transactions with full-RBF opt-in enabled (RPC only, default: %u)</source>
<translation>full-RBF opt-in이 . (: %u)</translation>
</message>
<message>
<source>Set database cache size in megabytes (%d to %d, default: %d)</source>
<translation> (%d %d, : %d)</translation>
@@ -3706,6 +3734,18 @@
<source>Signing transaction failed</source>
<translation> .</translation>
</message>
<message>
<source>Specified -walletdir "%s" does not exist</source>
<translation>애러: 지정한 "%s" .</translation>
</message>
<message>
<source>Specified -walletdir "%s" is a relative path</source>
<translation>애러: 지정한 "%s" .</translation>
</message>
<message>
<source>Specified -walletdir "%s" is not a directory</source>
<translation>애러: 지정한 "%s" .</translation>
</message>
<message>
<source>The transaction amount is too small to pay the fee</source>
<translation> </translation>

View File

@@ -1027,6 +1027,14 @@
<source>Use separate SOCKS&amp;5 proxy to reach peers via Tor hidden services:</source>
<translation>Bruk egen SOCKS&amp;5-proxy for å nå noder via Tor hidden services:</translation>
</message>
<message>
<source>Hide the icon from the system tray.</source>
<translation>Skjul ikonet fra systemkurven.</translation>
</message>
<message>
<source>&amp;Hide tray icon</source>
<translation>&amp;Skjul systemkurvsikon</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>Minimer i stedet for å avslutte applikasjonen når vinduet lukkes. Når dette er valgt, vil applikasjonen avsluttes kun etter at Avslutte er valgt i menyen.</translation>
@@ -1091,6 +1099,14 @@
<source>Map port using &amp;UPnP</source>
<translation>Sett opp port ved hjelp av &amp;UPnP</translation>
</message>
<message>
<source>Accept connections from outside.</source>
<translation>Tillat tilkoblinger fra utsiden</translation>
</message>
<message>
<source>Allow incomin&amp;g connections</source>
<translation>Tillatt innkommend&amp;e tilkoblinger</translation>
</message>
<message>
<source>Connect to the Bitcoin network through a SOCKS5 proxy.</source>
<translation>Koble til Bitcoin-nettverket gjennom en SOCKS5 proxy.</translation>

View File

@@ -131,6 +131,10 @@
<source>Repeat new passphrase</source>
<translation>Repetaţi noua frază de acces</translation>
</message>
<message>
<source>Show password</source>
<translation>Arata parola</translation>
</message>
<message>
<source>Enter the new passphrase to 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>Introduceţi noua parolă a portofelului electronic.&lt;br/&gt; rugăm folosiţi o parolă de&lt;b&gt;minimum 10 caractere aleatoare&lt;/b&gt;, sau &lt;b&gt;minimum 8 cuvinte&lt;/b&gt;.</translation>
@@ -1015,6 +1019,18 @@
<source>Shows if the supplied default SOCKS5 proxy is used to reach peers via this network type.</source>
<translation>Arata daca proxy-ul SOCKS5 furnizat implicit este folosit pentru a gasi parteneri via acest tip de retea.</translation>
</message>
<message>
<source>Use separate SOCKS&amp;5 proxy to reach peers via Tor hidden services:</source>
<translation>Foloseste un proxy SOCKS&amp;5 separat pentru a gasi parteneri via servicii TOR ascunse</translation>
</message>
<message>
<source>Hide the icon from the system tray.</source>
<translation>Ascunde icon-ul din system tray.</translation>
</message>
<message>
<source>&amp;Hide tray icon</source>
<translation>&amp;Ascunde icon-ul din system tray.</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>Minimizează fereastra în locul părăsirii programului în momentul închiderii ferestrei. Cînd acestă opţiune e activă, aplicaţia se va opri doar în momentul selectării comenzii 'Închide aplicaţia' din menu.</translation>
@@ -1079,6 +1095,14 @@
<source>Map port using &amp;UPnP</source>
<translation>Mapare port folosind &amp;UPnP</translation>
</message>
<message>
<source>Accept connections from outside.</source>
<translation>Acceptă conexiuni din exterior</translation>
</message>
<message>
<source>Allow incomin&amp;g connections</source>
<translation>Permite conexiuni de intrar&amp;e</translation>
</message>
<message>
<source>Connect to the Bitcoin network through a SOCKS5 proxy.</source>
<translation>Conectare la reţeaua Bitcoin printr-un proxy SOCKS.</translation>
@@ -1159,6 +1183,10 @@
<source>Whether to show coin control features or not.</source>
<translation>Arată controlul caracteristicilor monedei sau nu.</translation>
</message>
<message>
<source>&amp;Third party transaction URLs</source>
<translation>URL-uri tranzacţii &amp;terţe părţi</translation>
</message>
<message>
<source>&amp;OK</source>
<translation>&amp;OK</translation>
@@ -1772,6 +1800,14 @@
<source>Use up and down arrows to navigate history, and %1 to clear screen.</source>
<translation>Folosiţi săgetile sus şi jos pentru a naviga în istoric şi %1 pentru a curăţa ecranul.</translation>
</message>
<message>
<source>Type %1 for an overview of available commands.</source>
<translation>Tastati %1 pentru o recapitulare a comenzilor disponibile.</translation>
</message>
<message>
<source>For more information on using this console type %1.</source>
<translation>Pentru mai multe informatii despre folosirea acestei console tastati %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>ATENTIONARE: Sunt excroci care instruiesc userii sa introduca aici comenzi, pentru a le fura continutul portofelelor. Nu folositi aceasta consolă fara a intelege pe deplin ramificatiile unei comenzi.</translation>
@@ -1859,6 +1895,14 @@
<source>&amp;Request payment</source>
<translation>&amp;Cerere plată</translation>
</message>
<message>
<source>Bech32 addresses (BIP-173) are cheaper to spend from and offer better protection against typos. When unchecked a P2SH wrapped SegWit address will be created, compatible with older wallets.</source>
<translation>Adresele de tip Bech32 (BIP-173) sunt mai ieftin de folosit si ofera o protectie mai buna impotriva greselilor de tastare. Daca nu este bifat se creaza o adresa SegWit impachetata in P2SH, compatibila cu portofelele mai vechi.</translation>
</message>
<message>
<source>Generate Bech32 address</source>
<translation>Genereaza adresa Bech32</translation>
</message>
<message>
<source>Show the selected request (does the same as double clicking an entry)</source>
<translation>Arată cererea selectată (acelaşi lucru ca şi dublu-clic pe o înregistrare)</translation>
@@ -2104,6 +2148,14 @@
<source>Confirmation time target:</source>
<translation>Timp confirmare tinta:</translation>
</message>
<message>
<source>Enable Replace-By-Fee</source>
<translation>Autorizeaza 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>Cu Replace-By-Fee (BIP-125) se poate creste taxa unei tranzactii dupa ce a fost trimisa. Fara aceasta optiune, o taxa mai mare e posibil sa fie recomandata pentru a compensa riscul crescut de intarziere a tranzactiei.</translation>
</message>
<message>
<source>Clear &amp;All</source>
<translation>Curăţă to&amp;ate</translation>
@@ -2172,6 +2224,14 @@
<source>or</source>
<translation>sau</translation>
</message>
<message>
<source>You can increase the fee later (signals Replace-By-Fee, BIP-125).</source>
<translation>Puteti creste taxa mai tarziu (semnaleaza Replace-By-Fee, BIP-125).</translation>
</message>
<message>
<source>Not signalling Replace-By-Fee, BIP-125.</source>
<translation>Nu se semnalizeaza Replace-By-Fee, BIP-125</translation>
</message>
<message>
<source>Confirm send coins</source>
<translation>Confirmă trimiterea monedelor</translation>
@@ -2291,6 +2351,10 @@
<source>S&amp;ubtract fee from amount</source>
<translation>S&amp;cade taxa din suma</translation>
</message>
<message>
<source>Use available balance</source>
<translation>Folosește balanța disponibilă</translation>
</message>
<message>
<source>Message:</source>
<translation>Mesaj:</translation>
@@ -2842,6 +2906,10 @@
<source>Other</source>
<translation>Altele</translation>
</message>
<message>
<source>Enter address, transaction id, or label to search</source>
<translation>Introduceți adresa, ID-ul tranzacției, sau eticheta pentru a căuta</translation>
</message>
<message>
<source>Min amount</source>
<translation>Suma minimă</translation>
@@ -3117,6 +3185,10 @@
<source>Accept relayed transactions received from whitelisted peers even when not relaying transactions (default: %d)</source>
<translation>Accepta retransmiterea tranzactiilor primite de la parteneri din whitelist chiar si atunci cand nu se retransmit tranzactii (implicit: %d)</translation>
</message>
<message>
<source>Add a node to connect to and attempt to keep the connection open (see the `addnode` RPC command help for more info)</source>
<translation>Adaugă un nod la care te poţi conecta pentru a menţine conexiunea deschisă (vezi ajutorul de comanda RPC 'addnode' pentru mai multe informatii)</translation>
</message>
<message>
<source>Bind to given address and always listen on it. Use [host]:port notation for IPv6</source>
<translation>Ataşaţi adresei date şi ascultaţi totdeauna pe ea. Folosiţi notaţia [host]:port pentru IPv6</translation>

View File

@@ -2157,6 +2157,10 @@
<source>Enable Replace-By-Fee</source>
<translation>Povoliť dodatočné navýšenie poplatku (tzv. „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>S dodatočným navýšením poplatku (BIP-125, tzv. Replace-By-Fee), môžete zvýšiť poplatok aj po odoslaní. Bez toho, by mohol byť navrhnutý väčší transakčný poplatok, aby kompenzoval zvýšené riziko omeškania transakcie.</translation>
</message>
<message>
<source>Clear &amp;All</source>
<translation>&amp;Zmazať všetko</translation>
@@ -3190,6 +3194,10 @@
<source>Accept relayed transactions received from whitelisted peers even when not relaying transactions (default: %d)</source>
<translation>Akceptovať postúpené transakcie od povolených partnerov aj keď normálne nepostupujete transakcie (predvolené: %d)</translation>
</message>
<message>
<source>Add a node to connect to and attempt to keep the connection open (see the `addnode` RPC command help for more info)</source>
<translation>Pridať uzol na pripojenie a pokus o udržanie otvoreného pripojenia (pre viac informácií si pozrite nápovedu pre RPC príkaz "addnode")</translation>
</message>
<message>
<source>Bind to given address and always listen on it. Use [host]:port notation for IPv6</source>
<translation>Spojiť s danou adresou a vždy na nej počúvať. Použite zápis [host]:port pre IPv6</translation>
@@ -3200,7 +3208,11 @@
</message>
<message>
<source>Cannot provide specific connections and have addrman find outgoing connections at the same.</source>
<translation>Nemôžete zadať konkrétne spojenia a zároveň mať nastavený addrman pre hľadanie odchádzajúcich spojení.</translation>
<translation>Nemôžete zadať konkrétne spojenia a zároveň mať nastavený addrman pre hľadanie odchádzajúcich spojení.</translation>
</message>
<message>
<source>Connect only to the specified node(s); -connect=0 disables automatic connections (the rules for this peer are the same as for -addnode)</source>
<translation>Pripojiť sa iba k určenému uzlu(om); -connect=0 zakáže automatické pripojovanie (pravidlá pre tento uzol sú rovnaké ako pre -addnode)</translation>
</message>
<message>
<source>Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup</source>
@@ -3430,6 +3442,10 @@
<source>Failed to listen on any port. Use -listen=0 if you want this.</source>
<translation>Chyba počúvania na ktoromkoľvek porte. Použi -listen=0 ak toto chcete.</translation>
</message>
<message>
<source>Failed to rescan the wallet during initialization</source>
<translation>Počas inicializácie sa nepodarila pre-skenovať peňaženka</translation>
</message>
<message>
<source>Importing...</source>
<translation>Prebieha import ...</translation>

View File

@@ -61,10 +61,34 @@
<source>Receiving addresses</source>
<translation>Imenik naslovov za prejemanje</translation>
</message>
<message>
<source>These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.</source>
<translation>To so vaši Bitcoin naslovi za pošiljanje. Pred pošiljanjem vedno preverite količino in prejemnikov naslov.</translation>
</message>
<message>
<source>These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction.</source>
<translation>To so vaši Bitcoin naslovi za prejemanje. Priporočeno je, da za vsako transakcijo uporabite nov naslov.</translation>
</message>
<message>
<source>&amp;Copy Address</source>
<translation>&amp;Kopiraj naslov</translation>
</message>
<message>
<source>Copy &amp;Label</source>
<translation>Kopiraj &amp;oznako</translation>
</message>
<message>
<source>&amp;Edit</source>
<translation>&amp;Uredi</translation>
</message>
<message>
<source>Export Address List</source>
<translation>Izvozi seznam naslovov</translation>
</message>
<message>
<source>Comma separated file (*.csv)</source>
<translation>Podatki ločenimi z vejico (*.csv)</translation>
</message>
<message>
<source>Exporting Failed</source>
<translation>Podatkov ni bilo mogoče izvoziti.</translation>
@@ -103,14 +127,50 @@
<source>Repeat new passphrase</source>
<translation>Ponovite novo geslo</translation>
</message>
<message>
<source>Show password</source>
<translation>Pokaži geslo</translation>
</message>
<message>
<source>Enter the new passphrase to 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>Vnesite novo geslo za dostop do denarnice. Prosimo, da uporabite geslo sestavljeno iz &lt;b&gt;desetih ali več&lt;/b&gt; naključnih znakov ali &lt;b&gt;osmih ali večih&lt;/b&gt; besed.</translation>
</message>
<message>
<source>Encrypt wallet</source>
<translation>Šifriraj denarnico</translation>
</message>
<message>
<source>This operation needs your wallet passphrase to unlock the wallet.</source>
<translation>To dejanje zahteva geslo za odklepanje vaše denarnice.</translation>
</message>
<message>
<source>Unlock wallet</source>
<translation>Odkleni denarnico</translation>
</message>
<message>
<source>This operation needs your wallet passphrase to decrypt the wallet.</source>
<translation>To dejanje zahteva geslo za dešifriranje vaše denarnice.</translation>
</message>
<message>
<source>Decrypt wallet</source>
<translation>Odšifriraj denarnico</translation>
</message>
<message>
<source>Change passphrase</source>
<translation>Spremeni geslo</translation>
</message>
<message>
<source>Enter the old passphrase and new passphrase to the wallet.</source>
<translation>Vnesite staro in novo geslo denarnice.</translation>
</message>
<message>
<source>Confirm wallet encryption</source>
<translation>Potrdi šifriranje denarnice</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>Opozorilo: V primeru izgube gesla šifrirane denarnice, boste &lt;b&gt;IZGUBILI VSE SVOJE BITCOINE&lt;/b&gt;!</translation>
</message>
</context>
<context>
<name>BanTableModel</name>
@@ -1594,6 +1654,10 @@
</context>
<context>
<name>TransactionView</name>
<message>
<source>Comma separated file (*.csv)</source>
<translation>Podatki ločenimi z vejico (*.csv)</translation>
</message>
<message>
<source>Label</source>
<translation>Oznaka</translation>

View File

@@ -37,6 +37,14 @@
<source>Choose the address to send coins to</source>
<translation>Zgjidh adresen ku do te dergoni monedhat</translation>
</message>
<message>
<source>Choose the address to receive coins with</source>
<translation>Zgjidh adresën ku do merrni monedhat</translation>
</message>
<message>
<source>C&amp;hoose</source>
<translation>Zgjidh</translation>
</message>
<message>
<source>Sending addresses</source>
<translation>Duke derguar adresen</translation>
@@ -101,15 +109,19 @@
<name>AskPassphraseDialog</name>
<message>
<source>Enter passphrase</source>
<translation>Futni frazkalimin</translation>
<translation>Futni fjalëkalimin</translation>
</message>
<message>
<source>New passphrase</source>
<translation>Frazkalim i ri</translation>
<translation>Fjalëkalimi i ri</translation>
</message>
<message>
<source>Repeat new passphrase</source>
<translation>Përsërisni frazkalimin e ri</translation>
<translation>Përsërisni fjalëkalimin e ri</translation>
</message>
<message>
<source>Show password</source>
<translation>Trego fjalëkalimin</translation>
</message>
<message>
<source>Encrypt wallet</source>
@@ -117,11 +129,11 @@
</message>
<message>
<source>This operation needs your wallet passphrase to unlock the wallet.</source>
<translation>Ky veprim ka nevojë per frazkalimin e portofolit tuaj ç'kyç portofolin.</translation>
<translation>Ky veprim ka nevojë per fjalëkalimin e portofolit tuaj hapë portofolin.</translation>
</message>
<message>
<source>Unlock wallet</source>
<translation>ç'kyç portofolin.</translation>
<translation>Hap portofolin.</translation>
</message>
<message>
<source>This operation needs your wallet passphrase to decrypt the wallet.</source>
@@ -133,7 +145,11 @@
</message>
<message>
<source>Change passphrase</source>
<translation>Ndrysho frazkalimin</translation>
<translation>Ndrysho fjalëkalimin</translation>
</message>
<message>
<source>Enter the old passphrase and new passphrase to the wallet.</source>
<translation>Fusni fjalëkalimin e vjetër dhe fjalëkalimin e ri hapni portofolin.</translation>
</message>
<message>
<source>Confirm wallet encryption</source>

View File

@@ -132,6 +132,10 @@ Var vänlig och försök igen.</translation>
<source>Repeat new passphrase</source>
<translation>Upprepa nytt lösenord</translation>
</message>
<message>
<source>Show password</source>
<translation>Visa lösenord</translation>
</message>
<message>
<source>Enter the new passphrase to 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>Ange plånbokens nya lösenord. &lt;br/&gt; Använd ett lösenord &lt;b&gt;tio eller fler slumpmässiga tecken,&lt;/b&gt; eller &lt;b&gt;åtta eller fler ord.&lt;/b&gt;.</translation>

View File

@@ -11,7 +11,7 @@
</message>
<message>
<source>&amp;New</source>
<translation></translation>
<translation>(&amp;N)</translation>
</message>
<message>
<source>Copy the currently selected address to the system clipboard</source>
@@ -19,11 +19,11 @@
</message>
<message>
<source>&amp;Copy</source>
<translation></translation>
<translation>(&amp;C)</translation>
</message>
<message>
<source>C&amp;lose</source>
<translation></translation>
<translation>(&amp;L)</translation>
</message>
<message>
<source>Delete the currently selected address from the list</source>
@@ -35,11 +35,11 @@
</message>
<message>
<source>&amp;Export</source>
<translation></translation>
<translation>(&amp;E)</translation>
</message>
<message>
<source>&amp;Delete</source>
<translation></translation>
<translation>(&amp;D)</translation>
</message>
<message>
<source>Choose the address to send coins to</source>
@@ -51,7 +51,7 @@
</message>
<message>
<source>C&amp;hoose</source>
<translation></translation>
<translation>(&amp;H)</translation>
</message>
<message>
<source>Sending addresses</source>
@@ -71,15 +71,15 @@
</message>
<message>
<source>&amp;Copy Address</source>
<translation></translation>
<translation>(&amp;C)</translation>
</message>
<message>
<source>Copy &amp;Label</source>
<translation></translation>
<translation>(&amp;L)</translation>
</message>
<message>
<source>&amp;Edit</source>
<translation></translation>
<translation>(&amp;E)</translation>
</message>
<message>
<source>Export Address List</source>
@@ -239,7 +239,7 @@
<name>BitcoinGUI</name>
<message>
<source>Sign &amp;message...</source>
<translation>...</translation>
<translation>(&amp;M)...</translation>
</message>
<message>
<source>Synchronizing with network...</source>
@@ -247,7 +247,7 @@
</message>
<message>
<source>&amp;Overview</source>
<translation></translation>
<translation>(&amp;O)</translation>
</message>
<message>
<source>Node</source>
@@ -259,7 +259,7 @@
</message>
<message>
<source>&amp;Transactions</source>
<translation></translation>
<translation>(&amp;T)</translation>
</message>
<message>
<source>Browse transaction history</source>
@@ -267,7 +267,7 @@
</message>
<message>
<source>E&amp;xit</source>
<translation></translation>
<translation>(&amp;X)</translation>
</message>
<message>
<source>Quit application</source>
@@ -275,7 +275,7 @@
</message>
<message>
<source>&amp;About %1</source>
<translation>%1</translation>
<translation>%1(&amp;A)</translation>
</message>
<message>
<source>Show information about %1</source>
@@ -291,7 +291,7 @@
</message>
<message>
<source>&amp;Options...</source>
<translation>...</translation>
<translation>(&amp;O)...</translation>
</message>
<message>
<source>Modify configuration options for %1</source>
@@ -299,27 +299,27 @@
</message>
<message>
<source>&amp;Encrypt Wallet...</source>
<translation>...</translation>
<translation>(&amp;E)...</translation>
</message>
<message>
<source>&amp;Backup Wallet...</source>
<translation>...</translation>
<translation>(&amp;B)...</translation>
</message>
<message>
<source>&amp;Change Passphrase...</source>
<translation>...</translation>
<translation>(&amp;C)...</translation>
</message>
<message>
<source>&amp;Sending addresses...</source>
<translation>...</translation>
<translation>(&amp;S)...</translation>
</message>
<message>
<source>&amp;Receiving addresses...</source>
<translation>...</translation>
<translation>(&amp;R)...</translation>
</message>
<message>
<source>Open &amp;URI...</source>
<translation> URI...</translation>
<translation> &amp;URI...</translation>
</message>
<message>
<source>Click to disable network activity.</source>
@@ -355,7 +355,7 @@
</message>
<message>
<source>&amp;Debug window</source>
<translation></translation>
<translation>(&amp;D)</translation>
</message>
<message>
<source>Open debugging and diagnostic console</source>
@@ -363,7 +363,7 @@
</message>
<message>
<source>&amp;Verify message...</source>
<translation>...</translation>
<translation>(&amp;V)...</translation>
</message>
<message>
<source>Bitcoin</source>
@@ -375,15 +375,15 @@
</message>
<message>
<source>&amp;Send</source>
<translation></translation>
<translation>(&amp;S)</translation>
</message>
<message>
<source>&amp;Receive</source>
<translation></translation>
<translation>(&amp;R)</translation>
</message>
<message>
<source>&amp;Show / Hide</source>
<translation></translation>
<translation>(&amp;S)</translation>
</message>
<message>
<source>Show or hide the main Window</source>
@@ -403,15 +403,15 @@
</message>
<message>
<source>&amp;File</source>
<translation></translation>
<translation>(&amp;F)</translation>
</message>
<message>
<source>&amp;Settings</source>
<translation></translation>
<translation>(&amp;S)</translation>
</message>
<message>
<source>&amp;Help</source>
<translation></translation>
<translation>(&amp;H)</translation>
</message>
<message>
<source>Tabs toolbar</source>
@@ -435,7 +435,7 @@
</message>
<message>
<source>&amp;Command-line options</source>
<translation></translation>
<translation>(&amp;C)</translation>
</message>
<message numerus="yes">
<source>%n active connection(s) to Bitcoin network</source>
@@ -715,7 +715,7 @@
</message>
<message>
<source>&amp;Label</source>
<translation></translation>
<translation>(&amp;L)</translation>
</message>
<message>
<source>The label associated with this address list entry</source>
@@ -727,7 +727,7 @@
</message>
<message>
<source>&amp;Address</source>
<translation></translation>
<translation>(&amp;A)</translation>
</message>
<message>
<source>New receiving address</source>
@@ -993,7 +993,7 @@
</message>
<message>
<source>&amp;Main</source>
<translation>主要</translation>
<translation>主要(&amp;M)</translation>
</message>
<message>
<source>Automatically start %1 after logging in to the system.</source>
@@ -1001,11 +1001,11 @@
</message>
<message>
<source>&amp;Start %1 on system login</source>
<translation>系統登入時啟動 %1</translation>
<translation>系統登入時啟動 %1 (&amp;S)</translation>
</message>
<message>
<source>Size of &amp;database cache</source>
<translation>資料庫快取大小</translation>
<translation>資料庫快取大小(&amp;D)</translation>
</message>
<message>
<source>MB</source>
@@ -1013,7 +1013,7 @@
</message>
<message>
<source>Number of script &amp;verification threads</source>
<translation>指令碼驗證執行緒數目</translation>
<translation>指令碼驗證執行緒數目(&amp;V)</translation>
</message>
<message>
<source>IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1)</source>
@@ -1025,7 +1025,7 @@
</message>
<message>
<source>Use separate SOCKS&amp;5 proxy to reach peers via Tor hidden services:</source>
<translation>透過另外的 SOCKS5 代理伺服器來連線到 Bitcoin 網路中的 Tor 隱藏服務</translation>
<translation>透過另外的 SOCKS&amp;5 代理伺服器來連線到 Bitcoin 網路中的 Tor 隱藏服務:</translation>
</message>
<message>
<source>Hide the icon from the system tray.</source>
@@ -1033,7 +1033,7 @@
</message>
<message>
<source>&amp;Hide tray icon</source>
<translation>隱藏通知區圖示</translation>
<translation>隱藏通知區圖示(&amp;H)</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>
@@ -1061,11 +1061,11 @@
</message>
<message>
<source>&amp;Reset Options</source>
<translation>重設選項</translation>
<translation>重設選項(&amp;R)</translation>
</message>
<message>
<source>&amp;Network</source>
<translation>網路</translation>
<translation>網路(&amp;N)</translation>
</message>
<message>
<source>(0 = auto, &lt;0 = leave that many cores free)</source>
@@ -1073,7 +1073,7 @@
</message>
<message>
<source>W&amp;allet</source>
<translation>錢包</translation>
<translation>錢包(&amp;A)</translation>
</message>
<message>
<source>Expert</source>
@@ -1081,7 +1081,7 @@
</message>
<message>
<source>Enable coin &amp;control features</source>
<translation>開啟錢幣控制功能</translation>
<translation>開啟錢幣控制功能(&amp;C)</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>
@@ -1089,7 +1089,7 @@
</message>
<message>
<source>&amp;Spend unconfirmed change</source>
<translation>可以花還沒確認的零錢</translation>
<translation>可以花還沒確認的零錢(&amp;S)</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>
@@ -1105,7 +1105,7 @@
</message>
<message>
<source>Allow incomin&amp;g connections</source>
<translation>接受外來連線</translation>
<translation>接受外來連線(&amp;G)</translation>
</message>
<message>
<source>Connect to the Bitcoin network through a SOCKS5 proxy.</source>
@@ -1113,15 +1113,15 @@
</message>
<message>
<source>&amp;Connect through SOCKS5 proxy (default proxy):</source>
<translation>透過 SOCKS5 代理伺服器連線(預設代理伺服器):</translation>
<translation>透過 SOCKS5 代理伺服器連線(預設代理伺服器 &amp;C):</translation>
</message>
<message>
<source>Proxy &amp;IP:</source>
<translation>代理位址:</translation>
<translation>代理位址(&amp;I):</translation>
</message>
<message>
<source>&amp;Port:</source>
<translation>埠號:</translation>
<translation>埠號(&amp;P):</translation>
</message>
<message>
<source>Port of the proxy (e.g. 9050)</source>
@@ -1149,7 +1149,7 @@
</message>
<message>
<source>&amp;Window</source>
<translation>視窗</translation>
<translation>視窗(&amp;W)</translation>
</message>
<message>
<source>Show only a tray icon after minimizing the window.</source>
@@ -1157,19 +1157,19 @@
</message>
<message>
<source>&amp;Minimize to the tray instead of the taskbar</source>
<translation>縮到最小到通知區而不是工作列</translation>
<translation>縮到最小到通知區而不是工作列(&amp;M)</translation>
</message>
<message>
<source>M&amp;inimize on close</source>
<translation>關閉時縮到最小</translation>
<translation>關閉時縮到最小(&amp;I)</translation>
</message>
<message>
<source>&amp;Display</source>
<translation>顯示</translation>
<translation>顯示(&amp;D)</translation>
</message>
<message>
<source>User Interface &amp;language:</source>
<translation>使用界面語言:</translation>
<translation>使用界面語言(&amp;L):</translation>
</message>
<message>
<source>The user interface language can be set here. This setting will take effect after restarting %1.</source>
@@ -1177,7 +1177,7 @@
</message>
<message>
<source>&amp;Unit to show amounts in:</source>
<translation>金額顯示單位:</translation>
<translation>金額顯示單位(&amp;U):</translation>
</message>
<message>
<source>Choose the default subdivision unit to show in the interface and when sending coins.</source>
@@ -1189,15 +1189,15 @@
</message>
<message>
<source>&amp;Third party transaction URLs</source>
<translation>第三方交易網址連結</translation>
<translation>第三方交易網址連結(&amp;T)</translation>
</message>
<message>
<source>&amp;OK</source>
<translation>好</translation>
<translation>好(&amp;O)</translation>
</message>
<message>
<source>&amp;Cancel</source>
<translation>取消</translation>
<translation>取消(&amp;C)</translation>
</message>
<message>
<source>default</source>
@@ -1547,11 +1547,11 @@
<name>QRImageWidget</name>
<message>
<source>&amp;Save Image...</source>
<translation>儲存圖片...</translation>
<translation>儲存圖片(&amp;S)...</translation>
</message>
<message>
<source>&amp;Copy Image</source>
<translation>複製圖片</translation>
<translation>複製圖片(&amp;C)</translation>
</message>
<message>
<source>Save QR Code</source>
@@ -1574,7 +1574,7 @@
</message>
<message>
<source>&amp;Information</source>
<translation>資訊</translation>
<translation>資訊(&amp;I)</translation>
</message>
<message>
<source>Debug window</source>
@@ -1630,7 +1630,7 @@
</message>
<message>
<source>&amp;Reset</source>
<translation>重置</translation>
<translation>重置(&amp;R)</translation>
</message>
<message>
<source>Received</source>
@@ -1642,7 +1642,7 @@
</message>
<message>
<source>&amp;Peers</source>
<translation>節點</translation>
<translation>節點(&amp;P)</translation>
</message>
<message>
<source>Banned peers</source>
@@ -1738,15 +1738,15 @@
</message>
<message>
<source>&amp;Open</source>
<translation>開啓</translation>
<translation>開啓(&amp;O)</translation>
</message>
<message>
<source>&amp;Console</source>
<translation>主控台</translation>
<translation>主控台(&amp;C)</translation>
</message>
<message>
<source>&amp;Network Traffic</source>
<translation>網路流量</translation>
<translation>網路流量(&amp;N)</translation>
</message>
<message>
<source>Totals</source>
@@ -1770,23 +1770,23 @@
</message>
<message>
<source>1 &amp;hour</source>
<translation>1 小時</translation>
<translation>1 小時(&amp;H)</translation>
</message>
<message>
<source>1 &amp;day</source>
<translation>1 天</translation>
<translation>1 天(&amp;D)</translation>
</message>
<message>
<source>1 &amp;week</source>
<translation>1 星期</translation>
<translation>1 星期(&amp;W)</translation>
</message>
<message>
<source>1 &amp;year</source>
<translation>1 年</translation>
<translation>1 年(&amp;Y)</translation>
</message>
<message>
<source>&amp;Disconnect</source>
<translation>斷線</translation>
<translation>斷線(&amp;D)</translation>
</message>
<message>
<source>Ban for</source>
@@ -1794,7 +1794,7 @@
</message>
<message>
<source>&amp;Unban</source>
<translation>連線解禁</translation>
<translation>連線解禁(&amp;U)</translation>
</message>
<message>
<source>Welcome to the %1 RPC console.</source>
@@ -1857,15 +1857,15 @@
<name>ReceiveCoinsDialog</name>
<message>
<source>&amp;Amount:</source>
<translation>金額:</translation>
<translation>金額(&amp;A):</translation>
</message>
<message>
<source>&amp;Label:</source>
<translation>標記:</translation>
<translation>標記(&amp;L):</translation>
</message>
<message>
<source>&amp;Message:</source>
<translation>訊息:</translation>
<translation>訊息(&amp;M):</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>
@@ -1897,7 +1897,7 @@
</message>
<message>
<source>&amp;Request payment</source>
<translation>要求付款</translation>
<translation>要求付款(&amp;R)</translation>
</message>
<message>
<source>Bech32 addresses (BIP-173) are cheaper to spend from and offer better protection against typos. When unchecked a P2SH wrapped SegWit address will be created, compatible with older wallets.</source>
@@ -1948,15 +1948,15 @@
</message>
<message>
<source>Copy &amp;URI</source>
<translation>複製 URI</translation>
<translation>複製 &amp;URI</translation>
</message>
<message>
<source>Copy &amp;Address</source>
<translation>複製位址</translation>
<translation>複製位址(&amp;A)</translation>
</message>
<message>
<source>&amp;Save Image...</source>
<translation>儲存圖片...</translation>
<translation>儲存圖片(&amp;S)...</translation>
</message>
<message>
<source>Request payment to %1</source>
@@ -2138,7 +2138,7 @@
</message>
<message>
<source>Add &amp;Recipient</source>
<translation>增加收款人</translation>
<translation>增加收款人(&amp;R)</translation>
</message>
<message>
<source>Clear all fields of the form.</source>
@@ -2162,7 +2162,7 @@
</message>
<message>
<source>Clear &amp;All</source>
<translation></translation>
<translation>(&amp;A)</translation>
</message>
<message>
<source>Balance:</source>
@@ -2174,7 +2174,7 @@
</message>
<message>
<source>S&amp;end</source>
<translation></translation>
<translation>(&amp;E)</translation>
</message>
<message>
<source>Copy quantity</source>
@@ -2305,15 +2305,15 @@
<name>SendCoinsEntry</name>
<message>
<source>A&amp;mount:</source>
<translation>:</translation>
<translation>(&amp;M):</translation>
</message>
<message>
<source>Pay &amp;To:</source>
<translation>:</translation>
<translation>(&amp;T):</translation>
</message>
<message>
<source>&amp;Label:</source>
<translation>:</translation>
<translation>(&amp;L):</translation>
</message>
<message>
<source>Choose previously used address</source>
@@ -2349,7 +2349,7 @@
</message>
<message>
<source>S&amp;ubtract fee from amount</source>
<translation></translation>
<translation>(&amp;U)</translation>
</message>
<message>
<source>Use available balance</source>
@@ -2414,7 +2414,7 @@
</message>
<message>
<source>&amp;Sign Message</source>
<translation></translation>
<translation>(&amp;S)</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>
@@ -2458,7 +2458,7 @@
</message>
<message>
<source>Sign &amp;Message</source>
<translation></translation>
<translation>(&amp;M)</translation>
</message>
<message>
<source>Reset all sign message fields</source>
@@ -2466,11 +2466,11 @@
</message>
<message>
<source>Clear &amp;All</source>
<translation></translation>
<translation>(&amp;A)</translation>
</message>
<message>
<source>&amp;Verify Message</source>
<translation></translation>
<translation>(&amp;V)</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>
@@ -2486,7 +2486,7 @@
</message>
<message>
<source>Verify &amp;Message</source>
<translation>驗證訊息</translation>
<translation>驗證訊息(&amp;M)</translation>
</message>
<message>
<source>Reset all verify message fields</source>
@@ -3080,7 +3080,7 @@
<name>WalletView</name>
<message>
<source>&amp;Export</source>
<translation>匯出</translation>
<translation>匯出(&amp;E)</translation>
</message>
<message>
<source>Export the data in the current tab to a file</source>

View File

@@ -256,7 +256,7 @@ void SendCoinsDialog::on_sendButton_clicked()
// Always use a CCoinControl instance, use the CoinControlDialog instance if CoinControl has been enabled
CCoinControl ctrl;
if (model->getOptionsModel()->getCoinControlFeatures())
ctrl = *CoinControlDialog::coinControl;
ctrl = *CoinControlDialog::coinControl();
updateCoinControlState(ctrl);
@@ -367,7 +367,7 @@ void SendCoinsDialog::on_sendButton_clicked()
if (sendStatus.status == WalletModel::OK)
{
accept();
CoinControlDialog::coinControl->UnSelectAll();
CoinControlDialog::coinControl()->UnSelectAll();
coinControlUpdateLabels();
}
fNewRecipientAllowed = true;
@@ -604,7 +604,7 @@ void SendCoinsDialog::useAvailableBalance(SendCoinsEntry* entry)
// Get CCoinControl instance if CoinControl is enabled or create a new one.
CCoinControl coin_control;
if (model->getOptionsModel()->getCoinControlFeatures()) {
coin_control = *CoinControlDialog::coinControl;
coin_control = *CoinControlDialog::coinControl();
}
// Calculate available amount to send.
@@ -754,7 +754,7 @@ void SendCoinsDialog::coinControlFeatureChanged(bool checked)
ui->frameCoinControl->setVisible(checked);
if (!checked && model) // coin control features disabled
CoinControlDialog::coinControl->SetNull();
CoinControlDialog::coinControl()->SetNull();
coinControlUpdateLabels();
}
@@ -773,7 +773,7 @@ void SendCoinsDialog::coinControlChangeChecked(int state)
{
if (state == Qt::Unchecked)
{
CoinControlDialog::coinControl->destChange = CNoDestination();
CoinControlDialog::coinControl()->destChange = CNoDestination();
ui->labelCoinControlChangeLabel->clear();
}
else
@@ -789,7 +789,7 @@ void SendCoinsDialog::coinControlChangeEdited(const QString& text)
if (model && model->getAddressTableModel())
{
// Default to no change address until verified
CoinControlDialog::coinControl->destChange = CNoDestination();
CoinControlDialog::coinControl()->destChange = CNoDestination();
ui->labelCoinControlChangeLabel->setStyleSheet("QLabel{color:red;}");
const CTxDestination dest = DecodeDestination(text.toStdString());
@@ -812,7 +812,7 @@ void SendCoinsDialog::coinControlChangeEdited(const QString& text)
QMessageBox::Yes | QMessageBox::Cancel, QMessageBox::Cancel);
if(btnRetVal == QMessageBox::Yes)
CoinControlDialog::coinControl->destChange = dest;
CoinControlDialog::coinControl()->destChange = dest;
else
{
ui->lineEditCoinControlChange->setText("");
@@ -831,7 +831,7 @@ void SendCoinsDialog::coinControlChangeEdited(const QString& text)
else
ui->labelCoinControlChangeLabel->setText(tr("(no label)"));
CoinControlDialog::coinControl->destChange = dest;
CoinControlDialog::coinControl()->destChange = dest;
}
}
}
@@ -843,7 +843,7 @@ void SendCoinsDialog::coinControlUpdateLabels()
if (!model || !model->getOptionsModel())
return;
updateCoinControlState(*CoinControlDialog::coinControl);
updateCoinControlState(*CoinControlDialog::coinControl());
// set pay amounts
CoinControlDialog::payAmounts.clear();
@@ -861,7 +861,7 @@ void SendCoinsDialog::coinControlUpdateLabels()
}
}
if (CoinControlDialog::coinControl->HasSelected())
if (CoinControlDialog::coinControl()->HasSelected())
{
// actual coin control calculation
CoinControlDialog::updateLabels(model, this);

View File

@@ -547,8 +547,10 @@ static bool AcceptToMemoryPoolWorker(const CChainParams& chainparams, CTxMemPool
const CTransaction& tx = *ptx;
const uint256 hash = tx.GetHash();
AssertLockHeld(cs_main);
if (pfMissingInputs)
LOCK(pool.cs); // mempool "read lock" (held through GetMainSignals().TransactionAddedToMempool())
if (pfMissingInputs) {
*pfMissingInputs = false;
}
if (!CheckTransaction(tx, state))
return false; // state filled in by CheckTransaction
@@ -581,8 +583,6 @@ static bool AcceptToMemoryPoolWorker(const CChainParams& chainparams, CTxMemPool
// Check for conflicts with in-memory transactions
std::set<uint256> setConflicts;
{
LOCK(pool.cs); // protect pool.mapNextTx
for (const CTxIn &txin : tx.vin)
{
auto itConflicting = pool.mapNextTx.find(txin.prevout);
@@ -623,15 +623,12 @@ static bool AcceptToMemoryPoolWorker(const CChainParams& chainparams, CTxMemPool
}
}
}
}
{
CCoinsView dummy;
CCoinsViewCache view(&dummy);
LockPoints lp;
{
LOCK(pool.cs);
CCoinsViewMemPool viewMemPool(pcoinsTip.get(), pool);
view.SetBackend(viewMemPool);
@@ -670,8 +667,6 @@ static bool AcceptToMemoryPoolWorker(const CChainParams& chainparams, CTxMemPool
if (!CheckSequenceLocks(tx, STANDARD_LOCKTIME_VERIFY_FLAGS, &lp))
return state.DoS(0, false, REJECT_NONSTANDARD, "non-BIP68-final");
} // end LOCK(pool.cs)
CAmount nFees = 0;
if (!Consensus::CheckTxInputs(tx, state, view, GetSpendHeight(view), nFees)) {
return error("%s: Consensus::CheckTxInputs: %s, %s", __func__, tx.GetHash().ToString(), FormatStateMessage(state));
@@ -768,7 +763,6 @@ static bool AcceptToMemoryPoolWorker(const CChainParams& chainparams, CTxMemPool
// If we don't hold the lock allConflicting might be incomplete; the
// subsequent RemoveStaged() and addUnchecked() calls don't guarantee
// mempool consistency for us.
LOCK(pool.cs);
const bool fReplacementTransaction = setConflicts.size();
if (fReplacementTransaction)
{
@@ -2581,9 +2575,6 @@ bool CChainState::ActivateBestChain(CValidationState &state, const CChainParams&
SyncWithValidationInterfaceQueue();
}
if (ShutdownRequested())
break;
const CBlockIndex *pindexFork;
bool fInitialDownload;
{
@@ -2630,6 +2621,13 @@ bool CChainState::ActivateBestChain(CValidationState &state, const CChainParams&
}
if (nStopAtHeight && pindexNewTip && pindexNewTip->nHeight >= nStopAtHeight) StartShutdown();
// We check shutdown only after giving ActivateBestChainStep a chance to run once so that we
// never shutdown before connecting the genesis block during LoadChainTip(). Previously this
// caused an assert() failure during shutdown in such cases as the UTXO DB flushing checks
// that the best block hash is non-null.
if (ShutdownRequested())
break;
} while (pindexNewTip != pindexMostWork);
CheckBlockIndex(chainparams.GetConsensus());

View File

@@ -71,6 +71,28 @@ std::string DecodeDumpString(const std::string &str) {
return ret.str();
}
bool GetWalletAddressesForKey(CWallet * const pwallet, const CKeyID &keyid, std::string &strAddr, std::string &strLabel)
{
bool fLabelFound = false;
CKey key;
pwallet->GetKey(keyid, key);
for (const auto& dest : GetAllDestinationsForKey(key.GetPubKey())) {
if (pwallet->mapAddressBook.count(dest)) {
if (!strAddr.empty()) {
strAddr += ",";
}
strAddr += EncodeDestination(dest);
strLabel = EncodeDumpString(pwallet->mapAddressBook[dest].name);
fLabelFound = true;
}
}
if (!fLabelFound) {
strAddr = EncodeDestination(GetDestinationForKey(key.GetPubKey(), g_address_type));
}
return fLabelFound;
}
UniValue importprivkey(const JSONRPCRequest& request)
{
CWallet * const pwallet = GetWalletForJSONRPCRequest(request);
@@ -729,12 +751,13 @@ UniValue dumpwallet(const JSONRPCRequest& request)
for (std::vector<std::pair<int64_t, CKeyID> >::const_iterator it = vKeyBirth.begin(); it != vKeyBirth.end(); it++) {
const CKeyID &keyid = it->second;
std::string strTime = EncodeDumpTime(it->first);
std::string strAddr = EncodeDestination(keyid);
std::string strAddr;
std::string strLabel;
CKey key;
if (pwallet->GetKey(keyid, key)) {
file << strprintf("%s %s ", CBitcoinSecret(key).ToString(), strTime);
if (pwallet->mapAddressBook.count(keyid)) {
file << strprintf("label=%s", EncodeDumpString(pwallet->mapAddressBook[keyid].name));
if (GetWalletAddressesForKey(pwallet, keyid, strAddr, strLabel)) {
file << strprintf("label=%s", strLabel);
} else if (keyid == masterKeyID) {
file << "hdmaster=1";
} else if (mapKeyPool.count(keyid)) {

View File

@@ -23,7 +23,7 @@ class UacommentTest(BitcoinTestFramework):
self.log.info("test -uacomment max length")
self.stop_node(0)
expected = "Total length of network version string (286) exceeds maximum length (256). Reduce the number or size of uacomments."
expected = "exceeds maximum length (256). Reduce the number or size of uacomments."
self.assert_start_raises_init_error(0, ["-uacomment=" + 'a' * 256], expected)
self.log.info("test -uacomment unsafe characters")

View File

@@ -20,6 +20,7 @@ def read_dump(file_name, addrs, script_addrs, hd_master_addr_old):
found_script_addr = 0
found_addr_chg = 0
found_addr_rsv = 0
witness_addr_ret = None
hd_master_addr_ret = None
for line in inputfile:
# only read non comment lines
@@ -47,7 +48,14 @@ def read_dump(file_name, addrs, script_addrs, hd_master_addr_old):
# count key types
for addrObj in addrs:
if addrObj['address'] == addr and addrObj['hdkeypath'] == keypath and keytype == "label=":
if addrObj['address'] == addr.split(",")[0] and addrObj['hdkeypath'] == keypath and keytype == "label=":
# a labled entry in the wallet should contain both a native address
# and the p2sh-p2wpkh address that was added at wallet setup
if len(addr.split(",")) == 2:
addr_list = addr.split(",")
# the entry should be of the first key in the wallet
assert_equal(addrs[0]['address'], addr_list[0])
witness_addr_ret = addr_list[1]
found_addr += 1
break
elif keytype == "change=1":
@@ -63,7 +71,7 @@ def read_dump(file_name, addrs, script_addrs, hd_master_addr_old):
found_script_addr += 1
break
return found_addr, found_script_addr, found_addr_chg, found_addr_rsv, hd_master_addr_ret
return found_addr, found_script_addr, found_addr_chg, found_addr_rsv, hd_master_addr_ret, witness_addr_ret
class WalletDumpTest(BitcoinTestFramework):
@@ -83,6 +91,8 @@ class WalletDumpTest(BitcoinTestFramework):
tmpdir = self.options.tmpdir
# generate 20 addresses to compare against the dump
# but since we add a p2sh-p2wpkh address for the first pubkey in the
# wallet, we will expect 21 addresses in the dump
test_addr_count = 20
addrs = []
for i in range(0,test_addr_count):
@@ -101,12 +111,13 @@ class WalletDumpTest(BitcoinTestFramework):
result = self.nodes[0].dumpwallet(tmpdir + "/node0/wallet.unencrypted.dump")
assert_equal(result['filename'], os.path.abspath(tmpdir + "/node0/wallet.unencrypted.dump"))
found_addr, found_script_addr, found_addr_chg, found_addr_rsv, hd_master_addr_unenc = \
found_addr, found_script_addr, found_addr_chg, found_addr_rsv, hd_master_addr_unenc, witness_addr_ret = \
read_dump(tmpdir + "/node0/wallet.unencrypted.dump", addrs, script_addrs, None)
assert_equal(found_addr, test_addr_count) # all keys must be in the dump
assert_equal(found_script_addr, 2) # all scripts must be in the dump
assert_equal(found_addr_chg, 50) # 50 blocks where mined
assert_equal(found_addr_rsv, 90*2) # 90 keys plus 100% internal keys
assert_equal(witness_addr_ret, witness_addr) # p2sh-p2wsh address added to the first key
#encrypt wallet, restart, unlock and dump
self.nodes[0].node_encrypt_wallet('test')
@@ -116,12 +127,13 @@ class WalletDumpTest(BitcoinTestFramework):
self.nodes[0].keypoolrefill()
self.nodes[0].dumpwallet(tmpdir + "/node0/wallet.encrypted.dump")
found_addr, found_script_addr, found_addr_chg, found_addr_rsv, _ = \
found_addr, found_script_addr, found_addr_chg, found_addr_rsv, _, witness_addr_ret = \
read_dump(tmpdir + "/node0/wallet.encrypted.dump", addrs, script_addrs, hd_master_addr_unenc)
assert_equal(found_addr, test_addr_count)
assert_equal(found_script_addr, 2)
assert_equal(found_addr_chg, 90*2 + 50) # old reserve keys are marked as change now
assert_equal(found_addr_rsv, 90*2)
assert_equal(witness_addr_ret, witness_addr)
# Overwriting should fail
assert_raises_rpc_error(-8, "already exists", self.nodes[0].dumpwallet, tmpdir + "/node0/wallet.unencrypted.dump")